From c02d035755db27805bf4a1dadc3bce99c80fb0d9 Mon Sep 17 00:00:00 2001 From: Steve Sanderson Date: Fri, 20 Oct 2023 20:22:27 +0000 Subject: [PATCH 001/391] Merged PR 34696: [8.0] Prevent delivery of events to disposed components (second attempt) Prevents delivery of events to disposed components. --- .../src/RenderTree/RenderTreeDiffBuilder.cs | 2 +- .../Components/src/RenderTree/Renderer.Log.cs | 11 ++++ .../Components/src/RenderTree/Renderer.cs | 33 ++++++++---- .../Components/test/RendererTest.cs | 50 +++++++++++++++++ .../test/E2ETest/Tests/FormsTest.cs | 33 ++++++++++++ .../FormsTest/SimpleValidationComponent.razor | 53 +++++++++++-------- 6 files changed, 151 insertions(+), 31 deletions(-) diff --git a/src/Components/Components/src/RenderTree/RenderTreeDiffBuilder.cs b/src/Components/Components/src/RenderTree/RenderTreeDiffBuilder.cs index db757c6d7764..a4c3ebbf2a6e 100644 --- a/src/Components/Components/src/RenderTree/RenderTreeDiffBuilder.cs +++ b/src/Components/Components/src/RenderTree/RenderTreeDiffBuilder.cs @@ -978,7 +978,7 @@ private static void InitializeNewAttributeFrame(ref DiffContext diffContext, ref newFrame.AttributeNameField.Length >= 3 && newFrame.AttributeNameField.StartsWith("on", StringComparison.Ordinal)) { - diffContext.Renderer.AssignEventHandlerId(ref newFrame); + diffContext.Renderer.AssignEventHandlerId(diffContext.ComponentId, ref newFrame); } } diff --git a/src/Components/Components/src/RenderTree/Renderer.Log.cs b/src/Components/Components/src/RenderTree/Renderer.Log.cs index d9e945c804a7..9143230c36ab 100644 --- a/src/Components/Components/src/RenderTree/Renderer.Log.cs +++ b/src/Components/Components/src/RenderTree/Renderer.Log.cs @@ -63,5 +63,16 @@ public static void HandlingEvent(ILogger logger, ulong eventHandlerId, EventArgs HandlingEvent(logger, eventHandlerId, eventArgs?.GetType().Name ?? "null"); } } + + [LoggerMessage(6, LogLevel.Debug, "Skipping attempt to raise event {EventId} of type '{EventType}' because the component ID {ComponentId} was already disposed", EventName = "SkippingEventOnDisposedComponent", SkipEnabledCheck = true)] + public static partial void SkippingEventOnDisposedComponent(ILogger logger, int componentId, ulong eventId, string eventType); + + public static void SkippingEventOnDisposedComponent(ILogger logger, int componentId, ulong eventHandlerId, EventArgs? eventArgs) + { + if (logger.IsEnabled(LogLevel.Debug)) // This is almost always false, so skip the evaluations + { + SkippingEventOnDisposedComponent(logger, componentId, eventHandlerId, eventArgs?.GetType().Name ?? "null"); + } + } } } diff --git a/src/Components/Components/src/RenderTree/Renderer.cs b/src/Components/Components/src/RenderTree/Renderer.cs index 7b96e683131f..e1abf6667a75 100644 --- a/src/Components/Components/src/RenderTree/Renderer.cs +++ b/src/Components/Components/src/RenderTree/Renderer.cs @@ -28,7 +28,7 @@ public abstract partial class Renderer : IDisposable, IAsyncDisposable private readonly Dictionary _componentStateById = new Dictionary(); private readonly Dictionary _componentStateByComponent = new Dictionary(); private readonly RenderBatchBuilder _batchBuilder = new RenderBatchBuilder(); - private readonly Dictionary _eventBindings = new Dictionary(); + private readonly Dictionary _eventBindings = new(); private readonly Dictionary _eventHandlerIdReplacements = new Dictionary(); private readonly ILogger _logger; private readonly ComponentFactory _componentFactory; @@ -416,7 +416,22 @@ public virtual Task DispatchEventAsync(ulong eventHandlerId, EventFieldInfo? fie _pendingTasks ??= new(); } - var callback = GetRequiredEventCallback(eventHandlerId); + var (renderedByComponentId, callback) = GetRequiredEventBindingEntry(eventHandlerId); + + // If this event attribute was rendered by a component that's since been disposed, don't dispatch the event at all. + // This can occur because event handler disposal is deferred, so event handler IDs can outlive their components. + // The reason the following check is based on "which component rendered this frame" and not on "which component + // receives the callback" (i.e., callback.Receiver) is that if parent A passes a RenderFragment with events to child B, + // and then child B is disposed, we don't want to dispatch the events (because the developer considers them removed + // from the UI) even though the receiver A is still alive. + if (!_componentStateById.ContainsKey(renderedByComponentId)) + { + // This is not an error since it can happen legitimately (in Blazor Server, the user might click a button at the same + // moment that the component is disposed remotely, and then the click event will arrive after disposal). + Log.SkippingEventOnDisposedComponent(_logger, renderedByComponentId, eventHandlerId, eventArgs); + return Task.CompletedTask; + } + Log.HandlingEvent(_logger, eventHandlerId, eventArgs); // Try to match it up with a receiver so that, if the event handler later throws, we can route the error to the @@ -480,7 +495,7 @@ public virtual Task DispatchEventAsync(ulong eventHandlerId, EventFieldInfo? fie /// The parameter type expected by the event handler. Normally this is a subclass of . public Type GetEventArgsType(ulong eventHandlerId) { - var methodInfo = GetRequiredEventCallback(eventHandlerId).Delegate?.Method; + var methodInfo = GetRequiredEventBindingEntry(eventHandlerId).Callback.Delegate?.Method; // The DispatchEventAsync code paths allow for the case where Delegate or its method // is null, and in this case the event receiver just receives null. This won't happen @@ -581,7 +596,7 @@ protected virtual void AddPendingTask(ComponentState? componentState, Task task) _pendingTasks?.Add(task); } - internal void AssignEventHandlerId(ref RenderTreeFrame frame) + internal void AssignEventHandlerId(int renderedByComponentId, ref RenderTreeFrame frame) { var id = ++_lastEventHandlerId; @@ -593,7 +608,7 @@ internal void AssignEventHandlerId(ref RenderTreeFrame frame) // // When that happens we intentionally box the EventCallback because we need to hold on to // the receiver. - _eventBindings.Add(id, callback); + _eventBindings.Add(id, (renderedByComponentId, callback)); } else if (frame.AttributeValueField is MulticastDelegate @delegate) { @@ -601,7 +616,7 @@ internal void AssignEventHandlerId(ref RenderTreeFrame frame) // is the same as delegate.Target. In this case since the receiver is implicit we can // avoid boxing the EventCallback object and just re-hydrate it on the other side of the // render tree. - _eventBindings.Add(id, new EventCallback(@delegate.Target as IHandleEvent, @delegate)); + _eventBindings.Add(id, (renderedByComponentId, new EventCallback(@delegate.Target as IHandleEvent, @delegate))); } // NOTE: we do not to handle EventCallback here. EventCallback is only used when passing @@ -645,14 +660,14 @@ internal void TrackReplacedEventHandlerId(ulong oldEventHandlerId, ulong newEven _eventHandlerIdReplacements.Add(oldEventHandlerId, newEventHandlerId); } - private EventCallback GetRequiredEventCallback(ulong eventHandlerId) + private (int RenderedByComponentId, EventCallback Callback) GetRequiredEventBindingEntry(ulong eventHandlerId) { - if (!_eventBindings.TryGetValue(eventHandlerId, out var callback)) + if (!_eventBindings.TryGetValue(eventHandlerId, out var entry)) { throw new ArgumentException($"There is no event handler associated with this event. EventId: '{eventHandlerId}'.", nameof(eventHandlerId)); } - return callback; + return entry; } private ulong FindLatestEventHandlerIdInChain(ulong eventHandlerId) diff --git a/src/Components/Components/test/RendererTest.cs b/src/Components/Components/test/RendererTest.cs index ea383da376ee..6bcbe853c422 100644 --- a/src/Components/Components/test/RendererTest.cs +++ b/src/Components/Components/test/RendererTest.cs @@ -2619,6 +2619,56 @@ public void RenderBatch_DoesNotDisposeComponentMultipleTimes() Assert.True(component.Disposed); } + [Fact] + public async Task DoesNotDispatchEventsAfterOwnerComponentIsDisposed() + { + // Arrange + var renderer = new TestRenderer(); + var eventCount = 0; + Action origEventHandler = args => { eventCount++; }; + var component = new ConditionalParentComponent + { + IncludeChild = true, + ChildParameters = new Dictionary + { + { nameof(EventComponent.OnTest), origEventHandler } + } + }; + var rootComponentId = renderer.AssignRootComponentId(component); + component.TriggerRender(); + var batch = renderer.Batches.Single(); + var rootComponentDiff = batch.DiffsByComponentId[rootComponentId].Single(); + var rootComponentFrame = batch.ReferenceFrames[0]; + var childComponentFrame = rootComponentDiff.Edits + .Select(e => batch.ReferenceFrames[e.ReferenceFrameIndex]) + .Where(f => f.FrameType == RenderTreeFrameType.Component) + .Single(); + var childComponentId = childComponentFrame.ComponentId; + var childComponentDiff = batch.DiffsByComponentId[childComponentFrame.ComponentId].Single(); + var eventHandlerId = batch.ReferenceFrames + .Skip(childComponentDiff.Edits[0].ReferenceFrameIndex) // Search from where the child component frames start + .Where(f => f.FrameType == RenderTreeFrameType.Attribute) + .Single(f => f.AttributeEventHandlerId != 0) + .AttributeEventHandlerId; + + // Act/Assert 1: Event handler fires when we trigger it + Assert.Equal(0, eventCount); + var renderTask = renderer.DispatchEventAsync(eventHandlerId, args: null); + Assert.True(renderTask.IsCompletedSuccessfully); + Assert.Equal(1, eventCount); + await renderTask; + + // Now remove the EventComponent, but without ever acknowledging the renderbatch, so the event handler doesn't get disposed + var disposalBatchAcknowledgementTcs = new TaskCompletionSource(); + component.IncludeChild = false; + renderer.NextRenderResultTask = disposalBatchAcknowledgementTcs.Task; + component.TriggerRender(); + + // Act/Assert 2: Can no longer fire the original event. It's not an error but the delegate was not invoked. + await renderer.DispatchEventAsync(eventHandlerId, args: null); + Assert.Equal(1, eventCount); + } + [Fact] public async Task DisposesEventHandlersWhenAttributeValueChanged() { diff --git a/src/Components/test/E2ETest/Tests/FormsTest.cs b/src/Components/test/E2ETest/Tests/FormsTest.cs index f150e6bfe573..3cfce5d3dbb0 100644 --- a/src/Components/test/E2ETest/Tests/FormsTest.cs +++ b/src/Components/test/E2ETest/Tests/FormsTest.cs @@ -990,6 +990,39 @@ public void CanHaveModelLevelValidationErrors() Browser.Collection(logEntries, x => Assert.Equal("OnValidSubmit", x)); } + [Fact] + public async Task CannotSubmitEditFormSynchronouslyAfterItWasRemoved() + { + var appElement = MountSimpleValidationComponent(); + + var submitButtonFinder = By.CssSelector("button[type=submit]"); + Browser.Exists(submitButtonFinder); + + // Remove the form then immediately also submit it, so the server receives both + // the 'remove' and 'submit' commands (in that order) before it updates the UI + appElement.FindElement(By.Id("remove-form")).Click(); + + try + { + appElement.FindElement(submitButtonFinder).Click(); + } + catch (NoSuchElementException) + { + // This should happen on WebAssembly because the form will be removed synchronously + // That means the test has passed + return; + } + + // Wait for the removal to complete, which is intentionally delayed to ensure + // this test can submit a second instruction before the first is processed. + Browser.DoesNotExist(submitButtonFinder); + + // Verify that the form submit event was not processed, even if we wait a while + // to be really sure the second instruction was processed. + await Task.Delay(1000); + Browser.DoesNotExist(By.Id("last-callback")); + } + private Func CreateValidationMessagesAccessor(IWebElement appElement, string messageSelector = ".validation-message") { return () => appElement.FindElements(By.CssSelector(messageSelector)) diff --git a/src/Components/test/testassets/BasicTestApp/FormsTest/SimpleValidationComponent.razor b/src/Components/test/testassets/BasicTestApp/FormsTest/SimpleValidationComponent.razor index 8bceb63f5b71..f590383e62e2 100644 --- a/src/Components/test/testassets/BasicTestApp/FormsTest/SimpleValidationComponent.razor +++ b/src/Components/test/testassets/BasicTestApp/FormsTest/SimpleValidationComponent.razor @@ -1,37 +1,42 @@ @using System.ComponentModel.DataAnnotations @using Microsoft.AspNetCore.Components.Forms - - - -

- User name: -

-

- Accept terms: -

- - - - @* Could use instead, but this shows it can be done manually *@ -
    - @foreach (var message in context.GetValidationMessages()) - { -
  • @message
  • - } -
- -
+@if (!removeForm) +{ + + + +

+ User name: +

+

+ Accept terms: +

+ + + + @* Could use instead, but this shows it can be done manually *@ +
    + @foreach (var message in context.GetValidationMessages()) + { +
  • @message
  • + } +
+
+} @if (lastCallback != null) { @lastCallback } +

+ @code { protected virtual bool UseExperimentalValidator => false; string lastCallback; + bool removeForm; [Required(ErrorMessage = "Please choose a username")] public string UserName { get; set; } @@ -49,4 +54,10 @@ { lastCallback = "OnInvalidSubmit"; } + + void RemoveForm() + { + removeForm = true; + Thread.Sleep(1000); // To ensure we can dispatch another event before this completes + } } From 5536e61a3d7b77667f9544b45c5270a73905154d Mon Sep 17 00:00:00 2001 From: Brennan Conroy Date: Wed, 25 Oct 2023 20:57:38 +0000 Subject: [PATCH 002/391] Merged PR 34318: Fix canceled requests in IIS Canceled requests can end up hanging a thread due to the `std::conditional_variable` never being triggered. This is because the previous assumption, that disconnect would be called once there was an http context set in the native layer, was wrong. Because `NotifyDisconnect` is called by IIS and `SetManagedHttpContext` is called by managed code, they can race and end up with `m_disconnectFired` as true, but `m_pManagedHttpContext` as false. The fix is fairly simple, just don't gate unblocking the `std::conditional_variable` on whether the http context has been set. Added comments as well to make it a little easier to understand some of the code, hopefully we'll slowly improve the maintainability by doing this with future changes as well. --- .../inprocesshandler.cpp | 28 +++++++++++++------ 1 file changed, 20 insertions(+), 8 deletions(-) diff --git a/src/Servers/IIS/AspNetCoreModuleV2/InProcessRequestHandler/inprocesshandler.cpp b/src/Servers/IIS/AspNetCoreModuleV2/InProcessRequestHandler/inprocesshandler.cpp index 3ba555507af7..8f5e3ae56b75 100644 --- a/src/Servers/IIS/AspNetCoreModuleV2/InProcessRequestHandler/inprocesshandler.cpp +++ b/src/Servers/IIS/AspNetCoreModuleV2/InProcessRequestHandler/inprocesshandler.cpp @@ -89,6 +89,7 @@ REQUEST_NOTIFICATION_STATUS IN_PROCESS_HANDLER::ServerShutdownMessage() const return ShuttingDownHandler::ServerShutdownMessage(m_pW3Context); } +// Called from native IIS VOID IN_PROCESS_HANDLER::NotifyDisconnect() { @@ -112,20 +113,28 @@ IN_PROCESS_HANDLER::NotifyDisconnect() m_disconnectFired = true; } + // This could be null if the request is completed before the http context is set + // for example this can happen when the client cancels the request very quickly after making it if (pManagedHttpContext != nullptr) { m_pDisconnectHandler(pManagedHttpContext); - { - // lock before notifying, this prevents the condition where m_queueNotified is already checked but - // the condition_variable isn't waiting yet, which would cause notify_all to NOOP and block - // IndicateManagedRequestComplete until a spurious wakeup - std::lock_guard lock(m_lockQueue); - m_queueNotified = true; - } - m_queueCheck.notify_all(); } + + // Make sure we unblock any potential current or future m_queueCheck.wait(...) calls + // We could make this conditional, but it would need to be duplicated in SetManagedHttpContext + // to avoid a race condition where the http context is null but we called disconnect which could make IndicateManagedRequestComplete hang + // It's more future proof to just always do this even if nothing will be waiting on the conditional_variable + { + // lock before notifying, this prevents the condition where m_queueNotified is already checked but + // the condition_variable isn't waiting yet, which would cause notify_all to NOOP and block + // IndicateManagedRequestComplete until a spurious wakeup + std::lock_guard lock(m_lockQueue); + m_queueNotified = true; + } + m_queueCheck.notify_all(); } +// Called from managed server VOID IN_PROCESS_HANDLER::IndicateManagedRequestComplete( VOID @@ -164,6 +173,7 @@ IN_PROCESS_HANDLER::SetAsyncCompletionStatus( m_requestNotificationStatus = requestNotificationStatus; } +// Called from managed server VOID IN_PROCESS_HANDLER::SetManagedHttpContext( PVOID pManagedHttpContext @@ -179,6 +189,8 @@ IN_PROCESS_HANDLER::SetManagedHttpContext( if (disconnectFired && pManagedHttpContext != nullptr) { + // Safe to call, managed code is waiting on SetManagedHttpContext in the process request loop and doesn't dispose + // the GCHandle until after the request loop completes m_pDisconnectHandler(pManagedHttpContext); } } From 9b5f201a559077cab447d022259cb9766b85b198 Mon Sep 17 00:00:00 2001 From: DotNet Bot Date: Thu, 26 Oct 2023 17:05:30 +0000 Subject: [PATCH 003/391] Merged PR 34809: [internal/release/8.0] Update dependencies from dnceng/internal/dotnet-runtime dnceng/internal/dotnet-efcore This pull request updates the following dependencies [marker]: <> (Begin:83131e87-e80d-4d5b-f426-08dbd53b3319) ## From https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - **Subscription**: 83131e87-e80d-4d5b-f426-08dbd53b3319 - **Build**: 20231025.7 - **Date Produced**: October 25, 2023 9:10:32 PM UTC - **Commit**: 17ea9ab3f662320d4ac62d3a2b783b5054ad80bf - **Branch**: refs/heads/internal/release/8.0 [DependencyUpdate]: <> (Begin) - **Updates**: - **Microsoft.Bcl.AsyncInterfaces**: [from 8.0.0 to 8.0.0][1] - **Microsoft.Bcl.TimeProvider**: [from 8.0.0 to 8.0.0][1] - **Microsoft.Extensions.Caching.Abstractions**: [from 8.0.0 to 8.0.0][1] - **Microsoft.Extensions.Caching.Memory**: [from 8.0.0 to 8.0.0][1] - **Microsoft.Extensions.Configuration**: [from 8.0.0 to 8.0.0][1] - **Microsoft.Extensions.Configuration.Abstractions**: [from 8.0.0 to 8.0.0][1] - **Microsoft.Extensions.Configuration.Binder**: [from 8.0.0 to 8.0.0][1] - **Microsoft.Extensions.Configuration.CommandLine**: [from 8.0.0 to 8.0.0][1] - **Microsoft.Extensions.Configuration.EnvironmentVariables**: [from 8.0.0 to 8.0.0][1] - **Microsoft.Extensions.Configuration.FileExtensions**: [from 8.0.0 to 8.0.0][1] - **Microsoft.Extensions.Configuration.Ini**: [from 8.0.0 to 8.0.0][1] - **Microsoft.Extensions.Configuration.Json**: [from 8.0.0 to 8.0.0][1] - **Microsoft.Extensions.Configuration.UserSecrets**: [from 8.0.0 to 8.0.0][1] - **Microsoft.Extensions.Configuration.Xml**: [from 8.0.0 to 8.0.0][1] - **Microsoft.Extensions.DependencyInjection**: [from 8.0.0 to 8.0.0][1] - **Microsoft.Extensions.DependencyInjection.Abstractions**: [from 8.0.0 to 8.0.0][1] - **Microsoft.Extensions.DependencyModel**: [from 8.0.0 to 8.0.0][1] - **Microsoft.Extensions.Diagnostics**: [from 8.0.0 to 8.0.0][1] - **Microsoft.Extensions.Diagnostics.Abstractions**: [from 8.0.0 to 8.0.0][1] - **Microsoft.Extensions.FileProviders.Abstractions**: [from 8.0.0 to 8.0.0][1] - **Microsoft.Extensions.FileProviders.Composite**: [from 8.0.0 to 8.0.0][1] - **Microsoft.Extensions.FileProviders.Physical**: [from 8.0.0 to 8.0.0][1] - **Microsoft.Extensions.FileSystemGlobbing**: [from 8.0.0 to 8.0.0][1] - **Microsoft.Extensions.HostFactoryResolver.Sources**: [from 8.0.0-rtm.23523.12 to 8.0.0-rtm.23525.7][1] - **Microsoft.Extensions.Hosting**: [from 8.0.0 to 8.0.0][1] - **Microsoft.Extensions.Hosting.Abstractions**: [from 8.0.0 to 8.0.0][1] - **Microsoft.Extensions.Http**: [from 8.0.0 to 8.0.0][1] - **Microsoft.Extensions.Logging**: [from 8.0.0 to 8.0.0][1] - **Microsoft.Extensions.Logging.Abstractions**: [from 8.0.0 to 8.0.0][1] - **Microsoft.Extensions.Logging.Configuration**: [from 8.0.0 to 8.0.0][1] - **Microsoft.Extensions.Logging.Console**: [from 8.0.0 to 8.0.0][1] - **Microsoft.Extensions.Logging.Debug**: [from 8.0.0 to 8.0.0][1] - **Microsoft.Extensions.Logging.EventLog**: [from 8.0.0 to 8.0.0][1] - **Micr... --- NuGet.config | 12 +- eng/Version.Details.xml | 326 +++++++++--------- eng/Versions.props | 10 +- .../AspNetCorePortTests.cs | 2 +- .../Common.FunctionalTests/BasicAuthTests.cs | 2 +- .../CompressionTests.cs | 2 +- .../test/Common.FunctionalTests/FrebTests.cs | 2 +- .../GlobalVersionTests.cs | 2 +- .../test/Common.FunctionalTests/Http2Tests.cs | 2 +- .../test/Common.FunctionalTests/HttpsTests.cs | 2 +- .../Common.FunctionalTests/Latin1Tests.cs | 2 +- .../Common.FunctionalTests/LoggingTests.cs | 2 +- .../MaxRequestBodySizeTests.cs | 2 +- .../MultiApplicationTests.cs | 2 +- .../RequestPathBaseTests.cs | 5 +- .../RequestResponseTests.cs | 2 +- .../WindowsAuthTests.cs | 2 +- .../test/Common.LongTests/ShutdownTests.cs | 4 +- .../IIS/test/Common.LongTests/StartupTests.cs | 2 +- .../Http2TrailersResetTests.cs | 2 +- .../test/IIS.FunctionalTests/Http3Tests.cs | 2 +- .../ApplicationInitializationTests.cs | 2 +- .../test/IIS.Tests/ClientDisconnectTests.cs | 2 +- .../IIS.Tests/ConnectionIdFeatureTests.cs | 2 +- .../IIS.Tests/HttpBodyControlFeatureTests.cs | 2 +- .../InProcess/AppOfflineIISExpressTests.cs | 2 +- .../InProcess/IISExpressShutdownTests.cs | 2 +- .../InProcess/WebSocketTests.cs | 2 +- .../OutOfProcess/MultipleAppTests.cs | 2 +- .../OutOfProcess/NtlmAuthentationTest.cs | 2 +- .../UpgradeFeatureDetectionTests.cs | 2 +- .../test/Tests/IISExtensionTests.cs | 2 +- 32 files changed, 208 insertions(+), 203 deletions(-) diff --git a/NuGet.config b/NuGet.config index cb5f021c3c4a..6e7938c27ea9 100644 --- a/NuGet.config +++ b/NuGet.config @@ -4,10 +4,10 @@ - + - + @@ -26,5 +26,13 @@ + + + + + + + + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index abefdce669ab..b02bcb7b4d1d 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -10,184 +10,184 @@ - https://github.com/dotnet/efcore - e8d92476f307c5385fef08f44aa92a545d2b2a8e + https://dev.azure.com/dnceng/internal/_git/dotnet-efcore + 1425f658e244a04a9b5a669d888dd8179b3c0ed7 - https://github.com/dotnet/efcore - e8d92476f307c5385fef08f44aa92a545d2b2a8e + https://dev.azure.com/dnceng/internal/_git/dotnet-efcore + 1425f658e244a04a9b5a669d888dd8179b3c0ed7 - https://github.com/dotnet/efcore - e8d92476f307c5385fef08f44aa92a545d2b2a8e + https://dev.azure.com/dnceng/internal/_git/dotnet-efcore + 1425f658e244a04a9b5a669d888dd8179b3c0ed7 - https://github.com/dotnet/efcore - e8d92476f307c5385fef08f44aa92a545d2b2a8e + https://dev.azure.com/dnceng/internal/_git/dotnet-efcore + 1425f658e244a04a9b5a669d888dd8179b3c0ed7 - https://github.com/dotnet/efcore - e8d92476f307c5385fef08f44aa92a545d2b2a8e + https://dev.azure.com/dnceng/internal/_git/dotnet-efcore + 1425f658e244a04a9b5a669d888dd8179b3c0ed7 - https://github.com/dotnet/efcore - e8d92476f307c5385fef08f44aa92a545d2b2a8e + https://dev.azure.com/dnceng/internal/_git/dotnet-efcore + 1425f658e244a04a9b5a669d888dd8179b3c0ed7 - https://github.com/dotnet/efcore - e8d92476f307c5385fef08f44aa92a545d2b2a8e + https://dev.azure.com/dnceng/internal/_git/dotnet-efcore + 1425f658e244a04a9b5a669d888dd8179b3c0ed7 - https://github.com/dotnet/efcore - e8d92476f307c5385fef08f44aa92a545d2b2a8e + https://dev.azure.com/dnceng/internal/_git/dotnet-efcore + 1425f658e244a04a9b5a669d888dd8179b3c0ed7 - https://github.com/dotnet/runtime - 488a8a3521610422e8fbe22d5cc66127f3dce3dc + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime + 17ea9ab3f662320d4ac62d3a2b783b5054ad80bf - https://github.com/dotnet/runtime - 488a8a3521610422e8fbe22d5cc66127f3dce3dc + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime + 17ea9ab3f662320d4ac62d3a2b783b5054ad80bf - https://github.com/dotnet/runtime - 488a8a3521610422e8fbe22d5cc66127f3dce3dc + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime + 17ea9ab3f662320d4ac62d3a2b783b5054ad80bf - https://github.com/dotnet/runtime - 488a8a3521610422e8fbe22d5cc66127f3dce3dc + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime + 17ea9ab3f662320d4ac62d3a2b783b5054ad80bf - https://github.com/dotnet/runtime - 488a8a3521610422e8fbe22d5cc66127f3dce3dc + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime + 17ea9ab3f662320d4ac62d3a2b783b5054ad80bf - https://github.com/dotnet/runtime - 488a8a3521610422e8fbe22d5cc66127f3dce3dc + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime + 17ea9ab3f662320d4ac62d3a2b783b5054ad80bf - https://github.com/dotnet/runtime - 488a8a3521610422e8fbe22d5cc66127f3dce3dc + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime + 17ea9ab3f662320d4ac62d3a2b783b5054ad80bf - https://github.com/dotnet/runtime - 488a8a3521610422e8fbe22d5cc66127f3dce3dc + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime + 17ea9ab3f662320d4ac62d3a2b783b5054ad80bf - https://github.com/dotnet/runtime - 488a8a3521610422e8fbe22d5cc66127f3dce3dc + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime + 17ea9ab3f662320d4ac62d3a2b783b5054ad80bf - https://github.com/dotnet/runtime - 488a8a3521610422e8fbe22d5cc66127f3dce3dc + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime + 17ea9ab3f662320d4ac62d3a2b783b5054ad80bf - https://github.com/dotnet/runtime - 488a8a3521610422e8fbe22d5cc66127f3dce3dc + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime + 17ea9ab3f662320d4ac62d3a2b783b5054ad80bf - https://github.com/dotnet/runtime - 488a8a3521610422e8fbe22d5cc66127f3dce3dc + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime + 17ea9ab3f662320d4ac62d3a2b783b5054ad80bf - https://github.com/dotnet/runtime - 488a8a3521610422e8fbe22d5cc66127f3dce3dc + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime + 17ea9ab3f662320d4ac62d3a2b783b5054ad80bf - https://github.com/dotnet/runtime - 488a8a3521610422e8fbe22d5cc66127f3dce3dc + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime + 17ea9ab3f662320d4ac62d3a2b783b5054ad80bf - https://github.com/dotnet/runtime - 488a8a3521610422e8fbe22d5cc66127f3dce3dc + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime + 17ea9ab3f662320d4ac62d3a2b783b5054ad80bf - https://github.com/dotnet/runtime - 488a8a3521610422e8fbe22d5cc66127f3dce3dc + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime + 17ea9ab3f662320d4ac62d3a2b783b5054ad80bf - https://github.com/dotnet/runtime - 488a8a3521610422e8fbe22d5cc66127f3dce3dc + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime + 17ea9ab3f662320d4ac62d3a2b783b5054ad80bf - https://github.com/dotnet/runtime - 488a8a3521610422e8fbe22d5cc66127f3dce3dc + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime + 17ea9ab3f662320d4ac62d3a2b783b5054ad80bf - https://github.com/dotnet/runtime - 488a8a3521610422e8fbe22d5cc66127f3dce3dc + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime + 17ea9ab3f662320d4ac62d3a2b783b5054ad80bf - https://github.com/dotnet/runtime - 488a8a3521610422e8fbe22d5cc66127f3dce3dc + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime + 17ea9ab3f662320d4ac62d3a2b783b5054ad80bf - - https://github.com/dotnet/runtime - 488a8a3521610422e8fbe22d5cc66127f3dce3dc + + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime + 17ea9ab3f662320d4ac62d3a2b783b5054ad80bf - https://github.com/dotnet/runtime - 488a8a3521610422e8fbe22d5cc66127f3dce3dc + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime + 17ea9ab3f662320d4ac62d3a2b783b5054ad80bf - https://github.com/dotnet/runtime - 488a8a3521610422e8fbe22d5cc66127f3dce3dc + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime + 17ea9ab3f662320d4ac62d3a2b783b5054ad80bf - https://github.com/dotnet/runtime - 488a8a3521610422e8fbe22d5cc66127f3dce3dc + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime + 17ea9ab3f662320d4ac62d3a2b783b5054ad80bf - https://github.com/dotnet/runtime - 488a8a3521610422e8fbe22d5cc66127f3dce3dc + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime + 17ea9ab3f662320d4ac62d3a2b783b5054ad80bf - https://github.com/dotnet/runtime - 488a8a3521610422e8fbe22d5cc66127f3dce3dc + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime + 17ea9ab3f662320d4ac62d3a2b783b5054ad80bf - https://github.com/dotnet/runtime - 488a8a3521610422e8fbe22d5cc66127f3dce3dc + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime + 17ea9ab3f662320d4ac62d3a2b783b5054ad80bf - https://github.com/dotnet/runtime - 488a8a3521610422e8fbe22d5cc66127f3dce3dc + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime + 17ea9ab3f662320d4ac62d3a2b783b5054ad80bf - https://github.com/dotnet/runtime - 488a8a3521610422e8fbe22d5cc66127f3dce3dc + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime + 17ea9ab3f662320d4ac62d3a2b783b5054ad80bf - https://github.com/dotnet/runtime - 488a8a3521610422e8fbe22d5cc66127f3dce3dc + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime + 17ea9ab3f662320d4ac62d3a2b783b5054ad80bf - https://github.com/dotnet/runtime - 488a8a3521610422e8fbe22d5cc66127f3dce3dc + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime + 17ea9ab3f662320d4ac62d3a2b783b5054ad80bf - https://github.com/dotnet/runtime - 488a8a3521610422e8fbe22d5cc66127f3dce3dc + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime + 17ea9ab3f662320d4ac62d3a2b783b5054ad80bf - https://github.com/dotnet/runtime - 488a8a3521610422e8fbe22d5cc66127f3dce3dc + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime + 17ea9ab3f662320d4ac62d3a2b783b5054ad80bf - https://github.com/dotnet/runtime - 488a8a3521610422e8fbe22d5cc66127f3dce3dc + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime + 17ea9ab3f662320d4ac62d3a2b783b5054ad80bf - https://github.com/dotnet/runtime - 488a8a3521610422e8fbe22d5cc66127f3dce3dc + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime + 17ea9ab3f662320d4ac62d3a2b783b5054ad80bf - https://github.com/dotnet/runtime - 488a8a3521610422e8fbe22d5cc66127f3dce3dc + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime + 17ea9ab3f662320d4ac62d3a2b783b5054ad80bf - - https://github.com/dotnet/runtime - 488a8a3521610422e8fbe22d5cc66127f3dce3dc + + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime + 17ea9ab3f662320d4ac62d3a2b783b5054ad80bf https://github.com/dotnet/source-build-externals @@ -200,138 +200,138 @@ - https://github.com/dotnet/runtime - 488a8a3521610422e8fbe22d5cc66127f3dce3dc + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime + 17ea9ab3f662320d4ac62d3a2b783b5054ad80bf - https://github.com/dotnet/runtime - 488a8a3521610422e8fbe22d5cc66127f3dce3dc + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime + 17ea9ab3f662320d4ac62d3a2b783b5054ad80bf - https://github.com/dotnet/runtime - 488a8a3521610422e8fbe22d5cc66127f3dce3dc + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime + 17ea9ab3f662320d4ac62d3a2b783b5054ad80bf - https://github.com/dotnet/runtime - 488a8a3521610422e8fbe22d5cc66127f3dce3dc + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime + 17ea9ab3f662320d4ac62d3a2b783b5054ad80bf - https://github.com/dotnet/runtime - 488a8a3521610422e8fbe22d5cc66127f3dce3dc + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime + 17ea9ab3f662320d4ac62d3a2b783b5054ad80bf - https://github.com/dotnet/runtime - 488a8a3521610422e8fbe22d5cc66127f3dce3dc + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime + 17ea9ab3f662320d4ac62d3a2b783b5054ad80bf - https://github.com/dotnet/runtime - 488a8a3521610422e8fbe22d5cc66127f3dce3dc + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime + 17ea9ab3f662320d4ac62d3a2b783b5054ad80bf - https://github.com/dotnet/runtime - 488a8a3521610422e8fbe22d5cc66127f3dce3dc + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime + 17ea9ab3f662320d4ac62d3a2b783b5054ad80bf - https://github.com/dotnet/runtime - 488a8a3521610422e8fbe22d5cc66127f3dce3dc + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime + 17ea9ab3f662320d4ac62d3a2b783b5054ad80bf - https://github.com/dotnet/runtime - 488a8a3521610422e8fbe22d5cc66127f3dce3dc + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime + 17ea9ab3f662320d4ac62d3a2b783b5054ad80bf - https://github.com/dotnet/runtime - 488a8a3521610422e8fbe22d5cc66127f3dce3dc + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime + 17ea9ab3f662320d4ac62d3a2b783b5054ad80bf - https://github.com/dotnet/runtime - 488a8a3521610422e8fbe22d5cc66127f3dce3dc + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime + 17ea9ab3f662320d4ac62d3a2b783b5054ad80bf - https://github.com/dotnet/runtime - 488a8a3521610422e8fbe22d5cc66127f3dce3dc + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime + 17ea9ab3f662320d4ac62d3a2b783b5054ad80bf - https://github.com/dotnet/runtime - 488a8a3521610422e8fbe22d5cc66127f3dce3dc + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime + 17ea9ab3f662320d4ac62d3a2b783b5054ad80bf - https://github.com/dotnet/runtime - 488a8a3521610422e8fbe22d5cc66127f3dce3dc + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime + 17ea9ab3f662320d4ac62d3a2b783b5054ad80bf - https://github.com/dotnet/runtime - 488a8a3521610422e8fbe22d5cc66127f3dce3dc + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime + 17ea9ab3f662320d4ac62d3a2b783b5054ad80bf - https://github.com/dotnet/runtime - 488a8a3521610422e8fbe22d5cc66127f3dce3dc + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime + 17ea9ab3f662320d4ac62d3a2b783b5054ad80bf - https://github.com/dotnet/runtime - 488a8a3521610422e8fbe22d5cc66127f3dce3dc + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime + 17ea9ab3f662320d4ac62d3a2b783b5054ad80bf - https://github.com/dotnet/runtime - 488a8a3521610422e8fbe22d5cc66127f3dce3dc + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime + 17ea9ab3f662320d4ac62d3a2b783b5054ad80bf - https://github.com/dotnet/runtime - 488a8a3521610422e8fbe22d5cc66127f3dce3dc + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime + 17ea9ab3f662320d4ac62d3a2b783b5054ad80bf - https://github.com/dotnet/runtime - 488a8a3521610422e8fbe22d5cc66127f3dce3dc + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime + 17ea9ab3f662320d4ac62d3a2b783b5054ad80bf - https://github.com/dotnet/runtime - 488a8a3521610422e8fbe22d5cc66127f3dce3dc + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime + 17ea9ab3f662320d4ac62d3a2b783b5054ad80bf - https://github.com/dotnet/runtime - 488a8a3521610422e8fbe22d5cc66127f3dce3dc + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime + 17ea9ab3f662320d4ac62d3a2b783b5054ad80bf - https://github.com/dotnet/runtime - 488a8a3521610422e8fbe22d5cc66127f3dce3dc + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime + 17ea9ab3f662320d4ac62d3a2b783b5054ad80bf - https://github.com/dotnet/runtime - 488a8a3521610422e8fbe22d5cc66127f3dce3dc + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime + 17ea9ab3f662320d4ac62d3a2b783b5054ad80bf - https://github.com/dotnet/runtime - 488a8a3521610422e8fbe22d5cc66127f3dce3dc + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime + 17ea9ab3f662320d4ac62d3a2b783b5054ad80bf - https://github.com/dotnet/runtime - 488a8a3521610422e8fbe22d5cc66127f3dce3dc + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime + 17ea9ab3f662320d4ac62d3a2b783b5054ad80bf - https://github.com/dotnet/runtime - 488a8a3521610422e8fbe22d5cc66127f3dce3dc + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime + 17ea9ab3f662320d4ac62d3a2b783b5054ad80bf - https://github.com/dotnet/runtime - 488a8a3521610422e8fbe22d5cc66127f3dce3dc + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime + 17ea9ab3f662320d4ac62d3a2b783b5054ad80bf - - https://github.com/dotnet/runtime - 488a8a3521610422e8fbe22d5cc66127f3dce3dc + + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime + 17ea9ab3f662320d4ac62d3a2b783b5054ad80bf - https://github.com/dotnet/runtime - 488a8a3521610422e8fbe22d5cc66127f3dce3dc + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime + 17ea9ab3f662320d4ac62d3a2b783b5054ad80bf - - https://github.com/dotnet/runtime - 488a8a3521610422e8fbe22d5cc66127f3dce3dc + + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime + 17ea9ab3f662320d4ac62d3a2b783b5054ad80bf https://github.com/dotnet/xdt @@ -362,15 +362,15 @@ 1aa759af23d2a29043ea44fcef5bd6823dafa5d0 - https://github.com/dotnet/runtime - 488a8a3521610422e8fbe22d5cc66127f3dce3dc + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime + 17ea9ab3f662320d4ac62d3a2b783b5054ad80bf - - https://github.com/dotnet/runtime - 488a8a3521610422e8fbe22d5cc66127f3dce3dc + + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime + 17ea9ab3f662320d4ac62d3a2b783b5054ad80bf https://github.com/dotnet/winforms diff --git a/eng/Versions.props b/eng/Versions.props index a87d82b68c07..3c98e00d906e 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -71,7 +71,7 @@ 8.0.0 8.0.0 8.0.0 - 8.0.0-rtm.23523.12 + 8.0.0-rtm.23525.7 8.0.0 8.0.0 8.0.0 @@ -92,7 +92,7 @@ 8.0.0 8.0.0 8.0.0 - 8.0.0-rtm.23523.12 + 8.0.0-rtm.23525.7 8.0.0 8.0.0 8.0.0 @@ -108,7 +108,7 @@ 8.0.0 8.0.0 8.0.0 - 8.0.0-rtm.23523.12 + 8.0.0-rtm.23525.7 8.0.0 8.0.0 8.0.0 @@ -128,9 +128,9 @@ 8.0.0 8.0.0 8.0.0 - 8.0.0-rtm.23523.12 + 8.0.0-rtm.23525.7 - 8.0.0-rtm.23523.12 + 8.0.0-rtm.23525.7 8.0.0 8.0.0 diff --git a/src/Servers/IIS/IIS/test/Common.FunctionalTests/AspNetCorePortTests.cs b/src/Servers/IIS/IIS/test/Common.FunctionalTests/AspNetCorePortTests.cs index 337dd82e3429..5036ac8c3630 100644 --- a/src/Servers/IIS/IIS/test/Common.FunctionalTests/AspNetCorePortTests.cs +++ b/src/Servers/IIS/IIS/test/Common.FunctionalTests/AspNetCorePortTests.cs @@ -29,7 +29,7 @@ namespace Microsoft.AspNetCore.Server.IIS.FunctionalTests; #endif [Collection(PublishedSitesCollection.Name)] -[SkipOnHelix("Unsupported queue", Queues = "Windows.Amd64.VS2022.Pre.Open;")] +[SkipOnHelix("Unsupported queue", Queues = "Windows.Amd64.VS2022.Pre;Windows.Amd64.VS2022.Pre.Open;")] public class AspNetCorePortTests : IISFunctionalTestBase { // Port range allowed by ANCM config diff --git a/src/Servers/IIS/IIS/test/Common.FunctionalTests/BasicAuthTests.cs b/src/Servers/IIS/IIS/test/Common.FunctionalTests/BasicAuthTests.cs index a5452514e87f..736fc954db5e 100644 --- a/src/Servers/IIS/IIS/test/Common.FunctionalTests/BasicAuthTests.cs +++ b/src/Servers/IIS/IIS/test/Common.FunctionalTests/BasicAuthTests.cs @@ -28,7 +28,7 @@ namespace Microsoft.AspNetCore.Server.IIS.FunctionalTests; #endif [Collection(PublishedSitesCollection.Name)] -[SkipOnHelix("Unsupported queue", Queues = "Windows.Amd64.VS2022.Pre.Open;")] +[SkipOnHelix("Unsupported queue", Queues = "Windows.Amd64.VS2022.Pre;Windows.Amd64.VS2022.Pre.Open;")] public class BasicAuthTests : IISFunctionalTestBase { public BasicAuthTests(PublishedSitesFixture fixture) : base(fixture) diff --git a/src/Servers/IIS/IIS/test/Common.FunctionalTests/CompressionTests.cs b/src/Servers/IIS/IIS/test/Common.FunctionalTests/CompressionTests.cs index 846d6dd4092a..9d81072d06d1 100644 --- a/src/Servers/IIS/IIS/test/Common.FunctionalTests/CompressionTests.cs +++ b/src/Servers/IIS/IIS/test/Common.FunctionalTests/CompressionTests.cs @@ -26,7 +26,7 @@ namespace Microsoft.AspNetCore.Server.IIS.FunctionalTests; #endif [Collection(IISCompressionSiteCollection.Name)] -[SkipOnHelix("Unsupported queue", Queues = "Windows.Amd64.VS2022.Pre.Open;")] +[SkipOnHelix("Unsupported queue", Queues = "Windows.Amd64.VS2022.Pre;Windows.Amd64.VS2022.Pre.Open;")] public class CompressionTests : FixtureLoggedTest { private readonly IISCompressionSiteFixture _fixture; diff --git a/src/Servers/IIS/IIS/test/Common.FunctionalTests/FrebTests.cs b/src/Servers/IIS/IIS/test/Common.FunctionalTests/FrebTests.cs index 67d6a0938b36..bbb594bbb5ec 100644 --- a/src/Servers/IIS/IIS/test/Common.FunctionalTests/FrebTests.cs +++ b/src/Servers/IIS/IIS/test/Common.FunctionalTests/FrebTests.cs @@ -31,7 +31,7 @@ namespace Microsoft.AspNetCore.Server.IIS.FunctionalTests; #endif [Collection(PublishedSitesCollection.Name)] -[SkipOnHelix("Unsupported queue", Queues = "Windows.Amd64.VS2022.Pre.Open;")] +[SkipOnHelix("Unsupported queue", Queues = "Windows.Amd64.VS2022.Pre;Windows.Amd64.VS2022.Pre.Open;")] public class FrebTests : IISFunctionalTestBase { public FrebTests(PublishedSitesFixture fixture) : base(fixture) diff --git a/src/Servers/IIS/IIS/test/Common.FunctionalTests/GlobalVersionTests.cs b/src/Servers/IIS/IIS/test/Common.FunctionalTests/GlobalVersionTests.cs index 8d3786891431..f0e865007a69 100644 --- a/src/Servers/IIS/IIS/test/Common.FunctionalTests/GlobalVersionTests.cs +++ b/src/Servers/IIS/IIS/test/Common.FunctionalTests/GlobalVersionTests.cs @@ -29,7 +29,7 @@ namespace Microsoft.AspNetCore.Server.IIS.FunctionalTests; #endif [Collection(PublishedSitesCollection.Name)] -[SkipOnHelix("Unsupported queue", Queues = "Windows.Amd64.VS2022.Pre.Open;")] +[SkipOnHelix("Unsupported queue", Queues = "Windows.Amd64.VS2022.Pre;Windows.Amd64.VS2022.Pre.Open;")] public class GlobalVersionTests : IISFunctionalTestBase { public GlobalVersionTests(PublishedSitesFixture fixture) : base(fixture) diff --git a/src/Servers/IIS/IIS/test/Common.FunctionalTests/Http2Tests.cs b/src/Servers/IIS/IIS/test/Common.FunctionalTests/Http2Tests.cs index c390f6c83a92..d28e53dae384 100644 --- a/src/Servers/IIS/IIS/test/Common.FunctionalTests/Http2Tests.cs +++ b/src/Servers/IIS/IIS/test/Common.FunctionalTests/Http2Tests.cs @@ -38,7 +38,7 @@ namespace Microsoft.AspNetCore.Server.IIS.FunctionalTests; /// with newer functionality. /// [Collection(IISHttpsTestSiteCollection.Name)] -[SkipOnHelix("Unsupported queue", Queues = "Windows.Amd64.VS2022.Pre.Open;")] +[SkipOnHelix("Unsupported queue", Queues = "Windows.Amd64.VS2022.Pre;Windows.Amd64.VS2022.Pre.Open;")] public class Http2Tests { public Http2Tests(IISTestSiteFixture fixture) diff --git a/src/Servers/IIS/IIS/test/Common.FunctionalTests/HttpsTests.cs b/src/Servers/IIS/IIS/test/Common.FunctionalTests/HttpsTests.cs index 54cd08b95344..076fd69c3afb 100644 --- a/src/Servers/IIS/IIS/test/Common.FunctionalTests/HttpsTests.cs +++ b/src/Servers/IIS/IIS/test/Common.FunctionalTests/HttpsTests.cs @@ -31,7 +31,7 @@ namespace Microsoft.AspNetCore.Server.IIS.FunctionalTests; [Collection(PublishedSitesCollection.Name)] [SkipIfNotAdmin] -[SkipOnHelix("Unsupported queue", Queues = "Windows.Amd64.VS2022.Pre.Open;")] +[SkipOnHelix("Unsupported queue", Queues = "Windows.Amd64.VS2022.Pre;Windows.Amd64.VS2022.Pre.Open;")] public class ClientCertificateTests : IISFunctionalTestBase { private readonly ClientCertificateFixture _certFixture; diff --git a/src/Servers/IIS/IIS/test/Common.FunctionalTests/Latin1Tests.cs b/src/Servers/IIS/IIS/test/Common.FunctionalTests/Latin1Tests.cs index a2bdd27bb3ac..a006c220a2c0 100644 --- a/src/Servers/IIS/IIS/test/Common.FunctionalTests/Latin1Tests.cs +++ b/src/Servers/IIS/IIS/test/Common.FunctionalTests/Latin1Tests.cs @@ -27,7 +27,7 @@ namespace Microsoft.AspNetCore.Server.IIS.FunctionalTests; #endif [Collection(PublishedSitesCollection.Name)] -[SkipOnHelix("Unsupported queue", Queues = "Windows.Amd64.VS2022.Pre.Open;")] +[SkipOnHelix("Unsupported queue", Queues = "Windows.Amd64.VS2022.Pre;Windows.Amd64.VS2022.Pre.Open;")] public class Latin1Tests : IISFunctionalTestBase { public Latin1Tests(PublishedSitesFixture fixture) : base(fixture) diff --git a/src/Servers/IIS/IIS/test/Common.FunctionalTests/LoggingTests.cs b/src/Servers/IIS/IIS/test/Common.FunctionalTests/LoggingTests.cs index 9a865d615d2f..8b0a9ad0b76c 100644 --- a/src/Servers/IIS/IIS/test/Common.FunctionalTests/LoggingTests.cs +++ b/src/Servers/IIS/IIS/test/Common.FunctionalTests/LoggingTests.cs @@ -29,7 +29,7 @@ namespace Microsoft.AspNetCore.Server.IIS.FunctionalTests; #endif [Collection(PublishedSitesCollection.Name)] -[SkipOnHelix("Unsupported queue", Queues = "Windows.Amd64.VS2022.Pre.Open;")] +[SkipOnHelix("Unsupported queue", Queues = "Windows.Amd64.VS2022.Pre;Windows.Amd64.VS2022.Pre.Open;")] public class LoggingTests : IISFunctionalTestBase { public LoggingTests(PublishedSitesFixture fixture) : base(fixture) diff --git a/src/Servers/IIS/IIS/test/Common.FunctionalTests/MaxRequestBodySizeTests.cs b/src/Servers/IIS/IIS/test/Common.FunctionalTests/MaxRequestBodySizeTests.cs index a46da000433d..bce834c35364 100644 --- a/src/Servers/IIS/IIS/test/Common.FunctionalTests/MaxRequestBodySizeTests.cs +++ b/src/Servers/IIS/IIS/test/Common.FunctionalTests/MaxRequestBodySizeTests.cs @@ -26,7 +26,7 @@ namespace Microsoft.AspNetCore.Server.IIS.FunctionalTests; #endif [Collection(PublishedSitesCollection.Name)] -[SkipOnHelix("Unsupported queue", Queues = "Windows.Amd64.VS2022.Pre.Open;")] +[SkipOnHelix("Unsupported queue", Queues = "Windows.Amd64.VS2022.Pre;Windows.Amd64.VS2022.Pre.Open;")] public class MaxRequestBodySizeTests : IISFunctionalTestBase { public MaxRequestBodySizeTests(PublishedSitesFixture fixture) : base(fixture) diff --git a/src/Servers/IIS/IIS/test/Common.FunctionalTests/MultiApplicationTests.cs b/src/Servers/IIS/IIS/test/Common.FunctionalTests/MultiApplicationTests.cs index 49671c229aac..d1e5402061fb 100644 --- a/src/Servers/IIS/IIS/test/Common.FunctionalTests/MultiApplicationTests.cs +++ b/src/Servers/IIS/IIS/test/Common.FunctionalTests/MultiApplicationTests.cs @@ -28,7 +28,7 @@ namespace Microsoft.AspNetCore.Server.IIS.FunctionalTests; #endif [Collection(PublishedSitesCollection.Name)] -[SkipOnHelix("Unsupported queue", Queues = "Windows.Amd64.VS2022.Pre.Open;")] +[SkipOnHelix("Unsupported queue", Queues = "Windows.Amd64.VS2022.Pre;Windows.Amd64.VS2022.Pre.Open;")] public class MultiApplicationTests : IISFunctionalTestBase { private PublishedApplication _publishedApplication; diff --git a/src/Servers/IIS/IIS/test/Common.FunctionalTests/RequestPathBaseTests.cs b/src/Servers/IIS/IIS/test/Common.FunctionalTests/RequestPathBaseTests.cs index 7b2ffebb09a7..7a002bbdf65d 100644 --- a/src/Servers/IIS/IIS/test/Common.FunctionalTests/RequestPathBaseTests.cs +++ b/src/Servers/IIS/IIS/test/Common.FunctionalTests/RequestPathBaseTests.cs @@ -21,7 +21,7 @@ namespace Microsoft.AspNetCore.Server.IIS.FunctionalTests; #endif [Collection(IISSubAppSiteCollection.Name)] -[SkipOnHelix("Unsupported queue", Queues = "Windows.Amd64.VS2022.Pre.Open;")] +[SkipOnHelix("Unsupported queue", Queues = "Windows.Amd64.VS2022.Pre;Windows.Amd64.VS2022.Pre.Open;")] public class RequestPathBaseTests : FixtureLoggedTest { private readonly IISSubAppSiteFixture _fixture; @@ -32,7 +32,7 @@ public RequestPathBaseTests(IISSubAppSiteFixture fixture) : base(fixture) } [ConditionalTheory] - [SkipOnHelix("Unsupported queue", Queues = "Windows.Amd64.VS2022.Pre.Open;")] + [SkipOnHelix("Unsupported queue", Queues = "Windows.Amd64.VS2022.Pre;Windows.Amd64.VS2022.Pre.Open;")] [RequiresNewHandler] [InlineData("/Sub/App/PathAndPathBase", "/Sub/App/PathAndPathBase", "")] [InlineData("/SUb/APp/PathAndPAthBase", "/SUb/APp/PathAndPAthBase", "")] @@ -53,7 +53,6 @@ public async Task RequestPathBase_Split(string url, string expectedPathBase, str } [ConditionalTheory] - [SkipOnHelix("Unsupported queue", Queues = "Windows.Amd64.VS2022.Pre.Open;")] [RequiresNewHandler] [InlineData("//Sub/App/PathAndPathBase", "//Sub/App/PathAndPathBase", "")] [InlineData(@"/\Sub/App/PathAndPathBase/", @"/\Sub/App/PathAndPathBase", "/")] diff --git a/src/Servers/IIS/IIS/test/Common.FunctionalTests/RequestResponseTests.cs b/src/Servers/IIS/IIS/test/Common.FunctionalTests/RequestResponseTests.cs index f919d911891b..b2a044954956 100644 --- a/src/Servers/IIS/IIS/test/Common.FunctionalTests/RequestResponseTests.cs +++ b/src/Servers/IIS/IIS/test/Common.FunctionalTests/RequestResponseTests.cs @@ -30,7 +30,7 @@ namespace Microsoft.AspNetCore.Server.IIS.FunctionalTests; #endif [Collection(IISTestSiteCollection.Name)] -[SkipOnHelix("Unsupported queue", Queues = "Windows.Amd64.VS2022.Pre.Open;")] +[SkipOnHelix("Unsupported queue", Queues = "Windows.Amd64.VS2022.Pre;Windows.Amd64.VS2022.Pre.Open;")] public class RequestResponseTests { private readonly IISTestSiteFixture _fixture; diff --git a/src/Servers/IIS/IIS/test/Common.FunctionalTests/WindowsAuthTests.cs b/src/Servers/IIS/IIS/test/Common.FunctionalTests/WindowsAuthTests.cs index 0727add20b4f..a5b73d4d42db 100644 --- a/src/Servers/IIS/IIS/test/Common.FunctionalTests/WindowsAuthTests.cs +++ b/src/Servers/IIS/IIS/test/Common.FunctionalTests/WindowsAuthTests.cs @@ -26,7 +26,7 @@ namespace Microsoft.AspNetCore.Server.IIS.FunctionalTests; #endif [Collection(PublishedSitesCollection.Name)] -[SkipOnHelix("Unsupported queue", Queues = "Windows.Amd64.VS2022.Pre.Open;")] +[SkipOnHelix("Unsupported queue", Queues = "Windows.Amd64.VS2022.Pre;Windows.Amd64.VS2022.Pre.Open;")] public class WindowsAuthTests : IISFunctionalTestBase { public WindowsAuthTests(PublishedSitesFixture fixture) : base(fixture) diff --git a/src/Servers/IIS/IIS/test/Common.LongTests/ShutdownTests.cs b/src/Servers/IIS/IIS/test/Common.LongTests/ShutdownTests.cs index 05f6a5e9fa55..ac4566d9fda8 100644 --- a/src/Servers/IIS/IIS/test/Common.LongTests/ShutdownTests.cs +++ b/src/Servers/IIS/IIS/test/Common.LongTests/ShutdownTests.cs @@ -27,7 +27,7 @@ namespace Microsoft.AspNetCore.Server.IIS.FunctionalTests; // Contains all tests related to shutdown, including app_offline, abort, and app recycle [Collection(PublishedSitesCollection.Name)] -[SkipOnHelix("Unsupported queue", Queues = "Windows.Amd64.VS2022.Pre.Open;")] +[SkipOnHelix("Unsupported queue", Queues = "Windows.Amd64.VS2022.Pre;Windows.Amd64.VS2022.Pre.Open;")] public class ShutdownTests : IISFunctionalTestBase { public ShutdownTests(PublishedSitesFixture fixture) : base(fixture) @@ -315,7 +315,6 @@ public async Task AppOfflineDropped_CanRemoveAppOfflineAfterAddingAndSiteWorks_O } [ConditionalFact] - [SkipOnHelix("Unsupported queue", Queues = "Windows.Amd64.VS2022.Pre.Open;")] [MaximumOSVersion(OperatingSystems.Windows, WindowsVersions.Win10_20H2, SkipReason = "Shutdown hangs https://github.com/dotnet/aspnetcore/issues/25107")] public async Task AppOfflineAddedAndRemovedStress_InProcess() { @@ -484,7 +483,6 @@ public async Task OutOfProcessToInProcessHostingModelSwitchWorks() } [ConditionalFact] - [SkipOnHelix("Unsupported queue", Queues = "Windows.Amd64.VS2022.Pre.Open;")] public async Task ConfigurationTouchedStress_InProcess() { await ConfigurationTouchedStress(HostingModel.InProcess); diff --git a/src/Servers/IIS/IIS/test/Common.LongTests/StartupTests.cs b/src/Servers/IIS/IIS/test/Common.LongTests/StartupTests.cs index c581cbae44a7..4a85e9c2a504 100644 --- a/src/Servers/IIS/IIS/test/Common.LongTests/StartupTests.cs +++ b/src/Servers/IIS/IIS/test/Common.LongTests/StartupTests.cs @@ -31,7 +31,7 @@ namespace Microsoft.AspNetCore.Server.IIS.FunctionalTests; // Contains all tests related to Startup, requiring starting ANCM/IIS every time. [Collection(PublishedSitesCollection.Name)] -[SkipOnHelix("Unsupported queue", Queues = "Windows.Amd64.VS2022.Pre.Open;")] +[SkipOnHelix("Unsupported queue", Queues = "Windows.Amd64.VS2022.Pre;Windows.Amd64.VS2022.Pre.Open;")] public class StartupTests : IISFunctionalTestBase { public StartupTests(PublishedSitesFixture fixture) : base(fixture) diff --git a/src/Servers/IIS/IIS/test/IIS.FunctionalTests/Http2TrailersResetTests.cs b/src/Servers/IIS/IIS/test/IIS.FunctionalTests/Http2TrailersResetTests.cs index f69c4daecabe..899b9aa89661 100644 --- a/src/Servers/IIS/IIS/test/IIS.FunctionalTests/Http2TrailersResetTests.cs +++ b/src/Servers/IIS/IIS/test/IIS.FunctionalTests/Http2TrailersResetTests.cs @@ -26,7 +26,7 @@ namespace Microsoft.AspNetCore.Server.IIS.FunctionalTests; /// on IIS Express even on the new Windows versions because IIS Express has its own outdated copy of IIS. /// [Collection(IISHttpsTestSiteCollection.Name)] -[SkipOnHelix("Unsupported queue", Queues = "Windows.Amd64.VS2022.Pre.Open;")] +[SkipOnHelix("Unsupported queue", Queues = "Windows.Amd64.VS2022.Pre;Windows.Amd64.VS2022.Pre.Open;")] public class Http2TrailerResetTests : FunctionalTestsBase { private const string WindowsVersionForTrailers = "10.0.20238"; diff --git a/src/Servers/IIS/IIS/test/IIS.FunctionalTests/Http3Tests.cs b/src/Servers/IIS/IIS/test/IIS.FunctionalTests/Http3Tests.cs index 5c28240df66b..712c518c137f 100644 --- a/src/Servers/IIS/IIS/test/IIS.FunctionalTests/Http3Tests.cs +++ b/src/Servers/IIS/IIS/test/IIS.FunctionalTests/Http3Tests.cs @@ -27,7 +27,7 @@ namespace Microsoft.AspNetCore.Server.IIS.FunctionalTests; [MsQuicSupported] [HttpSysHttp3Supported] [Collection(IISHttpsTestSiteCollection.Name)] -[SkipOnHelix("Unsupported queue", Queues = "Windows.Amd64.VS2022.Pre.Open;")] +[SkipOnHelix("Unsupported queue", Queues = "Windows.Amd64.VS2022.Pre;Windows.Amd64.VS2022.Pre.Open;")] public class Http3Tests : FunctionalTestsBase { public Http3Tests(IISTestSiteFixture fixture) diff --git a/src/Servers/IIS/IIS/test/IIS.Shared.FunctionalTests/ApplicationInitializationTests.cs b/src/Servers/IIS/IIS/test/IIS.Shared.FunctionalTests/ApplicationInitializationTests.cs index 4615f0b9ea1d..97589a326e67 100644 --- a/src/Servers/IIS/IIS/test/IIS.Shared.FunctionalTests/ApplicationInitializationTests.cs +++ b/src/Servers/IIS/IIS/test/IIS.Shared.FunctionalTests/ApplicationInitializationTests.cs @@ -28,7 +28,7 @@ namespace Microsoft.AspNetCore.Server.IIS.FunctionalTests; #endif [Collection(PublishedSitesCollection.Name)] -[SkipOnHelix("Unsupported queue", Queues = "Windows.Amd64.VS2022.Pre.Open;")] +[SkipOnHelix("Unsupported queue", Queues = "Windows.Amd64.VS2022.Pre;Windows.Amd64.VS2022.Pre.Open;")] public class ApplicationInitializationTests : IISFunctionalTestBase { public ApplicationInitializationTests(PublishedSitesFixture fixture) : base(fixture) diff --git a/src/Servers/IIS/IIS/test/IIS.Tests/ClientDisconnectTests.cs b/src/Servers/IIS/IIS/test/IIS.Tests/ClientDisconnectTests.cs index bf7baa3cf476..30d385d8750c 100644 --- a/src/Servers/IIS/IIS/test/IIS.Tests/ClientDisconnectTests.cs +++ b/src/Servers/IIS/IIS/test/IIS.Tests/ClientDisconnectTests.cs @@ -15,7 +15,7 @@ namespace Microsoft.AspNetCore.Server.IIS.FunctionalTests; [SkipIfHostableWebCoreNotAvailable] [MinimumOSVersion(OperatingSystems.Windows, WindowsVersions.Win8, SkipReason = "https://github.com/aspnet/IISIntegration/issues/866")] -[SkipOnHelix("Unsupported queue", Queues = "Windows.Amd64.VS2022.Pre.Open;")] +[SkipOnHelix("Unsupported queue", Queues = "Windows.Amd64.VS2022.Pre;Windows.Amd64.VS2022.Pre.Open;")] public class ClientDisconnectTests : StrictTestServerTests { [ConditionalFact] diff --git a/src/Servers/IIS/IIS/test/IIS.Tests/ConnectionIdFeatureTests.cs b/src/Servers/IIS/IIS/test/IIS.Tests/ConnectionIdFeatureTests.cs index 758bff3b78c6..d49f0e32e503 100644 --- a/src/Servers/IIS/IIS/test/IIS.Tests/ConnectionIdFeatureTests.cs +++ b/src/Servers/IIS/IIS/test/IIS.Tests/ConnectionIdFeatureTests.cs @@ -10,7 +10,7 @@ namespace Microsoft.AspNetCore.Server.IIS.FunctionalTests; [SkipIfHostableWebCoreNotAvailable] [MinimumOSVersion(OperatingSystems.Windows, WindowsVersions.Win8, SkipReason = "https://github.com/aspnet/IISIntegration/issues/866")] -[SkipOnHelix("Unsupported queue", Queues = "Windows.Amd64.VS2022.Pre.Open;")] +[SkipOnHelix("Unsupported queue", Queues = "Windows.Amd64.VS2022.Pre;Windows.Amd64.VS2022.Pre.Open;")] public class ConnectionIdFeatureTests : StrictTestServerTests { [ConditionalFact] diff --git a/src/Servers/IIS/IIS/test/IIS.Tests/HttpBodyControlFeatureTests.cs b/src/Servers/IIS/IIS/test/IIS.Tests/HttpBodyControlFeatureTests.cs index 7fb61298bd9a..9dd50a3bb96e 100644 --- a/src/Servers/IIS/IIS/test/IIS.Tests/HttpBodyControlFeatureTests.cs +++ b/src/Servers/IIS/IIS/test/IIS.Tests/HttpBodyControlFeatureTests.cs @@ -11,7 +11,7 @@ namespace Microsoft.AspNetCore.Server.IIS.FunctionalTests; [SkipIfHostableWebCoreNotAvailable] [MinimumOSVersion(OperatingSystems.Windows, WindowsVersions.Win8, SkipReason = "https://github.com/aspnet/IISIntegration/issues/866")] -[SkipOnHelix("Unsupported queue", Queues = "Windows.Amd64.VS2022.Pre.Open;")] +[SkipOnHelix("Unsupported queue", Queues = "Windows.Amd64.VS2022.Pre;Windows.Amd64.VS2022.Pre.Open;")] public class HttpBodyControlFeatureTests : StrictTestServerTests { [ConditionalFact] diff --git a/src/Servers/IIS/IIS/test/IISExpress.FunctionalTests/InProcess/AppOfflineIISExpressTests.cs b/src/Servers/IIS/IIS/test/IISExpress.FunctionalTests/InProcess/AppOfflineIISExpressTests.cs index 04d066964393..101b336f3712 100644 --- a/src/Servers/IIS/IIS/test/IISExpress.FunctionalTests/InProcess/AppOfflineIISExpressTests.cs +++ b/src/Servers/IIS/IIS/test/IISExpress.FunctionalTests/InProcess/AppOfflineIISExpressTests.cs @@ -11,7 +11,7 @@ namespace Microsoft.AspNetCore.Server.IIS.IISExpress.FunctionalTests; [Collection(PublishedSitesCollection.Name)] -[SkipOnHelix("Unsupported queue", Queues = "Windows.Amd64.VS2022.Pre.Open;")] +[SkipOnHelix("Unsupported queue", Queues = "Windows.Amd64.VS2022.Pre;Windows.Amd64.VS2022.Pre.Open;")] public class AppOfflineIISExpressTests : IISFunctionalTestBase { public AppOfflineIISExpressTests(PublishedSitesFixture fixture) : base(fixture) diff --git a/src/Servers/IIS/IIS/test/IISExpress.FunctionalTests/InProcess/IISExpressShutdownTests.cs b/src/Servers/IIS/IIS/test/IISExpress.FunctionalTests/InProcess/IISExpressShutdownTests.cs index be359ed31e20..c8ec641b2745 100644 --- a/src/Servers/IIS/IIS/test/IISExpress.FunctionalTests/InProcess/IISExpressShutdownTests.cs +++ b/src/Servers/IIS/IIS/test/IISExpress.FunctionalTests/InProcess/IISExpressShutdownTests.cs @@ -41,7 +41,7 @@ public async Task ServerShutsDownWhenMainExits() } [ConditionalFact] - [SkipOnHelix("Unsupported queue", Queues = "Windows.Amd64.VS2022.Pre.Open;")] + [SkipOnHelix("Unsupported queue", Queues = "Windows.Amd64.VS2022.Pre;Windows.Amd64.VS2022.Pre.Open;")] public async Task ServerShutsDownWhenMainExitsStress() { var parameters = Fixture.GetBaseDeploymentParameters(); diff --git a/src/Servers/IIS/IIS/test/IISExpress.FunctionalTests/InProcess/WebSocketTests.cs b/src/Servers/IIS/IIS/test/IISExpress.FunctionalTests/InProcess/WebSocketTests.cs index 786eaa8f50d8..2af0ee19b29a 100644 --- a/src/Servers/IIS/IIS/test/IISExpress.FunctionalTests/InProcess/WebSocketTests.cs +++ b/src/Servers/IIS/IIS/test/IISExpress.FunctionalTests/InProcess/WebSocketTests.cs @@ -18,7 +18,7 @@ namespace Microsoft.AspNetCore.Server.IIS.IISExpress.FunctionalTests; [Collection(IISTestSiteCollection.Name)] [MinimumOSVersion(OperatingSystems.Windows, WindowsVersions.Win8, SkipReason = "No WebSocket supported on Win7")] -[SkipOnHelix("Unsupported queue", Queues = "Windows.Amd64.VS2022.Pre.Open;")] +[SkipOnHelix("Unsupported queue", Queues = "Windows.Amd64.VS2022.Pre;Windows.Amd64.VS2022.Pre.Open;")] public class WebSocketsTests { private readonly string _requestUri; diff --git a/src/Servers/IIS/IIS/test/IISExpress.FunctionalTests/OutOfProcess/MultipleAppTests.cs b/src/Servers/IIS/IIS/test/IISExpress.FunctionalTests/OutOfProcess/MultipleAppTests.cs index 69a62bd3900f..49f085cb9633 100644 --- a/src/Servers/IIS/IIS/test/IISExpress.FunctionalTests/OutOfProcess/MultipleAppTests.cs +++ b/src/Servers/IIS/IIS/test/IISExpress.FunctionalTests/OutOfProcess/MultipleAppTests.cs @@ -15,7 +15,7 @@ namespace Microsoft.AspNetCore.Server.IIS.IISExpress.FunctionalTests; [Collection(PublishedSitesCollection.Name)] -[SkipOnHelix("Unsupported queue", Queues = "Windows.Amd64.VS2022.Pre.Open;")] +[SkipOnHelix("Unsupported queue", Queues = "Windows.Amd64.VS2022.Pre;Windows.Amd64.VS2022.Pre.Open;")] public class MultipleAppTests : IISFunctionalTestBase { public MultipleAppTests(PublishedSitesFixture fixture) : base(fixture) diff --git a/src/Servers/IIS/IIS/test/IISExpress.FunctionalTests/OutOfProcess/NtlmAuthentationTest.cs b/src/Servers/IIS/IIS/test/IISExpress.FunctionalTests/OutOfProcess/NtlmAuthentationTest.cs index 0dcd70aa010f..b09b93623f5c 100644 --- a/src/Servers/IIS/IIS/test/IISExpress.FunctionalTests/OutOfProcess/NtlmAuthentationTest.cs +++ b/src/Servers/IIS/IIS/test/IISExpress.FunctionalTests/OutOfProcess/NtlmAuthentationTest.cs @@ -15,7 +15,7 @@ namespace Microsoft.AspNetCore.Server.IIS.IISExpress.FunctionalTests; [Collection(PublishedSitesCollection.Name)] -[SkipOnHelix("Unsupported queue", Queues = "Windows.Amd64.VS2022.Pre.Open;")] +[SkipOnHelix("Unsupported queue", Queues = "Windows.Amd64.VS2022.Pre;Windows.Amd64.VS2022.Pre.Open;")] public class NtlmAuthenticationTests : IISFunctionalTestBase { // Test only runs on IISExpress today as our CI machines do not have diff --git a/src/Servers/IIS/IIS/test/IISExpress.FunctionalTests/UpgradeFeatureDetectionTests.cs b/src/Servers/IIS/IIS/test/IISExpress.FunctionalTests/UpgradeFeatureDetectionTests.cs index d9d3a076bcba..c747da2c736a 100644 --- a/src/Servers/IIS/IIS/test/IISExpress.FunctionalTests/UpgradeFeatureDetectionTests.cs +++ b/src/Servers/IIS/IIS/test/IISExpress.FunctionalTests/UpgradeFeatureDetectionTests.cs @@ -14,7 +14,7 @@ namespace Microsoft.AspNetCore.Server.IIS.IISExpress.FunctionalTests; [Collection(PublishedSitesCollection.Name)] -[SkipOnHelix("Unsupported queue", Queues = "Windows.Amd64.VS2022.Pre.Open;")] +[SkipOnHelix("Unsupported queue", Queues = "Windows.Amd64.VS2022.Pre;Windows.Amd64.VS2022.Pre.Open;")] public class UpgradeFeatureDetectionTests : IISFunctionalTestBase { private readonly string _isWebsocketsSupported = Environment.OSVersion.Version >= new Version(6, 2) ? "Enabled" : "Disabled"; diff --git a/src/Servers/IIS/IISIntegration/test/Tests/IISExtensionTests.cs b/src/Servers/IIS/IISIntegration/test/Tests/IISExtensionTests.cs index ce970c7086fb..aaa6154a875b 100644 --- a/src/Servers/IIS/IISIntegration/test/Tests/IISExtensionTests.cs +++ b/src/Servers/IIS/IISIntegration/test/Tests/IISExtensionTests.cs @@ -12,7 +12,7 @@ namespace Microsoft.AspNetCore.Server.IISIntegration; -[SkipOnHelix("Unsupported queue", Queues = "Windows.Amd64.VS2022.Pre.Open;")] +[SkipOnHelix("Unsupported queue", Queues = "Windows.Amd64.VS2022.Pre;Windows.Amd64.VS2022.Pre.Open;")] public class IISExtensionTests { [Fact] From 31739e30e9942dca71d02796ea339243893675f8 Mon Sep 17 00:00:00 2001 From: DotNet Bot Date: Fri, 27 Oct 2023 00:52:43 +0000 Subject: [PATCH 004/391] [internal/release/8.0] Update dependencies from dnceng/internal/dotnet-efcore --- NuGet.config | 4 ++-- eng/Version.Details.xml | 16 ++++++++-------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/NuGet.config b/NuGet.config index 6e7938c27ea9..94a9401eb2e0 100644 --- a/NuGet.config +++ b/NuGet.config @@ -4,7 +4,7 @@ - + @@ -28,7 +28,7 @@ - + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index b02bcb7b4d1d..328d4a047777 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -11,35 +11,35 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 1425f658e244a04a9b5a669d888dd8179b3c0ed7 + 72b8d3330456a6ee68adee0e09293e25e59de3d9 https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 1425f658e244a04a9b5a669d888dd8179b3c0ed7 + 72b8d3330456a6ee68adee0e09293e25e59de3d9 https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 1425f658e244a04a9b5a669d888dd8179b3c0ed7 + 72b8d3330456a6ee68adee0e09293e25e59de3d9 https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 1425f658e244a04a9b5a669d888dd8179b3c0ed7 + 72b8d3330456a6ee68adee0e09293e25e59de3d9 https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 1425f658e244a04a9b5a669d888dd8179b3c0ed7 + 72b8d3330456a6ee68adee0e09293e25e59de3d9 https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 1425f658e244a04a9b5a669d888dd8179b3c0ed7 + 72b8d3330456a6ee68adee0e09293e25e59de3d9 https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 1425f658e244a04a9b5a669d888dd8179b3c0ed7 + 72b8d3330456a6ee68adee0e09293e25e59de3d9 https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 1425f658e244a04a9b5a669d888dd8179b3c0ed7 + 72b8d3330456a6ee68adee0e09293e25e59de3d9 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime From 4f7f2fd773ba886e7f373fd4de1d531094d44484 Mon Sep 17 00:00:00 2001 From: DotNet Bot Date: Mon, 30 Oct 2023 16:11:46 +0000 Subject: [PATCH 005/391] [internal/release/8.0] Update dependencies from dnceng/internal/dotnet-efcore --- NuGet.config | 8 ++++++-- eng/Version.Details.xml | 16 ++++++++-------- 2 files changed, 14 insertions(+), 10 deletions(-) diff --git a/NuGet.config b/NuGet.config index 94a9401eb2e0..0047bb98fa4a 100644 --- a/NuGet.config +++ b/NuGet.config @@ -4,10 +4,12 @@ - + + + @@ -28,9 +30,11 @@ - + + + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 328d4a047777..3ec03e18ea3e 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -11,35 +11,35 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 72b8d3330456a6ee68adee0e09293e25e59de3d9 + b776d0dfd8d49d135cd00f689d0dc8f2592d3ff0 https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 72b8d3330456a6ee68adee0e09293e25e59de3d9 + b776d0dfd8d49d135cd00f689d0dc8f2592d3ff0 https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 72b8d3330456a6ee68adee0e09293e25e59de3d9 + b776d0dfd8d49d135cd00f689d0dc8f2592d3ff0 https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 72b8d3330456a6ee68adee0e09293e25e59de3d9 + b776d0dfd8d49d135cd00f689d0dc8f2592d3ff0 https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 72b8d3330456a6ee68adee0e09293e25e59de3d9 + b776d0dfd8d49d135cd00f689d0dc8f2592d3ff0 https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 72b8d3330456a6ee68adee0e09293e25e59de3d9 + b776d0dfd8d49d135cd00f689d0dc8f2592d3ff0 https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 72b8d3330456a6ee68adee0e09293e25e59de3d9 + b776d0dfd8d49d135cd00f689d0dc8f2592d3ff0 https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 72b8d3330456a6ee68adee0e09293e25e59de3d9 + b776d0dfd8d49d135cd00f689d0dc8f2592d3ff0 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime From 4753becfe9ff6bff60d4c9efa57e08ca6e9b7554 Mon Sep 17 00:00:00 2001 From: DotNet Bot Date: Tue, 31 Oct 2023 06:13:12 +0000 Subject: [PATCH 006/391] [internal/release/8.0] Update dependencies from dnceng/internal/dotnet-runtime --- NuGet.config | 8 +-- eng/Version.Details.xml | 152 ++++++++++++++++++++-------------------- eng/Versions.props | 10 +-- 3 files changed, 83 insertions(+), 87 deletions(-) diff --git a/NuGet.config b/NuGet.config index 0047bb98fa4a..0b6fe8581fe4 100644 --- a/NuGet.config +++ b/NuGet.config @@ -7,9 +7,7 @@ - - - + @@ -33,9 +31,7 @@ - - - + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 3ec03e18ea3e..2625c87b1330 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -43,151 +43,151 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 17ea9ab3f662320d4ac62d3a2b783b5054ad80bf + 0395649aa16820be8a669203b265b0a578e82843 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 17ea9ab3f662320d4ac62d3a2b783b5054ad80bf + 0395649aa16820be8a669203b265b0a578e82843 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 17ea9ab3f662320d4ac62d3a2b783b5054ad80bf + 0395649aa16820be8a669203b265b0a578e82843 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 17ea9ab3f662320d4ac62d3a2b783b5054ad80bf + 0395649aa16820be8a669203b265b0a578e82843 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 17ea9ab3f662320d4ac62d3a2b783b5054ad80bf + 0395649aa16820be8a669203b265b0a578e82843 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 17ea9ab3f662320d4ac62d3a2b783b5054ad80bf + 0395649aa16820be8a669203b265b0a578e82843 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 17ea9ab3f662320d4ac62d3a2b783b5054ad80bf + 0395649aa16820be8a669203b265b0a578e82843 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 17ea9ab3f662320d4ac62d3a2b783b5054ad80bf + 0395649aa16820be8a669203b265b0a578e82843 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 17ea9ab3f662320d4ac62d3a2b783b5054ad80bf + 0395649aa16820be8a669203b265b0a578e82843 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 17ea9ab3f662320d4ac62d3a2b783b5054ad80bf + 0395649aa16820be8a669203b265b0a578e82843 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 17ea9ab3f662320d4ac62d3a2b783b5054ad80bf + 0395649aa16820be8a669203b265b0a578e82843 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 17ea9ab3f662320d4ac62d3a2b783b5054ad80bf + 0395649aa16820be8a669203b265b0a578e82843 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 17ea9ab3f662320d4ac62d3a2b783b5054ad80bf + 0395649aa16820be8a669203b265b0a578e82843 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 17ea9ab3f662320d4ac62d3a2b783b5054ad80bf + 0395649aa16820be8a669203b265b0a578e82843 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 17ea9ab3f662320d4ac62d3a2b783b5054ad80bf + 0395649aa16820be8a669203b265b0a578e82843 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 17ea9ab3f662320d4ac62d3a2b783b5054ad80bf + 0395649aa16820be8a669203b265b0a578e82843 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 17ea9ab3f662320d4ac62d3a2b783b5054ad80bf + 0395649aa16820be8a669203b265b0a578e82843 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 17ea9ab3f662320d4ac62d3a2b783b5054ad80bf + 0395649aa16820be8a669203b265b0a578e82843 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 17ea9ab3f662320d4ac62d3a2b783b5054ad80bf + 0395649aa16820be8a669203b265b0a578e82843 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 17ea9ab3f662320d4ac62d3a2b783b5054ad80bf + 0395649aa16820be8a669203b265b0a578e82843 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 17ea9ab3f662320d4ac62d3a2b783b5054ad80bf + 0395649aa16820be8a669203b265b0a578e82843 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 17ea9ab3f662320d4ac62d3a2b783b5054ad80bf + 0395649aa16820be8a669203b265b0a578e82843 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 17ea9ab3f662320d4ac62d3a2b783b5054ad80bf + 0395649aa16820be8a669203b265b0a578e82843 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 17ea9ab3f662320d4ac62d3a2b783b5054ad80bf + 0395649aa16820be8a669203b265b0a578e82843 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 17ea9ab3f662320d4ac62d3a2b783b5054ad80bf + 0395649aa16820be8a669203b265b0a578e82843 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 17ea9ab3f662320d4ac62d3a2b783b5054ad80bf + 0395649aa16820be8a669203b265b0a578e82843 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 17ea9ab3f662320d4ac62d3a2b783b5054ad80bf + 0395649aa16820be8a669203b265b0a578e82843 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 17ea9ab3f662320d4ac62d3a2b783b5054ad80bf + 0395649aa16820be8a669203b265b0a578e82843 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 17ea9ab3f662320d4ac62d3a2b783b5054ad80bf + 0395649aa16820be8a669203b265b0a578e82843 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 17ea9ab3f662320d4ac62d3a2b783b5054ad80bf + 0395649aa16820be8a669203b265b0a578e82843 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 17ea9ab3f662320d4ac62d3a2b783b5054ad80bf + 0395649aa16820be8a669203b265b0a578e82843 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 17ea9ab3f662320d4ac62d3a2b783b5054ad80bf + 0395649aa16820be8a669203b265b0a578e82843 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 17ea9ab3f662320d4ac62d3a2b783b5054ad80bf + 0395649aa16820be8a669203b265b0a578e82843 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 17ea9ab3f662320d4ac62d3a2b783b5054ad80bf + 0395649aa16820be8a669203b265b0a578e82843 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 17ea9ab3f662320d4ac62d3a2b783b5054ad80bf + 0395649aa16820be8a669203b265b0a578e82843 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 17ea9ab3f662320d4ac62d3a2b783b5054ad80bf + 0395649aa16820be8a669203b265b0a578e82843 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 17ea9ab3f662320d4ac62d3a2b783b5054ad80bf + 0395649aa16820be8a669203b265b0a578e82843 https://github.com/dotnet/source-build-externals @@ -201,116 +201,116 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 17ea9ab3f662320d4ac62d3a2b783b5054ad80bf + 0395649aa16820be8a669203b265b0a578e82843 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 17ea9ab3f662320d4ac62d3a2b783b5054ad80bf + 0395649aa16820be8a669203b265b0a578e82843 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 17ea9ab3f662320d4ac62d3a2b783b5054ad80bf + 0395649aa16820be8a669203b265b0a578e82843 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 17ea9ab3f662320d4ac62d3a2b783b5054ad80bf + 0395649aa16820be8a669203b265b0a578e82843 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 17ea9ab3f662320d4ac62d3a2b783b5054ad80bf + 0395649aa16820be8a669203b265b0a578e82843 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 17ea9ab3f662320d4ac62d3a2b783b5054ad80bf + 0395649aa16820be8a669203b265b0a578e82843 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 17ea9ab3f662320d4ac62d3a2b783b5054ad80bf + 0395649aa16820be8a669203b265b0a578e82843 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 17ea9ab3f662320d4ac62d3a2b783b5054ad80bf + 0395649aa16820be8a669203b265b0a578e82843 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 17ea9ab3f662320d4ac62d3a2b783b5054ad80bf + 0395649aa16820be8a669203b265b0a578e82843 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 17ea9ab3f662320d4ac62d3a2b783b5054ad80bf + 0395649aa16820be8a669203b265b0a578e82843 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 17ea9ab3f662320d4ac62d3a2b783b5054ad80bf + 0395649aa16820be8a669203b265b0a578e82843 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 17ea9ab3f662320d4ac62d3a2b783b5054ad80bf + 0395649aa16820be8a669203b265b0a578e82843 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 17ea9ab3f662320d4ac62d3a2b783b5054ad80bf + 0395649aa16820be8a669203b265b0a578e82843 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 17ea9ab3f662320d4ac62d3a2b783b5054ad80bf + 0395649aa16820be8a669203b265b0a578e82843 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 17ea9ab3f662320d4ac62d3a2b783b5054ad80bf + 0395649aa16820be8a669203b265b0a578e82843 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 17ea9ab3f662320d4ac62d3a2b783b5054ad80bf + 0395649aa16820be8a669203b265b0a578e82843 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 17ea9ab3f662320d4ac62d3a2b783b5054ad80bf + 0395649aa16820be8a669203b265b0a578e82843 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 17ea9ab3f662320d4ac62d3a2b783b5054ad80bf + 0395649aa16820be8a669203b265b0a578e82843 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 17ea9ab3f662320d4ac62d3a2b783b5054ad80bf + 0395649aa16820be8a669203b265b0a578e82843 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 17ea9ab3f662320d4ac62d3a2b783b5054ad80bf + 0395649aa16820be8a669203b265b0a578e82843 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 17ea9ab3f662320d4ac62d3a2b783b5054ad80bf + 0395649aa16820be8a669203b265b0a578e82843 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 17ea9ab3f662320d4ac62d3a2b783b5054ad80bf + 0395649aa16820be8a669203b265b0a578e82843 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 17ea9ab3f662320d4ac62d3a2b783b5054ad80bf + 0395649aa16820be8a669203b265b0a578e82843 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 17ea9ab3f662320d4ac62d3a2b783b5054ad80bf + 0395649aa16820be8a669203b265b0a578e82843 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 17ea9ab3f662320d4ac62d3a2b783b5054ad80bf + 0395649aa16820be8a669203b265b0a578e82843 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 17ea9ab3f662320d4ac62d3a2b783b5054ad80bf + 0395649aa16820be8a669203b265b0a578e82843 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 17ea9ab3f662320d4ac62d3a2b783b5054ad80bf + 0395649aa16820be8a669203b265b0a578e82843 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 17ea9ab3f662320d4ac62d3a2b783b5054ad80bf + 0395649aa16820be8a669203b265b0a578e82843 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 17ea9ab3f662320d4ac62d3a2b783b5054ad80bf + 0395649aa16820be8a669203b265b0a578e82843 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 17ea9ab3f662320d4ac62d3a2b783b5054ad80bf + 0395649aa16820be8a669203b265b0a578e82843 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 17ea9ab3f662320d4ac62d3a2b783b5054ad80bf + 0395649aa16820be8a669203b265b0a578e82843 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 17ea9ab3f662320d4ac62d3a2b783b5054ad80bf + 0395649aa16820be8a669203b265b0a578e82843 https://github.com/dotnet/xdt @@ -363,14 +363,14 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 17ea9ab3f662320d4ac62d3a2b783b5054ad80bf + 0395649aa16820be8a669203b265b0a578e82843 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 17ea9ab3f662320d4ac62d3a2b783b5054ad80bf + 0395649aa16820be8a669203b265b0a578e82843 https://github.com/dotnet/winforms diff --git a/eng/Versions.props b/eng/Versions.props index 3c98e00d906e..f86f08817349 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -71,7 +71,7 @@ 8.0.0 8.0.0 8.0.0 - 8.0.0-rtm.23525.7 + 8.0.0-rtm.23530.12 8.0.0 8.0.0 8.0.0 @@ -92,7 +92,7 @@ 8.0.0 8.0.0 8.0.0 - 8.0.0-rtm.23525.7 + 8.0.0-rtm.23530.12 8.0.0 8.0.0 8.0.0 @@ -108,7 +108,7 @@ 8.0.0 8.0.0 8.0.0 - 8.0.0-rtm.23525.7 + 8.0.0-rtm.23530.12 8.0.0 8.0.0 8.0.0 @@ -128,9 +128,9 @@ 8.0.0 8.0.0 8.0.0 - 8.0.0-rtm.23525.7 + 8.0.0-rtm.23530.12 - 8.0.0-rtm.23525.7 + 8.0.0-rtm.23530.12 8.0.0 8.0.0 From 43bcd57ace2f427ecf80c816b0d8fa53ba322f44 Mon Sep 17 00:00:00 2001 From: DotNet-Bot Date: Tue, 31 Oct 2023 06:28:35 +0000 Subject: [PATCH 007/391] Update dependencies from https://dev.azure.com/dnceng/internal/_git/dotnet-efcore build 20231030.10 dotnet-ef , Microsoft.EntityFrameworkCore , Microsoft.EntityFrameworkCore.Design , Microsoft.EntityFrameworkCore.InMemory , Microsoft.EntityFrameworkCore.Relational , Microsoft.EntityFrameworkCore.Sqlite , Microsoft.EntityFrameworkCore.SqlServer , Microsoft.EntityFrameworkCore.Tools From Version 8.0.0 -> To Version 8.0.0 --- NuGet.config | 4 ++-- eng/Version.Details.xml | 16 ++++++++-------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/NuGet.config b/NuGet.config index 0b6fe8581fe4..b3ad9ab4a531 100644 --- a/NuGet.config +++ b/NuGet.config @@ -4,7 +4,7 @@ - + @@ -28,7 +28,7 @@ - + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 2625c87b1330..c5824f2325ab 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -11,35 +11,35 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - b776d0dfd8d49d135cd00f689d0dc8f2592d3ff0 + 5d2c7583571adb62adfb654af023abb11aeb134d https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - b776d0dfd8d49d135cd00f689d0dc8f2592d3ff0 + 5d2c7583571adb62adfb654af023abb11aeb134d https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - b776d0dfd8d49d135cd00f689d0dc8f2592d3ff0 + 5d2c7583571adb62adfb654af023abb11aeb134d https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - b776d0dfd8d49d135cd00f689d0dc8f2592d3ff0 + 5d2c7583571adb62adfb654af023abb11aeb134d https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - b776d0dfd8d49d135cd00f689d0dc8f2592d3ff0 + 5d2c7583571adb62adfb654af023abb11aeb134d https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - b776d0dfd8d49d135cd00f689d0dc8f2592d3ff0 + 5d2c7583571adb62adfb654af023abb11aeb134d https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - b776d0dfd8d49d135cd00f689d0dc8f2592d3ff0 + 5d2c7583571adb62adfb654af023abb11aeb134d https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - b776d0dfd8d49d135cd00f689d0dc8f2592d3ff0 + 5d2c7583571adb62adfb654af023abb11aeb134d https://dev.azure.com/dnceng/internal/_git/dotnet-runtime From 3caebba82d3b004ae75d582be5878f6459f36a82 Mon Sep 17 00:00:00 2001 From: DotNet Bot Date: Tue, 31 Oct 2023 22:04:45 +0000 Subject: [PATCH 008/391] Merged PR 34962: [internal/release/8.0] Update dependencies from dnceng/internal/dotnet-runtime This pull request updates the following dependencies [marker]: <> (Begin:83131e87-e80d-4d5b-f426-08dbd53b3319) ## From https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - **Subscription**: 83131e87-e80d-4d5b-f426-08dbd53b3319 - **Build**: 20231031.3 - **Date Produced**: October 31, 2023 9:19:19 PM UTC - **Commit**: 5535e31a712343a63f5d7d796cd874e563e5ac14 - **Branch**: refs/heads/internal/release/8.0 [DependencyUpdate]: <> (Begin) - **Updates**: - **Microsoft.Bcl.AsyncInterfaces**: [from 8.0.0 to 8.0.0][1] - **Microsoft.Bcl.TimeProvider**: [from 8.0.0 to 8.0.0][1] - **Microsoft.Extensions.Caching.Abstractions**: [from 8.0.0 to 8.0.0][1] - **Microsoft.Extensions.Caching.Memory**: [from 8.0.0 to 8.0.0][1] - **Microsoft.Extensions.Configuration**: [from 8.0.0 to 8.0.0][1] - **Microsoft.Extensions.Configuration.Abstractions**: [from 8.0.0 to 8.0.0][1] - **Microsoft.Extensions.Configuration.Binder**: [from 8.0.0 to 8.0.0][1] - **Microsoft.Extensions.Configuration.CommandLine**: [from 8.0.0 to 8.0.0][1] - **Microsoft.Extensions.Configuration.EnvironmentVariables**: [from 8.0.0 to 8.0.0][1] - **Microsoft.Extensions.Configuration.FileExtensions**: [from 8.0.0 to 8.0.0][1] - **Microsoft.Extensions.Configuration.Ini**: [from 8.0.0 to 8.0.0][1] - **Microsoft.Extensions.Configuration.Json**: [from 8.0.0 to 8.0.0][1] - **Microsoft.Extensions.Configuration.UserSecrets**: [from 8.0.0 to 8.0.0][1] - **Microsoft.Extensions.Configuration.Xml**: [from 8.0.0 to 8.0.0][1] - **Microsoft.Extensions.DependencyInjection**: [from 8.0.0 to 8.0.0][1] - **Microsoft.Extensions.DependencyInjection.Abstractions**: [from 8.0.0 to 8.0.0][1] - **Microsoft.Extensions.DependencyModel**: [from 8.0.0 to 8.0.0][1] - **Microsoft.Extensions.Diagnostics**: [from 8.0.0 to 8.0.0][1] - **Microsoft.Extensions.Diagnostics.Abstractions**: [from 8.0.0 to 8.0.0][1] - **Microsoft.Extensions.FileProviders.Abstractions**: [from 8.0.0 to 8.0.0][1] - **Microsoft.Extensions.FileProviders.Composite**: [from 8.0.0 to 8.0.0][1] - **Microsoft.Extensions.FileProviders.Physical**: [from 8.0.0 to 8.0.0][1] - **Microsoft.Extensions.FileSystemGlobbing**: [from 8.0.0 to 8.0.0][1] - **Microsoft.Extensions.HostFactoryResolver.Sources**: [from 8.0.0-rtm.23530.12 to 8.0.0-rtm.23531.3][1] - **Microsoft.Extensions.Hosting**: [from 8.0.0 to 8.0.0][1] - **Microsoft.Extensions.Hosting.Abstractions**: [from 8.0.0 to 8.0.0][1] - **Microsoft.Extensions.Http**: [from 8.0.0 to 8.0.0][1] - **Microsoft.Extensions.Logging**: [from 8.0.0 to 8.0.0][1] - **Microsoft.Extensions.Logging.Abstractions**: [from 8.0.0 to 8.0.0][1] - **Microsoft.Extensions.Logging.Configuration**: [from 8.0.0 to 8.0.0][1] - **Microsoft.Extensions.Logging.Console**: [from 8.0.0 to 8.0.0][1] - **Microsoft.Extensions.Logging.Debug**: [from 8.0.0 to 8.0.0][1] - **Microsoft.Extensions.Logging.EventLog**: [from 8.0.0 to 8.0.0][1] - **Micr... --- NuGet.config | 4 +- eng/Version.Details.xml | 152 ++++++++++++++++++++-------------------- eng/Versions.props | 10 +-- 3 files changed, 83 insertions(+), 83 deletions(-) diff --git a/NuGet.config b/NuGet.config index b3ad9ab4a531..4001b09b6657 100644 --- a/NuGet.config +++ b/NuGet.config @@ -7,7 +7,7 @@ - + @@ -31,7 +31,7 @@ - + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index c5824f2325ab..f890a2d98e90 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -43,151 +43,151 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 0395649aa16820be8a669203b265b0a578e82843 + 5535e31a712343a63f5d7d796cd874e563e5ac14 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 0395649aa16820be8a669203b265b0a578e82843 + 5535e31a712343a63f5d7d796cd874e563e5ac14 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 0395649aa16820be8a669203b265b0a578e82843 + 5535e31a712343a63f5d7d796cd874e563e5ac14 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 0395649aa16820be8a669203b265b0a578e82843 + 5535e31a712343a63f5d7d796cd874e563e5ac14 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 0395649aa16820be8a669203b265b0a578e82843 + 5535e31a712343a63f5d7d796cd874e563e5ac14 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 0395649aa16820be8a669203b265b0a578e82843 + 5535e31a712343a63f5d7d796cd874e563e5ac14 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 0395649aa16820be8a669203b265b0a578e82843 + 5535e31a712343a63f5d7d796cd874e563e5ac14 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 0395649aa16820be8a669203b265b0a578e82843 + 5535e31a712343a63f5d7d796cd874e563e5ac14 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 0395649aa16820be8a669203b265b0a578e82843 + 5535e31a712343a63f5d7d796cd874e563e5ac14 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 0395649aa16820be8a669203b265b0a578e82843 + 5535e31a712343a63f5d7d796cd874e563e5ac14 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 0395649aa16820be8a669203b265b0a578e82843 + 5535e31a712343a63f5d7d796cd874e563e5ac14 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 0395649aa16820be8a669203b265b0a578e82843 + 5535e31a712343a63f5d7d796cd874e563e5ac14 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 0395649aa16820be8a669203b265b0a578e82843 + 5535e31a712343a63f5d7d796cd874e563e5ac14 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 0395649aa16820be8a669203b265b0a578e82843 + 5535e31a712343a63f5d7d796cd874e563e5ac14 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 0395649aa16820be8a669203b265b0a578e82843 + 5535e31a712343a63f5d7d796cd874e563e5ac14 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 0395649aa16820be8a669203b265b0a578e82843 + 5535e31a712343a63f5d7d796cd874e563e5ac14 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 0395649aa16820be8a669203b265b0a578e82843 + 5535e31a712343a63f5d7d796cd874e563e5ac14 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 0395649aa16820be8a669203b265b0a578e82843 + 5535e31a712343a63f5d7d796cd874e563e5ac14 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 0395649aa16820be8a669203b265b0a578e82843 + 5535e31a712343a63f5d7d796cd874e563e5ac14 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 0395649aa16820be8a669203b265b0a578e82843 + 5535e31a712343a63f5d7d796cd874e563e5ac14 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 0395649aa16820be8a669203b265b0a578e82843 + 5535e31a712343a63f5d7d796cd874e563e5ac14 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 0395649aa16820be8a669203b265b0a578e82843 + 5535e31a712343a63f5d7d796cd874e563e5ac14 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 0395649aa16820be8a669203b265b0a578e82843 + 5535e31a712343a63f5d7d796cd874e563e5ac14 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 0395649aa16820be8a669203b265b0a578e82843 + 5535e31a712343a63f5d7d796cd874e563e5ac14 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 0395649aa16820be8a669203b265b0a578e82843 + 5535e31a712343a63f5d7d796cd874e563e5ac14 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 0395649aa16820be8a669203b265b0a578e82843 + 5535e31a712343a63f5d7d796cd874e563e5ac14 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 0395649aa16820be8a669203b265b0a578e82843 + 5535e31a712343a63f5d7d796cd874e563e5ac14 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 0395649aa16820be8a669203b265b0a578e82843 + 5535e31a712343a63f5d7d796cd874e563e5ac14 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 0395649aa16820be8a669203b265b0a578e82843 + 5535e31a712343a63f5d7d796cd874e563e5ac14 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 0395649aa16820be8a669203b265b0a578e82843 + 5535e31a712343a63f5d7d796cd874e563e5ac14 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 0395649aa16820be8a669203b265b0a578e82843 + 5535e31a712343a63f5d7d796cd874e563e5ac14 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 0395649aa16820be8a669203b265b0a578e82843 + 5535e31a712343a63f5d7d796cd874e563e5ac14 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 0395649aa16820be8a669203b265b0a578e82843 + 5535e31a712343a63f5d7d796cd874e563e5ac14 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 0395649aa16820be8a669203b265b0a578e82843 + 5535e31a712343a63f5d7d796cd874e563e5ac14 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 0395649aa16820be8a669203b265b0a578e82843 + 5535e31a712343a63f5d7d796cd874e563e5ac14 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 0395649aa16820be8a669203b265b0a578e82843 + 5535e31a712343a63f5d7d796cd874e563e5ac14 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 0395649aa16820be8a669203b265b0a578e82843 + 5535e31a712343a63f5d7d796cd874e563e5ac14 https://github.com/dotnet/source-build-externals @@ -201,116 +201,116 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 0395649aa16820be8a669203b265b0a578e82843 + 5535e31a712343a63f5d7d796cd874e563e5ac14 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 0395649aa16820be8a669203b265b0a578e82843 + 5535e31a712343a63f5d7d796cd874e563e5ac14 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 0395649aa16820be8a669203b265b0a578e82843 + 5535e31a712343a63f5d7d796cd874e563e5ac14 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 0395649aa16820be8a669203b265b0a578e82843 + 5535e31a712343a63f5d7d796cd874e563e5ac14 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 0395649aa16820be8a669203b265b0a578e82843 + 5535e31a712343a63f5d7d796cd874e563e5ac14 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 0395649aa16820be8a669203b265b0a578e82843 + 5535e31a712343a63f5d7d796cd874e563e5ac14 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 0395649aa16820be8a669203b265b0a578e82843 + 5535e31a712343a63f5d7d796cd874e563e5ac14 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 0395649aa16820be8a669203b265b0a578e82843 + 5535e31a712343a63f5d7d796cd874e563e5ac14 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 0395649aa16820be8a669203b265b0a578e82843 + 5535e31a712343a63f5d7d796cd874e563e5ac14 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 0395649aa16820be8a669203b265b0a578e82843 + 5535e31a712343a63f5d7d796cd874e563e5ac14 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 0395649aa16820be8a669203b265b0a578e82843 + 5535e31a712343a63f5d7d796cd874e563e5ac14 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 0395649aa16820be8a669203b265b0a578e82843 + 5535e31a712343a63f5d7d796cd874e563e5ac14 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 0395649aa16820be8a669203b265b0a578e82843 + 5535e31a712343a63f5d7d796cd874e563e5ac14 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 0395649aa16820be8a669203b265b0a578e82843 + 5535e31a712343a63f5d7d796cd874e563e5ac14 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 0395649aa16820be8a669203b265b0a578e82843 + 5535e31a712343a63f5d7d796cd874e563e5ac14 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 0395649aa16820be8a669203b265b0a578e82843 + 5535e31a712343a63f5d7d796cd874e563e5ac14 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 0395649aa16820be8a669203b265b0a578e82843 + 5535e31a712343a63f5d7d796cd874e563e5ac14 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 0395649aa16820be8a669203b265b0a578e82843 + 5535e31a712343a63f5d7d796cd874e563e5ac14 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 0395649aa16820be8a669203b265b0a578e82843 + 5535e31a712343a63f5d7d796cd874e563e5ac14 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 0395649aa16820be8a669203b265b0a578e82843 + 5535e31a712343a63f5d7d796cd874e563e5ac14 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 0395649aa16820be8a669203b265b0a578e82843 + 5535e31a712343a63f5d7d796cd874e563e5ac14 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 0395649aa16820be8a669203b265b0a578e82843 + 5535e31a712343a63f5d7d796cd874e563e5ac14 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 0395649aa16820be8a669203b265b0a578e82843 + 5535e31a712343a63f5d7d796cd874e563e5ac14 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 0395649aa16820be8a669203b265b0a578e82843 + 5535e31a712343a63f5d7d796cd874e563e5ac14 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 0395649aa16820be8a669203b265b0a578e82843 + 5535e31a712343a63f5d7d796cd874e563e5ac14 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 0395649aa16820be8a669203b265b0a578e82843 + 5535e31a712343a63f5d7d796cd874e563e5ac14 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 0395649aa16820be8a669203b265b0a578e82843 + 5535e31a712343a63f5d7d796cd874e563e5ac14 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 0395649aa16820be8a669203b265b0a578e82843 + 5535e31a712343a63f5d7d796cd874e563e5ac14 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 0395649aa16820be8a669203b265b0a578e82843 + 5535e31a712343a63f5d7d796cd874e563e5ac14 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 0395649aa16820be8a669203b265b0a578e82843 + 5535e31a712343a63f5d7d796cd874e563e5ac14 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 0395649aa16820be8a669203b265b0a578e82843 + 5535e31a712343a63f5d7d796cd874e563e5ac14 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 0395649aa16820be8a669203b265b0a578e82843 + 5535e31a712343a63f5d7d796cd874e563e5ac14 https://github.com/dotnet/xdt @@ -363,14 +363,14 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 0395649aa16820be8a669203b265b0a578e82843 + 5535e31a712343a63f5d7d796cd874e563e5ac14 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 0395649aa16820be8a669203b265b0a578e82843 + 5535e31a712343a63f5d7d796cd874e563e5ac14 https://github.com/dotnet/winforms diff --git a/eng/Versions.props b/eng/Versions.props index cb79cb2a3082..9e5b510ed512 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -71,7 +71,7 @@ 8.0.0 8.0.0 8.0.0 - 8.0.0-rtm.23530.12 + 8.0.0-rtm.23531.3 8.0.0 8.0.0 8.0.0 @@ -92,7 +92,7 @@ 8.0.0 8.0.0 8.0.0 - 8.0.0-rtm.23530.12 + 8.0.0-rtm.23531.3 8.0.0 8.0.0 8.0.0 @@ -108,7 +108,7 @@ 8.0.0 8.0.0 8.0.0 - 8.0.0-rtm.23530.12 + 8.0.0-rtm.23531.3 8.0.0 8.0.0 8.0.0 @@ -128,9 +128,9 @@ 8.0.0 8.0.0 8.0.0 - 8.0.0-rtm.23530.12 + 8.0.0-rtm.23531.3 - 8.0.0-rtm.23530.12 + 8.0.0-rtm.23531.3 8.0.0 8.0.0 From 3f1acb59718cadf111a0a796681e3d3509bb3381 Mon Sep 17 00:00:00 2001 From: DotNet Bot Date: Tue, 31 Oct 2023 23:36:13 +0000 Subject: [PATCH 009/391] Merged PR 34970: [internal/release/8.0] Update dependencies from dnceng/internal/dotnet-efcore This pull request updates the following dependencies [marker]: <> (Begin:e179a2a7-bc5d-4498-2467-08dbd53ba9ce) ## From https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - **Subscription**: e179a2a7-bc5d-4498-2467-08dbd53ba9ce - **Build**: 20231031.3 - **Date Produced**: October 31, 2023 10:55:07 PM UTC - **Commit**: e017dc125bef2f604f85befd8ff27544a5a67c38 - **Branch**: refs/heads/internal/release/8.0 [DependencyUpdate]: <> (Begin) - **Updates**: - **dotnet-ef**: [from 8.0.0 to 8.0.0][1] - **Microsoft.EntityFrameworkCore**: [from 8.0.0 to 8.0.0][1] - **Microsoft.EntityFrameworkCore.Design**: [from 8.0.0 to 8.0.0][1] - **Microsoft.EntityFrameworkCore.InMemory**: [from 8.0.0 to 8.0.0][1] - **Microsoft.EntityFrameworkCore.Relational**: [from 8.0.0 to 8.0.0][1] - **Microsoft.EntityFrameworkCore.Sqlite**: [from 8.0.0 to 8.0.0][1] - **Microsoft.EntityFrameworkCore.SqlServer**: [from 8.0.0 to 8.0.0][1] - **Microsoft.EntityFrameworkCore.Tools**: [from 8.0.0 to 8.0.0][1] [1]: https://dev.azure.com/dnceng/internal/_git/dotnet-efcore/branches?baseVersion=GC5d2c758357&targetVersion=GCe017dc125b&_a=files [DependencyUpdate]: <> (End) [marker]: <> (End:e179a2a7-bc5d-4498-2467-08dbd53ba9ce) --- NuGet.config | 4 ++-- eng/Version.Details.xml | 16 ++++++++-------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/NuGet.config b/NuGet.config index 4001b09b6657..4307c56c99b5 100644 --- a/NuGet.config +++ b/NuGet.config @@ -4,7 +4,7 @@ - + @@ -28,7 +28,7 @@ - + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index f890a2d98e90..c334aba26759 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -11,35 +11,35 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 5d2c7583571adb62adfb654af023abb11aeb134d + e017dc125bef2f604f85befd8ff27544a5a67c38 https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 5d2c7583571adb62adfb654af023abb11aeb134d + e017dc125bef2f604f85befd8ff27544a5a67c38 https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 5d2c7583571adb62adfb654af023abb11aeb134d + e017dc125bef2f604f85befd8ff27544a5a67c38 https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 5d2c7583571adb62adfb654af023abb11aeb134d + e017dc125bef2f604f85befd8ff27544a5a67c38 https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 5d2c7583571adb62adfb654af023abb11aeb134d + e017dc125bef2f604f85befd8ff27544a5a67c38 https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 5d2c7583571adb62adfb654af023abb11aeb134d + e017dc125bef2f604f85befd8ff27544a5a67c38 https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 5d2c7583571adb62adfb654af023abb11aeb134d + e017dc125bef2f604f85befd8ff27544a5a67c38 https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 5d2c7583571adb62adfb654af023abb11aeb134d + e017dc125bef2f604f85befd8ff27544a5a67c38 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime From b7761c43bcb1a242f872dc994d7ea570a47f159e Mon Sep 17 00:00:00 2001 From: vseanreesermsft <78103370+vseanreesermsft@users.noreply.github.com> Date: Wed, 8 Nov 2023 15:58:24 -0800 Subject: [PATCH 010/391] Update branding to 8.0.1 (#51918) * Update branding to 8.0.1 * Update Versions.props * Update PackageOverrides.txt * Update PlatformManifest.txt * Update PlatformManifest.txt --------- Co-authored-by: William Godbe --- eng/PackageOverrides.txt | 271 +++++++++++++++++++------------------- eng/PlatformManifest.txt | 277 ++++++++++++++++++++------------------- eng/Versions.props | 8 +- 3 files changed, 283 insertions(+), 273 deletions(-) diff --git a/eng/PackageOverrides.txt b/eng/PackageOverrides.txt index 73fcb5d8f8e2..c775d67fd627 100644 --- a/eng/PackageOverrides.txt +++ b/eng/PackageOverrides.txt @@ -1,133 +1,138 @@ -Microsoft.Extensions.Caching.Abstractions|7.0.0 -Microsoft.Extensions.Caching.Memory|7.0.0 -Microsoft.Extensions.Configuration.Abstractions|7.0.0 -Microsoft.Extensions.Configuration.Binder|7.0.0 -Microsoft.Extensions.Configuration.CommandLine|7.0.0 -Microsoft.Extensions.Configuration|7.0.0 -Microsoft.Extensions.Configuration.EnvironmentVariables|7.0.0 -Microsoft.Extensions.Configuration.FileExtensions|7.0.0 -Microsoft.Extensions.Configuration.Ini|7.0.0 -Microsoft.Extensions.Configuration.Json|7.0.0 -Microsoft.Extensions.Configuration.UserSecrets|7.0.0 -Microsoft.Extensions.Configuration.Xml|7.0.0 -Microsoft.Extensions.DependencyInjection.Abstractions|7.0.0 -Microsoft.Extensions.DependencyInjection|7.0.0 -Microsoft.Extensions.FileProviders.Abstractions|7.0.0 -Microsoft.Extensions.FileProviders.Composite|7.0.0 -Microsoft.Extensions.FileProviders.Physical|7.0.0 -Microsoft.Extensions.FileSystemGlobbing|7.0.0 -Microsoft.Extensions.Hosting.Abstractions|7.0.0 -Microsoft.Extensions.Hosting|7.0.0 -Microsoft.Extensions.Http|7.0.0 -Microsoft.Extensions.Logging.Abstractions|7.0.0 -Microsoft.Extensions.Logging.Configuration|7.0.0 -Microsoft.Extensions.Logging.Console|7.0.0 -Microsoft.Extensions.Logging.Debug|7.0.0 -Microsoft.Extensions.Logging|7.0.0 -Microsoft.Extensions.Logging.EventLog|7.0.0 -Microsoft.Extensions.Logging.EventSource|7.0.0 -Microsoft.Extensions.Logging.TraceSource|7.0.0 -Microsoft.Extensions.Options.ConfigurationExtensions|7.0.0 -Microsoft.Extensions.Options.DataAnnotations|7.0.0 -Microsoft.Extensions.Options|7.0.0 -Microsoft.Extensions.Primitives|7.0.0 -System.Diagnostics.EventLog|7.0.0 -System.IO.Pipelines|7.0.0 -System.Security.Cryptography.Xml|7.0.0 -System.Threading.RateLimiting|7.0.0 -Microsoft.AspNetCore.Antiforgery|7.0.0 -Microsoft.AspNetCore.Authentication.Abstractions|7.0.0 -Microsoft.AspNetCore.Authentication.Cookies|7.0.0 -Microsoft.AspNetCore.Authentication.Core|7.0.0 -Microsoft.AspNetCore.Authentication|7.0.0 -Microsoft.AspNetCore.Authentication.OAuth|7.0.0 -Microsoft.AspNetCore.Authorization|7.0.0 -Microsoft.AspNetCore.Authorization.Policy|7.0.0 -Microsoft.AspNetCore.Components.Authorization|7.0.0 -Microsoft.AspNetCore.Components|7.0.0 -Microsoft.AspNetCore.Components.Forms|7.0.0 -Microsoft.AspNetCore.Components.Server|7.0.0 -Microsoft.AspNetCore.Components.Web|7.0.0 -Microsoft.AspNetCore.Connections.Abstractions|7.0.0 -Microsoft.AspNetCore.CookiePolicy|7.0.0 -Microsoft.AspNetCore.Cors|7.0.0 -Microsoft.AspNetCore.Cryptography.Internal|7.0.0 -Microsoft.AspNetCore.Cryptography.KeyDerivation|7.0.0 -Microsoft.AspNetCore.DataProtection.Abstractions|7.0.0 -Microsoft.AspNetCore.DataProtection|7.0.0 -Microsoft.AspNetCore.DataProtection.Extensions|7.0.0 -Microsoft.AspNetCore.Diagnostics.Abstractions|7.0.0 -Microsoft.AspNetCore.Diagnostics|7.0.0 -Microsoft.AspNetCore.Diagnostics.HealthChecks|7.0.0 -Microsoft.AspNetCore|7.0.0 -Microsoft.AspNetCore.HostFiltering|7.0.0 -Microsoft.AspNetCore.Hosting.Abstractions|7.0.0 -Microsoft.AspNetCore.Hosting|7.0.0 -Microsoft.AspNetCore.Hosting.Server.Abstractions|7.0.0 -Microsoft.AspNetCore.Html.Abstractions|7.0.0 -Microsoft.AspNetCore.Http.Abstractions|7.0.0 -Microsoft.AspNetCore.Http.Connections.Common|7.0.0 -Microsoft.AspNetCore.Http.Connections|7.0.0 -Microsoft.AspNetCore.Http|7.0.0 -Microsoft.AspNetCore.Http.Extensions|7.0.0 -Microsoft.AspNetCore.Http.Features|7.0.0 -Microsoft.AspNetCore.Http.Results|7.0.0 -Microsoft.AspNetCore.HttpLogging|7.0.0 -Microsoft.AspNetCore.HttpOverrides|7.0.0 -Microsoft.AspNetCore.HttpsPolicy|7.0.0 -Microsoft.AspNetCore.Identity|7.0.0 -Microsoft.AspNetCore.Localization|7.0.0 -Microsoft.AspNetCore.Localization.Routing|7.0.0 -Microsoft.AspNetCore.Metadata|7.0.0 -Microsoft.AspNetCore.Mvc.Abstractions|7.0.0 -Microsoft.AspNetCore.Mvc.ApiExplorer|7.0.0 -Microsoft.AspNetCore.Mvc.Core|7.0.0 -Microsoft.AspNetCore.Mvc.Cors|7.0.0 -Microsoft.AspNetCore.Mvc.DataAnnotations|7.0.0 -Microsoft.AspNetCore.Mvc|7.0.0 -Microsoft.AspNetCore.Mvc.Formatters.Json|7.0.0 -Microsoft.AspNetCore.Mvc.Formatters.Xml|7.0.0 -Microsoft.AspNetCore.Mvc.Localization|7.0.0 -Microsoft.AspNetCore.Mvc.Razor|7.0.0 -Microsoft.AspNetCore.Mvc.RazorPages|7.0.0 -Microsoft.AspNetCore.Mvc.TagHelpers|7.0.0 -Microsoft.AspNetCore.Mvc.ViewFeatures|7.0.0 -Microsoft.AspNetCore.OutputCaching|7.0.0 -Microsoft.AspNetCore.RateLimiting|7.0.0 -Microsoft.AspNetCore.Razor|7.0.0 -Microsoft.AspNetCore.Razor.Runtime|7.0.0 -Microsoft.AspNetCore.RequestDecompression|7.0.0 -Microsoft.AspNetCore.ResponseCaching.Abstractions|7.0.0 -Microsoft.AspNetCore.ResponseCaching|7.0.0 -Microsoft.AspNetCore.ResponseCompression|7.0.0 -Microsoft.AspNetCore.Rewrite|7.0.0 -Microsoft.AspNetCore.Routing.Abstractions|7.0.0 -Microsoft.AspNetCore.Routing|7.0.0 -Microsoft.AspNetCore.Server.HttpSys|7.0.0 -Microsoft.AspNetCore.Server.IIS|7.0.0 -Microsoft.AspNetCore.Server.IISIntegration|7.0.0 -Microsoft.AspNetCore.Server.Kestrel.Core|7.0.0 -Microsoft.AspNetCore.Server.Kestrel|7.0.0 -Microsoft.AspNetCore.Server.Kestrel.Transport.Quic|7.0.0 -Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets|7.0.0 -Microsoft.AspNetCore.Session|7.0.0 -Microsoft.AspNetCore.SignalR.Common|7.0.0 -Microsoft.AspNetCore.SignalR.Core|7.0.0 -Microsoft.AspNetCore.SignalR|7.0.0 -Microsoft.AspNetCore.SignalR.Protocols.Json|7.0.0 -Microsoft.AspNetCore.StaticFiles|7.0.0 -Microsoft.AspNetCore.WebSockets|7.0.0 -Microsoft.AspNetCore.WebUtilities|7.0.0 -Microsoft.Extensions.Configuration.KeyPerFile|7.0.0 -Microsoft.Extensions.Diagnostics.HealthChecks.Abstractions|7.0.0 -Microsoft.Extensions.Diagnostics.HealthChecks|7.0.0 -Microsoft.Extensions.Features|7.0.0 -Microsoft.Extensions.FileProviders.Embedded|7.0.0 -Microsoft.Extensions.Identity.Core|7.0.0 -Microsoft.Extensions.Identity.Stores|7.0.0 -Microsoft.Extensions.Localization.Abstractions|7.0.0 -Microsoft.Extensions.Localization|7.0.0 -Microsoft.Extensions.ObjectPool|7.0.0 -Microsoft.Extensions.WebEncoders|7.0.0 -Microsoft.JSInterop|7.0.0 -Microsoft.Net.Http.Headers|7.0.0 +Microsoft.Extensions.Caching.Abstractions|8.0.0 +Microsoft.Extensions.Caching.Memory|8.0.0 +Microsoft.Extensions.Configuration.Abstractions|8.0.0 +Microsoft.Extensions.Configuration.Binder|8.0.0 +Microsoft.Extensions.Configuration.CommandLine|8.0.0 +Microsoft.Extensions.Configuration|8.0.0 +Microsoft.Extensions.Configuration.EnvironmentVariables|8.0.0 +Microsoft.Extensions.Configuration.FileExtensions|8.0.0 +Microsoft.Extensions.Configuration.Ini|8.0.0 +Microsoft.Extensions.Configuration.Json|8.0.0 +Microsoft.Extensions.Configuration.UserSecrets|8.0.0 +Microsoft.Extensions.Configuration.Xml|8.0.0 +Microsoft.Extensions.DependencyInjection.Abstractions|8.0.0 +Microsoft.Extensions.DependencyInjection|8.0.0 +Microsoft.Extensions.Diagnostics.Abstractions|8.0.0 +Microsoft.Extensions.Diagnostics|8.0.0 +Microsoft.Extensions.FileProviders.Abstractions|8.0.0 +Microsoft.Extensions.FileProviders.Composite|8.0.0 +Microsoft.Extensions.FileProviders.Physical|8.0.0 +Microsoft.Extensions.FileSystemGlobbing|8.0.0 +Microsoft.Extensions.Hosting.Abstractions|8.0.0 +Microsoft.Extensions.Hosting|8.0.0 +Microsoft.Extensions.Http|8.0.0 +Microsoft.Extensions.Logging.Abstractions|8.0.0 +Microsoft.Extensions.Logging.Configuration|8.0.0 +Microsoft.Extensions.Logging.Console|8.0.0 +Microsoft.Extensions.Logging.Debug|8.0.0 +Microsoft.Extensions.Logging|8.0.0 +Microsoft.Extensions.Logging.EventLog|8.0.0 +Microsoft.Extensions.Logging.EventSource|8.0.0 +Microsoft.Extensions.Logging.TraceSource|8.0.0 +Microsoft.Extensions.Options.ConfigurationExtensions|8.0.0 +Microsoft.Extensions.Options.DataAnnotations|8.0.0 +Microsoft.Extensions.Options|8.0.0 +Microsoft.Extensions.Primitives|8.0.0 +System.Diagnostics.EventLog|8.0.0 +System.IO.Pipelines|8.0.0 +System.Security.Cryptography.Xml|8.0.0 +System.Threading.RateLimiting|8.0.0 +Microsoft.AspNetCore.Antiforgery|8.0.0 +Microsoft.AspNetCore.Authentication.Abstractions|8.0.0 +Microsoft.AspNetCore.Authentication.BearerToken|8.0.0 +Microsoft.AspNetCore.Authentication.Cookies|8.0.0 +Microsoft.AspNetCore.Authentication.Core|8.0.0 +Microsoft.AspNetCore.Authentication|8.0.0 +Microsoft.AspNetCore.Authentication.OAuth|8.0.0 +Microsoft.AspNetCore.Authorization|8.0.0 +Microsoft.AspNetCore.Authorization.Policy|8.0.0 +Microsoft.AspNetCore.Components.Authorization|8.0.0 +Microsoft.AspNetCore.Components|8.0.0 +Microsoft.AspNetCore.Components.Endpoints|8.0.0 +Microsoft.AspNetCore.Components.Forms|8.0.0 +Microsoft.AspNetCore.Components.Server|8.0.0 +Microsoft.AspNetCore.Components.Web|8.0.0 +Microsoft.AspNetCore.Connections.Abstractions|8.0.0 +Microsoft.AspNetCore.CookiePolicy|8.0.0 +Microsoft.AspNetCore.Cors|8.0.0 +Microsoft.AspNetCore.Cryptography.Internal|8.0.0 +Microsoft.AspNetCore.Cryptography.KeyDerivation|8.0.0 +Microsoft.AspNetCore.DataProtection.Abstractions|8.0.0 +Microsoft.AspNetCore.DataProtection|8.0.0 +Microsoft.AspNetCore.DataProtection.Extensions|8.0.0 +Microsoft.AspNetCore.Diagnostics.Abstractions|8.0.0 +Microsoft.AspNetCore.Diagnostics|8.0.0 +Microsoft.AspNetCore.Diagnostics.HealthChecks|8.0.0 +Microsoft.AspNetCore|8.0.0 +Microsoft.AspNetCore.HostFiltering|8.0.0 +Microsoft.AspNetCore.Hosting.Abstractions|8.0.0 +Microsoft.AspNetCore.Hosting|8.0.0 +Microsoft.AspNetCore.Hosting.Server.Abstractions|8.0.0 +Microsoft.AspNetCore.Html.Abstractions|8.0.0 +Microsoft.AspNetCore.Http.Abstractions|8.0.0 +Microsoft.AspNetCore.Http.Connections.Common|8.0.0 +Microsoft.AspNetCore.Http.Connections|8.0.0 +Microsoft.AspNetCore.Http|8.0.0 +Microsoft.AspNetCore.Http.Extensions|8.0.0 +Microsoft.AspNetCore.Http.Features|8.0.0 +Microsoft.AspNetCore.Http.Results|8.0.0 +Microsoft.AspNetCore.HttpLogging|8.0.0 +Microsoft.AspNetCore.HttpOverrides|8.0.0 +Microsoft.AspNetCore.HttpsPolicy|8.0.0 +Microsoft.AspNetCore.Identity|8.0.0 +Microsoft.AspNetCore.Localization|8.0.0 +Microsoft.AspNetCore.Localization.Routing|8.0.0 +Microsoft.AspNetCore.Metadata|8.0.0 +Microsoft.AspNetCore.Mvc.Abstractions|8.0.0 +Microsoft.AspNetCore.Mvc.ApiExplorer|8.0.0 +Microsoft.AspNetCore.Mvc.Core|8.0.0 +Microsoft.AspNetCore.Mvc.Cors|8.0.0 +Microsoft.AspNetCore.Mvc.DataAnnotations|8.0.0 +Microsoft.AspNetCore.Mvc|8.0.0 +Microsoft.AspNetCore.Mvc.Formatters.Json|8.0.0 +Microsoft.AspNetCore.Mvc.Formatters.Xml|8.0.0 +Microsoft.AspNetCore.Mvc.Localization|8.0.0 +Microsoft.AspNetCore.Mvc.Razor|8.0.0 +Microsoft.AspNetCore.Mvc.RazorPages|8.0.0 +Microsoft.AspNetCore.Mvc.TagHelpers|8.0.0 +Microsoft.AspNetCore.Mvc.ViewFeatures|8.0.0 +Microsoft.AspNetCore.OutputCaching|8.0.0 +Microsoft.AspNetCore.RateLimiting|8.0.0 +Microsoft.AspNetCore.Razor|8.0.0 +Microsoft.AspNetCore.Razor.Runtime|8.0.0 +Microsoft.AspNetCore.RequestDecompression|8.0.0 +Microsoft.AspNetCore.ResponseCaching.Abstractions|8.0.0 +Microsoft.AspNetCore.ResponseCaching|8.0.0 +Microsoft.AspNetCore.ResponseCompression|8.0.0 +Microsoft.AspNetCore.Rewrite|8.0.0 +Microsoft.AspNetCore.Routing.Abstractions|8.0.0 +Microsoft.AspNetCore.Routing|8.0.0 +Microsoft.AspNetCore.Server.HttpSys|8.0.0 +Microsoft.AspNetCore.Server.IIS|8.0.0 +Microsoft.AspNetCore.Server.IISIntegration|8.0.0 +Microsoft.AspNetCore.Server.Kestrel.Core|8.0.0 +Microsoft.AspNetCore.Server.Kestrel|8.0.0 +Microsoft.AspNetCore.Server.Kestrel.Transport.NamedPipes|8.0.0 +Microsoft.AspNetCore.Server.Kestrel.Transport.Quic|8.0.0 +Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets|8.0.0 +Microsoft.AspNetCore.Session|8.0.0 +Microsoft.AspNetCore.SignalR.Common|8.0.0 +Microsoft.AspNetCore.SignalR.Core|8.0.0 +Microsoft.AspNetCore.SignalR|8.0.0 +Microsoft.AspNetCore.SignalR.Protocols.Json|8.0.0 +Microsoft.AspNetCore.StaticFiles|8.0.0 +Microsoft.AspNetCore.WebSockets|8.0.0 +Microsoft.AspNetCore.WebUtilities|8.0.0 +Microsoft.Extensions.Configuration.KeyPerFile|8.0.0 +Microsoft.Extensions.Diagnostics.HealthChecks.Abstractions|8.0.0 +Microsoft.Extensions.Diagnostics.HealthChecks|8.0.0 +Microsoft.Extensions.Features|8.0.0 +Microsoft.Extensions.FileProviders.Embedded|8.0.0 +Microsoft.Extensions.Identity.Core|8.0.0 +Microsoft.Extensions.Identity.Stores|8.0.0 +Microsoft.Extensions.Localization.Abstractions|8.0.0 +Microsoft.Extensions.Localization|8.0.0 +Microsoft.Extensions.ObjectPool|8.0.0 +Microsoft.Extensions.WebEncoders|8.0.0 +Microsoft.JSInterop|8.0.0 +Microsoft.Net.Http.Headers|8.0.0 diff --git a/eng/PlatformManifest.txt b/eng/PlatformManifest.txt index a527f554d3e2..29153e1bface 100644 --- a/eng/PlatformManifest.txt +++ b/eng/PlatformManifest.txt @@ -1,136 +1,141 @@ -aspnetcorev2_inprocess.dll|Microsoft.AspNetCore.App.Ref||17.0.22292.0 -Microsoft.AspNetCore.Antiforgery.dll|Microsoft.AspNetCore.App.Ref|7.0.0.0|7.0.22.51819 -Microsoft.AspNetCore.Authentication.Abstractions.dll|Microsoft.AspNetCore.App.Ref|7.0.0.0|7.0.22.51819 -Microsoft.AspNetCore.Authentication.Cookies.dll|Microsoft.AspNetCore.App.Ref|7.0.0.0|7.0.22.51819 -Microsoft.AspNetCore.Authentication.Core.dll|Microsoft.AspNetCore.App.Ref|7.0.0.0|7.0.22.51819 -Microsoft.AspNetCore.Authentication.dll|Microsoft.AspNetCore.App.Ref|7.0.0.0|7.0.22.51819 -Microsoft.AspNetCore.Authentication.OAuth.dll|Microsoft.AspNetCore.App.Ref|7.0.0.0|7.0.22.51819 -Microsoft.AspNetCore.Authorization.dll|Microsoft.AspNetCore.App.Ref|7.0.0.0|7.0.22.51819 -Microsoft.AspNetCore.Authorization.Policy.dll|Microsoft.AspNetCore.App.Ref|7.0.0.0|7.0.22.51819 -Microsoft.AspNetCore.Components.Authorization.dll|Microsoft.AspNetCore.App.Ref|7.0.0.0|7.0.22.51819 -Microsoft.AspNetCore.Components.dll|Microsoft.AspNetCore.App.Ref|7.0.0.0|7.0.22.51819 -Microsoft.AspNetCore.Components.Forms.dll|Microsoft.AspNetCore.App.Ref|7.0.0.0|7.0.22.51819 -Microsoft.AspNetCore.Components.Server.dll|Microsoft.AspNetCore.App.Ref|7.0.0.0|7.0.22.51819 -Microsoft.AspNetCore.Components.Web.dll|Microsoft.AspNetCore.App.Ref|7.0.0.0|7.0.22.51819 -Microsoft.AspNetCore.Connections.Abstractions.dll|Microsoft.AspNetCore.App.Ref|7.0.0.0|7.0.22.51819 -Microsoft.AspNetCore.CookiePolicy.dll|Microsoft.AspNetCore.App.Ref|7.0.0.0|7.0.22.51819 -Microsoft.AspNetCore.Cors.dll|Microsoft.AspNetCore.App.Ref|7.0.0.0|7.0.22.51819 -Microsoft.AspNetCore.Cryptography.Internal.dll|Microsoft.AspNetCore.App.Ref|7.0.0.0|7.0.22.51819 -Microsoft.AspNetCore.Cryptography.KeyDerivation.dll|Microsoft.AspNetCore.App.Ref|7.0.0.0|7.0.22.51819 -Microsoft.AspNetCore.DataProtection.Abstractions.dll|Microsoft.AspNetCore.App.Ref|7.0.0.0|7.0.22.51819 -Microsoft.AspNetCore.DataProtection.dll|Microsoft.AspNetCore.App.Ref|7.0.0.0|7.0.22.51819 -Microsoft.AspNetCore.DataProtection.Extensions.dll|Microsoft.AspNetCore.App.Ref|7.0.0.0|7.0.22.51819 -Microsoft.AspNetCore.Diagnostics.Abstractions.dll|Microsoft.AspNetCore.App.Ref|7.0.0.0|7.0.22.51819 -Microsoft.AspNetCore.Diagnostics.dll|Microsoft.AspNetCore.App.Ref|7.0.0.0|7.0.22.51819 -Microsoft.AspNetCore.Diagnostics.HealthChecks.dll|Microsoft.AspNetCore.App.Ref|7.0.0.0|7.0.22.51819 -Microsoft.AspNetCore.dll|Microsoft.AspNetCore.App.Ref|7.0.0.0|7.0.22.51819 -Microsoft.AspNetCore.HostFiltering.dll|Microsoft.AspNetCore.App.Ref|7.0.0.0|7.0.22.51819 -Microsoft.AspNetCore.Hosting.Abstractions.dll|Microsoft.AspNetCore.App.Ref|7.0.0.0|7.0.22.51819 -Microsoft.AspNetCore.Hosting.dll|Microsoft.AspNetCore.App.Ref|7.0.0.0|7.0.22.51819 -Microsoft.AspNetCore.Hosting.Server.Abstractions.dll|Microsoft.AspNetCore.App.Ref|7.0.0.0|7.0.22.51819 -Microsoft.AspNetCore.Html.Abstractions.dll|Microsoft.AspNetCore.App.Ref|7.0.0.0|7.0.22.51819 -Microsoft.AspNetCore.Http.Abstractions.dll|Microsoft.AspNetCore.App.Ref|7.0.0.0|7.0.22.51819 -Microsoft.AspNetCore.Http.Connections.Common.dll|Microsoft.AspNetCore.App.Ref|7.0.0.0|7.0.22.51819 -Microsoft.AspNetCore.Http.Connections.dll|Microsoft.AspNetCore.App.Ref|7.0.0.0|7.0.22.51819 -Microsoft.AspNetCore.Http.dll|Microsoft.AspNetCore.App.Ref|7.0.0.0|7.0.22.51819 -Microsoft.AspNetCore.Http.Extensions.dll|Microsoft.AspNetCore.App.Ref|7.0.0.0|7.0.22.51819 -Microsoft.AspNetCore.Http.Features.dll|Microsoft.AspNetCore.App.Ref|7.0.0.0|7.0.22.51819 -Microsoft.AspNetCore.Http.Results.dll|Microsoft.AspNetCore.App.Ref|7.0.0.0|7.0.22.51819 -Microsoft.AspNetCore.HttpLogging.dll|Microsoft.AspNetCore.App.Ref|7.0.0.0|7.0.22.51819 -Microsoft.AspNetCore.HttpOverrides.dll|Microsoft.AspNetCore.App.Ref|7.0.0.0|7.0.22.51819 -Microsoft.AspNetCore.HttpsPolicy.dll|Microsoft.AspNetCore.App.Ref|7.0.0.0|7.0.22.51819 -Microsoft.AspNetCore.Identity.dll|Microsoft.AspNetCore.App.Ref|7.0.0.0|7.0.22.51819 -Microsoft.AspNetCore.Localization.dll|Microsoft.AspNetCore.App.Ref|7.0.0.0|7.0.22.51819 -Microsoft.AspNetCore.Localization.Routing.dll|Microsoft.AspNetCore.App.Ref|7.0.0.0|7.0.22.51819 -Microsoft.AspNetCore.Metadata.dll|Microsoft.AspNetCore.App.Ref|7.0.0.0|7.0.22.51819 -Microsoft.AspNetCore.Mvc.Abstractions.dll|Microsoft.AspNetCore.App.Ref|7.0.0.0|7.0.22.51819 -Microsoft.AspNetCore.Mvc.ApiExplorer.dll|Microsoft.AspNetCore.App.Ref|7.0.0.0|7.0.22.51819 -Microsoft.AspNetCore.Mvc.Core.dll|Microsoft.AspNetCore.App.Ref|7.0.0.0|7.0.22.51819 -Microsoft.AspNetCore.Mvc.Cors.dll|Microsoft.AspNetCore.App.Ref|7.0.0.0|7.0.22.51819 -Microsoft.AspNetCore.Mvc.DataAnnotations.dll|Microsoft.AspNetCore.App.Ref|7.0.0.0|7.0.22.51819 -Microsoft.AspNetCore.Mvc.dll|Microsoft.AspNetCore.App.Ref|7.0.0.0|7.0.22.51819 -Microsoft.AspNetCore.Mvc.Formatters.Json.dll|Microsoft.AspNetCore.App.Ref|7.0.0.0|7.0.22.51819 -Microsoft.AspNetCore.Mvc.Formatters.Xml.dll|Microsoft.AspNetCore.App.Ref|7.0.0.0|7.0.22.51819 -Microsoft.AspNetCore.Mvc.Localization.dll|Microsoft.AspNetCore.App.Ref|7.0.0.0|7.0.22.51819 -Microsoft.AspNetCore.Mvc.Razor.dll|Microsoft.AspNetCore.App.Ref|7.0.0.0|7.0.22.51819 -Microsoft.AspNetCore.Mvc.RazorPages.dll|Microsoft.AspNetCore.App.Ref|7.0.0.0|7.0.22.51819 -Microsoft.AspNetCore.Mvc.TagHelpers.dll|Microsoft.AspNetCore.App.Ref|7.0.0.0|7.0.22.51819 -Microsoft.AspNetCore.Mvc.ViewFeatures.dll|Microsoft.AspNetCore.App.Ref|7.0.0.0|7.0.22.51819 -Microsoft.AspNetCore.OutputCaching.dll|Microsoft.AspNetCore.App.Ref|7.0.0.0|7.0.22.51819 -Microsoft.AspNetCore.RateLimiting.dll|Microsoft.AspNetCore.App.Ref|7.0.0.0|7.0.22.51819 -Microsoft.AspNetCore.Razor.dll|Microsoft.AspNetCore.App.Ref|7.0.0.0|7.0.22.51819 -Microsoft.AspNetCore.Razor.Runtime.dll|Microsoft.AspNetCore.App.Ref|7.0.0.0|7.0.22.51819 -Microsoft.AspNetCore.RequestDecompression.dll|Microsoft.AspNetCore.App.Ref|7.0.0.0|7.0.22.51819 -Microsoft.AspNetCore.ResponseCaching.Abstractions.dll|Microsoft.AspNetCore.App.Ref|7.0.0.0|7.0.22.51819 -Microsoft.AspNetCore.ResponseCaching.dll|Microsoft.AspNetCore.App.Ref|7.0.0.0|7.0.22.51819 -Microsoft.AspNetCore.ResponseCompression.dll|Microsoft.AspNetCore.App.Ref|7.0.0.0|7.0.22.51819 -Microsoft.AspNetCore.Rewrite.dll|Microsoft.AspNetCore.App.Ref|7.0.0.0|7.0.22.51819 -Microsoft.AspNetCore.Routing.Abstractions.dll|Microsoft.AspNetCore.App.Ref|7.0.0.0|7.0.22.51819 -Microsoft.AspNetCore.Routing.dll|Microsoft.AspNetCore.App.Ref|7.0.0.0|7.0.22.51819 -Microsoft.AspNetCore.Server.HttpSys.dll|Microsoft.AspNetCore.App.Ref|7.0.0.0|7.0.22.51819 -Microsoft.AspNetCore.Server.IIS.dll|Microsoft.AspNetCore.App.Ref|7.0.0.0|7.0.22.51819 -Microsoft.AspNetCore.Server.IISIntegration.dll|Microsoft.AspNetCore.App.Ref|7.0.0.0|7.0.22.51819 -Microsoft.AspNetCore.Server.Kestrel.Core.dll|Microsoft.AspNetCore.App.Ref|7.0.0.0|7.0.22.51819 -Microsoft.AspNetCore.Server.Kestrel.dll|Microsoft.AspNetCore.App.Ref|7.0.0.0|7.0.22.51819 -Microsoft.AspNetCore.Server.Kestrel.Transport.Quic.dll|Microsoft.AspNetCore.App.Ref|7.0.0.0|7.0.22.51819 -Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets.dll|Microsoft.AspNetCore.App.Ref|7.0.0.0|7.0.22.51819 -Microsoft.AspNetCore.Session.dll|Microsoft.AspNetCore.App.Ref|7.0.0.0|7.0.22.51819 -Microsoft.AspNetCore.SignalR.Common.dll|Microsoft.AspNetCore.App.Ref|7.0.0.0|7.0.22.51819 -Microsoft.AspNetCore.SignalR.Core.dll|Microsoft.AspNetCore.App.Ref|7.0.0.0|7.0.22.51819 -Microsoft.AspNetCore.SignalR.dll|Microsoft.AspNetCore.App.Ref|7.0.0.0|7.0.22.51819 -Microsoft.AspNetCore.SignalR.Protocols.Json.dll|Microsoft.AspNetCore.App.Ref|7.0.0.0|7.0.22.51819 -Microsoft.AspNetCore.StaticFiles.dll|Microsoft.AspNetCore.App.Ref|7.0.0.0|7.0.22.51819 -Microsoft.AspNetCore.WebSockets.dll|Microsoft.AspNetCore.App.Ref|7.0.0.0|7.0.22.51819 -Microsoft.AspNetCore.WebUtilities.dll|Microsoft.AspNetCore.App.Ref|7.0.0.0|7.0.22.51819 -Microsoft.Extensions.Caching.Abstractions.dll|Microsoft.AspNetCore.App.Ref|7.0.0.0|7.0.22.51805 -Microsoft.Extensions.Caching.Memory.dll|Microsoft.AspNetCore.App.Ref|7.0.0.0|7.0.22.51805 -Microsoft.Extensions.Configuration.Abstractions.dll|Microsoft.AspNetCore.App.Ref|7.0.0.0|7.0.22.51805 -Microsoft.Extensions.Configuration.Binder.dll|Microsoft.AspNetCore.App.Ref|7.0.0.0|7.0.22.51805 -Microsoft.Extensions.Configuration.CommandLine.dll|Microsoft.AspNetCore.App.Ref|7.0.0.0|7.0.22.51805 -Microsoft.Extensions.Configuration.dll|Microsoft.AspNetCore.App.Ref|7.0.0.0|7.0.22.51805 -Microsoft.Extensions.Configuration.EnvironmentVariables.dll|Microsoft.AspNetCore.App.Ref|7.0.0.0|7.0.22.51805 -Microsoft.Extensions.Configuration.FileExtensions.dll|Microsoft.AspNetCore.App.Ref|7.0.0.0|7.0.22.51805 -Microsoft.Extensions.Configuration.Ini.dll|Microsoft.AspNetCore.App.Ref|7.0.0.0|7.0.22.51805 -Microsoft.Extensions.Configuration.Json.dll|Microsoft.AspNetCore.App.Ref|7.0.0.0|7.0.22.51805 -Microsoft.Extensions.Configuration.KeyPerFile.dll|Microsoft.AspNetCore.App.Ref|7.0.0.0|7.0.22.51819 -Microsoft.Extensions.Configuration.UserSecrets.dll|Microsoft.AspNetCore.App.Ref|7.0.0.0|7.0.22.51805 -Microsoft.Extensions.Configuration.Xml.dll|Microsoft.AspNetCore.App.Ref|7.0.0.0|7.0.22.51805 -Microsoft.Extensions.DependencyInjection.Abstractions.dll|Microsoft.AspNetCore.App.Ref|7.0.0.0|7.0.22.51805 -Microsoft.Extensions.DependencyInjection.dll|Microsoft.AspNetCore.App.Ref|7.0.0.0|7.0.22.51805 -Microsoft.Extensions.Diagnostics.HealthChecks.Abstractions.dll|Microsoft.AspNetCore.App.Ref|7.0.0.0|7.0.22.51819 -Microsoft.Extensions.Diagnostics.HealthChecks.dll|Microsoft.AspNetCore.App.Ref|7.0.0.0|7.0.22.51819 -Microsoft.Extensions.Features.dll|Microsoft.AspNetCore.App.Ref|7.0.0.0|7.0.22.51819 -Microsoft.Extensions.FileProviders.Abstractions.dll|Microsoft.AspNetCore.App.Ref|7.0.0.0|7.0.22.51805 -Microsoft.Extensions.FileProviders.Composite.dll|Microsoft.AspNetCore.App.Ref|7.0.0.0|7.0.22.51805 -Microsoft.Extensions.FileProviders.Embedded.dll|Microsoft.AspNetCore.App.Ref|7.0.0.0|7.0.22.51819 -Microsoft.Extensions.FileProviders.Physical.dll|Microsoft.AspNetCore.App.Ref|7.0.0.0|7.0.22.51805 -Microsoft.Extensions.FileSystemGlobbing.dll|Microsoft.AspNetCore.App.Ref|7.0.0.0|7.0.22.51805 -Microsoft.Extensions.Hosting.Abstractions.dll|Microsoft.AspNetCore.App.Ref|7.0.0.0|7.0.22.51805 -Microsoft.Extensions.Hosting.dll|Microsoft.AspNetCore.App.Ref|7.0.0.0|7.0.22.51805 -Microsoft.Extensions.Http.dll|Microsoft.AspNetCore.App.Ref|7.0.0.0|7.0.22.51805 -Microsoft.Extensions.Identity.Core.dll|Microsoft.AspNetCore.App.Ref|7.0.0.0|7.0.22.51819 -Microsoft.Extensions.Identity.Stores.dll|Microsoft.AspNetCore.App.Ref|7.0.0.0|7.0.22.51819 -Microsoft.Extensions.Localization.Abstractions.dll|Microsoft.AspNetCore.App.Ref|7.0.0.0|7.0.22.51819 -Microsoft.Extensions.Localization.dll|Microsoft.AspNetCore.App.Ref|7.0.0.0|7.0.22.51819 -Microsoft.Extensions.Logging.Abstractions.dll|Microsoft.AspNetCore.App.Ref|7.0.0.0|7.0.22.51805 -Microsoft.Extensions.Logging.Configuration.dll|Microsoft.AspNetCore.App.Ref|7.0.0.0|7.0.22.51805 -Microsoft.Extensions.Logging.Console.dll|Microsoft.AspNetCore.App.Ref|7.0.0.0|7.0.22.51805 -Microsoft.Extensions.Logging.Debug.dll|Microsoft.AspNetCore.App.Ref|7.0.0.0|7.0.22.51805 -Microsoft.Extensions.Logging.dll|Microsoft.AspNetCore.App.Ref|7.0.0.0|7.0.22.51805 -Microsoft.Extensions.Logging.EventLog.dll|Microsoft.AspNetCore.App.Ref|7.0.0.0|7.0.22.51805 -Microsoft.Extensions.Logging.EventSource.dll|Microsoft.AspNetCore.App.Ref|7.0.0.0|7.0.22.51805 -Microsoft.Extensions.Logging.TraceSource.dll|Microsoft.AspNetCore.App.Ref|7.0.0.0|7.0.22.51805 -Microsoft.Extensions.ObjectPool.dll|Microsoft.AspNetCore.App.Ref|7.0.0.0|7.0.22.51819 -Microsoft.Extensions.Options.ConfigurationExtensions.dll|Microsoft.AspNetCore.App.Ref|7.0.0.0|7.0.22.51805 -Microsoft.Extensions.Options.DataAnnotations.dll|Microsoft.AspNetCore.App.Ref|7.0.0.0|7.0.22.51805 -Microsoft.Extensions.Options.dll|Microsoft.AspNetCore.App.Ref|7.0.0.0|7.0.22.51805 -Microsoft.Extensions.Primitives.dll|Microsoft.AspNetCore.App.Ref|7.0.0.0|7.0.22.51805 -Microsoft.Extensions.WebEncoders.dll|Microsoft.AspNetCore.App.Ref|7.0.0.0|7.0.22.51819 -Microsoft.JSInterop.dll|Microsoft.AspNetCore.App.Ref|7.0.0.0|7.0.22.51819 -Microsoft.Net.Http.Headers.dll|Microsoft.AspNetCore.App.Ref|7.0.0.0|7.0.22.51819 -System.Diagnostics.EventLog.dll|Microsoft.AspNetCore.App.Ref|7.0.0.0|7.0.22.51805 -System.Diagnostics.EventLog.Messages.dll|Microsoft.AspNetCore.App.Ref|7.0.0.0|0.0.0.0 -System.IO.Pipelines.dll|Microsoft.AspNetCore.App.Ref|7.0.0.0|7.0.22.51805 -System.Security.Cryptography.Pkcs.dll|Microsoft.AspNetCore.App.Ref|7.0.0.0|7.0.22.51805 -System.Security.Cryptography.Xml.dll|Microsoft.AspNetCore.App.Ref|7.0.0.0|7.0.22.51805 -System.Threading.RateLimiting.dll|Microsoft.AspNetCore.App.Ref|7.0.0.0|7.0.22.51805 \ No newline at end of file +aspnetcorev2_inprocess.dll|Microsoft.AspNetCore.App.Ref||18.0.23305.0 +Microsoft.AspNetCore.Antiforgery.dll|Microsoft.AspNetCore.App.Ref|8.0.0.0|8.0.23.53112 +Microsoft.AspNetCore.Authentication.Abstractions.dll|Microsoft.AspNetCore.App.Ref|8.0.0.0|8.0.23.53112 +Microsoft.AspNetCore.Authentication.BearerToken.dll|Microsoft.AspNetCore.App.Ref|8.0.0.0|8.0.23.53112 +Microsoft.AspNetCore.Authentication.Cookies.dll|Microsoft.AspNetCore.App.Ref|8.0.0.0|8.0.23.53112 +Microsoft.AspNetCore.Authentication.Core.dll|Microsoft.AspNetCore.App.Ref|8.0.0.0|8.0.23.53112 +Microsoft.AspNetCore.Authentication.dll|Microsoft.AspNetCore.App.Ref|8.0.0.0|8.0.23.53112 +Microsoft.AspNetCore.Authentication.OAuth.dll|Microsoft.AspNetCore.App.Ref|8.0.0.0|8.0.23.53112 +Microsoft.AspNetCore.Authorization.dll|Microsoft.AspNetCore.App.Ref|8.0.0.0|8.0.23.53112 +Microsoft.AspNetCore.Authorization.Policy.dll|Microsoft.AspNetCore.App.Ref|8.0.0.0|8.0.23.53112 +Microsoft.AspNetCore.Components.Authorization.dll|Microsoft.AspNetCore.App.Ref|8.0.0.0|8.0.23.53112 +Microsoft.AspNetCore.Components.dll|Microsoft.AspNetCore.App.Ref|8.0.0.0|8.0.23.53112 +Microsoft.AspNetCore.Components.Endpoints.dll|Microsoft.AspNetCore.App.Ref|8.0.0.0|8.0.23.53112 +Microsoft.AspNetCore.Components.Forms.dll|Microsoft.AspNetCore.App.Ref|8.0.0.0|8.0.23.53112 +Microsoft.AspNetCore.Components.Server.dll|Microsoft.AspNetCore.App.Ref|8.0.0.0|8.0.23.53112 +Microsoft.AspNetCore.Components.Web.dll|Microsoft.AspNetCore.App.Ref|8.0.0.0|8.0.23.53112 +Microsoft.AspNetCore.Connections.Abstractions.dll|Microsoft.AspNetCore.App.Ref|8.0.0.0|8.0.23.53112 +Microsoft.AspNetCore.CookiePolicy.dll|Microsoft.AspNetCore.App.Ref|8.0.0.0|8.0.23.53112 +Microsoft.AspNetCore.Cors.dll|Microsoft.AspNetCore.App.Ref|8.0.0.0|8.0.23.53112 +Microsoft.AspNetCore.Cryptography.Internal.dll|Microsoft.AspNetCore.App.Ref|8.0.0.0|8.0.23.53112 +Microsoft.AspNetCore.Cryptography.KeyDerivation.dll|Microsoft.AspNetCore.App.Ref|8.0.0.0|8.0.23.53112 +Microsoft.AspNetCore.DataProtection.Abstractions.dll|Microsoft.AspNetCore.App.Ref|8.0.0.0|8.0.23.53112 +Microsoft.AspNetCore.DataProtection.dll|Microsoft.AspNetCore.App.Ref|8.0.0.0|8.0.23.53112 +Microsoft.AspNetCore.DataProtection.Extensions.dll|Microsoft.AspNetCore.App.Ref|8.0.0.0|8.0.23.53112 +Microsoft.AspNetCore.Diagnostics.Abstractions.dll|Microsoft.AspNetCore.App.Ref|8.0.0.0|8.0.23.53112 +Microsoft.AspNetCore.Diagnostics.dll|Microsoft.AspNetCore.App.Ref|8.0.0.0|8.0.23.53112 +Microsoft.AspNetCore.Diagnostics.HealthChecks.dll|Microsoft.AspNetCore.App.Ref|8.0.0.0|8.0.23.53112 +Microsoft.AspNetCore.dll|Microsoft.AspNetCore.App.Ref|8.0.0.0|8.0.23.53112 +Microsoft.AspNetCore.HostFiltering.dll|Microsoft.AspNetCore.App.Ref|8.0.0.0|8.0.23.53112 +Microsoft.AspNetCore.Hosting.Abstractions.dll|Microsoft.AspNetCore.App.Ref|8.0.0.0|8.0.23.53112 +Microsoft.AspNetCore.Hosting.dll|Microsoft.AspNetCore.App.Ref|8.0.0.0|8.0.23.53112 +Microsoft.AspNetCore.Hosting.Server.Abstractions.dll|Microsoft.AspNetCore.App.Ref|8.0.0.0|8.0.23.53112 +Microsoft.AspNetCore.Html.Abstractions.dll|Microsoft.AspNetCore.App.Ref|8.0.0.0|8.0.23.53112 +Microsoft.AspNetCore.Http.Abstractions.dll|Microsoft.AspNetCore.App.Ref|8.0.0.0|8.0.23.53112 +Microsoft.AspNetCore.Http.Connections.Common.dll|Microsoft.AspNetCore.App.Ref|8.0.0.0|8.0.23.53112 +Microsoft.AspNetCore.Http.Connections.dll|Microsoft.AspNetCore.App.Ref|8.0.0.0|8.0.23.53112 +Microsoft.AspNetCore.Http.dll|Microsoft.AspNetCore.App.Ref|8.0.0.0|8.0.23.53112 +Microsoft.AspNetCore.Http.Extensions.dll|Microsoft.AspNetCore.App.Ref|8.0.0.0|8.0.23.53112 +Microsoft.AspNetCore.Http.Features.dll|Microsoft.AspNetCore.App.Ref|8.0.0.0|8.0.23.53112 +Microsoft.AspNetCore.Http.Results.dll|Microsoft.AspNetCore.App.Ref|8.0.0.0|8.0.23.53112 +Microsoft.AspNetCore.HttpLogging.dll|Microsoft.AspNetCore.App.Ref|8.0.0.0|8.0.23.53112 +Microsoft.AspNetCore.HttpOverrides.dll|Microsoft.AspNetCore.App.Ref|8.0.0.0|8.0.23.53112 +Microsoft.AspNetCore.HttpsPolicy.dll|Microsoft.AspNetCore.App.Ref|8.0.0.0|8.0.23.53112 +Microsoft.AspNetCore.Identity.dll|Microsoft.AspNetCore.App.Ref|8.0.0.0|8.0.23.53112 +Microsoft.AspNetCore.Localization.dll|Microsoft.AspNetCore.App.Ref|8.0.0.0|8.0.23.53112 +Microsoft.AspNetCore.Localization.Routing.dll|Microsoft.AspNetCore.App.Ref|8.0.0.0|8.0.23.53112 +Microsoft.AspNetCore.Metadata.dll|Microsoft.AspNetCore.App.Ref|8.0.0.0|8.0.23.53112 +Microsoft.AspNetCore.Mvc.Abstractions.dll|Microsoft.AspNetCore.App.Ref|8.0.0.0|8.0.23.53112 +Microsoft.AspNetCore.Mvc.ApiExplorer.dll|Microsoft.AspNetCore.App.Ref|8.0.0.0|8.0.23.53112 +Microsoft.AspNetCore.Mvc.Core.dll|Microsoft.AspNetCore.App.Ref|8.0.0.0|8.0.23.53112 +Microsoft.AspNetCore.Mvc.Cors.dll|Microsoft.AspNetCore.App.Ref|8.0.0.0|8.0.23.53112 +Microsoft.AspNetCore.Mvc.DataAnnotations.dll|Microsoft.AspNetCore.App.Ref|8.0.0.0|8.0.23.53112 +Microsoft.AspNetCore.Mvc.dll|Microsoft.AspNetCore.App.Ref|8.0.0.0|8.0.23.53112 +Microsoft.AspNetCore.Mvc.Formatters.Json.dll|Microsoft.AspNetCore.App.Ref|8.0.0.0|8.0.23.53112 +Microsoft.AspNetCore.Mvc.Formatters.Xml.dll|Microsoft.AspNetCore.App.Ref|8.0.0.0|8.0.23.53112 +Microsoft.AspNetCore.Mvc.Localization.dll|Microsoft.AspNetCore.App.Ref|8.0.0.0|8.0.23.53112 +Microsoft.AspNetCore.Mvc.Razor.dll|Microsoft.AspNetCore.App.Ref|8.0.0.0|8.0.23.53112 +Microsoft.AspNetCore.Mvc.RazorPages.dll|Microsoft.AspNetCore.App.Ref|8.0.0.0|8.0.23.53112 +Microsoft.AspNetCore.Mvc.TagHelpers.dll|Microsoft.AspNetCore.App.Ref|8.0.0.0|8.0.23.53112 +Microsoft.AspNetCore.Mvc.ViewFeatures.dll|Microsoft.AspNetCore.App.Ref|8.0.0.0|8.0.23.53112 +Microsoft.AspNetCore.OutputCaching.dll|Microsoft.AspNetCore.App.Ref|8.0.0.0|8.0.23.53112 +Microsoft.AspNetCore.RateLimiting.dll|Microsoft.AspNetCore.App.Ref|8.0.0.0|8.0.23.53112 +Microsoft.AspNetCore.Razor.dll|Microsoft.AspNetCore.App.Ref|8.0.0.0|8.0.23.53112 +Microsoft.AspNetCore.Razor.Runtime.dll|Microsoft.AspNetCore.App.Ref|8.0.0.0|8.0.23.53112 +Microsoft.AspNetCore.RequestDecompression.dll|Microsoft.AspNetCore.App.Ref|8.0.0.0|8.0.23.53112 +Microsoft.AspNetCore.ResponseCaching.Abstractions.dll|Microsoft.AspNetCore.App.Ref|8.0.0.0|8.0.23.53112 +Microsoft.AspNetCore.ResponseCaching.dll|Microsoft.AspNetCore.App.Ref|8.0.0.0|8.0.23.53112 +Microsoft.AspNetCore.ResponseCompression.dll|Microsoft.AspNetCore.App.Ref|8.0.0.0|8.0.23.53112 +Microsoft.AspNetCore.Rewrite.dll|Microsoft.AspNetCore.App.Ref|8.0.0.0|8.0.23.53112 +Microsoft.AspNetCore.Routing.Abstractions.dll|Microsoft.AspNetCore.App.Ref|8.0.0.0|8.0.23.53112 +Microsoft.AspNetCore.Routing.dll|Microsoft.AspNetCore.App.Ref|8.0.0.0|8.0.23.53112 +Microsoft.AspNetCore.Server.HttpSys.dll|Microsoft.AspNetCore.App.Ref|8.0.0.0|8.0.23.53112 +Microsoft.AspNetCore.Server.IIS.dll|Microsoft.AspNetCore.App.Ref|8.0.0.0|8.0.23.53112 +Microsoft.AspNetCore.Server.IISIntegration.dll|Microsoft.AspNetCore.App.Ref|8.0.0.0|8.0.23.53112 +Microsoft.AspNetCore.Server.Kestrel.Core.dll|Microsoft.AspNetCore.App.Ref|8.0.0.0|8.0.23.53112 +Microsoft.AspNetCore.Server.Kestrel.dll|Microsoft.AspNetCore.App.Ref|8.0.0.0|8.0.23.53112 +Microsoft.AspNetCore.Server.Kestrel.Transport.NamedPipes.dll|Microsoft.AspNetCore.App.Ref|8.0.0.0|8.0.23.53112 +Microsoft.AspNetCore.Server.Kestrel.Transport.Quic.dll|Microsoft.AspNetCore.App.Ref|8.0.0.0|8.0.23.53112 +Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets.dll|Microsoft.AspNetCore.App.Ref|8.0.0.0|8.0.23.53112 +Microsoft.AspNetCore.Session.dll|Microsoft.AspNetCore.App.Ref|8.0.0.0|8.0.23.53112 +Microsoft.AspNetCore.SignalR.Common.dll|Microsoft.AspNetCore.App.Ref|8.0.0.0|8.0.23.53112 +Microsoft.AspNetCore.SignalR.Core.dll|Microsoft.AspNetCore.App.Ref|8.0.0.0|8.0.23.53112 +Microsoft.AspNetCore.SignalR.dll|Microsoft.AspNetCore.App.Ref|8.0.0.0|8.0.23.53112 +Microsoft.AspNetCore.SignalR.Protocols.Json.dll|Microsoft.AspNetCore.App.Ref|8.0.0.0|8.0.23.53112 +Microsoft.AspNetCore.StaticFiles.dll|Microsoft.AspNetCore.App.Ref|8.0.0.0|8.0.23.53112 +Microsoft.AspNetCore.WebSockets.dll|Microsoft.AspNetCore.App.Ref|8.0.0.0|8.0.23.53112 +Microsoft.AspNetCore.WebUtilities.dll|Microsoft.AspNetCore.App.Ref|8.0.0.0|8.0.23.53112 +Microsoft.Extensions.Caching.Abstractions.dll|Microsoft.AspNetCore.App.Ref|8.0.0.0|8.0.23.53103 +Microsoft.Extensions.Caching.Memory.dll|Microsoft.AspNetCore.App.Ref|8.0.0.0|8.0.23.53103 +Microsoft.Extensions.Configuration.Abstractions.dll|Microsoft.AspNetCore.App.Ref|8.0.0.0|8.0.23.53103 +Microsoft.Extensions.Configuration.Binder.dll|Microsoft.AspNetCore.App.Ref|8.0.0.0|8.0.23.53103 +Microsoft.Extensions.Configuration.CommandLine.dll|Microsoft.AspNetCore.App.Ref|8.0.0.0|8.0.23.53103 +Microsoft.Extensions.Configuration.dll|Microsoft.AspNetCore.App.Ref|8.0.0.0|8.0.23.53103 +Microsoft.Extensions.Configuration.EnvironmentVariables.dll|Microsoft.AspNetCore.App.Ref|8.0.0.0|8.0.23.53103 +Microsoft.Extensions.Configuration.FileExtensions.dll|Microsoft.AspNetCore.App.Ref|8.0.0.0|8.0.23.53103 +Microsoft.Extensions.Configuration.Ini.dll|Microsoft.AspNetCore.App.Ref|8.0.0.0|8.0.23.53103 +Microsoft.Extensions.Configuration.Json.dll|Microsoft.AspNetCore.App.Ref|8.0.0.0|8.0.23.53103 +Microsoft.Extensions.Configuration.KeyPerFile.dll|Microsoft.AspNetCore.App.Ref|8.0.0.0|8.0.23.53112 +Microsoft.Extensions.Configuration.UserSecrets.dll|Microsoft.AspNetCore.App.Ref|8.0.0.0|8.0.23.53103 +Microsoft.Extensions.Configuration.Xml.dll|Microsoft.AspNetCore.App.Ref|8.0.0.0|8.0.23.53103 +Microsoft.Extensions.DependencyInjection.Abstractions.dll|Microsoft.AspNetCore.App.Ref|8.0.0.0|8.0.23.53103 +Microsoft.Extensions.DependencyInjection.dll|Microsoft.AspNetCore.App.Ref|8.0.0.0|8.0.23.53103 +Microsoft.Extensions.Diagnostics.Abstractions.dll|Microsoft.AspNetCore.App.Ref|8.0.0.0|8.0.23.53103 +Microsoft.Extensions.Diagnostics.dll|Microsoft.AspNetCore.App.Ref|8.0.0.0|8.0.23.53103 +Microsoft.Extensions.Diagnostics.HealthChecks.Abstractions.dll|Microsoft.AspNetCore.App.Ref|8.0.0.0|8.0.23.53112 +Microsoft.Extensions.Diagnostics.HealthChecks.dll|Microsoft.AspNetCore.App.Ref|8.0.0.0|8.0.23.53112 +Microsoft.Extensions.Features.dll|Microsoft.AspNetCore.App.Ref|8.0.0.0|8.0.23.53112 +Microsoft.Extensions.FileProviders.Abstractions.dll|Microsoft.AspNetCore.App.Ref|8.0.0.0|8.0.23.53103 +Microsoft.Extensions.FileProviders.Composite.dll|Microsoft.AspNetCore.App.Ref|8.0.0.0|8.0.23.53103 +Microsoft.Extensions.FileProviders.Embedded.dll|Microsoft.AspNetCore.App.Ref|8.0.0.0|8.0.23.53112 +Microsoft.Extensions.FileProviders.Physical.dll|Microsoft.AspNetCore.App.Ref|8.0.0.0|8.0.23.53103 +Microsoft.Extensions.FileSystemGlobbing.dll|Microsoft.AspNetCore.App.Ref|8.0.0.0|8.0.23.53103 +Microsoft.Extensions.Hosting.Abstractions.dll|Microsoft.AspNetCore.App.Ref|8.0.0.0|8.0.23.53103 +Microsoft.Extensions.Hosting.dll|Microsoft.AspNetCore.App.Ref|8.0.0.0|8.0.23.53103 +Microsoft.Extensions.Http.dll|Microsoft.AspNetCore.App.Ref|8.0.0.0|8.0.23.53103 +Microsoft.Extensions.Identity.Core.dll|Microsoft.AspNetCore.App.Ref|8.0.0.0|8.0.23.53112 +Microsoft.Extensions.Identity.Stores.dll|Microsoft.AspNetCore.App.Ref|8.0.0.0|8.0.23.53112 +Microsoft.Extensions.Localization.Abstractions.dll|Microsoft.AspNetCore.App.Ref|8.0.0.0|8.0.23.53112 +Microsoft.Extensions.Localization.dll|Microsoft.AspNetCore.App.Ref|8.0.0.0|8.0.23.53112 +Microsoft.Extensions.Logging.Abstractions.dll|Microsoft.AspNetCore.App.Ref|8.0.0.0|8.0.23.53103 +Microsoft.Extensions.Logging.Configuration.dll|Microsoft.AspNetCore.App.Ref|8.0.0.0|8.0.23.53103 +Microsoft.Extensions.Logging.Console.dll|Microsoft.AspNetCore.App.Ref|8.0.0.0|8.0.23.53103 +Microsoft.Extensions.Logging.Debug.dll|Microsoft.AspNetCore.App.Ref|8.0.0.0|8.0.23.53103 +Microsoft.Extensions.Logging.dll|Microsoft.AspNetCore.App.Ref|8.0.0.0|8.0.23.53103 +Microsoft.Extensions.Logging.EventLog.dll|Microsoft.AspNetCore.App.Ref|8.0.0.0|8.0.23.53103 +Microsoft.Extensions.Logging.EventSource.dll|Microsoft.AspNetCore.App.Ref|8.0.0.0|8.0.23.53103 +Microsoft.Extensions.Logging.TraceSource.dll|Microsoft.AspNetCore.App.Ref|8.0.0.0|8.0.23.53103 +Microsoft.Extensions.ObjectPool.dll|Microsoft.AspNetCore.App.Ref|8.0.0.0|8.0.23.53112 +Microsoft.Extensions.Options.ConfigurationExtensions.dll|Microsoft.AspNetCore.App.Ref|8.0.0.0|8.0.23.53103 +Microsoft.Extensions.Options.DataAnnotations.dll|Microsoft.AspNetCore.App.Ref|8.0.0.0|8.0.23.53103 +Microsoft.Extensions.Options.dll|Microsoft.AspNetCore.App.Ref|8.0.0.0|8.0.23.53103 +Microsoft.Extensions.Primitives.dll|Microsoft.AspNetCore.App.Ref|8.0.0.0|8.0.23.53103 +Microsoft.Extensions.WebEncoders.dll|Microsoft.AspNetCore.App.Ref|8.0.0.0|8.0.23.53112 +Microsoft.JSInterop.dll|Microsoft.AspNetCore.App.Ref|8.0.0.0|8.0.23.53112 +Microsoft.Net.Http.Headers.dll|Microsoft.AspNetCore.App.Ref|8.0.0.0|8.0.23.53112 +System.Diagnostics.EventLog.dll|Microsoft.AspNetCore.App.Ref|8.0.0.0|8.0.23.53103 +System.Diagnostics.EventLog.Messages.dll|Microsoft.AspNetCore.App.Ref|8.0.0.0|0.0.0.0 +System.IO.Pipelines.dll|Microsoft.AspNetCore.App.Ref|8.0.0.0|8.0.23.53103 +System.Security.Cryptography.Pkcs.dll|Microsoft.AspNetCore.App.Ref|8.0.0.0|8.0.23.53103 +System.Security.Cryptography.Xml.dll|Microsoft.AspNetCore.App.Ref|8.0.0.0|8.0.23.53103 +System.Threading.RateLimiting.dll|Microsoft.AspNetCore.App.Ref|8.0.0.0|8.0.23.53103 diff --git a/eng/Versions.props b/eng/Versions.props index 659b72a9313d..711e48b2472c 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -8,18 +8,18 @@ 8 0 - 0 + 1 - true + false 7.0.3 true release - rtm - RTM + servicing + Servicing true false $(AspNetCoreMajorVersion).$(AspNetCoreMinorVersion) From 5dab7464db954b0955e0dd7556e3fbcf464c1199 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 8 Nov 2023 16:04:34 -0800 Subject: [PATCH 011/391] Update yarn.lock (#51812) Co-authored-by: Mackinnon Buck --- .../src/Interop/yarn.lock | 2359 +++++++++-------- 1 file changed, 1201 insertions(+), 1158 deletions(-) diff --git a/src/Components/WebAssembly/WebAssembly.Authentication/src/Interop/yarn.lock b/src/Components/WebAssembly/WebAssembly.Authentication/src/Interop/yarn.lock index 15c06f954010..ca9c3f6caebc 100644 --- a/src/Components/WebAssembly/WebAssembly.Authentication/src/Interop/yarn.lock +++ b/src/Components/WebAssembly/WebAssembly.Authentication/src/Interop/yarn.lock @@ -2,418 +2,286 @@ # yarn lockfile v1 -"@ampproject/remapping@^2.1.0": - version "2.2.0" - resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@ampproject/remapping/-/remapping-2.2.0.tgz#56c133824780de3174aed5ab6834f3026790154d" - integrity sha1-VsEzgkeA3jF0rtWraDTzAmeQFU0= +"@aashutoshrathi/word-wrap@^1.2.3": + version "1.2.6" + resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz#bd9154aec9983f77b3a034ecaa015c2e4201f6cf" + integrity sha1-vZFUrsmYP3ezoDTsqgFcLkIB9s8= + +"@ampproject/remapping@^2.2.0": + version "2.2.1" + resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@ampproject/remapping/-/remapping-2.2.1.tgz#99e8e11851128b8702cd57c33684f1d0f260b630" + integrity sha1-mejhGFESi4cCzVfDNoTx0PJgtjA= dependencies: - "@jridgewell/gen-mapping" "^0.1.0" + "@jridgewell/gen-mapping" "^0.3.0" "@jridgewell/trace-mapping" "^0.3.9" -"@babel/code-frame@^7.18.6": - version "7.18.6" - resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/code-frame/-/code-frame-7.18.6.tgz#3b25d38c89600baa2dcc219edfa88a74eb2c427a" - integrity sha1-OyXTjIlgC6otzCGe36iKdOssQno= +"@babel/code-frame@^7.22.13": + version "7.22.13" + resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/code-frame/-/code-frame-7.22.13.tgz#e3c1c099402598483b7a8c46a721d1038803755e" + integrity sha1-48HAmUAlmEg7eoxGpyHRA4gDdV4= dependencies: - "@babel/highlight" "^7.18.6" + "@babel/highlight" "^7.22.13" + chalk "^2.4.2" -"@babel/compat-data@^7.17.7", "@babel/compat-data@^7.20.1", "@babel/compat-data@^7.20.5": - version "7.20.14" - resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/compat-data/-/compat-data-7.20.14.tgz#4106fc8b755f3e3ee0a0a7c27dde5de1d2b2baf8" - integrity sha1-QQb8i3VfPj7goKfCfd5d4dKyuvg= +"@babel/compat-data@^7.22.6", "@babel/compat-data@^7.22.9", "@babel/compat-data@^7.23.2": + version "7.23.2" + resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/compat-data/-/compat-data-7.23.2.tgz#6a12ced93455827037bfb5ed8492820d60fc32cc" + integrity sha1-ahLO2TRVgnA3v7XthJKCDWD8Msw= "@babel/core@^7.15.0": - version "7.20.12" - resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/core/-/core-7.20.12.tgz#7930db57443c6714ad216953d1356dac0eb8496d" - integrity sha1-eTDbV0Q8ZxStIWlT0TVtrA64SW0= - dependencies: - "@ampproject/remapping" "^2.1.0" - "@babel/code-frame" "^7.18.6" - "@babel/generator" "^7.20.7" - "@babel/helper-compilation-targets" "^7.20.7" - "@babel/helper-module-transforms" "^7.20.11" - "@babel/helpers" "^7.20.7" - "@babel/parser" "^7.20.7" - "@babel/template" "^7.20.7" - "@babel/traverse" "^7.20.12" - "@babel/types" "^7.20.7" - convert-source-map "^1.7.0" + version "7.23.2" + resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/core/-/core-7.23.2.tgz#ed10df0d580fff67c5f3ee70fd22e2e4c90a9f94" + integrity sha1-7RDfDVgP/2fF8+5w/SLi5MkKn5Q= + dependencies: + "@ampproject/remapping" "^2.2.0" + "@babel/code-frame" "^7.22.13" + "@babel/generator" "^7.23.0" + "@babel/helper-compilation-targets" "^7.22.15" + "@babel/helper-module-transforms" "^7.23.0" + "@babel/helpers" "^7.23.2" + "@babel/parser" "^7.23.0" + "@babel/template" "^7.22.15" + "@babel/traverse" "^7.23.2" + "@babel/types" "^7.23.0" + convert-source-map "^2.0.0" debug "^4.1.0" gensync "^1.0.0-beta.2" - json5 "^2.2.2" - semver "^6.3.0" + json5 "^2.2.3" + semver "^6.3.1" -"@babel/generator@^7.20.7": - version "7.20.14" - resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/generator/-/generator-7.20.14.tgz#9fa772c9f86a46c6ac9b321039400712b96f64ce" - integrity sha1-n6dyyfhqRsasmzIQOUAHErlvZM4= +"@babel/generator@^7.23.0": + version "7.23.0" + resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/generator/-/generator-7.23.0.tgz#df5c386e2218be505b34837acbcb874d7a983420" + integrity sha1-31w4biIYvlBbNIN6y8uHTXqYNCA= dependencies: - "@babel/types" "^7.20.7" + "@babel/types" "^7.23.0" "@jridgewell/gen-mapping" "^0.3.2" + "@jridgewell/trace-mapping" "^0.3.17" jsesc "^2.5.1" -"@babel/helper-annotate-as-pure@^7.18.6": - version "7.18.6" - resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz#eaa49f6f80d5a33f9a5dd2276e6d6e451be0a6bb" - integrity sha1-6qSfb4DVoz+aXdInbm1uRRvgprs= +"@babel/helper-annotate-as-pure@^7.22.5": + version "7.22.5" + resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.22.5.tgz#e7f06737b197d580a01edf75d97e2c8be99d3882" + integrity sha1-5/BnN7GX1YCgHt912X4si+mdOII= dependencies: - "@babel/types" "^7.18.6" + "@babel/types" "^7.22.5" -"@babel/helper-builder-binary-assignment-operator-visitor@^7.18.6": - version "7.18.9" - resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.18.9.tgz#acd4edfd7a566d1d51ea975dff38fd52906981bb" - integrity sha1-rNTt/XpWbR1R6pdd/zj9UpBpgbs= +"@babel/helper-builder-binary-assignment-operator-visitor@^7.22.5": + version "7.22.15" + resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.22.15.tgz#5426b109cf3ad47b91120f8328d8ab1be8b0b956" + integrity sha1-VCaxCc861HuREg+DKNirG+iwuVY= dependencies: - "@babel/helper-explode-assignable-expression" "^7.18.6" - "@babel/types" "^7.18.9" + "@babel/types" "^7.22.15" -"@babel/helper-compilation-targets@^7.17.7", "@babel/helper-compilation-targets@^7.18.9", "@babel/helper-compilation-targets@^7.20.0", "@babel/helper-compilation-targets@^7.20.7": - version "7.20.7" - resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.7.tgz#a6cd33e93629f5eb473b021aac05df62c4cd09bb" - integrity sha1-ps0z6TYp9etHOwIarAXfYsTNCbs= +"@babel/helper-compilation-targets@^7.22.15", "@babel/helper-compilation-targets@^7.22.5", "@babel/helper-compilation-targets@^7.22.6": + version "7.22.15" + resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.15.tgz#0698fc44551a26cf29f18d4662d5bf545a6cfc52" + integrity sha1-Bpj8RFUaJs8p8Y1GYtW/VFps/FI= dependencies: - "@babel/compat-data" "^7.20.5" - "@babel/helper-validator-option" "^7.18.6" - browserslist "^4.21.3" + "@babel/compat-data" "^7.22.9" + "@babel/helper-validator-option" "^7.22.15" + browserslist "^4.21.9" lru-cache "^5.1.1" - semver "^6.3.0" - -"@babel/helper-create-class-features-plugin@^7.18.6", "@babel/helper-create-class-features-plugin@^7.20.5", "@babel/helper-create-class-features-plugin@^7.20.7": - version "7.20.12" - resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.20.12.tgz#4349b928e79be05ed2d1643b20b99bb87c503819" - integrity sha1-Q0m5KOeb4F7S0WQ7ILmbuHxQOBk= - dependencies: - "@babel/helper-annotate-as-pure" "^7.18.6" - "@babel/helper-environment-visitor" "^7.18.9" - "@babel/helper-function-name" "^7.19.0" - "@babel/helper-member-expression-to-functions" "^7.20.7" - "@babel/helper-optimise-call-expression" "^7.18.6" - "@babel/helper-replace-supers" "^7.20.7" - "@babel/helper-skip-transparent-expression-wrappers" "^7.20.0" - "@babel/helper-split-export-declaration" "^7.18.6" - -"@babel/helper-create-regexp-features-plugin@^7.18.6", "@babel/helper-create-regexp-features-plugin@^7.20.5": - version "7.20.5" - resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.20.5.tgz#5ea79b59962a09ec2acf20a963a01ab4d076ccca" - integrity sha1-XqebWZYqCewqzyCpY6AatNB2zMo= - dependencies: - "@babel/helper-annotate-as-pure" "^7.18.6" - regexpu-core "^5.2.1" - -"@babel/helper-define-polyfill-provider@^0.3.3": - version "0.3.3" - resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.3.tgz#8612e55be5d51f0cd1f36b4a5a83924e89884b7a" - integrity sha1-hhLlW+XVHwzR82tKWoOSTomIS3o= - dependencies: - "@babel/helper-compilation-targets" "^7.17.7" - "@babel/helper-plugin-utils" "^7.16.7" + semver "^6.3.1" + +"@babel/helper-create-class-features-plugin@^7.22.11", "@babel/helper-create-class-features-plugin@^7.22.5": + version "7.22.15" + resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.22.15.tgz#97a61b385e57fe458496fad19f8e63b63c867de4" + integrity sha1-l6YbOF5X/kWElvrRn45jtjyGfeQ= + dependencies: + "@babel/helper-annotate-as-pure" "^7.22.5" + "@babel/helper-environment-visitor" "^7.22.5" + "@babel/helper-function-name" "^7.22.5" + "@babel/helper-member-expression-to-functions" "^7.22.15" + "@babel/helper-optimise-call-expression" "^7.22.5" + "@babel/helper-replace-supers" "^7.22.9" + "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" + "@babel/helper-split-export-declaration" "^7.22.6" + semver "^6.3.1" + +"@babel/helper-create-regexp-features-plugin@^7.18.6", "@babel/helper-create-regexp-features-plugin@^7.22.5": + version "7.22.15" + resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.22.15.tgz#5ee90093914ea09639b01c711db0d6775e558be1" + integrity sha1-XukAk5FOoJY5sBxxHbDWd15Vi+E= + dependencies: + "@babel/helper-annotate-as-pure" "^7.22.5" + regexpu-core "^5.3.1" + semver "^6.3.1" + +"@babel/helper-define-polyfill-provider@^0.4.3": + version "0.4.3" + resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.4.3.tgz#a71c10f7146d809f4a256c373f462d9bba8cf6ba" + integrity sha1-pxwQ9xRtgJ9KJWw3P0Ytm7qM9ro= + dependencies: + "@babel/helper-compilation-targets" "^7.22.6" + "@babel/helper-plugin-utils" "^7.22.5" debug "^4.1.1" lodash.debounce "^4.0.8" resolve "^1.14.2" - semver "^6.1.2" -"@babel/helper-environment-visitor@^7.18.9": - version "7.18.9" - resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz#0c0cee9b35d2ca190478756865bb3528422f51be" - integrity sha1-DAzumzXSyhkEeHVoZbs1KEIvUb4= +"@babel/helper-environment-visitor@^7.22.20", "@babel/helper-environment-visitor@^7.22.5": + version "7.22.20" + resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz#96159db61d34a29dba454c959f5ae4a649ba9167" + integrity sha1-lhWdth00op26RUyVn1rkpkm6kWc= -"@babel/helper-explode-assignable-expression@^7.18.6": - version "7.18.6" - resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.18.6.tgz#41f8228ef0a6f1a036b8dfdfec7ce94f9a6bc096" - integrity sha1-QfgijvCm8aA2uN/f7HzpT5prwJY= +"@babel/helper-function-name@^7.22.5", "@babel/helper-function-name@^7.23.0": + version "7.23.0" + resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz#1f9a3cdbd5b2698a670c30d2735f9af95ed52759" + integrity sha1-H5o829WyaYpnDDDSc1+a+V7VJ1k= dependencies: - "@babel/types" "^7.18.6" + "@babel/template" "^7.22.15" + "@babel/types" "^7.23.0" -"@babel/helper-function-name@^7.18.9", "@babel/helper-function-name@^7.19.0": - version "7.19.0" - resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/helper-function-name/-/helper-function-name-7.19.0.tgz#941574ed5390682e872e52d3f38ce9d1bef4648c" - integrity sha1-lBV07VOQaC6HLlLT84zp0b70ZIw= +"@babel/helper-hoist-variables@^7.22.5": + version "7.22.5" + resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz#c01a007dac05c085914e8fb652b339db50d823bb" + integrity sha1-wBoAfawFwIWRTo+2UrM521DYI7s= dependencies: - "@babel/template" "^7.18.10" - "@babel/types" "^7.19.0" + "@babel/types" "^7.22.5" -"@babel/helper-hoist-variables@^7.18.6": - version "7.18.6" - resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz#d4d2c8fb4baeaa5c68b99cc8245c56554f926678" - integrity sha1-1NLI+0uuqlxouZzIJFxWVU+SZng= - dependencies: - "@babel/types" "^7.18.6" - -"@babel/helper-member-expression-to-functions@^7.20.7": - version "7.20.7" - resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.20.7.tgz#a6f26e919582275a93c3aa6594756d71b0bb7f05" - integrity sha1-pvJukZWCJ1qTw6pllHVtcbC7fwU= - dependencies: - "@babel/types" "^7.20.7" - -"@babel/helper-module-imports@^7.18.6": - version "7.18.6" - resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz#1e3ebdbbd08aad1437b428c50204db13c5a3ca6e" - integrity sha1-Hj69u9CKrRQ3tCjFAgTbE8Wjym4= - dependencies: - "@babel/types" "^7.18.6" - -"@babel/helper-module-transforms@^7.18.6", "@babel/helper-module-transforms@^7.20.11": - version "7.20.11" - resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/helper-module-transforms/-/helper-module-transforms-7.20.11.tgz#df4c7af713c557938c50ea3ad0117a7944b2f1b0" - integrity sha1-30x69xPFV5OMUOo60BF6eUSy8bA= - dependencies: - "@babel/helper-environment-visitor" "^7.18.9" - "@babel/helper-module-imports" "^7.18.6" - "@babel/helper-simple-access" "^7.20.2" - "@babel/helper-split-export-declaration" "^7.18.6" - "@babel/helper-validator-identifier" "^7.19.1" - "@babel/template" "^7.20.7" - "@babel/traverse" "^7.20.10" - "@babel/types" "^7.20.7" - -"@babel/helper-optimise-call-expression@^7.18.6": - version "7.18.6" - resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.18.6.tgz#9369aa943ee7da47edab2cb4e838acf09d290ffe" - integrity sha1-k2mqlD7n2kftqyy06Dis8J0pD/4= +"@babel/helper-member-expression-to-functions@^7.22.15": + version "7.23.0" + resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.23.0.tgz#9263e88cc5e41d39ec18c9a3e0eced59a3e7d366" + integrity sha1-kmPojMXkHTnsGMmj4OztWaPn02Y= dependencies: - "@babel/types" "^7.18.6" - -"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.16.7", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.18.9", "@babel/helper-plugin-utils@^7.19.0", "@babel/helper-plugin-utils@^7.20.2", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": - version "7.20.2" - resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/helper-plugin-utils/-/helper-plugin-utils-7.20.2.tgz#d1b9000752b18d0877cff85a5c376ce5c3121629" - integrity sha1-0bkAB1KxjQh3z/haXDds5cMSFik= + "@babel/types" "^7.23.0" + +"@babel/helper-module-imports@^7.22.15", "@babel/helper-module-imports@^7.22.5": + version "7.22.15" + resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz#16146307acdc40cc00c3b2c647713076464bdbf0" + integrity sha1-FhRjB6zcQMwAw7LGR3EwdkZL2/A= + dependencies: + "@babel/types" "^7.22.15" -"@babel/helper-remap-async-to-generator@^7.18.9": - version "7.18.9" - resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.18.9.tgz#997458a0e3357080e54e1d79ec347f8a8cd28519" - integrity sha1-mXRYoOM1cIDlTh157DR/iozShRk= - dependencies: - "@babel/helper-annotate-as-pure" "^7.18.6" - "@babel/helper-environment-visitor" "^7.18.9" - "@babel/helper-wrap-function" "^7.18.9" - "@babel/types" "^7.18.9" - -"@babel/helper-replace-supers@^7.18.6", "@babel/helper-replace-supers@^7.20.7": - version "7.20.7" - resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/helper-replace-supers/-/helper-replace-supers-7.20.7.tgz#243ecd2724d2071532b2c8ad2f0f9f083bcae331" - integrity sha1-JD7NJyTSBxUyssitLw+fCDvK4zE= - dependencies: - "@babel/helper-environment-visitor" "^7.18.9" - "@babel/helper-member-expression-to-functions" "^7.20.7" - "@babel/helper-optimise-call-expression" "^7.18.6" - "@babel/template" "^7.20.7" - "@babel/traverse" "^7.20.7" - "@babel/types" "^7.20.7" - -"@babel/helper-simple-access@^7.20.2": - version "7.20.2" - resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/helper-simple-access/-/helper-simple-access-7.20.2.tgz#0ab452687fe0c2cfb1e2b9e0015de07fc2d62dd9" - integrity sha1-CrRSaH/gws+x4rngAV3gf8LWLdk= - dependencies: - "@babel/types" "^7.20.2" - -"@babel/helper-skip-transparent-expression-wrappers@^7.20.0": - version "7.20.0" - resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.20.0.tgz#fbe4c52f60518cab8140d77101f0e63a8a230684" - integrity sha1-++TFL2BRjKuBQNdxAfDmOoojBoQ= - dependencies: - "@babel/types" "^7.20.0" - -"@babel/helper-split-export-declaration@^7.18.6": - version "7.18.6" - resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz#7367949bc75b20c6d5a5d4a97bba2824ae8ef075" - integrity sha1-c2eUm8dbIMbVpdSpe7ooJK6O8HU= - dependencies: - "@babel/types" "^7.18.6" - -"@babel/helper-string-parser@^7.19.4": - version "7.19.4" - resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz#38d3acb654b4701a9b77fb0615a96f775c3a9e63" - integrity sha1-ONOstlS0cBqbd/sGFalvd1w6nmM= - -"@babel/helper-validator-identifier@^7.18.6", "@babel/helper-validator-identifier@^7.19.1": - version "7.19.1" - resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz#7eea834cf32901ffdc1a7ee555e2f9c27e249ca2" - integrity sha1-fuqDTPMpAf/cGn7lVeL5wn4knKI= - -"@babel/helper-validator-option@^7.18.6": - version "7.18.6" - resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz#bf0d2b5a509b1f336099e4ff36e1a63aa5db4db8" - integrity sha1-vw0rWlCbHzNgmeT/NuGmOqXbTbg= - -"@babel/helper-wrap-function@^7.18.9": - version "7.20.5" - resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/helper-wrap-function/-/helper-wrap-function-7.20.5.tgz#75e2d84d499a0ab3b31c33bcfe59d6b8a45f62e3" - integrity sha1-deLYTUmaCrOzHDO8/lnWuKRfYuM= - dependencies: - "@babel/helper-function-name" "^7.19.0" - "@babel/template" "^7.18.10" - "@babel/traverse" "^7.20.5" - "@babel/types" "^7.20.5" - -"@babel/helpers@^7.20.7": - version "7.20.13" - resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/helpers/-/helpers-7.20.13.tgz#e3cb731fb70dc5337134cadc24cbbad31cc87ad2" - integrity sha1-48tzH7cNxTNxNMrcJMu60xzIetI= - dependencies: - "@babel/template" "^7.20.7" - "@babel/traverse" "^7.20.13" - "@babel/types" "^7.20.7" - -"@babel/highlight@^7.18.6": - version "7.18.6" - resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/highlight/-/highlight-7.18.6.tgz#81158601e93e2563795adcbfbdf5d64be3f2ecdf" - integrity sha1-gRWGAek+JWN5Wty/vfXWS+Py7N8= - dependencies: - "@babel/helper-validator-identifier" "^7.18.6" - chalk "^2.0.0" +"@babel/helper-module-transforms@^7.22.5", "@babel/helper-module-transforms@^7.23.0": + version "7.23.0" + resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/helper-module-transforms/-/helper-module-transforms-7.23.0.tgz#3ec246457f6c842c0aee62a01f60739906f7047e" + integrity sha1-PsJGRX9shCwK7mKgH2BzmQb3BH4= + dependencies: + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-module-imports" "^7.22.15" + "@babel/helper-simple-access" "^7.22.5" + "@babel/helper-split-export-declaration" "^7.22.6" + "@babel/helper-validator-identifier" "^7.22.20" + +"@babel/helper-optimise-call-expression@^7.22.5": + version "7.22.5" + resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.22.5.tgz#f21531a9ccbff644fdd156b4077c16ff0c3f609e" + integrity sha1-8hUxqcy/9kT90Va0B3wW/ww/YJ4= + dependencies: + "@babel/types" "^7.22.5" + +"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.22.5", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": + version "7.22.5" + resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz#dd7ee3735e8a313b9f7b05a773d892e88e6d7295" + integrity sha1-3X7jc16KMTufewWnc9iS6I5tcpU= + +"@babel/helper-remap-async-to-generator@^7.22.20", "@babel/helper-remap-async-to-generator@^7.22.5": + version "7.22.20" + resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.22.20.tgz#7b68e1cb4fa964d2996fd063723fb48eca8498e0" + integrity sha1-e2jhy0+pZNKZb9Bjcj+0jsqEmOA= + dependencies: + "@babel/helper-annotate-as-pure" "^7.22.5" + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-wrap-function" "^7.22.20" + +"@babel/helper-replace-supers@^7.22.5", "@babel/helper-replace-supers@^7.22.9": + version "7.22.20" + resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/helper-replace-supers/-/helper-replace-supers-7.22.20.tgz#e37d367123ca98fe455a9887734ed2e16eb7a793" + integrity sha1-4302cSPKmP5FWpiHc07S4W63p5M= + dependencies: + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-member-expression-to-functions" "^7.22.15" + "@babel/helper-optimise-call-expression" "^7.22.5" + +"@babel/helper-simple-access@^7.22.5": + version "7.22.5" + resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz#4938357dc7d782b80ed6dbb03a0fba3d22b1d5de" + integrity sha1-STg1fcfXgrgO1tuwOg+6PSKx1d4= + dependencies: + "@babel/types" "^7.22.5" + +"@babel/helper-skip-transparent-expression-wrappers@^7.22.5": + version "7.22.5" + resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.22.5.tgz#007f15240b5751c537c40e77abb4e89eeaaa8847" + integrity sha1-AH8VJAtXUcU3xA53q7TonuqqiEc= + dependencies: + "@babel/types" "^7.22.5" + +"@babel/helper-split-export-declaration@^7.22.6": + version "7.22.6" + resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz#322c61b7310c0997fe4c323955667f18fcefb91c" + integrity sha1-MixhtzEMCZf+TDI5VWZ/GPzvuRw= + dependencies: + "@babel/types" "^7.22.5" + +"@babel/helper-string-parser@^7.22.5": + version "7.22.5" + resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz#533f36457a25814cf1df6488523ad547d784a99f" + integrity sha1-Uz82RXolgUzx32SIUjrVR9eEqZ8= + +"@babel/helper-validator-identifier@^7.22.20": + version "7.22.20" + resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz#c4ae002c61d2879e724581d96665583dbc1dc0e0" + integrity sha1-xK4ALGHSh55yRYHZZmVYPbwdwOA= + +"@babel/helper-validator-option@^7.22.15": + version "7.22.15" + resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/helper-validator-option/-/helper-validator-option-7.22.15.tgz#694c30dfa1d09a6534cdfcafbe56789d36aba040" + integrity sha1-aUww36HQmmU0zfyvvlZ4nTaroEA= + +"@babel/helper-wrap-function@^7.22.20": + version "7.22.20" + resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/helper-wrap-function/-/helper-wrap-function-7.22.20.tgz#15352b0b9bfb10fc9c76f79f6342c00e3411a569" + integrity sha1-FTUrC5v7EPycdvefY0LADjQRpWk= + dependencies: + "@babel/helper-function-name" "^7.22.5" + "@babel/template" "^7.22.15" + "@babel/types" "^7.22.19" + +"@babel/helpers@^7.23.2": + version "7.23.2" + resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/helpers/-/helpers-7.23.2.tgz#2832549a6e37d484286e15ba36a5330483cac767" + integrity sha1-KDJUmm431IQobhW6NqUzBIPKx2c= + dependencies: + "@babel/template" "^7.22.15" + "@babel/traverse" "^7.23.2" + "@babel/types" "^7.23.0" + +"@babel/highlight@^7.22.13": + version "7.22.20" + resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/highlight/-/highlight-7.22.20.tgz#4ca92b71d80554b01427815e06f2df965b9c1f54" + integrity sha1-TKkrcdgFVLAUJ4FeBvLfllucH1Q= + dependencies: + "@babel/helper-validator-identifier" "^7.22.20" + chalk "^2.4.2" js-tokens "^4.0.0" -"@babel/parser@^7.20.13", "@babel/parser@^7.20.7": - version "7.20.15" - resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/parser/-/parser-7.20.15.tgz#eec9f36d8eaf0948bb88c87a46784b5ee9fd0c89" - integrity sha1-7snzbY6vCUi7iMh6RnhLXun9DIk= - -"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.18.6": - version "7.18.6" - resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.18.6.tgz#da5b8f9a580acdfbe53494dba45ea389fb09a4d2" - integrity sha1-2luPmlgKzfvlNJTbpF6jifsJpNI= - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.18.9": - version "7.20.7" - resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.20.7.tgz#d9c85589258539a22a901033853101a6198d4ef1" - integrity sha1-2chViSWFOaIqkBAzhTEBphmNTvE= - dependencies: - "@babel/helper-plugin-utils" "^7.20.2" - "@babel/helper-skip-transparent-expression-wrappers" "^7.20.0" - "@babel/plugin-proposal-optional-chaining" "^7.20.7" - -"@babel/plugin-proposal-async-generator-functions@^7.20.1": - version "7.20.7" - resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.20.7.tgz#bfb7276d2d573cb67ba379984a2334e262ba5326" - integrity sha1-v7cnbS1XPLZ7o3mYSiM04mK6UyY= - dependencies: - "@babel/helper-environment-visitor" "^7.18.9" - "@babel/helper-plugin-utils" "^7.20.2" - "@babel/helper-remap-async-to-generator" "^7.18.9" - "@babel/plugin-syntax-async-generators" "^7.8.4" - -"@babel/plugin-proposal-class-properties@^7.18.6": - version "7.18.6" - resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz#b110f59741895f7ec21a6fff696ec46265c446a3" - integrity sha1-sRD1l0GJX37CGm//aW7EYmXERqM= - dependencies: - "@babel/helper-create-class-features-plugin" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-proposal-class-static-block@^7.18.6": - version "7.20.7" - resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.20.7.tgz#92592e9029b13b15be0f7ce6a7aedc2879ca45a7" - integrity sha1-klkukCmxOxW+D3zmp67cKHnKRac= - dependencies: - "@babel/helper-create-class-features-plugin" "^7.20.7" - "@babel/helper-plugin-utils" "^7.20.2" - "@babel/plugin-syntax-class-static-block" "^7.14.5" - -"@babel/plugin-proposal-dynamic-import@^7.18.6": - version "7.18.6" - resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.18.6.tgz#72bcf8d408799f547d759298c3c27c7e7faa4d94" - integrity sha1-crz41Ah5n1R9dZKYw8J8fn+qTZQ= - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/plugin-syntax-dynamic-import" "^7.8.3" - -"@babel/plugin-proposal-export-namespace-from@^7.18.9": - version "7.18.9" - resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.18.9.tgz#5f7313ab348cdb19d590145f9247540e94761203" - integrity sha1-X3MTqzSM2xnVkBRfkkdUDpR2EgM= - dependencies: - "@babel/helper-plugin-utils" "^7.18.9" - "@babel/plugin-syntax-export-namespace-from" "^7.8.3" - -"@babel/plugin-proposal-json-strings@^7.18.6": - version "7.18.6" - resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.18.6.tgz#7e8788c1811c393aff762817e7dbf1ebd0c05f0b" - integrity sha1-foeIwYEcOTr/digX59vx69DAXws= - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/plugin-syntax-json-strings" "^7.8.3" - -"@babel/plugin-proposal-logical-assignment-operators@^7.18.9": - version "7.20.7" - resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.20.7.tgz#dfbcaa8f7b4d37b51e8bfb46d94a5aea2bb89d83" - integrity sha1-37yqj3tNN7Uei/tG2Upa6iu4nYM= - dependencies: - "@babel/helper-plugin-utils" "^7.20.2" - "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" +"@babel/parser@^7.22.15", "@babel/parser@^7.23.0": + version "7.23.0" + resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/parser/-/parser-7.23.0.tgz#da950e622420bf96ca0d0f2909cdddac3acd8719" + integrity sha1-2pUOYiQgv5bKDQ8pCc3drDrNhxk= -"@babel/plugin-proposal-nullish-coalescing-operator@^7.18.6": - version "7.18.6" - resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz#fdd940a99a740e577d6c753ab6fbb43fdb9467e1" - integrity sha1-/dlAqZp0Dld9bHU6tvu0P9uUZ+E= +"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.22.15": + version "7.22.15" + resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.22.15.tgz#02dc8a03f613ed5fdc29fb2f728397c78146c962" + integrity sha1-AtyKA/YT7V/cKfsvcoOXx4FGyWI= dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" + "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-proposal-numeric-separator@^7.18.6": - version "7.18.6" - resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.18.6.tgz#899b14fbafe87f053d2c5ff05b36029c62e13c75" - integrity sha1-iZsU+6/ofwU9LF/wWzYCnGLhPHU= +"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.22.15": + version "7.22.15" + resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.22.15.tgz#2aeb91d337d4e1a1e7ce85b76a37f5301781200f" + integrity sha1-KuuR0zfU4aHnzoW3ajf1MBeBIA8= dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/plugin-syntax-numeric-separator" "^7.10.4" - -"@babel/plugin-proposal-object-rest-spread@^7.20.2": - version "7.20.7" - resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.20.7.tgz#aa662940ef425779c75534a5c41e9d936edc390a" - integrity sha1-qmYpQO9CV3nHVTSlxB6dk27cOQo= - dependencies: - "@babel/compat-data" "^7.20.5" - "@babel/helper-compilation-targets" "^7.20.7" - "@babel/helper-plugin-utils" "^7.20.2" - "@babel/plugin-syntax-object-rest-spread" "^7.8.3" - "@babel/plugin-transform-parameters" "^7.20.7" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" + "@babel/plugin-transform-optional-chaining" "^7.22.15" -"@babel/plugin-proposal-optional-catch-binding@^7.18.6": - version "7.18.6" - resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.18.6.tgz#f9400d0e6a3ea93ba9ef70b09e72dd6da638a2cb" - integrity sha1-+UANDmo+qTup73CwnnLdbaY4oss= - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" - -"@babel/plugin-proposal-optional-chaining@^7.18.9", "@babel/plugin-proposal-optional-chaining@^7.20.7": - version "7.20.7" - resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.20.7.tgz#49f2b372519ab31728cc14115bb0998b15bfda55" - integrity sha1-SfKzclGasxcozBQRW7CZixW/2lU= - dependencies: - "@babel/helper-plugin-utils" "^7.20.2" - "@babel/helper-skip-transparent-expression-wrappers" "^7.20.0" - "@babel/plugin-syntax-optional-chaining" "^7.8.3" - -"@babel/plugin-proposal-private-methods@^7.18.6": - version "7.18.6" - resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.18.6.tgz#5209de7d213457548a98436fa2882f52f4be6bea" - integrity sha1-UgnefSE0V1SKmENvoogvUvS+a+o= - dependencies: - "@babel/helper-create-class-features-plugin" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-proposal-private-property-in-object@^7.18.6": - version "7.20.5" - resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.20.5.tgz#309c7668f2263f1c711aa399b5a9a6291eef6135" - integrity sha1-MJx2aPImPxxxGqOZtammKR7vYTU= - dependencies: - "@babel/helper-annotate-as-pure" "^7.18.6" - "@babel/helper-create-class-features-plugin" "^7.20.5" - "@babel/helper-plugin-utils" "^7.20.2" - "@babel/plugin-syntax-private-property-in-object" "^7.14.5" - -"@babel/plugin-proposal-unicode-property-regex@^7.18.6", "@babel/plugin-proposal-unicode-property-regex@^7.4.4": - version "7.18.6" - resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.18.6.tgz#af613d2cd5e643643b65cded64207b15c85cb78e" - integrity sha1-r2E9LNXmQ2Q7Zc3tZCB7Fchct44= - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" +"@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2": + version "7.21.0-placeholder-for-preset-env.2" + resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz#7844f9289546efa9febac2de4cfe358a050bd703" + integrity sha1-eET5KJVG76n+usLeTP41igUL1wM= "@babel/plugin-syntax-async-generators@^7.8.4": version "7.8.4" @@ -450,12 +318,26 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-syntax-import-assertions@^7.20.0": - version "7.20.0" - resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.20.0.tgz#bb50e0d4bea0957235390641209394e87bdb9cc4" - integrity sha1-u1Dg1L6glXI1OQZBIJOU6HvbnMQ= +"@babel/plugin-syntax-import-assertions@^7.22.5": + version "7.22.5" + resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.22.5.tgz#07d252e2aa0bc6125567f742cd58619cb14dce98" + integrity sha1-B9JS4qoLxhJVZ/dCzVhhnLFNzpg= dependencies: - "@babel/helper-plugin-utils" "^7.19.0" + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-syntax-import-attributes@^7.22.5": + version "7.22.5" + resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.22.5.tgz#ab840248d834410b829f569f5262b9e517555ecb" + integrity sha1-q4QCSNg0QQuCn1afUmK55RdVXss= + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-syntax-import-meta@^7.10.4": + version "7.10.4" + resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz#ee601348c370fa334d2207be158777496521fd51" + integrity sha1-7mATSMNw+jNNIge+FYd3SWUh/VE= + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-json-strings@^7.8.3": version "7.8.3" @@ -520,289 +402,422 @@ dependencies: "@babel/helper-plugin-utils" "^7.14.5" -"@babel/plugin-transform-arrow-functions@^7.18.6": - version "7.20.7" - resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.20.7.tgz#bea332b0e8b2dab3dafe55a163d8227531ab0551" - integrity sha1-vqMysOiy2rPa/lWhY9gidTGrBVE= +"@babel/plugin-syntax-unicode-sets-regex@^7.18.6": + version "7.18.6" + resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz#d49a3b3e6b52e5be6740022317580234a6a47357" + integrity sha1-1Jo7PmtS5b5nQAIjF1gCNKakc1c= + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-transform-arrow-functions@^7.22.5": + version "7.22.5" + resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.22.5.tgz#e5ba566d0c58a5b2ba2a8b795450641950b71958" + integrity sha1-5bpWbQxYpbK6Kot5VFBkGVC3GVg= + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-async-generator-functions@^7.23.2": + version "7.23.2" + resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.23.2.tgz#054afe290d64c6f576f371ccc321772c8ea87ebb" + integrity sha1-BUr+KQ1kxvV283HMwyF3LI6ofrs= dependencies: - "@babel/helper-plugin-utils" "^7.20.2" + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-remap-async-to-generator" "^7.22.20" + "@babel/plugin-syntax-async-generators" "^7.8.4" -"@babel/plugin-transform-async-to-generator@^7.18.6": - version "7.20.7" - resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.20.7.tgz#dfee18623c8cb31deb796aa3ca84dda9cea94354" - integrity sha1-3+4YYjyMsx3reWqjyoTdqc6pQ1Q= +"@babel/plugin-transform-async-to-generator@^7.22.5": + version "7.22.5" + resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.22.5.tgz#c7a85f44e46f8952f6d27fe57c2ed3cc084c3775" + integrity sha1-x6hfRORviVL20n/lfC7TzAhMN3U= dependencies: - "@babel/helper-module-imports" "^7.18.6" - "@babel/helper-plugin-utils" "^7.20.2" - "@babel/helper-remap-async-to-generator" "^7.18.9" + "@babel/helper-module-imports" "^7.22.5" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-remap-async-to-generator" "^7.22.5" -"@babel/plugin-transform-block-scoped-functions@^7.18.6": - version "7.18.6" - resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.18.6.tgz#9187bf4ba302635b9d70d986ad70f038726216a8" - integrity sha1-kYe/S6MCY1udcNmGrXDwOHJiFqg= +"@babel/plugin-transform-block-scoped-functions@^7.22.5": + version "7.22.5" + resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.22.5.tgz#27978075bfaeb9fa586d3cb63a3d30c1de580024" + integrity sha1-J5eAdb+uufpYbTy2Oj0wwd5YACQ= dependencies: - "@babel/helper-plugin-utils" "^7.18.6" + "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-block-scoping@^7.20.2": - version "7.20.15" - resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.20.15.tgz#3e1b2aa9cbbe1eb8d644c823141a9c5c2a22392d" - integrity sha1-Phsqqcu+HrjWRMgjFBqcXCoiOS0= - dependencies: - "@babel/helper-plugin-utils" "^7.20.2" - -"@babel/plugin-transform-classes@^7.20.2": - version "7.20.7" - resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/plugin-transform-classes/-/plugin-transform-classes-7.20.7.tgz#f438216f094f6bb31dc266ebfab8ff05aecad073" - integrity sha1-9DghbwlPa7Mdwmbr+rj/Ba7K0HM= - dependencies: - "@babel/helper-annotate-as-pure" "^7.18.6" - "@babel/helper-compilation-targets" "^7.20.7" - "@babel/helper-environment-visitor" "^7.18.9" - "@babel/helper-function-name" "^7.19.0" - "@babel/helper-optimise-call-expression" "^7.18.6" - "@babel/helper-plugin-utils" "^7.20.2" - "@babel/helper-replace-supers" "^7.20.7" - "@babel/helper-split-export-declaration" "^7.18.6" +"@babel/plugin-transform-block-scoping@^7.23.0": + version "7.23.0" + resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.23.0.tgz#8744d02c6c264d82e1a4bc5d2d501fd8aff6f022" + integrity sha1-h0TQLGwmTYLhpLxdLVAf2K/28CI= + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-class-properties@^7.22.5": + version "7.22.5" + resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.22.5.tgz#97a56e31ad8c9dc06a0b3710ce7803d5a48cca77" + integrity sha1-l6VuMa2MncBqCzcQzngD1aSMync= + dependencies: + "@babel/helper-create-class-features-plugin" "^7.22.5" + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-class-static-block@^7.22.11": + version "7.22.11" + resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.22.11.tgz#dc8cc6e498f55692ac6b4b89e56d87cec766c974" + integrity sha1-3IzG5Jj1VpKsa0uJ5W2HzsdmyXQ= + dependencies: + "@babel/helper-create-class-features-plugin" "^7.22.11" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-class-static-block" "^7.14.5" + +"@babel/plugin-transform-classes@^7.22.15": + version "7.22.15" + resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/plugin-transform-classes/-/plugin-transform-classes-7.22.15.tgz#aaf4753aee262a232bbc95451b4bdf9599c65a0b" + integrity sha1-qvR1Ou4mKiMrvJVFG0vflZnGWgs= + dependencies: + "@babel/helper-annotate-as-pure" "^7.22.5" + "@babel/helper-compilation-targets" "^7.22.15" + "@babel/helper-environment-visitor" "^7.22.5" + "@babel/helper-function-name" "^7.22.5" + "@babel/helper-optimise-call-expression" "^7.22.5" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-replace-supers" "^7.22.9" + "@babel/helper-split-export-declaration" "^7.22.6" globals "^11.1.0" -"@babel/plugin-transform-computed-properties@^7.18.9": - version "7.20.7" - resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.20.7.tgz#704cc2fd155d1c996551db8276d55b9d46e4d0aa" - integrity sha1-cEzC/RVdHJllUduCdtVbnUbk0Ko= +"@babel/plugin-transform-computed-properties@^7.22.5": + version "7.22.5" + resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.22.5.tgz#cd1e994bf9f316bd1c2dafcd02063ec261bb3869" + integrity sha1-zR6ZS/nzFr0cLa/NAgY+wmG7OGk= dependencies: - "@babel/helper-plugin-utils" "^7.20.2" - "@babel/template" "^7.20.7" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/template" "^7.22.5" -"@babel/plugin-transform-destructuring@^7.20.2": - version "7.20.7" - resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.20.7.tgz#8bda578f71620c7de7c93af590154ba331415454" - integrity sha1-i9pXj3FiDH3nyTr1kBVLozFBVFQ= +"@babel/plugin-transform-destructuring@^7.23.0": + version "7.23.0" + resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.23.0.tgz#6447aa686be48b32eaf65a73e0e2c0bd010a266c" + integrity sha1-ZEeqaGvkizLq9lpz4OLAvQEKJmw= dependencies: - "@babel/helper-plugin-utils" "^7.20.2" + "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-dotall-regex@^7.18.6", "@babel/plugin-transform-dotall-regex@^7.4.4": - version "7.18.6" - resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.18.6.tgz#b286b3e7aae6c7b861e45bed0a2fafd6b1a4fef8" - integrity sha1-soaz56rmx7hh5FvtCi+v1rGk/vg= +"@babel/plugin-transform-dotall-regex@^7.22.5": + version "7.22.5" + resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.22.5.tgz#dbb4f0e45766eb544e193fb00e65a1dd3b2a4165" + integrity sha1-27Tw5Fdm61ROGT+wDmWh3TsqQWU= dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" + "@babel/helper-create-regexp-features-plugin" "^7.22.5" + "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-duplicate-keys@^7.18.9": - version "7.18.9" - resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.18.9.tgz#687f15ee3cdad6d85191eb2a372c4528eaa0ae0e" - integrity sha1-aH8V7jza1thRkesqNyxFKOqgrg4= +"@babel/plugin-transform-duplicate-keys@^7.22.5": + version "7.22.5" + resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.22.5.tgz#b6e6428d9416f5f0bba19c70d1e6e7e0b88ab285" + integrity sha1-tuZCjZQW9fC7oZxw0ebn4LiKsoU= dependencies: - "@babel/helper-plugin-utils" "^7.18.9" + "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-exponentiation-operator@^7.18.6": - version "7.18.6" - resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.18.6.tgz#421c705f4521888c65e91fdd1af951bfefd4dacd" - integrity sha1-QhxwX0UhiIxl6R/dGvlRv+/U2s0= +"@babel/plugin-transform-dynamic-import@^7.22.11": + version "7.22.11" + resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.22.11.tgz#2c7722d2a5c01839eaf31518c6ff96d408e447aa" + integrity sha1-LHci0qXAGDnq8xUYxv+W1AjkR6o= dependencies: - "@babel/helper-builder-binary-assignment-operator-visitor" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-dynamic-import" "^7.8.3" -"@babel/plugin-transform-for-of@^7.18.8": - version "7.18.8" - resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.18.8.tgz#6ef8a50b244eb6a0bdbad0c7c61877e4e30097c1" - integrity sha1-bvilCyROtqC9utDHxhh35OMAl8E= +"@babel/plugin-transform-exponentiation-operator@^7.22.5": + version "7.22.5" + resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.22.5.tgz#402432ad544a1f9a480da865fda26be653e48f6a" + integrity sha1-QCQyrVRKH5pIDahl/aJr5lPkj2o= dependencies: - "@babel/helper-plugin-utils" "^7.18.6" + "@babel/helper-builder-binary-assignment-operator-visitor" "^7.22.5" + "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-function-name@^7.18.9": - version "7.18.9" - resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.18.9.tgz#cc354f8234e62968946c61a46d6365440fc764e0" - integrity sha1-zDVPgjTmKWiUbGGkbWNlRA/HZOA= +"@babel/plugin-transform-export-namespace-from@^7.22.11": + version "7.22.11" + resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.22.11.tgz#b3c84c8f19880b6c7440108f8929caf6056db26c" + integrity sha1-s8hMjxmIC2x0QBCPiSnK9gVtsmw= dependencies: - "@babel/helper-compilation-targets" "^7.18.9" - "@babel/helper-function-name" "^7.18.9" - "@babel/helper-plugin-utils" "^7.18.9" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-export-namespace-from" "^7.8.3" -"@babel/plugin-transform-literals@^7.18.9": - version "7.18.9" - resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/plugin-transform-literals/-/plugin-transform-literals-7.18.9.tgz#72796fdbef80e56fba3c6a699d54f0de557444bc" - integrity sha1-cnlv2++A5W+6PGppnVTw3lV0RLw= +"@babel/plugin-transform-for-of@^7.22.15": + version "7.22.15" + resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.22.15.tgz#f64b4ccc3a4f131a996388fae7680b472b306b29" + integrity sha1-9ktMzDpPExqZY4j652gLRyswayk= dependencies: - "@babel/helper-plugin-utils" "^7.18.9" + "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-member-expression-literals@^7.18.6": - version "7.18.6" - resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.18.6.tgz#ac9fdc1a118620ac49b7e7a5d2dc177a1bfee88e" - integrity sha1-rJ/cGhGGIKxJt+el0twXehv+6I4= +"@babel/plugin-transform-function-name@^7.22.5": + version "7.22.5" + resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.22.5.tgz#935189af68b01898e0d6d99658db6b164205c143" + integrity sha1-k1GJr2iwGJjg1tmWWNtrFkIFwUM= dependencies: - "@babel/helper-plugin-utils" "^7.18.6" + "@babel/helper-compilation-targets" "^7.22.5" + "@babel/helper-function-name" "^7.22.5" + "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-modules-amd@^7.19.6": - version "7.20.11" - resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.20.11.tgz#3daccca8e4cc309f03c3a0c4b41dc4b26f55214a" - integrity sha1-PazMqOTMMJ8Dw6DEtB3Esm9VIUo= +"@babel/plugin-transform-json-strings@^7.22.11": + version "7.22.11" + resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.22.11.tgz#689a34e1eed1928a40954e37f74509f48af67835" + integrity sha1-aJo04e7RkopAlU4390UJ9Ir2eDU= dependencies: - "@babel/helper-module-transforms" "^7.20.11" - "@babel/helper-plugin-utils" "^7.20.2" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-json-strings" "^7.8.3" -"@babel/plugin-transform-modules-commonjs@^7.19.6": - version "7.20.11" - resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.20.11.tgz#8cb23010869bf7669fd4b3098598b6b2be6dc607" - integrity sha1-jLIwEIab92af1LMJhZi2sr5txgc= +"@babel/plugin-transform-literals@^7.22.5": + version "7.22.5" + resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/plugin-transform-literals/-/plugin-transform-literals-7.22.5.tgz#e9341f4b5a167952576e23db8d435849b1dd7920" + integrity sha1-6TQfS1oWeVJXbiPbjUNYSbHdeSA= dependencies: - "@babel/helper-module-transforms" "^7.20.11" - "@babel/helper-plugin-utils" "^7.20.2" - "@babel/helper-simple-access" "^7.20.2" + "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-modules-systemjs@^7.19.6": - version "7.20.11" - resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.20.11.tgz#467ec6bba6b6a50634eea61c9c232654d8a4696e" - integrity sha1-Rn7Gu6a2pQY07qYcnCMmVNikaW4= +"@babel/plugin-transform-logical-assignment-operators@^7.22.11": + version "7.22.11" + resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.22.11.tgz#24c522a61688bde045b7d9bc3c2597a4d948fc9c" + integrity sha1-JMUiphaIveBFt9m8PCWXpNlI/Jw= dependencies: - "@babel/helper-hoist-variables" "^7.18.6" - "@babel/helper-module-transforms" "^7.20.11" - "@babel/helper-plugin-utils" "^7.20.2" - "@babel/helper-validator-identifier" "^7.19.1" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" -"@babel/plugin-transform-modules-umd@^7.18.6": - version "7.18.6" - resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.18.6.tgz#81d3832d6034b75b54e62821ba58f28ed0aab4b9" - integrity sha1-gdODLWA0t1tU5ighuljyjtCqtLk= +"@babel/plugin-transform-member-expression-literals@^7.22.5": + version "7.22.5" + resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.22.5.tgz#4fcc9050eded981a468347dd374539ed3e058def" + integrity sha1-T8yQUO3tmBpGg0fdN0U57T4Fje8= dependencies: - "@babel/helper-module-transforms" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" + "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-named-capturing-groups-regex@^7.19.1": - version "7.20.5" - resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.20.5.tgz#626298dd62ea51d452c3be58b285d23195ba69a8" - integrity sha1-YmKY3WLqUdRSw75YsoXSMZW6aag= +"@babel/plugin-transform-modules-amd@^7.23.0": + version "7.23.0" + resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.23.0.tgz#05b2bc43373faa6d30ca89214731f76f966f3b88" + integrity sha1-BbK8Qzc/qm0wyokhRzH3b5ZvO4g= dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.20.5" - "@babel/helper-plugin-utils" "^7.20.2" + "@babel/helper-module-transforms" "^7.23.0" + "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-new-target@^7.18.6": - version "7.18.6" - resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.18.6.tgz#d128f376ae200477f37c4ddfcc722a8a1b3246a8" - integrity sha1-0Sjzdq4gBHfzfE3fzHIqihsyRqg= +"@babel/plugin-transform-modules-commonjs@^7.23.0": + version "7.23.0" + resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.23.0.tgz#b3dba4757133b2762c00f4f94590cf6d52602481" + integrity sha1-s9ukdXEzsnYsAPT5RZDPbVJgJIE= dependencies: - "@babel/helper-plugin-utils" "^7.18.6" + "@babel/helper-module-transforms" "^7.23.0" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-simple-access" "^7.22.5" -"@babel/plugin-transform-object-super@^7.18.6": - version "7.18.6" - resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.18.6.tgz#fb3c6ccdd15939b6ff7939944b51971ddc35912c" - integrity sha1-+zxszdFZObb/eTmUS1GXHdw1kSw= +"@babel/plugin-transform-modules-systemjs@^7.23.0": + version "7.23.0" + resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.23.0.tgz#77591e126f3ff4132a40595a6cccd00a6b60d160" + integrity sha1-d1keEm8/9BMqQFlabMzQCmtg0WA= dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/helper-replace-supers" "^7.18.6" + "@babel/helper-hoist-variables" "^7.22.5" + "@babel/helper-module-transforms" "^7.23.0" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-validator-identifier" "^7.22.20" -"@babel/plugin-transform-parameters@^7.20.1", "@babel/plugin-transform-parameters@^7.20.7": - version "7.20.7" - resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.20.7.tgz#0ee349e9d1bc96e78e3b37a7af423a4078a7083f" - integrity sha1-DuNJ6dG8lueOOzenr0I6QHinCD8= +"@babel/plugin-transform-modules-umd@^7.22.5": + version "7.22.5" + resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.22.5.tgz#4694ae40a87b1745e3775b6a7fe96400315d4f98" + integrity sha1-RpSuQKh7F0Xjd1tqf+lkADFdT5g= dependencies: - "@babel/helper-plugin-utils" "^7.20.2" + "@babel/helper-module-transforms" "^7.22.5" + "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-property-literals@^7.18.6": - version "7.18.6" - resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.18.6.tgz#e22498903a483448e94e032e9bbb9c5ccbfc93a3" - integrity sha1-4iSYkDpINEjpTgMum7ucXMv8k6M= +"@babel/plugin-transform-named-capturing-groups-regex@^7.22.5": + version "7.22.5" + resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.22.5.tgz#67fe18ee8ce02d57c855185e27e3dc959b2e991f" + integrity sha1-Z/4Y7ozgLVfIVRheJ+PclZsumR8= dependencies: - "@babel/helper-plugin-utils" "^7.18.6" + "@babel/helper-create-regexp-features-plugin" "^7.22.5" + "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-regenerator@^7.18.6": - version "7.20.5" - resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.20.5.tgz#57cda588c7ffb7f4f8483cc83bdcea02a907f04d" - integrity sha1-V82liMf/t/T4SDzIO9zqAqkH8E0= +"@babel/plugin-transform-new-target@^7.22.5": + version "7.22.5" + resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.22.5.tgz#1b248acea54ce44ea06dfd37247ba089fcf9758d" + integrity sha1-GySKzqVM5E6gbf03JHugifz5dY0= dependencies: - "@babel/helper-plugin-utils" "^7.20.2" - regenerator-transform "^0.15.1" + "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-reserved-words@^7.18.6": - version "7.18.6" - resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.18.6.tgz#b1abd8ebf8edaa5f7fe6bbb8d2133d23b6a6f76a" - integrity sha1-savY6/jtql9/5ru40hM9I7am92o= +"@babel/plugin-transform-nullish-coalescing-operator@^7.22.11": + version "7.22.11" + resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.22.11.tgz#debef6c8ba795f5ac67cd861a81b744c5d38d9fc" + integrity sha1-3r72yLp5X1rGfNhhqBt0TF042fw= dependencies: - "@babel/helper-plugin-utils" "^7.18.6" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" -"@babel/plugin-transform-shorthand-properties@^7.18.6": - version "7.18.6" - resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.18.6.tgz#6d6df7983d67b195289be24909e3f12a8f664dc9" - integrity sha1-bW33mD1nsZUom+JJCePxKo9mTck= +"@babel/plugin-transform-numeric-separator@^7.22.11": + version "7.22.11" + resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.22.11.tgz#498d77dc45a6c6db74bb829c02a01c1d719cbfbd" + integrity sha1-SY133EWmxtt0u4KcAqAcHXGcv70= dependencies: - "@babel/helper-plugin-utils" "^7.18.6" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-numeric-separator" "^7.10.4" -"@babel/plugin-transform-spread@^7.19.0": - version "7.20.7" - resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/plugin-transform-spread/-/plugin-transform-spread-7.20.7.tgz#c2d83e0b99d3bf83e07b11995ee24bf7ca09401e" - integrity sha1-wtg+C5nTv4PgexGZXuJL98oJQB4= +"@babel/plugin-transform-object-rest-spread@^7.22.15": + version "7.22.15" + resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.22.15.tgz#21a95db166be59b91cde48775310c0df6e1da56f" + integrity sha1-IaldsWa+Wbkc3kh3UxDA324dpW8= dependencies: - "@babel/helper-plugin-utils" "^7.20.2" - "@babel/helper-skip-transparent-expression-wrappers" "^7.20.0" + "@babel/compat-data" "^7.22.9" + "@babel/helper-compilation-targets" "^7.22.15" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-object-rest-spread" "^7.8.3" + "@babel/plugin-transform-parameters" "^7.22.15" -"@babel/plugin-transform-sticky-regex@^7.18.6": - version "7.18.6" - resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.18.6.tgz#c6706eb2b1524028e317720339583ad0f444adcc" - integrity sha1-xnBusrFSQCjjF3IDOVg60PRErcw= +"@babel/plugin-transform-object-super@^7.22.5": + version "7.22.5" + resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.22.5.tgz#794a8d2fcb5d0835af722173c1a9d704f44e218c" + integrity sha1-eUqNL8tdCDWvciFzwanXBPROIYw= dependencies: - "@babel/helper-plugin-utils" "^7.18.6" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-replace-supers" "^7.22.5" -"@babel/plugin-transform-template-literals@^7.18.9": - version "7.18.9" - resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.18.9.tgz#04ec6f10acdaa81846689d63fae117dd9c243a5e" - integrity sha1-BOxvEKzaqBhGaJ1j+uEX3ZwkOl4= +"@babel/plugin-transform-optional-catch-binding@^7.22.11": + version "7.22.11" + resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.22.11.tgz#461cc4f578a127bb055527b3e77404cad38c08e0" + integrity sha1-RhzE9XihJ7sFVSez53QEytOMCOA= dependencies: - "@babel/helper-plugin-utils" "^7.18.9" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" -"@babel/plugin-transform-typeof-symbol@^7.18.9": - version "7.18.9" - resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.18.9.tgz#c8cea68263e45addcd6afc9091429f80925762c0" - integrity sha1-yM6mgmPkWt3NavyQkUKfgJJXYsA= +"@babel/plugin-transform-optional-chaining@^7.22.15", "@babel/plugin-transform-optional-chaining@^7.23.0": + version "7.23.0" + resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.23.0.tgz#73ff5fc1cf98f542f09f29c0631647d8ad0be158" + integrity sha1-c/9fwc+Y9ULwnynAYxZH2K0L4Vg= dependencies: - "@babel/helper-plugin-utils" "^7.18.9" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" + "@babel/plugin-syntax-optional-chaining" "^7.8.3" -"@babel/plugin-transform-unicode-escapes@^7.18.10": - version "7.18.10" - resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.18.10.tgz#1ecfb0eda83d09bbcb77c09970c2dd55832aa246" - integrity sha1-Hs+w7ag9CbvLd8CZcMLdVYMqokY= +"@babel/plugin-transform-parameters@^7.22.15": + version "7.22.15" + resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.22.15.tgz#719ca82a01d177af358df64a514d64c2e3edb114" + integrity sha1-cZyoKgHRd681jfZKUU1kwuPtsRQ= dependencies: - "@babel/helper-plugin-utils" "^7.18.9" + "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-unicode-regex@^7.18.6": - version "7.18.6" - resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.18.6.tgz#194317225d8c201bbae103364ffe9e2cea36cdca" - integrity sha1-GUMXIl2MIBu64QM2T/6eLOo2zco= +"@babel/plugin-transform-private-methods@^7.22.5": + version "7.22.5" + resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.22.5.tgz#21c8af791f76674420a147ae62e9935d790f8722" + integrity sha1-IciveR92Z0QgoUeuYumTXXkPhyI= dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" + "@babel/helper-create-class-features-plugin" "^7.22.5" + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-private-property-in-object@^7.22.11": + version "7.22.11" + resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.22.11.tgz#ad45c4fc440e9cb84c718ed0906d96cf40f9a4e1" + integrity sha1-rUXE/EQOnLhMcY7QkG2Wz0D5pOE= + dependencies: + "@babel/helper-annotate-as-pure" "^7.22.5" + "@babel/helper-create-class-features-plugin" "^7.22.11" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-private-property-in-object" "^7.14.5" + +"@babel/plugin-transform-property-literals@^7.22.5": + version "7.22.5" + resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.22.5.tgz#b5ddabd73a4f7f26cd0e20f5db48290b88732766" + integrity sha1-td2r1zpPfybNDiD120gpC4hzJ2Y= + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-regenerator@^7.22.10": + version "7.22.10" + resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.22.10.tgz#8ceef3bd7375c4db7652878b0241b2be5d0c3cca" + integrity sha1-jO7zvXN1xNt2UoeLAkGyvl0MPMo= + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + regenerator-transform "^0.15.2" + +"@babel/plugin-transform-reserved-words@^7.22.5": + version "7.22.5" + resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.22.5.tgz#832cd35b81c287c4bcd09ce03e22199641f964fb" + integrity sha1-gyzTW4HCh8S80JzgPiIZlkH5ZPs= + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-shorthand-properties@^7.22.5": + version "7.22.5" + resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.22.5.tgz#6e277654be82b5559fc4b9f58088507c24f0c624" + integrity sha1-bid2VL6CtVWfxLn1gIhQfCTwxiQ= + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-spread@^7.22.5": + version "7.22.5" + resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/plugin-transform-spread/-/plugin-transform-spread-7.22.5.tgz#6487fd29f229c95e284ba6c98d65eafb893fea6b" + integrity sha1-ZIf9KfIpyV4oS6bJjWXq+4k/6ms= + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" + +"@babel/plugin-transform-sticky-regex@^7.22.5": + version "7.22.5" + resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.22.5.tgz#295aba1595bfc8197abd02eae5fc288c0deb26aa" + integrity sha1-KVq6FZW/yBl6vQLq5fwojA3rJqo= + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-template-literals@^7.22.5": + version "7.22.5" + resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.22.5.tgz#8f38cf291e5f7a8e60e9f733193f0bcc10909bff" + integrity sha1-jzjPKR5feo5g6fczGT8LzBCQm/8= + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-typeof-symbol@^7.22.5": + version "7.22.5" + resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.22.5.tgz#5e2ba478da4b603af8673ff7c54f75a97b716b34" + integrity sha1-XiukeNpLYDr4Zz/3xU91qXtxazQ= + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-unicode-escapes@^7.22.10": + version "7.22.10" + resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.22.10.tgz#c723f380f40a2b2f57a62df24c9005834c8616d9" + integrity sha1-xyPzgPQKKy9Xpi3yTJAFg0yGFtk= + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-unicode-property-regex@^7.22.5": + version "7.22.5" + resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.22.5.tgz#098898f74d5c1e86660dc112057b2d11227f1c81" + integrity sha1-CYiY901cHoZmDcESBXstESJ/HIE= + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.22.5" + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-unicode-regex@^7.22.5": + version "7.22.5" + resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.22.5.tgz#ce7e7bb3ef208c4ff67e02a22816656256d7a183" + integrity sha1-zn57s+8gjE/2fgKiKBZlYlbXoYM= + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.22.5" + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-unicode-sets-regex@^7.22.5": + version "7.22.5" + resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.22.5.tgz#77788060e511b708ffc7d42fdfbc5b37c3004e91" + integrity sha1-d3iAYOURtwj/x9Qv37xbN8MATpE= + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.22.5" + "@babel/helper-plugin-utils" "^7.22.5" "@babel/preset-env@^7.15.0": - version "7.20.2" - resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/preset-env/-/preset-env-7.20.2.tgz#9b1642aa47bb9f43a86f9630011780dab7f86506" - integrity sha1-mxZCqke7n0Oob5YwAReA2rf4ZQY= - dependencies: - "@babel/compat-data" "^7.20.1" - "@babel/helper-compilation-targets" "^7.20.0" - "@babel/helper-plugin-utils" "^7.20.2" - "@babel/helper-validator-option" "^7.18.6" - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.18.6" - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.18.9" - "@babel/plugin-proposal-async-generator-functions" "^7.20.1" - "@babel/plugin-proposal-class-properties" "^7.18.6" - "@babel/plugin-proposal-class-static-block" "^7.18.6" - "@babel/plugin-proposal-dynamic-import" "^7.18.6" - "@babel/plugin-proposal-export-namespace-from" "^7.18.9" - "@babel/plugin-proposal-json-strings" "^7.18.6" - "@babel/plugin-proposal-logical-assignment-operators" "^7.18.9" - "@babel/plugin-proposal-nullish-coalescing-operator" "^7.18.6" - "@babel/plugin-proposal-numeric-separator" "^7.18.6" - "@babel/plugin-proposal-object-rest-spread" "^7.20.2" - "@babel/plugin-proposal-optional-catch-binding" "^7.18.6" - "@babel/plugin-proposal-optional-chaining" "^7.18.9" - "@babel/plugin-proposal-private-methods" "^7.18.6" - "@babel/plugin-proposal-private-property-in-object" "^7.18.6" - "@babel/plugin-proposal-unicode-property-regex" "^7.18.6" + version "7.23.2" + resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/preset-env/-/preset-env-7.23.2.tgz#1f22be0ff0e121113260337dbc3e58fafce8d059" + integrity sha1-HyK+D/DhIREyYDN9vD5Y+vzo0Fk= + dependencies: + "@babel/compat-data" "^7.23.2" + "@babel/helper-compilation-targets" "^7.22.15" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-validator-option" "^7.22.15" + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.22.15" + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.22.15" + "@babel/plugin-proposal-private-property-in-object" "7.21.0-placeholder-for-preset-env.2" "@babel/plugin-syntax-async-generators" "^7.8.4" "@babel/plugin-syntax-class-properties" "^7.12.13" "@babel/plugin-syntax-class-static-block" "^7.14.5" "@babel/plugin-syntax-dynamic-import" "^7.8.3" "@babel/plugin-syntax-export-namespace-from" "^7.8.3" - "@babel/plugin-syntax-import-assertions" "^7.20.0" + "@babel/plugin-syntax-import-assertions" "^7.22.5" + "@babel/plugin-syntax-import-attributes" "^7.22.5" + "@babel/plugin-syntax-import-meta" "^7.10.4" "@babel/plugin-syntax-json-strings" "^7.8.3" "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" @@ -812,54 +827,69 @@ "@babel/plugin-syntax-optional-chaining" "^7.8.3" "@babel/plugin-syntax-private-property-in-object" "^7.14.5" "@babel/plugin-syntax-top-level-await" "^7.14.5" - "@babel/plugin-transform-arrow-functions" "^7.18.6" - "@babel/plugin-transform-async-to-generator" "^7.18.6" - "@babel/plugin-transform-block-scoped-functions" "^7.18.6" - "@babel/plugin-transform-block-scoping" "^7.20.2" - "@babel/plugin-transform-classes" "^7.20.2" - "@babel/plugin-transform-computed-properties" "^7.18.9" - "@babel/plugin-transform-destructuring" "^7.20.2" - "@babel/plugin-transform-dotall-regex" "^7.18.6" - "@babel/plugin-transform-duplicate-keys" "^7.18.9" - "@babel/plugin-transform-exponentiation-operator" "^7.18.6" - "@babel/plugin-transform-for-of" "^7.18.8" - "@babel/plugin-transform-function-name" "^7.18.9" - "@babel/plugin-transform-literals" "^7.18.9" - "@babel/plugin-transform-member-expression-literals" "^7.18.6" - "@babel/plugin-transform-modules-amd" "^7.19.6" - "@babel/plugin-transform-modules-commonjs" "^7.19.6" - "@babel/plugin-transform-modules-systemjs" "^7.19.6" - "@babel/plugin-transform-modules-umd" "^7.18.6" - "@babel/plugin-transform-named-capturing-groups-regex" "^7.19.1" - "@babel/plugin-transform-new-target" "^7.18.6" - "@babel/plugin-transform-object-super" "^7.18.6" - "@babel/plugin-transform-parameters" "^7.20.1" - "@babel/plugin-transform-property-literals" "^7.18.6" - "@babel/plugin-transform-regenerator" "^7.18.6" - "@babel/plugin-transform-reserved-words" "^7.18.6" - "@babel/plugin-transform-shorthand-properties" "^7.18.6" - "@babel/plugin-transform-spread" "^7.19.0" - "@babel/plugin-transform-sticky-regex" "^7.18.6" - "@babel/plugin-transform-template-literals" "^7.18.9" - "@babel/plugin-transform-typeof-symbol" "^7.18.9" - "@babel/plugin-transform-unicode-escapes" "^7.18.10" - "@babel/plugin-transform-unicode-regex" "^7.18.6" - "@babel/preset-modules" "^0.1.5" - "@babel/types" "^7.20.2" - babel-plugin-polyfill-corejs2 "^0.3.3" - babel-plugin-polyfill-corejs3 "^0.6.0" - babel-plugin-polyfill-regenerator "^0.4.1" - core-js-compat "^3.25.1" - semver "^6.3.0" - -"@babel/preset-modules@^0.1.5": - version "0.1.5" - resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/preset-modules/-/preset-modules-0.1.5.tgz#ef939d6e7f268827e1841638dc6ff95515e115d9" - integrity sha1-75Odbn8miCfhhBY43G/5VRXhFdk= + "@babel/plugin-syntax-unicode-sets-regex" "^7.18.6" + "@babel/plugin-transform-arrow-functions" "^7.22.5" + "@babel/plugin-transform-async-generator-functions" "^7.23.2" + "@babel/plugin-transform-async-to-generator" "^7.22.5" + "@babel/plugin-transform-block-scoped-functions" "^7.22.5" + "@babel/plugin-transform-block-scoping" "^7.23.0" + "@babel/plugin-transform-class-properties" "^7.22.5" + "@babel/plugin-transform-class-static-block" "^7.22.11" + "@babel/plugin-transform-classes" "^7.22.15" + "@babel/plugin-transform-computed-properties" "^7.22.5" + "@babel/plugin-transform-destructuring" "^7.23.0" + "@babel/plugin-transform-dotall-regex" "^7.22.5" + "@babel/plugin-transform-duplicate-keys" "^7.22.5" + "@babel/plugin-transform-dynamic-import" "^7.22.11" + "@babel/plugin-transform-exponentiation-operator" "^7.22.5" + "@babel/plugin-transform-export-namespace-from" "^7.22.11" + "@babel/plugin-transform-for-of" "^7.22.15" + "@babel/plugin-transform-function-name" "^7.22.5" + "@babel/plugin-transform-json-strings" "^7.22.11" + "@babel/plugin-transform-literals" "^7.22.5" + "@babel/plugin-transform-logical-assignment-operators" "^7.22.11" + "@babel/plugin-transform-member-expression-literals" "^7.22.5" + "@babel/plugin-transform-modules-amd" "^7.23.0" + "@babel/plugin-transform-modules-commonjs" "^7.23.0" + "@babel/plugin-transform-modules-systemjs" "^7.23.0" + "@babel/plugin-transform-modules-umd" "^7.22.5" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.22.5" + "@babel/plugin-transform-new-target" "^7.22.5" + "@babel/plugin-transform-nullish-coalescing-operator" "^7.22.11" + "@babel/plugin-transform-numeric-separator" "^7.22.11" + "@babel/plugin-transform-object-rest-spread" "^7.22.15" + "@babel/plugin-transform-object-super" "^7.22.5" + "@babel/plugin-transform-optional-catch-binding" "^7.22.11" + "@babel/plugin-transform-optional-chaining" "^7.23.0" + "@babel/plugin-transform-parameters" "^7.22.15" + "@babel/plugin-transform-private-methods" "^7.22.5" + "@babel/plugin-transform-private-property-in-object" "^7.22.11" + "@babel/plugin-transform-property-literals" "^7.22.5" + "@babel/plugin-transform-regenerator" "^7.22.10" + "@babel/plugin-transform-reserved-words" "^7.22.5" + "@babel/plugin-transform-shorthand-properties" "^7.22.5" + "@babel/plugin-transform-spread" "^7.22.5" + "@babel/plugin-transform-sticky-regex" "^7.22.5" + "@babel/plugin-transform-template-literals" "^7.22.5" + "@babel/plugin-transform-typeof-symbol" "^7.22.5" + "@babel/plugin-transform-unicode-escapes" "^7.22.10" + "@babel/plugin-transform-unicode-property-regex" "^7.22.5" + "@babel/plugin-transform-unicode-regex" "^7.22.5" + "@babel/plugin-transform-unicode-sets-regex" "^7.22.5" + "@babel/preset-modules" "0.1.6-no-external-plugins" + "@babel/types" "^7.23.0" + babel-plugin-polyfill-corejs2 "^0.4.6" + babel-plugin-polyfill-corejs3 "^0.8.5" + babel-plugin-polyfill-regenerator "^0.5.3" + core-js-compat "^3.31.0" + semver "^6.3.1" + +"@babel/preset-modules@0.1.6-no-external-plugins": + version "0.1.6-no-external-plugins" + resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz#ccb88a2c49c817236861fee7826080573b8a923a" + integrity sha1-zLiKLEnIFyNoYf7ngmCAVzuKkjo= dependencies: "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-proposal-unicode-property-regex" "^7.4.4" - "@babel/plugin-transform-dotall-regex" "^7.4.4" "@babel/types" "^7.4.4" esutils "^2.0.2" @@ -869,44 +899,44 @@ integrity sha1-8LppsHXh8F+yglt/rZkeetuxgxA= "@babel/runtime@^7.8.4": - version "7.20.13" - resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/runtime/-/runtime-7.20.13.tgz#7055ab8a7cff2b8f6058bf6ae45ff84ad2aded4b" - integrity sha1-cFWrinz/K49gWL9q5F/4StKt7Us= - dependencies: - regenerator-runtime "^0.13.11" - -"@babel/template@^7.18.10", "@babel/template@^7.20.7": - version "7.20.7" - resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/template/-/template-7.20.7.tgz#a15090c2839a83b02aa996c0b4994005841fd5a8" - integrity sha1-oVCQwoOag7AqqZbAtJlABYQf1ag= - dependencies: - "@babel/code-frame" "^7.18.6" - "@babel/parser" "^7.20.7" - "@babel/types" "^7.20.7" - -"@babel/traverse@^7.20.10", "@babel/traverse@^7.20.12", "@babel/traverse@^7.20.13", "@babel/traverse@^7.20.5", "@babel/traverse@^7.20.7": - version "7.20.13" - resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/traverse/-/traverse-7.20.13.tgz#817c1ba13d11accca89478bd5481b2d168d07473" - integrity sha1-gXwboT0RrMyolHi9VIGy0WjQdHM= - dependencies: - "@babel/code-frame" "^7.18.6" - "@babel/generator" "^7.20.7" - "@babel/helper-environment-visitor" "^7.18.9" - "@babel/helper-function-name" "^7.19.0" - "@babel/helper-hoist-variables" "^7.18.6" - "@babel/helper-split-export-declaration" "^7.18.6" - "@babel/parser" "^7.20.13" - "@babel/types" "^7.20.7" + version "7.23.2" + resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/runtime/-/runtime-7.23.2.tgz#062b0ac103261d68a966c4c7baf2ae3e62ec3885" + integrity sha1-BisKwQMmHWipZsTHuvKuPmLsOIU= + dependencies: + regenerator-runtime "^0.14.0" + +"@babel/template@^7.22.15", "@babel/template@^7.22.5": + version "7.22.15" + resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/template/-/template-7.22.15.tgz#09576efc3830f0430f4548ef971dde1350ef2f38" + integrity sha1-CVdu/Dgw8EMPRUjvlx3eE1DvLzg= + dependencies: + "@babel/code-frame" "^7.22.13" + "@babel/parser" "^7.22.15" + "@babel/types" "^7.22.15" + +"@babel/traverse@^7.23.2": + version "7.23.2" + resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/traverse/-/traverse-7.23.2.tgz#329c7a06735e144a506bdb2cad0268b7f46f4ad8" + integrity sha1-Mpx6BnNeFEpQa9ssrQJot/RvStg= + dependencies: + "@babel/code-frame" "^7.22.13" + "@babel/generator" "^7.23.0" + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-function-name" "^7.23.0" + "@babel/helper-hoist-variables" "^7.22.5" + "@babel/helper-split-export-declaration" "^7.22.6" + "@babel/parser" "^7.23.0" + "@babel/types" "^7.23.0" debug "^4.1.0" globals "^11.1.0" -"@babel/types@^7.18.6", "@babel/types@^7.18.9", "@babel/types@^7.19.0", "@babel/types@^7.20.0", "@babel/types@^7.20.2", "@babel/types@^7.20.5", "@babel/types@^7.20.7", "@babel/types@^7.4.4": - version "7.20.7" - resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/types/-/types-7.20.7.tgz#54ec75e252318423fc07fb644dc6a58a64c09b7f" - integrity sha1-VOx14lIxhCP8B/tkTcalimTAm38= +"@babel/types@^7.22.15", "@babel/types@^7.22.19", "@babel/types@^7.22.5", "@babel/types@^7.23.0", "@babel/types@^7.4.4": + version "7.23.0" + resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/types/-/types-7.23.0.tgz#8c1f020c9df0e737e4e247c0619f58c68458aaeb" + integrity sha1-jB8CDJ3w5zfk4kfAYZ9YxoRYqus= dependencies: - "@babel/helper-string-parser" "^7.19.4" - "@babel/helper-validator-identifier" "^7.19.1" + "@babel/helper-string-parser" "^7.22.5" + "@babel/helper-validator-identifier" "^7.22.20" to-fast-properties "^2.0.0" "@discoveryjs/json-ext@^0.5.0": @@ -914,14 +944,26 @@ resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz#1d572bfbbe14b7704e0ba0f39b74815b84870d70" integrity sha1-HVcr+74Ut3BOC6Dzm3SBW4SHDXA= -"@eslint/eslintrc@^1.4.1": - version "1.4.1" - resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@eslint/eslintrc/-/eslintrc-1.4.1.tgz#af58772019a2d271b7e2d4c23ff4ddcba3ccfb3e" - integrity sha1-r1h3IBmi0nG34tTCP/Tdy6PM+z4= +"@eslint-community/eslint-utils@^4.2.0": + version "4.4.0" + resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz#a23514e8fb9af1269d5f7788aa556798d61c6b59" + integrity sha1-ojUU6Pua8SadX3eIqlVnmNYca1k= + dependencies: + eslint-visitor-keys "^3.3.0" + +"@eslint-community/regexpp@^4.4.0", "@eslint-community/regexpp@^4.6.1": + version "4.10.0" + resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@eslint-community/regexpp/-/regexpp-4.10.0.tgz#548f6de556857c8bb73bbee70c35dc82a2e74d63" + integrity sha1-VI9t5VaFfIu3O77nDDXcgqLnTWM= + +"@eslint/eslintrc@^2.1.2": + version "2.1.2" + resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@eslint/eslintrc/-/eslintrc-2.1.2.tgz#c6936b4b328c64496692f76944e755738be62396" + integrity sha1-xpNrSzKMZElmkvdpROdVc4vmI5Y= dependencies: ajv "^6.12.4" debug "^4.3.2" - espree "^9.4.0" + espree "^9.6.0" globals "^13.19.0" ignore "^5.2.0" import-fresh "^3.2.1" @@ -929,12 +971,17 @@ minimatch "^3.1.2" strip-json-comments "^3.1.1" -"@humanwhocodes/config-array@^0.11.8": - version "0.11.8" - resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@humanwhocodes/config-array/-/config-array-0.11.8.tgz#03595ac2075a4dc0f191cc2131de14fbd7d410b9" - integrity sha1-A1lawgdaTcDxkcwhMd4U+9fUELk= +"@eslint/js@8.52.0": + version "8.52.0" + resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@eslint/js/-/js-8.52.0.tgz#78fe5f117840f69dc4a353adf9b9cd926353378c" + integrity sha1-eP5fEXhA9p3Eo1Ot+bnNkmNTN4w= + +"@humanwhocodes/config-array@^0.11.13": + version "0.11.13" + resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@humanwhocodes/config-array/-/config-array-0.11.13.tgz#075dc9684f40a531d9b26b0822153c1e832ee297" + integrity sha1-B13JaE9ApTHZsmsIIhU8HoMu4pc= dependencies: - "@humanwhocodes/object-schema" "^1.2.1" + "@humanwhocodes/object-schema" "^2.0.1" debug "^4.1.1" minimatch "^3.0.5" @@ -943,58 +990,50 @@ resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz#af5b2691a22b44be847b0ca81641c5fb6ad0172c" integrity sha1-r1smkaIrRL6EewyoFkHF+2rQFyw= -"@humanwhocodes/object-schema@^1.2.1": - version "1.2.1" - resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz#b520529ec21d8e5945a1851dfd1c32e94e39ff45" - integrity sha1-tSBSnsIdjllFoYUd/Rwy6U45/0U= - -"@jridgewell/gen-mapping@^0.1.0": - version "0.1.1" - resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz#e5d2e450306a9491e3bd77e323e38d7aff315996" - integrity sha1-5dLkUDBqlJHjvXfjI+ONev8xWZY= - dependencies: - "@jridgewell/set-array" "^1.0.0" - "@jridgewell/sourcemap-codec" "^1.4.10" +"@humanwhocodes/object-schema@^2.0.1": + version "2.0.1" + resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@humanwhocodes/object-schema/-/object-schema-2.0.1.tgz#e5211452df060fa8522b55c7b3c0c4d1981cb044" + integrity sha1-5SEUUt8GD6hSK1XHs8DE0ZgcsEQ= "@jridgewell/gen-mapping@^0.3.0", "@jridgewell/gen-mapping@^0.3.2": - version "0.3.2" - resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz#c1aedc61e853f2bb9f5dfe6d4442d3b565b253b9" - integrity sha1-wa7cYehT8rufXf5tRELTtWWyU7k= + version "0.3.3" + resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz#7e02e6eb5df901aaedb08514203b096614024098" + integrity sha1-fgLm6135AartsIUUIDsJZhQCQJg= dependencies: "@jridgewell/set-array" "^1.0.1" "@jridgewell/sourcemap-codec" "^1.4.10" "@jridgewell/trace-mapping" "^0.3.9" -"@jridgewell/resolve-uri@3.1.0": - version "3.1.0" - resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz#2203b118c157721addfe69d47b70465463066d78" - integrity sha1-IgOxGMFXchrd/mnUe3BGVGMGbXg= +"@jridgewell/resolve-uri@^3.1.0": + version "3.1.1" + resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz#c08679063f279615a3326583ba3a90d1d82cc721" + integrity sha1-wIZ5Bj8nlhWjMmWDujqQ0dgsxyE= -"@jridgewell/set-array@^1.0.0", "@jridgewell/set-array@^1.0.1": +"@jridgewell/set-array@^1.0.1": version "1.1.2" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@jridgewell/set-array/-/set-array-1.1.2.tgz#7c6cf998d6d20b914c0a55a91ae928ff25965e72" integrity sha1-fGz5mNbSC5FMClWpGuko/yWWXnI= -"@jridgewell/source-map@^0.3.2": - version "0.3.2" - resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@jridgewell/source-map/-/source-map-0.3.2.tgz#f45351aaed4527a298512ec72f81040c998580fb" - integrity sha1-9FNRqu1FJ6KYUS7HL4EEDJmFgPs= +"@jridgewell/source-map@^0.3.3": + version "0.3.5" + resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@jridgewell/source-map/-/source-map-0.3.5.tgz#a3bb4d5c6825aab0d281268f47f6ad5853431e91" + integrity sha1-o7tNXGglqrDSgSaPR/atWFNDHpE= dependencies: "@jridgewell/gen-mapping" "^0.3.0" "@jridgewell/trace-mapping" "^0.3.9" -"@jridgewell/sourcemap-codec@1.4.14", "@jridgewell/sourcemap-codec@^1.4.10": - version "1.4.14" - resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz#add4c98d341472a289190b424efbdb096991bb24" - integrity sha1-rdTJjTQUcqKJGQtCTvvbCWmRuyQ= +"@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.4.14": + version "1.4.15" + resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32" + integrity sha1-18bmdVx4VnqVHgSrUu8P0m3lnzI= -"@jridgewell/trace-mapping@^0.3.14", "@jridgewell/trace-mapping@^0.3.9": - version "0.3.17" - resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz#793041277af9073b0951a7fe0f0d8c4c98c36985" - integrity sha1-eTBBJ3r5BzsJUaf+Dw2MTJjDaYU= +"@jridgewell/trace-mapping@^0.3.17", "@jridgewell/trace-mapping@^0.3.9": + version "0.3.20" + resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@jridgewell/trace-mapping/-/trace-mapping-0.3.20.tgz#72e45707cf240fa6b081d0366f8265b0cd10197f" + integrity sha1-cuRXB88kD6awgdA2b4JlsM0QGX8= dependencies: - "@jridgewell/resolve-uri" "3.1.0" - "@jridgewell/sourcemap-codec" "1.4.14" + "@jridgewell/resolve-uri" "^3.1.0" + "@jridgewell/sourcemap-codec" "^1.4.14" "@nodelib/fs.scandir@2.1.5": version "2.1.5" @@ -1018,249 +1057,251 @@ fastq "^1.6.0" "@types/eslint-scope@^3.7.3": - version "3.7.4" - resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@types/eslint-scope/-/eslint-scope-3.7.4.tgz#37fc1223f0786c39627068a12e94d6e6fc61de16" - integrity sha1-N/wSI/B4bDlicGihLpTW5vxh3hY= + version "3.7.6" + resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@types/eslint-scope/-/eslint-scope-3.7.6.tgz#585578b368ed170e67de8aae7b93f54a1b2fdc26" + integrity sha1-WFV4s2jtFw5n3oque5P1Shsv3CY= dependencies: "@types/eslint" "*" "@types/estree" "*" "@types/eslint@*": - version "8.21.0" - resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@types/eslint/-/eslint-8.21.0.tgz#21724cfe12b96696feafab05829695d4d7bd7c48" - integrity sha1-IXJM/hK5Zpb+r6sFgpaV1Ne9fEg= + version "8.44.6" + resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@types/eslint/-/eslint-8.44.6.tgz#60e564551966dd255f4c01c459f0b4fb87068603" + integrity sha1-YOVkVRlm3SVfTAHEWfC0+4cGhgM= dependencies: "@types/estree" "*" "@types/json-schema" "*" -"@types/estree@*": - version "1.0.0" - resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@types/estree/-/estree-1.0.0.tgz#5fb2e536c1ae9bf35366eed879e827fa59ca41c2" - integrity sha1-X7LlNsGum/NTZu7Yeegn+lnKQcI= - -"@types/estree@^0.0.51": - version "0.0.51" - resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@types/estree/-/estree-0.0.51.tgz#cfd70924a25a3fd32b218e5e420e6897e1ac4f40" - integrity sha1-z9cJJKJaP9MrIY5eQg5ol+GsT0A= +"@types/estree@*", "@types/estree@^1.0.0": + version "1.0.4" + resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@types/estree/-/estree-1.0.4.tgz#d9748f5742171b26218516cf1828b8eafaf8a9fa" + integrity sha1-2XSPV0IXGyYhhRbPGCi46vr4qfo= "@types/json-schema@*", "@types/json-schema@^7.0.8", "@types/json-schema@^7.0.9": - version "7.0.11" - resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@types/json-schema/-/json-schema-7.0.11.tgz#d421b6c527a3037f7c84433fd2c4229e016863d3" - integrity sha1-1CG2xSejA398hEM/0sQingFoY9M= + version "7.0.14" + resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@types/json-schema/-/json-schema-7.0.14.tgz#74a97a5573980802f32c8e47b663530ab3b6b7d1" + integrity sha1-dKl6VXOYCALzLI5HtmNTCrO2t9E= "@types/node@*": - version "18.13.0" - resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@types/node/-/node-18.13.0.tgz#0400d1e6ce87e9d3032c19eb6c58205b0d3f7850" - integrity sha1-BADR5s6H6dMDLBnrbFggWw0/eFA= + version "20.8.10" + resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@types/node/-/node-20.8.10.tgz#a5448b895c753ae929c26ce85cab557c6d4a365e" + integrity sha1-pUSLiVx1OukpwmzoXKtVfG1KNl4= + dependencies: + undici-types "~5.26.4" "@types/semver@^7.3.12": - version "7.3.13" - resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@types/semver/-/semver-7.3.13.tgz#da4bfd73f49bd541d28920ab0e2bf0ee80f71c91" - integrity sha1-2kv9c/Sb1UHSiSCrDivw7oD3HJE= + version "7.5.4" + resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@types/semver/-/semver-7.5.4.tgz#0a41252ad431c473158b22f9bfb9a63df7541cff" + integrity sha1-CkElKtQxxHMViyL5v7mmPfdUHP8= "@typescript-eslint/eslint-plugin@^5.26.0": - version "5.52.0" - resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.52.0.tgz#5fb0d43574c2411f16ea80f5fc335b8eaa7b28a8" - integrity sha1-X7DUNXTCQR8W6oD1/DNbjqp7KKg= - dependencies: - "@typescript-eslint/scope-manager" "5.52.0" - "@typescript-eslint/type-utils" "5.52.0" - "@typescript-eslint/utils" "5.52.0" + version "5.62.0" + resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.62.0.tgz#aeef0328d172b9e37d9bab6dbc13b87ed88977db" + integrity sha1-ru8DKNFyueN9m6ttvBO4ftiJd9s= + dependencies: + "@eslint-community/regexpp" "^4.4.0" + "@typescript-eslint/scope-manager" "5.62.0" + "@typescript-eslint/type-utils" "5.62.0" + "@typescript-eslint/utils" "5.62.0" debug "^4.3.4" - grapheme-splitter "^1.0.4" + graphemer "^1.4.0" ignore "^5.2.0" natural-compare-lite "^1.4.0" - regexpp "^3.2.0" semver "^7.3.7" tsutils "^3.21.0" "@typescript-eslint/parser@^5.26.0": - version "5.52.0" - resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@typescript-eslint/parser/-/parser-5.52.0.tgz#73c136df6c0133f1d7870de7131ccf356f5be5a4" - integrity sha1-c8E232wBM/HXhw3nExzPNW9b5aQ= + version "5.62.0" + resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@typescript-eslint/parser/-/parser-5.62.0.tgz#1b63d082d849a2fcae8a569248fbe2ee1b8a56c7" + integrity sha1-G2PQgthJovyuilaSSPvi7huKVsc= dependencies: - "@typescript-eslint/scope-manager" "5.52.0" - "@typescript-eslint/types" "5.52.0" - "@typescript-eslint/typescript-estree" "5.52.0" + "@typescript-eslint/scope-manager" "5.62.0" + "@typescript-eslint/types" "5.62.0" + "@typescript-eslint/typescript-estree" "5.62.0" debug "^4.3.4" -"@typescript-eslint/scope-manager@5.52.0": - version "5.52.0" - resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@typescript-eslint/scope-manager/-/scope-manager-5.52.0.tgz#a993d89a0556ea16811db48eabd7c5b72dcb83d1" - integrity sha1-qZPYmgVW6haBHbSOq9fFty3Lg9E= +"@typescript-eslint/scope-manager@5.62.0": + version "5.62.0" + resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz#d9457ccc6a0b8d6b37d0eb252a23022478c5460c" + integrity sha1-2UV8zGoLjWs30OslKiMCJHjFRgw= dependencies: - "@typescript-eslint/types" "5.52.0" - "@typescript-eslint/visitor-keys" "5.52.0" + "@typescript-eslint/types" "5.62.0" + "@typescript-eslint/visitor-keys" "5.62.0" -"@typescript-eslint/type-utils@5.52.0": - version "5.52.0" - resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@typescript-eslint/type-utils/-/type-utils-5.52.0.tgz#9fd28cd02e6f21f5109e35496df41893f33167aa" - integrity sha1-n9KM0C5vIfUQnjVJbfQYk/MxZ6o= +"@typescript-eslint/type-utils@5.62.0": + version "5.62.0" + resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@typescript-eslint/type-utils/-/type-utils-5.62.0.tgz#286f0389c41681376cdad96b309cedd17d70346a" + integrity sha1-KG8DicQWgTds2tlrMJzt0X1wNGo= dependencies: - "@typescript-eslint/typescript-estree" "5.52.0" - "@typescript-eslint/utils" "5.52.0" + "@typescript-eslint/typescript-estree" "5.62.0" + "@typescript-eslint/utils" "5.62.0" debug "^4.3.4" tsutils "^3.21.0" -"@typescript-eslint/types@5.52.0": - version "5.52.0" - resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@typescript-eslint/types/-/types-5.52.0.tgz#19e9abc6afb5bd37a1a9bea877a1a836c0b3241b" - integrity sha1-Gemrxq+1vTehqb6od6GoNsCzJBs= +"@typescript-eslint/types@5.62.0": + version "5.62.0" + resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@typescript-eslint/types/-/types-5.62.0.tgz#258607e60effa309f067608931c3df6fed41fd2f" + integrity sha1-JYYH5g7/ownwZ2CJMcPfb+1B/S8= -"@typescript-eslint/typescript-estree@5.52.0": - version "5.52.0" - resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@typescript-eslint/typescript-estree/-/typescript-estree-5.52.0.tgz#6408cb3c2ccc01c03c278cb201cf07e73347dfca" - integrity sha1-ZAjLPCzMAcA8J4yyAc8H5zNH38o= +"@typescript-eslint/typescript-estree@5.62.0": + version "5.62.0" + resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz#7d17794b77fabcac615d6a48fb143330d962eb9b" + integrity sha1-fRd5S3f6vKxhXWpI+xQzMNli65s= dependencies: - "@typescript-eslint/types" "5.52.0" - "@typescript-eslint/visitor-keys" "5.52.0" + "@typescript-eslint/types" "5.62.0" + "@typescript-eslint/visitor-keys" "5.62.0" debug "^4.3.4" globby "^11.1.0" is-glob "^4.0.3" semver "^7.3.7" tsutils "^3.21.0" -"@typescript-eslint/utils@5.52.0": - version "5.52.0" - resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@typescript-eslint/utils/-/utils-5.52.0.tgz#b260bb5a8f6b00a0ed51db66bdba4ed5e4845a72" - integrity sha1-smC7Wo9rAKDtUdtmvbpO1eSEWnI= +"@typescript-eslint/utils@5.62.0": + version "5.62.0" + resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@typescript-eslint/utils/-/utils-5.62.0.tgz#141e809c71636e4a75daa39faed2fb5f4b10df86" + integrity sha1-FB6AnHFjbkp12qOfrtL7X0sQ34Y= dependencies: + "@eslint-community/eslint-utils" "^4.2.0" "@types/json-schema" "^7.0.9" "@types/semver" "^7.3.12" - "@typescript-eslint/scope-manager" "5.52.0" - "@typescript-eslint/types" "5.52.0" - "@typescript-eslint/typescript-estree" "5.52.0" + "@typescript-eslint/scope-manager" "5.62.0" + "@typescript-eslint/types" "5.62.0" + "@typescript-eslint/typescript-estree" "5.62.0" eslint-scope "^5.1.1" - eslint-utils "^3.0.0" semver "^7.3.7" -"@typescript-eslint/visitor-keys@5.52.0": - version "5.52.0" - resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@typescript-eslint/visitor-keys/-/visitor-keys-5.52.0.tgz#e38c971259f44f80cfe49d97dbffa38e3e75030f" - integrity sha1-44yXEln0T4DP5J2X2/+jjj51Aw8= +"@typescript-eslint/visitor-keys@5.62.0": + version "5.62.0" + resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz#2174011917ce582875954ffe2f6912d5931e353e" + integrity sha1-IXQBGRfOWCh1lU/+L2kS1ZMeNT4= dependencies: - "@typescript-eslint/types" "5.52.0" + "@typescript-eslint/types" "5.62.0" eslint-visitor-keys "^3.3.0" -"@webassemblyjs/ast@1.11.1": - version "1.11.1" - resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@webassemblyjs/ast/-/ast-1.11.1.tgz#2bfd767eae1a6996f432ff7e8d7fc75679c0b6a7" - integrity sha1-K/12fq4aaZb0Mv9+jX/HVnnAtqc= - dependencies: - "@webassemblyjs/helper-numbers" "1.11.1" - "@webassemblyjs/helper-wasm-bytecode" "1.11.1" - -"@webassemblyjs/floating-point-hex-parser@1.11.1": - version "1.11.1" - resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz#f6c61a705f0fd7a6aecaa4e8198f23d9dc179e4f" - integrity sha1-9sYacF8P16auyqToGY8j2dwXnk8= - -"@webassemblyjs/helper-api-error@1.11.1": - version "1.11.1" - resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz#1a63192d8788e5c012800ba6a7a46c705288fd16" - integrity sha1-GmMZLYeI5cASgAump6RscFKI/RY= - -"@webassemblyjs/helper-buffer@1.11.1": - version "1.11.1" - resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz#832a900eb444884cde9a7cad467f81500f5e5ab5" - integrity sha1-gyqQDrREiEzemnytRn+BUA9eWrU= - -"@webassemblyjs/helper-numbers@1.11.1": - version "1.11.1" - resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz#64d81da219fbbba1e3bd1bfc74f6e8c4e10a62ae" - integrity sha1-ZNgdohn7u6HjvRv8dPboxOEKYq4= - dependencies: - "@webassemblyjs/floating-point-hex-parser" "1.11.1" - "@webassemblyjs/helper-api-error" "1.11.1" +"@ungap/structured-clone@^1.2.0": + version "1.2.0" + resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@ungap/structured-clone/-/structured-clone-1.2.0.tgz#756641adb587851b5ccb3e095daf27ae581c8406" + integrity sha1-dWZBrbWHhRtcyz4JXa8nrlgchAY= + +"@webassemblyjs/ast@1.11.6", "@webassemblyjs/ast@^1.11.5": + version "1.11.6" + resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@webassemblyjs/ast/-/ast-1.11.6.tgz#db046555d3c413f8966ca50a95176a0e2c642e24" + integrity sha1-2wRlVdPEE/iWbKUKlRdqDixkLiQ= + dependencies: + "@webassemblyjs/helper-numbers" "1.11.6" + "@webassemblyjs/helper-wasm-bytecode" "1.11.6" + +"@webassemblyjs/floating-point-hex-parser@1.11.6": + version "1.11.6" + resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz#dacbcb95aff135c8260f77fa3b4c5fea600a6431" + integrity sha1-2svLla/xNcgmD3f6O0xf6mAKZDE= + +"@webassemblyjs/helper-api-error@1.11.6": + version "1.11.6" + resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz#6132f68c4acd59dcd141c44b18cbebbd9f2fa768" + integrity sha1-YTL2jErNWdzRQcRLGMvrvZ8vp2g= + +"@webassemblyjs/helper-buffer@1.11.6": + version "1.11.6" + resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.6.tgz#b66d73c43e296fd5e88006f18524feb0f2c7c093" + integrity sha1-tm1zxD4pb9XogAbxhST+sPLHwJM= + +"@webassemblyjs/helper-numbers@1.11.6": + version "1.11.6" + resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz#cbce5e7e0c1bd32cf4905ae444ef64cea919f1b5" + integrity sha1-y85efgwb0yz0kFrkRO9kzqkZ8bU= + dependencies: + "@webassemblyjs/floating-point-hex-parser" "1.11.6" + "@webassemblyjs/helper-api-error" "1.11.6" "@xtuc/long" "4.2.2" -"@webassemblyjs/helper-wasm-bytecode@1.11.1": - version "1.11.1" - resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz#f328241e41e7b199d0b20c18e88429c4433295e1" - integrity sha1-8ygkHkHnsZnQsgwY6IQpxEMyleE= +"@webassemblyjs/helper-wasm-bytecode@1.11.6": + version "1.11.6" + resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz#bb2ebdb3b83aa26d9baad4c46d4315283acd51e9" + integrity sha1-uy69s7g6om2bqtTEbUMVKDrNUek= -"@webassemblyjs/helper-wasm-section@1.11.1": - version "1.11.1" - resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz#21ee065a7b635f319e738f0dd73bfbda281c097a" - integrity sha1-Ie4GWntjXzGec48N1zv72igcCXo= +"@webassemblyjs/helper-wasm-section@1.11.6": + version "1.11.6" + resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.6.tgz#ff97f3863c55ee7f580fd5c41a381e9def4aa577" + integrity sha1-/5fzhjxV7n9YD9XEGjgene9KpXc= dependencies: - "@webassemblyjs/ast" "1.11.1" - "@webassemblyjs/helper-buffer" "1.11.1" - "@webassemblyjs/helper-wasm-bytecode" "1.11.1" - "@webassemblyjs/wasm-gen" "1.11.1" + "@webassemblyjs/ast" "1.11.6" + "@webassemblyjs/helper-buffer" "1.11.6" + "@webassemblyjs/helper-wasm-bytecode" "1.11.6" + "@webassemblyjs/wasm-gen" "1.11.6" -"@webassemblyjs/ieee754@1.11.1": - version "1.11.1" - resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz#963929e9bbd05709e7e12243a099180812992614" - integrity sha1-ljkp6bvQVwnn4SJDoJkYCBKZJhQ= +"@webassemblyjs/ieee754@1.11.6": + version "1.11.6" + resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz#bb665c91d0b14fffceb0e38298c329af043c6e3a" + integrity sha1-u2ZckdCxT//OsOOCmMMprwQ8bjo= dependencies: "@xtuc/ieee754" "^1.2.0" -"@webassemblyjs/leb128@1.11.1": - version "1.11.1" - resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@webassemblyjs/leb128/-/leb128-1.11.1.tgz#ce814b45574e93d76bae1fb2644ab9cdd9527aa5" - integrity sha1-zoFLRVdOk9drrh+yZEq5zdlSeqU= +"@webassemblyjs/leb128@1.11.6": + version "1.11.6" + resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@webassemblyjs/leb128/-/leb128-1.11.6.tgz#70e60e5e82f9ac81118bc25381a0b283893240d7" + integrity sha1-cOYOXoL5rIERi8JTgaCyg4kyQNc= dependencies: "@xtuc/long" "4.2.2" -"@webassemblyjs/utf8@1.11.1": - version "1.11.1" - resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@webassemblyjs/utf8/-/utf8-1.11.1.tgz#d1f8b764369e7c6e6bae350e854dec9a59f0a3ff" - integrity sha1-0fi3ZDaefG5rrjUOhU3smlnwo/8= - -"@webassemblyjs/wasm-edit@1.11.1": - version "1.11.1" - resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz#ad206ebf4bf95a058ce9880a8c092c5dec8193d6" - integrity sha1-rSBuv0v5WgWM6YgKjAksXeyBk9Y= - dependencies: - "@webassemblyjs/ast" "1.11.1" - "@webassemblyjs/helper-buffer" "1.11.1" - "@webassemblyjs/helper-wasm-bytecode" "1.11.1" - "@webassemblyjs/helper-wasm-section" "1.11.1" - "@webassemblyjs/wasm-gen" "1.11.1" - "@webassemblyjs/wasm-opt" "1.11.1" - "@webassemblyjs/wasm-parser" "1.11.1" - "@webassemblyjs/wast-printer" "1.11.1" - -"@webassemblyjs/wasm-gen@1.11.1": - version "1.11.1" - resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz#86c5ea304849759b7d88c47a32f4f039ae3c8f76" - integrity sha1-hsXqMEhJdZt9iMR6MvTwOa48j3Y= - dependencies: - "@webassemblyjs/ast" "1.11.1" - "@webassemblyjs/helper-wasm-bytecode" "1.11.1" - "@webassemblyjs/ieee754" "1.11.1" - "@webassemblyjs/leb128" "1.11.1" - "@webassemblyjs/utf8" "1.11.1" - -"@webassemblyjs/wasm-opt@1.11.1": - version "1.11.1" - resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz#657b4c2202f4cf3b345f8a4c6461c8c2418985f2" - integrity sha1-ZXtMIgL0zzs0X4pMZGHIwkGJhfI= - dependencies: - "@webassemblyjs/ast" "1.11.1" - "@webassemblyjs/helper-buffer" "1.11.1" - "@webassemblyjs/wasm-gen" "1.11.1" - "@webassemblyjs/wasm-parser" "1.11.1" - -"@webassemblyjs/wasm-parser@1.11.1": - version "1.11.1" - resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz#86ca734534f417e9bd3c67c7a1c75d8be41fb199" - integrity sha1-hspzRTT0F+m9PGfHocddi+QfsZk= - dependencies: - "@webassemblyjs/ast" "1.11.1" - "@webassemblyjs/helper-api-error" "1.11.1" - "@webassemblyjs/helper-wasm-bytecode" "1.11.1" - "@webassemblyjs/ieee754" "1.11.1" - "@webassemblyjs/leb128" "1.11.1" - "@webassemblyjs/utf8" "1.11.1" - -"@webassemblyjs/wast-printer@1.11.1": - version "1.11.1" - resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz#d0c73beda8eec5426f10ae8ef55cee5e7084c2f0" - integrity sha1-0Mc77ajuxUJvEK6O9VzuXnCEwvA= - dependencies: - "@webassemblyjs/ast" "1.11.1" +"@webassemblyjs/utf8@1.11.6": + version "1.11.6" + resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@webassemblyjs/utf8/-/utf8-1.11.6.tgz#90f8bc34c561595fe156603be7253cdbcd0fab5a" + integrity sha1-kPi8NMVhWV/hVmA75yU8280Pq1o= + +"@webassemblyjs/wasm-edit@^1.11.5": + version "1.11.6" + resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.6.tgz#c72fa8220524c9b416249f3d94c2958dfe70ceab" + integrity sha1-xy+oIgUkybQWJJ89lMKVjf5wzqs= + dependencies: + "@webassemblyjs/ast" "1.11.6" + "@webassemblyjs/helper-buffer" "1.11.6" + "@webassemblyjs/helper-wasm-bytecode" "1.11.6" + "@webassemblyjs/helper-wasm-section" "1.11.6" + "@webassemblyjs/wasm-gen" "1.11.6" + "@webassemblyjs/wasm-opt" "1.11.6" + "@webassemblyjs/wasm-parser" "1.11.6" + "@webassemblyjs/wast-printer" "1.11.6" + +"@webassemblyjs/wasm-gen@1.11.6": + version "1.11.6" + resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.6.tgz#fb5283e0e8b4551cc4e9c3c0d7184a65faf7c268" + integrity sha1-+1KD4Oi0VRzE6cPA1xhKZfr3wmg= + dependencies: + "@webassemblyjs/ast" "1.11.6" + "@webassemblyjs/helper-wasm-bytecode" "1.11.6" + "@webassemblyjs/ieee754" "1.11.6" + "@webassemblyjs/leb128" "1.11.6" + "@webassemblyjs/utf8" "1.11.6" + +"@webassemblyjs/wasm-opt@1.11.6": + version "1.11.6" + resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.6.tgz#d9a22d651248422ca498b09aa3232a81041487c2" + integrity sha1-2aItZRJIQiykmLCaoyMqgQQUh8I= + dependencies: + "@webassemblyjs/ast" "1.11.6" + "@webassemblyjs/helper-buffer" "1.11.6" + "@webassemblyjs/wasm-gen" "1.11.6" + "@webassemblyjs/wasm-parser" "1.11.6" + +"@webassemblyjs/wasm-parser@1.11.6", "@webassemblyjs/wasm-parser@^1.11.5": + version "1.11.6" + resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.6.tgz#bb85378c527df824004812bbdb784eea539174a1" + integrity sha1-u4U3jFJ9+CQASBK723hO6lORdKE= + dependencies: + "@webassemblyjs/ast" "1.11.6" + "@webassemblyjs/helper-api-error" "1.11.6" + "@webassemblyjs/helper-wasm-bytecode" "1.11.6" + "@webassemblyjs/ieee754" "1.11.6" + "@webassemblyjs/leb128" "1.11.6" + "@webassemblyjs/utf8" "1.11.6" + +"@webassemblyjs/wast-printer@1.11.6": + version "1.11.6" + resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@webassemblyjs/wast-printer/-/wast-printer-1.11.6.tgz#a7bf8dd7e362aeb1668ff43f35cb849f188eff20" + integrity sha1-p7+N1+NirrFmj/Q/NcuEnxiO/yA= + dependencies: + "@webassemblyjs/ast" "1.11.6" "@xtuc/long" "4.2.2" "@webpack-cli/configtest@^1.2.0": @@ -1290,10 +1331,10 @@ resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@xtuc/long/-/long-4.2.2.tgz#d291c6a4e97989b5c61d9acf396ae4fe133a718d" integrity sha1-0pHGpOl5ibXGHZrPOWrk/hM6cY0= -acorn-import-assertions@^1.7.6: - version "1.8.0" - resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz#ba2b5939ce62c238db6d93d81c9b111b29b855e9" - integrity sha1-uitZOc5iwjjbbZPYHJsRGym4Vek= +acorn-import-assertions@^1.9.0: + version "1.9.0" + resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz#507276249d684797c84e0734ef84860334cfb1ac" + integrity sha1-UHJ2JJ1oR5fITgc074SGAzTPsaw= acorn-jsx@^5.3.2: version "5.3.2" @@ -1305,17 +1346,17 @@ acorn@^7.4.1: resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" integrity sha1-/q7SVZc9LndVW4PbwIhRpsY1IPo= -acorn@^8.5.0, acorn@^8.7.1, acorn@^8.8.0: - version "8.8.2" - resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/acorn/-/acorn-8.8.2.tgz#1b2f25db02af965399b9776b0c2c391276d37c4a" - integrity sha1-Gy8l2wKvllOZuXdrDCw5EnbTfEo= +acorn@^8.7.1, acorn@^8.8.2, acorn@^8.9.0: + version "8.11.2" + resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/acorn/-/acorn-8.11.2.tgz#ca0d78b51895be5390a5903c5b3bdcdaf78ae40b" + integrity sha1-yg14tRiVvlOQpZA8Wzvc2veK5As= ajv-keywords@^3.5.2: version "3.5.2" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/ajv-keywords/-/ajv-keywords-3.5.2.tgz#31f29da5ab6e00d1c2d329acf7b5929614d5014d" integrity sha1-MfKdpatuANHC0yms97WSlhTVAU0= -ajv@^6.10.0, ajv@^6.12.4, ajv@^6.12.5: +ajv@^6.12.4, ajv@^6.12.5: version "6.12.6" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" integrity sha1-uvWmLoArB9l3A0WG+MO69a3ybfQ= @@ -1354,29 +1395,29 @@ array-union@^2.1.0: resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" integrity sha1-t5hCCtvrHego2ErNii4j0+/oXo0= -babel-plugin-polyfill-corejs2@^0.3.3: - version "0.3.3" - resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.3.tgz#5d1bd3836d0a19e1b84bbf2d9640ccb6f951c122" - integrity sha1-XRvTg20KGeG4S78tlkDMtvlRwSI= +babel-plugin-polyfill-corejs2@^0.4.6: + version "0.4.6" + resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.6.tgz#b2df0251d8e99f229a8e60fc4efa9a68b41c8313" + integrity sha1-st8CUdjpnyKajmD8TvqaaLQcgxM= dependencies: - "@babel/compat-data" "^7.17.7" - "@babel/helper-define-polyfill-provider" "^0.3.3" - semver "^6.1.1" + "@babel/compat-data" "^7.22.6" + "@babel/helper-define-polyfill-provider" "^0.4.3" + semver "^6.3.1" -babel-plugin-polyfill-corejs3@^0.6.0: - version "0.6.0" - resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.6.0.tgz#56ad88237137eade485a71b52f72dbed57c6230a" - integrity sha1-Vq2II3E36t5IWnG1L3Lb7VfGIwo= +babel-plugin-polyfill-corejs3@^0.8.5: + version "0.8.6" + resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.8.6.tgz#25c2d20002da91fe328ff89095c85a391d6856cf" + integrity sha1-JcLSAALakf4yj/iQlchaOR1oVs8= dependencies: - "@babel/helper-define-polyfill-provider" "^0.3.3" - core-js-compat "^3.25.1" + "@babel/helper-define-polyfill-provider" "^0.4.3" + core-js-compat "^3.33.1" -babel-plugin-polyfill-regenerator@^0.4.1: - version "0.4.1" - resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.4.1.tgz#390f91c38d90473592ed43351e801a9d3e0fd747" - integrity sha1-OQ+Rw42QRzWS7UM1HoAanT4P10c= +babel-plugin-polyfill-regenerator@^0.5.3: + version "0.5.3" + resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.3.tgz#d4c49e4b44614607c13fb769bcd85c72bb26a4a5" + integrity sha1-1MSeS0RhRgfBP7dpvNhccrsmpKU= dependencies: - "@babel/helper-define-polyfill-provider" "^0.3.3" + "@babel/helper-define-polyfill-provider" "^0.4.3" balanced-match@^1.0.0: version "1.0.2" @@ -1403,15 +1444,15 @@ braces@^3.0.2: dependencies: fill-range "^7.0.1" -browserslist@^4.14.5, browserslist@^4.21.3, browserslist@^4.21.5: - version "4.21.5" - resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/browserslist/-/browserslist-4.21.5.tgz#75c5dae60063ee641f977e00edd3cfb2fb7af6a7" - integrity sha1-dcXa5gBj7mQfl34A7dPPsvt69qc= +browserslist@^4.14.5, browserslist@^4.21.9, browserslist@^4.22.1: + version "4.22.1" + resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/browserslist/-/browserslist-4.22.1.tgz#ba91958d1a59b87dab6fed8dfbcb3da5e2e9c619" + integrity sha1-upGVjRpZuH2rb+2N+8s9peLpxhk= dependencies: - caniuse-lite "^1.0.30001449" - electron-to-chromium "^1.4.284" - node-releases "^2.0.8" - update-browserslist-db "^1.0.10" + caniuse-lite "^1.0.30001541" + electron-to-chromium "^1.4.535" + node-releases "^2.0.13" + update-browserslist-db "^1.0.13" buffer-from@^1.0.0: version "1.1.2" @@ -1423,12 +1464,12 @@ callsites@^3.0.0: resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" integrity sha1-s2MKvYlDQy9Us/BRkjjjPNffL3M= -caniuse-lite@^1.0.30001449: - version "1.0.30001451" - resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/caniuse-lite/-/caniuse-lite-1.0.30001451.tgz#2e197c698fc1373d63e1406d6607ea4617c613f1" - integrity sha1-Lhl8aY/BNz1j4UBtZgfqRhfGE/E= +caniuse-lite@^1.0.30001541: + version "1.0.30001559" + resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/caniuse-lite/-/caniuse-lite-1.0.30001559.tgz#95a982440d3d314c471db68d02664fb7536c5a30" + integrity sha1-lamCRA09MUxHHbaNAmZPt1NsWjA= -chalk@^2.0.0: +chalk@^2.4.2: version "2.4.2" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" integrity sha1-zUJUFnelQzPPVBpJEIwUMrRMlCQ= @@ -1493,9 +1534,9 @@ color-name@~1.1.4: integrity sha1-wqCah6y95pVD3m9j+jmVyCbFNqI= colorette@^2.0.14: - version "2.0.19" - resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/colorette/-/colorette-2.0.19.tgz#cdf044f47ad41a0f4b56b3a0d5b4e6e1a2d5a798" - integrity sha1-zfBE9HrUGg9LVrOg1bTm4aLVp5g= + version "2.0.20" + resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/colorette/-/colorette-2.0.20.tgz#9eb793e6833067f7235902fcd3b09917a000a95a" + integrity sha1-nreT5oMwZ/cjWQL807CZF6AAqVo= commander@^2.20.0: version "2.20.3" @@ -1512,22 +1553,22 @@ concat-map@0.0.1: resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= -convert-source-map@^1.7.0: - version "1.9.0" - resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/convert-source-map/-/convert-source-map-1.9.0.tgz#7faae62353fb4213366d0ca98358d22e8368b05f" - integrity sha1-f6rmI1P7QhM2bQypg1jSLoNosF8= +convert-source-map@^2.0.0: + version "2.0.0" + resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/convert-source-map/-/convert-source-map-2.0.0.tgz#4b560f649fc4e918dd0ab75cf4961e8bc882d82a" + integrity sha1-S1YPZJ/E6RjdCrdc9JYei8iC2Co= -core-js-compat@^3.25.1: - version "3.28.0" - resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/core-js-compat/-/core-js-compat-3.28.0.tgz#c08456d854608a7264530a2afa281fadf20ecee6" - integrity sha1-wIRW2FRginJkUwoq+igfrfIOzuY= +core-js-compat@^3.31.0, core-js-compat@^3.33.1: + version "3.33.2" + resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/core-js-compat/-/core-js-compat-3.33.2.tgz#3ea4563bfd015ad4e4b52442865b02c62aba5085" + integrity sha1-PqRWO/0BWtTktSRChlsCxiq6UIU= dependencies: - browserslist "^4.21.5" + browserslist "^4.22.1" core-js@^3.8.3: - version "3.28.0" - resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/core-js/-/core-js-3.28.0.tgz#ed8b9e99c273879fdfff0edfc77ee709a5800e4a" - integrity sha1-7YuemcJzh5/f/w7fx37nCaWADko= + version "3.33.2" + resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/core-js/-/core-js-3.33.2.tgz#312bbf6996a3a517c04c99b9909cdd27138d1ceb" + integrity sha1-MSu/aZajpRfATJm5kJzdJxONHOs= cross-spawn@^7.0.2, cross-spawn@^7.0.3: version "7.0.3" @@ -1539,9 +1580,9 @@ cross-spawn@^7.0.2, cross-spawn@^7.0.3: which "^2.0.1" crypto-js@^4.0.0: - version "4.1.1" - resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/crypto-js/-/crypto-js-4.1.1.tgz#9e485bcf03521041bd85844786b83fb7619736cf" - integrity sha1-nkhbzwNSEEG9hYRHhrg/t2GXNs8= + version "4.2.0" + resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/crypto-js/-/crypto-js-4.2.0.tgz#4d931639ecdfd12ff80e8186dba6af2c2e856631" + integrity sha1-TZMWOezf0S/4DoGG26avLC6FZjE= debug@^4.1.0, debug@^4.1.1, debug@^4.3.2, debug@^4.3.4: version "4.3.4" @@ -1569,33 +1610,33 @@ doctrine@^3.0.0: dependencies: esutils "^2.0.2" -electron-to-chromium@^1.4.284: - version "1.4.295" - resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/electron-to-chromium/-/electron-to-chromium-1.4.295.tgz#911d5df67542bf7554336142eb302c5ec90bba66" - integrity sha1-kR1d9nVCv3VUM2FC6zAsXskLumY= +electron-to-chromium@^1.4.535: + version "1.4.572" + resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/electron-to-chromium/-/electron-to-chromium-1.4.572.tgz#ed9876658998138fe9e3aa47ecfa0bf914192a86" + integrity sha1-7Zh2ZYmYE4/p46pH7PoL+RQZKoY= emoji-regex@^8.0.0: version "8.0.0" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" integrity sha1-6Bj9ac5cz8tARZT4QpY79TFkzDc= -enhanced-resolve@^5.0.0, enhanced-resolve@^5.10.0: - version "5.12.0" - resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/enhanced-resolve/-/enhanced-resolve-5.12.0.tgz#300e1c90228f5b570c4d35babf263f6da7155634" - integrity sha1-MA4ckCKPW1cMTTW6vyY/bacVVjQ= +enhanced-resolve@^5.0.0, enhanced-resolve@^5.15.0: + version "5.15.0" + resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/enhanced-resolve/-/enhanced-resolve-5.15.0.tgz#1af946c7d93603eb88e9896cee4904dc012e9c35" + integrity sha1-GvlGx9k2A+uI6Yls7kkE3AEunDU= dependencies: graceful-fs "^4.2.4" tapable "^2.2.0" envinfo@^7.7.3: - version "7.8.1" - resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/envinfo/-/envinfo-7.8.1.tgz#06377e3e5f4d379fea7ac592d5ad8927e0c4d475" - integrity sha1-Bjd+Pl9NN5/qesWS1a2JJ+DE1HU= + version "7.11.0" + resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/envinfo/-/envinfo-7.11.0.tgz#c3793f44284a55ff8c82faf1ffd91bc6478ea01f" + integrity sha1-w3k/RChKVf+Mgvrx/9kbxkeOoB8= -es-module-lexer@^0.9.0: - version "0.9.3" - resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/es-module-lexer/-/es-module-lexer-0.9.3.tgz#6f13db00cc38417137daf74366f535c8eb438f19" - integrity sha1-bxPbAMw4QXE32vdDZvU1yOtDjxk= +es-module-lexer@^1.2.1: + version "1.3.1" + resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/es-module-lexer/-/es-module-lexer-1.3.1.tgz#c1b0dd5ada807a3b3155315911f364dc4e909db1" + integrity sha1-wbDdWtqAejsxVTFZEfNk3E6QnbE= escalade@^3.1.1: version "3.1.1" @@ -1620,89 +1661,76 @@ eslint-scope@5.1.1, eslint-scope@^5.1.1: esrecurse "^4.3.0" estraverse "^4.1.1" -eslint-scope@^7.1.1: - version "7.1.1" - resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/eslint-scope/-/eslint-scope-7.1.1.tgz#fff34894c2f65e5226d3041ac480b4513a163642" - integrity sha1-//NIlML2XlIm0wQaxIC0UToWNkI= +eslint-scope@^7.2.2: + version "7.2.2" + resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/eslint-scope/-/eslint-scope-7.2.2.tgz#deb4f92563390f32006894af62a22dba1c46423f" + integrity sha1-3rT5JWM5DzIAaJSvYqItuhxGQj8= dependencies: esrecurse "^4.3.0" estraverse "^5.2.0" -eslint-utils@^3.0.0: - version "3.0.0" - resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/eslint-utils/-/eslint-utils-3.0.0.tgz#8aebaface7345bb33559db0a1f13a1d2d48c3672" - integrity sha1-iuuvrOc0W7M1WdsKHxOh0tSMNnI= - dependencies: - eslint-visitor-keys "^2.0.0" - -eslint-visitor-keys@^2.0.0: - version "2.1.0" - resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz#f65328259305927392c938ed44eb0a5c9b2bd303" - integrity sha1-9lMoJZMFknOSyTjtROsKXJsr0wM= - -eslint-visitor-keys@^3.3.0: - version "3.3.0" - resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz#f6480fa6b1f30efe2d1968aa8ac745b862469826" - integrity sha1-9kgPprHzDv4tGWiqisdFuGJGmCY= +eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.1, eslint-visitor-keys@^3.4.3: + version "3.4.3" + resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz#0cd72fe8550e3c2eae156a96a4dddcd1c8ac5800" + integrity sha1-DNcv6FUOPC6uFWqWpN3c0cisWAA= eslint@^8.16.0: - version "8.34.0" - resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/eslint/-/eslint-8.34.0.tgz#fe0ab0ef478104c1f9ebc5537e303d25a8fb22d6" - integrity sha1-/gqw70eBBMH568VTfjA9Jaj7ItY= - dependencies: - "@eslint/eslintrc" "^1.4.1" - "@humanwhocodes/config-array" "^0.11.8" + version "8.52.0" + resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/eslint/-/eslint-8.52.0.tgz#d0cd4a1fac06427a61ef9242b9353f36ea7062fc" + integrity sha1-0M1KH6wGQnph75JCuTU/NupwYvw= + dependencies: + "@eslint-community/eslint-utils" "^4.2.0" + "@eslint-community/regexpp" "^4.6.1" + "@eslint/eslintrc" "^2.1.2" + "@eslint/js" "8.52.0" + "@humanwhocodes/config-array" "^0.11.13" "@humanwhocodes/module-importer" "^1.0.1" "@nodelib/fs.walk" "^1.2.8" - ajv "^6.10.0" + "@ungap/structured-clone" "^1.2.0" + ajv "^6.12.4" chalk "^4.0.0" cross-spawn "^7.0.2" debug "^4.3.2" doctrine "^3.0.0" escape-string-regexp "^4.0.0" - eslint-scope "^7.1.1" - eslint-utils "^3.0.0" - eslint-visitor-keys "^3.3.0" - espree "^9.4.0" - esquery "^1.4.0" + eslint-scope "^7.2.2" + eslint-visitor-keys "^3.4.3" + espree "^9.6.1" + esquery "^1.4.2" esutils "^2.0.2" fast-deep-equal "^3.1.3" file-entry-cache "^6.0.1" find-up "^5.0.0" glob-parent "^6.0.2" globals "^13.19.0" - grapheme-splitter "^1.0.4" + graphemer "^1.4.0" ignore "^5.2.0" - import-fresh "^3.0.0" imurmurhash "^0.1.4" is-glob "^4.0.0" is-path-inside "^3.0.3" - js-sdsl "^4.1.4" js-yaml "^4.1.0" json-stable-stringify-without-jsonify "^1.0.1" levn "^0.4.1" lodash.merge "^4.6.2" minimatch "^3.1.2" natural-compare "^1.4.0" - optionator "^0.9.1" - regexpp "^3.2.0" + optionator "^0.9.3" strip-ansi "^6.0.1" - strip-json-comments "^3.1.0" text-table "^0.2.0" -espree@^9.4.0: - version "9.4.1" - resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/espree/-/espree-9.4.1.tgz#51d6092615567a2c2cff7833445e37c28c0065bd" - integrity sha1-UdYJJhVWeiws/3gzRF43wowAZb0= +espree@^9.6.0, espree@^9.6.1: + version "9.6.1" + resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/espree/-/espree-9.6.1.tgz#a2a17b8e434690a5432f2f8018ce71d331a48c6f" + integrity sha1-oqF7jkNGkKVDLy+AGM5x0zGkjG8= dependencies: - acorn "^8.8.0" + acorn "^8.9.0" acorn-jsx "^5.3.2" - eslint-visitor-keys "^3.3.0" + eslint-visitor-keys "^3.4.1" -esquery@^1.4.0: - version "1.4.0" - resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/esquery/-/esquery-1.4.0.tgz#2148ffc38b82e8c7057dfed48425b3e61f0f24a5" - integrity sha1-IUj/w4uC6McFff7UhCWz5h8PJKU= +esquery@^1.4.2: + version "1.5.0" + resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/esquery/-/esquery-1.5.0.tgz#6ce17738de8577694edd7361c57182ac8cb0db0b" + integrity sha1-bOF3ON6Fd2lO3XNhxXGCrIyw2ws= dependencies: estraverse "^5.1.0" @@ -1739,9 +1767,9 @@ fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: integrity sha1-On1WtVnWy8PrUSMlJE5hmmXGxSU= fast-glob@^3.2.9: - version "3.2.12" - resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/fast-glob/-/fast-glob-3.2.12.tgz#7f39ec99c2e6ab030337142da9e0c18f37afae80" - integrity sha1-fznsmcLmqwMDNxQtqeDBjzevroA= + version "3.3.1" + resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/fast-glob/-/fast-glob-3.3.1.tgz#784b4e897340f3dbbef17413b3f11acf03c874c4" + integrity sha1-eEtOiXNA89u+8XQTs/EazwPIdMQ= dependencies: "@nodelib/fs.stat" "^2.0.2" "@nodelib/fs.walk" "^1.2.3" @@ -1802,32 +1830,38 @@ find-up@^5.0.0: path-exists "^4.0.0" flat-cache@^3.0.4: - version "3.0.4" - resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/flat-cache/-/flat-cache-3.0.4.tgz#61b0338302b2fe9f957dcc32fc2a87f1c3048b11" - integrity sha1-YbAzgwKy/p+Vfcwy/CqH8cMEixE= + version "3.1.1" + resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/flat-cache/-/flat-cache-3.1.1.tgz#a02a15fdec25a8f844ff7cc658f03dd99eb4609b" + integrity sha1-oCoV/ewlqPhE/3zGWPA92Z60YJs= dependencies: - flatted "^3.1.0" + flatted "^3.2.9" + keyv "^4.5.3" rimraf "^3.0.2" -flatted@^3.1.0: - version "3.2.7" - resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/flatted/-/flatted-3.2.7.tgz#609f39207cb614b89d0765b477cb2d437fbf9787" - integrity sha1-YJ85IHy2FLidB2W0d8stQ3+/l4c= +flat@^5.0.2: + version "5.0.2" + resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/flat/-/flat-5.0.2.tgz#8ca6fe332069ffa9d324c327198c598259ceb241" + integrity sha1-jKb+MyBp/6nTJMMnGYxZglnOskE= + +flatted@^3.2.9: + version "3.2.9" + resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/flatted/-/flatted-3.2.9.tgz#7eb4c67ca1ba34232ca9d2d93e9886e611ad7daf" + integrity sha1-frTGfKG6NCMsqdLZPpiG5hGtfa8= fp-ts@^2.6.1: - version "2.13.1" - resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/fp-ts/-/fp-ts-2.13.1.tgz#1bf2b24136cca154846af16752dc29e8fa506f2a" - integrity sha1-G/KyQTbMoVSEavFnUtwp6PpQbyo= + version "2.16.1" + resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/fp-ts/-/fp-ts-2.16.1.tgz#6abc401ce42b65364ca8f0b0d995c5840c68a930" + integrity sha1-arxAHOQrZTZMqPCw2ZXFhAxoqTA= fs.realpath@^1.0.0: version "1.0.0" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= -function-bind@^1.1.1: - version "1.1.1" - resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" - integrity sha1-pWiZ0+o8m6uHS7l3O3xe3pL0iV0= +function-bind@^1.1.2: + version "1.1.2" + resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c" + integrity sha1-LALYZNl/PqbIgwxGTL0Rq26rehw= gensync@^1.0.0-beta.2: version "1.0.0-beta.2" @@ -1876,9 +1910,9 @@ globals@^11.1.0: integrity sha1-q4eVM4hooLq9hSV1gBjCp+uVxC4= globals@^13.19.0: - version "13.20.0" - resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/globals/-/globals-13.20.0.tgz#ea276a1e508ffd4f1612888f9d1bad1e2717bf82" - integrity sha1-6idqHlCP/U8WEoiPnRutHicXv4I= + version "13.23.0" + resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/globals/-/globals-13.23.0.tgz#ef31673c926a0976e1f61dab4dca57e0c0a8af02" + integrity sha1-7zFnPJJqCXbh9h2rTcpX4MCorwI= dependencies: type-fest "^0.20.2" @@ -1895,14 +1929,14 @@ globby@^11.1.0: slash "^3.0.0" graceful-fs@^4.1.2, graceful-fs@^4.2.4, graceful-fs@^4.2.9: - version "4.2.10" - resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/graceful-fs/-/graceful-fs-4.2.10.tgz#147d3a006da4ca3ce14728c7aefc287c367d7a6c" - integrity sha1-FH06AG2kyjzhRyjHrvwofDZ9emw= + version "4.2.11" + resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" + integrity sha1-QYPk6L8Iu24Fu7L30uDI9xLKQOM= -grapheme-splitter@^1.0.4: - version "1.0.4" - resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz#9cf3a665c6247479896834af35cf1dbb4400767e" - integrity sha1-nPOmZcYkdHmJaDSvNc8du0QAdn4= +graphemer@^1.4.0: + version "1.4.0" + resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/graphemer/-/graphemer-1.4.0.tgz#fb2f1d55e0e3a1849aeffc90c4fa0dd53a0e66c6" + integrity sha1-+y8dVeDjoYSa7/yQxPoN1ToOZsY= has-flag@^3.0.0: version "3.0.0" @@ -1914,19 +1948,19 @@ has-flag@^4.0.0: resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" integrity sha1-lEdx/ZyByBJlxNaUGGDaBrtZR5s= -has@^1.0.3: - version "1.0.3" - resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" - integrity sha1-ci18v8H2qoJB8W3YFOAR4fQeh5Y= +hasown@^2.0.0: + version "2.0.0" + resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/hasown/-/hasown-2.0.0.tgz#f4c513d454a57b7c7e1650778de226b11700546c" + integrity sha1-9MUT1FSle3x+FlB3jeImsRcAVGw= dependencies: - function-bind "^1.1.1" + function-bind "^1.1.2" ignore@^5.2.0: version "5.2.4" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/ignore/-/ignore-5.2.4.tgz#a291c0c6178ff1b960befe47fcdec301674a6324" integrity sha1-opHAxheP8blgvv5H/N7DAWdKYyQ= -import-fresh@^3.0.0, import-fresh@^3.2.1: +import-fresh@^3.2.1: version "3.3.0" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" integrity sha1-NxYsJfy566oublPVtNiM4X2eDCs= @@ -1988,12 +2022,12 @@ io-ts@^2.2.13: resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/io-ts/-/io-ts-2.2.20.tgz#be42b75f6668a2c44f706f72ee6e4c906777c7f5" integrity sha1-vkK3X2ZoosRPcG9y7m5MkGd3x/U= -is-core-module@^2.9.0: - version "2.11.0" - resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/is-core-module/-/is-core-module-2.11.0.tgz#ad4cb3e3863e814523c96f3f58d26cc570ff0144" - integrity sha1-rUyz44Y+gUUjyW8/WNJsxXD/AUQ= +is-core-module@^2.13.0: + version "2.13.1" + resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/is-core-module/-/is-core-module-2.13.1.tgz#ad0d7532c6fea9da1ebdc82742d74525c6273384" + integrity sha1-rQ11Msb+qdoevcgnQtdFJcYnM4Q= dependencies: - has "^1.0.3" + hasown "^2.0.0" is-extglob@^2.1.1: version "2.1.1" @@ -2048,11 +2082,6 @@ jest-worker@^27.4.5: merge-stream "^2.0.0" supports-color "^8.0.0" -js-sdsl@^4.1.4: - version "4.3.0" - resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/js-sdsl/-/js-sdsl-4.3.0.tgz#aeefe32a451f7af88425b11fdb5f58c90ae1d711" - integrity sha1-ru/jKkUfeviEJbEf219YyQrh1xE= - js-tokens@^4.0.0: version "4.0.0" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" @@ -2075,6 +2104,11 @@ jsesc@~0.5.0: resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" integrity sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0= +json-buffer@3.0.1: + version "3.0.1" + resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/json-buffer/-/json-buffer-3.0.1.tgz#9338802a30d3b6605fbe0613e094008ca8c05a13" + integrity sha1-kziAKjDTtmBfvgYT4JQAjKjAWhM= + json-parse-even-better-errors@^2.3.1: version "2.3.1" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" @@ -2090,11 +2124,18 @@ json-stable-stringify-without-jsonify@^1.0.1: resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE= -json5@^2.2.2: +json5@^2.2.3: version "2.2.3" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283" integrity sha1-eM1vGhm9wStz21rQxh79ZsHikoM= +keyv@^4.5.3: + version "4.5.4" + resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/keyv/-/keyv-4.5.4.tgz#a879a99e29452f942439f2a405e3af8b31d4de93" + integrity sha1-qHmpnilFL5QkOfKkBeOvizHU3pM= + dependencies: + json-buffer "3.0.1" + kind-of@^6.0.2: version "6.0.3" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" @@ -2213,10 +2254,10 @@ neo-async@^2.6.2: resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" integrity sha1-tKr7k+OustgXTKU88WOrfXMIMF8= -node-releases@^2.0.8: - version "2.0.10" - resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/node-releases/-/node-releases-2.0.10.tgz#c311ebae3b6a148c89b1813fd7c4d3c024ef537f" - integrity sha1-wxHrrjtqFIyJsYE/18TTwCTvU38= +node-releases@^2.0.13: + version "2.0.13" + resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/node-releases/-/node-releases-2.0.13.tgz#d5ed1627c23e3461e819b02e57b75e4899b1c81d" + integrity sha1-1e0WJ8I+NGHoGbAuV7deSJmxyB0= oidc-client@^1.11.5: version "1.11.5" @@ -2236,17 +2277,17 @@ once@^1.3.0: dependencies: wrappy "1" -optionator@^0.9.1: - version "0.9.1" - resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/optionator/-/optionator-0.9.1.tgz#4f236a6373dae0566a6d43e1326674f50c291499" - integrity sha1-TyNqY3Pa4FZqbUPhMmZ09QwpFJk= +optionator@^0.9.3: + version "0.9.3" + resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/optionator/-/optionator-0.9.3.tgz#007397d44ed1872fdc6ed31360190f81814e2c64" + integrity sha1-AHOX1E7Rhy/cbtMTYBkPgYFOLGQ= dependencies: + "@aashutoshrathi/word-wrap" "^1.2.3" deep-is "^0.1.3" fast-levenshtein "^2.0.6" levn "^0.4.1" prelude-ls "^1.2.1" type-check "^0.4.0" - word-wrap "^1.2.3" p-limit@^2.2.0: version "2.3.0" @@ -2341,9 +2382,9 @@ prelude-ls@^1.2.1: integrity sha1-3rxkidem5rDnYRiIzsiAM30xY5Y= punycode@^2.1.0: - version "2.3.0" - resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/punycode/-/punycode-2.3.0.tgz#f67fa67c94da8f4d0cfff981aee4118064199b8f" - integrity sha1-9n+mfJTaj00M//mBruQRgGQZm48= + version "2.3.1" + resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/punycode/-/punycode-2.3.1.tgz#027422e2faec0b25e1549c3e1bd8309b9133b6e5" + integrity sha1-AnQi4vrsCyXhVJw+G9gwm5EztuU= queue-microtask@^1.2.2: version "1.2.3" @@ -2365,9 +2406,9 @@ rechoir@^0.7.0: resolve "^1.9.0" regenerate-unicode-properties@^10.1.0: - version "10.1.0" - resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.0.tgz#7c3192cab6dd24e21cb4461e5ddd7dd24fa8374c" - integrity sha1-fDGSyrbdJOIctEYeXd190k+oN0w= + version "10.1.1" + resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.1.tgz#6b0e05489d9076b04c436f318d9b067bba459480" + integrity sha1-aw4FSJ2QdrBMQ28xjZsGe7pFlIA= dependencies: regenerate "^1.4.2" @@ -2376,27 +2417,22 @@ regenerate@^1.4.2: resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/regenerate/-/regenerate-1.4.2.tgz#b9346d8827e8f5a32f7ba29637d398b69014848a" integrity sha1-uTRtiCfo9aMve6KWN9OYtpAUhIo= -regenerator-runtime@^0.13.11: - version "0.13.11" - resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz#f6dca3e7ceec20590d07ada785636a90cdca17f9" - integrity sha1-9tyj587sIFkNB62nhWNqkM3KF/k= +regenerator-runtime@^0.14.0: + version "0.14.0" + resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/regenerator-runtime/-/regenerator-runtime-0.14.0.tgz#5e19d68eb12d486f797e15a3c6a918f7cec5eb45" + integrity sha1-XhnWjrEtSG95fhWjxqkY987F60U= -regenerator-transform@^0.15.1: - version "0.15.1" - resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/regenerator-transform/-/regenerator-transform-0.15.1.tgz#f6c4e99fc1b4591f780db2586328e4d9a9d8dc56" - integrity sha1-9sTpn8G0WR94DbJYYyjk2anY3FY= +regenerator-transform@^0.15.2: + version "0.15.2" + resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/regenerator-transform/-/regenerator-transform-0.15.2.tgz#5bbae58b522098ebdf09bca2f83838929001c7a4" + integrity sha1-W7rli1IgmOvfCbyi+Dg4kpABx6Q= dependencies: "@babel/runtime" "^7.8.4" -regexpp@^3.2.0: - version "3.2.0" - resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/regexpp/-/regexpp-3.2.0.tgz#0425a2768d8f23bad70ca4b90461fa2f1213e1b2" - integrity sha1-BCWido2PI7rXDKS5BGH6LxIT4bI= - -regexpu-core@^5.2.1: - version "5.3.0" - resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/regexpu-core/-/regexpu-core-5.3.0.tgz#4d0d044b76fedbad6238703ae84bfdedee2cf074" - integrity sha1-TQ0ES3b+261iOHA66Ev97e4s8HQ= +regexpu-core@^5.3.1: + version "5.3.2" + resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/regexpu-core/-/regexpu-core-5.3.2.tgz#11a2b06884f3527aec3e93dbbf4a3b958a95546b" + integrity sha1-EaKwaITzUnrsPpPbv0o7lYqVVGs= dependencies: "@babel/regjsgen" "^0.8.0" regenerate "^1.4.2" @@ -2435,11 +2471,11 @@ resolve-from@^5.0.0: integrity sha1-w1IlhD3493bfIcV1V7wIfp39/Gk= resolve@^1.14.2, resolve@^1.9.0: - version "1.22.1" - resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/resolve/-/resolve-1.22.1.tgz#27cb2ebb53f91abb49470a928bba7558066ac177" - integrity sha1-J8suu1P5GrtJRwqSi7p1WAZqwXc= + version "1.22.8" + resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/resolve/-/resolve-1.22.8.tgz#b6c87a9f2aa06dfab52e3d70ac8cde321fa5a48d" + integrity sha1-tsh6nyqgbfq1Lj1wrIzeMh+lpI0= dependencies: - is-core-module "^2.9.0" + is-core-module "^2.13.0" path-parse "^1.0.7" supports-preserve-symlinks-flag "^1.0.0" @@ -2467,10 +2503,10 @@ safe-buffer@^5.1.0: resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" integrity sha1-Hq+fqb2x/dTsdfWPnNtOa3gn7sY= -schema-utils@^3.1.0, schema-utils@^3.1.1: - version "3.1.1" - resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/schema-utils/-/schema-utils-3.1.1.tgz#bc74c4b6b6995c1d88f76a8b77bea7219e0c8281" - integrity sha1-vHTEtraZXB2I92qLd76nIZ4MgoE= +schema-utils@^3.1.1, schema-utils@^3.2.0: + version "3.3.0" + resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/schema-utils/-/schema-utils-3.3.0.tgz#f50a88877c3c01652a15b622ae9e9795df7a60fe" + integrity sha1-9QqIh3w8AWUqFbYirp6Xld96YP4= dependencies: "@types/json-schema" "^7.0.8" ajv "^6.12.5" @@ -2481,15 +2517,15 @@ semver-compare@^1.0.0: resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/semver-compare/-/semver-compare-1.0.0.tgz#0dee216a1c941ab37e9efb1788f6afc5ff5537fc" integrity sha1-De4hahyUGrN+nvsXiPavxf9VN/w= -semver@^6.1.1, semver@^6.1.2, semver@^6.3.0: - version "6.3.0" - resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" - integrity sha1-7gpkyK9ejO6mdoexM3YeG+y9HT0= +semver@^6.3.1: + version "6.3.1" + resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" + integrity sha1-VW0u+GiRRuRtzqS/3QlfNDTf/LQ= semver@^7.3.4, semver@^7.3.7: - version "7.3.8" - resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/semver/-/semver-7.3.8.tgz#07a78feafb3f7b32347d725e33de7e2a2df67798" - integrity sha1-B6eP6vs/ezI0fXJeM95+Ki32d5g= + version "7.5.4" + resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/semver/-/semver-7.5.4.tgz#483986ec4ed38e1c6c48c34894a9182dbff68a6e" + integrity sha1-SDmG7E7TjhxsSMNIlKkYLb/2im4= dependencies: lru-cache "^6.0.0" @@ -2500,7 +2536,7 @@ serialize-javascript@^4.0.0: dependencies: randombytes "^2.1.0" -serialize-javascript@^6.0.0: +serialize-javascript@^6.0.1: version "6.0.1" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/serialize-javascript/-/serialize-javascript-6.0.1.tgz#b206efb27c3da0b0ab6b52f48d170b7996458e5c" integrity sha1-sgbvsnw9oLCra1L0jRcLeZZFjlw= @@ -2544,6 +2580,11 @@ source-map@^0.6.0: resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" integrity sha1-dHIq8y6WFOnCh6jQu95IteLxomM= +source-map@^0.7.4: + version "0.7.4" + resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/source-map/-/source-map-0.7.4.tgz#a9bbe705c9d8846f4e08ff6765acf0f1b0898656" + integrity sha1-qbvnBcnYhG9OCP9nZazw8bCJhlY= + string-width@^4.1.0, string-width@^4.2.0: version "4.2.3" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" @@ -2560,7 +2601,7 @@ strip-ansi@^6.0.0, strip-ansi@^6.0.1: dependencies: ansi-regex "^5.0.1" -strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: +strip-json-comments@^3.1.1: version "3.1.1" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" integrity sha1-MfEoGzgyYwQ0gxwxDAHMzajL4AY= @@ -2596,24 +2637,24 @@ tapable@^2.1.1, tapable@^2.2.0: resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/tapable/-/tapable-2.2.1.tgz#1967a73ef4060a82f12ab96af86d52fdb76eeca0" integrity sha1-GWenPvQGCoLxKrlq+G1S/bdu7KA= -terser-webpack-plugin@^5.1.3: - version "5.3.6" - resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/terser-webpack-plugin/-/terser-webpack-plugin-5.3.6.tgz#5590aec31aa3c6f771ce1b1acca60639eab3195c" - integrity sha1-VZCuwxqjxvdxzhsazKYGOeqzGVw= +terser-webpack-plugin@^5.3.7: + version "5.3.9" + resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/terser-webpack-plugin/-/terser-webpack-plugin-5.3.9.tgz#832536999c51b46d468067f9e37662a3b96adfe1" + integrity sha1-gyU2mZxRtG1GgGf543Zio7lq3+E= dependencies: - "@jridgewell/trace-mapping" "^0.3.14" + "@jridgewell/trace-mapping" "^0.3.17" jest-worker "^27.4.5" schema-utils "^3.1.1" - serialize-javascript "^6.0.0" - terser "^5.14.1" + serialize-javascript "^6.0.1" + terser "^5.16.8" -terser@^5.14.1, terser@^5.14.2: - version "5.16.3" - resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/terser/-/terser-5.16.3.tgz#3266017a9b682edfe019b8ecddd2abaae7b39c6b" - integrity sha1-MmYBeptoLt/gGbjs3dKrqueznGs= +terser@^5.14.2, terser@^5.16.8: + version "5.24.0" + resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/terser/-/terser-5.24.0.tgz#4ae50302977bca4831ccc7b4fef63a3c04228364" + integrity sha1-SuUDApd7ykgxzMe0/vY6PAQig2Q= dependencies: - "@jridgewell/source-map" "^0.3.2" - acorn "^8.5.0" + "@jridgewell/source-map" "^0.3.3" + acorn "^8.8.2" commander "^2.20.0" source-map-support "~0.5.20" @@ -2635,14 +2676,15 @@ to-regex-range@^5.0.1: is-number "^7.0.0" ts-loader@^9.2.5: - version "9.4.2" - resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/ts-loader/-/ts-loader-9.4.2.tgz#80a45eee92dd5170b900b3d00abcfa14949aeb78" - integrity sha1-gKRe7pLdUXC5ALPQCrz6FJSa63g= + version "9.5.0" + resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/ts-loader/-/ts-loader-9.5.0.tgz#f0a51dda37cc4d8e43e6cb14edebbc599b0c3aa2" + integrity sha1-8KUd2jfMTY5D5ssU7eu8WZsMOqI= dependencies: chalk "^4.1.0" enhanced-resolve "^5.0.0" micromatch "^4.0.0" semver "^7.3.4" + source-map "^0.7.4" tslib@^1.8.1: version "1.14.1" @@ -2673,6 +2715,11 @@ typescript@^4.4.2: resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/typescript/-/typescript-4.9.5.tgz#095979f9bcc0d09da324d58d03ce8f8374cbe65a" integrity sha1-CVl5+bzA0J2jJNWNA86Pg3TL5lo= +undici-types@~5.26.4: + version "5.26.5" + resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/undici-types/-/undici-types-5.26.5.tgz#bcd539893d00b56e964fd2657a4866b221a65617" + integrity sha1-vNU5iT0AtW6WT9JlekhmsiGmVhc= + unicode-canonical-property-names-ecmascript@^2.0.0: version "2.0.0" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz#301acdc525631670d39f6146e0e77ff6bbdebddc" @@ -2696,10 +2743,10 @@ unicode-property-aliases-ecmascript@^2.0.0: resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz#43d41e3be698bd493ef911077c9b131f827e8ccd" integrity sha1-Q9QeO+aYvUk++REHfJsTH4J+jM0= -update-browserslist-db@^1.0.10: - version "1.0.10" - resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz#0f54b876545726f17d00cd9a2561e6dade943ff3" - integrity sha1-D1S4dlRXJvF9AM2aJWHm2t6UP/M= +update-browserslist-db@^1.0.13: + version "1.0.13" + resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz#3c5e4f5c083661bd38ef64b6328c26ed6c8248c4" + integrity sha1-PF5PXAg2Yb0472S2Mowm7WyCSMQ= dependencies: escalade "^3.1.1" picocolors "^1.0.0" @@ -2738,11 +2785,12 @@ webpack-cli@^4.9.2: webpack-merge "^5.7.3" webpack-merge@^5.7.3: - version "5.8.0" - resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/webpack-merge/-/webpack-merge-5.8.0.tgz#2b39dbf22af87776ad744c390223731d30a68f61" - integrity sha1-Kznb8ir4d3atdEw5AiNzHTCmj2E= + version "5.10.0" + resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/webpack-merge/-/webpack-merge-5.10.0.tgz#a3ad5d773241e9c682803abf628d4cd62b8a4177" + integrity sha1-o61ddzJB6caCgDq/Yo1M1iuKQXc= dependencies: clone-deep "^4.0.1" + flat "^5.0.2" wildcard "^2.0.0" webpack-sources@^3.2.3: @@ -2751,21 +2799,21 @@ webpack-sources@^3.2.3: integrity sha1-LU2quEUf1LJAzCcFX/agwszqDN4= webpack@^5.72.1: - version "5.75.0" - resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/webpack/-/webpack-5.75.0.tgz#1e440468647b2505860e94c9ff3e44d5b582c152" - integrity sha1-HkQEaGR7JQWGDpTJ/z5E1bWCwVI= + version "5.89.0" + resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/webpack/-/webpack-5.89.0.tgz#56b8bf9a34356e93a6625770006490bf3a7f32dc" + integrity sha1-Vri/mjQ1bpOmYldwAGSQvzp/Mtw= dependencies: "@types/eslint-scope" "^3.7.3" - "@types/estree" "^0.0.51" - "@webassemblyjs/ast" "1.11.1" - "@webassemblyjs/wasm-edit" "1.11.1" - "@webassemblyjs/wasm-parser" "1.11.1" + "@types/estree" "^1.0.0" + "@webassemblyjs/ast" "^1.11.5" + "@webassemblyjs/wasm-edit" "^1.11.5" + "@webassemblyjs/wasm-parser" "^1.11.5" acorn "^8.7.1" - acorn-import-assertions "^1.7.6" + acorn-import-assertions "^1.9.0" browserslist "^4.14.5" chrome-trace-event "^1.0.2" - enhanced-resolve "^5.10.0" - es-module-lexer "^0.9.0" + enhanced-resolve "^5.15.0" + es-module-lexer "^1.2.1" eslint-scope "5.1.1" events "^3.2.0" glob-to-regexp "^0.4.1" @@ -2774,9 +2822,9 @@ webpack@^5.72.1: loader-runner "^4.2.0" mime-types "^2.1.27" neo-async "^2.6.2" - schema-utils "^3.1.0" + schema-utils "^3.2.0" tapable "^2.1.1" - terser-webpack-plugin "^5.1.3" + terser-webpack-plugin "^5.3.7" watchpack "^2.4.0" webpack-sources "^3.2.3" @@ -2788,14 +2836,9 @@ which@^2.0.1: isexe "^2.0.0" wildcard@^2.0.0: - version "2.0.0" - resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/wildcard/-/wildcard-2.0.0.tgz#a77d20e5200c6faaac979e4b3aadc7b3dd7f8fec" - integrity sha1-p30g5SAMb6qsl55LOq3Hs91/j+w= - -word-wrap@^1.2.3: - version "1.2.3" - resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" - integrity sha1-YQY29rH3A4kb00dxzLF/uTtHB5w= + version "2.0.1" + resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/wildcard/-/wildcard-2.0.1.tgz#5ab10d02487198954836b6349f74fff961e10f67" + integrity sha1-WrENAkhxmJVINrY0n3T/+WHhD2c= wrap-ansi@^7.0.0: version "7.0.0" From 37a0667cf150baa4aec2d605dbe06fffaac25f04 Mon Sep 17 00:00:00 2001 From: William Godbe Date: Wed, 8 Nov 2023 17:16:30 -0800 Subject: [PATCH 012/391] Mark API from 8.0 as shipped (#51947) --- src/Antiforgery/src/PublicAPI.Shipped.txt | 5 + src/Antiforgery/src/PublicAPI.Unshipped.txt | 5 - .../Authorization/src/PublicAPI.Shipped.txt | 2 + .../Authorization/src/PublicAPI.Unshipped.txt | 2 - .../Components/src/PublicAPI.Shipped.txt | 108 +++++++++++- .../Components/src/PublicAPI.Unshipped.txt | 108 ------------ .../Endpoints/src/PublicAPI.Shipped.txt | 66 +++++++- .../Endpoints/src/PublicAPI.Unshipped.txt | 65 +------ .../Forms/src/PublicAPI.Shipped.txt | 4 + .../Forms/src/PublicAPI.Unshipped.txt | 4 - .../src/PublicAPI.Shipped.txt | 4 +- .../src/PublicAPI.Unshipped.txt | 2 - .../src/PublicAPI.Shipped.txt | 151 +++++++++++++++++ .../src/PublicAPI.Unshipped.txt | 151 ----------------- .../Server/src/PublicAPI.Shipped.txt | 7 + .../Server/src/PublicAPI.Unshipped.txt | 7 - src/Components/Web/src/PublicAPI.Shipped.txt | 114 ++++++++++++- .../Web/src/PublicAPI.Unshipped.txt | 114 ------------- .../Server/src/PublicAPI.Shipped.txt | 9 + .../Server/src/PublicAPI.Unshipped.txt | 9 - .../src/PublicAPI.Shipped.txt | 158 +++++++++--------- .../WebView/WebView/src/PublicAPI.Shipped.txt | 1 + .../WebView/src/PublicAPI.Unshipped.txt | 1 - src/DefaultBuilder/src/PublicAPI.Shipped.txt | 5 + .../src/PublicAPI.Unshipped.txt | 5 - .../Abstractions/src/PublicAPI.Shipped.txt | 4 + .../Abstractions/src/PublicAPI.Unshipped.txt | 4 - .../Abstractions/src/PublicAPI.Shipped.txt | 2 + .../Abstractions/src/PublicAPI.Unshipped.txt | 2 - src/Hosting/Hosting/src/PublicAPI.Shipped.txt | 1 + .../Hosting/src/PublicAPI.Unshipped.txt | 1 - .../src/PublicAPI.Shipped.txt | 2 + .../src/PublicAPI.Unshipped.txt | 2 - .../src/PublicAPI.Shipped.txt | 3 + .../src/PublicAPI.Unshipped.txt | 3 - src/Http/Headers/src/PublicAPI.Shipped.txt | 8 +- src/Http/Headers/src/PublicAPI.Unshipped.txt | 8 - .../src/PublicAPI.Shipped.txt | 54 +++++- .../src/PublicAPI.Unshipped.txt | 54 ------ .../Http.Extensions/src/PublicAPI.Shipped.txt | 7 + .../src/PublicAPI.Unshipped.txt | 7 - .../Http.Features/src/PublicAPI.Shipped.txt | 5 + .../Http.Features/src/PublicAPI.Unshipped.txt | 5 - .../Http.Results/src/PublicAPI.Shipped.txt | 45 +++-- .../Http.Results/src/PublicAPI.Unshipped.txt | 43 ----- src/Http/Http/src/PublicAPI.Shipped.txt | 37 ++++ src/Http/Http/src/PublicAPI.Unshipped.txt | 37 ---- .../src/PublicAPI.Shipped.txt | 2 +- .../src/PublicAPI.Unshipped.txt | 2 - src/Http/Routing/src/PublicAPI.Shipped.txt | 19 +++ src/Http/Routing/src/PublicAPI.Unshipped.txt | 19 --- .../Polly/src/PublicAPI.Shipped.txt | 12 +- .../Polly/src/PublicAPI.Unshipped.txt | 4 - src/Identity/Core/src/PublicAPI.Shipped.txt | 97 +++++++++++ src/Identity/Core/src/PublicAPI.Unshipped.txt | 97 ----------- .../src/PublicAPI.Shipped.txt | 1 + .../src/PublicAPI.Unshipped.txt | 1 - .../Extensions.Core/src/PublicAPI.Shipped.txt | 6 + .../src/PublicAPI.Unshipped.txt | 6 - src/Identity/UI/src/PublicAPI.Shipped.txt | 4 +- src/Identity/UI/src/PublicAPI.Unshipped.txt | 4 - src/Middleware/CORS/src/PublicAPI.Shipped.txt | 3 + .../CORS/src/PublicAPI.Unshipped.txt | 3 - .../src/PublicAPI.Shipped.txt | 1 + .../src/PublicAPI.Unshipped.txt | 1 - .../Diagnostics/src/PublicAPI.Shipped.txt | 7 + .../Diagnostics/src/PublicAPI.Unshipped.txt | 7 - .../HttpLogging/src/PublicAPI.Shipped.txt | 36 +++- .../HttpLogging/src/PublicAPI.Unshipped.txt | 36 ---- .../HttpOverrides/src/PublicAPI.Shipped.txt | 13 +- .../HttpOverrides/src/PublicAPI.Unshipped.txt | 13 -- .../Localization/src/PublicAPI.Shipped.txt | 2 + .../Localization/src/PublicAPI.Unshipped.txt | 2 - .../src/PublicAPI.Shipped.txt | 14 ++ .../src/PublicAPI.Unshipped.txt | 14 -- .../OutputCaching/src/PublicAPI.Shipped.txt | 5 + .../OutputCaching/src/PublicAPI.Unshipped.txt | 5 - .../StaticFiles/src/PublicAPI.Shipped.txt | 2 + .../StaticFiles/src/PublicAPI.Unshipped.txt | 2 - .../src/PublicAPI.Shipped.txt | 2 + .../src/PublicAPI.Unshipped.txt | 2 - src/Mvc/Mvc.Core/src/PublicAPI.Shipped.txt | 31 +++- src/Mvc/Mvc.Core/src/PublicAPI.Unshipped.txt | 31 ---- src/Mvc/Mvc.Razor/src/PublicAPI.Shipped.txt | 2 + src/Mvc/Mvc.Razor/src/PublicAPI.Unshipped.txt | 2 - .../Mvc.TagHelpers/src/PublicAPI.Shipped.txt | 2 + .../src/PublicAPI.Unshipped.txt | 2 - .../src/PublicAPI.Shipped.txt | 1 + .../src/PublicAPI.Unshipped.txt | 1 - src/ObjectPool/src/PublicAPI.Shipped.txt | 2 + src/ObjectPool/src/PublicAPI.Unshipped.txt | 2 - .../BearerToken/src/PublicAPI.Shipped.txt | 37 ++++ .../BearerToken/src/PublicAPI.Unshipped.txt | 37 ---- .../Cookies/src/PublicAPI.Shipped.txt | 1 + .../Cookies/src/PublicAPI.Unshipped.txt | 1 - .../Core/src/PublicAPI.Shipped.txt | 8 + .../Core/src/PublicAPI.Unshipped.txt | 8 - .../Facebook/src/PublicAPI.Shipped.txt | 1 + .../Facebook/src/PublicAPI.Unshipped.txt | 1 - .../Google/src/PublicAPI.Shipped.txt | 1 + .../Google/src/PublicAPI.Unshipped.txt | 1 - .../JwtBearer/src/PublicAPI.Shipped.txt | 4 + .../JwtBearer/src/PublicAPI.Unshipped.txt | 4 - .../src/PublicAPI.Shipped.txt | 1 + .../src/PublicAPI.Unshipped.txt | 1 - .../Negotiate/src/PublicAPI.Shipped.txt | 1 + .../Negotiate/src/PublicAPI.Unshipped.txt | 1 - .../OAuth/src/PublicAPI.Shipped.txt | 1 + .../OAuth/src/PublicAPI.Unshipped.txt | 1 - .../OpenIdConnect/src/PublicAPI.Shipped.txt | 5 + .../OpenIdConnect/src/PublicAPI.Unshipped.txt | 5 - .../Twitter/src/PublicAPI.Shipped.txt | 1 + .../Twitter/src/PublicAPI.Unshipped.txt | 1 - .../WsFederation/src/PublicAPI.Shipped.txt | 4 + .../WsFederation/src/PublicAPI.Unshipped.txt | 4 - .../PublicAPI/net462/PublicAPI.Shipped.txt | 4 + .../PublicAPI/net462/PublicAPI.Unshipped.txt | 4 - .../PublicAPI/net8.0/PublicAPI.Shipped.txt | 40 +++-- .../PublicAPI/net8.0/PublicAPI.Unshipped.txt | 4 - .../netstandard2.0/PublicAPI.Shipped.txt | 4 + .../netstandard2.0/PublicAPI.Unshipped.txt | 4 - .../Policy/src/PublicAPI.Shipped.txt | 1 + .../Policy/src/PublicAPI.Unshipped.txt | 1 - .../PublicAPI/net462/PublicAPI.Shipped.txt | 18 ++ .../PublicAPI/net462/PublicAPI.Unshipped.txt | 18 -- .../PublicAPI/net8.0/PublicAPI.Shipped.txt | 56 +++++-- .../PublicAPI/net8.0/PublicAPI.Unshipped.txt | 20 --- .../netstandard2.0/PublicAPI.Shipped.txt | 18 ++ .../netstandard2.0/PublicAPI.Unshipped.txt | 18 -- .../netstandard2.1/PublicAPI.Shipped.txt | 18 ++ .../netstandard2.1/PublicAPI.Unshipped.txt | 18 -- src/Servers/HttpSys/src/PublicAPI.Shipped.txt | 37 ++++ .../HttpSys/src/PublicAPI.Unshipped.txt | 37 ---- src/Servers/IIS/IIS/src/PublicAPI.Shipped.txt | 38 ++--- .../IIS/IIS/src/PublicAPI.Unshipped.txt | 38 ----- .../Kestrel/Core/src/PublicAPI.Shipped.txt | 7 + .../Kestrel/Core/src/PublicAPI.Unshipped.txt | 7 - .../Kestrel/Kestrel/src/PublicAPI.Shipped.txt | 2 + .../Kestrel/src/PublicAPI.Unshipped.txt | 2 - .../src/PublicAPI.Shipped.txt | 15 ++ .../src/PublicAPI.Unshipped.txt | 15 -- .../src/PublicAPI.Shipped.txt | 1 + .../src/PublicAPI.Unshipped.txt | 1 - .../Client.Core/src/PublicAPI.Shipped.txt | 10 ++ .../Client.Core/src/PublicAPI.Unshipped.txt | 10 -- .../csharp/Client/src/PublicAPI.Shipped.txt | 1 + .../csharp/Client/src/PublicAPI.Unshipped.txt | 1 - .../src/PublicAPI.Shipped.txt | 2 + .../src/PublicAPI.Unshipped.txt | 2 - .../src/PublicAPI.Shipped.txt | 2 + .../src/PublicAPI.Unshipped.txt | 2 - .../src/PublicAPI.Shipped.txt | 2 + .../src/PublicAPI.Unshipped.txt | 2 - .../PublicAPI/net462/PublicAPI.Shipped.txt | 10 ++ .../PublicAPI/net462/PublicAPI.Unshipped.txt | 10 -- .../PublicAPI/net8.0/PublicAPI.Shipped.txt | 10 ++ .../PublicAPI/net8.0/PublicAPI.Unshipped.txt | 10 -- .../netstandard2.0/PublicAPI.Shipped.txt | 10 ++ .../netstandard2.0/PublicAPI.Unshipped.txt | 10 -- .../server/Core/src/PublicAPI.Shipped.txt | 2 + .../server/Core/src/PublicAPI.Unshipped.txt | 2 - 161 files changed, 1254 insertions(+), 1381 deletions(-) diff --git a/src/Antiforgery/src/PublicAPI.Shipped.txt b/src/Antiforgery/src/PublicAPI.Shipped.txt index 575a0a0b8605..fe55066bc165 100644 --- a/src/Antiforgery/src/PublicAPI.Shipped.txt +++ b/src/Antiforgery/src/PublicAPI.Shipped.txt @@ -27,7 +27,12 @@ Microsoft.AspNetCore.Antiforgery.IAntiforgery.ValidateRequestAsync(Microsoft.Asp Microsoft.AspNetCore.Antiforgery.IAntiforgeryAdditionalDataProvider Microsoft.AspNetCore.Antiforgery.IAntiforgeryAdditionalDataProvider.GetAdditionalData(Microsoft.AspNetCore.Http.HttpContext! context) -> string! Microsoft.AspNetCore.Antiforgery.IAntiforgeryAdditionalDataProvider.ValidateAdditionalData(Microsoft.AspNetCore.Http.HttpContext! context, string! additionalData) -> bool +Microsoft.AspNetCore.Antiforgery.RequireAntiforgeryTokenAttribute +Microsoft.AspNetCore.Antiforgery.RequireAntiforgeryTokenAttribute.RequireAntiforgeryTokenAttribute(bool required = true) -> void +Microsoft.AspNetCore.Antiforgery.RequireAntiforgeryTokenAttribute.RequiresValidation.get -> bool +Microsoft.AspNetCore.Builder.AntiforgeryApplicationBuilderExtensions Microsoft.Extensions.DependencyInjection.AntiforgeryServiceCollectionExtensions +static Microsoft.AspNetCore.Builder.AntiforgeryApplicationBuilderExtensions.UseAntiforgery(this Microsoft.AspNetCore.Builder.IApplicationBuilder! builder) -> Microsoft.AspNetCore.Builder.IApplicationBuilder! static Microsoft.Extensions.DependencyInjection.AntiforgeryServiceCollectionExtensions.AddAntiforgery(this Microsoft.Extensions.DependencyInjection.IServiceCollection! services) -> Microsoft.Extensions.DependencyInjection.IServiceCollection! static Microsoft.Extensions.DependencyInjection.AntiforgeryServiceCollectionExtensions.AddAntiforgery(this Microsoft.Extensions.DependencyInjection.IServiceCollection! services, System.Action! setupAction) -> Microsoft.Extensions.DependencyInjection.IServiceCollection! static readonly Microsoft.AspNetCore.Antiforgery.AntiforgeryOptions.DefaultCookiePrefix -> string! diff --git a/src/Antiforgery/src/PublicAPI.Unshipped.txt b/src/Antiforgery/src/PublicAPI.Unshipped.txt index 8ad52b909e30..7dc5c58110bf 100644 --- a/src/Antiforgery/src/PublicAPI.Unshipped.txt +++ b/src/Antiforgery/src/PublicAPI.Unshipped.txt @@ -1,6 +1 @@ #nullable enable -Microsoft.AspNetCore.Antiforgery.RequireAntiforgeryTokenAttribute -Microsoft.AspNetCore.Antiforgery.RequireAntiforgeryTokenAttribute.RequireAntiforgeryTokenAttribute(bool required = true) -> void -Microsoft.AspNetCore.Antiforgery.RequireAntiforgeryTokenAttribute.RequiresValidation.get -> bool -Microsoft.AspNetCore.Builder.AntiforgeryApplicationBuilderExtensions -static Microsoft.AspNetCore.Builder.AntiforgeryApplicationBuilderExtensions.UseAntiforgery(this Microsoft.AspNetCore.Builder.IApplicationBuilder! builder) -> Microsoft.AspNetCore.Builder.IApplicationBuilder! diff --git a/src/Components/Authorization/src/PublicAPI.Shipped.txt b/src/Components/Authorization/src/PublicAPI.Shipped.txt index 1c94fc90e9b4..247a98915bb8 100644 --- a/src/Components/Authorization/src/PublicAPI.Shipped.txt +++ b/src/Components/Authorization/src/PublicAPI.Shipped.txt @@ -42,7 +42,9 @@ Microsoft.AspNetCore.Components.Authorization.CascadingAuthenticationState.Child Microsoft.AspNetCore.Components.Authorization.CascadingAuthenticationState.ChildContent.set -> void Microsoft.AspNetCore.Components.Authorization.IHostEnvironmentAuthenticationStateProvider Microsoft.AspNetCore.Components.Authorization.IHostEnvironmentAuthenticationStateProvider.SetAuthenticationState(System.Threading.Tasks.Task! authenticationStateTask) -> void +Microsoft.Extensions.DependencyInjection.CascadingAuthenticationStateServiceCollectionExtensions override Microsoft.AspNetCore.Components.Authorization.AuthorizeView.GetAuthorizeData() -> Microsoft.AspNetCore.Authorization.IAuthorizeData![]! override Microsoft.AspNetCore.Components.Authorization.AuthorizeViewCore.BuildRenderTree(Microsoft.AspNetCore.Components.Rendering.RenderTreeBuilder! builder) -> void override Microsoft.AspNetCore.Components.Authorization.AuthorizeViewCore.OnParametersSetAsync() -> System.Threading.Tasks.Task! override Microsoft.AspNetCore.Components.Authorization.CascadingAuthenticationState.OnInitialized() -> void +static Microsoft.Extensions.DependencyInjection.CascadingAuthenticationStateServiceCollectionExtensions.AddCascadingAuthenticationState(this Microsoft.Extensions.DependencyInjection.IServiceCollection! serviceCollection) -> Microsoft.Extensions.DependencyInjection.IServiceCollection! diff --git a/src/Components/Authorization/src/PublicAPI.Unshipped.txt b/src/Components/Authorization/src/PublicAPI.Unshipped.txt index d26ce6553158..7dc5c58110bf 100644 --- a/src/Components/Authorization/src/PublicAPI.Unshipped.txt +++ b/src/Components/Authorization/src/PublicAPI.Unshipped.txt @@ -1,3 +1 @@ #nullable enable -Microsoft.Extensions.DependencyInjection.CascadingAuthenticationStateServiceCollectionExtensions -static Microsoft.Extensions.DependencyInjection.CascadingAuthenticationStateServiceCollectionExtensions.AddCascadingAuthenticationState(this Microsoft.Extensions.DependencyInjection.IServiceCollection! serviceCollection) -> Microsoft.Extensions.DependencyInjection.IServiceCollection! diff --git a/src/Components/Components/src/PublicAPI.Shipped.txt b/src/Components/Components/src/PublicAPI.Shipped.txt index 859bce795398..0aabe63f06c2 100644 --- a/src/Components/Components/src/PublicAPI.Shipped.txt +++ b/src/Components/Components/src/PublicAPI.Shipped.txt @@ -5,12 +5,15 @@ ~Microsoft.AspNetCore.Components.RenderTree.RenderTreeFrame.Component.get -> Microsoft.AspNetCore.Components.IComponent ~Microsoft.AspNetCore.Components.RenderTree.RenderTreeFrame.ComponentKey.get -> object ~Microsoft.AspNetCore.Components.RenderTree.RenderTreeFrame.ComponentReferenceCaptureAction.get -> System.Action +~Microsoft.AspNetCore.Components.RenderTree.RenderTreeFrame.ComponentRenderMode.get -> Microsoft.AspNetCore.Components.IComponentRenderMode ~Microsoft.AspNetCore.Components.RenderTree.RenderTreeFrame.ComponentType.get -> System.Type ~Microsoft.AspNetCore.Components.RenderTree.RenderTreeFrame.ElementKey.get -> object ~Microsoft.AspNetCore.Components.RenderTree.RenderTreeFrame.ElementName.get -> string ~Microsoft.AspNetCore.Components.RenderTree.RenderTreeFrame.ElementReferenceCaptureAction.get -> System.Action ~Microsoft.AspNetCore.Components.RenderTree.RenderTreeFrame.ElementReferenceCaptureId.get -> string ~Microsoft.AspNetCore.Components.RenderTree.RenderTreeFrame.MarkupContent.get -> string +~Microsoft.AspNetCore.Components.RenderTree.RenderTreeFrame.NamedEventAssignedName.get -> string +~Microsoft.AspNetCore.Components.RenderTree.RenderTreeFrame.NamedEventType.get -> string ~Microsoft.AspNetCore.Components.RenderTree.RenderTreeFrame.TextContent.get -> string ~override Microsoft.AspNetCore.Components.RenderTree.RenderTreeFrame.ToString() -> string abstract Microsoft.AspNetCore.Components.Dispatcher.CheckAccess() -> bool @@ -19,6 +22,7 @@ abstract Microsoft.AspNetCore.Components.Dispatcher.InvokeAsync(System.Func(System.Func!>! workItem) -> System.Threading.Tasks.Task! abstract Microsoft.AspNetCore.Components.Dispatcher.InvokeAsync(System.Func! workItem) -> System.Threading.Tasks.Task! abstract Microsoft.AspNetCore.Components.ErrorBoundaryBase.OnErrorAsync(System.Exception! exception) -> System.Threading.Tasks.Task! +abstract Microsoft.AspNetCore.Components.RenderModeAttribute.Mode.get -> Microsoft.AspNetCore.Components.IComponentRenderMode! abstract Microsoft.AspNetCore.Components.RenderTree.Renderer.Dispatcher.get -> Microsoft.AspNetCore.Components.Dispatcher! abstract Microsoft.AspNetCore.Components.RenderTree.Renderer.HandleException(System.Exception! exception) -> void abstract Microsoft.AspNetCore.Components.RenderTree.Renderer.UpdateDisplayAsync(in Microsoft.AspNetCore.Components.RenderTree.RenderBatch renderBatch) -> System.Threading.Tasks.Task! @@ -33,6 +37,13 @@ Microsoft.AspNetCore.Components.CascadingParameterAttribute Microsoft.AspNetCore.Components.CascadingParameterAttribute.CascadingParameterAttribute() -> void Microsoft.AspNetCore.Components.CascadingParameterAttribute.Name.get -> string? Microsoft.AspNetCore.Components.CascadingParameterAttribute.Name.set -> void +Microsoft.AspNetCore.Components.CascadingParameterAttributeBase +Microsoft.AspNetCore.Components.CascadingParameterAttributeBase.CascadingParameterAttributeBase() -> void +Microsoft.AspNetCore.Components.CascadingParameterInfo +Microsoft.AspNetCore.Components.CascadingParameterInfo.Attribute.get -> Microsoft.AspNetCore.Components.CascadingParameterAttributeBase! +Microsoft.AspNetCore.Components.CascadingParameterInfo.CascadingParameterInfo() -> void +Microsoft.AspNetCore.Components.CascadingParameterInfo.PropertyName.get -> string! +Microsoft.AspNetCore.Components.CascadingParameterInfo.PropertyType.get -> System.Type! Microsoft.AspNetCore.Components.CascadingTypeParameterAttribute Microsoft.AspNetCore.Components.CascadingTypeParameterAttribute.CascadingTypeParameterAttribute(string! name) -> void Microsoft.AspNetCore.Components.CascadingTypeParameterAttribute.Name.get -> string! @@ -48,6 +59,13 @@ Microsoft.AspNetCore.Components.CascadingValue.Name.set -> void Microsoft.AspNetCore.Components.CascadingValue.SetParametersAsync(Microsoft.AspNetCore.Components.ParameterView parameters) -> System.Threading.Tasks.Task! Microsoft.AspNetCore.Components.CascadingValue.Value.get -> TValue? Microsoft.AspNetCore.Components.CascadingValue.Value.set -> void +Microsoft.AspNetCore.Components.CascadingValueSource +Microsoft.AspNetCore.Components.CascadingValueSource.CascadingValueSource(string! name, System.Func! initialValueFactory, bool isFixed) -> void +Microsoft.AspNetCore.Components.CascadingValueSource.CascadingValueSource(string! name, TValue value, bool isFixed) -> void +Microsoft.AspNetCore.Components.CascadingValueSource.CascadingValueSource(System.Func! initialValueFactory, bool isFixed) -> void +Microsoft.AspNetCore.Components.CascadingValueSource.CascadingValueSource(TValue value, bool isFixed) -> void +Microsoft.AspNetCore.Components.CascadingValueSource.NotifyChangedAsync() -> System.Threading.Tasks.Task! +Microsoft.AspNetCore.Components.CascadingValueSource.NotifyChangedAsync(TValue newValue) -> System.Threading.Tasks.Task! Microsoft.AspNetCore.Components.ChangeEventArgs Microsoft.AspNetCore.Components.ChangeEventArgs.ChangeEventArgs() -> void Microsoft.AspNetCore.Components.ChangeEventArgs.Value.get -> object? @@ -55,6 +73,7 @@ Microsoft.AspNetCore.Components.ChangeEventArgs.Value.set -> void Microsoft.AspNetCore.Components.CompilerServices.RuntimeHelpers Microsoft.AspNetCore.Components.ComponentBase Microsoft.AspNetCore.Components.ComponentBase.ComponentBase() -> void +Microsoft.AspNetCore.Components.ComponentBase.DispatchExceptionAsync(System.Exception! exception) -> System.Threading.Tasks.Task! Microsoft.AspNetCore.Components.ComponentBase.InvokeAsync(System.Action! workItem) -> System.Threading.Tasks.Task! Microsoft.AspNetCore.Components.ComponentBase.InvokeAsync(System.Func! workItem) -> System.Threading.Tasks.Task! Microsoft.AspNetCore.Components.ComponentBase.StateHasChanged() -> void @@ -136,6 +155,7 @@ Microsoft.AspNetCore.Components.IComponent.Attach(Microsoft.AspNetCore.Component Microsoft.AspNetCore.Components.IComponent.SetParametersAsync(Microsoft.AspNetCore.Components.ParameterView parameters) -> System.Threading.Tasks.Task! Microsoft.AspNetCore.Components.IComponentActivator Microsoft.AspNetCore.Components.IComponentActivator.CreateInstance(System.Type! componentType) -> Microsoft.AspNetCore.Components.IComponent! +Microsoft.AspNetCore.Components.IComponentRenderMode Microsoft.AspNetCore.Components.IHandleAfterRender Microsoft.AspNetCore.Components.IHandleAfterRender.OnAfterRenderAsync() -> System.Threading.Tasks.Task! Microsoft.AspNetCore.Components.IHandleEvent @@ -147,9 +167,12 @@ Microsoft.AspNetCore.Components.Infrastructure.ComponentStatePersistenceManager. Microsoft.AspNetCore.Components.Infrastructure.ComponentStatePersistenceManager.State.get -> Microsoft.AspNetCore.Components.PersistentComponentState! Microsoft.AspNetCore.Components.InjectAttribute Microsoft.AspNetCore.Components.InjectAttribute.InjectAttribute() -> void +Microsoft.AspNetCore.Components.InjectAttribute.Key.get -> object? +Microsoft.AspNetCore.Components.InjectAttribute.Key.init -> void Microsoft.AspNetCore.Components.IPersistentComponentStateStore Microsoft.AspNetCore.Components.IPersistentComponentStateStore.GetPersistedStateAsync() -> System.Threading.Tasks.Task!>! Microsoft.AspNetCore.Components.IPersistentComponentStateStore.PersistStateAsync(System.Collections.Generic.IReadOnlyDictionary! state) -> System.Threading.Tasks.Task! +Microsoft.AspNetCore.Components.IPersistentComponentStateStore.SupportsRenderMode(Microsoft.AspNetCore.Components.IComponentRenderMode! renderMode) -> bool Microsoft.AspNetCore.Components.LayoutAttribute Microsoft.AspNetCore.Components.LayoutAttribute.LayoutAttribute(System.Type! layoutType) -> void Microsoft.AspNetCore.Components.LayoutAttribute.LayoutType.get -> System.Type! @@ -188,7 +211,7 @@ Microsoft.AspNetCore.Components.NavigationManager.NavigationManager() -> void Microsoft.AspNetCore.Components.NavigationManager.NotifyLocationChanged(bool isInterceptedLink) -> void Microsoft.AspNetCore.Components.NavigationManager.NotifyLocationChangingAsync(string! uri, string? state, bool isNavigationIntercepted) -> System.Threading.Tasks.ValueTask Microsoft.AspNetCore.Components.NavigationManager.RegisterLocationChangingHandler(System.Func! locationChangingHandler) -> System.IDisposable! -Microsoft.AspNetCore.Components.NavigationManager.ToAbsoluteUri(string! relativeUri) -> System.Uri! +Microsoft.AspNetCore.Components.NavigationManager.ToAbsoluteUri(string? relativeUri) -> System.Uri! Microsoft.AspNetCore.Components.NavigationManager.ToBaseRelativePath(string! uri) -> string! Microsoft.AspNetCore.Components.NavigationManager.Uri.get -> string! Microsoft.AspNetCore.Components.NavigationManager.Uri.set -> void @@ -227,11 +250,12 @@ Microsoft.AspNetCore.Components.ParameterView.GetValueOrDefault(string! Microsoft.AspNetCore.Components.ParameterView.GetValueOrDefault(string! parameterName, TValue defaultValue) -> TValue Microsoft.AspNetCore.Components.ParameterView.ParameterView() -> void Microsoft.AspNetCore.Components.ParameterView.SetParameterProperties(object! target) -> void -Microsoft.AspNetCore.Components.ParameterView.ToDictionary() -> System.Collections.Generic.IReadOnlyDictionary! +Microsoft.AspNetCore.Components.ParameterView.ToDictionary() -> System.Collections.Generic.IReadOnlyDictionary! Microsoft.AspNetCore.Components.ParameterView.TryGetValue(string! parameterName, out TValue result) -> bool Microsoft.AspNetCore.Components.PersistentComponentState Microsoft.AspNetCore.Components.PersistentComponentState.PersistAsJson(string! key, TValue instance) -> void Microsoft.AspNetCore.Components.PersistentComponentState.RegisterOnPersisting(System.Func! callback) -> Microsoft.AspNetCore.Components.PersistingComponentStateSubscription +Microsoft.AspNetCore.Components.PersistentComponentState.RegisterOnPersisting(System.Func! callback, Microsoft.AspNetCore.Components.IComponentRenderMode? renderMode) -> Microsoft.AspNetCore.Components.PersistingComponentStateSubscription Microsoft.AspNetCore.Components.PersistentComponentState.TryTakeFromJson(string! key, out TValue? instance) -> bool Microsoft.AspNetCore.Components.PersistingComponentStateSubscription Microsoft.AspNetCore.Components.PersistingComponentStateSubscription.Dispose() -> void @@ -240,10 +264,17 @@ Microsoft.AspNetCore.Components.RenderFragment Microsoft.AspNetCore.Components.RenderFragment Microsoft.AspNetCore.Components.RenderHandle Microsoft.AspNetCore.Components.RenderHandle.Dispatcher.get -> Microsoft.AspNetCore.Components.Dispatcher! +Microsoft.AspNetCore.Components.RenderHandle.DispatchExceptionAsync(System.Exception! exception) -> System.Threading.Tasks.Task! Microsoft.AspNetCore.Components.RenderHandle.IsInitialized.get -> bool Microsoft.AspNetCore.Components.RenderHandle.IsRenderingOnMetadataUpdate.get -> bool Microsoft.AspNetCore.Components.RenderHandle.Render(Microsoft.AspNetCore.Components.RenderFragment! renderFragment) -> void Microsoft.AspNetCore.Components.RenderHandle.RenderHandle() -> void +Microsoft.AspNetCore.Components.Rendering.ComponentState +Microsoft.AspNetCore.Components.Rendering.ComponentState.Component.get -> Microsoft.AspNetCore.Components.IComponent! +Microsoft.AspNetCore.Components.Rendering.ComponentState.ComponentId.get -> int +Microsoft.AspNetCore.Components.Rendering.ComponentState.ComponentState(Microsoft.AspNetCore.Components.RenderTree.Renderer! renderer, int componentId, Microsoft.AspNetCore.Components.IComponent! component, Microsoft.AspNetCore.Components.Rendering.ComponentState? parentComponentState) -> void +Microsoft.AspNetCore.Components.Rendering.ComponentState.LogicalParentComponentState.get -> Microsoft.AspNetCore.Components.Rendering.ComponentState? +Microsoft.AspNetCore.Components.Rendering.ComponentState.ParentComponentState.get -> Microsoft.AspNetCore.Components.Rendering.ComponentState? Microsoft.AspNetCore.Components.Rendering.RenderTreeBuilder Microsoft.AspNetCore.Components.Rendering.RenderTreeBuilder.AddAttribute(int sequence, Microsoft.AspNetCore.Components.RenderTree.RenderTreeFrame frame) -> void Microsoft.AspNetCore.Components.Rendering.RenderTreeBuilder.AddAttribute(int sequence, string! name) -> void @@ -253,7 +284,9 @@ Microsoft.AspNetCore.Components.Rendering.RenderTreeBuilder.AddAttribute(int seq Microsoft.AspNetCore.Components.Rendering.RenderTreeBuilder.AddAttribute(int sequence, string! name, string? value) -> void Microsoft.AspNetCore.Components.Rendering.RenderTreeBuilder.AddAttribute(int sequence, string! name, System.MulticastDelegate? value) -> void Microsoft.AspNetCore.Components.Rendering.RenderTreeBuilder.AddAttribute(int sequence, string! name, Microsoft.AspNetCore.Components.EventCallback value) -> void +Microsoft.AspNetCore.Components.Rendering.RenderTreeBuilder.AddComponentParameter(int sequence, string! name, object? value) -> void Microsoft.AspNetCore.Components.Rendering.RenderTreeBuilder.AddComponentReferenceCapture(int sequence, System.Action! componentReferenceCaptureAction) -> void +Microsoft.AspNetCore.Components.Rendering.RenderTreeBuilder.AddComponentRenderMode(Microsoft.AspNetCore.Components.IComponentRenderMode? renderMode) -> void Microsoft.AspNetCore.Components.Rendering.RenderTreeBuilder.AddContent(int sequence, Microsoft.AspNetCore.Components.MarkupString markupContent) -> void Microsoft.AspNetCore.Components.Rendering.RenderTreeBuilder.AddContent(int sequence, Microsoft.AspNetCore.Components.MarkupString? markupContent) -> void Microsoft.AspNetCore.Components.Rendering.RenderTreeBuilder.AddContent(int sequence, Microsoft.AspNetCore.Components.RenderFragment? fragment) -> void @@ -263,6 +296,7 @@ Microsoft.AspNetCore.Components.Rendering.RenderTreeBuilder.AddContent(i Microsoft.AspNetCore.Components.Rendering.RenderTreeBuilder.AddElementReferenceCapture(int sequence, System.Action! elementReferenceCaptureAction) -> void Microsoft.AspNetCore.Components.Rendering.RenderTreeBuilder.AddMarkupContent(int sequence, string? markupContent) -> void Microsoft.AspNetCore.Components.Rendering.RenderTreeBuilder.AddMultipleAttributes(int sequence, System.Collections.Generic.IEnumerable>? attributes) -> void +Microsoft.AspNetCore.Components.Rendering.RenderTreeBuilder.AddNamedEvent(string! eventType, string! assignedName) -> void Microsoft.AspNetCore.Components.Rendering.RenderTreeBuilder.Clear() -> void Microsoft.AspNetCore.Components.Rendering.RenderTreeBuilder.CloseComponent() -> void Microsoft.AspNetCore.Components.Rendering.RenderTreeBuilder.CloseElement() -> void @@ -276,6 +310,8 @@ Microsoft.AspNetCore.Components.Rendering.RenderTreeBuilder.OpenRegion(int seque Microsoft.AspNetCore.Components.Rendering.RenderTreeBuilder.RenderTreeBuilder() -> void Microsoft.AspNetCore.Components.Rendering.RenderTreeBuilder.SetKey(object? value) -> void Microsoft.AspNetCore.Components.Rendering.RenderTreeBuilder.SetUpdatesAttributeName(string! updatesAttributeName) -> void +Microsoft.AspNetCore.Components.RenderModeAttribute +Microsoft.AspNetCore.Components.RenderModeAttribute.RenderModeAttribute() -> void Microsoft.AspNetCore.Components.RenderTree.ArrayBuilderSegment Microsoft.AspNetCore.Components.RenderTree.ArrayBuilderSegment.Array.get -> T[]! Microsoft.AspNetCore.Components.RenderTree.ArrayBuilderSegment.ArrayBuilderSegment() -> void @@ -286,15 +322,29 @@ Microsoft.AspNetCore.Components.RenderTree.ArrayRange Microsoft.AspNetCore.Components.RenderTree.ArrayRange.ArrayRange() -> void Microsoft.AspNetCore.Components.RenderTree.ArrayRange.ArrayRange(T[]! array, int count) -> void Microsoft.AspNetCore.Components.RenderTree.ArrayRange.Clone() -> Microsoft.AspNetCore.Components.RenderTree.ArrayRange +Microsoft.AspNetCore.Components.RenderTree.ComponentFrameFlags +Microsoft.AspNetCore.Components.RenderTree.ComponentFrameFlags.HasCallerSpecifiedRenderMode = 1 -> Microsoft.AspNetCore.Components.RenderTree.ComponentFrameFlags Microsoft.AspNetCore.Components.RenderTree.EventFieldInfo Microsoft.AspNetCore.Components.RenderTree.EventFieldInfo.ComponentId.get -> int Microsoft.AspNetCore.Components.RenderTree.EventFieldInfo.ComponentId.set -> void Microsoft.AspNetCore.Components.RenderTree.EventFieldInfo.EventFieldInfo() -> void Microsoft.AspNetCore.Components.RenderTree.EventFieldInfo.FieldValue.get -> object! Microsoft.AspNetCore.Components.RenderTree.EventFieldInfo.FieldValue.set -> void +Microsoft.AspNetCore.Components.RenderTree.NamedEventChange +Microsoft.AspNetCore.Components.RenderTree.NamedEventChange.AssignedName.get -> string! +Microsoft.AspNetCore.Components.RenderTree.NamedEventChange.ChangeType.get -> Microsoft.AspNetCore.Components.RenderTree.NamedEventChangeType +Microsoft.AspNetCore.Components.RenderTree.NamedEventChange.ComponentId.get -> int +Microsoft.AspNetCore.Components.RenderTree.NamedEventChange.EventType.get -> string! +Microsoft.AspNetCore.Components.RenderTree.NamedEventChange.FrameIndex.get -> int +Microsoft.AspNetCore.Components.RenderTree.NamedEventChange.NamedEventChange() -> void +Microsoft.AspNetCore.Components.RenderTree.NamedEventChange.NamedEventChange(Microsoft.AspNetCore.Components.RenderTree.NamedEventChangeType changeType, int componentId, int frameIndex, string! eventType, string! assignedName) -> void +Microsoft.AspNetCore.Components.RenderTree.NamedEventChangeType +Microsoft.AspNetCore.Components.RenderTree.NamedEventChangeType.Added = 0 -> Microsoft.AspNetCore.Components.RenderTree.NamedEventChangeType +Microsoft.AspNetCore.Components.RenderTree.NamedEventChangeType.Removed = 1 -> Microsoft.AspNetCore.Components.RenderTree.NamedEventChangeType Microsoft.AspNetCore.Components.RenderTree.RenderBatch Microsoft.AspNetCore.Components.RenderTree.RenderBatch.DisposedComponentIDs.get -> Microsoft.AspNetCore.Components.RenderTree.ArrayRange Microsoft.AspNetCore.Components.RenderTree.RenderBatch.DisposedEventHandlerIDs.get -> Microsoft.AspNetCore.Components.RenderTree.ArrayRange +Microsoft.AspNetCore.Components.RenderTree.RenderBatch.NamedEventChanges.get -> Microsoft.AspNetCore.Components.RenderTree.ArrayRange? Microsoft.AspNetCore.Components.RenderTree.RenderBatch.ReferenceFrames.get -> Microsoft.AspNetCore.Components.RenderTree.ArrayRange Microsoft.AspNetCore.Components.RenderTree.RenderBatch.RenderBatch() -> void Microsoft.AspNetCore.Components.RenderTree.RenderBatch.UpdatedComponents.get -> Microsoft.AspNetCore.Components.RenderTree.ArrayRange @@ -304,6 +354,8 @@ Microsoft.AspNetCore.Components.RenderTree.Renderer.Dispose() -> void Microsoft.AspNetCore.Components.RenderTree.Renderer.DisposeAsync() -> System.Threading.Tasks.ValueTask Microsoft.AspNetCore.Components.RenderTree.Renderer.ElementReferenceContext.get -> Microsoft.AspNetCore.Components.ElementReferenceContext? Microsoft.AspNetCore.Components.RenderTree.Renderer.ElementReferenceContext.set -> void +Microsoft.AspNetCore.Components.RenderTree.Renderer.GetComponentState(int componentId) -> Microsoft.AspNetCore.Components.Rendering.ComponentState! +Microsoft.AspNetCore.Components.RenderTree.Renderer.GetComponentState(Microsoft.AspNetCore.Components.IComponent! component) -> Microsoft.AspNetCore.Components.Rendering.ComponentState! Microsoft.AspNetCore.Components.RenderTree.Renderer.GetCurrentRenderTreeFrames(int componentId) -> Microsoft.AspNetCore.Components.RenderTree.ArrayRange Microsoft.AspNetCore.Components.RenderTree.Renderer.GetEventArgsType(ulong eventHandlerId) -> System.Type! Microsoft.AspNetCore.Components.RenderTree.Renderer.InstantiateComponent(System.Type! componentType) -> Microsoft.AspNetCore.Components.IComponent! @@ -330,6 +382,7 @@ Microsoft.AspNetCore.Components.RenderTree.RenderTreeEditType.UpdateMarkup = 8 - Microsoft.AspNetCore.Components.RenderTree.RenderTreeEditType.UpdateText = 5 -> Microsoft.AspNetCore.Components.RenderTree.RenderTreeEditType Microsoft.AspNetCore.Components.RenderTree.RenderTreeFrame Microsoft.AspNetCore.Components.RenderTree.RenderTreeFrame.AttributeEventHandlerId.get -> ulong +Microsoft.AspNetCore.Components.RenderTree.RenderTreeFrame.ComponentFrameFlags.get -> Microsoft.AspNetCore.Components.RenderTree.ComponentFrameFlags Microsoft.AspNetCore.Components.RenderTree.RenderTreeFrame.ComponentId.get -> int Microsoft.AspNetCore.Components.RenderTree.RenderTreeFrame.ComponentReferenceCaptureParentFrameIndex.get -> int Microsoft.AspNetCore.Components.RenderTree.RenderTreeFrame.ComponentSubtreeLength.get -> int @@ -342,9 +395,11 @@ Microsoft.AspNetCore.Components.RenderTree.RenderTreeFrameType Microsoft.AspNetCore.Components.RenderTree.RenderTreeFrameType.Attribute = 3 -> Microsoft.AspNetCore.Components.RenderTree.RenderTreeFrameType Microsoft.AspNetCore.Components.RenderTree.RenderTreeFrameType.Component = 4 -> Microsoft.AspNetCore.Components.RenderTree.RenderTreeFrameType Microsoft.AspNetCore.Components.RenderTree.RenderTreeFrameType.ComponentReferenceCapture = 7 -> Microsoft.AspNetCore.Components.RenderTree.RenderTreeFrameType +Microsoft.AspNetCore.Components.RenderTree.RenderTreeFrameType.ComponentRenderMode = 9 -> Microsoft.AspNetCore.Components.RenderTree.RenderTreeFrameType Microsoft.AspNetCore.Components.RenderTree.RenderTreeFrameType.Element = 1 -> Microsoft.AspNetCore.Components.RenderTree.RenderTreeFrameType Microsoft.AspNetCore.Components.RenderTree.RenderTreeFrameType.ElementReferenceCapture = 6 -> Microsoft.AspNetCore.Components.RenderTree.RenderTreeFrameType Microsoft.AspNetCore.Components.RenderTree.RenderTreeFrameType.Markup = 8 -> Microsoft.AspNetCore.Components.RenderTree.RenderTreeFrameType +Microsoft.AspNetCore.Components.RenderTree.RenderTreeFrameType.NamedEvent = 10 -> Microsoft.AspNetCore.Components.RenderTree.RenderTreeFrameType Microsoft.AspNetCore.Components.RenderTree.RenderTreeFrameType.None = 0 -> Microsoft.AspNetCore.Components.RenderTree.RenderTreeFrameType Microsoft.AspNetCore.Components.RenderTree.RenderTreeFrameType.Region = 5 -> Microsoft.AspNetCore.Components.RenderTree.RenderTreeFrameType Microsoft.AspNetCore.Components.RenderTree.RenderTreeFrameType.Text = 2 -> Microsoft.AspNetCore.Components.RenderTree.RenderTreeFrameType @@ -353,8 +408,10 @@ Microsoft.AspNetCore.Components.RouteAttribute.RouteAttribute(string! template) Microsoft.AspNetCore.Components.RouteAttribute.Template.get -> string! Microsoft.AspNetCore.Components.RouteData Microsoft.AspNetCore.Components.RouteData.PageType.get -> System.Type! -Microsoft.AspNetCore.Components.RouteData.RouteData(System.Type! pageType, System.Collections.Generic.IReadOnlyDictionary! routeValues) -> void -Microsoft.AspNetCore.Components.RouteData.RouteValues.get -> System.Collections.Generic.IReadOnlyDictionary! +Microsoft.AspNetCore.Components.RouteData.RouteData(System.Type! pageType, System.Collections.Generic.IReadOnlyDictionary! routeValues) -> void +Microsoft.AspNetCore.Components.RouteData.RouteValues.get -> System.Collections.Generic.IReadOnlyDictionary! +Microsoft.AspNetCore.Components.RouteData.Template.get -> string? +Microsoft.AspNetCore.Components.RouteData.Template.set -> void Microsoft.AspNetCore.Components.RouteView Microsoft.AspNetCore.Components.RouteView.Attach(Microsoft.AspNetCore.Components.RenderHandle renderHandle) -> void Microsoft.AspNetCore.Components.RouteView.DefaultLayout.get -> System.Type! @@ -367,6 +424,10 @@ Microsoft.AspNetCore.Components.Routing.IHostEnvironmentNavigationManager Microsoft.AspNetCore.Components.Routing.IHostEnvironmentNavigationManager.Initialize(string! baseUri, string! uri) -> void Microsoft.AspNetCore.Components.Routing.INavigationInterception Microsoft.AspNetCore.Components.Routing.INavigationInterception.EnableNavigationInterceptionAsync() -> System.Threading.Tasks.Task! +Microsoft.AspNetCore.Components.Routing.IRoutingStateProvider +Microsoft.AspNetCore.Components.Routing.IRoutingStateProvider.RouteData.get -> Microsoft.AspNetCore.Components.RouteData? +Microsoft.AspNetCore.Components.Routing.IScrollToLocationHash +Microsoft.AspNetCore.Components.Routing.IScrollToLocationHash.RefreshScrollPositionForHash(string! locationAbsolute) -> System.Threading.Tasks.Task! Microsoft.AspNetCore.Components.Routing.LocationChangedEventArgs Microsoft.AspNetCore.Components.Routing.LocationChangedEventArgs.HistoryEntryState.get -> string? Microsoft.AspNetCore.Components.Routing.LocationChangedEventArgs.IsNavigationIntercepted.get -> bool @@ -405,10 +466,35 @@ Microsoft.AspNetCore.Components.Routing.Router.PreferExactMatches.get -> bool Microsoft.AspNetCore.Components.Routing.Router.PreferExactMatches.set -> void Microsoft.AspNetCore.Components.Routing.Router.Router() -> void Microsoft.AspNetCore.Components.Routing.Router.SetParametersAsync(Microsoft.AspNetCore.Components.ParameterView parameters) -> System.Threading.Tasks.Task! +Microsoft.AspNetCore.Components.Sections.SectionContent +Microsoft.AspNetCore.Components.Sections.SectionContent.ChildContent.get -> Microsoft.AspNetCore.Components.RenderFragment? +Microsoft.AspNetCore.Components.Sections.SectionContent.ChildContent.set -> void +Microsoft.AspNetCore.Components.Sections.SectionContent.Dispose() -> void +Microsoft.AspNetCore.Components.Sections.SectionContent.SectionContent() -> void +Microsoft.AspNetCore.Components.Sections.SectionContent.SectionId.get -> object? +Microsoft.AspNetCore.Components.Sections.SectionContent.SectionId.set -> void +Microsoft.AspNetCore.Components.Sections.SectionContent.SectionName.get -> string? +Microsoft.AspNetCore.Components.Sections.SectionContent.SectionName.set -> void +Microsoft.AspNetCore.Components.Sections.SectionOutlet +Microsoft.AspNetCore.Components.Sections.SectionOutlet.Dispose() -> void +Microsoft.AspNetCore.Components.Sections.SectionOutlet.SectionId.get -> object? +Microsoft.AspNetCore.Components.Sections.SectionOutlet.SectionId.set -> void +Microsoft.AspNetCore.Components.Sections.SectionOutlet.SectionName.get -> string? +Microsoft.AspNetCore.Components.Sections.SectionOutlet.SectionName.set -> void +Microsoft.AspNetCore.Components.Sections.SectionOutlet.SectionOutlet() -> void +Microsoft.AspNetCore.Components.StreamRenderingAttribute +Microsoft.AspNetCore.Components.StreamRenderingAttribute.Enabled.get -> bool +Microsoft.AspNetCore.Components.StreamRenderingAttribute.StreamRenderingAttribute(bool enabled = true) -> void Microsoft.AspNetCore.Components.SupplyParameterFromQueryAttribute Microsoft.AspNetCore.Components.SupplyParameterFromQueryAttribute.Name.get -> string? Microsoft.AspNetCore.Components.SupplyParameterFromQueryAttribute.Name.set -> void Microsoft.AspNetCore.Components.SupplyParameterFromQueryAttribute.SupplyParameterFromQueryAttribute() -> void +Microsoft.AspNetCore.Components.SupplyParameterFromQueryProviderServiceCollectionExtensions +Microsoft.Extensions.DependencyInjection.CascadingValueServiceCollectionExtensions +override Microsoft.AspNetCore.Components.EventCallback.Equals(object? obj) -> bool +override Microsoft.AspNetCore.Components.EventCallback.GetHashCode() -> int +override Microsoft.AspNetCore.Components.EventCallback.Equals(object? obj) -> bool +override Microsoft.AspNetCore.Components.EventCallback.GetHashCode() -> int override Microsoft.AspNetCore.Components.LayoutComponentBase.SetParametersAsync(Microsoft.AspNetCore.Components.ParameterView parameters) -> System.Threading.Tasks.Task! override Microsoft.AspNetCore.Components.MarkupString.ToString() -> string! readonly Microsoft.AspNetCore.Components.RenderTree.ArrayRange.Array -> T[]! @@ -588,6 +674,13 @@ static Microsoft.AspNetCore.Components.NavigationManagerExtensions.GetUriWithQue static Microsoft.AspNetCore.Components.NavigationManagerExtensions.GetUriWithQueryParameters(this Microsoft.AspNetCore.Components.NavigationManager! navigationManager, System.Collections.Generic.IReadOnlyDictionary! parameters) -> string! static Microsoft.AspNetCore.Components.ParameterView.Empty.get -> Microsoft.AspNetCore.Components.ParameterView static Microsoft.AspNetCore.Components.ParameterView.FromDictionary(System.Collections.Generic.IDictionary! parameters) -> Microsoft.AspNetCore.Components.ParameterView +static Microsoft.AspNetCore.Components.SupplyParameterFromQueryProviderServiceCollectionExtensions.AddSupplyValueFromQueryProvider(this Microsoft.Extensions.DependencyInjection.IServiceCollection! services) -> Microsoft.Extensions.DependencyInjection.IServiceCollection! +static Microsoft.Extensions.DependencyInjection.CascadingValueServiceCollectionExtensions.AddCascadingValue(this Microsoft.Extensions.DependencyInjection.IServiceCollection! serviceCollection, string! name, System.Func! initialValueFactory) -> Microsoft.Extensions.DependencyInjection.IServiceCollection! +static Microsoft.Extensions.DependencyInjection.CascadingValueServiceCollectionExtensions.AddCascadingValue(this Microsoft.Extensions.DependencyInjection.IServiceCollection! serviceCollection, System.Func!>! sourceFactory) -> Microsoft.Extensions.DependencyInjection.IServiceCollection! +static Microsoft.Extensions.DependencyInjection.CascadingValueServiceCollectionExtensions.AddCascadingValue(this Microsoft.Extensions.DependencyInjection.IServiceCollection! serviceCollection, System.Func! initialValueFactory) -> Microsoft.Extensions.DependencyInjection.IServiceCollection! +static Microsoft.Extensions.DependencyInjection.CascadingValueServiceCollectionExtensions.TryAddCascadingValue(this Microsoft.Extensions.DependencyInjection.IServiceCollection! serviceCollection, string! name, System.Func! valueFactory) -> void +static Microsoft.Extensions.DependencyInjection.CascadingValueServiceCollectionExtensions.TryAddCascadingValue(this Microsoft.Extensions.DependencyInjection.IServiceCollection! serviceCollection, System.Func!>! sourceFactory) -> void +static Microsoft.Extensions.DependencyInjection.CascadingValueServiceCollectionExtensions.TryAddCascadingValue(this Microsoft.Extensions.DependencyInjection.IServiceCollection! serviceCollection, System.Func! valueFactory) -> void static readonly Microsoft.AspNetCore.Components.EventCallback.Empty -> Microsoft.AspNetCore.Components.EventCallback static readonly Microsoft.AspNetCore.Components.EventCallback.Factory -> Microsoft.AspNetCore.Components.EventCallbackFactory! static readonly Microsoft.AspNetCore.Components.EventCallback.Empty -> Microsoft.AspNetCore.Components.EventCallback @@ -605,9 +698,16 @@ virtual Microsoft.AspNetCore.Components.NavigationManager.EnsureInitialized() -> virtual Microsoft.AspNetCore.Components.NavigationManager.HandleLocationChangingHandlerException(System.Exception! ex, Microsoft.AspNetCore.Components.Routing.LocationChangingContext! context) -> void virtual Microsoft.AspNetCore.Components.NavigationManager.NavigateToCore(string! uri, bool forceLoad) -> void virtual Microsoft.AspNetCore.Components.NavigationManager.NavigateToCore(string! uri, Microsoft.AspNetCore.Components.NavigationOptions options) -> void +virtual Microsoft.AspNetCore.Components.NavigationManager.Refresh(bool forceReload = false) -> void virtual Microsoft.AspNetCore.Components.NavigationManager.SetNavigationLockState(bool value) -> void virtual Microsoft.AspNetCore.Components.OwningComponentBase.Dispose(bool disposing) -> void +virtual Microsoft.AspNetCore.Components.Rendering.ComponentState.DisposeAsync() -> System.Threading.Tasks.ValueTask +virtual Microsoft.AspNetCore.Components.RenderTree.Renderer.AddPendingTask(Microsoft.AspNetCore.Components.Rendering.ComponentState? componentState, System.Threading.Tasks.Task! task) -> void +virtual Microsoft.AspNetCore.Components.RenderTree.Renderer.CreateComponentState(int componentId, Microsoft.AspNetCore.Components.IComponent! component, Microsoft.AspNetCore.Components.Rendering.ComponentState? parentComponentState) -> Microsoft.AspNetCore.Components.Rendering.ComponentState! virtual Microsoft.AspNetCore.Components.RenderTree.Renderer.DispatchEventAsync(ulong eventHandlerId, Microsoft.AspNetCore.Components.RenderTree.EventFieldInfo? fieldInfo, System.EventArgs! eventArgs) -> System.Threading.Tasks.Task! +virtual Microsoft.AspNetCore.Components.RenderTree.Renderer.DispatchEventAsync(ulong eventHandlerId, Microsoft.AspNetCore.Components.RenderTree.EventFieldInfo? fieldInfo, System.EventArgs! eventArgs, bool waitForQuiescence) -> System.Threading.Tasks.Task! virtual Microsoft.AspNetCore.Components.RenderTree.Renderer.Dispose(bool disposing) -> void +virtual Microsoft.AspNetCore.Components.RenderTree.Renderer.GetComponentRenderMode(Microsoft.AspNetCore.Components.IComponent! component) -> Microsoft.AspNetCore.Components.IComponentRenderMode? virtual Microsoft.AspNetCore.Components.RenderTree.Renderer.ProcessPendingRender() -> void +virtual Microsoft.AspNetCore.Components.RenderTree.Renderer.ResolveComponentForRenderMode(System.Type! componentType, int? parentComponentId, Microsoft.AspNetCore.Components.IComponentActivator! componentActivator, Microsoft.AspNetCore.Components.IComponentRenderMode! renderMode) -> Microsoft.AspNetCore.Components.IComponent! virtual Microsoft.AspNetCore.Components.RouteView.Render(Microsoft.AspNetCore.Components.Rendering.RenderTreeBuilder! builder) -> void diff --git a/src/Components/Components/src/PublicAPI.Unshipped.txt b/src/Components/Components/src/PublicAPI.Unshipped.txt index 15904c95822f..7dc5c58110bf 100644 --- a/src/Components/Components/src/PublicAPI.Unshipped.txt +++ b/src/Components/Components/src/PublicAPI.Unshipped.txt @@ -1,109 +1 @@ #nullable enable -abstract Microsoft.AspNetCore.Components.RenderModeAttribute.Mode.get -> Microsoft.AspNetCore.Components.IComponentRenderMode! -Microsoft.AspNetCore.Components.CascadingParameterAttributeBase -Microsoft.AspNetCore.Components.CascadingParameterAttributeBase.CascadingParameterAttributeBase() -> void -Microsoft.AspNetCore.Components.CascadingParameterInfo -Microsoft.AspNetCore.Components.CascadingParameterInfo.Attribute.get -> Microsoft.AspNetCore.Components.CascadingParameterAttributeBase! -Microsoft.AspNetCore.Components.CascadingParameterInfo.CascadingParameterInfo() -> void -Microsoft.AspNetCore.Components.CascadingParameterInfo.PropertyName.get -> string! -Microsoft.AspNetCore.Components.CascadingParameterInfo.PropertyType.get -> System.Type! -Microsoft.AspNetCore.Components.CascadingValueSource -Microsoft.AspNetCore.Components.CascadingValueSource.CascadingValueSource(string! name, System.Func! initialValueFactory, bool isFixed) -> void -Microsoft.AspNetCore.Components.CascadingValueSource.CascadingValueSource(string! name, TValue value, bool isFixed) -> void -Microsoft.AspNetCore.Components.CascadingValueSource.CascadingValueSource(System.Func! initialValueFactory, bool isFixed) -> void -Microsoft.AspNetCore.Components.CascadingValueSource.CascadingValueSource(TValue value, bool isFixed) -> void -Microsoft.AspNetCore.Components.CascadingValueSource.NotifyChangedAsync() -> System.Threading.Tasks.Task! -Microsoft.AspNetCore.Components.CascadingValueSource.NotifyChangedAsync(TValue newValue) -> System.Threading.Tasks.Task! -Microsoft.AspNetCore.Components.ComponentBase.DispatchExceptionAsync(System.Exception! exception) -> System.Threading.Tasks.Task! -Microsoft.AspNetCore.Components.IComponentRenderMode -Microsoft.AspNetCore.Components.InjectAttribute.Key.get -> object? -Microsoft.AspNetCore.Components.InjectAttribute.Key.init -> void -Microsoft.AspNetCore.Components.IPersistentComponentStateStore.SupportsRenderMode(Microsoft.AspNetCore.Components.IComponentRenderMode! renderMode) -> bool -Microsoft.AspNetCore.Components.ParameterView.ToDictionary() -> System.Collections.Generic.IReadOnlyDictionary! -*REMOVED*Microsoft.AspNetCore.Components.ParameterView.ToDictionary() -> System.Collections.Generic.IReadOnlyDictionary! -Microsoft.AspNetCore.Components.PersistentComponentState.RegisterOnPersisting(System.Func! callback, Microsoft.AspNetCore.Components.IComponentRenderMode? renderMode) -> Microsoft.AspNetCore.Components.PersistingComponentStateSubscription -Microsoft.AspNetCore.Components.RenderHandle.DispatchExceptionAsync(System.Exception! exception) -> System.Threading.Tasks.Task! -*REMOVED*Microsoft.AspNetCore.Components.NavigationManager.ToAbsoluteUri(string! relativeUri) -> System.Uri! -Microsoft.AspNetCore.Components.NavigationManager.ToAbsoluteUri(string? relativeUri) -> System.Uri! -Microsoft.AspNetCore.Components.Rendering.ComponentState.LogicalParentComponentState.get -> Microsoft.AspNetCore.Components.Rendering.ComponentState? -*REMOVED*Microsoft.AspNetCore.Components.RouteData.RouteData(System.Type! pageType, System.Collections.Generic.IReadOnlyDictionary! routeValues) -> void -*REMOVED*Microsoft.AspNetCore.Components.RouteData.RouteValues.get -> System.Collections.Generic.IReadOnlyDictionary! -Microsoft.AspNetCore.Components.Rendering.RenderTreeBuilder.AddComponentRenderMode(Microsoft.AspNetCore.Components.IComponentRenderMode? renderMode) -> void -Microsoft.AspNetCore.Components.Rendering.RenderTreeBuilder.AddNamedEvent(string! eventType, string! assignedName) -> void -Microsoft.AspNetCore.Components.RenderTree.ComponentFrameFlags -Microsoft.AspNetCore.Components.RenderTree.ComponentFrameFlags.HasCallerSpecifiedRenderMode = 1 -> Microsoft.AspNetCore.Components.RenderTree.ComponentFrameFlags -Microsoft.AspNetCore.Components.RenderTree.NamedEventChange -Microsoft.AspNetCore.Components.RenderTree.NamedEventChange.AssignedName.get -> string! -Microsoft.AspNetCore.Components.RenderTree.NamedEventChange.ChangeType.get -> Microsoft.AspNetCore.Components.RenderTree.NamedEventChangeType -Microsoft.AspNetCore.Components.RenderTree.NamedEventChange.ComponentId.get -> int -Microsoft.AspNetCore.Components.RenderTree.NamedEventChange.EventType.get -> string! -Microsoft.AspNetCore.Components.RenderTree.NamedEventChange.FrameIndex.get -> int -Microsoft.AspNetCore.Components.RenderTree.NamedEventChange.NamedEventChange() -> void -Microsoft.AspNetCore.Components.RenderTree.NamedEventChange.NamedEventChange(Microsoft.AspNetCore.Components.RenderTree.NamedEventChangeType changeType, int componentId, int frameIndex, string! eventType, string! assignedName) -> void -Microsoft.AspNetCore.Components.RenderTree.NamedEventChangeType -Microsoft.AspNetCore.Components.RenderTree.NamedEventChangeType.Added = 0 -> Microsoft.AspNetCore.Components.RenderTree.NamedEventChangeType -Microsoft.AspNetCore.Components.RenderTree.NamedEventChangeType.Removed = 1 -> Microsoft.AspNetCore.Components.RenderTree.NamedEventChangeType -Microsoft.AspNetCore.Components.RenderTree.RenderBatch.NamedEventChanges.get -> Microsoft.AspNetCore.Components.RenderTree.ArrayRange? -Microsoft.AspNetCore.Components.RenderTree.Renderer.GetComponentState(Microsoft.AspNetCore.Components.IComponent! component) -> Microsoft.AspNetCore.Components.Rendering.ComponentState! -Microsoft.AspNetCore.Components.RenderTree.RenderTreeFrame.ComponentFrameFlags.get -> Microsoft.AspNetCore.Components.RenderTree.ComponentFrameFlags -Microsoft.AspNetCore.Components.RenderTree.RenderTreeFrameType.ComponentRenderMode = 9 -> Microsoft.AspNetCore.Components.RenderTree.RenderTreeFrameType -Microsoft.AspNetCore.Components.RenderTree.RenderTreeFrameType.NamedEvent = 10 -> Microsoft.AspNetCore.Components.RenderTree.RenderTreeFrameType -Microsoft.AspNetCore.Components.RouteData.RouteData(System.Type! pageType, System.Collections.Generic.IReadOnlyDictionary! routeValues) -> void -Microsoft.AspNetCore.Components.RouteData.RouteValues.get -> System.Collections.Generic.IReadOnlyDictionary! -Microsoft.AspNetCore.Components.RouteData.Template.get -> string? -Microsoft.AspNetCore.Components.RouteData.Template.set -> void -Microsoft.AspNetCore.Components.Routing.IRoutingStateProvider -Microsoft.AspNetCore.Components.Routing.IRoutingStateProvider.RouteData.get -> Microsoft.AspNetCore.Components.RouteData? -Microsoft.AspNetCore.Components.RenderModeAttribute -Microsoft.AspNetCore.Components.RenderModeAttribute.RenderModeAttribute() -> void -Microsoft.AspNetCore.Components.Routing.IScrollToLocationHash -Microsoft.AspNetCore.Components.Routing.IScrollToLocationHash.RefreshScrollPositionForHash(string! locationAbsolute) -> System.Threading.Tasks.Task! -Microsoft.AspNetCore.Components.Rendering.ComponentState -Microsoft.AspNetCore.Components.Rendering.ComponentState.Component.get -> Microsoft.AspNetCore.Components.IComponent! -Microsoft.AspNetCore.Components.Rendering.ComponentState.ComponentId.get -> int -Microsoft.AspNetCore.Components.Rendering.ComponentState.ComponentState(Microsoft.AspNetCore.Components.RenderTree.Renderer! renderer, int componentId, Microsoft.AspNetCore.Components.IComponent! component, Microsoft.AspNetCore.Components.Rendering.ComponentState? parentComponentState) -> void -Microsoft.AspNetCore.Components.Rendering.ComponentState.ParentComponentState.get -> Microsoft.AspNetCore.Components.Rendering.ComponentState? -Microsoft.AspNetCore.Components.RenderTree.Renderer.GetComponentState(int componentId) -> Microsoft.AspNetCore.Components.Rendering.ComponentState! -Microsoft.AspNetCore.Components.Sections.SectionContent -Microsoft.AspNetCore.Components.Sections.SectionContent.ChildContent.get -> Microsoft.AspNetCore.Components.RenderFragment? -Microsoft.AspNetCore.Components.Sections.SectionContent.ChildContent.set -> void -Microsoft.AspNetCore.Components.Sections.SectionContent.Dispose() -> void -Microsoft.AspNetCore.Components.Sections.SectionContent.SectionContent() -> void -Microsoft.AspNetCore.Components.Sections.SectionContent.SectionId.get -> object? -Microsoft.AspNetCore.Components.Sections.SectionContent.SectionId.set -> void -Microsoft.AspNetCore.Components.Sections.SectionContent.SectionName.get -> string? -Microsoft.AspNetCore.Components.Sections.SectionContent.SectionName.set -> void -Microsoft.AspNetCore.Components.Sections.SectionOutlet -Microsoft.AspNetCore.Components.Sections.SectionOutlet.Dispose() -> void -Microsoft.AspNetCore.Components.Sections.SectionOutlet.SectionId.get -> object? -Microsoft.AspNetCore.Components.Sections.SectionOutlet.SectionId.set -> void -Microsoft.AspNetCore.Components.Sections.SectionOutlet.SectionName.get -> string? -Microsoft.AspNetCore.Components.Sections.SectionOutlet.SectionName.set -> void -Microsoft.AspNetCore.Components.Sections.SectionOutlet.SectionOutlet() -> void -Microsoft.AspNetCore.Components.Rendering.RenderTreeBuilder.AddComponentParameter(int sequence, string! name, object? value) -> void -Microsoft.AspNetCore.Components.StreamRenderingAttribute -Microsoft.AspNetCore.Components.StreamRenderingAttribute.Enabled.get -> bool -Microsoft.AspNetCore.Components.StreamRenderingAttribute.StreamRenderingAttribute(bool enabled = true) -> void -Microsoft.AspNetCore.Components.SupplyParameterFromQueryProviderServiceCollectionExtensions -Microsoft.Extensions.DependencyInjection.CascadingValueServiceCollectionExtensions -override Microsoft.AspNetCore.Components.EventCallback.GetHashCode() -> int -override Microsoft.AspNetCore.Components.EventCallback.Equals(object? obj) -> bool -override Microsoft.AspNetCore.Components.EventCallback.GetHashCode() -> int -override Microsoft.AspNetCore.Components.EventCallback.Equals(object? obj) -> bool -static Microsoft.AspNetCore.Components.SupplyParameterFromQueryProviderServiceCollectionExtensions.AddSupplyValueFromQueryProvider(this Microsoft.Extensions.DependencyInjection.IServiceCollection! services) -> Microsoft.Extensions.DependencyInjection.IServiceCollection! -static Microsoft.Extensions.DependencyInjection.CascadingValueServiceCollectionExtensions.AddCascadingValue(this Microsoft.Extensions.DependencyInjection.IServiceCollection! serviceCollection, string! name, System.Func! initialValueFactory) -> Microsoft.Extensions.DependencyInjection.IServiceCollection! -static Microsoft.Extensions.DependencyInjection.CascadingValueServiceCollectionExtensions.AddCascadingValue(this Microsoft.Extensions.DependencyInjection.IServiceCollection! serviceCollection, System.Func!>! sourceFactory) -> Microsoft.Extensions.DependencyInjection.IServiceCollection! -static Microsoft.Extensions.DependencyInjection.CascadingValueServiceCollectionExtensions.AddCascadingValue(this Microsoft.Extensions.DependencyInjection.IServiceCollection! serviceCollection, System.Func! initialValueFactory) -> Microsoft.Extensions.DependencyInjection.IServiceCollection! -static Microsoft.Extensions.DependencyInjection.CascadingValueServiceCollectionExtensions.TryAddCascadingValue(this Microsoft.Extensions.DependencyInjection.IServiceCollection! serviceCollection, string! name, System.Func! valueFactory) -> void -static Microsoft.Extensions.DependencyInjection.CascadingValueServiceCollectionExtensions.TryAddCascadingValue(this Microsoft.Extensions.DependencyInjection.IServiceCollection! serviceCollection, System.Func!>! sourceFactory) -> void -static Microsoft.Extensions.DependencyInjection.CascadingValueServiceCollectionExtensions.TryAddCascadingValue(this Microsoft.Extensions.DependencyInjection.IServiceCollection! serviceCollection, System.Func! valueFactory) -> void -virtual Microsoft.AspNetCore.Components.NavigationManager.Refresh(bool forceReload = false) -> void -virtual Microsoft.AspNetCore.Components.Rendering.ComponentState.DisposeAsync() -> System.Threading.Tasks.ValueTask -virtual Microsoft.AspNetCore.Components.RenderTree.Renderer.AddPendingTask(Microsoft.AspNetCore.Components.Rendering.ComponentState? componentState, System.Threading.Tasks.Task! task) -> void -virtual Microsoft.AspNetCore.Components.RenderTree.Renderer.CreateComponentState(int componentId, Microsoft.AspNetCore.Components.IComponent! component, Microsoft.AspNetCore.Components.Rendering.ComponentState? parentComponentState) -> Microsoft.AspNetCore.Components.Rendering.ComponentState! -virtual Microsoft.AspNetCore.Components.RenderTree.Renderer.DispatchEventAsync(ulong eventHandlerId, Microsoft.AspNetCore.Components.RenderTree.EventFieldInfo? fieldInfo, System.EventArgs! eventArgs, bool waitForQuiescence) -> System.Threading.Tasks.Task! -virtual Microsoft.AspNetCore.Components.RenderTree.Renderer.GetComponentRenderMode(Microsoft.AspNetCore.Components.IComponent! component) -> Microsoft.AspNetCore.Components.IComponentRenderMode? -virtual Microsoft.AspNetCore.Components.RenderTree.Renderer.ResolveComponentForRenderMode(System.Type! componentType, int? parentComponentId, Microsoft.AspNetCore.Components.IComponentActivator! componentActivator, Microsoft.AspNetCore.Components.IComponentRenderMode! renderMode) -> Microsoft.AspNetCore.Components.IComponent! -~Microsoft.AspNetCore.Components.RenderTree.RenderTreeFrame.ComponentRenderMode.get -> Microsoft.AspNetCore.Components.IComponentRenderMode -~Microsoft.AspNetCore.Components.RenderTree.RenderTreeFrame.NamedEventAssignedName.get -> string -~Microsoft.AspNetCore.Components.RenderTree.RenderTreeFrame.NamedEventType.get -> string diff --git a/src/Components/Endpoints/src/PublicAPI.Shipped.txt b/src/Components/Endpoints/src/PublicAPI.Shipped.txt index ab058de62d44..ffbad3d28b64 100644 --- a/src/Components/Endpoints/src/PublicAPI.Shipped.txt +++ b/src/Components/Endpoints/src/PublicAPI.Shipped.txt @@ -1 +1,65 @@ -#nullable enable +#nullable enable +abstract Microsoft.AspNetCore.Components.Endpoints.Infrastructure.RenderModeEndpointProvider.GetEndpointBuilders(Microsoft.AspNetCore.Components.IComponentRenderMode! renderMode, Microsoft.AspNetCore.Builder.IApplicationBuilder! applicationBuilder) -> System.Collections.Generic.IEnumerable! +abstract Microsoft.AspNetCore.Components.Endpoints.Infrastructure.RenderModeEndpointProvider.Supports(Microsoft.AspNetCore.Components.IComponentRenderMode! renderMode) -> bool +Microsoft.AspNetCore.Builder.RazorComponentsEndpointConventionBuilder +Microsoft.AspNetCore.Builder.RazorComponentsEndpointConventionBuilder.Add(System.Action! convention) -> void +Microsoft.AspNetCore.Builder.RazorComponentsEndpointConventionBuilder.Finally(System.Action! finallyConvention) -> void +Microsoft.AspNetCore.Builder.RazorComponentsEndpointConventionBuilderExtensions +Microsoft.AspNetCore.Builder.RazorComponentsEndpointRouteBuilderExtensions +Microsoft.AspNetCore.Components.Endpoints.ComponentTypeMetadata +Microsoft.AspNetCore.Components.Endpoints.ComponentTypeMetadata.ComponentTypeMetadata(System.Type! componentType) -> void +Microsoft.AspNetCore.Components.Endpoints.ComponentTypeMetadata.Type.get -> System.Type! +Microsoft.AspNetCore.Components.Endpoints.IComponentPrerenderer +Microsoft.AspNetCore.Components.Endpoints.IComponentPrerenderer.Dispatcher.get -> Microsoft.AspNetCore.Components.Dispatcher! +Microsoft.AspNetCore.Components.Endpoints.IComponentPrerenderer.PrerenderComponentAsync(Microsoft.AspNetCore.Http.HttpContext! httpContext, System.Type! componentType, Microsoft.AspNetCore.Components.IComponentRenderMode! renderMode, Microsoft.AspNetCore.Components.ParameterView parameters) -> System.Threading.Tasks.ValueTask +Microsoft.AspNetCore.Components.Endpoints.IComponentPrerenderer.PrerenderPersistedStateAsync(Microsoft.AspNetCore.Http.HttpContext! httpContext, Microsoft.AspNetCore.Components.PersistedStateSerializationMode serializationMode) -> System.Threading.Tasks.ValueTask +Microsoft.AspNetCore.Components.Endpoints.Infrastructure.ComponentEndpointConventionBuilderHelper +Microsoft.AspNetCore.Components.Endpoints.Infrastructure.RenderModeEndpointProvider +Microsoft.AspNetCore.Components.Endpoints.Infrastructure.RenderModeEndpointProvider.RenderModeEndpointProvider() -> void +Microsoft.AspNetCore.Components.Endpoints.IRazorComponentEndpointInvoker +Microsoft.AspNetCore.Components.Endpoints.IRazorComponentEndpointInvoker.Render(Microsoft.AspNetCore.Http.HttpContext! context) -> System.Threading.Tasks.Task! +Microsoft.AspNetCore.Components.Endpoints.RazorComponentsServiceOptions +Microsoft.AspNetCore.Components.Endpoints.RazorComponentsServiceOptions.DetailedErrors.get -> bool +Microsoft.AspNetCore.Components.Endpoints.RazorComponentsServiceOptions.DetailedErrors.set -> void +Microsoft.AspNetCore.Components.Endpoints.RazorComponentsServiceOptions.MaxFormMappingCollectionSize.get -> int +Microsoft.AspNetCore.Components.Endpoints.RazorComponentsServiceOptions.MaxFormMappingCollectionSize.set -> void +Microsoft.AspNetCore.Components.Endpoints.RazorComponentsServiceOptions.MaxFormMappingErrorCount.get -> int +Microsoft.AspNetCore.Components.Endpoints.RazorComponentsServiceOptions.MaxFormMappingErrorCount.set -> void +Microsoft.AspNetCore.Components.Endpoints.RazorComponentsServiceOptions.MaxFormMappingKeySize.get -> int +Microsoft.AspNetCore.Components.Endpoints.RazorComponentsServiceOptions.MaxFormMappingKeySize.set -> void +Microsoft.AspNetCore.Components.Endpoints.RazorComponentsServiceOptions.MaxFormMappingRecursionDepth.get -> int +Microsoft.AspNetCore.Components.Endpoints.RazorComponentsServiceOptions.MaxFormMappingRecursionDepth.set -> void +Microsoft.AspNetCore.Components.Endpoints.RazorComponentsServiceOptions.RazorComponentsServiceOptions() -> void +Microsoft.AspNetCore.Components.Endpoints.RazorComponentsServiceOptions.TemporaryRedirectionUrlValidityDuration.get -> System.TimeSpan +Microsoft.AspNetCore.Components.Endpoints.RazorComponentsServiceOptions.TemporaryRedirectionUrlValidityDuration.set -> void +Microsoft.AspNetCore.Components.Endpoints.RootComponentMetadata +Microsoft.AspNetCore.Components.Endpoints.RootComponentMetadata.RootComponentMetadata(System.Type! rootComponentType) -> void +Microsoft.AspNetCore.Components.Endpoints.RootComponentMetadata.Type.get -> System.Type! +Microsoft.AspNetCore.Components.PersistedStateSerializationMode +Microsoft.AspNetCore.Components.PersistedStateSerializationMode.Infer = 1 -> Microsoft.AspNetCore.Components.PersistedStateSerializationMode +Microsoft.AspNetCore.Components.PersistedStateSerializationMode.Server = 2 -> Microsoft.AspNetCore.Components.PersistedStateSerializationMode +Microsoft.AspNetCore.Components.PersistedStateSerializationMode.WebAssembly = 3 -> Microsoft.AspNetCore.Components.PersistedStateSerializationMode +Microsoft.AspNetCore.Http.HttpResults.RazorComponentResult +Microsoft.AspNetCore.Http.HttpResults.RazorComponentResult.ComponentType.get -> System.Type! +Microsoft.AspNetCore.Http.HttpResults.RazorComponentResult.ContentType.get -> string? +Microsoft.AspNetCore.Http.HttpResults.RazorComponentResult.ContentType.set -> void +Microsoft.AspNetCore.Http.HttpResults.RazorComponentResult.ExecuteAsync(Microsoft.AspNetCore.Http.HttpContext! httpContext) -> System.Threading.Tasks.Task! +Microsoft.AspNetCore.Http.HttpResults.RazorComponentResult.Parameters.get -> System.Collections.Generic.IReadOnlyDictionary! +Microsoft.AspNetCore.Http.HttpResults.RazorComponentResult.PreventStreamingRendering.get -> bool +Microsoft.AspNetCore.Http.HttpResults.RazorComponentResult.PreventStreamingRendering.set -> void +Microsoft.AspNetCore.Http.HttpResults.RazorComponentResult.RazorComponentResult(System.Type! componentType) -> void +Microsoft.AspNetCore.Http.HttpResults.RazorComponentResult.RazorComponentResult(System.Type! componentType, object! parameters) -> void +Microsoft.AspNetCore.Http.HttpResults.RazorComponentResult.RazorComponentResult(System.Type! componentType, System.Collections.Generic.IReadOnlyDictionary! parameters) -> void +Microsoft.AspNetCore.Http.HttpResults.RazorComponentResult.StatusCode.get -> int? +Microsoft.AspNetCore.Http.HttpResults.RazorComponentResult.StatusCode.set -> void +Microsoft.AspNetCore.Http.HttpResults.RazorComponentResult +Microsoft.AspNetCore.Http.HttpResults.RazorComponentResult.RazorComponentResult() -> void +Microsoft.AspNetCore.Http.HttpResults.RazorComponentResult.RazorComponentResult(object! parameters) -> void +Microsoft.AspNetCore.Http.HttpResults.RazorComponentResult.RazorComponentResult(System.Collections.Generic.IReadOnlyDictionary! parameters) -> void +Microsoft.Extensions.DependencyInjection.IRazorComponentsBuilder +Microsoft.Extensions.DependencyInjection.IRazorComponentsBuilder.Services.get -> Microsoft.Extensions.DependencyInjection.IServiceCollection! +Microsoft.Extensions.DependencyInjection.RazorComponentsServiceCollectionExtensions +static Microsoft.AspNetCore.Builder.RazorComponentsEndpointConventionBuilderExtensions.AddAdditionalAssemblies(this Microsoft.AspNetCore.Builder.RazorComponentsEndpointConventionBuilder! builder, params System.Reflection.Assembly![]! assemblies) -> Microsoft.AspNetCore.Builder.RazorComponentsEndpointConventionBuilder! +static Microsoft.AspNetCore.Builder.RazorComponentsEndpointRouteBuilderExtensions.MapRazorComponents(this Microsoft.AspNetCore.Routing.IEndpointRouteBuilder! endpoints) -> Microsoft.AspNetCore.Builder.RazorComponentsEndpointConventionBuilder! +static Microsoft.AspNetCore.Components.Endpoints.Infrastructure.ComponentEndpointConventionBuilderHelper.AddRenderMode(Microsoft.AspNetCore.Builder.RazorComponentsEndpointConventionBuilder! builder, Microsoft.AspNetCore.Components.IComponentRenderMode! renderMode) -> void +static Microsoft.Extensions.DependencyInjection.RazorComponentsServiceCollectionExtensions.AddRazorComponents(this Microsoft.Extensions.DependencyInjection.IServiceCollection! services, System.Action? configure = null) -> Microsoft.Extensions.DependencyInjection.IRazorComponentsBuilder! diff --git a/src/Components/Endpoints/src/PublicAPI.Unshipped.txt b/src/Components/Endpoints/src/PublicAPI.Unshipped.txt index 1e978ea3911a..7dc5c58110bf 100644 --- a/src/Components/Endpoints/src/PublicAPI.Unshipped.txt +++ b/src/Components/Endpoints/src/PublicAPI.Unshipped.txt @@ -1,64 +1 @@ -abstract Microsoft.AspNetCore.Components.Endpoints.Infrastructure.RenderModeEndpointProvider.GetEndpointBuilders(Microsoft.AspNetCore.Components.IComponentRenderMode! renderMode, Microsoft.AspNetCore.Builder.IApplicationBuilder! applicationBuilder) -> System.Collections.Generic.IEnumerable! -abstract Microsoft.AspNetCore.Components.Endpoints.Infrastructure.RenderModeEndpointProvider.Supports(Microsoft.AspNetCore.Components.IComponentRenderMode! renderMode) -> bool -Microsoft.AspNetCore.Builder.RazorComponentsEndpointConventionBuilder -Microsoft.AspNetCore.Builder.RazorComponentsEndpointConventionBuilder.Add(System.Action! convention) -> void -Microsoft.AspNetCore.Builder.RazorComponentsEndpointConventionBuilder.Finally(System.Action! finallyConvention) -> void -Microsoft.AspNetCore.Builder.RazorComponentsEndpointConventionBuilderExtensions -Microsoft.AspNetCore.Builder.RazorComponentsEndpointRouteBuilderExtensions -Microsoft.AspNetCore.Components.Endpoints.ComponentTypeMetadata -Microsoft.AspNetCore.Components.Endpoints.ComponentTypeMetadata.ComponentTypeMetadata(System.Type! componentType) -> void -Microsoft.AspNetCore.Components.Endpoints.ComponentTypeMetadata.Type.get -> System.Type! -Microsoft.AspNetCore.Components.Endpoints.IComponentPrerenderer -Microsoft.AspNetCore.Components.Endpoints.IComponentPrerenderer.Dispatcher.get -> Microsoft.AspNetCore.Components.Dispatcher! -Microsoft.AspNetCore.Components.Endpoints.IComponentPrerenderer.PrerenderComponentAsync(Microsoft.AspNetCore.Http.HttpContext! httpContext, System.Type! componentType, Microsoft.AspNetCore.Components.IComponentRenderMode! renderMode, Microsoft.AspNetCore.Components.ParameterView parameters) -> System.Threading.Tasks.ValueTask -Microsoft.AspNetCore.Components.Endpoints.IComponentPrerenderer.PrerenderPersistedStateAsync(Microsoft.AspNetCore.Http.HttpContext! httpContext, Microsoft.AspNetCore.Components.PersistedStateSerializationMode serializationMode) -> System.Threading.Tasks.ValueTask -Microsoft.AspNetCore.Components.Endpoints.Infrastructure.ComponentEndpointConventionBuilderHelper -Microsoft.AspNetCore.Components.Endpoints.Infrastructure.RenderModeEndpointProvider -Microsoft.AspNetCore.Components.Endpoints.Infrastructure.RenderModeEndpointProvider.RenderModeEndpointProvider() -> void -Microsoft.AspNetCore.Components.Endpoints.IRazorComponentEndpointInvoker -Microsoft.AspNetCore.Components.Endpoints.IRazorComponentEndpointInvoker.Render(Microsoft.AspNetCore.Http.HttpContext! context) -> System.Threading.Tasks.Task! -Microsoft.AspNetCore.Components.Endpoints.RazorComponentsServiceOptions -Microsoft.AspNetCore.Components.Endpoints.RazorComponentsServiceOptions.DetailedErrors.get -> bool -Microsoft.AspNetCore.Components.Endpoints.RazorComponentsServiceOptions.DetailedErrors.set -> void -Microsoft.AspNetCore.Components.Endpoints.RazorComponentsServiceOptions.MaxFormMappingCollectionSize.get -> int -Microsoft.AspNetCore.Components.Endpoints.RazorComponentsServiceOptions.MaxFormMappingCollectionSize.set -> void -Microsoft.AspNetCore.Components.Endpoints.RazorComponentsServiceOptions.MaxFormMappingErrorCount.get -> int -Microsoft.AspNetCore.Components.Endpoints.RazorComponentsServiceOptions.MaxFormMappingErrorCount.set -> void -Microsoft.AspNetCore.Components.Endpoints.RazorComponentsServiceOptions.MaxFormMappingKeySize.get -> int -Microsoft.AspNetCore.Components.Endpoints.RazorComponentsServiceOptions.MaxFormMappingKeySize.set -> void -Microsoft.AspNetCore.Components.Endpoints.RazorComponentsServiceOptions.MaxFormMappingRecursionDepth.get -> int -Microsoft.AspNetCore.Components.Endpoints.RazorComponentsServiceOptions.MaxFormMappingRecursionDepth.set -> void -Microsoft.AspNetCore.Components.Endpoints.RazorComponentsServiceOptions.RazorComponentsServiceOptions() -> void -Microsoft.AspNetCore.Components.Endpoints.RazorComponentsServiceOptions.TemporaryRedirectionUrlValidityDuration.get -> System.TimeSpan -Microsoft.AspNetCore.Components.Endpoints.RazorComponentsServiceOptions.TemporaryRedirectionUrlValidityDuration.set -> void -Microsoft.AspNetCore.Components.Endpoints.RootComponentMetadata -Microsoft.AspNetCore.Components.Endpoints.RootComponentMetadata.RootComponentMetadata(System.Type! rootComponentType) -> void -Microsoft.AspNetCore.Components.Endpoints.RootComponentMetadata.Type.get -> System.Type! -Microsoft.AspNetCore.Components.PersistedStateSerializationMode -Microsoft.AspNetCore.Components.PersistedStateSerializationMode.Infer = 1 -> Microsoft.AspNetCore.Components.PersistedStateSerializationMode -Microsoft.AspNetCore.Components.PersistedStateSerializationMode.Server = 2 -> Microsoft.AspNetCore.Components.PersistedStateSerializationMode -Microsoft.AspNetCore.Components.PersistedStateSerializationMode.WebAssembly = 3 -> Microsoft.AspNetCore.Components.PersistedStateSerializationMode -Microsoft.AspNetCore.Http.HttpResults.RazorComponentResult -Microsoft.AspNetCore.Http.HttpResults.RazorComponentResult.ComponentType.get -> System.Type! -Microsoft.AspNetCore.Http.HttpResults.RazorComponentResult.ContentType.get -> string? -Microsoft.AspNetCore.Http.HttpResults.RazorComponentResult.ContentType.set -> void -Microsoft.AspNetCore.Http.HttpResults.RazorComponentResult.ExecuteAsync(Microsoft.AspNetCore.Http.HttpContext! httpContext) -> System.Threading.Tasks.Task! -Microsoft.AspNetCore.Http.HttpResults.RazorComponentResult.Parameters.get -> System.Collections.Generic.IReadOnlyDictionary! -Microsoft.AspNetCore.Http.HttpResults.RazorComponentResult.PreventStreamingRendering.get -> bool -Microsoft.AspNetCore.Http.HttpResults.RazorComponentResult.PreventStreamingRendering.set -> void -Microsoft.AspNetCore.Http.HttpResults.RazorComponentResult.RazorComponentResult(System.Type! componentType) -> void -Microsoft.AspNetCore.Http.HttpResults.RazorComponentResult.RazorComponentResult(System.Type! componentType, object! parameters) -> void -Microsoft.AspNetCore.Http.HttpResults.RazorComponentResult.RazorComponentResult(System.Type! componentType, System.Collections.Generic.IReadOnlyDictionary! parameters) -> void -Microsoft.AspNetCore.Http.HttpResults.RazorComponentResult.StatusCode.get -> int? -Microsoft.AspNetCore.Http.HttpResults.RazorComponentResult.StatusCode.set -> void -Microsoft.AspNetCore.Http.HttpResults.RazorComponentResult -Microsoft.AspNetCore.Http.HttpResults.RazorComponentResult.RazorComponentResult() -> void -Microsoft.AspNetCore.Http.HttpResults.RazorComponentResult.RazorComponentResult(object! parameters) -> void -Microsoft.AspNetCore.Http.HttpResults.RazorComponentResult.RazorComponentResult(System.Collections.Generic.IReadOnlyDictionary! parameters) -> void -Microsoft.Extensions.DependencyInjection.IRazorComponentsBuilder -Microsoft.Extensions.DependencyInjection.IRazorComponentsBuilder.Services.get -> Microsoft.Extensions.DependencyInjection.IServiceCollection! -Microsoft.Extensions.DependencyInjection.RazorComponentsServiceCollectionExtensions -static Microsoft.AspNetCore.Builder.RazorComponentsEndpointConventionBuilderExtensions.AddAdditionalAssemblies(this Microsoft.AspNetCore.Builder.RazorComponentsEndpointConventionBuilder! builder, params System.Reflection.Assembly![]! assemblies) -> Microsoft.AspNetCore.Builder.RazorComponentsEndpointConventionBuilder! -static Microsoft.AspNetCore.Builder.RazorComponentsEndpointRouteBuilderExtensions.MapRazorComponents(this Microsoft.AspNetCore.Routing.IEndpointRouteBuilder! endpoints) -> Microsoft.AspNetCore.Builder.RazorComponentsEndpointConventionBuilder! -static Microsoft.AspNetCore.Components.Endpoints.Infrastructure.ComponentEndpointConventionBuilderHelper.AddRenderMode(Microsoft.AspNetCore.Builder.RazorComponentsEndpointConventionBuilder! builder, Microsoft.AspNetCore.Components.IComponentRenderMode! renderMode) -> void -static Microsoft.Extensions.DependencyInjection.RazorComponentsServiceCollectionExtensions.AddRazorComponents(this Microsoft.Extensions.DependencyInjection.IServiceCollection! services, System.Action? configure = null) -> Microsoft.Extensions.DependencyInjection.IRazorComponentsBuilder! \ No newline at end of file +#nullable enable diff --git a/src/Components/Forms/src/PublicAPI.Shipped.txt b/src/Components/Forms/src/PublicAPI.Shipped.txt index 2d4dae7afe00..3489bd13cb78 100644 --- a/src/Components/Forms/src/PublicAPI.Shipped.txt +++ b/src/Components/Forms/src/PublicAPI.Shipped.txt @@ -10,6 +10,8 @@ Microsoft.AspNetCore.Components.Forms.EditContext.GetValidationMessages(System.L Microsoft.AspNetCore.Components.Forms.EditContext.IsModified() -> bool Microsoft.AspNetCore.Components.Forms.EditContext.IsModified(in Microsoft.AspNetCore.Components.Forms.FieldIdentifier fieldIdentifier) -> bool Microsoft.AspNetCore.Components.Forms.EditContext.IsModified(System.Linq.Expressions.Expression!>! accessor) -> bool +Microsoft.AspNetCore.Components.Forms.EditContext.IsValid(in Microsoft.AspNetCore.Components.Forms.FieldIdentifier fieldIdentifier) -> bool +Microsoft.AspNetCore.Components.Forms.EditContext.IsValid(System.Linq.Expressions.Expression!>! accessor) -> bool Microsoft.AspNetCore.Components.Forms.EditContext.MarkAsUnmodified() -> void Microsoft.AspNetCore.Components.Forms.EditContext.MarkAsUnmodified(in Microsoft.AspNetCore.Components.Forms.FieldIdentifier fieldIdentifier) -> void Microsoft.AspNetCore.Components.Forms.EditContext.Model.get -> object! @@ -19,6 +21,8 @@ Microsoft.AspNetCore.Components.Forms.EditContext.OnFieldChanged -> System.Event Microsoft.AspNetCore.Components.Forms.EditContext.OnValidationRequested -> System.EventHandler? Microsoft.AspNetCore.Components.Forms.EditContext.OnValidationStateChanged -> System.EventHandler? Microsoft.AspNetCore.Components.Forms.EditContext.Properties.get -> Microsoft.AspNetCore.Components.Forms.EditContextProperties! +Microsoft.AspNetCore.Components.Forms.EditContext.ShouldUseFieldIdentifiers.get -> bool +Microsoft.AspNetCore.Components.Forms.EditContext.ShouldUseFieldIdentifiers.set -> void Microsoft.AspNetCore.Components.Forms.EditContext.Validate() -> bool Microsoft.AspNetCore.Components.Forms.EditContextDataAnnotationsExtensions Microsoft.AspNetCore.Components.Forms.EditContextProperties diff --git a/src/Components/Forms/src/PublicAPI.Unshipped.txt b/src/Components/Forms/src/PublicAPI.Unshipped.txt index 3f57b43db466..7dc5c58110bf 100644 --- a/src/Components/Forms/src/PublicAPI.Unshipped.txt +++ b/src/Components/Forms/src/PublicAPI.Unshipped.txt @@ -1,5 +1 @@ #nullable enable -Microsoft.AspNetCore.Components.Forms.EditContext.ShouldUseFieldIdentifiers.get -> bool -Microsoft.AspNetCore.Components.Forms.EditContext.ShouldUseFieldIdentifiers.set -> void -Microsoft.AspNetCore.Components.Forms.EditContext.IsValid(in Microsoft.AspNetCore.Components.Forms.FieldIdentifier fieldIdentifier) -> bool -Microsoft.AspNetCore.Components.Forms.EditContext.IsValid(System.Linq.Expressions.Expression!>! accessor) -> bool diff --git a/src/Components/QuickGrid/Microsoft.AspNetCore.Components.QuickGrid.EntityFrameworkAdapter/src/PublicAPI.Shipped.txt b/src/Components/QuickGrid/Microsoft.AspNetCore.Components.QuickGrid.EntityFrameworkAdapter/src/PublicAPI.Shipped.txt index ab058de62d44..3f77fefe0569 100644 --- a/src/Components/QuickGrid/Microsoft.AspNetCore.Components.QuickGrid.EntityFrameworkAdapter/src/PublicAPI.Shipped.txt +++ b/src/Components/QuickGrid/Microsoft.AspNetCore.Components.QuickGrid.EntityFrameworkAdapter/src/PublicAPI.Shipped.txt @@ -1 +1,3 @@ -#nullable enable +#nullable enable +Microsoft.Extensions.DependencyInjection.EntityFrameworkAdapterServiceCollectionExtensions +static Microsoft.Extensions.DependencyInjection.EntityFrameworkAdapterServiceCollectionExtensions.AddQuickGridEntityFrameworkAdapter(this Microsoft.Extensions.DependencyInjection.IServiceCollection! services) -> void diff --git a/src/Components/QuickGrid/Microsoft.AspNetCore.Components.QuickGrid.EntityFrameworkAdapter/src/PublicAPI.Unshipped.txt b/src/Components/QuickGrid/Microsoft.AspNetCore.Components.QuickGrid.EntityFrameworkAdapter/src/PublicAPI.Unshipped.txt index 3f77fefe0569..7dc5c58110bf 100644 --- a/src/Components/QuickGrid/Microsoft.AspNetCore.Components.QuickGrid.EntityFrameworkAdapter/src/PublicAPI.Unshipped.txt +++ b/src/Components/QuickGrid/Microsoft.AspNetCore.Components.QuickGrid.EntityFrameworkAdapter/src/PublicAPI.Unshipped.txt @@ -1,3 +1 @@ #nullable enable -Microsoft.Extensions.DependencyInjection.EntityFrameworkAdapterServiceCollectionExtensions -static Microsoft.Extensions.DependencyInjection.EntityFrameworkAdapterServiceCollectionExtensions.AddQuickGridEntityFrameworkAdapter(this Microsoft.Extensions.DependencyInjection.IServiceCollection! services) -> void diff --git a/src/Components/QuickGrid/Microsoft.AspNetCore.Components.QuickGrid/src/PublicAPI.Shipped.txt b/src/Components/QuickGrid/Microsoft.AspNetCore.Components.QuickGrid/src/PublicAPI.Shipped.txt index 7dc5c58110bf..412b0191d4fc 100644 --- a/src/Components/QuickGrid/Microsoft.AspNetCore.Components.QuickGrid/src/PublicAPI.Shipped.txt +++ b/src/Components/QuickGrid/Microsoft.AspNetCore.Components.QuickGrid/src/PublicAPI.Shipped.txt @@ -1 +1,152 @@ #nullable enable +~override Microsoft.AspNetCore.Components.QuickGrid.ColumnBase.BuildRenderTree(Microsoft.AspNetCore.Components.Rendering.RenderTreeBuilder __builder) -> void +~override Microsoft.AspNetCore.Components.QuickGrid.Paginator.BuildRenderTree(Microsoft.AspNetCore.Components.Rendering.RenderTreeBuilder __builder) -> void +~override Microsoft.AspNetCore.Components.QuickGrid.QuickGrid.BuildRenderTree(Microsoft.AspNetCore.Components.Rendering.RenderTreeBuilder __builder) -> void +abstract Microsoft.AspNetCore.Components.QuickGrid.ColumnBase.CellContent(Microsoft.AspNetCore.Components.Rendering.RenderTreeBuilder! builder, TGridItem item) -> void +abstract Microsoft.AspNetCore.Components.QuickGrid.ColumnBase.SortBy.get -> Microsoft.AspNetCore.Components.QuickGrid.GridSort? +abstract Microsoft.AspNetCore.Components.QuickGrid.ColumnBase.SortBy.set -> void +Microsoft.AspNetCore.Components.QuickGrid.Align +Microsoft.AspNetCore.Components.QuickGrid.Align.Center = 1 -> Microsoft.AspNetCore.Components.QuickGrid.Align +Microsoft.AspNetCore.Components.QuickGrid.Align.End = 2 -> Microsoft.AspNetCore.Components.QuickGrid.Align +Microsoft.AspNetCore.Components.QuickGrid.Align.Left = 3 -> Microsoft.AspNetCore.Components.QuickGrid.Align +Microsoft.AspNetCore.Components.QuickGrid.Align.Right = 4 -> Microsoft.AspNetCore.Components.QuickGrid.Align +Microsoft.AspNetCore.Components.QuickGrid.Align.Start = 0 -> Microsoft.AspNetCore.Components.QuickGrid.Align +Microsoft.AspNetCore.Components.QuickGrid.ColumnBase +Microsoft.AspNetCore.Components.QuickGrid.ColumnBase.Align.get -> Microsoft.AspNetCore.Components.QuickGrid.Align +Microsoft.AspNetCore.Components.QuickGrid.ColumnBase.Align.set -> void +Microsoft.AspNetCore.Components.QuickGrid.ColumnBase.Class.get -> string? +Microsoft.AspNetCore.Components.QuickGrid.ColumnBase.Class.set -> void +Microsoft.AspNetCore.Components.QuickGrid.ColumnBase.ColumnBase() -> void +Microsoft.AspNetCore.Components.QuickGrid.ColumnBase.ColumnOptions.get -> Microsoft.AspNetCore.Components.RenderFragment? +Microsoft.AspNetCore.Components.QuickGrid.ColumnBase.ColumnOptions.set -> void +Microsoft.AspNetCore.Components.QuickGrid.ColumnBase.Grid.get -> Microsoft.AspNetCore.Components.QuickGrid.QuickGrid! +Microsoft.AspNetCore.Components.QuickGrid.ColumnBase.HeaderContent.get -> Microsoft.AspNetCore.Components.RenderFragment! +Microsoft.AspNetCore.Components.QuickGrid.ColumnBase.HeaderContent.set -> void +Microsoft.AspNetCore.Components.QuickGrid.ColumnBase.HeaderTemplate.get -> Microsoft.AspNetCore.Components.RenderFragment!>? +Microsoft.AspNetCore.Components.QuickGrid.ColumnBase.HeaderTemplate.set -> void +Microsoft.AspNetCore.Components.QuickGrid.ColumnBase.InitialSortDirection.get -> Microsoft.AspNetCore.Components.QuickGrid.SortDirection +Microsoft.AspNetCore.Components.QuickGrid.ColumnBase.InitialSortDirection.set -> void +Microsoft.AspNetCore.Components.QuickGrid.ColumnBase.IsDefaultSortColumn.get -> bool +Microsoft.AspNetCore.Components.QuickGrid.ColumnBase.IsDefaultSortColumn.set -> void +Microsoft.AspNetCore.Components.QuickGrid.ColumnBase.PlaceholderTemplate.get -> Microsoft.AspNetCore.Components.RenderFragment? +Microsoft.AspNetCore.Components.QuickGrid.ColumnBase.PlaceholderTemplate.set -> void +Microsoft.AspNetCore.Components.QuickGrid.ColumnBase.Sortable.get -> bool? +Microsoft.AspNetCore.Components.QuickGrid.ColumnBase.Sortable.set -> void +Microsoft.AspNetCore.Components.QuickGrid.ColumnBase.Title.get -> string? +Microsoft.AspNetCore.Components.QuickGrid.ColumnBase.Title.set -> void +Microsoft.AspNetCore.Components.QuickGrid.GridItemsProvider +Microsoft.AspNetCore.Components.QuickGrid.GridItemsProviderRequest +Microsoft.AspNetCore.Components.QuickGrid.GridItemsProviderRequest.ApplySorting(System.Linq.IQueryable! source) -> System.Linq.IQueryable! +Microsoft.AspNetCore.Components.QuickGrid.GridItemsProviderRequest.CancellationToken.get -> System.Threading.CancellationToken +Microsoft.AspNetCore.Components.QuickGrid.GridItemsProviderRequest.CancellationToken.init -> void +Microsoft.AspNetCore.Components.QuickGrid.GridItemsProviderRequest.Count.get -> int? +Microsoft.AspNetCore.Components.QuickGrid.GridItemsProviderRequest.Count.init -> void +Microsoft.AspNetCore.Components.QuickGrid.GridItemsProviderRequest.GetSortByProperties() -> System.Collections.Generic.IReadOnlyCollection! +Microsoft.AspNetCore.Components.QuickGrid.GridItemsProviderRequest.GridItemsProviderRequest() -> void +Microsoft.AspNetCore.Components.QuickGrid.GridItemsProviderRequest.SortByAscending.get -> bool +Microsoft.AspNetCore.Components.QuickGrid.GridItemsProviderRequest.SortByAscending.init -> void +Microsoft.AspNetCore.Components.QuickGrid.GridItemsProviderRequest.SortByColumn.get -> Microsoft.AspNetCore.Components.QuickGrid.ColumnBase? +Microsoft.AspNetCore.Components.QuickGrid.GridItemsProviderRequest.SortByColumn.init -> void +Microsoft.AspNetCore.Components.QuickGrid.GridItemsProviderRequest.StartIndex.get -> int +Microsoft.AspNetCore.Components.QuickGrid.GridItemsProviderRequest.StartIndex.init -> void +Microsoft.AspNetCore.Components.QuickGrid.GridItemsProviderResult +Microsoft.AspNetCore.Components.QuickGrid.GridItemsProviderResult +Microsoft.AspNetCore.Components.QuickGrid.GridItemsProviderResult.GridItemsProviderResult() -> void +Microsoft.AspNetCore.Components.QuickGrid.GridItemsProviderResult.Items.get -> System.Collections.Generic.ICollection! +Microsoft.AspNetCore.Components.QuickGrid.GridItemsProviderResult.Items.init -> void +Microsoft.AspNetCore.Components.QuickGrid.GridItemsProviderResult.TotalItemCount.get -> int +Microsoft.AspNetCore.Components.QuickGrid.GridItemsProviderResult.TotalItemCount.init -> void +Microsoft.AspNetCore.Components.QuickGrid.GridSort +Microsoft.AspNetCore.Components.QuickGrid.GridSort.ThenAscending(System.Linq.Expressions.Expression!>! expression) -> Microsoft.AspNetCore.Components.QuickGrid.GridSort! +Microsoft.AspNetCore.Components.QuickGrid.GridSort.ThenDescending(System.Linq.Expressions.Expression!>! expression) -> Microsoft.AspNetCore.Components.QuickGrid.GridSort! +Microsoft.AspNetCore.Components.QuickGrid.IAsyncQueryExecutor +Microsoft.AspNetCore.Components.QuickGrid.IAsyncQueryExecutor.CountAsync(System.Linq.IQueryable! queryable) -> System.Threading.Tasks.Task! +Microsoft.AspNetCore.Components.QuickGrid.IAsyncQueryExecutor.IsSupported(System.Linq.IQueryable! queryable) -> bool +Microsoft.AspNetCore.Components.QuickGrid.IAsyncQueryExecutor.ToArrayAsync(System.Linq.IQueryable! queryable) -> System.Threading.Tasks.Task! +Microsoft.AspNetCore.Components.QuickGrid.Infrastructure.ColumnsCollectedNotifier +Microsoft.AspNetCore.Components.QuickGrid.Infrastructure.ColumnsCollectedNotifier.Attach(Microsoft.AspNetCore.Components.RenderHandle renderHandle) -> void +Microsoft.AspNetCore.Components.QuickGrid.Infrastructure.ColumnsCollectedNotifier.ColumnsCollectedNotifier() -> void +Microsoft.AspNetCore.Components.QuickGrid.Infrastructure.ColumnsCollectedNotifier.SetParametersAsync(Microsoft.AspNetCore.Components.ParameterView parameters) -> System.Threading.Tasks.Task! +Microsoft.AspNetCore.Components.QuickGrid.Infrastructure.Defer +Microsoft.AspNetCore.Components.QuickGrid.Infrastructure.Defer.ChildContent.get -> Microsoft.AspNetCore.Components.RenderFragment? +Microsoft.AspNetCore.Components.QuickGrid.Infrastructure.Defer.ChildContent.set -> void +Microsoft.AspNetCore.Components.QuickGrid.Infrastructure.Defer.Defer() -> void +Microsoft.AspNetCore.Components.QuickGrid.Infrastructure.EventHandlers +Microsoft.AspNetCore.Components.QuickGrid.PaginationState +Microsoft.AspNetCore.Components.QuickGrid.PaginationState.CurrentPageIndex.get -> int +Microsoft.AspNetCore.Components.QuickGrid.PaginationState.ItemsPerPage.get -> int +Microsoft.AspNetCore.Components.QuickGrid.PaginationState.ItemsPerPage.set -> void +Microsoft.AspNetCore.Components.QuickGrid.PaginationState.LastPageIndex.get -> int? +Microsoft.AspNetCore.Components.QuickGrid.PaginationState.PaginationState() -> void +Microsoft.AspNetCore.Components.QuickGrid.PaginationState.SetCurrentPageIndexAsync(int pageIndex) -> System.Threading.Tasks.Task! +Microsoft.AspNetCore.Components.QuickGrid.PaginationState.TotalItemCount.get -> int? +Microsoft.AspNetCore.Components.QuickGrid.PaginationState.TotalItemCountChanged -> System.EventHandler? +Microsoft.AspNetCore.Components.QuickGrid.Paginator +Microsoft.AspNetCore.Components.QuickGrid.Paginator.Dispose() -> void +Microsoft.AspNetCore.Components.QuickGrid.Paginator.Paginator() -> void +Microsoft.AspNetCore.Components.QuickGrid.Paginator.State.get -> Microsoft.AspNetCore.Components.QuickGrid.PaginationState! +Microsoft.AspNetCore.Components.QuickGrid.Paginator.State.set -> void +Microsoft.AspNetCore.Components.QuickGrid.Paginator.SummaryTemplate.get -> Microsoft.AspNetCore.Components.RenderFragment? +Microsoft.AspNetCore.Components.QuickGrid.Paginator.SummaryTemplate.set -> void +Microsoft.AspNetCore.Components.QuickGrid.PropertyColumn +Microsoft.AspNetCore.Components.QuickGrid.PropertyColumn.Format.get -> string? +Microsoft.AspNetCore.Components.QuickGrid.PropertyColumn.Format.set -> void +Microsoft.AspNetCore.Components.QuickGrid.PropertyColumn.Property.get -> System.Linq.Expressions.Expression!>! +Microsoft.AspNetCore.Components.QuickGrid.PropertyColumn.Property.set -> void +Microsoft.AspNetCore.Components.QuickGrid.PropertyColumn.PropertyColumn() -> void +Microsoft.AspNetCore.Components.QuickGrid.QuickGrid +Microsoft.AspNetCore.Components.QuickGrid.QuickGrid.AdditionalAttributes.get -> System.Collections.Generic.IReadOnlyDictionary? +Microsoft.AspNetCore.Components.QuickGrid.QuickGrid.AdditionalAttributes.set -> void +Microsoft.AspNetCore.Components.QuickGrid.QuickGrid.ChildContent.get -> Microsoft.AspNetCore.Components.RenderFragment? +Microsoft.AspNetCore.Components.QuickGrid.QuickGrid.ChildContent.set -> void +Microsoft.AspNetCore.Components.QuickGrid.QuickGrid.Class.get -> string? +Microsoft.AspNetCore.Components.QuickGrid.QuickGrid.Class.set -> void +Microsoft.AspNetCore.Components.QuickGrid.QuickGrid.DisposeAsync() -> System.Threading.Tasks.ValueTask +Microsoft.AspNetCore.Components.QuickGrid.QuickGrid.ItemKey.get -> System.Func! +Microsoft.AspNetCore.Components.QuickGrid.QuickGrid.ItemKey.set -> void +Microsoft.AspNetCore.Components.QuickGrid.QuickGrid.Items.get -> System.Linq.IQueryable? +Microsoft.AspNetCore.Components.QuickGrid.QuickGrid.Items.set -> void +Microsoft.AspNetCore.Components.QuickGrid.QuickGrid.ItemSize.get -> float +Microsoft.AspNetCore.Components.QuickGrid.QuickGrid.ItemSize.set -> void +Microsoft.AspNetCore.Components.QuickGrid.QuickGrid.ItemsProvider.get -> Microsoft.AspNetCore.Components.QuickGrid.GridItemsProvider? +Microsoft.AspNetCore.Components.QuickGrid.QuickGrid.ItemsProvider.set -> void +Microsoft.AspNetCore.Components.QuickGrid.QuickGrid.Pagination.get -> Microsoft.AspNetCore.Components.QuickGrid.PaginationState? +Microsoft.AspNetCore.Components.QuickGrid.QuickGrid.Pagination.set -> void +Microsoft.AspNetCore.Components.QuickGrid.QuickGrid.QuickGrid() -> void +Microsoft.AspNetCore.Components.QuickGrid.QuickGrid.RefreshDataAsync() -> System.Threading.Tasks.Task! +Microsoft.AspNetCore.Components.QuickGrid.QuickGrid.ShowColumnOptionsAsync(Microsoft.AspNetCore.Components.QuickGrid.ColumnBase! column) -> System.Threading.Tasks.Task! +Microsoft.AspNetCore.Components.QuickGrid.QuickGrid.SortByColumnAsync(Microsoft.AspNetCore.Components.QuickGrid.ColumnBase! column, Microsoft.AspNetCore.Components.QuickGrid.SortDirection direction = Microsoft.AspNetCore.Components.QuickGrid.SortDirection.Auto) -> System.Threading.Tasks.Task! +Microsoft.AspNetCore.Components.QuickGrid.QuickGrid.Theme.get -> string? +Microsoft.AspNetCore.Components.QuickGrid.QuickGrid.Theme.set -> void +Microsoft.AspNetCore.Components.QuickGrid.QuickGrid.Virtualize.get -> bool +Microsoft.AspNetCore.Components.QuickGrid.QuickGrid.Virtualize.set -> void +Microsoft.AspNetCore.Components.QuickGrid.SortDirection +Microsoft.AspNetCore.Components.QuickGrid.SortDirection.Ascending = 1 -> Microsoft.AspNetCore.Components.QuickGrid.SortDirection +Microsoft.AspNetCore.Components.QuickGrid.SortDirection.Auto = 0 -> Microsoft.AspNetCore.Components.QuickGrid.SortDirection +Microsoft.AspNetCore.Components.QuickGrid.SortDirection.Descending = 2 -> Microsoft.AspNetCore.Components.QuickGrid.SortDirection +Microsoft.AspNetCore.Components.QuickGrid.SortedProperty +Microsoft.AspNetCore.Components.QuickGrid.SortedProperty.Direction.get -> Microsoft.AspNetCore.Components.QuickGrid.SortDirection +Microsoft.AspNetCore.Components.QuickGrid.SortedProperty.Direction.init -> void +Microsoft.AspNetCore.Components.QuickGrid.SortedProperty.PropertyName.get -> string! +Microsoft.AspNetCore.Components.QuickGrid.SortedProperty.PropertyName.init -> void +Microsoft.AspNetCore.Components.QuickGrid.SortedProperty.SortedProperty() -> void +Microsoft.AspNetCore.Components.QuickGrid.TemplateColumn +Microsoft.AspNetCore.Components.QuickGrid.TemplateColumn.ChildContent.get -> Microsoft.AspNetCore.Components.RenderFragment! +Microsoft.AspNetCore.Components.QuickGrid.TemplateColumn.ChildContent.set -> void +Microsoft.AspNetCore.Components.QuickGrid.TemplateColumn.TemplateColumn() -> void +override Microsoft.AspNetCore.Components.QuickGrid.PaginationState.GetHashCode() -> int +override Microsoft.AspNetCore.Components.QuickGrid.Paginator.OnParametersSet() -> void +override Microsoft.AspNetCore.Components.QuickGrid.PropertyColumn.CellContent(Microsoft.AspNetCore.Components.Rendering.RenderTreeBuilder! builder, TGridItem item) -> void +override Microsoft.AspNetCore.Components.QuickGrid.PropertyColumn.OnParametersSet() -> void +override Microsoft.AspNetCore.Components.QuickGrid.PropertyColumn.SortBy.get -> Microsoft.AspNetCore.Components.QuickGrid.GridSort? +override Microsoft.AspNetCore.Components.QuickGrid.PropertyColumn.SortBy.set -> void +override Microsoft.AspNetCore.Components.QuickGrid.QuickGrid.OnAfterRenderAsync(bool firstRender) -> System.Threading.Tasks.Task! +override Microsoft.AspNetCore.Components.QuickGrid.QuickGrid.OnParametersSetAsync() -> System.Threading.Tasks.Task! +override Microsoft.AspNetCore.Components.QuickGrid.TemplateColumn.CellContent(Microsoft.AspNetCore.Components.Rendering.RenderTreeBuilder! builder, TGridItem item) -> void +override Microsoft.AspNetCore.Components.QuickGrid.TemplateColumn.IsSortableByDefault() -> bool +override Microsoft.AspNetCore.Components.QuickGrid.TemplateColumn.SortBy.get -> Microsoft.AspNetCore.Components.QuickGrid.GridSort? +override Microsoft.AspNetCore.Components.QuickGrid.TemplateColumn.SortBy.set -> void +static Microsoft.AspNetCore.Components.QuickGrid.GridItemsProviderResult.From(System.Collections.Generic.ICollection! items, int totalItemCount) -> Microsoft.AspNetCore.Components.QuickGrid.GridItemsProviderResult +static Microsoft.AspNetCore.Components.QuickGrid.GridSort.ByAscending(System.Linq.Expressions.Expression!>! expression) -> Microsoft.AspNetCore.Components.QuickGrid.GridSort! +static Microsoft.AspNetCore.Components.QuickGrid.GridSort.ByDescending(System.Linq.Expressions.Expression!>! expression) -> Microsoft.AspNetCore.Components.QuickGrid.GridSort! +virtual Microsoft.AspNetCore.Components.QuickGrid.ColumnBase.IsSortableByDefault() -> bool diff --git a/src/Components/QuickGrid/Microsoft.AspNetCore.Components.QuickGrid/src/PublicAPI.Unshipped.txt b/src/Components/QuickGrid/Microsoft.AspNetCore.Components.QuickGrid/src/PublicAPI.Unshipped.txt index 7544d7e8856f..7dc5c58110bf 100644 --- a/src/Components/QuickGrid/Microsoft.AspNetCore.Components.QuickGrid/src/PublicAPI.Unshipped.txt +++ b/src/Components/QuickGrid/Microsoft.AspNetCore.Components.QuickGrid/src/PublicAPI.Unshipped.txt @@ -1,152 +1 @@ #nullable enable -abstract Microsoft.AspNetCore.Components.QuickGrid.ColumnBase.CellContent(Microsoft.AspNetCore.Components.Rendering.RenderTreeBuilder! builder, TGridItem item) -> void -abstract Microsoft.AspNetCore.Components.QuickGrid.ColumnBase.SortBy.get -> Microsoft.AspNetCore.Components.QuickGrid.GridSort? -abstract Microsoft.AspNetCore.Components.QuickGrid.ColumnBase.SortBy.set -> void -Microsoft.AspNetCore.Components.QuickGrid.Align -Microsoft.AspNetCore.Components.QuickGrid.Align.Center = 1 -> Microsoft.AspNetCore.Components.QuickGrid.Align -Microsoft.AspNetCore.Components.QuickGrid.Align.End = 2 -> Microsoft.AspNetCore.Components.QuickGrid.Align -Microsoft.AspNetCore.Components.QuickGrid.Align.Left = 3 -> Microsoft.AspNetCore.Components.QuickGrid.Align -Microsoft.AspNetCore.Components.QuickGrid.Align.Right = 4 -> Microsoft.AspNetCore.Components.QuickGrid.Align -Microsoft.AspNetCore.Components.QuickGrid.Align.Start = 0 -> Microsoft.AspNetCore.Components.QuickGrid.Align -Microsoft.AspNetCore.Components.QuickGrid.ColumnBase -Microsoft.AspNetCore.Components.QuickGrid.ColumnBase.Align.get -> Microsoft.AspNetCore.Components.QuickGrid.Align -Microsoft.AspNetCore.Components.QuickGrid.ColumnBase.Align.set -> void -Microsoft.AspNetCore.Components.QuickGrid.ColumnBase.Class.get -> string? -Microsoft.AspNetCore.Components.QuickGrid.ColumnBase.Class.set -> void -Microsoft.AspNetCore.Components.QuickGrid.ColumnBase.ColumnBase() -> void -Microsoft.AspNetCore.Components.QuickGrid.ColumnBase.ColumnOptions.get -> Microsoft.AspNetCore.Components.RenderFragment? -Microsoft.AspNetCore.Components.QuickGrid.ColumnBase.ColumnOptions.set -> void -Microsoft.AspNetCore.Components.QuickGrid.ColumnBase.Grid.get -> Microsoft.AspNetCore.Components.QuickGrid.QuickGrid! -Microsoft.AspNetCore.Components.QuickGrid.ColumnBase.HeaderContent.get -> Microsoft.AspNetCore.Components.RenderFragment! -Microsoft.AspNetCore.Components.QuickGrid.ColumnBase.HeaderContent.set -> void -Microsoft.AspNetCore.Components.QuickGrid.ColumnBase.HeaderTemplate.get -> Microsoft.AspNetCore.Components.RenderFragment!>? -Microsoft.AspNetCore.Components.QuickGrid.ColumnBase.HeaderTemplate.set -> void -Microsoft.AspNetCore.Components.QuickGrid.ColumnBase.InitialSortDirection.get -> Microsoft.AspNetCore.Components.QuickGrid.SortDirection -Microsoft.AspNetCore.Components.QuickGrid.ColumnBase.InitialSortDirection.set -> void -Microsoft.AspNetCore.Components.QuickGrid.ColumnBase.IsDefaultSortColumn.get -> bool -Microsoft.AspNetCore.Components.QuickGrid.ColumnBase.IsDefaultSortColumn.set -> void -Microsoft.AspNetCore.Components.QuickGrid.ColumnBase.PlaceholderTemplate.get -> Microsoft.AspNetCore.Components.RenderFragment? -Microsoft.AspNetCore.Components.QuickGrid.ColumnBase.PlaceholderTemplate.set -> void -Microsoft.AspNetCore.Components.QuickGrid.ColumnBase.Sortable.get -> bool? -Microsoft.AspNetCore.Components.QuickGrid.ColumnBase.Sortable.set -> void -Microsoft.AspNetCore.Components.QuickGrid.ColumnBase.Title.get -> string? -Microsoft.AspNetCore.Components.QuickGrid.ColumnBase.Title.set -> void -Microsoft.AspNetCore.Components.QuickGrid.GridItemsProvider -Microsoft.AspNetCore.Components.QuickGrid.GridItemsProviderRequest -Microsoft.AspNetCore.Components.QuickGrid.GridItemsProviderRequest.ApplySorting(System.Linq.IQueryable! source) -> System.Linq.IQueryable! -Microsoft.AspNetCore.Components.QuickGrid.GridItemsProviderRequest.CancellationToken.get -> System.Threading.CancellationToken -Microsoft.AspNetCore.Components.QuickGrid.GridItemsProviderRequest.CancellationToken.init -> void -Microsoft.AspNetCore.Components.QuickGrid.GridItemsProviderRequest.Count.get -> int? -Microsoft.AspNetCore.Components.QuickGrid.GridItemsProviderRequest.Count.init -> void -Microsoft.AspNetCore.Components.QuickGrid.GridItemsProviderRequest.GetSortByProperties() -> System.Collections.Generic.IReadOnlyCollection! -Microsoft.AspNetCore.Components.QuickGrid.GridItemsProviderRequest.GridItemsProviderRequest() -> void -Microsoft.AspNetCore.Components.QuickGrid.GridItemsProviderRequest.SortByAscending.get -> bool -Microsoft.AspNetCore.Components.QuickGrid.GridItemsProviderRequest.SortByAscending.init -> void -Microsoft.AspNetCore.Components.QuickGrid.GridItemsProviderRequest.SortByColumn.get -> Microsoft.AspNetCore.Components.QuickGrid.ColumnBase? -Microsoft.AspNetCore.Components.QuickGrid.GridItemsProviderRequest.SortByColumn.init -> void -Microsoft.AspNetCore.Components.QuickGrid.GridItemsProviderRequest.StartIndex.get -> int -Microsoft.AspNetCore.Components.QuickGrid.GridItemsProviderRequest.StartIndex.init -> void -Microsoft.AspNetCore.Components.QuickGrid.GridItemsProviderResult -Microsoft.AspNetCore.Components.QuickGrid.GridItemsProviderResult -Microsoft.AspNetCore.Components.QuickGrid.GridItemsProviderResult.GridItemsProviderResult() -> void -Microsoft.AspNetCore.Components.QuickGrid.GridItemsProviderResult.Items.get -> System.Collections.Generic.ICollection! -Microsoft.AspNetCore.Components.QuickGrid.GridItemsProviderResult.Items.init -> void -Microsoft.AspNetCore.Components.QuickGrid.GridItemsProviderResult.TotalItemCount.get -> int -Microsoft.AspNetCore.Components.QuickGrid.GridItemsProviderResult.TotalItemCount.init -> void -Microsoft.AspNetCore.Components.QuickGrid.GridSort -Microsoft.AspNetCore.Components.QuickGrid.GridSort.ThenAscending(System.Linq.Expressions.Expression!>! expression) -> Microsoft.AspNetCore.Components.QuickGrid.GridSort! -Microsoft.AspNetCore.Components.QuickGrid.GridSort.ThenDescending(System.Linq.Expressions.Expression!>! expression) -> Microsoft.AspNetCore.Components.QuickGrid.GridSort! -Microsoft.AspNetCore.Components.QuickGrid.IAsyncQueryExecutor -Microsoft.AspNetCore.Components.QuickGrid.IAsyncQueryExecutor.CountAsync(System.Linq.IQueryable! queryable) -> System.Threading.Tasks.Task! -Microsoft.AspNetCore.Components.QuickGrid.IAsyncQueryExecutor.IsSupported(System.Linq.IQueryable! queryable) -> bool -Microsoft.AspNetCore.Components.QuickGrid.IAsyncQueryExecutor.ToArrayAsync(System.Linq.IQueryable! queryable) -> System.Threading.Tasks.Task! -Microsoft.AspNetCore.Components.QuickGrid.Infrastructure.ColumnsCollectedNotifier -Microsoft.AspNetCore.Components.QuickGrid.Infrastructure.ColumnsCollectedNotifier.Attach(Microsoft.AspNetCore.Components.RenderHandle renderHandle) -> void -Microsoft.AspNetCore.Components.QuickGrid.Infrastructure.ColumnsCollectedNotifier.ColumnsCollectedNotifier() -> void -Microsoft.AspNetCore.Components.QuickGrid.Infrastructure.ColumnsCollectedNotifier.SetParametersAsync(Microsoft.AspNetCore.Components.ParameterView parameters) -> System.Threading.Tasks.Task! -Microsoft.AspNetCore.Components.QuickGrid.Infrastructure.Defer -Microsoft.AspNetCore.Components.QuickGrid.Infrastructure.Defer.ChildContent.get -> Microsoft.AspNetCore.Components.RenderFragment? -Microsoft.AspNetCore.Components.QuickGrid.Infrastructure.Defer.ChildContent.set -> void -Microsoft.AspNetCore.Components.QuickGrid.Infrastructure.Defer.Defer() -> void -Microsoft.AspNetCore.Components.QuickGrid.Infrastructure.EventHandlers -Microsoft.AspNetCore.Components.QuickGrid.PaginationState -Microsoft.AspNetCore.Components.QuickGrid.PaginationState.CurrentPageIndex.get -> int -Microsoft.AspNetCore.Components.QuickGrid.PaginationState.ItemsPerPage.get -> int -Microsoft.AspNetCore.Components.QuickGrid.PaginationState.ItemsPerPage.set -> void -Microsoft.AspNetCore.Components.QuickGrid.PaginationState.LastPageIndex.get -> int? -Microsoft.AspNetCore.Components.QuickGrid.PaginationState.PaginationState() -> void -Microsoft.AspNetCore.Components.QuickGrid.PaginationState.SetCurrentPageIndexAsync(int pageIndex) -> System.Threading.Tasks.Task! -Microsoft.AspNetCore.Components.QuickGrid.PaginationState.TotalItemCount.get -> int? -Microsoft.AspNetCore.Components.QuickGrid.PaginationState.TotalItemCountChanged -> System.EventHandler? -Microsoft.AspNetCore.Components.QuickGrid.Paginator -Microsoft.AspNetCore.Components.QuickGrid.Paginator.Dispose() -> void -Microsoft.AspNetCore.Components.QuickGrid.Paginator.Paginator() -> void -Microsoft.AspNetCore.Components.QuickGrid.Paginator.State.get -> Microsoft.AspNetCore.Components.QuickGrid.PaginationState! -Microsoft.AspNetCore.Components.QuickGrid.Paginator.State.set -> void -Microsoft.AspNetCore.Components.QuickGrid.Paginator.SummaryTemplate.get -> Microsoft.AspNetCore.Components.RenderFragment? -Microsoft.AspNetCore.Components.QuickGrid.Paginator.SummaryTemplate.set -> void -Microsoft.AspNetCore.Components.QuickGrid.PropertyColumn -Microsoft.AspNetCore.Components.QuickGrid.PropertyColumn.Format.get -> string? -Microsoft.AspNetCore.Components.QuickGrid.PropertyColumn.Format.set -> void -Microsoft.AspNetCore.Components.QuickGrid.PropertyColumn.Property.get -> System.Linq.Expressions.Expression!>! -Microsoft.AspNetCore.Components.QuickGrid.PropertyColumn.Property.set -> void -Microsoft.AspNetCore.Components.QuickGrid.PropertyColumn.PropertyColumn() -> void -Microsoft.AspNetCore.Components.QuickGrid.QuickGrid -Microsoft.AspNetCore.Components.QuickGrid.QuickGrid.ChildContent.get -> Microsoft.AspNetCore.Components.RenderFragment? -Microsoft.AspNetCore.Components.QuickGrid.QuickGrid.ChildContent.set -> void -Microsoft.AspNetCore.Components.QuickGrid.QuickGrid.Class.get -> string? -Microsoft.AspNetCore.Components.QuickGrid.QuickGrid.Class.set -> void -Microsoft.AspNetCore.Components.QuickGrid.QuickGrid.DisposeAsync() -> System.Threading.Tasks.ValueTask -Microsoft.AspNetCore.Components.QuickGrid.QuickGrid.ItemKey.get -> System.Func! -Microsoft.AspNetCore.Components.QuickGrid.QuickGrid.ItemKey.set -> void -Microsoft.AspNetCore.Components.QuickGrid.QuickGrid.Items.get -> System.Linq.IQueryable? -Microsoft.AspNetCore.Components.QuickGrid.QuickGrid.Items.set -> void -Microsoft.AspNetCore.Components.QuickGrid.QuickGrid.ItemSize.get -> float -Microsoft.AspNetCore.Components.QuickGrid.QuickGrid.ItemSize.set -> void -Microsoft.AspNetCore.Components.QuickGrid.QuickGrid.ItemsProvider.get -> Microsoft.AspNetCore.Components.QuickGrid.GridItemsProvider? -Microsoft.AspNetCore.Components.QuickGrid.QuickGrid.ItemsProvider.set -> void -Microsoft.AspNetCore.Components.QuickGrid.QuickGrid.Pagination.get -> Microsoft.AspNetCore.Components.QuickGrid.PaginationState? -Microsoft.AspNetCore.Components.QuickGrid.QuickGrid.Pagination.set -> void -Microsoft.AspNetCore.Components.QuickGrid.QuickGrid.QuickGrid() -> void -Microsoft.AspNetCore.Components.QuickGrid.QuickGrid.RefreshDataAsync() -> System.Threading.Tasks.Task! -Microsoft.AspNetCore.Components.QuickGrid.QuickGrid.ShowColumnOptionsAsync(Microsoft.AspNetCore.Components.QuickGrid.ColumnBase! column) -> System.Threading.Tasks.Task! -Microsoft.AspNetCore.Components.QuickGrid.QuickGrid.SortByColumnAsync(Microsoft.AspNetCore.Components.QuickGrid.ColumnBase! column, Microsoft.AspNetCore.Components.QuickGrid.SortDirection direction = Microsoft.AspNetCore.Components.QuickGrid.SortDirection.Auto) -> System.Threading.Tasks.Task! -Microsoft.AspNetCore.Components.QuickGrid.QuickGrid.Theme.get -> string? -Microsoft.AspNetCore.Components.QuickGrid.QuickGrid.Theme.set -> void -Microsoft.AspNetCore.Components.QuickGrid.QuickGrid.Virtualize.get -> bool -Microsoft.AspNetCore.Components.QuickGrid.QuickGrid.Virtualize.set -> void -Microsoft.AspNetCore.Components.QuickGrid.QuickGrid.AdditionalAttributes.get -> System.Collections.Generic.IReadOnlyDictionary? -Microsoft.AspNetCore.Components.QuickGrid.QuickGrid.AdditionalAttributes.set -> void -Microsoft.AspNetCore.Components.QuickGrid.SortDirection -Microsoft.AspNetCore.Components.QuickGrid.SortDirection.Ascending = 1 -> Microsoft.AspNetCore.Components.QuickGrid.SortDirection -Microsoft.AspNetCore.Components.QuickGrid.SortDirection.Auto = 0 -> Microsoft.AspNetCore.Components.QuickGrid.SortDirection -Microsoft.AspNetCore.Components.QuickGrid.SortDirection.Descending = 2 -> Microsoft.AspNetCore.Components.QuickGrid.SortDirection -Microsoft.AspNetCore.Components.QuickGrid.SortedProperty -Microsoft.AspNetCore.Components.QuickGrid.SortedProperty.Direction.get -> Microsoft.AspNetCore.Components.QuickGrid.SortDirection -Microsoft.AspNetCore.Components.QuickGrid.SortedProperty.Direction.init -> void -Microsoft.AspNetCore.Components.QuickGrid.SortedProperty.PropertyName.get -> string! -Microsoft.AspNetCore.Components.QuickGrid.SortedProperty.PropertyName.init -> void -Microsoft.AspNetCore.Components.QuickGrid.SortedProperty.SortedProperty() -> void -Microsoft.AspNetCore.Components.QuickGrid.TemplateColumn -Microsoft.AspNetCore.Components.QuickGrid.TemplateColumn.ChildContent.get -> Microsoft.AspNetCore.Components.RenderFragment! -Microsoft.AspNetCore.Components.QuickGrid.TemplateColumn.ChildContent.set -> void -Microsoft.AspNetCore.Components.QuickGrid.TemplateColumn.TemplateColumn() -> void -override Microsoft.AspNetCore.Components.QuickGrid.PaginationState.GetHashCode() -> int -override Microsoft.AspNetCore.Components.QuickGrid.Paginator.OnParametersSet() -> void -override Microsoft.AspNetCore.Components.QuickGrid.PropertyColumn.CellContent(Microsoft.AspNetCore.Components.Rendering.RenderTreeBuilder! builder, TGridItem item) -> void -override Microsoft.AspNetCore.Components.QuickGrid.PropertyColumn.OnParametersSet() -> void -override Microsoft.AspNetCore.Components.QuickGrid.PropertyColumn.SortBy.get -> Microsoft.AspNetCore.Components.QuickGrid.GridSort? -override Microsoft.AspNetCore.Components.QuickGrid.PropertyColumn.SortBy.set -> void -override Microsoft.AspNetCore.Components.QuickGrid.QuickGrid.OnAfterRenderAsync(bool firstRender) -> System.Threading.Tasks.Task! -override Microsoft.AspNetCore.Components.QuickGrid.QuickGrid.OnParametersSetAsync() -> System.Threading.Tasks.Task! -override Microsoft.AspNetCore.Components.QuickGrid.TemplateColumn.CellContent(Microsoft.AspNetCore.Components.Rendering.RenderTreeBuilder! builder, TGridItem item) -> void -override Microsoft.AspNetCore.Components.QuickGrid.TemplateColumn.IsSortableByDefault() -> bool -override Microsoft.AspNetCore.Components.QuickGrid.TemplateColumn.SortBy.get -> Microsoft.AspNetCore.Components.QuickGrid.GridSort? -override Microsoft.AspNetCore.Components.QuickGrid.TemplateColumn.SortBy.set -> void -static Microsoft.AspNetCore.Components.QuickGrid.GridItemsProviderResult.From(System.Collections.Generic.ICollection! items, int totalItemCount) -> Microsoft.AspNetCore.Components.QuickGrid.GridItemsProviderResult -static Microsoft.AspNetCore.Components.QuickGrid.GridSort.ByAscending(System.Linq.Expressions.Expression!>! expression) -> Microsoft.AspNetCore.Components.QuickGrid.GridSort! -static Microsoft.AspNetCore.Components.QuickGrid.GridSort.ByDescending(System.Linq.Expressions.Expression!>! expression) -> Microsoft.AspNetCore.Components.QuickGrid.GridSort! -virtual Microsoft.AspNetCore.Components.QuickGrid.ColumnBase.IsSortableByDefault() -> bool -~override Microsoft.AspNetCore.Components.QuickGrid.ColumnBase.BuildRenderTree(Microsoft.AspNetCore.Components.Rendering.RenderTreeBuilder __builder) -> void -~override Microsoft.AspNetCore.Components.QuickGrid.QuickGrid.BuildRenderTree(Microsoft.AspNetCore.Components.Rendering.RenderTreeBuilder __builder) -> void -~override Microsoft.AspNetCore.Components.QuickGrid.Paginator.BuildRenderTree(Microsoft.AspNetCore.Components.Rendering.RenderTreeBuilder __builder) -> void diff --git a/src/Components/Server/src/PublicAPI.Shipped.txt b/src/Components/Server/src/PublicAPI.Shipped.txt index 68108dbcdd58..73d9c9f6fa7a 100644 --- a/src/Components/Server/src/PublicAPI.Shipped.txt +++ b/src/Components/Server/src/PublicAPI.Shipped.txt @@ -5,6 +5,7 @@ Microsoft.AspNetCore.Builder.ComponentEndpointConventionBuilder Microsoft.AspNetCore.Builder.ComponentEndpointConventionBuilder.Add(System.Action! convention) -> void Microsoft.AspNetCore.Builder.ComponentEndpointConventionBuilder.Finally(System.Action! finalConvention) -> void Microsoft.AspNetCore.Builder.ComponentEndpointRouteBuilderExtensions +Microsoft.AspNetCore.Builder.ServerRazorComponentsEndpointConventionBuilderExtensions Microsoft.AspNetCore.Components.Server.CircuitOptions Microsoft.AspNetCore.Components.Server.CircuitOptions.CircuitOptions() -> void Microsoft.AspNetCore.Components.Server.CircuitOptions.DetailedErrors.get -> bool @@ -27,6 +28,8 @@ Microsoft.AspNetCore.Components.Server.Circuits.Circuit Microsoft.AspNetCore.Components.Server.Circuits.Circuit.Id.get -> string! Microsoft.AspNetCore.Components.Server.Circuits.CircuitHandler Microsoft.AspNetCore.Components.Server.Circuits.CircuitHandler.CircuitHandler() -> void +Microsoft.AspNetCore.Components.Server.Circuits.CircuitInboundActivityContext +Microsoft.AspNetCore.Components.Server.Circuits.CircuitInboundActivityContext.Circuit.get -> Microsoft.AspNetCore.Components.Server.Circuits.Circuit! Microsoft.AspNetCore.Components.Server.ProtectedBrowserStorage.ProtectedBrowserStorage Microsoft.AspNetCore.Components.Server.ProtectedBrowserStorage.ProtectedBrowserStorage.DeleteAsync(string! key) -> System.Threading.Tasks.ValueTask Microsoft.AspNetCore.Components.Server.ProtectedBrowserStorage.ProtectedBrowserStorage.GetAsync(string! key) -> System.Threading.Tasks.ValueTask> @@ -49,15 +52,19 @@ Microsoft.AspNetCore.Components.Server.ServerAuthenticationStateProvider.SetAuth Microsoft.Extensions.DependencyInjection.ComponentServiceCollectionExtensions Microsoft.Extensions.DependencyInjection.IServerSideBlazorBuilder Microsoft.Extensions.DependencyInjection.IServerSideBlazorBuilder.Services.get -> Microsoft.Extensions.DependencyInjection.IServiceCollection! +Microsoft.Extensions.DependencyInjection.ServerRazorComponentsBuilderExtensions Microsoft.Extensions.DependencyInjection.ServerSideBlazorBuilderExtensions override Microsoft.AspNetCore.Components.Server.ServerAuthenticationStateProvider.GetAuthenticationStateAsync() -> System.Threading.Tasks.Task! static Microsoft.AspNetCore.Builder.ComponentEndpointRouteBuilderExtensions.MapBlazorHub(this Microsoft.AspNetCore.Routing.IEndpointRouteBuilder! endpoints) -> Microsoft.AspNetCore.Builder.ComponentEndpointConventionBuilder! static Microsoft.AspNetCore.Builder.ComponentEndpointRouteBuilderExtensions.MapBlazorHub(this Microsoft.AspNetCore.Routing.IEndpointRouteBuilder! endpoints, string! path) -> Microsoft.AspNetCore.Builder.ComponentEndpointConventionBuilder! static Microsoft.AspNetCore.Builder.ComponentEndpointRouteBuilderExtensions.MapBlazorHub(this Microsoft.AspNetCore.Routing.IEndpointRouteBuilder! endpoints, string! path, System.Action! configureOptions) -> Microsoft.AspNetCore.Builder.ComponentEndpointConventionBuilder! static Microsoft.AspNetCore.Builder.ComponentEndpointRouteBuilderExtensions.MapBlazorHub(this Microsoft.AspNetCore.Routing.IEndpointRouteBuilder! endpoints, System.Action! configureOptions) -> Microsoft.AspNetCore.Builder.ComponentEndpointConventionBuilder! +static Microsoft.AspNetCore.Builder.ServerRazorComponentsEndpointConventionBuilderExtensions.AddInteractiveServerRenderMode(this Microsoft.AspNetCore.Builder.RazorComponentsEndpointConventionBuilder! builder) -> Microsoft.AspNetCore.Builder.RazorComponentsEndpointConventionBuilder! static Microsoft.Extensions.DependencyInjection.ComponentServiceCollectionExtensions.AddServerSideBlazor(this Microsoft.Extensions.DependencyInjection.IServiceCollection! services, System.Action? configure = null) -> Microsoft.Extensions.DependencyInjection.IServerSideBlazorBuilder! +static Microsoft.Extensions.DependencyInjection.ServerRazorComponentsBuilderExtensions.AddInteractiveServerComponents(this Microsoft.Extensions.DependencyInjection.IRazorComponentsBuilder! builder, System.Action? configure = null) -> Microsoft.Extensions.DependencyInjection.IServerSideBlazorBuilder! static Microsoft.Extensions.DependencyInjection.ServerSideBlazorBuilderExtensions.AddCircuitOptions(this Microsoft.Extensions.DependencyInjection.IServerSideBlazorBuilder! builder, System.Action! configure) -> Microsoft.Extensions.DependencyInjection.IServerSideBlazorBuilder! static Microsoft.Extensions.DependencyInjection.ServerSideBlazorBuilderExtensions.AddHubOptions(this Microsoft.Extensions.DependencyInjection.IServerSideBlazorBuilder! builder, System.Action! configure) -> Microsoft.Extensions.DependencyInjection.IServerSideBlazorBuilder! +virtual Microsoft.AspNetCore.Components.Server.Circuits.CircuitHandler.CreateInboundActivityHandler(System.Func! next) -> System.Func! virtual Microsoft.AspNetCore.Components.Server.Circuits.CircuitHandler.OnCircuitClosedAsync(Microsoft.AspNetCore.Components.Server.Circuits.Circuit! circuit, System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.Task! virtual Microsoft.AspNetCore.Components.Server.Circuits.CircuitHandler.OnCircuitOpenedAsync(Microsoft.AspNetCore.Components.Server.Circuits.Circuit! circuit, System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.Task! virtual Microsoft.AspNetCore.Components.Server.Circuits.CircuitHandler.OnConnectionDownAsync(Microsoft.AspNetCore.Components.Server.Circuits.Circuit! circuit, System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.Task! diff --git a/src/Components/Server/src/PublicAPI.Unshipped.txt b/src/Components/Server/src/PublicAPI.Unshipped.txt index dd03124a4909..7dc5c58110bf 100644 --- a/src/Components/Server/src/PublicAPI.Unshipped.txt +++ b/src/Components/Server/src/PublicAPI.Unshipped.txt @@ -1,8 +1 @@ #nullable enable -Microsoft.AspNetCore.Builder.ServerRazorComponentsEndpointConventionBuilderExtensions -Microsoft.AspNetCore.Components.Server.Circuits.CircuitInboundActivityContext -Microsoft.AspNetCore.Components.Server.Circuits.CircuitInboundActivityContext.Circuit.get -> Microsoft.AspNetCore.Components.Server.Circuits.Circuit! -Microsoft.Extensions.DependencyInjection.ServerRazorComponentsBuilderExtensions -static Microsoft.AspNetCore.Builder.ServerRazorComponentsEndpointConventionBuilderExtensions.AddInteractiveServerRenderMode(this Microsoft.AspNetCore.Builder.RazorComponentsEndpointConventionBuilder! builder) -> Microsoft.AspNetCore.Builder.RazorComponentsEndpointConventionBuilder! -static Microsoft.Extensions.DependencyInjection.ServerRazorComponentsBuilderExtensions.AddInteractiveServerComponents(this Microsoft.Extensions.DependencyInjection.IRazorComponentsBuilder! builder, System.Action? configure = null) -> Microsoft.Extensions.DependencyInjection.IServerSideBlazorBuilder! -virtual Microsoft.AspNetCore.Components.Server.Circuits.CircuitHandler.CreateInboundActivityHandler(System.Func! next) -> System.Func! diff --git a/src/Components/Web/src/PublicAPI.Shipped.txt b/src/Components/Web/src/PublicAPI.Shipped.txt index ffd55a8f571b..c137dbac5717 100644 --- a/src/Components/Web/src/PublicAPI.Shipped.txt +++ b/src/Components/Web/src/PublicAPI.Shipped.txt @@ -1,4 +1,5 @@ #nullable enable +abstract Microsoft.AspNetCore.Components.Forms.AntiforgeryStateProvider.GetAntiforgeryToken() -> Microsoft.AspNetCore.Components.Forms.AntiforgeryRequestToken? abstract Microsoft.AspNetCore.Components.Forms.InputBase.TryParseValueFromString(string? value, out TValue result, out string? validationErrorMessage) -> bool abstract Microsoft.AspNetCore.Components.RenderTree.WebRenderer.AttachRootComponentToBrowser(int componentId, string! domElementSelector) -> void Microsoft.AspNetCore.Components.BindInputElementAttribute @@ -10,6 +11,14 @@ Microsoft.AspNetCore.Components.BindInputElementAttribute.Suffix.get -> string? Microsoft.AspNetCore.Components.BindInputElementAttribute.Type.get -> string? Microsoft.AspNetCore.Components.BindInputElementAttribute.ValueAttribute.get -> string? Microsoft.AspNetCore.Components.ElementReferenceExtensions +Microsoft.AspNetCore.Components.Forms.AntiforgeryRequestToken +Microsoft.AspNetCore.Components.Forms.AntiforgeryRequestToken.AntiforgeryRequestToken(string! value, string! formFieldName) -> void +Microsoft.AspNetCore.Components.Forms.AntiforgeryRequestToken.FormFieldName.get -> string! +Microsoft.AspNetCore.Components.Forms.AntiforgeryRequestToken.Value.get -> string! +Microsoft.AspNetCore.Components.Forms.AntiforgeryStateProvider +Microsoft.AspNetCore.Components.Forms.AntiforgeryStateProvider.AntiforgeryStateProvider() -> void +Microsoft.AspNetCore.Components.Forms.AntiforgeryToken +Microsoft.AspNetCore.Components.Forms.AntiforgeryToken.AntiforgeryToken() -> void Microsoft.AspNetCore.Components.Forms.BrowserFileExtensions Microsoft.AspNetCore.Components.Forms.EditContextFieldClassExtensions Microsoft.AspNetCore.Components.Forms.EditForm @@ -20,6 +29,10 @@ Microsoft.AspNetCore.Components.Forms.EditForm.ChildContent.set -> void Microsoft.AspNetCore.Components.Forms.EditForm.EditContext.get -> Microsoft.AspNetCore.Components.Forms.EditContext? Microsoft.AspNetCore.Components.Forms.EditForm.EditContext.set -> void Microsoft.AspNetCore.Components.Forms.EditForm.EditForm() -> void +Microsoft.AspNetCore.Components.Forms.EditForm.Enhance.get -> bool +Microsoft.AspNetCore.Components.Forms.EditForm.Enhance.set -> void +Microsoft.AspNetCore.Components.Forms.EditForm.FormName.get -> string? +Microsoft.AspNetCore.Components.Forms.EditForm.FormName.set -> void Microsoft.AspNetCore.Components.Forms.EditForm.Model.get -> object? Microsoft.AspNetCore.Components.Forms.EditForm.Model.set -> void Microsoft.AspNetCore.Components.Forms.EditForm.OnInvalidSubmit.get -> Microsoft.AspNetCore.Components.EventCallback @@ -28,8 +41,31 @@ Microsoft.AspNetCore.Components.Forms.EditForm.OnSubmit.get -> Microsoft.AspNetC Microsoft.AspNetCore.Components.Forms.EditForm.OnSubmit.set -> void Microsoft.AspNetCore.Components.Forms.EditForm.OnValidSubmit.get -> Microsoft.AspNetCore.Components.EventCallback Microsoft.AspNetCore.Components.Forms.EditForm.OnValidSubmit.set -> void +Microsoft.AspNetCore.Components.Forms.Editor +Microsoft.AspNetCore.Components.Forms.Editor.Editor() -> void +Microsoft.AspNetCore.Components.Forms.Editor.NameFor(System.Linq.Expressions.LambdaExpression! expression) -> string! +Microsoft.AspNetCore.Components.Forms.Editor.Value.get -> T +Microsoft.AspNetCore.Components.Forms.Editor.Value.set -> void +Microsoft.AspNetCore.Components.Forms.Editor.ValueChanged.get -> Microsoft.AspNetCore.Components.EventCallback +Microsoft.AspNetCore.Components.Forms.Editor.ValueChanged.set -> void +Microsoft.AspNetCore.Components.Forms.Editor.ValueExpression.get -> System.Linq.Expressions.Expression!>! +Microsoft.AspNetCore.Components.Forms.Editor.ValueExpression.set -> void Microsoft.AspNetCore.Components.Forms.FieldCssClassProvider Microsoft.AspNetCore.Components.Forms.FieldCssClassProvider.FieldCssClassProvider() -> void +Microsoft.AspNetCore.Components.Forms.FormMappingContext +Microsoft.AspNetCore.Components.Forms.FormMappingContext.GetAllErrors() -> System.Collections.Generic.IEnumerable! +Microsoft.AspNetCore.Components.Forms.FormMappingContext.GetAllErrors(string! formName) -> System.Collections.Generic.IEnumerable! +Microsoft.AspNetCore.Components.Forms.FormMappingContext.GetAttemptedValue(string! formName, string! key) -> string? +Microsoft.AspNetCore.Components.Forms.FormMappingContext.GetAttemptedValue(string! key) -> string? +Microsoft.AspNetCore.Components.Forms.FormMappingContext.GetErrors(string! formName, string! key) -> Microsoft.AspNetCore.Components.Forms.Mapping.FormMappingError? +Microsoft.AspNetCore.Components.Forms.FormMappingContext.GetErrors(string! key) -> Microsoft.AspNetCore.Components.Forms.Mapping.FormMappingError? +Microsoft.AspNetCore.Components.Forms.FormMappingContext.MappingScopeName.get -> string! +Microsoft.AspNetCore.Components.Forms.FormMappingScope +Microsoft.AspNetCore.Components.Forms.FormMappingScope.ChildContent.get -> Microsoft.AspNetCore.Components.RenderFragment! +Microsoft.AspNetCore.Components.Forms.FormMappingScope.ChildContent.set -> void +Microsoft.AspNetCore.Components.Forms.FormMappingScope.FormMappingScope() -> void +Microsoft.AspNetCore.Components.Forms.FormMappingScope.Name.get -> string! +Microsoft.AspNetCore.Components.Forms.FormMappingScope.Name.set -> void Microsoft.AspNetCore.Components.Forms.IBrowserFile Microsoft.AspNetCore.Components.Forms.IBrowserFile.ContentType.get -> string! Microsoft.AspNetCore.Components.Forms.IBrowserFile.LastModified.get -> System.DateTimeOffset @@ -51,6 +87,7 @@ Microsoft.AspNetCore.Components.Forms.InputBase.EditContext.set -> void Microsoft.AspNetCore.Components.Forms.InputBase.FieldIdentifier.get -> Microsoft.AspNetCore.Components.Forms.FieldIdentifier Microsoft.AspNetCore.Components.Forms.InputBase.FieldIdentifier.set -> void Microsoft.AspNetCore.Components.Forms.InputBase.InputBase() -> void +Microsoft.AspNetCore.Components.Forms.InputBase.NameAttributeValue.get -> string! Microsoft.AspNetCore.Components.Forms.InputBase.Value.get -> TValue? Microsoft.AspNetCore.Components.Forms.InputBase.Value.set -> void Microsoft.AspNetCore.Components.Forms.InputBase.ValueChanged.get -> Microsoft.AspNetCore.Components.EventCallback @@ -123,6 +160,27 @@ Microsoft.AspNetCore.Components.Forms.InputTextArea Microsoft.AspNetCore.Components.Forms.InputTextArea.Element.get -> Microsoft.AspNetCore.Components.ElementReference? Microsoft.AspNetCore.Components.Forms.InputTextArea.Element.set -> void Microsoft.AspNetCore.Components.Forms.InputTextArea.InputTextArea() -> void +Microsoft.AspNetCore.Components.Forms.Mapping.FormMappingError +Microsoft.AspNetCore.Components.Forms.Mapping.FormMappingError.AttemptedValue.get -> string? +Microsoft.AspNetCore.Components.Forms.Mapping.FormMappingError.Container.get -> object! +Microsoft.AspNetCore.Components.Forms.Mapping.FormMappingError.ErrorMessages.get -> System.Collections.Generic.IReadOnlyList! +Microsoft.AspNetCore.Components.Forms.Mapping.FormMappingError.Name.get -> string! +Microsoft.AspNetCore.Components.Forms.Mapping.FormMappingError.Path.get -> string! +Microsoft.AspNetCore.Components.Forms.Mapping.FormValueMappingContext +Microsoft.AspNetCore.Components.Forms.Mapping.FormValueMappingContext.AcceptFormName.get -> string? +Microsoft.AspNetCore.Components.Forms.Mapping.FormValueMappingContext.AcceptMappingScopeName.get -> string! +Microsoft.AspNetCore.Components.Forms.Mapping.FormValueMappingContext.MapErrorToContainer.get -> System.Action? +Microsoft.AspNetCore.Components.Forms.Mapping.FormValueMappingContext.MapErrorToContainer.set -> void +Microsoft.AspNetCore.Components.Forms.Mapping.FormValueMappingContext.OnError.get -> System.Action? +Microsoft.AspNetCore.Components.Forms.Mapping.FormValueMappingContext.OnError.set -> void +Microsoft.AspNetCore.Components.Forms.Mapping.FormValueMappingContext.ParameterName.get -> string! +Microsoft.AspNetCore.Components.Forms.Mapping.FormValueMappingContext.Result.get -> object? +Microsoft.AspNetCore.Components.Forms.Mapping.FormValueMappingContext.SetResult(object? result) -> void +Microsoft.AspNetCore.Components.Forms.Mapping.FormValueMappingContext.ValueType.get -> System.Type! +Microsoft.AspNetCore.Components.Forms.Mapping.IFormValueMapper +Microsoft.AspNetCore.Components.Forms.Mapping.IFormValueMapper.CanMap(System.Type! valueType, string! scopeName, string? formName) -> bool +Microsoft.AspNetCore.Components.Forms.Mapping.IFormValueMapper.Map(Microsoft.AspNetCore.Components.Forms.Mapping.FormValueMappingContext! context) -> void +Microsoft.AspNetCore.Components.Forms.Mapping.SupplyParameterFromFormServiceCollectionExtensions Microsoft.AspNetCore.Components.Forms.RemoteBrowserFileStreamOptions Microsoft.AspNetCore.Components.Forms.RemoteBrowserFileStreamOptions.MaxBufferSize.get -> int Microsoft.AspNetCore.Components.Forms.RemoteBrowserFileStreamOptions.MaxBufferSize.set -> void @@ -143,6 +201,11 @@ Microsoft.AspNetCore.Components.Forms.ValidationSummary.AdditionalAttributes.set Microsoft.AspNetCore.Components.Forms.ValidationSummary.Model.get -> object? Microsoft.AspNetCore.Components.Forms.ValidationSummary.Model.set -> void Microsoft.AspNetCore.Components.Forms.ValidationSummary.ValidationSummary() -> void +Microsoft.AspNetCore.Components.HtmlRendering.Infrastructure.StaticHtmlRenderer +Microsoft.AspNetCore.Components.HtmlRendering.Infrastructure.StaticHtmlRenderer.BeginRenderingComponent(Microsoft.AspNetCore.Components.IComponent! component, Microsoft.AspNetCore.Components.ParameterView initialParameters) -> Microsoft.AspNetCore.Components.Web.HtmlRendering.HtmlRootComponent +Microsoft.AspNetCore.Components.HtmlRendering.Infrastructure.StaticHtmlRenderer.BeginRenderingComponent(System.Type! componentType, Microsoft.AspNetCore.Components.ParameterView initialParameters) -> Microsoft.AspNetCore.Components.Web.HtmlRendering.HtmlRootComponent +Microsoft.AspNetCore.Components.HtmlRendering.Infrastructure.StaticHtmlRenderer.StaticHtmlRenderer(System.IServiceProvider! serviceProvider, Microsoft.Extensions.Logging.ILoggerFactory! loggerFactory) -> void +Microsoft.AspNetCore.Components.HtmlRendering.Infrastructure.StaticHtmlRenderer.TryCreateScopeQualifiedEventName(int componentId, string! assignedEventName, out string? scopeQualifiedEventName) -> bool Microsoft.AspNetCore.Components.RenderTree.WebEventDescriptor Microsoft.AspNetCore.Components.RenderTree.WebEventDescriptor.EventFieldInfo.get -> Microsoft.AspNetCore.Components.RenderTree.EventFieldInfo? Microsoft.AspNetCore.Components.RenderTree.WebEventDescriptor.EventFieldInfo.set -> void @@ -184,6 +247,12 @@ Microsoft.AspNetCore.Components.Routing.NavLink.NavLink() -> void Microsoft.AspNetCore.Components.Routing.NavLinkMatch Microsoft.AspNetCore.Components.Routing.NavLinkMatch.All = 1 -> Microsoft.AspNetCore.Components.Routing.NavLinkMatch Microsoft.AspNetCore.Components.Routing.NavLinkMatch.Prefix = 0 -> Microsoft.AspNetCore.Components.Routing.NavLinkMatch +Microsoft.AspNetCore.Components.SupplyParameterFromFormAttribute +Microsoft.AspNetCore.Components.SupplyParameterFromFormAttribute.FormName.get -> string? +Microsoft.AspNetCore.Components.SupplyParameterFromFormAttribute.FormName.set -> void +Microsoft.AspNetCore.Components.SupplyParameterFromFormAttribute.Name.get -> string? +Microsoft.AspNetCore.Components.SupplyParameterFromFormAttribute.Name.set -> void +Microsoft.AspNetCore.Components.SupplyParameterFromFormAttribute.SupplyParameterFromFormAttribute() -> void Microsoft.AspNetCore.Components.Web.BindAttributes Microsoft.AspNetCore.Components.Web.ClipboardEventArgs Microsoft.AspNetCore.Components.Web.ClipboardEventArgs.ClipboardEventArgs() -> void @@ -236,6 +305,24 @@ Microsoft.AspNetCore.Components.Web.HeadContent.ChildContent.set -> void Microsoft.AspNetCore.Components.Web.HeadContent.HeadContent() -> void Microsoft.AspNetCore.Components.Web.HeadOutlet Microsoft.AspNetCore.Components.Web.HeadOutlet.HeadOutlet() -> void +Microsoft.AspNetCore.Components.Web.HtmlRenderer +Microsoft.AspNetCore.Components.Web.HtmlRenderer.BeginRenderingComponent(System.Type! componentType) -> Microsoft.AspNetCore.Components.Web.HtmlRendering.HtmlRootComponent +Microsoft.AspNetCore.Components.Web.HtmlRenderer.BeginRenderingComponent(System.Type! componentType, Microsoft.AspNetCore.Components.ParameterView parameters) -> Microsoft.AspNetCore.Components.Web.HtmlRendering.HtmlRootComponent +Microsoft.AspNetCore.Components.Web.HtmlRenderer.BeginRenderingComponent() -> Microsoft.AspNetCore.Components.Web.HtmlRendering.HtmlRootComponent +Microsoft.AspNetCore.Components.Web.HtmlRenderer.BeginRenderingComponent(Microsoft.AspNetCore.Components.ParameterView parameters) -> Microsoft.AspNetCore.Components.Web.HtmlRendering.HtmlRootComponent +Microsoft.AspNetCore.Components.Web.HtmlRenderer.Dispatcher.get -> Microsoft.AspNetCore.Components.Dispatcher! +Microsoft.AspNetCore.Components.Web.HtmlRenderer.Dispose() -> void +Microsoft.AspNetCore.Components.Web.HtmlRenderer.DisposeAsync() -> System.Threading.Tasks.ValueTask +Microsoft.AspNetCore.Components.Web.HtmlRenderer.HtmlRenderer(System.IServiceProvider! services, Microsoft.Extensions.Logging.ILoggerFactory! loggerFactory) -> void +Microsoft.AspNetCore.Components.Web.HtmlRenderer.RenderComponentAsync(System.Type! componentType) -> System.Threading.Tasks.Task! +Microsoft.AspNetCore.Components.Web.HtmlRenderer.RenderComponentAsync(System.Type! componentType, Microsoft.AspNetCore.Components.ParameterView parameters) -> System.Threading.Tasks.Task! +Microsoft.AspNetCore.Components.Web.HtmlRenderer.RenderComponentAsync() -> System.Threading.Tasks.Task! +Microsoft.AspNetCore.Components.Web.HtmlRenderer.RenderComponentAsync(Microsoft.AspNetCore.Components.ParameterView parameters) -> System.Threading.Tasks.Task! +Microsoft.AspNetCore.Components.Web.HtmlRendering.HtmlRootComponent +Microsoft.AspNetCore.Components.Web.HtmlRendering.HtmlRootComponent.HtmlRootComponent() -> void +Microsoft.AspNetCore.Components.Web.HtmlRendering.HtmlRootComponent.QuiescenceTask.get -> System.Threading.Tasks.Task! +Microsoft.AspNetCore.Components.Web.HtmlRendering.HtmlRootComponent.ToHtmlString() -> string! +Microsoft.AspNetCore.Components.Web.HtmlRendering.HtmlRootComponent.WriteHtmlTo(System.IO.TextWriter! output) -> void Microsoft.AspNetCore.Components.Web.IErrorBoundaryLogger Microsoft.AspNetCore.Components.Web.IErrorBoundaryLogger.LogErrorAsync(System.Exception! exception) -> System.Threading.Tasks.ValueTask Microsoft.AspNetCore.Components.Web.IJSComponentConfiguration @@ -243,6 +330,18 @@ Microsoft.AspNetCore.Components.Web.IJSComponentConfiguration.JSComponents.get - Microsoft.AspNetCore.Components.Web.Infrastructure.JSComponentInterop Microsoft.AspNetCore.Components.Web.Infrastructure.JSComponentInterop.JSComponentInterop(Microsoft.AspNetCore.Components.Web.JSComponentConfigurationStore! configuration) -> void Microsoft.AspNetCore.Components.Web.Infrastructure.JSComponentInterop.SetRootComponentParameters(int componentId, int parameterCount, System.Text.Json.JsonElement parametersJson, System.Text.Json.JsonSerializerOptions! jsonOptions) -> void +Microsoft.AspNetCore.Components.Web.InteractiveAutoRenderMode +Microsoft.AspNetCore.Components.Web.InteractiveAutoRenderMode.InteractiveAutoRenderMode() -> void +Microsoft.AspNetCore.Components.Web.InteractiveAutoRenderMode.InteractiveAutoRenderMode(bool prerender) -> void +Microsoft.AspNetCore.Components.Web.InteractiveAutoRenderMode.Prerender.get -> bool +Microsoft.AspNetCore.Components.Web.InteractiveServerRenderMode +Microsoft.AspNetCore.Components.Web.InteractiveServerRenderMode.InteractiveServerRenderMode() -> void +Microsoft.AspNetCore.Components.Web.InteractiveServerRenderMode.InteractiveServerRenderMode(bool prerender) -> void +Microsoft.AspNetCore.Components.Web.InteractiveServerRenderMode.Prerender.get -> bool +Microsoft.AspNetCore.Components.Web.InteractiveWebAssemblyRenderMode +Microsoft.AspNetCore.Components.Web.InteractiveWebAssemblyRenderMode.InteractiveWebAssemblyRenderMode() -> void +Microsoft.AspNetCore.Components.Web.InteractiveWebAssemblyRenderMode.InteractiveWebAssemblyRenderMode(bool prerender) -> void +Microsoft.AspNetCore.Components.Web.InteractiveWebAssemblyRenderMode.Prerender.get -> bool Microsoft.AspNetCore.Components.Web.JSComponentConfigurationExtensions Microsoft.AspNetCore.Components.Web.JSComponentConfigurationStore Microsoft.AspNetCore.Components.Web.JSComponentConfigurationStore.JSComponentConfigurationStore() -> void @@ -336,6 +435,7 @@ Microsoft.AspNetCore.Components.Web.ProgressEventArgs.Total.get -> long Microsoft.AspNetCore.Components.Web.ProgressEventArgs.Total.set -> void Microsoft.AspNetCore.Components.Web.ProgressEventArgs.Type.get -> string! Microsoft.AspNetCore.Components.Web.ProgressEventArgs.Type.set -> void +Microsoft.AspNetCore.Components.Web.RenderMode Microsoft.AspNetCore.Components.Web.TouchEventArgs Microsoft.AspNetCore.Components.Web.TouchEventArgs.AltKey.get -> bool Microsoft.AspNetCore.Components.Web.TouchEventArgs.AltKey.set -> void @@ -393,6 +493,8 @@ Microsoft.AspNetCore.Components.Web.Virtualization.Virtualize Microsoft.AspNetCore.Components.Web.Virtualization.Virtualize.ChildContent.get -> Microsoft.AspNetCore.Components.RenderFragment? Microsoft.AspNetCore.Components.Web.Virtualization.Virtualize.ChildContent.set -> void Microsoft.AspNetCore.Components.Web.Virtualization.Virtualize.DisposeAsync() -> System.Threading.Tasks.ValueTask +Microsoft.AspNetCore.Components.Web.Virtualization.Virtualize.EmptyContent.get -> Microsoft.AspNetCore.Components.RenderFragment? +Microsoft.AspNetCore.Components.Web.Virtualization.Virtualize.EmptyContent.set -> void Microsoft.AspNetCore.Components.Web.Virtualization.Virtualize.ItemContent.get -> Microsoft.AspNetCore.Components.RenderFragment? Microsoft.AspNetCore.Components.Web.Virtualization.Virtualize.ItemContent.set -> void Microsoft.AspNetCore.Components.Web.Virtualization.Virtualize.Items.get -> System.Collections.Generic.ICollection? @@ -425,6 +527,7 @@ Microsoft.AspNetCore.Components.WebElementReferenceContext Microsoft.AspNetCore.Components.WebElementReferenceContext.WebElementReferenceContext(Microsoft.JSInterop.IJSRuntime! jsRuntime) -> void override Microsoft.AspNetCore.Components.Forms.EditForm.BuildRenderTree(Microsoft.AspNetCore.Components.Rendering.RenderTreeBuilder! builder) -> void override Microsoft.AspNetCore.Components.Forms.EditForm.OnParametersSet() -> void +override Microsoft.AspNetCore.Components.Forms.Editor.OnParametersSet() -> void override Microsoft.AspNetCore.Components.Forms.InputBase.SetParametersAsync(Microsoft.AspNetCore.Components.ParameterView parameters) -> System.Threading.Tasks.Task! override Microsoft.AspNetCore.Components.Forms.InputCheckbox.BuildRenderTree(Microsoft.AspNetCore.Components.Rendering.RenderTreeBuilder! builder) -> void override Microsoft.AspNetCore.Components.Forms.InputCheckbox.TryParseValueFromString(string? value, out bool result, out string? validationErrorMessage) -> bool @@ -434,7 +537,6 @@ override Microsoft.AspNetCore.Components.Forms.InputDate.OnParametersSet override Microsoft.AspNetCore.Components.Forms.InputDate.TryParseValueFromString(string? value, out TValue result, out string? validationErrorMessage) -> bool override Microsoft.AspNetCore.Components.Forms.InputFile.BuildRenderTree(Microsoft.AspNetCore.Components.Rendering.RenderTreeBuilder! builder) -> void override Microsoft.AspNetCore.Components.Forms.InputFile.OnAfterRenderAsync(bool firstRender) -> System.Threading.Tasks.Task! -override Microsoft.AspNetCore.Components.Forms.InputFile.OnInitialized() -> void override Microsoft.AspNetCore.Components.Forms.InputNumber.BuildRenderTree(Microsoft.AspNetCore.Components.Rendering.RenderTreeBuilder! builder) -> void override Microsoft.AspNetCore.Components.Forms.InputNumber.FormatValueAsString(TValue? value) -> string? override Microsoft.AspNetCore.Components.Forms.InputNumber.TryParseValueFromString(string? value, out TValue result, out string? validationErrorMessage) -> bool @@ -454,6 +556,9 @@ override Microsoft.AspNetCore.Components.Forms.ValidationMessage.BuildRe override Microsoft.AspNetCore.Components.Forms.ValidationMessage.OnParametersSet() -> void override Microsoft.AspNetCore.Components.Forms.ValidationSummary.BuildRenderTree(Microsoft.AspNetCore.Components.Rendering.RenderTreeBuilder! builder) -> void override Microsoft.AspNetCore.Components.Forms.ValidationSummary.OnParametersSet() -> void +override Microsoft.AspNetCore.Components.HtmlRendering.Infrastructure.StaticHtmlRenderer.Dispatcher.get -> Microsoft.AspNetCore.Components.Dispatcher! +override Microsoft.AspNetCore.Components.HtmlRendering.Infrastructure.StaticHtmlRenderer.HandleException(System.Exception! exception) -> void +override Microsoft.AspNetCore.Components.HtmlRendering.Infrastructure.StaticHtmlRenderer.UpdateDisplayAsync(in Microsoft.AspNetCore.Components.RenderTree.RenderBatch renderBatch) -> System.Threading.Tasks.Task! override Microsoft.AspNetCore.Components.RenderTree.WebRenderer.Dispose(bool disposing) -> void override Microsoft.AspNetCore.Components.Routing.FocusOnNavigate.OnAfterRenderAsync(bool firstRender) -> System.Threading.Tasks.Task! override Microsoft.AspNetCore.Components.Routing.FocusOnNavigate.OnParametersSet() -> void @@ -468,10 +573,14 @@ static Microsoft.AspNetCore.Components.Forms.BrowserFileExtensions.RequestImageF static Microsoft.AspNetCore.Components.Forms.EditContextFieldClassExtensions.FieldCssClass(this Microsoft.AspNetCore.Components.Forms.EditContext! editContext, in Microsoft.AspNetCore.Components.Forms.FieldIdentifier fieldIdentifier) -> string! static Microsoft.AspNetCore.Components.Forms.EditContextFieldClassExtensions.FieldCssClass(this Microsoft.AspNetCore.Components.Forms.EditContext! editContext, System.Linq.Expressions.Expression!>! accessor) -> string! static Microsoft.AspNetCore.Components.Forms.EditContextFieldClassExtensions.SetFieldCssClassProvider(this Microsoft.AspNetCore.Components.Forms.EditContext! editContext, Microsoft.AspNetCore.Components.Forms.FieldCssClassProvider! fieldCssClassProvider) -> void +static Microsoft.AspNetCore.Components.Forms.Mapping.SupplyParameterFromFormServiceCollectionExtensions.AddSupplyValueFromFormProvider(this Microsoft.Extensions.DependencyInjection.IServiceCollection! serviceCollection) -> Microsoft.Extensions.DependencyInjection.IServiceCollection! static Microsoft.AspNetCore.Components.Web.JSComponentConfigurationExtensions.RegisterForJavaScript(this Microsoft.AspNetCore.Components.Web.IJSComponentConfiguration! configuration, System.Type! componentType, string! identifier) -> void static Microsoft.AspNetCore.Components.Web.JSComponentConfigurationExtensions.RegisterForJavaScript(this Microsoft.AspNetCore.Components.Web.IJSComponentConfiguration! configuration, System.Type! componentType, string! identifier, string! javaScriptInitializer) -> void static Microsoft.AspNetCore.Components.Web.JSComponentConfigurationExtensions.RegisterForJavaScript(this Microsoft.AspNetCore.Components.Web.IJSComponentConfiguration! configuration, string! identifier) -> void static Microsoft.AspNetCore.Components.Web.JSComponentConfigurationExtensions.RegisterForJavaScript(this Microsoft.AspNetCore.Components.Web.IJSComponentConfiguration! configuration, string! identifier, string! javaScriptInitializer) -> void +static Microsoft.AspNetCore.Components.Web.RenderMode.InteractiveAuto.get -> Microsoft.AspNetCore.Components.Web.InteractiveAutoRenderMode! +static Microsoft.AspNetCore.Components.Web.RenderMode.InteractiveServer.get -> Microsoft.AspNetCore.Components.Web.InteractiveServerRenderMode! +static Microsoft.AspNetCore.Components.Web.RenderMode.InteractiveWebAssembly.get -> Microsoft.AspNetCore.Components.Web.InteractiveWebAssemblyRenderMode! static Microsoft.AspNetCore.Components.Web.WebEventCallbackFactoryEventArgsExtensions.Create(this Microsoft.AspNetCore.Components.EventCallbackFactory! factory, object! receiver, System.Action! callback) -> Microsoft.AspNetCore.Components.EventCallback static Microsoft.AspNetCore.Components.Web.WebEventCallbackFactoryEventArgsExtensions.Create(this Microsoft.AspNetCore.Components.EventCallbackFactory! factory, object! receiver, System.Action! callback) -> Microsoft.AspNetCore.Components.EventCallback static Microsoft.AspNetCore.Components.Web.WebEventCallbackFactoryEventArgsExtensions.Create(this Microsoft.AspNetCore.Components.EventCallbackFactory! factory, object! receiver, System.Action! callback) -> Microsoft.AspNetCore.Components.EventCallback @@ -499,5 +608,8 @@ virtual Microsoft.AspNetCore.Components.Forms.InputBase.Dispose(bool dis virtual Microsoft.AspNetCore.Components.Forms.InputBase.FormatValueAsString(TValue? value) -> string? virtual Microsoft.AspNetCore.Components.Forms.ValidationMessage.Dispose(bool disposing) -> void virtual Microsoft.AspNetCore.Components.Forms.ValidationSummary.Dispose(bool disposing) -> void +virtual Microsoft.AspNetCore.Components.HtmlRendering.Infrastructure.StaticHtmlRenderer.RenderChildComponent(System.IO.TextWriter! output, ref Microsoft.AspNetCore.Components.RenderTree.RenderTreeFrame componentFrame) -> void +virtual Microsoft.AspNetCore.Components.HtmlRendering.Infrastructure.StaticHtmlRenderer.WriteComponentHtml(int componentId, System.IO.TextWriter! output) -> void +virtual Microsoft.AspNetCore.Components.RenderTree.WebRenderer.GetWebRendererId() -> int virtual Microsoft.AspNetCore.Components.Web.Infrastructure.JSComponentInterop.AddRootComponent(string! identifier, string! domElementSelector) -> int virtual Microsoft.AspNetCore.Components.Web.Infrastructure.JSComponentInterop.RemoveRootComponent(int componentId) -> void diff --git a/src/Components/Web/src/PublicAPI.Unshipped.txt b/src/Components/Web/src/PublicAPI.Unshipped.txt index 3cd6c0046e72..7dc5c58110bf 100644 --- a/src/Components/Web/src/PublicAPI.Unshipped.txt +++ b/src/Components/Web/src/PublicAPI.Unshipped.txt @@ -1,115 +1 @@ #nullable enable -*REMOVED*override Microsoft.AspNetCore.Components.Forms.InputFile.OnInitialized() -> void -abstract Microsoft.AspNetCore.Components.Forms.AntiforgeryStateProvider.GetAntiforgeryToken() -> Microsoft.AspNetCore.Components.Forms.AntiforgeryRequestToken? -Microsoft.AspNetCore.Components.Forms.AntiforgeryRequestToken -Microsoft.AspNetCore.Components.Forms.AntiforgeryRequestToken.AntiforgeryRequestToken(string! value, string! formFieldName) -> void -Microsoft.AspNetCore.Components.Forms.AntiforgeryRequestToken.FormFieldName.get -> string! -Microsoft.AspNetCore.Components.Forms.AntiforgeryRequestToken.Value.get -> string! -Microsoft.AspNetCore.Components.Forms.AntiforgeryStateProvider -Microsoft.AspNetCore.Components.Forms.AntiforgeryStateProvider.AntiforgeryStateProvider() -> void -Microsoft.AspNetCore.Components.Forms.AntiforgeryToken -Microsoft.AspNetCore.Components.Forms.AntiforgeryToken.AntiforgeryToken() -> void -Microsoft.AspNetCore.Components.Forms.EditForm.Enhance.get -> bool -Microsoft.AspNetCore.Components.Forms.EditForm.Enhance.set -> void -Microsoft.AspNetCore.Components.Forms.Editor -Microsoft.AspNetCore.Components.Forms.Editor.Editor() -> void -Microsoft.AspNetCore.Components.Forms.Editor.NameFor(System.Linq.Expressions.LambdaExpression! expression) -> string! -Microsoft.AspNetCore.Components.Forms.Editor.Value.get -> T -Microsoft.AspNetCore.Components.Forms.Editor.Value.set -> void -Microsoft.AspNetCore.Components.Forms.Editor.ValueChanged.get -> Microsoft.AspNetCore.Components.EventCallback -Microsoft.AspNetCore.Components.Forms.Editor.ValueChanged.set -> void -Microsoft.AspNetCore.Components.Forms.Editor.ValueExpression.get -> System.Linq.Expressions.Expression!>! -Microsoft.AspNetCore.Components.Forms.Editor.ValueExpression.set -> void -Microsoft.AspNetCore.Components.Forms.FormMappingContext -Microsoft.AspNetCore.Components.Forms.FormMappingContext.GetAllErrors() -> System.Collections.Generic.IEnumerable! -Microsoft.AspNetCore.Components.Forms.FormMappingContext.GetAllErrors(string! formName) -> System.Collections.Generic.IEnumerable! -Microsoft.AspNetCore.Components.Forms.FormMappingContext.GetAttemptedValue(string! formName, string! key) -> string? -Microsoft.AspNetCore.Components.Forms.FormMappingContext.GetAttemptedValue(string! key) -> string? -Microsoft.AspNetCore.Components.Forms.FormMappingContext.GetErrors(string! formName, string! key) -> Microsoft.AspNetCore.Components.Forms.Mapping.FormMappingError? -Microsoft.AspNetCore.Components.Forms.FormMappingContext.GetErrors(string! key) -> Microsoft.AspNetCore.Components.Forms.Mapping.FormMappingError? -Microsoft.AspNetCore.Components.Forms.FormMappingContext.MappingScopeName.get -> string! -Microsoft.AspNetCore.Components.Forms.FormMappingScope -Microsoft.AspNetCore.Components.Forms.FormMappingScope.ChildContent.get -> Microsoft.AspNetCore.Components.RenderFragment! -Microsoft.AspNetCore.Components.Forms.FormMappingScope.ChildContent.set -> void -Microsoft.AspNetCore.Components.Forms.FormMappingScope.FormMappingScope() -> void -Microsoft.AspNetCore.Components.Forms.FormMappingScope.Name.get -> string! -Microsoft.AspNetCore.Components.Forms.FormMappingScope.Name.set -> void -Microsoft.AspNetCore.Components.Forms.InputBase.NameAttributeValue.get -> string! -Microsoft.AspNetCore.Components.Forms.EditForm.FormName.get -> string? -Microsoft.AspNetCore.Components.Forms.EditForm.FormName.set -> void -Microsoft.AspNetCore.Components.Forms.Mapping.FormMappingError -Microsoft.AspNetCore.Components.Forms.Mapping.FormMappingError.AttemptedValue.get -> string? -Microsoft.AspNetCore.Components.Forms.Mapping.FormMappingError.Container.get -> object! -Microsoft.AspNetCore.Components.Forms.Mapping.FormMappingError.ErrorMessages.get -> System.Collections.Generic.IReadOnlyList! -Microsoft.AspNetCore.Components.Forms.Mapping.FormMappingError.Name.get -> string! -Microsoft.AspNetCore.Components.Forms.Mapping.FormMappingError.Path.get -> string! -Microsoft.AspNetCore.Components.Forms.Mapping.FormValueMappingContext -Microsoft.AspNetCore.Components.Forms.Mapping.FormValueMappingContext.AcceptFormName.get -> string? -Microsoft.AspNetCore.Components.Forms.Mapping.FormValueMappingContext.AcceptMappingScopeName.get -> string! -Microsoft.AspNetCore.Components.Forms.Mapping.FormValueMappingContext.MapErrorToContainer.get -> System.Action? -Microsoft.AspNetCore.Components.Forms.Mapping.FormValueMappingContext.MapErrorToContainer.set -> void -Microsoft.AspNetCore.Components.Forms.Mapping.FormValueMappingContext.OnError.get -> System.Action? -Microsoft.AspNetCore.Components.Forms.Mapping.FormValueMappingContext.OnError.set -> void -Microsoft.AspNetCore.Components.Forms.Mapping.FormValueMappingContext.ParameterName.get -> string! -Microsoft.AspNetCore.Components.Forms.Mapping.FormValueMappingContext.Result.get -> object? -Microsoft.AspNetCore.Components.Forms.Mapping.FormValueMappingContext.SetResult(object? result) -> void -Microsoft.AspNetCore.Components.Forms.Mapping.FormValueMappingContext.ValueType.get -> System.Type! -Microsoft.AspNetCore.Components.Forms.Mapping.IFormValueMapper -Microsoft.AspNetCore.Components.Forms.Mapping.IFormValueMapper.CanMap(System.Type! valueType, string! scopeName, string? formName) -> bool -Microsoft.AspNetCore.Components.Forms.Mapping.IFormValueMapper.Map(Microsoft.AspNetCore.Components.Forms.Mapping.FormValueMappingContext! context) -> void -Microsoft.AspNetCore.Components.Forms.Mapping.SupplyParameterFromFormServiceCollectionExtensions -Microsoft.AspNetCore.Components.HtmlRendering.Infrastructure.StaticHtmlRenderer -Microsoft.AspNetCore.Components.HtmlRendering.Infrastructure.StaticHtmlRenderer.BeginRenderingComponent(Microsoft.AspNetCore.Components.IComponent! component, Microsoft.AspNetCore.Components.ParameterView initialParameters) -> Microsoft.AspNetCore.Components.Web.HtmlRendering.HtmlRootComponent -Microsoft.AspNetCore.Components.HtmlRendering.Infrastructure.StaticHtmlRenderer.BeginRenderingComponent(System.Type! componentType, Microsoft.AspNetCore.Components.ParameterView initialParameters) -> Microsoft.AspNetCore.Components.Web.HtmlRendering.HtmlRootComponent -Microsoft.AspNetCore.Components.HtmlRendering.Infrastructure.StaticHtmlRenderer.StaticHtmlRenderer(System.IServiceProvider! serviceProvider, Microsoft.Extensions.Logging.ILoggerFactory! loggerFactory) -> void -Microsoft.AspNetCore.Components.HtmlRendering.Infrastructure.StaticHtmlRenderer.TryCreateScopeQualifiedEventName(int componentId, string! assignedEventName, out string? scopeQualifiedEventName) -> bool -Microsoft.AspNetCore.Components.SupplyParameterFromFormAttribute -Microsoft.AspNetCore.Components.SupplyParameterFromFormAttribute.Name.get -> string? -Microsoft.AspNetCore.Components.SupplyParameterFromFormAttribute.Name.set -> void -Microsoft.AspNetCore.Components.SupplyParameterFromFormAttribute.FormName.get -> string? -Microsoft.AspNetCore.Components.SupplyParameterFromFormAttribute.FormName.set -> void -Microsoft.AspNetCore.Components.SupplyParameterFromFormAttribute.SupplyParameterFromFormAttribute() -> void -Microsoft.AspNetCore.Components.Web.HtmlRenderer -Microsoft.AspNetCore.Components.Web.HtmlRenderer.BeginRenderingComponent(System.Type! componentType) -> Microsoft.AspNetCore.Components.Web.HtmlRendering.HtmlRootComponent -Microsoft.AspNetCore.Components.Web.HtmlRenderer.BeginRenderingComponent(System.Type! componentType, Microsoft.AspNetCore.Components.ParameterView parameters) -> Microsoft.AspNetCore.Components.Web.HtmlRendering.HtmlRootComponent -Microsoft.AspNetCore.Components.Web.HtmlRenderer.BeginRenderingComponent() -> Microsoft.AspNetCore.Components.Web.HtmlRendering.HtmlRootComponent -Microsoft.AspNetCore.Components.Web.HtmlRenderer.BeginRenderingComponent(Microsoft.AspNetCore.Components.ParameterView parameters) -> Microsoft.AspNetCore.Components.Web.HtmlRendering.HtmlRootComponent -Microsoft.AspNetCore.Components.Web.HtmlRenderer.Dispatcher.get -> Microsoft.AspNetCore.Components.Dispatcher! -Microsoft.AspNetCore.Components.Web.HtmlRenderer.Dispose() -> void -Microsoft.AspNetCore.Components.Web.HtmlRenderer.DisposeAsync() -> System.Threading.Tasks.ValueTask -Microsoft.AspNetCore.Components.Web.HtmlRenderer.HtmlRenderer(System.IServiceProvider! services, Microsoft.Extensions.Logging.ILoggerFactory! loggerFactory) -> void -Microsoft.AspNetCore.Components.Web.HtmlRenderer.RenderComponentAsync(System.Type! componentType) -> System.Threading.Tasks.Task! -Microsoft.AspNetCore.Components.Web.HtmlRenderer.RenderComponentAsync(System.Type! componentType, Microsoft.AspNetCore.Components.ParameterView parameters) -> System.Threading.Tasks.Task! -Microsoft.AspNetCore.Components.Web.HtmlRenderer.RenderComponentAsync() -> System.Threading.Tasks.Task! -Microsoft.AspNetCore.Components.Web.HtmlRenderer.RenderComponentAsync(Microsoft.AspNetCore.Components.ParameterView parameters) -> System.Threading.Tasks.Task! -Microsoft.AspNetCore.Components.Web.HtmlRendering.HtmlRootComponent -Microsoft.AspNetCore.Components.Web.HtmlRendering.HtmlRootComponent.HtmlRootComponent() -> void -Microsoft.AspNetCore.Components.Web.HtmlRendering.HtmlRootComponent.QuiescenceTask.get -> System.Threading.Tasks.Task! -Microsoft.AspNetCore.Components.Web.HtmlRendering.HtmlRootComponent.ToHtmlString() -> string! -Microsoft.AspNetCore.Components.Web.HtmlRendering.HtmlRootComponent.WriteHtmlTo(System.IO.TextWriter! output) -> void -Microsoft.AspNetCore.Components.Web.InteractiveAutoRenderMode -Microsoft.AspNetCore.Components.Web.InteractiveAutoRenderMode.InteractiveAutoRenderMode() -> void -Microsoft.AspNetCore.Components.Web.InteractiveAutoRenderMode.InteractiveAutoRenderMode(bool prerender) -> void -Microsoft.AspNetCore.Components.Web.InteractiveAutoRenderMode.Prerender.get -> bool -Microsoft.AspNetCore.Components.Web.InteractiveServerRenderMode -Microsoft.AspNetCore.Components.Web.InteractiveServerRenderMode.InteractiveServerRenderMode() -> void -Microsoft.AspNetCore.Components.Web.InteractiveServerRenderMode.InteractiveServerRenderMode(bool prerender) -> void -Microsoft.AspNetCore.Components.Web.InteractiveServerRenderMode.Prerender.get -> bool -Microsoft.AspNetCore.Components.Web.InteractiveWebAssemblyRenderMode -Microsoft.AspNetCore.Components.Web.InteractiveWebAssemblyRenderMode.InteractiveWebAssemblyRenderMode() -> void -Microsoft.AspNetCore.Components.Web.InteractiveWebAssemblyRenderMode.InteractiveWebAssemblyRenderMode(bool prerender) -> void -Microsoft.AspNetCore.Components.Web.InteractiveWebAssemblyRenderMode.Prerender.get -> bool -Microsoft.AspNetCore.Components.Web.RenderMode -override Microsoft.AspNetCore.Components.Forms.Editor.OnParametersSet() -> void -override Microsoft.AspNetCore.Components.HtmlRendering.Infrastructure.StaticHtmlRenderer.Dispatcher.get -> Microsoft.AspNetCore.Components.Dispatcher! -override Microsoft.AspNetCore.Components.HtmlRendering.Infrastructure.StaticHtmlRenderer.HandleException(System.Exception! exception) -> void -override Microsoft.AspNetCore.Components.HtmlRendering.Infrastructure.StaticHtmlRenderer.UpdateDisplayAsync(in Microsoft.AspNetCore.Components.RenderTree.RenderBatch renderBatch) -> System.Threading.Tasks.Task! -static Microsoft.AspNetCore.Components.Forms.Mapping.SupplyParameterFromFormServiceCollectionExtensions.AddSupplyValueFromFormProvider(this Microsoft.Extensions.DependencyInjection.IServiceCollection! serviceCollection) -> Microsoft.Extensions.DependencyInjection.IServiceCollection! -static Microsoft.AspNetCore.Components.Web.RenderMode.InteractiveAuto.get -> Microsoft.AspNetCore.Components.Web.InteractiveAutoRenderMode! -static Microsoft.AspNetCore.Components.Web.RenderMode.InteractiveServer.get -> Microsoft.AspNetCore.Components.Web.InteractiveServerRenderMode! -static Microsoft.AspNetCore.Components.Web.RenderMode.InteractiveWebAssembly.get -> Microsoft.AspNetCore.Components.Web.InteractiveWebAssemblyRenderMode! -virtual Microsoft.AspNetCore.Components.HtmlRendering.Infrastructure.StaticHtmlRenderer.RenderChildComponent(System.IO.TextWriter! output, ref Microsoft.AspNetCore.Components.RenderTree.RenderTreeFrame componentFrame) -> void -virtual Microsoft.AspNetCore.Components.HtmlRendering.Infrastructure.StaticHtmlRenderer.WriteComponentHtml(int componentId, System.IO.TextWriter! output) -> void -virtual Microsoft.AspNetCore.Components.RenderTree.WebRenderer.GetWebRendererId() -> int -Microsoft.AspNetCore.Components.Web.Virtualization.Virtualize.EmptyContent.get -> Microsoft.AspNetCore.Components.RenderFragment? -Microsoft.AspNetCore.Components.Web.Virtualization.Virtualize.EmptyContent.set -> void diff --git a/src/Components/WebAssembly/Server/src/PublicAPI.Shipped.txt b/src/Components/WebAssembly/Server/src/PublicAPI.Shipped.txt index f0bdf2976979..853b023e8399 100644 --- a/src/Components/WebAssembly/Server/src/PublicAPI.Shipped.txt +++ b/src/Components/WebAssembly/Server/src/PublicAPI.Shipped.txt @@ -6,9 +6,18 @@ ~static Microsoft.AspNetCore.Builder.WebAssemblyNetDebugProxyAppBuilderExtensions.UseWebAssemblyDebugging(this Microsoft.AspNetCore.Builder.IApplicationBuilder app) -> void Microsoft.AspNetCore.Builder.ComponentsWebAssemblyApplicationBuilderExtensions Microsoft.AspNetCore.Builder.WebAssemblyNetDebugProxyAppBuilderExtensions +Microsoft.AspNetCore.Builder.WebAssemblyRazorComponentsEndpointConventionBuilderExtensions Microsoft.AspNetCore.Components.WebAssembly.Server.TargetPickerUi Microsoft.AspNetCore.Components.WebAssembly.Server.TargetPickerUi.Display(Microsoft.AspNetCore.Http.HttpContext! context) -> System.Threading.Tasks.Task! +Microsoft.AspNetCore.Components.WebAssembly.Server.TargetPickerUi.DisplayFirefox(Microsoft.AspNetCore.Http.HttpContext! context) -> System.Threading.Tasks.Task! Microsoft.AspNetCore.Components.WebAssembly.Server.TargetPickerUi.TargetPickerUi(string! debugProxyUrl, string! devToolsHost) -> void +Microsoft.AspNetCore.Components.WebAssembly.Server.WebAssemblyComponentsEndpointOptions +Microsoft.AspNetCore.Components.WebAssembly.Server.WebAssemblyComponentsEndpointOptions.PathPrefix.get -> Microsoft.AspNetCore.Http.PathString +Microsoft.AspNetCore.Components.WebAssembly.Server.WebAssemblyComponentsEndpointOptions.PathPrefix.set -> void +Microsoft.AspNetCore.Components.WebAssembly.Server.WebAssemblyComponentsEndpointOptions.WebAssemblyComponentsEndpointOptions() -> void +Microsoft.Extensions.DependencyInjection.WebAssemblyRazorComponentsBuilderExtensions static Microsoft.AspNetCore.Builder.ComponentsWebAssemblyApplicationBuilderExtensions.UseBlazorFrameworkFiles(this Microsoft.AspNetCore.Builder.IApplicationBuilder! applicationBuilder) -> Microsoft.AspNetCore.Builder.IApplicationBuilder! static Microsoft.AspNetCore.Builder.ComponentsWebAssemblyApplicationBuilderExtensions.UseBlazorFrameworkFiles(this Microsoft.AspNetCore.Builder.IApplicationBuilder! builder, Microsoft.AspNetCore.Http.PathString pathPrefix) -> Microsoft.AspNetCore.Builder.IApplicationBuilder! static Microsoft.AspNetCore.Builder.WebAssemblyNetDebugProxyAppBuilderExtensions.UseWebAssemblyDebugging(this Microsoft.AspNetCore.Builder.IApplicationBuilder! app) -> void +static Microsoft.AspNetCore.Builder.WebAssemblyRazorComponentsEndpointConventionBuilderExtensions.AddInteractiveWebAssemblyRenderMode(this Microsoft.AspNetCore.Builder.RazorComponentsEndpointConventionBuilder! builder, System.Action? callback = null) -> Microsoft.AspNetCore.Builder.RazorComponentsEndpointConventionBuilder! +static Microsoft.Extensions.DependencyInjection.WebAssemblyRazorComponentsBuilderExtensions.AddInteractiveWebAssemblyComponents(this Microsoft.Extensions.DependencyInjection.IRazorComponentsBuilder! builder) -> Microsoft.Extensions.DependencyInjection.IRazorComponentsBuilder! diff --git a/src/Components/WebAssembly/Server/src/PublicAPI.Unshipped.txt b/src/Components/WebAssembly/Server/src/PublicAPI.Unshipped.txt index fc6526979e03..7dc5c58110bf 100644 --- a/src/Components/WebAssembly/Server/src/PublicAPI.Unshipped.txt +++ b/src/Components/WebAssembly/Server/src/PublicAPI.Unshipped.txt @@ -1,10 +1 @@ #nullable enable -Microsoft.AspNetCore.Builder.WebAssemblyRazorComponentsEndpointConventionBuilderExtensions -Microsoft.AspNetCore.Components.WebAssembly.Server.TargetPickerUi.DisplayFirefox(Microsoft.AspNetCore.Http.HttpContext! context) -> System.Threading.Tasks.Task! -Microsoft.AspNetCore.Components.WebAssembly.Server.WebAssemblyComponentsEndpointOptions -Microsoft.AspNetCore.Components.WebAssembly.Server.WebAssemblyComponentsEndpointOptions.PathPrefix.get -> Microsoft.AspNetCore.Http.PathString -Microsoft.AspNetCore.Components.WebAssembly.Server.WebAssemblyComponentsEndpointOptions.PathPrefix.set -> void -Microsoft.AspNetCore.Components.WebAssembly.Server.WebAssemblyComponentsEndpointOptions.WebAssemblyComponentsEndpointOptions() -> void -Microsoft.Extensions.DependencyInjection.WebAssemblyRazorComponentsBuilderExtensions -static Microsoft.AspNetCore.Builder.WebAssemblyRazorComponentsEndpointConventionBuilderExtensions.AddInteractiveWebAssemblyRenderMode(this Microsoft.AspNetCore.Builder.RazorComponentsEndpointConventionBuilder! builder, System.Action? callback = null) -> Microsoft.AspNetCore.Builder.RazorComponentsEndpointConventionBuilder! -static Microsoft.Extensions.DependencyInjection.WebAssemblyRazorComponentsBuilderExtensions.AddInteractiveWebAssemblyComponents(this Microsoft.Extensions.DependencyInjection.IRazorComponentsBuilder! builder) -> Microsoft.Extensions.DependencyInjection.IRazorComponentsBuilder! diff --git a/src/Components/WebAssembly/WebAssembly.Authentication/src/PublicAPI.Shipped.txt b/src/Components/WebAssembly/WebAssembly.Authentication/src/PublicAPI.Shipped.txt index d4050a853e50..3ce1e11f08d3 100644 --- a/src/Components/WebAssembly/WebAssembly.Authentication/src/PublicAPI.Shipped.txt +++ b/src/Components/WebAssembly/WebAssembly.Authentication/src/PublicAPI.Shipped.txt @@ -8,34 +8,74 @@ const Microsoft.AspNetCore.Components.WebAssembly.Authentication.RemoteAuthentic const Microsoft.AspNetCore.Components.WebAssembly.Authentication.RemoteAuthenticationActions.LogOutSucceeded = "logged-out" -> string! const Microsoft.AspNetCore.Components.WebAssembly.Authentication.RemoteAuthenticationActions.Profile = "profile" -> string! const Microsoft.AspNetCore.Components.WebAssembly.Authentication.RemoteAuthenticationActions.Register = "register" -> string! +Microsoft.AspNetCore.Components.WebAssembly.Authentication.AccessToken +Microsoft.AspNetCore.Components.WebAssembly.Authentication.AccessToken.AccessToken() -> void +Microsoft.AspNetCore.Components.WebAssembly.Authentication.AccessToken.Expires.get -> System.DateTimeOffset +Microsoft.AspNetCore.Components.WebAssembly.Authentication.AccessToken.Expires.set -> void Microsoft.AspNetCore.Components.WebAssembly.Authentication.AccessToken.GrantedScopes.get -> System.Collections.Generic.IReadOnlyList! Microsoft.AspNetCore.Components.WebAssembly.Authentication.AccessToken.GrantedScopes.set -> void Microsoft.AspNetCore.Components.WebAssembly.Authentication.AccessToken.Value.get -> string! Microsoft.AspNetCore.Components.WebAssembly.Authentication.AccessToken.Value.set -> void +Microsoft.AspNetCore.Components.WebAssembly.Authentication.AccessTokenNotAvailableException Microsoft.AspNetCore.Components.WebAssembly.Authentication.AccessTokenNotAvailableException.AccessTokenNotAvailableException(Microsoft.AspNetCore.Components.NavigationManager! navigation, Microsoft.AspNetCore.Components.WebAssembly.Authentication.AccessTokenResult! tokenResult, System.Collections.Generic.IEnumerable? scopes) -> void +Microsoft.AspNetCore.Components.WebAssembly.Authentication.AccessTokenNotAvailableException.Redirect() -> void +Microsoft.AspNetCore.Components.WebAssembly.Authentication.AccessTokenNotAvailableException.Redirect(System.Action! configureInteractionOptions) -> void +Microsoft.AspNetCore.Components.WebAssembly.Authentication.AccessTokenRequestOptions +Microsoft.AspNetCore.Components.WebAssembly.Authentication.AccessTokenRequestOptions.AccessTokenRequestOptions() -> void Microsoft.AspNetCore.Components.WebAssembly.Authentication.AccessTokenRequestOptions.ReturnUrl.get -> string? Microsoft.AspNetCore.Components.WebAssembly.Authentication.AccessTokenRequestOptions.ReturnUrl.set -> void Microsoft.AspNetCore.Components.WebAssembly.Authentication.AccessTokenRequestOptions.Scopes.get -> System.Collections.Generic.IEnumerable? Microsoft.AspNetCore.Components.WebAssembly.Authentication.AccessTokenRequestOptions.Scopes.set -> void +Microsoft.AspNetCore.Components.WebAssembly.Authentication.AccessTokenResult Microsoft.AspNetCore.Components.WebAssembly.Authentication.AccessTokenResult.AccessTokenResult(Microsoft.AspNetCore.Components.WebAssembly.Authentication.AccessTokenResultStatus status, Microsoft.AspNetCore.Components.WebAssembly.Authentication.AccessToken! token, string! redirectUrl) -> void +Microsoft.AspNetCore.Components.WebAssembly.Authentication.AccessTokenResult.AccessTokenResult(Microsoft.AspNetCore.Components.WebAssembly.Authentication.AccessTokenResultStatus status, Microsoft.AspNetCore.Components.WebAssembly.Authentication.AccessToken! token, string? interactiveRequestUrl, Microsoft.AspNetCore.Components.WebAssembly.Authentication.InteractiveRequestOptions? interactiveRequest) -> void +Microsoft.AspNetCore.Components.WebAssembly.Authentication.AccessTokenResult.InteractionOptions.get -> Microsoft.AspNetCore.Components.WebAssembly.Authentication.InteractiveRequestOptions? +Microsoft.AspNetCore.Components.WebAssembly.Authentication.AccessTokenResult.InteractiveRequestUrl.get -> string? Microsoft.AspNetCore.Components.WebAssembly.Authentication.AccessTokenResult.RedirectUrl.get -> string? +Microsoft.AspNetCore.Components.WebAssembly.Authentication.AccessTokenResult.Status.get -> Microsoft.AspNetCore.Components.WebAssembly.Authentication.AccessTokenResultStatus Microsoft.AspNetCore.Components.WebAssembly.Authentication.AccessTokenResult.TryGetToken(out Microsoft.AspNetCore.Components.WebAssembly.Authentication.AccessToken? accessToken) -> bool +Microsoft.AspNetCore.Components.WebAssembly.Authentication.AccessTokenResultStatus +Microsoft.AspNetCore.Components.WebAssembly.Authentication.AccessTokenResultStatus.RequiresRedirect = 1 -> Microsoft.AspNetCore.Components.WebAssembly.Authentication.AccessTokenResultStatus +Microsoft.AspNetCore.Components.WebAssembly.Authentication.AccessTokenResultStatus.Success = 0 -> Microsoft.AspNetCore.Components.WebAssembly.Authentication.AccessTokenResultStatus Microsoft.AspNetCore.Components.WebAssembly.Authentication.AccountClaimsPrincipalFactory Microsoft.AspNetCore.Components.WebAssembly.Authentication.AccountClaimsPrincipalFactory.AccountClaimsPrincipalFactory(Microsoft.AspNetCore.Components.WebAssembly.Authentication.Internal.IAccessTokenProviderAccessor! accessor) -> void Microsoft.AspNetCore.Components.WebAssembly.Authentication.AccountClaimsPrincipalFactory.TokenProvider.get -> Microsoft.AspNetCore.Components.WebAssembly.Authentication.IAccessTokenProvider! +Microsoft.AspNetCore.Components.WebAssembly.Authentication.ApiAuthorizationProviderOptions +Microsoft.AspNetCore.Components.WebAssembly.Authentication.ApiAuthorizationProviderOptions.ApiAuthorizationProviderOptions() -> void Microsoft.AspNetCore.Components.WebAssembly.Authentication.ApiAuthorizationProviderOptions.ConfigurationEndpoint.get -> string? Microsoft.AspNetCore.Components.WebAssembly.Authentication.ApiAuthorizationProviderOptions.ConfigurationEndpoint.set -> void +Microsoft.AspNetCore.Components.WebAssembly.Authentication.AuthorizationMessageHandler Microsoft.AspNetCore.Components.WebAssembly.Authentication.AuthorizationMessageHandler.AuthorizationMessageHandler(Microsoft.AspNetCore.Components.WebAssembly.Authentication.IAccessTokenProvider! provider, Microsoft.AspNetCore.Components.NavigationManager! navigation) -> void Microsoft.AspNetCore.Components.WebAssembly.Authentication.AuthorizationMessageHandler.ConfigureHandler(System.Collections.Generic.IEnumerable! authorizedUrls, System.Collections.Generic.IEnumerable? scopes = null, string? returnUrl = null) -> Microsoft.AspNetCore.Components.WebAssembly.Authentication.AuthorizationMessageHandler! +Microsoft.AspNetCore.Components.WebAssembly.Authentication.BaseAddressAuthorizationMessageHandler Microsoft.AspNetCore.Components.WebAssembly.Authentication.BaseAddressAuthorizationMessageHandler.BaseAddressAuthorizationMessageHandler(Microsoft.AspNetCore.Components.WebAssembly.Authentication.IAccessTokenProvider! provider, Microsoft.AspNetCore.Components.NavigationManager! navigationManager) -> void +Microsoft.AspNetCore.Components.WebAssembly.Authentication.IAccessTokenProvider Microsoft.AspNetCore.Components.WebAssembly.Authentication.IAccessTokenProvider.RequestAccessToken() -> System.Threading.Tasks.ValueTask Microsoft.AspNetCore.Components.WebAssembly.Authentication.IAccessTokenProvider.RequestAccessToken(Microsoft.AspNetCore.Components.WebAssembly.Authentication.AccessTokenRequestOptions! options) -> System.Threading.Tasks.ValueTask +Microsoft.AspNetCore.Components.WebAssembly.Authentication.InteractionType +Microsoft.AspNetCore.Components.WebAssembly.Authentication.InteractionType.GetToken = 1 -> Microsoft.AspNetCore.Components.WebAssembly.Authentication.InteractionType +Microsoft.AspNetCore.Components.WebAssembly.Authentication.InteractionType.SignIn = 0 -> Microsoft.AspNetCore.Components.WebAssembly.Authentication.InteractionType +Microsoft.AspNetCore.Components.WebAssembly.Authentication.InteractionType.SignOut = 2 -> Microsoft.AspNetCore.Components.WebAssembly.Authentication.InteractionType +Microsoft.AspNetCore.Components.WebAssembly.Authentication.InteractiveRequestOptions +Microsoft.AspNetCore.Components.WebAssembly.Authentication.InteractiveRequestOptions.Interaction.get -> Microsoft.AspNetCore.Components.WebAssembly.Authentication.InteractionType +Microsoft.AspNetCore.Components.WebAssembly.Authentication.InteractiveRequestOptions.Interaction.init -> void +Microsoft.AspNetCore.Components.WebAssembly.Authentication.InteractiveRequestOptions.InteractiveRequestOptions() -> void +Microsoft.AspNetCore.Components.WebAssembly.Authentication.InteractiveRequestOptions.ReturnUrl.get -> string! +Microsoft.AspNetCore.Components.WebAssembly.Authentication.InteractiveRequestOptions.ReturnUrl.init -> void +Microsoft.AspNetCore.Components.WebAssembly.Authentication.InteractiveRequestOptions.Scopes.get -> System.Collections.Generic.IEnumerable! +Microsoft.AspNetCore.Components.WebAssembly.Authentication.InteractiveRequestOptions.Scopes.init -> void +Microsoft.AspNetCore.Components.WebAssembly.Authentication.InteractiveRequestOptions.TryAddAdditionalParameter(string! name, TValue value) -> bool +Microsoft.AspNetCore.Components.WebAssembly.Authentication.InteractiveRequestOptions.TryGetAdditionalParameter(string! name, out TValue? value) -> bool +Microsoft.AspNetCore.Components.WebAssembly.Authentication.InteractiveRequestOptions.TryRemoveAdditionalParameter(string! name) -> bool +Microsoft.AspNetCore.Components.WebAssembly.Authentication.Internal.IAccessTokenProviderAccessor Microsoft.AspNetCore.Components.WebAssembly.Authentication.Internal.IAccessTokenProviderAccessor.TokenProvider.get -> Microsoft.AspNetCore.Components.WebAssembly.Authentication.IAccessTokenProvider! Microsoft.AspNetCore.Components.WebAssembly.Authentication.IRemoteAuthenticationService Microsoft.AspNetCore.Components.WebAssembly.Authentication.IRemoteAuthenticationService.CompleteSignInAsync(Microsoft.AspNetCore.Components.WebAssembly.Authentication.RemoteAuthenticationContext! context) -> System.Threading.Tasks.Task!>! Microsoft.AspNetCore.Components.WebAssembly.Authentication.IRemoteAuthenticationService.CompleteSignOutAsync(Microsoft.AspNetCore.Components.WebAssembly.Authentication.RemoteAuthenticationContext! context) -> System.Threading.Tasks.Task!>! Microsoft.AspNetCore.Components.WebAssembly.Authentication.IRemoteAuthenticationService.SignInAsync(Microsoft.AspNetCore.Components.WebAssembly.Authentication.RemoteAuthenticationContext! context) -> System.Threading.Tasks.Task!>! Microsoft.AspNetCore.Components.WebAssembly.Authentication.IRemoteAuthenticationService.SignOutAsync(Microsoft.AspNetCore.Components.WebAssembly.Authentication.RemoteAuthenticationContext! context) -> System.Threading.Tasks.Task!>! +Microsoft.AspNetCore.Components.WebAssembly.Authentication.NavigationManagerExtensions +Microsoft.AspNetCore.Components.WebAssembly.Authentication.OidcProviderOptions Microsoft.AspNetCore.Components.WebAssembly.Authentication.OidcProviderOptions.AdditionalProviderParameters.get -> System.Collections.Generic.IDictionary! Microsoft.AspNetCore.Components.WebAssembly.Authentication.OidcProviderOptions.Authority.get -> string? Microsoft.AspNetCore.Components.WebAssembly.Authentication.OidcProviderOptions.Authority.set -> void @@ -44,6 +84,7 @@ Microsoft.AspNetCore.Components.WebAssembly.Authentication.OidcProviderOptions.C Microsoft.AspNetCore.Components.WebAssembly.Authentication.OidcProviderOptions.DefaultScopes.get -> System.Collections.Generic.IList! Microsoft.AspNetCore.Components.WebAssembly.Authentication.OidcProviderOptions.MetadataUrl.get -> string? Microsoft.AspNetCore.Components.WebAssembly.Authentication.OidcProviderOptions.MetadataUrl.set -> void +Microsoft.AspNetCore.Components.WebAssembly.Authentication.OidcProviderOptions.OidcProviderOptions() -> void Microsoft.AspNetCore.Components.WebAssembly.Authentication.OidcProviderOptions.PostLogoutRedirectUri.get -> string? Microsoft.AspNetCore.Components.WebAssembly.Authentication.OidcProviderOptions.PostLogoutRedirectUri.set -> void Microsoft.AspNetCore.Components.WebAssembly.Authentication.OidcProviderOptions.RedirectUri.get -> string? @@ -52,6 +93,9 @@ Microsoft.AspNetCore.Components.WebAssembly.Authentication.OidcProviderOptions.R Microsoft.AspNetCore.Components.WebAssembly.Authentication.OidcProviderOptions.ResponseMode.set -> void Microsoft.AspNetCore.Components.WebAssembly.Authentication.OidcProviderOptions.ResponseType.get -> string? Microsoft.AspNetCore.Components.WebAssembly.Authentication.OidcProviderOptions.ResponseType.set -> void +Microsoft.AspNetCore.Components.WebAssembly.Authentication.RemoteAuthenticationActions +Microsoft.AspNetCore.Components.WebAssembly.Authentication.RemoteAuthenticationActions.RemoteAuthenticationActions() -> void +Microsoft.AspNetCore.Components.WebAssembly.Authentication.RemoteAuthenticationApplicationPathsOptions Microsoft.AspNetCore.Components.WebAssembly.Authentication.RemoteAuthenticationApplicationPathsOptions.LogInCallbackPath.get -> string! Microsoft.AspNetCore.Components.WebAssembly.Authentication.RemoteAuthenticationApplicationPathsOptions.LogInCallbackPath.set -> void Microsoft.AspNetCore.Components.WebAssembly.Authentication.RemoteAuthenticationApplicationPathsOptions.LogInFailedPath.get -> string! @@ -70,38 +114,62 @@ Microsoft.AspNetCore.Components.WebAssembly.Authentication.RemoteAuthenticationA Microsoft.AspNetCore.Components.WebAssembly.Authentication.RemoteAuthenticationApplicationPathsOptions.ProfilePath.set -> void Microsoft.AspNetCore.Components.WebAssembly.Authentication.RemoteAuthenticationApplicationPathsOptions.RegisterPath.get -> string! Microsoft.AspNetCore.Components.WebAssembly.Authentication.RemoteAuthenticationApplicationPathsOptions.RegisterPath.set -> void +Microsoft.AspNetCore.Components.WebAssembly.Authentication.RemoteAuthenticationApplicationPathsOptions.RemoteAuthenticationApplicationPathsOptions() -> void Microsoft.AspNetCore.Components.WebAssembly.Authentication.RemoteAuthenticationApplicationPathsOptions.RemoteProfilePath.get -> string? Microsoft.AspNetCore.Components.WebAssembly.Authentication.RemoteAuthenticationApplicationPathsOptions.RemoteProfilePath.set -> void Microsoft.AspNetCore.Components.WebAssembly.Authentication.RemoteAuthenticationApplicationPathsOptions.RemoteRegisterPath.get -> string? Microsoft.AspNetCore.Components.WebAssembly.Authentication.RemoteAuthenticationApplicationPathsOptions.RemoteRegisterPath.set -> void Microsoft.AspNetCore.Components.WebAssembly.Authentication.RemoteAuthenticationContext +Microsoft.AspNetCore.Components.WebAssembly.Authentication.RemoteAuthenticationContext.InteractiveRequest.get -> Microsoft.AspNetCore.Components.WebAssembly.Authentication.InteractiveRequestOptions? +Microsoft.AspNetCore.Components.WebAssembly.Authentication.RemoteAuthenticationContext.InteractiveRequest.set -> void +Microsoft.AspNetCore.Components.WebAssembly.Authentication.RemoteAuthenticationContext.RemoteAuthenticationContext() -> void Microsoft.AspNetCore.Components.WebAssembly.Authentication.RemoteAuthenticationContext.State.get -> TRemoteAuthenticationState? Microsoft.AspNetCore.Components.WebAssembly.Authentication.RemoteAuthenticationContext.State.set -> void Microsoft.AspNetCore.Components.WebAssembly.Authentication.RemoteAuthenticationContext.Url.get -> string? Microsoft.AspNetCore.Components.WebAssembly.Authentication.RemoteAuthenticationContext.Url.set -> void +Microsoft.AspNetCore.Components.WebAssembly.Authentication.RemoteAuthenticationDefaults +Microsoft.AspNetCore.Components.WebAssembly.Authentication.RemoteAuthenticationDefaults.RemoteAuthenticationDefaults() -> void +Microsoft.AspNetCore.Components.WebAssembly.Authentication.RemoteAuthenticationOptions Microsoft.AspNetCore.Components.WebAssembly.Authentication.RemoteAuthenticationOptions.AuthenticationPaths.get -> Microsoft.AspNetCore.Components.WebAssembly.Authentication.RemoteAuthenticationApplicationPathsOptions! +Microsoft.AspNetCore.Components.WebAssembly.Authentication.RemoteAuthenticationOptions.ProviderOptions.get -> TRemoteAuthenticationProviderOptions +Microsoft.AspNetCore.Components.WebAssembly.Authentication.RemoteAuthenticationOptions.RemoteAuthenticationOptions() -> void Microsoft.AspNetCore.Components.WebAssembly.Authentication.RemoteAuthenticationOptions.UserOptions.get -> Microsoft.AspNetCore.Components.WebAssembly.Authentication.RemoteAuthenticationUserOptions! Microsoft.AspNetCore.Components.WebAssembly.Authentication.RemoteAuthenticationResult Microsoft.AspNetCore.Components.WebAssembly.Authentication.RemoteAuthenticationResult.ErrorMessage.get -> string? Microsoft.AspNetCore.Components.WebAssembly.Authentication.RemoteAuthenticationResult.ErrorMessage.set -> void +Microsoft.AspNetCore.Components.WebAssembly.Authentication.RemoteAuthenticationResult.RemoteAuthenticationResult() -> void Microsoft.AspNetCore.Components.WebAssembly.Authentication.RemoteAuthenticationResult.State.get -> TRemoteAuthenticationState? Microsoft.AspNetCore.Components.WebAssembly.Authentication.RemoteAuthenticationResult.State.set -> void +Microsoft.AspNetCore.Components.WebAssembly.Authentication.RemoteAuthenticationResult.Status.get -> Microsoft.AspNetCore.Components.WebAssembly.Authentication.RemoteAuthenticationStatus +Microsoft.AspNetCore.Components.WebAssembly.Authentication.RemoteAuthenticationResult.Status.set -> void Microsoft.AspNetCore.Components.WebAssembly.Authentication.RemoteAuthenticationService Microsoft.AspNetCore.Components.WebAssembly.Authentication.RemoteAuthenticationService.AccountClaimsPrincipalFactory.get -> Microsoft.AspNetCore.Components.WebAssembly.Authentication.AccountClaimsPrincipalFactory! Microsoft.AspNetCore.Components.WebAssembly.Authentication.RemoteAuthenticationService.JsRuntime.get -> Microsoft.JSInterop.IJSRuntime! Microsoft.AspNetCore.Components.WebAssembly.Authentication.RemoteAuthenticationService.Navigation.get -> Microsoft.AspNetCore.Components.NavigationManager! Microsoft.AspNetCore.Components.WebAssembly.Authentication.RemoteAuthenticationService.Options.get -> Microsoft.AspNetCore.Components.WebAssembly.Authentication.RemoteAuthenticationOptions! Microsoft.AspNetCore.Components.WebAssembly.Authentication.RemoteAuthenticationService.RemoteAuthenticationService(Microsoft.JSInterop.IJSRuntime! jsRuntime, Microsoft.Extensions.Options.IOptionsSnapshot!>! options, Microsoft.AspNetCore.Components.NavigationManager! navigation, Microsoft.AspNetCore.Components.WebAssembly.Authentication.AccountClaimsPrincipalFactory! accountClaimsPrincipalFactory) -> void +Microsoft.AspNetCore.Components.WebAssembly.Authentication.RemoteAuthenticationService.RemoteAuthenticationService(Microsoft.JSInterop.IJSRuntime! jsRuntime, Microsoft.Extensions.Options.IOptionsSnapshot!>! options, Microsoft.AspNetCore.Components.NavigationManager! navigation, Microsoft.AspNetCore.Components.WebAssembly.Authentication.AccountClaimsPrincipalFactory! accountClaimsPrincipalFactory, Microsoft.Extensions.Logging.ILogger!>? logger) -> void +Microsoft.AspNetCore.Components.WebAssembly.Authentication.RemoteAuthenticationState +Microsoft.AspNetCore.Components.WebAssembly.Authentication.RemoteAuthenticationState.RemoteAuthenticationState() -> void Microsoft.AspNetCore.Components.WebAssembly.Authentication.RemoteAuthenticationState.ReturnUrl.get -> string? Microsoft.AspNetCore.Components.WebAssembly.Authentication.RemoteAuthenticationState.ReturnUrl.set -> void +Microsoft.AspNetCore.Components.WebAssembly.Authentication.RemoteAuthenticationStatus +Microsoft.AspNetCore.Components.WebAssembly.Authentication.RemoteAuthenticationStatus.Failure = 2 -> Microsoft.AspNetCore.Components.WebAssembly.Authentication.RemoteAuthenticationStatus +Microsoft.AspNetCore.Components.WebAssembly.Authentication.RemoteAuthenticationStatus.OperationCompleted = 3 -> Microsoft.AspNetCore.Components.WebAssembly.Authentication.RemoteAuthenticationStatus +Microsoft.AspNetCore.Components.WebAssembly.Authentication.RemoteAuthenticationStatus.Redirect = 0 -> Microsoft.AspNetCore.Components.WebAssembly.Authentication.RemoteAuthenticationStatus +Microsoft.AspNetCore.Components.WebAssembly.Authentication.RemoteAuthenticationStatus.Success = 1 -> Microsoft.AspNetCore.Components.WebAssembly.Authentication.RemoteAuthenticationStatus +Microsoft.AspNetCore.Components.WebAssembly.Authentication.RemoteAuthenticationUserOptions Microsoft.AspNetCore.Components.WebAssembly.Authentication.RemoteAuthenticationUserOptions.AuthenticationType.get -> string? Microsoft.AspNetCore.Components.WebAssembly.Authentication.RemoteAuthenticationUserOptions.AuthenticationType.set -> void Microsoft.AspNetCore.Components.WebAssembly.Authentication.RemoteAuthenticationUserOptions.NameClaim.get -> string! Microsoft.AspNetCore.Components.WebAssembly.Authentication.RemoteAuthenticationUserOptions.NameClaim.set -> void +Microsoft.AspNetCore.Components.WebAssembly.Authentication.RemoteAuthenticationUserOptions.RemoteAuthenticationUserOptions() -> void Microsoft.AspNetCore.Components.WebAssembly.Authentication.RemoteAuthenticationUserOptions.RoleClaim.get -> string? Microsoft.AspNetCore.Components.WebAssembly.Authentication.RemoteAuthenticationUserOptions.RoleClaim.set -> void Microsoft.AspNetCore.Components.WebAssembly.Authentication.RemoteAuthenticationUserOptions.ScopeClaim.get -> string? Microsoft.AspNetCore.Components.WebAssembly.Authentication.RemoteAuthenticationUserOptions.ScopeClaim.set -> void +Microsoft.AspNetCore.Components.WebAssembly.Authentication.RemoteAuthenticatorView +Microsoft.AspNetCore.Components.WebAssembly.Authentication.RemoteAuthenticatorView.RemoteAuthenticatorView() -> void Microsoft.AspNetCore.Components.WebAssembly.Authentication.RemoteAuthenticatorViewCore Microsoft.AspNetCore.Components.WebAssembly.Authentication.RemoteAuthenticatorViewCore.Action.get -> string? Microsoft.AspNetCore.Components.WebAssembly.Authentication.RemoteAuthenticatorViewCore.Action.set -> void @@ -129,17 +197,27 @@ Microsoft.AspNetCore.Components.WebAssembly.Authentication.RemoteAuthenticatorVi Microsoft.AspNetCore.Components.WebAssembly.Authentication.RemoteAuthenticatorViewCore.OnLogOutSucceeded.set -> void Microsoft.AspNetCore.Components.WebAssembly.Authentication.RemoteAuthenticatorViewCore.Registering.get -> Microsoft.AspNetCore.Components.RenderFragment? Microsoft.AspNetCore.Components.WebAssembly.Authentication.RemoteAuthenticatorViewCore.Registering.set -> void +Microsoft.AspNetCore.Components.WebAssembly.Authentication.RemoteAuthenticatorViewCore.RemoteAuthenticatorViewCore() -> void Microsoft.AspNetCore.Components.WebAssembly.Authentication.RemoteAuthenticatorViewCore.UserProfile.get -> Microsoft.AspNetCore.Components.RenderFragment? Microsoft.AspNetCore.Components.WebAssembly.Authentication.RemoteAuthenticatorViewCore.UserProfile.set -> void +Microsoft.AspNetCore.Components.WebAssembly.Authentication.RemoteUserAccount Microsoft.AspNetCore.Components.WebAssembly.Authentication.RemoteUserAccount.AdditionalProperties.get -> System.Collections.Generic.IDictionary! Microsoft.AspNetCore.Components.WebAssembly.Authentication.RemoteUserAccount.AdditionalProperties.set -> void +Microsoft.AspNetCore.Components.WebAssembly.Authentication.RemoteUserAccount.RemoteUserAccount() -> void +Microsoft.AspNetCore.Components.WebAssembly.Authentication.SignOutSessionStateManager Microsoft.AspNetCore.Components.WebAssembly.Authentication.SignOutSessionStateManager.SignOutSessionStateManager(Microsoft.JSInterop.IJSRuntime! jsRuntime) -> void Microsoft.Extensions.DependencyInjection.IRemoteAuthenticationBuilder Microsoft.Extensions.DependencyInjection.IRemoteAuthenticationBuilder.Services.get -> Microsoft.Extensions.DependencyInjection.IServiceCollection! +Microsoft.Extensions.DependencyInjection.RemoteAuthenticationBuilderExtensions +Microsoft.Extensions.DependencyInjection.WebAssemblyAuthenticationServiceCollectionExtensions override Microsoft.AspNetCore.Components.WebAssembly.Authentication.AuthorizationMessageHandler.SendAsync(System.Net.Http.HttpRequestMessage! request, System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.Task! override Microsoft.AspNetCore.Components.WebAssembly.Authentication.RemoteAuthenticationService.GetAuthenticationStateAsync() -> System.Threading.Tasks.Task! override Microsoft.AspNetCore.Components.WebAssembly.Authentication.RemoteAuthenticatorViewCore.BuildRenderTree(Microsoft.AspNetCore.Components.Rendering.RenderTreeBuilder! builder) -> void override Microsoft.AspNetCore.Components.WebAssembly.Authentication.RemoteAuthenticatorViewCore.OnParametersSetAsync() -> System.Threading.Tasks.Task! +static Microsoft.AspNetCore.Components.WebAssembly.Authentication.NavigationManagerExtensions.NavigateToLogin(this Microsoft.AspNetCore.Components.NavigationManager! manager, string! loginPath) -> void +static Microsoft.AspNetCore.Components.WebAssembly.Authentication.NavigationManagerExtensions.NavigateToLogin(this Microsoft.AspNetCore.Components.NavigationManager! manager, string! loginPath, Microsoft.AspNetCore.Components.WebAssembly.Authentication.InteractiveRequestOptions! request) -> void +static Microsoft.AspNetCore.Components.WebAssembly.Authentication.NavigationManagerExtensions.NavigateToLogout(this Microsoft.AspNetCore.Components.NavigationManager! manager, string! logoutPath) -> void +static Microsoft.AspNetCore.Components.WebAssembly.Authentication.NavigationManagerExtensions.NavigateToLogout(this Microsoft.AspNetCore.Components.NavigationManager! manager, string! logoutPath, string? returnUrl) -> void static Microsoft.AspNetCore.Components.WebAssembly.Authentication.RemoteAuthenticationActions.IsAction(string! action, string! candidate) -> bool static Microsoft.Extensions.DependencyInjection.RemoteAuthenticationBuilderExtensions.AddAccountClaimsPrincipalFactory(this Microsoft.Extensions.DependencyInjection.IRemoteAuthenticationBuilder! builder) -> Microsoft.Extensions.DependencyInjection.IRemoteAuthenticationBuilder! static Microsoft.Extensions.DependencyInjection.RemoteAuthenticationBuilderExtensions.AddAccountClaimsPrincipalFactory(this Microsoft.Extensions.DependencyInjection.IRemoteAuthenticationBuilder! builder) -> Microsoft.Extensions.DependencyInjection.IRemoteAuthenticationBuilder! @@ -172,83 +250,5 @@ virtual Microsoft.AspNetCore.Components.WebAssembly.Authentication.RemoteAuthent virtual Microsoft.AspNetCore.Components.WebAssembly.Authentication.RemoteAuthenticationService.RequestAccessToken(Microsoft.AspNetCore.Components.WebAssembly.Authentication.AccessTokenRequestOptions! options) -> System.Threading.Tasks.ValueTask virtual Microsoft.AspNetCore.Components.WebAssembly.Authentication.RemoteAuthenticationService.SignInAsync(Microsoft.AspNetCore.Components.WebAssembly.Authentication.RemoteAuthenticationContext! context) -> System.Threading.Tasks.Task!>! virtual Microsoft.AspNetCore.Components.WebAssembly.Authentication.RemoteAuthenticationService.SignOutAsync(Microsoft.AspNetCore.Components.WebAssembly.Authentication.RemoteAuthenticationContext! context) -> System.Threading.Tasks.Task!>! -virtual Microsoft.AspNetCore.Components.WebAssembly.Authentication.SignOutSessionStateManager.ValidateSignOutState() -> System.Threading.Tasks.Task! -Microsoft.AspNetCore.Components.WebAssembly.Authentication.AccessToken -Microsoft.AspNetCore.Components.WebAssembly.Authentication.AccessToken.AccessToken() -> void -Microsoft.AspNetCore.Components.WebAssembly.Authentication.AccessToken.Expires.get -> System.DateTimeOffset -Microsoft.AspNetCore.Components.WebAssembly.Authentication.AccessToken.Expires.set -> void -Microsoft.AspNetCore.Components.WebAssembly.Authentication.AccessTokenNotAvailableException -Microsoft.AspNetCore.Components.WebAssembly.Authentication.AccessTokenNotAvailableException.Redirect() -> void -Microsoft.AspNetCore.Components.WebAssembly.Authentication.AccessTokenRequestOptions -Microsoft.AspNetCore.Components.WebAssembly.Authentication.AccessTokenRequestOptions.AccessTokenRequestOptions() -> void -Microsoft.AspNetCore.Components.WebAssembly.Authentication.AccessTokenResult -Microsoft.AspNetCore.Components.WebAssembly.Authentication.AccessTokenResult.Status.get -> Microsoft.AspNetCore.Components.WebAssembly.Authentication.AccessTokenResultStatus -Microsoft.AspNetCore.Components.WebAssembly.Authentication.AccessTokenResultStatus -Microsoft.AspNetCore.Components.WebAssembly.Authentication.AccessTokenResultStatus.RequiresRedirect = 1 -> Microsoft.AspNetCore.Components.WebAssembly.Authentication.AccessTokenResultStatus -Microsoft.AspNetCore.Components.WebAssembly.Authentication.AccessTokenResultStatus.Success = 0 -> Microsoft.AspNetCore.Components.WebAssembly.Authentication.AccessTokenResultStatus -Microsoft.AspNetCore.Components.WebAssembly.Authentication.ApiAuthorizationProviderOptions -Microsoft.AspNetCore.Components.WebAssembly.Authentication.ApiAuthorizationProviderOptions.ApiAuthorizationProviderOptions() -> void -Microsoft.AspNetCore.Components.WebAssembly.Authentication.AuthorizationMessageHandler -Microsoft.AspNetCore.Components.WebAssembly.Authentication.BaseAddressAuthorizationMessageHandler -Microsoft.AspNetCore.Components.WebAssembly.Authentication.IAccessTokenProvider -Microsoft.AspNetCore.Components.WebAssembly.Authentication.Internal.IAccessTokenProviderAccessor -Microsoft.AspNetCore.Components.WebAssembly.Authentication.OidcProviderOptions -Microsoft.AspNetCore.Components.WebAssembly.Authentication.OidcProviderOptions.OidcProviderOptions() -> void -Microsoft.AspNetCore.Components.WebAssembly.Authentication.RemoteAuthenticationActions -Microsoft.AspNetCore.Components.WebAssembly.Authentication.RemoteAuthenticationActions.RemoteAuthenticationActions() -> void -Microsoft.AspNetCore.Components.WebAssembly.Authentication.RemoteAuthenticationApplicationPathsOptions -Microsoft.AspNetCore.Components.WebAssembly.Authentication.RemoteAuthenticationApplicationPathsOptions.RemoteAuthenticationApplicationPathsOptions() -> void -Microsoft.AspNetCore.Components.WebAssembly.Authentication.RemoteAuthenticationContext.RemoteAuthenticationContext() -> void -Microsoft.AspNetCore.Components.WebAssembly.Authentication.RemoteAuthenticationDefaults -Microsoft.AspNetCore.Components.WebAssembly.Authentication.RemoteAuthenticationDefaults.RemoteAuthenticationDefaults() -> void -Microsoft.AspNetCore.Components.WebAssembly.Authentication.RemoteAuthenticationOptions -Microsoft.AspNetCore.Components.WebAssembly.Authentication.RemoteAuthenticationOptions.ProviderOptions.get -> TRemoteAuthenticationProviderOptions -Microsoft.AspNetCore.Components.WebAssembly.Authentication.RemoteAuthenticationOptions.RemoteAuthenticationOptions() -> void -Microsoft.AspNetCore.Components.WebAssembly.Authentication.RemoteAuthenticationResult.RemoteAuthenticationResult() -> void -Microsoft.AspNetCore.Components.WebAssembly.Authentication.RemoteAuthenticationResult.Status.get -> Microsoft.AspNetCore.Components.WebAssembly.Authentication.RemoteAuthenticationStatus -Microsoft.AspNetCore.Components.WebAssembly.Authentication.RemoteAuthenticationResult.Status.set -> void -Microsoft.AspNetCore.Components.WebAssembly.Authentication.RemoteAuthenticationState -Microsoft.AspNetCore.Components.WebAssembly.Authentication.RemoteAuthenticationState.RemoteAuthenticationState() -> void -Microsoft.AspNetCore.Components.WebAssembly.Authentication.RemoteAuthenticationStatus -Microsoft.AspNetCore.Components.WebAssembly.Authentication.RemoteAuthenticationStatus.Failure = 2 -> Microsoft.AspNetCore.Components.WebAssembly.Authentication.RemoteAuthenticationStatus -Microsoft.AspNetCore.Components.WebAssembly.Authentication.RemoteAuthenticationStatus.OperationCompleted = 3 -> Microsoft.AspNetCore.Components.WebAssembly.Authentication.RemoteAuthenticationStatus -Microsoft.AspNetCore.Components.WebAssembly.Authentication.RemoteAuthenticationStatus.Redirect = 0 -> Microsoft.AspNetCore.Components.WebAssembly.Authentication.RemoteAuthenticationStatus -Microsoft.AspNetCore.Components.WebAssembly.Authentication.RemoteAuthenticationStatus.Success = 1 -> Microsoft.AspNetCore.Components.WebAssembly.Authentication.RemoteAuthenticationStatus -Microsoft.AspNetCore.Components.WebAssembly.Authentication.RemoteAuthenticationUserOptions -Microsoft.AspNetCore.Components.WebAssembly.Authentication.RemoteAuthenticationUserOptions.RemoteAuthenticationUserOptions() -> void -Microsoft.AspNetCore.Components.WebAssembly.Authentication.RemoteAuthenticatorView -Microsoft.AspNetCore.Components.WebAssembly.Authentication.RemoteAuthenticatorView.RemoteAuthenticatorView() -> void -Microsoft.AspNetCore.Components.WebAssembly.Authentication.RemoteAuthenticatorViewCore.RemoteAuthenticatorViewCore() -> void -Microsoft.AspNetCore.Components.WebAssembly.Authentication.RemoteUserAccount -Microsoft.AspNetCore.Components.WebAssembly.Authentication.RemoteUserAccount.RemoteUserAccount() -> void -Microsoft.AspNetCore.Components.WebAssembly.Authentication.SignOutSessionStateManager -Microsoft.Extensions.DependencyInjection.RemoteAuthenticationBuilderExtensions -Microsoft.Extensions.DependencyInjection.WebAssemblyAuthenticationServiceCollectionExtensions virtual Microsoft.AspNetCore.Components.WebAssembly.Authentication.SignOutSessionStateManager.SetSignOutState() -> System.Threading.Tasks.ValueTask -Microsoft.AspNetCore.Components.WebAssembly.Authentication.InteractionType -Microsoft.AspNetCore.Components.WebAssembly.Authentication.InteractionType.GetToken = 1 -> Microsoft.AspNetCore.Components.WebAssembly.Authentication.InteractionType -Microsoft.AspNetCore.Components.WebAssembly.Authentication.InteractionType.SignIn = 0 -> Microsoft.AspNetCore.Components.WebAssembly.Authentication.InteractionType -Microsoft.AspNetCore.Components.WebAssembly.Authentication.InteractionType.SignOut = 2 -> Microsoft.AspNetCore.Components.WebAssembly.Authentication.InteractionType -Microsoft.AspNetCore.Components.WebAssembly.Authentication.InteractiveRequestOptions -Microsoft.AspNetCore.Components.WebAssembly.Authentication.InteractiveRequestOptions.Interaction.get -> Microsoft.AspNetCore.Components.WebAssembly.Authentication.InteractionType -Microsoft.AspNetCore.Components.WebAssembly.Authentication.InteractiveRequestOptions.Interaction.init -> void -Microsoft.AspNetCore.Components.WebAssembly.Authentication.InteractiveRequestOptions.InteractiveRequestOptions() -> void -Microsoft.AspNetCore.Components.WebAssembly.Authentication.NavigationManagerExtensions -Microsoft.AspNetCore.Components.WebAssembly.Authentication.AccessTokenNotAvailableException.Redirect(System.Action! configureInteractionOptions) -> void -Microsoft.AspNetCore.Components.WebAssembly.Authentication.AccessTokenResult.AccessTokenResult(Microsoft.AspNetCore.Components.WebAssembly.Authentication.AccessTokenResultStatus status, Microsoft.AspNetCore.Components.WebAssembly.Authentication.AccessToken! token, string? interactiveRequestUrl, Microsoft.AspNetCore.Components.WebAssembly.Authentication.InteractiveRequestOptions? interactiveRequest) -> void -Microsoft.AspNetCore.Components.WebAssembly.Authentication.AccessTokenResult.InteractionOptions.get -> Microsoft.AspNetCore.Components.WebAssembly.Authentication.InteractiveRequestOptions? -Microsoft.AspNetCore.Components.WebAssembly.Authentication.AccessTokenResult.InteractiveRequestUrl.get -> string? -Microsoft.AspNetCore.Components.WebAssembly.Authentication.InteractiveRequestOptions.ReturnUrl.get -> string! -Microsoft.AspNetCore.Components.WebAssembly.Authentication.InteractiveRequestOptions.ReturnUrl.init -> void -Microsoft.AspNetCore.Components.WebAssembly.Authentication.InteractiveRequestOptions.Scopes.get -> System.Collections.Generic.IEnumerable! -Microsoft.AspNetCore.Components.WebAssembly.Authentication.InteractiveRequestOptions.Scopes.init -> void -Microsoft.AspNetCore.Components.WebAssembly.Authentication.InteractiveRequestOptions.TryAddAdditionalParameter(string! name, TValue value) -> bool -Microsoft.AspNetCore.Components.WebAssembly.Authentication.InteractiveRequestOptions.TryGetAdditionalParameter(string! name, out TValue? value) -> bool -Microsoft.AspNetCore.Components.WebAssembly.Authentication.InteractiveRequestOptions.TryRemoveAdditionalParameter(string! name) -> bool -Microsoft.AspNetCore.Components.WebAssembly.Authentication.RemoteAuthenticationContext.InteractiveRequest.get -> Microsoft.AspNetCore.Components.WebAssembly.Authentication.InteractiveRequestOptions? -Microsoft.AspNetCore.Components.WebAssembly.Authentication.RemoteAuthenticationContext.InteractiveRequest.set -> void -Microsoft.AspNetCore.Components.WebAssembly.Authentication.RemoteAuthenticationService.RemoteAuthenticationService(Microsoft.JSInterop.IJSRuntime! jsRuntime, Microsoft.Extensions.Options.IOptionsSnapshot!>! options, Microsoft.AspNetCore.Components.NavigationManager! navigation, Microsoft.AspNetCore.Components.WebAssembly.Authentication.AccountClaimsPrincipalFactory! accountClaimsPrincipalFactory, Microsoft.Extensions.Logging.ILogger!>? logger) -> void -static Microsoft.AspNetCore.Components.WebAssembly.Authentication.NavigationManagerExtensions.NavigateToLogin(this Microsoft.AspNetCore.Components.NavigationManager! manager, string! loginPath) -> void -static Microsoft.AspNetCore.Components.WebAssembly.Authentication.NavigationManagerExtensions.NavigateToLogin(this Microsoft.AspNetCore.Components.NavigationManager! manager, string! loginPath, Microsoft.AspNetCore.Components.WebAssembly.Authentication.InteractiveRequestOptions! request) -> void -static Microsoft.AspNetCore.Components.WebAssembly.Authentication.NavigationManagerExtensions.NavigateToLogout(this Microsoft.AspNetCore.Components.NavigationManager! manager, string! logoutPath) -> void -static Microsoft.AspNetCore.Components.WebAssembly.Authentication.NavigationManagerExtensions.NavigateToLogout(this Microsoft.AspNetCore.Components.NavigationManager! manager, string! logoutPath, string? returnUrl) -> void \ No newline at end of file +virtual Microsoft.AspNetCore.Components.WebAssembly.Authentication.SignOutSessionStateManager.ValidateSignOutState() -> System.Threading.Tasks.Task! diff --git a/src/Components/WebView/WebView/src/PublicAPI.Shipped.txt b/src/Components/WebView/WebView/src/PublicAPI.Shipped.txt index 5d9f81871643..8e03d74c30ea 100644 --- a/src/Components/WebView/WebView/src/PublicAPI.Shipped.txt +++ b/src/Components/WebView/WebView/src/PublicAPI.Shipped.txt @@ -8,6 +8,7 @@ Microsoft.AspNetCore.Components.WebView.WebViewManager.DisposeAsync() -> System. Microsoft.AspNetCore.Components.WebView.WebViewManager.MessageReceived(System.Uri! sourceUri, string! message) -> void Microsoft.AspNetCore.Components.WebView.WebViewManager.Navigate(string! url) -> void Microsoft.AspNetCore.Components.WebView.WebViewManager.RemoveRootComponentAsync(string! selector) -> System.Threading.Tasks.Task! +Microsoft.AspNetCore.Components.WebView.WebViewManager.TryDispatchAsync(System.Action! workItem) -> System.Threading.Tasks.Task! Microsoft.AspNetCore.Components.WebView.WebViewManager.TryGetResponseContent(string! uri, bool allowFallbackOnHostPage, out int statusCode, out string! statusMessage, out System.IO.Stream! content, out System.Collections.Generic.IDictionary! headers) -> bool Microsoft.AspNetCore.Components.WebView.WebViewManager.WebViewManager(System.IServiceProvider! provider, Microsoft.AspNetCore.Components.Dispatcher! dispatcher, System.Uri! appBaseUri, Microsoft.Extensions.FileProviders.IFileProvider! fileProvider, Microsoft.AspNetCore.Components.Web.JSComponentConfigurationStore! jsComponents, string! hostPageRelativePath) -> void Microsoft.Extensions.DependencyInjection.ComponentsWebViewServiceCollectionExtensions diff --git a/src/Components/WebView/WebView/src/PublicAPI.Unshipped.txt b/src/Components/WebView/WebView/src/PublicAPI.Unshipped.txt index 612664434354..7dc5c58110bf 100644 --- a/src/Components/WebView/WebView/src/PublicAPI.Unshipped.txt +++ b/src/Components/WebView/WebView/src/PublicAPI.Unshipped.txt @@ -1,2 +1 @@ #nullable enable -Microsoft.AspNetCore.Components.WebView.WebViewManager.TryDispatchAsync(System.Action! workItem) -> System.Threading.Tasks.Task! diff --git a/src/DefaultBuilder/src/PublicAPI.Shipped.txt b/src/DefaultBuilder/src/PublicAPI.Shipped.txt index 9475a9dc6081..b57a699c6f4e 100644 --- a/src/DefaultBuilder/src/PublicAPI.Shipped.txt +++ b/src/DefaultBuilder/src/PublicAPI.Shipped.txt @@ -32,6 +32,7 @@ Microsoft.AspNetCore.Builder.WebApplicationBuilder.Configuration.get -> Microsof Microsoft.AspNetCore.Builder.WebApplicationBuilder.Environment.get -> Microsoft.AspNetCore.Hosting.IWebHostEnvironment! Microsoft.AspNetCore.Builder.WebApplicationBuilder.Host.get -> Microsoft.AspNetCore.Builder.ConfigureHostBuilder! Microsoft.AspNetCore.Builder.WebApplicationBuilder.Logging.get -> Microsoft.Extensions.Logging.ILoggingBuilder! +Microsoft.AspNetCore.Builder.WebApplicationBuilder.Metrics.get -> Microsoft.Extensions.Diagnostics.Metrics.IMetricsBuilder! Microsoft.AspNetCore.Builder.WebApplicationBuilder.Services.get -> Microsoft.Extensions.DependencyInjection.IServiceCollection! Microsoft.AspNetCore.Builder.WebApplicationBuilder.WebHost.get -> Microsoft.AspNetCore.Builder.ConfigureWebHostBuilder! Microsoft.AspNetCore.Builder.WebApplicationOptions @@ -52,6 +53,10 @@ static Microsoft.AspNetCore.Builder.WebApplication.Create(string![]? args = null static Microsoft.AspNetCore.Builder.WebApplication.CreateBuilder() -> Microsoft.AspNetCore.Builder.WebApplicationBuilder! static Microsoft.AspNetCore.Builder.WebApplication.CreateBuilder(Microsoft.AspNetCore.Builder.WebApplicationOptions! options) -> Microsoft.AspNetCore.Builder.WebApplicationBuilder! static Microsoft.AspNetCore.Builder.WebApplication.CreateBuilder(string![]! args) -> Microsoft.AspNetCore.Builder.WebApplicationBuilder! +static Microsoft.AspNetCore.Builder.WebApplication.CreateEmptyBuilder(Microsoft.AspNetCore.Builder.WebApplicationOptions! options) -> Microsoft.AspNetCore.Builder.WebApplicationBuilder! +static Microsoft.AspNetCore.Builder.WebApplication.CreateSlimBuilder() -> Microsoft.AspNetCore.Builder.WebApplicationBuilder! +static Microsoft.AspNetCore.Builder.WebApplication.CreateSlimBuilder(Microsoft.AspNetCore.Builder.WebApplicationOptions! options) -> Microsoft.AspNetCore.Builder.WebApplicationBuilder! +static Microsoft.AspNetCore.Builder.WebApplication.CreateSlimBuilder(string![]! args) -> Microsoft.AspNetCore.Builder.WebApplicationBuilder! static Microsoft.AspNetCore.WebHost.CreateDefaultBuilder() -> Microsoft.AspNetCore.Hosting.IWebHostBuilder! static Microsoft.AspNetCore.WebHost.CreateDefaultBuilder(string![]! args) -> Microsoft.AspNetCore.Hosting.IWebHostBuilder! static Microsoft.AspNetCore.WebHost.CreateDefaultBuilder(string![]! args) -> Microsoft.AspNetCore.Hosting.IWebHostBuilder! diff --git a/src/DefaultBuilder/src/PublicAPI.Unshipped.txt b/src/DefaultBuilder/src/PublicAPI.Unshipped.txt index 24b6d0553640..7dc5c58110bf 100644 --- a/src/DefaultBuilder/src/PublicAPI.Unshipped.txt +++ b/src/DefaultBuilder/src/PublicAPI.Unshipped.txt @@ -1,6 +1 @@ #nullable enable -Microsoft.AspNetCore.Builder.WebApplicationBuilder.Metrics.get -> Microsoft.Extensions.Diagnostics.Metrics.IMetricsBuilder! -static Microsoft.AspNetCore.Builder.WebApplication.CreateEmptyBuilder(Microsoft.AspNetCore.Builder.WebApplicationOptions! options) -> Microsoft.AspNetCore.Builder.WebApplicationBuilder! -static Microsoft.AspNetCore.Builder.WebApplication.CreateSlimBuilder() -> Microsoft.AspNetCore.Builder.WebApplicationBuilder! -static Microsoft.AspNetCore.Builder.WebApplication.CreateSlimBuilder(Microsoft.AspNetCore.Builder.WebApplicationOptions! options) -> Microsoft.AspNetCore.Builder.WebApplicationBuilder! -static Microsoft.AspNetCore.Builder.WebApplication.CreateSlimBuilder(string![]! args) -> Microsoft.AspNetCore.Builder.WebApplicationBuilder! diff --git a/src/HealthChecks/Abstractions/src/PublicAPI.Shipped.txt b/src/HealthChecks/Abstractions/src/PublicAPI.Shipped.txt index 7655e9543207..5b941ba008e1 100644 --- a/src/HealthChecks/Abstractions/src/PublicAPI.Shipped.txt +++ b/src/HealthChecks/Abstractions/src/PublicAPI.Shipped.txt @@ -4,6 +4,8 @@ Microsoft.Extensions.Diagnostics.HealthChecks.HealthCheckContext.HealthCheckCont Microsoft.Extensions.Diagnostics.HealthChecks.HealthCheckContext.Registration.get -> Microsoft.Extensions.Diagnostics.HealthChecks.HealthCheckRegistration! Microsoft.Extensions.Diagnostics.HealthChecks.HealthCheckContext.Registration.set -> void Microsoft.Extensions.Diagnostics.HealthChecks.HealthCheckRegistration +Microsoft.Extensions.Diagnostics.HealthChecks.HealthCheckRegistration.Delay.get -> System.TimeSpan? +Microsoft.Extensions.Diagnostics.HealthChecks.HealthCheckRegistration.Delay.set -> void Microsoft.Extensions.Diagnostics.HealthChecks.HealthCheckRegistration.Factory.get -> System.Func! Microsoft.Extensions.Diagnostics.HealthChecks.HealthCheckRegistration.Factory.set -> void Microsoft.Extensions.Diagnostics.HealthChecks.HealthCheckRegistration.FailureStatus.get -> Microsoft.Extensions.Diagnostics.HealthChecks.HealthStatus @@ -14,6 +16,8 @@ Microsoft.Extensions.Diagnostics.HealthChecks.HealthCheckRegistration.HealthChec Microsoft.Extensions.Diagnostics.HealthChecks.HealthCheckRegistration.HealthCheckRegistration(string! name, System.Func! factory, Microsoft.Extensions.Diagnostics.HealthChecks.HealthStatus? failureStatus, System.Collections.Generic.IEnumerable? tags, System.TimeSpan? timeout) -> void Microsoft.Extensions.Diagnostics.HealthChecks.HealthCheckRegistration.Name.get -> string! Microsoft.Extensions.Diagnostics.HealthChecks.HealthCheckRegistration.Name.set -> void +Microsoft.Extensions.Diagnostics.HealthChecks.HealthCheckRegistration.Period.get -> System.TimeSpan? +Microsoft.Extensions.Diagnostics.HealthChecks.HealthCheckRegistration.Period.set -> void Microsoft.Extensions.Diagnostics.HealthChecks.HealthCheckRegistration.Tags.get -> System.Collections.Generic.ISet! Microsoft.Extensions.Diagnostics.HealthChecks.HealthCheckRegistration.Timeout.get -> System.TimeSpan Microsoft.Extensions.Diagnostics.HealthChecks.HealthCheckRegistration.Timeout.set -> void diff --git a/src/HealthChecks/Abstractions/src/PublicAPI.Unshipped.txt b/src/HealthChecks/Abstractions/src/PublicAPI.Unshipped.txt index c607cf13fa6d..7dc5c58110bf 100644 --- a/src/HealthChecks/Abstractions/src/PublicAPI.Unshipped.txt +++ b/src/HealthChecks/Abstractions/src/PublicAPI.Unshipped.txt @@ -1,5 +1 @@ #nullable enable -Microsoft.Extensions.Diagnostics.HealthChecks.HealthCheckRegistration.Delay.get -> System.TimeSpan? -Microsoft.Extensions.Diagnostics.HealthChecks.HealthCheckRegistration.Delay.set -> void -Microsoft.Extensions.Diagnostics.HealthChecks.HealthCheckRegistration.Period.get -> System.TimeSpan? -Microsoft.Extensions.Diagnostics.HealthChecks.HealthCheckRegistration.Period.set -> void diff --git a/src/Hosting/Abstractions/src/PublicAPI.Shipped.txt b/src/Hosting/Abstractions/src/PublicAPI.Shipped.txt index a1842d923905..ae75c1e89e90 100644 --- a/src/Hosting/Abstractions/src/PublicAPI.Shipped.txt +++ b/src/Hosting/Abstractions/src/PublicAPI.Shipped.txt @@ -85,6 +85,8 @@ static readonly Microsoft.AspNetCore.Hosting.WebHostDefaults.DetailedErrorsKey - static readonly Microsoft.AspNetCore.Hosting.WebHostDefaults.EnvironmentKey -> string! static readonly Microsoft.AspNetCore.Hosting.WebHostDefaults.HostingStartupAssembliesKey -> string! static readonly Microsoft.AspNetCore.Hosting.WebHostDefaults.HostingStartupExcludeAssembliesKey -> string! +static readonly Microsoft.AspNetCore.Hosting.WebHostDefaults.HttpPortsKey -> string! +static readonly Microsoft.AspNetCore.Hosting.WebHostDefaults.HttpsPortsKey -> string! static readonly Microsoft.AspNetCore.Hosting.WebHostDefaults.PreferHostingUrlsKey -> string! static readonly Microsoft.AspNetCore.Hosting.WebHostDefaults.PreventHostingStartupKey -> string! static readonly Microsoft.AspNetCore.Hosting.WebHostDefaults.ServerUrlsKey -> string! diff --git a/src/Hosting/Abstractions/src/PublicAPI.Unshipped.txt b/src/Hosting/Abstractions/src/PublicAPI.Unshipped.txt index 3f346e4f6125..7dc5c58110bf 100644 --- a/src/Hosting/Abstractions/src/PublicAPI.Unshipped.txt +++ b/src/Hosting/Abstractions/src/PublicAPI.Unshipped.txt @@ -1,3 +1 @@ #nullable enable -static readonly Microsoft.AspNetCore.Hosting.WebHostDefaults.HttpPortsKey -> string! -static readonly Microsoft.AspNetCore.Hosting.WebHostDefaults.HttpsPortsKey -> string! \ No newline at end of file diff --git a/src/Hosting/Hosting/src/PublicAPI.Shipped.txt b/src/Hosting/Hosting/src/PublicAPI.Shipped.txt index 13641a7e05fe..6431c0ee8976 100644 --- a/src/Hosting/Hosting/src/PublicAPI.Shipped.txt +++ b/src/Hosting/Hosting/src/PublicAPI.Shipped.txt @@ -63,6 +63,7 @@ static Microsoft.AspNetCore.Hosting.WebHostExtensions.RunAsync(this Microsoft.As static Microsoft.AspNetCore.Hosting.WebHostExtensions.StopAsync(this Microsoft.AspNetCore.Hosting.IWebHost! host, System.TimeSpan timeout) -> System.Threading.Tasks.Task! static Microsoft.AspNetCore.Hosting.WebHostExtensions.WaitForShutdown(this Microsoft.AspNetCore.Hosting.IWebHost! host) -> void static Microsoft.AspNetCore.Hosting.WebHostExtensions.WaitForShutdownAsync(this Microsoft.AspNetCore.Hosting.IWebHost! host, System.Threading.CancellationToken token = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task! +static Microsoft.Extensions.Hosting.GenericHostWebHostBuilderExtensions.ConfigureSlimWebHost(this Microsoft.Extensions.Hosting.IHostBuilder! builder, System.Action! configure, System.Action! configureWebHostBuilder) -> Microsoft.Extensions.Hosting.IHostBuilder! static Microsoft.Extensions.Hosting.GenericHostWebHostBuilderExtensions.ConfigureWebHost(this Microsoft.Extensions.Hosting.IHostBuilder! builder, System.Action! configure) -> Microsoft.Extensions.Hosting.IHostBuilder! static Microsoft.Extensions.Hosting.GenericHostWebHostBuilderExtensions.ConfigureWebHost(this Microsoft.Extensions.Hosting.IHostBuilder! builder, System.Action! configure, System.Action! configureWebHostBuilder) -> Microsoft.Extensions.Hosting.IHostBuilder! virtual Microsoft.AspNetCore.Hosting.StartupBase.ConfigureServices(Microsoft.Extensions.DependencyInjection.IServiceCollection! services) -> void diff --git a/src/Hosting/Hosting/src/PublicAPI.Unshipped.txt b/src/Hosting/Hosting/src/PublicAPI.Unshipped.txt index de9a58f9e603..7dc5c58110bf 100644 --- a/src/Hosting/Hosting/src/PublicAPI.Unshipped.txt +++ b/src/Hosting/Hosting/src/PublicAPI.Unshipped.txt @@ -1,2 +1 @@ #nullable enable -static Microsoft.Extensions.Hosting.GenericHostWebHostBuilderExtensions.ConfigureSlimWebHost(this Microsoft.Extensions.Hosting.IHostBuilder! builder, System.Action! configure, System.Action! configureWebHostBuilder) -> Microsoft.Extensions.Hosting.IHostBuilder! diff --git a/src/Html.Abstractions/src/PublicAPI.Shipped.txt b/src/Html.Abstractions/src/PublicAPI.Shipped.txt index 44c3dacad3af..77035c76efb3 100644 --- a/src/Html.Abstractions/src/PublicAPI.Shipped.txt +++ b/src/Html.Abstractions/src/PublicAPI.Shipped.txt @@ -20,6 +20,8 @@ Microsoft.AspNetCore.Html.HtmlString Microsoft.AspNetCore.Html.HtmlString.HtmlString(string? value) -> void Microsoft.AspNetCore.Html.HtmlString.Value.get -> string? Microsoft.AspNetCore.Html.HtmlString.WriteTo(System.IO.TextWriter! writer, System.Text.Encodings.Web.HtmlEncoder! encoder) -> void +Microsoft.AspNetCore.Html.IHtmlAsyncContent +Microsoft.AspNetCore.Html.IHtmlAsyncContent.WriteToAsync(System.IO.TextWriter! writer) -> System.Threading.Tasks.ValueTask Microsoft.AspNetCore.Html.IHtmlContent Microsoft.AspNetCore.Html.IHtmlContent.WriteTo(System.IO.TextWriter! writer, System.Text.Encodings.Web.HtmlEncoder! encoder) -> void Microsoft.AspNetCore.Html.IHtmlContentBuilder diff --git a/src/Html.Abstractions/src/PublicAPI.Unshipped.txt b/src/Html.Abstractions/src/PublicAPI.Unshipped.txt index bf7848e4167b..7dc5c58110bf 100644 --- a/src/Html.Abstractions/src/PublicAPI.Unshipped.txt +++ b/src/Html.Abstractions/src/PublicAPI.Unshipped.txt @@ -1,3 +1 @@ #nullable enable -Microsoft.AspNetCore.Html.IHtmlAsyncContent -Microsoft.AspNetCore.Html.IHtmlAsyncContent.WriteToAsync(System.IO.TextWriter! writer) -> System.Threading.Tasks.ValueTask diff --git a/src/Http/Authentication.Abstractions/src/PublicAPI.Shipped.txt b/src/Http/Authentication.Abstractions/src/PublicAPI.Shipped.txt index 27a186658a85..2f23ee812efc 100644 --- a/src/Http/Authentication.Abstractions/src/PublicAPI.Shipped.txt +++ b/src/Http/Authentication.Abstractions/src/PublicAPI.Shipped.txt @@ -12,6 +12,9 @@ Microsoft.AspNetCore.Authentication.AuthenticateResult.Properties.set -> void Microsoft.AspNetCore.Authentication.AuthenticateResult.Succeeded.get -> bool Microsoft.AspNetCore.Authentication.AuthenticateResult.Ticket.get -> Microsoft.AspNetCore.Authentication.AuthenticationTicket? Microsoft.AspNetCore.Authentication.AuthenticateResult.Ticket.set -> void +Microsoft.AspNetCore.Authentication.AuthenticationFailureException +Microsoft.AspNetCore.Authentication.AuthenticationFailureException.AuthenticationFailureException(string? message) -> void +Microsoft.AspNetCore.Authentication.AuthenticationFailureException.AuthenticationFailureException(string? message, System.Exception? innerException) -> void Microsoft.AspNetCore.Authentication.AuthenticationHttpContextExtensions Microsoft.AspNetCore.Authentication.AuthenticationOptions Microsoft.AspNetCore.Authentication.AuthenticationOptions.AddScheme(string! name, System.Action! configureBuilder) -> void diff --git a/src/Http/Authentication.Abstractions/src/PublicAPI.Unshipped.txt b/src/Http/Authentication.Abstractions/src/PublicAPI.Unshipped.txt index 80662da04d55..7dc5c58110bf 100644 --- a/src/Http/Authentication.Abstractions/src/PublicAPI.Unshipped.txt +++ b/src/Http/Authentication.Abstractions/src/PublicAPI.Unshipped.txt @@ -1,4 +1 @@ #nullable enable -Microsoft.AspNetCore.Authentication.AuthenticationFailureException -Microsoft.AspNetCore.Authentication.AuthenticationFailureException.AuthenticationFailureException(string? message) -> void -Microsoft.AspNetCore.Authentication.AuthenticationFailureException.AuthenticationFailureException(string? message, System.Exception? innerException) -> void diff --git a/src/Http/Headers/src/PublicAPI.Shipped.txt b/src/Http/Headers/src/PublicAPI.Shipped.txt index 265820135b83..acc0e3425b75 100644 --- a/src/Http/Headers/src/PublicAPI.Shipped.txt +++ b/src/Http/Headers/src/PublicAPI.Shipped.txt @@ -215,7 +215,7 @@ static Microsoft.Net.Http.Headers.ContentDispositionHeaderValue.TryParse(Microso static Microsoft.Net.Http.Headers.ContentDispositionHeaderValueIdentityExtensions.IsFileDisposition(this Microsoft.Net.Http.Headers.ContentDispositionHeaderValue! header) -> bool static Microsoft.Net.Http.Headers.ContentDispositionHeaderValueIdentityExtensions.IsFormDisposition(this Microsoft.Net.Http.Headers.ContentDispositionHeaderValue! header) -> bool static Microsoft.Net.Http.Headers.ContentRangeHeaderValue.Parse(Microsoft.Extensions.Primitives.StringSegment input) -> Microsoft.Net.Http.Headers.ContentRangeHeaderValue! -static Microsoft.Net.Http.Headers.ContentRangeHeaderValue.TryParse(Microsoft.Extensions.Primitives.StringSegment input, out Microsoft.Net.Http.Headers.ContentRangeHeaderValue! parsedValue) -> bool +static Microsoft.Net.Http.Headers.ContentRangeHeaderValue.TryParse(Microsoft.Extensions.Primitives.StringSegment input, out Microsoft.Net.Http.Headers.ContentRangeHeaderValue? parsedValue) -> bool static Microsoft.Net.Http.Headers.CookieHeaderValue.Parse(Microsoft.Extensions.Primitives.StringSegment input) -> Microsoft.Net.Http.Headers.CookieHeaderValue! static Microsoft.Net.Http.Headers.CookieHeaderValue.ParseList(System.Collections.Generic.IList? inputs) -> System.Collections.Generic.IList! static Microsoft.Net.Http.Headers.CookieHeaderValue.ParseStrictList(System.Collections.Generic.IList? inputs) -> System.Collections.Generic.IList! @@ -226,7 +226,7 @@ static Microsoft.Net.Http.Headers.EntityTagHeaderValue.Any.get -> Microsoft.Net. static Microsoft.Net.Http.Headers.EntityTagHeaderValue.Parse(Microsoft.Extensions.Primitives.StringSegment input) -> Microsoft.Net.Http.Headers.EntityTagHeaderValue! static Microsoft.Net.Http.Headers.EntityTagHeaderValue.ParseList(System.Collections.Generic.IList? inputs) -> System.Collections.Generic.IList! static Microsoft.Net.Http.Headers.EntityTagHeaderValue.ParseStrictList(System.Collections.Generic.IList? inputs) -> System.Collections.Generic.IList! -static Microsoft.Net.Http.Headers.EntityTagHeaderValue.TryParse(Microsoft.Extensions.Primitives.StringSegment input, out Microsoft.Net.Http.Headers.EntityTagHeaderValue! parsedValue) -> bool +static Microsoft.Net.Http.Headers.EntityTagHeaderValue.TryParse(Microsoft.Extensions.Primitives.StringSegment input, out Microsoft.Net.Http.Headers.EntityTagHeaderValue? parsedValue) -> bool static Microsoft.Net.Http.Headers.EntityTagHeaderValue.TryParseList(System.Collections.Generic.IList? inputs, out System.Collections.Generic.IList? parsedValues) -> bool static Microsoft.Net.Http.Headers.EntityTagHeaderValue.TryParseStrictList(System.Collections.Generic.IList? inputs, out System.Collections.Generic.IList? parsedValues) -> bool static Microsoft.Net.Http.Headers.HeaderUtilities.ContainsCacheDirective(Microsoft.Extensions.Primitives.StringValues cacheControlDirectives, string! targetDirectives) -> bool @@ -258,7 +258,7 @@ static Microsoft.Net.Http.Headers.NameValueHeaderValue.TryParseStrictList(System static Microsoft.Net.Http.Headers.RangeConditionHeaderValue.Parse(Microsoft.Extensions.Primitives.StringSegment input) -> Microsoft.Net.Http.Headers.RangeConditionHeaderValue! static Microsoft.Net.Http.Headers.RangeConditionHeaderValue.TryParse(Microsoft.Extensions.Primitives.StringSegment input, out Microsoft.Net.Http.Headers.RangeConditionHeaderValue? parsedValue) -> bool static Microsoft.Net.Http.Headers.RangeHeaderValue.Parse(Microsoft.Extensions.Primitives.StringSegment input) -> Microsoft.Net.Http.Headers.RangeHeaderValue! -static Microsoft.Net.Http.Headers.RangeHeaderValue.TryParse(Microsoft.Extensions.Primitives.StringSegment input, out Microsoft.Net.Http.Headers.RangeHeaderValue! parsedValue) -> bool +static Microsoft.Net.Http.Headers.RangeHeaderValue.TryParse(Microsoft.Extensions.Primitives.StringSegment input, out Microsoft.Net.Http.Headers.RangeHeaderValue? parsedValue) -> bool static Microsoft.Net.Http.Headers.SetCookieHeaderValue.Parse(Microsoft.Extensions.Primitives.StringSegment input) -> Microsoft.Net.Http.Headers.SetCookieHeaderValue! static Microsoft.Net.Http.Headers.SetCookieHeaderValue.ParseList(System.Collections.Generic.IList? inputs) -> System.Collections.Generic.IList! static Microsoft.Net.Http.Headers.SetCookieHeaderValue.ParseStrictList(System.Collections.Generic.IList? inputs) -> System.Collections.Generic.IList! @@ -268,7 +268,7 @@ static Microsoft.Net.Http.Headers.SetCookieHeaderValue.TryParseStrictList(System static Microsoft.Net.Http.Headers.StringWithQualityHeaderValue.Parse(Microsoft.Extensions.Primitives.StringSegment input) -> Microsoft.Net.Http.Headers.StringWithQualityHeaderValue! static Microsoft.Net.Http.Headers.StringWithQualityHeaderValue.ParseList(System.Collections.Generic.IList? input) -> System.Collections.Generic.IList! static Microsoft.Net.Http.Headers.StringWithQualityHeaderValue.ParseStrictList(System.Collections.Generic.IList? input) -> System.Collections.Generic.IList! -static Microsoft.Net.Http.Headers.StringWithQualityHeaderValue.TryParse(Microsoft.Extensions.Primitives.StringSegment input, out Microsoft.Net.Http.Headers.StringWithQualityHeaderValue! parsedValue) -> bool +static Microsoft.Net.Http.Headers.StringWithQualityHeaderValue.TryParse(Microsoft.Extensions.Primitives.StringSegment input, out Microsoft.Net.Http.Headers.StringWithQualityHeaderValue? parsedValue) -> bool static Microsoft.Net.Http.Headers.StringWithQualityHeaderValue.TryParseList(System.Collections.Generic.IList? input, out System.Collections.Generic.IList? parsedValues) -> bool static Microsoft.Net.Http.Headers.StringWithQualityHeaderValue.TryParseStrictList(System.Collections.Generic.IList? input, out System.Collections.Generic.IList? parsedValues) -> bool static Microsoft.Net.Http.Headers.StringWithQualityHeaderValueComparer.QualityComparer.get -> Microsoft.Net.Http.Headers.StringWithQualityHeaderValueComparer! diff --git a/src/Http/Headers/src/PublicAPI.Unshipped.txt b/src/Http/Headers/src/PublicAPI.Unshipped.txt index 61edb03d18f1..7dc5c58110bf 100644 --- a/src/Http/Headers/src/PublicAPI.Unshipped.txt +++ b/src/Http/Headers/src/PublicAPI.Unshipped.txt @@ -1,9 +1 @@ #nullable enable -*REMOVED*static Microsoft.Net.Http.Headers.ContentRangeHeaderValue.TryParse(Microsoft.Extensions.Primitives.StringSegment input, out Microsoft.Net.Http.Headers.ContentRangeHeaderValue! parsedValue) -> bool -*REMOVED*static Microsoft.Net.Http.Headers.EntityTagHeaderValue.TryParse(Microsoft.Extensions.Primitives.StringSegment input, out Microsoft.Net.Http.Headers.EntityTagHeaderValue! parsedValue) -> bool -*REMOVED*static Microsoft.Net.Http.Headers.RangeHeaderValue.TryParse(Microsoft.Extensions.Primitives.StringSegment input, out Microsoft.Net.Http.Headers.RangeHeaderValue! parsedValue) -> bool -*REMOVED*static Microsoft.Net.Http.Headers.StringWithQualityHeaderValue.TryParse(Microsoft.Extensions.Primitives.StringSegment input, out Microsoft.Net.Http.Headers.StringWithQualityHeaderValue! parsedValue) -> bool -static Microsoft.Net.Http.Headers.ContentRangeHeaderValue.TryParse(Microsoft.Extensions.Primitives.StringSegment input, out Microsoft.Net.Http.Headers.ContentRangeHeaderValue? parsedValue) -> bool -static Microsoft.Net.Http.Headers.EntityTagHeaderValue.TryParse(Microsoft.Extensions.Primitives.StringSegment input, out Microsoft.Net.Http.Headers.EntityTagHeaderValue? parsedValue) -> bool -static Microsoft.Net.Http.Headers.RangeHeaderValue.TryParse(Microsoft.Extensions.Primitives.StringSegment input, out Microsoft.Net.Http.Headers.RangeHeaderValue? parsedValue) -> bool -static Microsoft.Net.Http.Headers.StringWithQualityHeaderValue.TryParse(Microsoft.Extensions.Primitives.StringSegment input, out Microsoft.Net.Http.Headers.StringWithQualityHeaderValue? parsedValue) -> bool diff --git a/src/Http/Http.Abstractions/src/PublicAPI.Shipped.txt b/src/Http/Http.Abstractions/src/PublicAPI.Shipped.txt index 9c069efee8f6..d6c04a9a103f 100644 --- a/src/Http/Http.Abstractions/src/PublicAPI.Shipped.txt +++ b/src/Http/Http.Abstractions/src/PublicAPI.Shipped.txt @@ -138,6 +138,7 @@ const Microsoft.AspNetCore.Http.StatusCodes.Status428PreconditionRequired = 428 const Microsoft.AspNetCore.Http.StatusCodes.Status429TooManyRequests = 429 -> int const Microsoft.AspNetCore.Http.StatusCodes.Status431RequestHeaderFieldsTooLarge = 431 -> int const Microsoft.AspNetCore.Http.StatusCodes.Status451UnavailableForLegalReasons = 451 -> int +const Microsoft.AspNetCore.Http.StatusCodes.Status499ClientClosedRequest = 499 -> int const Microsoft.AspNetCore.Http.StatusCodes.Status500InternalServerError = 500 -> int const Microsoft.AspNetCore.Http.StatusCodes.Status501NotImplemented = 501 -> int const Microsoft.AspNetCore.Http.StatusCodes.Status502BadGateway = 502 -> int @@ -149,6 +150,8 @@ const Microsoft.AspNetCore.Http.StatusCodes.Status507InsufficientStorage = 507 - const Microsoft.AspNetCore.Http.StatusCodes.Status508LoopDetected = 508 -> int const Microsoft.AspNetCore.Http.StatusCodes.Status510NotExtended = 510 -> int const Microsoft.AspNetCore.Http.StatusCodes.Status511NetworkAuthenticationRequired = 511 -> int +Microsoft.AspNetCore.Antiforgery.IAntiforgeryMetadata +Microsoft.AspNetCore.Antiforgery.IAntiforgeryMetadata.RequiresValidation.get -> bool Microsoft.AspNetCore.Builder.EndpointBuilder Microsoft.AspNetCore.Builder.EndpointBuilder.ApplicationServices.get -> System.IServiceProvider! Microsoft.AspNetCore.Builder.EndpointBuilder.ApplicationServices.init -> void @@ -220,7 +223,7 @@ Microsoft.AspNetCore.Http.CookieSecurePolicy.Always = 1 -> Microsoft.AspNetCore. Microsoft.AspNetCore.Http.CookieSecurePolicy.None = 2 -> Microsoft.AspNetCore.Http.CookieSecurePolicy Microsoft.AspNetCore.Http.CookieSecurePolicy.SameAsRequest = 0 -> Microsoft.AspNetCore.Http.CookieSecurePolicy Microsoft.AspNetCore.Http.DefaultEndpointFilterInvocationContext -Microsoft.AspNetCore.Http.DefaultEndpointFilterInvocationContext.DefaultEndpointFilterInvocationContext(Microsoft.AspNetCore.Http.HttpContext! httpContext, params object![]! arguments) -> void +Microsoft.AspNetCore.Http.DefaultEndpointFilterInvocationContext.DefaultEndpointFilterInvocationContext(Microsoft.AspNetCore.Http.HttpContext! httpContext, params object?[]! arguments) -> void Microsoft.AspNetCore.Http.Endpoint Microsoft.AspNetCore.Http.Endpoint.DisplayName.get -> string? Microsoft.AspNetCore.Http.Endpoint.Endpoint(Microsoft.AspNetCore.Http.RequestDelegate? requestDelegate, Microsoft.AspNetCore.Http.EndpointMetadataCollection? metadata, string? displayName) -> void @@ -284,8 +287,11 @@ Microsoft.AspNetCore.Http.HttpRequest.HttpRequest() -> void Microsoft.AspNetCore.Http.HttpResponse Microsoft.AspNetCore.Http.HttpResponse.HttpResponse() -> void Microsoft.AspNetCore.Http.HttpResponseWritingExtensions +Microsoft.AspNetCore.Http.HttpResults.EmptyHttpResult +Microsoft.AspNetCore.Http.HttpResults.EmptyHttpResult.ExecuteAsync(Microsoft.AspNetCore.Http.HttpContext! httpContext) -> System.Threading.Tasks.Task! Microsoft.AspNetCore.Http.HttpValidationProblemDetails Microsoft.AspNetCore.Http.HttpValidationProblemDetails.Errors.get -> System.Collections.Generic.IDictionary! +Microsoft.AspNetCore.Http.HttpValidationProblemDetails.Errors.set -> void Microsoft.AspNetCore.Http.HttpValidationProblemDetails.HttpValidationProblemDetails() -> void Microsoft.AspNetCore.Http.HttpValidationProblemDetails.HttpValidationProblemDetails(System.Collections.Generic.IDictionary! errors) -> void Microsoft.AspNetCore.Http.IBindableFromHttpContext @@ -311,6 +317,7 @@ Microsoft.AspNetCore.Http.IMiddlewareFactory.Release(Microsoft.AspNetCore.Http.I Microsoft.AspNetCore.Http.INestedHttpResult Microsoft.AspNetCore.Http.INestedHttpResult.Result.get -> Microsoft.AspNetCore.Http.IResult! Microsoft.AspNetCore.Http.IProblemDetailsService +Microsoft.AspNetCore.Http.IProblemDetailsService.TryWriteAsync(Microsoft.AspNetCore.Http.ProblemDetailsContext! context) -> System.Threading.Tasks.ValueTask Microsoft.AspNetCore.Http.IProblemDetailsService.WriteAsync(Microsoft.AspNetCore.Http.ProblemDetailsContext! context) -> System.Threading.Tasks.ValueTask Microsoft.AspNetCore.Http.IProblemDetailsWriter Microsoft.AspNetCore.Http.IProblemDetailsWriter.CanWrite(Microsoft.AspNetCore.Http.ProblemDetailsContext! context) -> bool @@ -323,6 +330,16 @@ Microsoft.AspNetCore.Http.IValueHttpResult Microsoft.AspNetCore.Http.IValueHttpResult.Value.get -> object? Microsoft.AspNetCore.Http.IValueHttpResult Microsoft.AspNetCore.Http.IValueHttpResult.Value.get -> TValue? +Microsoft.AspNetCore.Http.Metadata.AcceptsMetadata +Microsoft.AspNetCore.Http.Metadata.AcceptsMetadata.AcceptsMetadata(string![]! contentTypes, System.Type? type = null, bool isOptional = false) -> void +Microsoft.AspNetCore.Http.Metadata.AcceptsMetadata.ContentTypes.get -> System.Collections.Generic.IReadOnlyList! +Microsoft.AspNetCore.Http.Metadata.AcceptsMetadata.IsOptional.get -> bool +Microsoft.AspNetCore.Http.Metadata.AcceptsMetadata.RequestType.get -> System.Type? +Microsoft.AspNetCore.Http.Metadata.FormMappingOptionsMetadata +Microsoft.AspNetCore.Http.Metadata.FormMappingOptionsMetadata.FormMappingOptionsMetadata(int? maxCollectionSize = null, int? maxRecursionDepth = null, int? maxKeySize = null) -> void +Microsoft.AspNetCore.Http.Metadata.FormMappingOptionsMetadata.MaxCollectionSize.get -> int? +Microsoft.AspNetCore.Http.Metadata.FormMappingOptionsMetadata.MaxKeySize.get -> int? +Microsoft.AspNetCore.Http.Metadata.FormMappingOptionsMetadata.MaxRecursionDepth.get -> int? Microsoft.AspNetCore.Http.Metadata.IAcceptsMetadata Microsoft.AspNetCore.Http.Metadata.IAcceptsMetadata.ContentTypes.get -> System.Collections.Generic.IReadOnlyList! Microsoft.AspNetCore.Http.Metadata.IAcceptsMetadata.IsOptional.get -> bool @@ -335,6 +352,17 @@ Microsoft.AspNetCore.Http.Metadata.IEndpointParameterMetadataProvider Microsoft.AspNetCore.Http.Metadata.IEndpointParameterMetadataProvider.PopulateMetadata(System.Reflection.ParameterInfo! parameter, Microsoft.AspNetCore.Builder.EndpointBuilder! builder) -> void Microsoft.AspNetCore.Http.Metadata.IEndpointSummaryMetadata Microsoft.AspNetCore.Http.Metadata.IEndpointSummaryMetadata.Summary.get -> string! +Microsoft.AspNetCore.Http.Metadata.IFormOptionsMetadata +Microsoft.AspNetCore.Http.Metadata.IFormOptionsMetadata.BufferBody.get -> bool? +Microsoft.AspNetCore.Http.Metadata.IFormOptionsMetadata.BufferBodyLengthLimit.get -> long? +Microsoft.AspNetCore.Http.Metadata.IFormOptionsMetadata.KeyLengthLimit.get -> int? +Microsoft.AspNetCore.Http.Metadata.IFormOptionsMetadata.MemoryBufferThreshold.get -> int? +Microsoft.AspNetCore.Http.Metadata.IFormOptionsMetadata.MultipartBodyLengthLimit.get -> long? +Microsoft.AspNetCore.Http.Metadata.IFormOptionsMetadata.MultipartBoundaryLengthLimit.get -> int? +Microsoft.AspNetCore.Http.Metadata.IFormOptionsMetadata.MultipartHeadersCountLimit.get -> int? +Microsoft.AspNetCore.Http.Metadata.IFormOptionsMetadata.MultipartHeadersLengthLimit.get -> int? +Microsoft.AspNetCore.Http.Metadata.IFormOptionsMetadata.ValueCountLimit.get -> int? +Microsoft.AspNetCore.Http.Metadata.IFormOptionsMetadata.ValueLengthLimit.get -> int? Microsoft.AspNetCore.Http.Metadata.IFromBodyMetadata Microsoft.AspNetCore.Http.Metadata.IFromBodyMetadata.AllowEmpty.get -> bool Microsoft.AspNetCore.Http.Metadata.IFromFormMetadata @@ -352,6 +380,8 @@ Microsoft.AspNetCore.Http.Metadata.IProducesResponseTypeMetadata.StatusCode.get Microsoft.AspNetCore.Http.Metadata.IProducesResponseTypeMetadata.Type.get -> System.Type? Microsoft.AspNetCore.Http.Metadata.IRequestSizeLimitMetadata Microsoft.AspNetCore.Http.Metadata.IRequestSizeLimitMetadata.MaxRequestBodySize.get -> long? +Microsoft.AspNetCore.Http.Metadata.IRouteDiagnosticsMetadata +Microsoft.AspNetCore.Http.Metadata.IRouteDiagnosticsMetadata.Route.get -> string! Microsoft.AspNetCore.Http.Metadata.ISkipStatusCodePagesMetadata Microsoft.AspNetCore.Http.Metadata.ITagsMetadata Microsoft.AspNetCore.Http.Metadata.ITagsMetadata.Tags.get -> System.Collections.Generic.IReadOnlyList! @@ -374,11 +404,18 @@ Microsoft.AspNetCore.Http.PathString.Value.get -> string? Microsoft.AspNetCore.Http.ProblemDetailsContext Microsoft.AspNetCore.Http.ProblemDetailsContext.AdditionalMetadata.get -> Microsoft.AspNetCore.Http.EndpointMetadataCollection? Microsoft.AspNetCore.Http.ProblemDetailsContext.AdditionalMetadata.init -> void +Microsoft.AspNetCore.Http.ProblemDetailsContext.Exception.get -> System.Exception? +Microsoft.AspNetCore.Http.ProblemDetailsContext.Exception.init -> void Microsoft.AspNetCore.Http.ProblemDetailsContext.HttpContext.get -> Microsoft.AspNetCore.Http.HttpContext! Microsoft.AspNetCore.Http.ProblemDetailsContext.HttpContext.init -> void Microsoft.AspNetCore.Http.ProblemDetailsContext.ProblemDetails.get -> Microsoft.AspNetCore.Mvc.ProblemDetails! -Microsoft.AspNetCore.Http.ProblemDetailsContext.ProblemDetails.init -> void +Microsoft.AspNetCore.Http.ProblemDetailsContext.ProblemDetails.set -> void Microsoft.AspNetCore.Http.ProblemDetailsContext.ProblemDetailsContext() -> void +Microsoft.AspNetCore.Http.ProducesResponseTypeMetadata +Microsoft.AspNetCore.Http.ProducesResponseTypeMetadata.ContentTypes.get -> System.Collections.Generic.IEnumerable! +Microsoft.AspNetCore.Http.ProducesResponseTypeMetadata.ProducesResponseTypeMetadata(int statusCode, System.Type? type = null, string![]? contentTypes = null) -> void +Microsoft.AspNetCore.Http.ProducesResponseTypeMetadata.StatusCode.get -> int +Microsoft.AspNetCore.Http.ProducesResponseTypeMetadata.Type.get -> System.Type? Microsoft.AspNetCore.Http.QueryString Microsoft.AspNetCore.Http.QueryString.Add(Microsoft.AspNetCore.Http.QueryString other) -> Microsoft.AspNetCore.Http.QueryString Microsoft.AspNetCore.Http.QueryString.Add(string! name, string! value) -> Microsoft.AspNetCore.Http.QueryString @@ -402,6 +439,7 @@ Microsoft.AspNetCore.Mvc.ProblemDetails Microsoft.AspNetCore.Mvc.ProblemDetails.Detail.get -> string? Microsoft.AspNetCore.Mvc.ProblemDetails.Detail.set -> void Microsoft.AspNetCore.Mvc.ProblemDetails.Extensions.get -> System.Collections.Generic.IDictionary! +Microsoft.AspNetCore.Mvc.ProblemDetails.Extensions.set -> void Microsoft.AspNetCore.Mvc.ProblemDetails.Instance.get -> string? Microsoft.AspNetCore.Mvc.ProblemDetails.Instance.set -> void Microsoft.AspNetCore.Mvc.ProblemDetails.ProblemDetails() -> void @@ -448,9 +486,11 @@ override Microsoft.AspNetCore.Http.FragmentString.ToString() -> string! override Microsoft.AspNetCore.Http.HostString.Equals(object? obj) -> bool override Microsoft.AspNetCore.Http.HostString.GetHashCode() -> int override Microsoft.AspNetCore.Http.HostString.ToString() -> string! +override Microsoft.AspNetCore.Http.Metadata.AcceptsMetadata.ToString() -> string! override Microsoft.AspNetCore.Http.PathString.Equals(object? obj) -> bool override Microsoft.AspNetCore.Http.PathString.GetHashCode() -> int override Microsoft.AspNetCore.Http.PathString.ToString() -> string! +override Microsoft.AspNetCore.Http.ProducesResponseTypeMetadata.ToString() -> string! override Microsoft.AspNetCore.Http.QueryString.Equals(object? obj) -> bool override Microsoft.AspNetCore.Http.QueryString.GetHashCode() -> int override Microsoft.AspNetCore.Http.QueryString.ToString() -> string! @@ -465,6 +505,15 @@ static Microsoft.AspNetCore.Builder.UseMiddlewareExtensions.UseMiddleware(this M static Microsoft.AspNetCore.Builder.UseMiddlewareExtensions.UseMiddleware(this Microsoft.AspNetCore.Builder.IApplicationBuilder! app, params object?[]! args) -> Microsoft.AspNetCore.Builder.IApplicationBuilder! static Microsoft.AspNetCore.Builder.UsePathBaseExtensions.UsePathBase(this Microsoft.AspNetCore.Builder.IApplicationBuilder! app, Microsoft.AspNetCore.Http.PathString pathBase) -> Microsoft.AspNetCore.Builder.IApplicationBuilder! static Microsoft.AspNetCore.Builder.UseWhenExtensions.UseWhen(this Microsoft.AspNetCore.Builder.IApplicationBuilder! app, System.Func! predicate, System.Action! configuration) -> Microsoft.AspNetCore.Builder.IApplicationBuilder! +static Microsoft.AspNetCore.Http.EndpointFilterInvocationContext.Create(Microsoft.AspNetCore.Http.HttpContext! httpContext) -> Microsoft.AspNetCore.Http.EndpointFilterInvocationContext! +static Microsoft.AspNetCore.Http.EndpointFilterInvocationContext.Create(Microsoft.AspNetCore.Http.HttpContext! httpContext, T arg) -> Microsoft.AspNetCore.Http.EndpointFilterInvocationContext! +static Microsoft.AspNetCore.Http.EndpointFilterInvocationContext.Create(Microsoft.AspNetCore.Http.HttpContext! httpContext, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6, T7 arg7, T8 arg8) -> Microsoft.AspNetCore.Http.EndpointFilterInvocationContext! +static Microsoft.AspNetCore.Http.EndpointFilterInvocationContext.Create(Microsoft.AspNetCore.Http.HttpContext! httpContext, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6, T7 arg7) -> Microsoft.AspNetCore.Http.EndpointFilterInvocationContext! +static Microsoft.AspNetCore.Http.EndpointFilterInvocationContext.Create(Microsoft.AspNetCore.Http.HttpContext! httpContext, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6) -> Microsoft.AspNetCore.Http.EndpointFilterInvocationContext! +static Microsoft.AspNetCore.Http.EndpointFilterInvocationContext.Create(Microsoft.AspNetCore.Http.HttpContext! httpContext, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5) -> Microsoft.AspNetCore.Http.EndpointFilterInvocationContext! +static Microsoft.AspNetCore.Http.EndpointFilterInvocationContext.Create(Microsoft.AspNetCore.Http.HttpContext! httpContext, T1 arg1, T2 arg2, T3 arg3, T4 arg4) -> Microsoft.AspNetCore.Http.EndpointFilterInvocationContext! +static Microsoft.AspNetCore.Http.EndpointFilterInvocationContext.Create(Microsoft.AspNetCore.Http.HttpContext! httpContext, T1 arg1, T2 arg2, T3 arg3) -> Microsoft.AspNetCore.Http.EndpointFilterInvocationContext! +static Microsoft.AspNetCore.Http.EndpointFilterInvocationContext.Create(Microsoft.AspNetCore.Http.HttpContext! httpContext, T1 arg1, T2 arg2) -> Microsoft.AspNetCore.Http.EndpointFilterInvocationContext! static Microsoft.AspNetCore.Http.EndpointHttpContextExtensions.GetEndpoint(this Microsoft.AspNetCore.Http.HttpContext! context) -> Microsoft.AspNetCore.Http.Endpoint? static Microsoft.AspNetCore.Http.EndpointHttpContextExtensions.SetEndpoint(this Microsoft.AspNetCore.Http.HttpContext! context, Microsoft.AspNetCore.Http.Endpoint? endpoint) -> void static Microsoft.AspNetCore.Http.FragmentString.FromUriComponent(string! uriComponent) -> Microsoft.AspNetCore.Http.FragmentString @@ -499,6 +548,7 @@ static Microsoft.AspNetCore.Http.HttpProtocol.IsHttp2(string! protocol) -> bool static Microsoft.AspNetCore.Http.HttpProtocol.IsHttp3(string! protocol) -> bool static Microsoft.AspNetCore.Http.HttpResponseWritingExtensions.WriteAsync(this Microsoft.AspNetCore.Http.HttpResponse! response, string! text, System.Text.Encoding! encoding, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task! static Microsoft.AspNetCore.Http.HttpResponseWritingExtensions.WriteAsync(this Microsoft.AspNetCore.Http.HttpResponse! response, string! text, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task! +static Microsoft.AspNetCore.Http.HttpResults.EmptyHttpResult.Instance.get -> Microsoft.AspNetCore.Http.HttpResults.EmptyHttpResult! static Microsoft.AspNetCore.Http.PathString.FromUriComponent(string! uriComponent) -> Microsoft.AspNetCore.Http.PathString static Microsoft.AspNetCore.Http.PathString.FromUriComponent(System.Uri! uri) -> Microsoft.AspNetCore.Http.PathString static Microsoft.AspNetCore.Http.PathString.implicit operator Microsoft.AspNetCore.Http.PathString(string? s) -> Microsoft.AspNetCore.Http.PathString diff --git a/src/Http/Http.Abstractions/src/PublicAPI.Unshipped.txt b/src/Http/Http.Abstractions/src/PublicAPI.Unshipped.txt index 3ac3bc3a4d15..7dc5c58110bf 100644 --- a/src/Http/Http.Abstractions/src/PublicAPI.Unshipped.txt +++ b/src/Http/Http.Abstractions/src/PublicAPI.Unshipped.txt @@ -1,55 +1 @@ #nullable enable -const Microsoft.AspNetCore.Http.StatusCodes.Status499ClientClosedRequest = 499 -> int -*REMOVED*Microsoft.AspNetCore.Http.DefaultEndpointFilterInvocationContext.DefaultEndpointFilterInvocationContext(Microsoft.AspNetCore.Http.HttpContext! httpContext, params object![]! arguments) -> void -Microsoft.AspNetCore.Antiforgery.IAntiforgeryMetadata -Microsoft.AspNetCore.Antiforgery.IAntiforgeryMetadata.RequiresValidation.get -> bool -Microsoft.AspNetCore.Http.DefaultEndpointFilterInvocationContext.DefaultEndpointFilterInvocationContext(Microsoft.AspNetCore.Http.HttpContext! httpContext, params object?[]! arguments) -> void -Microsoft.AspNetCore.Http.HttpResults.EmptyHttpResult -Microsoft.AspNetCore.Http.HttpResults.EmptyHttpResult.ExecuteAsync(Microsoft.AspNetCore.Http.HttpContext! httpContext) -> System.Threading.Tasks.Task! -Microsoft.AspNetCore.Http.HttpValidationProblemDetails.Errors.set -> void -Microsoft.AspNetCore.Http.IProblemDetailsService.TryWriteAsync(Microsoft.AspNetCore.Http.ProblemDetailsContext! context) -> System.Threading.Tasks.ValueTask -Microsoft.AspNetCore.Http.Metadata.AcceptsMetadata -Microsoft.AspNetCore.Http.Metadata.AcceptsMetadata.AcceptsMetadata(string![]! contentTypes, System.Type? type = null, bool isOptional = false) -> void -Microsoft.AspNetCore.Http.Metadata.AcceptsMetadata.ContentTypes.get -> System.Collections.Generic.IReadOnlyList! -Microsoft.AspNetCore.Http.Metadata.AcceptsMetadata.IsOptional.get -> bool -Microsoft.AspNetCore.Http.Metadata.AcceptsMetadata.RequestType.get -> System.Type? -Microsoft.AspNetCore.Http.Metadata.FormMappingOptionsMetadata -Microsoft.AspNetCore.Http.Metadata.FormMappingOptionsMetadata.FormMappingOptionsMetadata(int? maxCollectionSize = null, int? maxRecursionDepth = null, int? maxKeySize = null) -> void -Microsoft.AspNetCore.Http.Metadata.FormMappingOptionsMetadata.MaxCollectionSize.get -> int? -Microsoft.AspNetCore.Http.Metadata.FormMappingOptionsMetadata.MaxKeySize.get -> int? -Microsoft.AspNetCore.Http.Metadata.FormMappingOptionsMetadata.MaxRecursionDepth.get -> int? -Microsoft.AspNetCore.Http.Metadata.IFormOptionsMetadata -Microsoft.AspNetCore.Http.Metadata.IFormOptionsMetadata.BufferBody.get -> bool? -Microsoft.AspNetCore.Http.Metadata.IFormOptionsMetadata.BufferBodyLengthLimit.get -> long? -Microsoft.AspNetCore.Http.Metadata.IFormOptionsMetadata.KeyLengthLimit.get -> int? -Microsoft.AspNetCore.Http.Metadata.IFormOptionsMetadata.MemoryBufferThreshold.get -> int? -Microsoft.AspNetCore.Http.Metadata.IFormOptionsMetadata.MultipartBodyLengthLimit.get -> long? -Microsoft.AspNetCore.Http.Metadata.IFormOptionsMetadata.MultipartBoundaryLengthLimit.get -> int? -Microsoft.AspNetCore.Http.Metadata.IFormOptionsMetadata.MultipartHeadersCountLimit.get -> int? -Microsoft.AspNetCore.Http.Metadata.IFormOptionsMetadata.MultipartHeadersLengthLimit.get -> int? -Microsoft.AspNetCore.Http.Metadata.IFormOptionsMetadata.ValueCountLimit.get -> int? -Microsoft.AspNetCore.Http.Metadata.IFormOptionsMetadata.ValueLengthLimit.get -> int? -Microsoft.AspNetCore.Http.Metadata.IRouteDiagnosticsMetadata -Microsoft.AspNetCore.Http.Metadata.IRouteDiagnosticsMetadata.Route.get -> string! -Microsoft.AspNetCore.Http.ProblemDetailsContext.Exception.get -> System.Exception? -Microsoft.AspNetCore.Http.ProblemDetailsContext.Exception.init -> void -*REMOVED*Microsoft.AspNetCore.Http.ProblemDetailsContext.ProblemDetails.init -> void -Microsoft.AspNetCore.Http.ProblemDetailsContext.ProblemDetails.set -> void -Microsoft.AspNetCore.Http.ProducesResponseTypeMetadata -Microsoft.AspNetCore.Http.ProducesResponseTypeMetadata.ContentTypes.get -> System.Collections.Generic.IEnumerable! -Microsoft.AspNetCore.Http.ProducesResponseTypeMetadata.ProducesResponseTypeMetadata(int statusCode, System.Type? type = null, string![]? contentTypes = null) -> void -Microsoft.AspNetCore.Http.ProducesResponseTypeMetadata.StatusCode.get -> int -Microsoft.AspNetCore.Http.ProducesResponseTypeMetadata.Type.get -> System.Type? -Microsoft.AspNetCore.Mvc.ProblemDetails.Extensions.set -> void -override Microsoft.AspNetCore.Http.Metadata.AcceptsMetadata.ToString() -> string! -override Microsoft.AspNetCore.Http.ProducesResponseTypeMetadata.ToString() -> string! -static Microsoft.AspNetCore.Http.EndpointFilterInvocationContext.Create(Microsoft.AspNetCore.Http.HttpContext! httpContext) -> Microsoft.AspNetCore.Http.EndpointFilterInvocationContext! -static Microsoft.AspNetCore.Http.EndpointFilterInvocationContext.Create(Microsoft.AspNetCore.Http.HttpContext! httpContext, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6, T7 arg7, T8 arg8) -> Microsoft.AspNetCore.Http.EndpointFilterInvocationContext! -static Microsoft.AspNetCore.Http.EndpointFilterInvocationContext.Create(Microsoft.AspNetCore.Http.HttpContext! httpContext, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6, T7 arg7) -> Microsoft.AspNetCore.Http.EndpointFilterInvocationContext! -static Microsoft.AspNetCore.Http.EndpointFilterInvocationContext.Create(Microsoft.AspNetCore.Http.HttpContext! httpContext, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6) -> Microsoft.AspNetCore.Http.EndpointFilterInvocationContext! -static Microsoft.AspNetCore.Http.EndpointFilterInvocationContext.Create(Microsoft.AspNetCore.Http.HttpContext! httpContext, T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5) -> Microsoft.AspNetCore.Http.EndpointFilterInvocationContext! -static Microsoft.AspNetCore.Http.EndpointFilterInvocationContext.Create(Microsoft.AspNetCore.Http.HttpContext! httpContext, T1 arg1, T2 arg2, T3 arg3, T4 arg4) -> Microsoft.AspNetCore.Http.EndpointFilterInvocationContext! -static Microsoft.AspNetCore.Http.EndpointFilterInvocationContext.Create(Microsoft.AspNetCore.Http.HttpContext! httpContext, T1 arg1, T2 arg2, T3 arg3) -> Microsoft.AspNetCore.Http.EndpointFilterInvocationContext! -static Microsoft.AspNetCore.Http.EndpointFilterInvocationContext.Create(Microsoft.AspNetCore.Http.HttpContext! httpContext, T1 arg1, T2 arg2) -> Microsoft.AspNetCore.Http.EndpointFilterInvocationContext! -static Microsoft.AspNetCore.Http.EndpointFilterInvocationContext.Create(Microsoft.AspNetCore.Http.HttpContext! httpContext, T arg) -> Microsoft.AspNetCore.Http.EndpointFilterInvocationContext! -static Microsoft.AspNetCore.Http.HttpResults.EmptyHttpResult.Instance.get -> Microsoft.AspNetCore.Http.HttpResults.EmptyHttpResult! diff --git a/src/Http/Http.Extensions/src/PublicAPI.Shipped.txt b/src/Http/Http.Extensions/src/PublicAPI.Shipped.txt index 8953eabfd42b..62691cb28ddc 100644 --- a/src/Http/Http.Extensions/src/PublicAPI.Shipped.txt +++ b/src/Http/Http.Extensions/src/PublicAPI.Shipped.txt @@ -104,6 +104,7 @@ Microsoft.AspNetCore.Http.HttpRequestJsonExtensions Microsoft.AspNetCore.Http.HttpResponseJsonExtensions Microsoft.AspNetCore.Http.HttpValidationProblemDetails (forwarded, contained in Microsoft.AspNetCore.Http.Abstractions) Microsoft.AspNetCore.Http.HttpValidationProblemDetails.Errors.get -> System.Collections.Generic.IDictionary! (forwarded, contained in Microsoft.AspNetCore.Http.Abstractions) +Microsoft.AspNetCore.Http.HttpValidationProblemDetails.Errors.set -> void (forwarded, contained in Microsoft.AspNetCore.Http.Abstractions) Microsoft.AspNetCore.Http.HttpValidationProblemDetails.HttpValidationProblemDetails() -> void (forwarded, contained in Microsoft.AspNetCore.Http.Abstractions) Microsoft.AspNetCore.Http.HttpValidationProblemDetails.HttpValidationProblemDetails(System.Collections.Generic.IDictionary! errors) -> void (forwarded, contained in Microsoft.AspNetCore.Http.Abstractions) Microsoft.AspNetCore.Http.Json.JsonOptions @@ -140,6 +141,7 @@ Microsoft.AspNetCore.Mvc.ProblemDetails (forwarded, contained in Microsoft.AspNe Microsoft.AspNetCore.Mvc.ProblemDetails.Detail.get -> string? (forwarded, contained in Microsoft.AspNetCore.Http.Abstractions) Microsoft.AspNetCore.Mvc.ProblemDetails.Detail.set -> void (forwarded, contained in Microsoft.AspNetCore.Http.Abstractions) Microsoft.AspNetCore.Mvc.ProblemDetails.Extensions.get -> System.Collections.Generic.IDictionary! (forwarded, contained in Microsoft.AspNetCore.Http.Abstractions) +Microsoft.AspNetCore.Mvc.ProblemDetails.Extensions.set -> void (forwarded, contained in Microsoft.AspNetCore.Http.Abstractions) Microsoft.AspNetCore.Mvc.ProblemDetails.Instance.get -> string? (forwarded, contained in Microsoft.AspNetCore.Http.Abstractions) Microsoft.AspNetCore.Mvc.ProblemDetails.Instance.set -> void (forwarded, contained in Microsoft.AspNetCore.Http.Abstractions) Microsoft.AspNetCore.Mvc.ProblemDetails.ProblemDetails() -> void (forwarded, contained in Microsoft.AspNetCore.Http.Abstractions) @@ -151,9 +153,12 @@ Microsoft.AspNetCore.Mvc.ProblemDetails.Type.get -> string? (forwarded, containe Microsoft.AspNetCore.Mvc.ProblemDetails.Type.set -> void (forwarded, contained in Microsoft.AspNetCore.Http.Abstractions) Microsoft.Extensions.DependencyInjection.HttpJsonServiceExtensions Microsoft.Extensions.DependencyInjection.ProblemDetailsServiceCollectionExtensions +override Microsoft.AspNetCore.Http.EndpointDescriptionAttribute.ToString() -> string! +override Microsoft.AspNetCore.Http.EndpointSummaryAttribute.ToString() -> string! override Microsoft.AspNetCore.Http.Extensions.QueryBuilder.Equals(object? obj) -> bool override Microsoft.AspNetCore.Http.Extensions.QueryBuilder.GetHashCode() -> int override Microsoft.AspNetCore.Http.Extensions.QueryBuilder.ToString() -> string! +override Microsoft.AspNetCore.Http.TagsAttribute.ToString() -> string! static Microsoft.AspNetCore.Http.Extensions.HttpRequestMultipartExtensions.GetMultipartBoundary(this Microsoft.AspNetCore.Http.HttpRequest! request) -> string! static Microsoft.AspNetCore.Http.Extensions.StreamCopyOperation.CopyToAsync(System.IO.Stream! source, System.IO.Stream! destination, long? count, int bufferSize, System.Threading.CancellationToken cancel) -> System.Threading.Tasks.Task! static Microsoft.AspNetCore.Http.Extensions.StreamCopyOperation.CopyToAsync(System.IO.Stream! source, System.IO.Stream! destination, long? count, System.Threading.CancellationToken cancel) -> System.Threading.Tasks.Task! @@ -169,12 +174,14 @@ static Microsoft.AspNetCore.Http.HeaderDictionaryTypeExtensions.GetTypedHeaders( static Microsoft.AspNetCore.Http.HeaderDictionaryTypeExtensions.GetTypedHeaders(this Microsoft.AspNetCore.Http.HttpResponse! response) -> Microsoft.AspNetCore.Http.Headers.ResponseHeaders! static Microsoft.AspNetCore.Http.HttpContextServerVariableExtensions.GetServerVariable(this Microsoft.AspNetCore.Http.HttpContext! context, string! variableName) -> string? static Microsoft.AspNetCore.Http.HttpRequestJsonExtensions.HasJsonContentType(this Microsoft.AspNetCore.Http.HttpRequest! request) -> bool +static Microsoft.AspNetCore.Http.HttpRequestJsonExtensions.ReadFromJsonAsync(this Microsoft.AspNetCore.Http.HttpRequest! request, System.Text.Json.Serialization.Metadata.JsonTypeInfo! jsonTypeInfo, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.ValueTask static Microsoft.AspNetCore.Http.HttpRequestJsonExtensions.ReadFromJsonAsync(this Microsoft.AspNetCore.Http.HttpRequest! request, System.Type! type, System.Text.Json.JsonSerializerOptions? options, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.ValueTask static Microsoft.AspNetCore.Http.HttpRequestJsonExtensions.ReadFromJsonAsync(this Microsoft.AspNetCore.Http.HttpRequest! request, System.Type! type, System.Text.Json.Serialization.JsonSerializerContext! context, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.ValueTask static Microsoft.AspNetCore.Http.HttpRequestJsonExtensions.ReadFromJsonAsync(this Microsoft.AspNetCore.Http.HttpRequest! request, System.Type! type, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.ValueTask static Microsoft.AspNetCore.Http.HttpRequestJsonExtensions.ReadFromJsonAsync(this Microsoft.AspNetCore.Http.HttpRequest! request, System.Text.Json.JsonSerializerOptions? options, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.ValueTask static Microsoft.AspNetCore.Http.HttpRequestJsonExtensions.ReadFromJsonAsync(this Microsoft.AspNetCore.Http.HttpRequest! request, System.Text.Json.Serialization.Metadata.JsonTypeInfo! jsonTypeInfo, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.ValueTask static Microsoft.AspNetCore.Http.HttpRequestJsonExtensions.ReadFromJsonAsync(this Microsoft.AspNetCore.Http.HttpRequest! request, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.ValueTask +static Microsoft.AspNetCore.Http.HttpResponseJsonExtensions.WriteAsJsonAsync(this Microsoft.AspNetCore.Http.HttpResponse! response, object? value, System.Text.Json.Serialization.Metadata.JsonTypeInfo! jsonTypeInfo, string? contentType = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task! static Microsoft.AspNetCore.Http.HttpResponseJsonExtensions.WriteAsJsonAsync(this Microsoft.AspNetCore.Http.HttpResponse! response, object? value, System.Type! type, System.Text.Json.JsonSerializerOptions? options, string? contentType, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task! static Microsoft.AspNetCore.Http.HttpResponseJsonExtensions.WriteAsJsonAsync(this Microsoft.AspNetCore.Http.HttpResponse! response, object? value, System.Type! type, System.Text.Json.JsonSerializerOptions? options, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task! static Microsoft.AspNetCore.Http.HttpResponseJsonExtensions.WriteAsJsonAsync(this Microsoft.AspNetCore.Http.HttpResponse! response, object? value, System.Type! type, System.Text.Json.Serialization.JsonSerializerContext! context, string? contentType = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task! diff --git a/src/Http/Http.Extensions/src/PublicAPI.Unshipped.txt b/src/Http/Http.Extensions/src/PublicAPI.Unshipped.txt index c7f088c63a29..7dc5c58110bf 100644 --- a/src/Http/Http.Extensions/src/PublicAPI.Unshipped.txt +++ b/src/Http/Http.Extensions/src/PublicAPI.Unshipped.txt @@ -1,8 +1 @@ #nullable enable -override Microsoft.AspNetCore.Http.EndpointDescriptionAttribute.ToString() -> string! -override Microsoft.AspNetCore.Http.EndpointSummaryAttribute.ToString() -> string! -override Microsoft.AspNetCore.Http.TagsAttribute.ToString() -> string! -static Microsoft.AspNetCore.Http.HttpRequestJsonExtensions.ReadFromJsonAsync(this Microsoft.AspNetCore.Http.HttpRequest! request, System.Text.Json.Serialization.Metadata.JsonTypeInfo! jsonTypeInfo, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.ValueTask -static Microsoft.AspNetCore.Http.HttpResponseJsonExtensions.WriteAsJsonAsync(this Microsoft.AspNetCore.Http.HttpResponse! response, object? value, System.Text.Json.Serialization.Metadata.JsonTypeInfo! jsonTypeInfo, string? contentType = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task! -Microsoft.AspNetCore.Mvc.ProblemDetails.Extensions.set -> void (forwarded, contained in Microsoft.AspNetCore.Http.Abstractions) -Microsoft.AspNetCore.Http.HttpValidationProblemDetails.Errors.set -> void (forwarded, contained in Microsoft.AspNetCore.Http.Abstractions) diff --git a/src/Http/Http.Features/src/PublicAPI.Shipped.txt b/src/Http/Http.Features/src/PublicAPI.Shipped.txt index 460a2f78cfca..b4621699e214 100644 --- a/src/Http/Http.Features/src/PublicAPI.Shipped.txt +++ b/src/Http/Http.Features/src/PublicAPI.Shipped.txt @@ -1,4 +1,7 @@ #nullable enable +Microsoft.AspNetCore.Antiforgery.IAntiforgeryValidationFeature +Microsoft.AspNetCore.Antiforgery.IAntiforgeryValidationFeature.Error.get -> System.Exception? +Microsoft.AspNetCore.Antiforgery.IAntiforgeryValidationFeature.IsValid.get -> bool Microsoft.AspNetCore.Http.CookieOptions Microsoft.AspNetCore.Http.CookieOptions.CookieOptions() -> void Microsoft.AspNetCore.Http.CookieOptions.CookieOptions(Microsoft.AspNetCore.Http.CookieOptions! options) -> void @@ -88,6 +91,8 @@ Microsoft.AspNetCore.Http.Features.IHttpMaxRequestBodySizeFeature Microsoft.AspNetCore.Http.Features.IHttpMaxRequestBodySizeFeature.IsReadOnly.get -> bool Microsoft.AspNetCore.Http.Features.IHttpMaxRequestBodySizeFeature.MaxRequestBodySize.get -> long? Microsoft.AspNetCore.Http.Features.IHttpMaxRequestBodySizeFeature.MaxRequestBodySize.set -> void +Microsoft.AspNetCore.Http.Features.IHttpMetricsTagsFeature +Microsoft.AspNetCore.Http.Features.IHttpMetricsTagsFeature.Tags.get -> System.Collections.Generic.ICollection>! Microsoft.AspNetCore.Http.Features.IHttpRequestBodyDetectionFeature Microsoft.AspNetCore.Http.Features.IHttpRequestBodyDetectionFeature.CanHaveBody.get -> bool Microsoft.AspNetCore.Http.Features.IHttpRequestFeature diff --git a/src/Http/Http.Features/src/PublicAPI.Unshipped.txt b/src/Http/Http.Features/src/PublicAPI.Unshipped.txt index 3d02460efbb7..7dc5c58110bf 100644 --- a/src/Http/Http.Features/src/PublicAPI.Unshipped.txt +++ b/src/Http/Http.Features/src/PublicAPI.Unshipped.txt @@ -1,6 +1 @@ #nullable enable -Microsoft.AspNetCore.Antiforgery.IAntiforgeryValidationFeature -Microsoft.AspNetCore.Antiforgery.IAntiforgeryValidationFeature.Error.get -> System.Exception? -Microsoft.AspNetCore.Antiforgery.IAntiforgeryValidationFeature.IsValid.get -> bool -Microsoft.AspNetCore.Http.Features.IHttpMetricsTagsFeature -Microsoft.AspNetCore.Http.Features.IHttpMetricsTagsFeature.Tags.get -> System.Collections.Generic.ICollection>! diff --git a/src/Http/Http.Results/src/PublicAPI.Shipped.txt b/src/Http/Http.Results/src/PublicAPI.Shipped.txt index 04f8e137d116..23f2cde22209 100644 --- a/src/Http/Http.Results/src/PublicAPI.Shipped.txt +++ b/src/Http/Http.Results/src/PublicAPI.Shipped.txt @@ -97,8 +97,8 @@ Microsoft.AspNetCore.Http.HttpResults.CreatedAtRoute.RouteName.get -> st Microsoft.AspNetCore.Http.HttpResults.CreatedAtRoute.RouteValues.get -> Microsoft.AspNetCore.Routing.RouteValueDictionary! Microsoft.AspNetCore.Http.HttpResults.CreatedAtRoute.StatusCode.get -> int Microsoft.AspNetCore.Http.HttpResults.CreatedAtRoute.Value.get -> TValue? -Microsoft.AspNetCore.Http.HttpResults.EmptyHttpResult -Microsoft.AspNetCore.Http.HttpResults.EmptyHttpResult.ExecuteAsync(Microsoft.AspNetCore.Http.HttpContext! httpContext) -> System.Threading.Tasks.Task! +Microsoft.AspNetCore.Http.HttpResults.EmptyHttpResult (forwarded, contained in Microsoft.AspNetCore.Http.Abstractions) +Microsoft.AspNetCore.Http.HttpResults.EmptyHttpResult.ExecuteAsync(Microsoft.AspNetCore.Http.HttpContext! httpContext) -> System.Threading.Tasks.Task! (forwarded, contained in Microsoft.AspNetCore.Http.Abstractions) Microsoft.AspNetCore.Http.HttpResults.FileContentHttpResult Microsoft.AspNetCore.Http.HttpResults.FileContentHttpResult.ContentType.get -> string! Microsoft.AspNetCore.Http.HttpResults.FileContentHttpResult.EnableRangeProcessing.get -> bool @@ -178,7 +178,7 @@ Microsoft.AspNetCore.Http.HttpResults.RedirectToRouteHttpResult.Fragment.get -> Microsoft.AspNetCore.Http.HttpResults.RedirectToRouteHttpResult.Permanent.get -> bool Microsoft.AspNetCore.Http.HttpResults.RedirectToRouteHttpResult.PreserveMethod.get -> bool Microsoft.AspNetCore.Http.HttpResults.RedirectToRouteHttpResult.RouteName.get -> string? -Microsoft.AspNetCore.Http.HttpResults.RedirectToRouteHttpResult.RouteValues.get -> Microsoft.AspNetCore.Routing.RouteValueDictionary? +Microsoft.AspNetCore.Http.HttpResults.RedirectToRouteHttpResult.RouteValues.get -> Microsoft.AspNetCore.Routing.RouteValueDictionary! Microsoft.AspNetCore.Http.HttpResults.SignInHttpResult Microsoft.AspNetCore.Http.HttpResults.SignInHttpResult.AuthenticationScheme.get -> string? Microsoft.AspNetCore.Http.HttpResults.SignInHttpResult.ExecuteAsync(Microsoft.AspNetCore.Http.HttpContext! httpContext) -> System.Threading.Tasks.Task! @@ -223,11 +223,13 @@ Microsoft.AspNetCore.Http.HttpResults.VirtualFileHttpResult.LastModified.get -> Microsoft.AspNetCore.Http.IResultExtensions Microsoft.AspNetCore.Http.Results Microsoft.AspNetCore.Http.TypedResults -static Microsoft.AspNetCore.Http.HttpResults.EmptyHttpResult.Instance.get -> Microsoft.AspNetCore.Http.HttpResults.EmptyHttpResult! +static Microsoft.AspNetCore.Http.HttpResults.EmptyHttpResult.Instance.get -> Microsoft.AspNetCore.Http.HttpResults.EmptyHttpResult! (forwarded, contained in Microsoft.AspNetCore.Http.Abstractions) static Microsoft.AspNetCore.Http.Results.Accepted(string? uri = null, object? value = null) -> Microsoft.AspNetCore.Http.IResult! static Microsoft.AspNetCore.Http.Results.Accepted(string? uri = null, TValue? value = default(TValue?)) -> Microsoft.AspNetCore.Http.IResult! static Microsoft.AspNetCore.Http.Results.AcceptedAtRoute(string? routeName = null, object? routeValues = null, object? value = null) -> Microsoft.AspNetCore.Http.IResult! +static Microsoft.AspNetCore.Http.Results.AcceptedAtRoute(string? routeName, Microsoft.AspNetCore.Routing.RouteValueDictionary? routeValues, object? value = null) -> Microsoft.AspNetCore.Http.IResult! static Microsoft.AspNetCore.Http.Results.AcceptedAtRoute(string? routeName = null, object? routeValues = null, TValue? value = default(TValue?)) -> Microsoft.AspNetCore.Http.IResult! +static Microsoft.AspNetCore.Http.Results.AcceptedAtRoute(string? routeName, Microsoft.AspNetCore.Routing.RouteValueDictionary? routeValues, TValue? value = default(TValue?)) -> Microsoft.AspNetCore.Http.IResult! static Microsoft.AspNetCore.Http.Results.BadRequest(object? error = null) -> Microsoft.AspNetCore.Http.IResult! static Microsoft.AspNetCore.Http.Results.BadRequest(TValue? error) -> Microsoft.AspNetCore.Http.IResult! static Microsoft.AspNetCore.Http.Results.Bytes(byte[]! contents, string? contentType = null, string? fileDownloadName = null, bool enableRangeProcessing = false, System.DateTimeOffset? lastModified = null, Microsoft.Net.Http.Headers.EntityTagHeaderValue? entityTag = null) -> Microsoft.AspNetCore.Http.IResult! @@ -238,12 +240,15 @@ static Microsoft.AspNetCore.Http.Results.Conflict(TValue? error) -> Micr static Microsoft.AspNetCore.Http.Results.Content(string? content, Microsoft.Net.Http.Headers.MediaTypeHeaderValue! contentType) -> Microsoft.AspNetCore.Http.IResult! static Microsoft.AspNetCore.Http.Results.Content(string? content, string? contentType = null, System.Text.Encoding? contentEncoding = null, int? statusCode = null) -> Microsoft.AspNetCore.Http.IResult! static Microsoft.AspNetCore.Http.Results.Content(string? content, string? contentType, System.Text.Encoding? contentEncoding) -> Microsoft.AspNetCore.Http.IResult! -static Microsoft.AspNetCore.Http.Results.Created(string! uri, object? value) -> Microsoft.AspNetCore.Http.IResult! -static Microsoft.AspNetCore.Http.Results.Created(System.Uri! uri, object? value) -> Microsoft.AspNetCore.Http.IResult! -static Microsoft.AspNetCore.Http.Results.Created(string! uri, TValue? value) -> Microsoft.AspNetCore.Http.IResult! -static Microsoft.AspNetCore.Http.Results.Created(System.Uri! uri, TValue? value) -> Microsoft.AspNetCore.Http.IResult! +static Microsoft.AspNetCore.Http.Results.Created() -> Microsoft.AspNetCore.Http.IResult! +static Microsoft.AspNetCore.Http.Results.Created(string? uri, object? value) -> Microsoft.AspNetCore.Http.IResult! +static Microsoft.AspNetCore.Http.Results.Created(System.Uri? uri, object? value) -> Microsoft.AspNetCore.Http.IResult! +static Microsoft.AspNetCore.Http.Results.Created(string? uri, TValue? value) -> Microsoft.AspNetCore.Http.IResult! +static Microsoft.AspNetCore.Http.Results.Created(System.Uri? uri, TValue? value) -> Microsoft.AspNetCore.Http.IResult! static Microsoft.AspNetCore.Http.Results.CreatedAtRoute(string? routeName = null, object? routeValues = null, object? value = null) -> Microsoft.AspNetCore.Http.IResult! +static Microsoft.AspNetCore.Http.Results.CreatedAtRoute(string? routeName, Microsoft.AspNetCore.Routing.RouteValueDictionary? routeValues, object? value = null) -> Microsoft.AspNetCore.Http.IResult! static Microsoft.AspNetCore.Http.Results.CreatedAtRoute(string? routeName = null, object? routeValues = null, TValue? value = default(TValue?)) -> Microsoft.AspNetCore.Http.IResult! +static Microsoft.AspNetCore.Http.Results.CreatedAtRoute(string? routeName, Microsoft.AspNetCore.Routing.RouteValueDictionary? routeValues, TValue? value = default(TValue?)) -> Microsoft.AspNetCore.Http.IResult! static Microsoft.AspNetCore.Http.Results.Empty.get -> Microsoft.AspNetCore.Http.IResult! static Microsoft.AspNetCore.Http.Results.Extensions.get -> Microsoft.AspNetCore.Http.IResultExtensions! static Microsoft.AspNetCore.Http.Results.File(byte[]! fileContents, string? contentType = null, string? fileDownloadName = null, bool enableRangeProcessing = false, System.DateTimeOffset? lastModified = null, Microsoft.Net.Http.Headers.EntityTagHeaderValue? entityTag = null) -> Microsoft.AspNetCore.Http.IResult! @@ -251,7 +256,11 @@ static Microsoft.AspNetCore.Http.Results.File(string! path, string? contentType static Microsoft.AspNetCore.Http.Results.File(System.IO.Stream! fileStream, string? contentType = null, string? fileDownloadName = null, System.DateTimeOffset? lastModified = null, Microsoft.Net.Http.Headers.EntityTagHeaderValue? entityTag = null, bool enableRangeProcessing = false) -> Microsoft.AspNetCore.Http.IResult! static Microsoft.AspNetCore.Http.Results.Forbid(Microsoft.AspNetCore.Authentication.AuthenticationProperties? properties = null, System.Collections.Generic.IList? authenticationSchemes = null) -> Microsoft.AspNetCore.Http.IResult! static Microsoft.AspNetCore.Http.Results.Json(object? data, System.Text.Json.JsonSerializerOptions? options = null, string? contentType = null, int? statusCode = null) -> Microsoft.AspNetCore.Http.IResult! +static Microsoft.AspNetCore.Http.Results.Json(object? data, System.Text.Json.Serialization.Metadata.JsonTypeInfo! jsonTypeInfo, string? contentType = null, int? statusCode = null) -> Microsoft.AspNetCore.Http.IResult! +static Microsoft.AspNetCore.Http.Results.Json(object? data, System.Type! type, System.Text.Json.Serialization.JsonSerializerContext! context, string? contentType = null, int? statusCode = null) -> Microsoft.AspNetCore.Http.IResult! static Microsoft.AspNetCore.Http.Results.Json(TValue? data, System.Text.Json.JsonSerializerOptions? options = null, string? contentType = null, int? statusCode = null) -> Microsoft.AspNetCore.Http.IResult! +static Microsoft.AspNetCore.Http.Results.Json(TValue? data, System.Text.Json.Serialization.JsonSerializerContext! context, string? contentType = null, int? statusCode = null) -> Microsoft.AspNetCore.Http.IResult! +static Microsoft.AspNetCore.Http.Results.Json(TValue? data, System.Text.Json.Serialization.Metadata.JsonTypeInfo! jsonTypeInfo, string? contentType = null, int? statusCode = null) -> Microsoft.AspNetCore.Http.IResult! static Microsoft.AspNetCore.Http.Results.LocalRedirect(string! localUrl, bool permanent = false, bool preserveMethod = false) -> Microsoft.AspNetCore.Http.IResult! static Microsoft.AspNetCore.Http.Results.NoContent() -> Microsoft.AspNetCore.Http.IResult! static Microsoft.AspNetCore.Http.Results.NotFound(object? value = null) -> Microsoft.AspNetCore.Http.IResult! @@ -262,6 +271,7 @@ static Microsoft.AspNetCore.Http.Results.Problem(Microsoft.AspNetCore.Mvc.Proble static Microsoft.AspNetCore.Http.Results.Problem(string? detail = null, string? instance = null, int? statusCode = null, string? title = null, string? type = null, System.Collections.Generic.IDictionary? extensions = null) -> Microsoft.AspNetCore.Http.IResult! static Microsoft.AspNetCore.Http.Results.Redirect(string! url, bool permanent = false, bool preserveMethod = false) -> Microsoft.AspNetCore.Http.IResult! static Microsoft.AspNetCore.Http.Results.RedirectToRoute(string? routeName = null, object? routeValues = null, bool permanent = false, bool preserveMethod = false, string? fragment = null) -> Microsoft.AspNetCore.Http.IResult! +static Microsoft.AspNetCore.Http.Results.RedirectToRoute(string? routeName, Microsoft.AspNetCore.Routing.RouteValueDictionary? routeValues, bool permanent = false, bool preserveMethod = false, string? fragment = null) -> Microsoft.AspNetCore.Http.IResult! static Microsoft.AspNetCore.Http.Results.SignIn(System.Security.Claims.ClaimsPrincipal! principal, Microsoft.AspNetCore.Authentication.AuthenticationProperties? properties = null, string? authenticationScheme = null) -> Microsoft.AspNetCore.Http.IResult! static Microsoft.AspNetCore.Http.Results.SignOut(Microsoft.AspNetCore.Authentication.AuthenticationProperties? properties = null, System.Collections.Generic.IList? authenticationSchemes = null) -> Microsoft.AspNetCore.Http.IResult! static Microsoft.AspNetCore.Http.Results.StatusCode(int statusCode) -> Microsoft.AspNetCore.Http.IResult! @@ -280,7 +290,9 @@ static Microsoft.AspNetCore.Http.TypedResults.Accepted(System.Uri! uri) -> Micro static Microsoft.AspNetCore.Http.TypedResults.Accepted(string? uri, TValue? value) -> Microsoft.AspNetCore.Http.HttpResults.Accepted! static Microsoft.AspNetCore.Http.TypedResults.Accepted(System.Uri! uri, TValue? value) -> Microsoft.AspNetCore.Http.HttpResults.Accepted! static Microsoft.AspNetCore.Http.TypedResults.AcceptedAtRoute(string? routeName = null, object? routeValues = null) -> Microsoft.AspNetCore.Http.HttpResults.AcceptedAtRoute! +static Microsoft.AspNetCore.Http.TypedResults.AcceptedAtRoute(string? routeName, Microsoft.AspNetCore.Routing.RouteValueDictionary? routeValues) -> Microsoft.AspNetCore.Http.HttpResults.AcceptedAtRoute! static Microsoft.AspNetCore.Http.TypedResults.AcceptedAtRoute(TValue? value, string? routeName = null, object? routeValues = null) -> Microsoft.AspNetCore.Http.HttpResults.AcceptedAtRoute! +static Microsoft.AspNetCore.Http.TypedResults.AcceptedAtRoute(TValue? value, string? routeName, Microsoft.AspNetCore.Routing.RouteValueDictionary? routeValues) -> Microsoft.AspNetCore.Http.HttpResults.AcceptedAtRoute! static Microsoft.AspNetCore.Http.TypedResults.BadRequest() -> Microsoft.AspNetCore.Http.HttpResults.BadRequest! static Microsoft.AspNetCore.Http.TypedResults.BadRequest(TValue? error) -> Microsoft.AspNetCore.Http.HttpResults.BadRequest! static Microsoft.AspNetCore.Http.TypedResults.Bytes(byte[]! contents, string? contentType = null, string? fileDownloadName = null, bool enableRangeProcessing = false, System.DateTimeOffset? lastModified = null, Microsoft.Net.Http.Headers.EntityTagHeaderValue? entityTag = null) -> Microsoft.AspNetCore.Http.HttpResults.FileContentHttpResult! @@ -291,17 +303,23 @@ static Microsoft.AspNetCore.Http.TypedResults.Conflict(TValue? error) -> static Microsoft.AspNetCore.Http.TypedResults.Content(string? content, Microsoft.Net.Http.Headers.MediaTypeHeaderValue! contentType) -> Microsoft.AspNetCore.Http.HttpResults.ContentHttpResult! static Microsoft.AspNetCore.Http.TypedResults.Content(string? content, string? contentType = null, System.Text.Encoding? contentEncoding = null, int? statusCode = null) -> Microsoft.AspNetCore.Http.HttpResults.ContentHttpResult! static Microsoft.AspNetCore.Http.TypedResults.Content(string? content, string? contentType, System.Text.Encoding? contentEncoding) -> Microsoft.AspNetCore.Http.HttpResults.ContentHttpResult! -static Microsoft.AspNetCore.Http.TypedResults.Created(string! uri) -> Microsoft.AspNetCore.Http.HttpResults.Created! -static Microsoft.AspNetCore.Http.TypedResults.Created(System.Uri! uri) -> Microsoft.AspNetCore.Http.HttpResults.Created! -static Microsoft.AspNetCore.Http.TypedResults.Created(string! uri, TValue? value) -> Microsoft.AspNetCore.Http.HttpResults.Created! -static Microsoft.AspNetCore.Http.TypedResults.Created(System.Uri! uri, TValue? value) -> Microsoft.AspNetCore.Http.HttpResults.Created! +static Microsoft.AspNetCore.Http.TypedResults.Created() -> Microsoft.AspNetCore.Http.HttpResults.Created! +static Microsoft.AspNetCore.Http.TypedResults.Created(string? uri) -> Microsoft.AspNetCore.Http.HttpResults.Created! +static Microsoft.AspNetCore.Http.TypedResults.Created(System.Uri? uri) -> Microsoft.AspNetCore.Http.HttpResults.Created! +static Microsoft.AspNetCore.Http.TypedResults.Created(string? uri, TValue? value) -> Microsoft.AspNetCore.Http.HttpResults.Created! +static Microsoft.AspNetCore.Http.TypedResults.Created(System.Uri? uri, TValue? value) -> Microsoft.AspNetCore.Http.HttpResults.Created! static Microsoft.AspNetCore.Http.TypedResults.CreatedAtRoute(string? routeName = null, object? routeValues = null) -> Microsoft.AspNetCore.Http.HttpResults.CreatedAtRoute! +static Microsoft.AspNetCore.Http.TypedResults.CreatedAtRoute(string? routeName, Microsoft.AspNetCore.Routing.RouteValueDictionary? routeValues) -> Microsoft.AspNetCore.Http.HttpResults.CreatedAtRoute! static Microsoft.AspNetCore.Http.TypedResults.CreatedAtRoute(TValue? value, string? routeName = null, object? routeValues = null) -> Microsoft.AspNetCore.Http.HttpResults.CreatedAtRoute! +static Microsoft.AspNetCore.Http.TypedResults.CreatedAtRoute(TValue? value, string? routeName, Microsoft.AspNetCore.Routing.RouteValueDictionary? routeValues) -> Microsoft.AspNetCore.Http.HttpResults.CreatedAtRoute! static Microsoft.AspNetCore.Http.TypedResults.Empty.get -> Microsoft.AspNetCore.Http.HttpResults.EmptyHttpResult! +static Microsoft.AspNetCore.Http.TypedResults.Extensions.get -> Microsoft.AspNetCore.Http.IResultExtensions! static Microsoft.AspNetCore.Http.TypedResults.File(byte[]! fileContents, string? contentType = null, string? fileDownloadName = null, bool enableRangeProcessing = false, System.DateTimeOffset? lastModified = null, Microsoft.Net.Http.Headers.EntityTagHeaderValue? entityTag = null) -> Microsoft.AspNetCore.Http.HttpResults.FileContentHttpResult! static Microsoft.AspNetCore.Http.TypedResults.File(System.IO.Stream! fileStream, string? contentType = null, string? fileDownloadName = null, System.DateTimeOffset? lastModified = null, Microsoft.Net.Http.Headers.EntityTagHeaderValue? entityTag = null, bool enableRangeProcessing = false) -> Microsoft.AspNetCore.Http.HttpResults.FileStreamHttpResult! static Microsoft.AspNetCore.Http.TypedResults.Forbid(Microsoft.AspNetCore.Authentication.AuthenticationProperties? properties = null, System.Collections.Generic.IList? authenticationSchemes = null) -> Microsoft.AspNetCore.Http.HttpResults.ForbidHttpResult! static Microsoft.AspNetCore.Http.TypedResults.Json(TValue? data, System.Text.Json.JsonSerializerOptions? options = null, string? contentType = null, int? statusCode = null) -> Microsoft.AspNetCore.Http.HttpResults.JsonHttpResult! +static Microsoft.AspNetCore.Http.TypedResults.Json(TValue? data, System.Text.Json.Serialization.JsonSerializerContext! context, string? contentType = null, int? statusCode = null) -> Microsoft.AspNetCore.Http.HttpResults.JsonHttpResult! +static Microsoft.AspNetCore.Http.TypedResults.Json(TValue? data, System.Text.Json.Serialization.Metadata.JsonTypeInfo! jsonTypeInfo, string? contentType = null, int? statusCode = null) -> Microsoft.AspNetCore.Http.HttpResults.JsonHttpResult! static Microsoft.AspNetCore.Http.TypedResults.LocalRedirect(string! localUrl, bool permanent = false, bool preserveMethod = false) -> Microsoft.AspNetCore.Http.HttpResults.RedirectHttpResult! static Microsoft.AspNetCore.Http.TypedResults.NoContent() -> Microsoft.AspNetCore.Http.HttpResults.NoContent! static Microsoft.AspNetCore.Http.TypedResults.NotFound() -> Microsoft.AspNetCore.Http.HttpResults.NotFound! @@ -313,6 +331,7 @@ static Microsoft.AspNetCore.Http.TypedResults.Problem(Microsoft.AspNetCore.Mvc.P static Microsoft.AspNetCore.Http.TypedResults.Problem(string? detail = null, string? instance = null, int? statusCode = null, string? title = null, string? type = null, System.Collections.Generic.IDictionary? extensions = null) -> Microsoft.AspNetCore.Http.HttpResults.ProblemHttpResult! static Microsoft.AspNetCore.Http.TypedResults.Redirect(string! url, bool permanent = false, bool preserveMethod = false) -> Microsoft.AspNetCore.Http.HttpResults.RedirectHttpResult! static Microsoft.AspNetCore.Http.TypedResults.RedirectToRoute(string? routeName = null, object? routeValues = null, bool permanent = false, bool preserveMethod = false, string? fragment = null) -> Microsoft.AspNetCore.Http.HttpResults.RedirectToRouteHttpResult! +static Microsoft.AspNetCore.Http.TypedResults.RedirectToRoute(string? routeName, Microsoft.AspNetCore.Routing.RouteValueDictionary? routeValues, bool permanent = false, bool preserveMethod = false, string? fragment = null) -> Microsoft.AspNetCore.Http.HttpResults.RedirectToRouteHttpResult! static Microsoft.AspNetCore.Http.TypedResults.SignIn(System.Security.Claims.ClaimsPrincipal! principal, Microsoft.AspNetCore.Authentication.AuthenticationProperties? properties = null, string? authenticationScheme = null) -> Microsoft.AspNetCore.Http.HttpResults.SignInHttpResult! static Microsoft.AspNetCore.Http.TypedResults.SignOut(Microsoft.AspNetCore.Authentication.AuthenticationProperties? properties = null, System.Collections.Generic.IList? authenticationSchemes = null) -> Microsoft.AspNetCore.Http.HttpResults.SignOutHttpResult! static Microsoft.AspNetCore.Http.TypedResults.StatusCode(int statusCode) -> Microsoft.AspNetCore.Http.HttpResults.StatusCodeHttpResult! @@ -326,4 +345,4 @@ static Microsoft.AspNetCore.Http.TypedResults.Unauthorized() -> Microsoft.AspNet static Microsoft.AspNetCore.Http.TypedResults.UnprocessableEntity() -> Microsoft.AspNetCore.Http.HttpResults.UnprocessableEntity! static Microsoft.AspNetCore.Http.TypedResults.UnprocessableEntity(TValue? error) -> Microsoft.AspNetCore.Http.HttpResults.UnprocessableEntity! static Microsoft.AspNetCore.Http.TypedResults.ValidationProblem(System.Collections.Generic.IDictionary! errors, string? detail = null, string? instance = null, string? title = null, string? type = null, System.Collections.Generic.IDictionary? extensions = null) -> Microsoft.AspNetCore.Http.HttpResults.ValidationProblem! -static Microsoft.AspNetCore.Http.TypedResults.VirtualFile(string! path, string? contentType = null, string? fileDownloadName = null, System.DateTimeOffset? lastModified = null, Microsoft.Net.Http.Headers.EntityTagHeaderValue? entityTag = null, bool enableRangeProcessing = false) -> Microsoft.AspNetCore.Http.HttpResults.VirtualFileHttpResult! \ No newline at end of file +static Microsoft.AspNetCore.Http.TypedResults.VirtualFile(string! path, string? contentType = null, string? fileDownloadName = null, System.DateTimeOffset? lastModified = null, Microsoft.Net.Http.Headers.EntityTagHeaderValue? entityTag = null, bool enableRangeProcessing = false) -> Microsoft.AspNetCore.Http.HttpResults.VirtualFileHttpResult! diff --git a/src/Http/Http.Results/src/PublicAPI.Unshipped.txt b/src/Http/Http.Results/src/PublicAPI.Unshipped.txt index 5b4677d7e325..7dc5c58110bf 100644 --- a/src/Http/Http.Results/src/PublicAPI.Unshipped.txt +++ b/src/Http/Http.Results/src/PublicAPI.Unshipped.txt @@ -1,44 +1 @@ #nullable enable -*REMOVED*Microsoft.AspNetCore.Http.HttpResults.EmptyHttpResult -*REMOVED*Microsoft.AspNetCore.Http.HttpResults.EmptyHttpResult.ExecuteAsync(Microsoft.AspNetCore.Http.HttpContext! httpContext) -> System.Threading.Tasks.Task! -*REMOVED*static Microsoft.AspNetCore.Http.HttpResults.EmptyHttpResult.Instance.get -> Microsoft.AspNetCore.Http.HttpResults.EmptyHttpResult! -Microsoft.AspNetCore.Http.HttpResults.EmptyHttpResult (forwarded, contained in Microsoft.AspNetCore.Http.Abstractions) -Microsoft.AspNetCore.Http.HttpResults.EmptyHttpResult.ExecuteAsync(Microsoft.AspNetCore.Http.HttpContext! httpContext) -> System.Threading.Tasks.Task! (forwarded, contained in Microsoft.AspNetCore.Http.Abstractions) -Microsoft.AspNetCore.Http.HttpResults.RedirectToRouteHttpResult.RouteValues.get -> Microsoft.AspNetCore.Routing.RouteValueDictionary! -*REMOVED*Microsoft.AspNetCore.Http.HttpResults.RedirectToRouteHttpResult.RouteValues.get -> Microsoft.AspNetCore.Routing.RouteValueDictionary? -static Microsoft.AspNetCore.Http.HttpResults.EmptyHttpResult.Instance.get -> Microsoft.AspNetCore.Http.HttpResults.EmptyHttpResult! (forwarded, contained in Microsoft.AspNetCore.Http.Abstractions) -static Microsoft.AspNetCore.Http.Results.AcceptedAtRoute(string? routeName, Microsoft.AspNetCore.Routing.RouteValueDictionary? routeValues, object? value = null) -> Microsoft.AspNetCore.Http.IResult! -static Microsoft.AspNetCore.Http.Results.AcceptedAtRoute(string? routeName, Microsoft.AspNetCore.Routing.RouteValueDictionary? routeValues, TValue? value = default(TValue?)) -> Microsoft.AspNetCore.Http.IResult! -static Microsoft.AspNetCore.Http.Results.Created() -> Microsoft.AspNetCore.Http.IResult! -*REMOVED*static Microsoft.AspNetCore.Http.Results.Created(string! uri, object? value) -> Microsoft.AspNetCore.Http.IResult! -*REMOVED*static Microsoft.AspNetCore.Http.Results.Created(System.Uri! uri, object? value) -> Microsoft.AspNetCore.Http.IResult! -static Microsoft.AspNetCore.Http.Results.Created(string? uri, object? value) -> Microsoft.AspNetCore.Http.IResult! -static Microsoft.AspNetCore.Http.Results.Created(System.Uri? uri, object? value) -> Microsoft.AspNetCore.Http.IResult! -static Microsoft.AspNetCore.Http.Results.Created(string? uri, TValue? value) -> Microsoft.AspNetCore.Http.IResult! -static Microsoft.AspNetCore.Http.Results.Created(System.Uri? uri, TValue? value) -> Microsoft.AspNetCore.Http.IResult! -static Microsoft.AspNetCore.Http.Results.CreatedAtRoute(string? routeName, Microsoft.AspNetCore.Routing.RouteValueDictionary? routeValues, object? value = null) -> Microsoft.AspNetCore.Http.IResult! -static Microsoft.AspNetCore.Http.Results.CreatedAtRoute(string? routeName, Microsoft.AspNetCore.Routing.RouteValueDictionary? routeValues, TValue? value = default(TValue?)) -> Microsoft.AspNetCore.Http.IResult! -static Microsoft.AspNetCore.Http.Results.Json(object? data, System.Text.Json.Serialization.Metadata.JsonTypeInfo! jsonTypeInfo, string? contentType = null, int? statusCode = null) -> Microsoft.AspNetCore.Http.IResult! -static Microsoft.AspNetCore.Http.Results.Json(object? data, System.Type! type, System.Text.Json.Serialization.JsonSerializerContext! context, string? contentType = null, int? statusCode = null) -> Microsoft.AspNetCore.Http.IResult! -static Microsoft.AspNetCore.Http.Results.Json(TValue? data, System.Text.Json.Serialization.JsonSerializerContext! context, string? contentType = null, int? statusCode = null) -> Microsoft.AspNetCore.Http.IResult! -static Microsoft.AspNetCore.Http.Results.Json(TValue? data, System.Text.Json.Serialization.Metadata.JsonTypeInfo! jsonTypeInfo, string? contentType = null, int? statusCode = null) -> Microsoft.AspNetCore.Http.IResult! -static Microsoft.AspNetCore.Http.Results.RedirectToRoute(string? routeName, Microsoft.AspNetCore.Routing.RouteValueDictionary? routeValues, bool permanent = false, bool preserveMethod = false, string? fragment = null) -> Microsoft.AspNetCore.Http.IResult! -static Microsoft.AspNetCore.Http.TypedResults.AcceptedAtRoute(string? routeName, Microsoft.AspNetCore.Routing.RouteValueDictionary? routeValues) -> Microsoft.AspNetCore.Http.HttpResults.AcceptedAtRoute! -static Microsoft.AspNetCore.Http.TypedResults.AcceptedAtRoute(TValue? value, string? routeName, Microsoft.AspNetCore.Routing.RouteValueDictionary? routeValues) -> Microsoft.AspNetCore.Http.HttpResults.AcceptedAtRoute! -static Microsoft.AspNetCore.Http.TypedResults.Created() -> Microsoft.AspNetCore.Http.HttpResults.Created! -static Microsoft.AspNetCore.Http.TypedResults.Created(string? uri) -> Microsoft.AspNetCore.Http.HttpResults.Created! -static Microsoft.AspNetCore.Http.TypedResults.Created(System.Uri? uri) -> Microsoft.AspNetCore.Http.HttpResults.Created! -static Microsoft.AspNetCore.Http.TypedResults.Created(string? uri, TValue? value) -> Microsoft.AspNetCore.Http.HttpResults.Created! -static Microsoft.AspNetCore.Http.TypedResults.Created(System.Uri? uri, TValue? value) -> Microsoft.AspNetCore.Http.HttpResults.Created! -*REMOVED*static Microsoft.AspNetCore.Http.Results.Created(System.Uri! uri, TValue? value) -> Microsoft.AspNetCore.Http.IResult! -*REMOVED*static Microsoft.AspNetCore.Http.Results.Created(string! uri, TValue? value) -> Microsoft.AspNetCore.Http.IResult! -*REMOVED*static Microsoft.AspNetCore.Http.TypedResults.Created(System.Uri! uri) -> Microsoft.AspNetCore.Http.HttpResults.Created! -*REMOVED*static Microsoft.AspNetCore.Http.TypedResults.Created(string! uri) -> Microsoft.AspNetCore.Http.HttpResults.Created! -*REMOVED*static Microsoft.AspNetCore.Http.TypedResults.Created(System.Uri! uri, TValue? value) -> Microsoft.AspNetCore.Http.HttpResults.Created! -*REMOVED*static Microsoft.AspNetCore.Http.TypedResults.Created(string! uri, TValue? value) -> Microsoft.AspNetCore.Http.HttpResults.Created! -static Microsoft.AspNetCore.Http.TypedResults.CreatedAtRoute(string? routeName, Microsoft.AspNetCore.Routing.RouteValueDictionary? routeValues) -> Microsoft.AspNetCore.Http.HttpResults.CreatedAtRoute! -static Microsoft.AspNetCore.Http.TypedResults.CreatedAtRoute(TValue? value, string? routeName, Microsoft.AspNetCore.Routing.RouteValueDictionary? routeValues) -> Microsoft.AspNetCore.Http.HttpResults.CreatedAtRoute! -static Microsoft.AspNetCore.Http.TypedResults.Extensions.get -> Microsoft.AspNetCore.Http.IResultExtensions! -static Microsoft.AspNetCore.Http.TypedResults.Json(TValue? data, System.Text.Json.Serialization.JsonSerializerContext! context, string? contentType = null, int? statusCode = null) -> Microsoft.AspNetCore.Http.HttpResults.JsonHttpResult! -static Microsoft.AspNetCore.Http.TypedResults.Json(TValue? data, System.Text.Json.Serialization.Metadata.JsonTypeInfo! jsonTypeInfo, string? contentType = null, int? statusCode = null) -> Microsoft.AspNetCore.Http.HttpResults.JsonHttpResult! -static Microsoft.AspNetCore.Http.TypedResults.RedirectToRoute(string? routeName, Microsoft.AspNetCore.Routing.RouteValueDictionary? routeValues, bool permanent = false, bool preserveMethod = false, string? fragment = null) -> Microsoft.AspNetCore.Http.HttpResults.RedirectToRouteHttpResult! diff --git a/src/Http/Http/src/PublicAPI.Shipped.txt b/src/Http/Http/src/PublicAPI.Shipped.txt index b3c0a3823a8c..4cecf2612f3d 100644 --- a/src/Http/Http/src/PublicAPI.Shipped.txt +++ b/src/Http/Http/src/PublicAPI.Shipped.txt @@ -13,10 +13,14 @@ Microsoft.AspNetCore.Builder.ApplicationBuilder.New() -> Microsoft.AspNetCore.Bu Microsoft.AspNetCore.Builder.ApplicationBuilder.Properties.get -> System.Collections.Generic.IDictionary! Microsoft.AspNetCore.Builder.ApplicationBuilder.ServerFeatures.get -> Microsoft.AspNetCore.Http.Features.IFeatureCollection! Microsoft.AspNetCore.Builder.ApplicationBuilder.Use(System.Func! middleware) -> Microsoft.AspNetCore.Builder.IApplicationBuilder! +Microsoft.AspNetCore.Builder.RequestTimeoutsIApplicationBuilderExtensions +Microsoft.AspNetCore.Builder.RequestTimeoutsIEndpointConventionBuilderExtensions Microsoft.AspNetCore.Http.BindingAddress Microsoft.AspNetCore.Http.BindingAddress.BindingAddress() -> void Microsoft.AspNetCore.Http.BindingAddress.Host.get -> string! +Microsoft.AspNetCore.Http.BindingAddress.IsNamedPipe.get -> bool Microsoft.AspNetCore.Http.BindingAddress.IsUnixPipe.get -> bool +Microsoft.AspNetCore.Http.BindingAddress.NamedPipeName.get -> string! Microsoft.AspNetCore.Http.BindingAddress.PathBase.get -> string! Microsoft.AspNetCore.Http.BindingAddress.Port.get -> int Microsoft.AspNetCore.Http.BindingAddress.Scheme.get -> string! @@ -260,7 +264,33 @@ Microsoft.AspNetCore.Http.StreamResponseBodyFeature.Stream.get -> System.IO.Stre Microsoft.AspNetCore.Http.StreamResponseBodyFeature.StreamResponseBodyFeature(System.IO.Stream! stream) -> void Microsoft.AspNetCore.Http.StreamResponseBodyFeature.StreamResponseBodyFeature(System.IO.Stream! stream, Microsoft.AspNetCore.Http.Features.IHttpResponseBodyFeature? priorFeature) -> void Microsoft.AspNetCore.Http.StreamResponseBodyFeature.Writer.get -> System.IO.Pipelines.PipeWriter! +Microsoft.AspNetCore.Http.Timeouts.DisableRequestTimeoutAttribute +Microsoft.AspNetCore.Http.Timeouts.DisableRequestTimeoutAttribute.DisableRequestTimeoutAttribute() -> void +Microsoft.AspNetCore.Http.Timeouts.IHttpRequestTimeoutFeature +Microsoft.AspNetCore.Http.Timeouts.IHttpRequestTimeoutFeature.DisableTimeout() -> void +Microsoft.AspNetCore.Http.Timeouts.IHttpRequestTimeoutFeature.RequestTimeoutToken.get -> System.Threading.CancellationToken +Microsoft.AspNetCore.Http.Timeouts.RequestTimeoutAttribute +Microsoft.AspNetCore.Http.Timeouts.RequestTimeoutAttribute.PolicyName.get -> string? +Microsoft.AspNetCore.Http.Timeouts.RequestTimeoutAttribute.RequestTimeoutAttribute(int milliseconds) -> void +Microsoft.AspNetCore.Http.Timeouts.RequestTimeoutAttribute.RequestTimeoutAttribute(string! policyName) -> void +Microsoft.AspNetCore.Http.Timeouts.RequestTimeoutAttribute.Timeout.get -> System.TimeSpan? +Microsoft.AspNetCore.Http.Timeouts.RequestTimeoutOptions +Microsoft.AspNetCore.Http.Timeouts.RequestTimeoutOptions.AddPolicy(string! policyName, Microsoft.AspNetCore.Http.Timeouts.RequestTimeoutPolicy! policy) -> Microsoft.AspNetCore.Http.Timeouts.RequestTimeoutOptions! +Microsoft.AspNetCore.Http.Timeouts.RequestTimeoutOptions.AddPolicy(string! policyName, System.TimeSpan timeout) -> Microsoft.AspNetCore.Http.Timeouts.RequestTimeoutOptions! +Microsoft.AspNetCore.Http.Timeouts.RequestTimeoutOptions.DefaultPolicy.get -> Microsoft.AspNetCore.Http.Timeouts.RequestTimeoutPolicy? +Microsoft.AspNetCore.Http.Timeouts.RequestTimeoutOptions.DefaultPolicy.set -> void +Microsoft.AspNetCore.Http.Timeouts.RequestTimeoutOptions.Policies.get -> System.Collections.Generic.IDictionary! +Microsoft.AspNetCore.Http.Timeouts.RequestTimeoutOptions.RequestTimeoutOptions() -> void +Microsoft.AspNetCore.Http.Timeouts.RequestTimeoutPolicy +Microsoft.AspNetCore.Http.Timeouts.RequestTimeoutPolicy.RequestTimeoutPolicy() -> void +Microsoft.AspNetCore.Http.Timeouts.RequestTimeoutPolicy.Timeout.get -> System.TimeSpan? +Microsoft.AspNetCore.Http.Timeouts.RequestTimeoutPolicy.Timeout.init -> void +Microsoft.AspNetCore.Http.Timeouts.RequestTimeoutPolicy.TimeoutStatusCode.get -> int? +Microsoft.AspNetCore.Http.Timeouts.RequestTimeoutPolicy.TimeoutStatusCode.init -> void +Microsoft.AspNetCore.Http.Timeouts.RequestTimeoutPolicy.WriteTimeoutResponse.get -> Microsoft.AspNetCore.Http.RequestDelegate? +Microsoft.AspNetCore.Http.Timeouts.RequestTimeoutPolicy.WriteTimeoutResponse.init -> void Microsoft.Extensions.DependencyInjection.HttpServiceCollectionExtensions +Microsoft.Extensions.DependencyInjection.RequestTimeoutsIServiceCollectionExtensions override Microsoft.AspNetCore.Http.BindingAddress.Equals(object? obj) -> bool override Microsoft.AspNetCore.Http.BindingAddress.GetHashCode() -> int override Microsoft.AspNetCore.Http.BindingAddress.ToString() -> string! @@ -282,6 +312,11 @@ override Microsoft.AspNetCore.Http.DefaultHttpContext.TraceIdentifier.set -> voi override Microsoft.AspNetCore.Http.DefaultHttpContext.User.get -> System.Security.Claims.ClaimsPrincipal! override Microsoft.AspNetCore.Http.DefaultHttpContext.User.set -> void override Microsoft.AspNetCore.Http.DefaultHttpContext.WebSockets.get -> Microsoft.AspNetCore.Http.WebSocketManager! +static Microsoft.AspNetCore.Builder.RequestTimeoutsIApplicationBuilderExtensions.UseRequestTimeouts(this Microsoft.AspNetCore.Builder.IApplicationBuilder! builder) -> Microsoft.AspNetCore.Builder.IApplicationBuilder! +static Microsoft.AspNetCore.Builder.RequestTimeoutsIEndpointConventionBuilderExtensions.DisableRequestTimeout(this Microsoft.AspNetCore.Builder.IEndpointConventionBuilder! builder) -> Microsoft.AspNetCore.Builder.IEndpointConventionBuilder! +static Microsoft.AspNetCore.Builder.RequestTimeoutsIEndpointConventionBuilderExtensions.WithRequestTimeout(this Microsoft.AspNetCore.Builder.IEndpointConventionBuilder! builder, Microsoft.AspNetCore.Http.Timeouts.RequestTimeoutPolicy! policy) -> Microsoft.AspNetCore.Builder.IEndpointConventionBuilder! +static Microsoft.AspNetCore.Builder.RequestTimeoutsIEndpointConventionBuilderExtensions.WithRequestTimeout(this Microsoft.AspNetCore.Builder.IEndpointConventionBuilder! builder, string! policyName) -> Microsoft.AspNetCore.Builder.IEndpointConventionBuilder! +static Microsoft.AspNetCore.Builder.RequestTimeoutsIEndpointConventionBuilderExtensions.WithRequestTimeout(this Microsoft.AspNetCore.Builder.IEndpointConventionBuilder! builder, System.TimeSpan timeout) -> Microsoft.AspNetCore.Builder.IEndpointConventionBuilder! static Microsoft.AspNetCore.Http.BindingAddress.Parse(string! address) -> Microsoft.AspNetCore.Http.BindingAddress! static Microsoft.AspNetCore.Http.HttpRequestRewindExtensions.EnableBuffering(this Microsoft.AspNetCore.Http.HttpRequest! request) -> void static Microsoft.AspNetCore.Http.HttpRequestRewindExtensions.EnableBuffering(this Microsoft.AspNetCore.Http.HttpRequest! request, int bufferThreshold) -> void @@ -290,6 +325,8 @@ static Microsoft.AspNetCore.Http.HttpRequestRewindExtensions.EnableBuffering(thi static Microsoft.AspNetCore.Http.RequestFormReaderExtensions.ReadFormAsync(this Microsoft.AspNetCore.Http.HttpRequest! request, Microsoft.AspNetCore.Http.Features.FormOptions! options, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task! static Microsoft.AspNetCore.Http.SendFileFallback.SendFileAsync(System.IO.Stream! destination, string! filePath, long offset, long? count, System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.Task! static Microsoft.Extensions.DependencyInjection.HttpServiceCollectionExtensions.AddHttpContextAccessor(this Microsoft.Extensions.DependencyInjection.IServiceCollection! services) -> Microsoft.Extensions.DependencyInjection.IServiceCollection! +static Microsoft.Extensions.DependencyInjection.RequestTimeoutsIServiceCollectionExtensions.AddRequestTimeouts(this Microsoft.Extensions.DependencyInjection.IServiceCollection! services) -> Microsoft.Extensions.DependencyInjection.IServiceCollection! +static Microsoft.Extensions.DependencyInjection.RequestTimeoutsIServiceCollectionExtensions.AddRequestTimeouts(this Microsoft.Extensions.DependencyInjection.IServiceCollection! services, System.Action! configure) -> Microsoft.Extensions.DependencyInjection.IServiceCollection! static readonly Microsoft.AspNetCore.Http.FormCollection.Empty -> Microsoft.AspNetCore.Http.FormCollection! static readonly Microsoft.AspNetCore.Http.QueryCollection.Empty -> Microsoft.AspNetCore.Http.QueryCollection! virtual Microsoft.AspNetCore.Http.Features.HttpResponseFeature.HasStarted.get -> bool diff --git a/src/Http/Http/src/PublicAPI.Unshipped.txt b/src/Http/Http/src/PublicAPI.Unshipped.txt index 873662a02b6c..7dc5c58110bf 100644 --- a/src/Http/Http/src/PublicAPI.Unshipped.txt +++ b/src/Http/Http/src/PublicAPI.Unshipped.txt @@ -1,38 +1 @@ #nullable enable -Microsoft.AspNetCore.Builder.RequestTimeoutsIApplicationBuilderExtensions -Microsoft.AspNetCore.Builder.RequestTimeoutsIEndpointConventionBuilderExtensions -Microsoft.AspNetCore.Http.BindingAddress.IsNamedPipe.get -> bool -Microsoft.AspNetCore.Http.BindingAddress.NamedPipeName.get -> string! -Microsoft.AspNetCore.Http.Timeouts.DisableRequestTimeoutAttribute -Microsoft.AspNetCore.Http.Timeouts.DisableRequestTimeoutAttribute.DisableRequestTimeoutAttribute() -> void -Microsoft.AspNetCore.Http.Timeouts.IHttpRequestTimeoutFeature -Microsoft.AspNetCore.Http.Timeouts.IHttpRequestTimeoutFeature.DisableTimeout() -> void -Microsoft.AspNetCore.Http.Timeouts.IHttpRequestTimeoutFeature.RequestTimeoutToken.get -> System.Threading.CancellationToken -Microsoft.AspNetCore.Http.Timeouts.RequestTimeoutAttribute -Microsoft.AspNetCore.Http.Timeouts.RequestTimeoutAttribute.PolicyName.get -> string? -Microsoft.AspNetCore.Http.Timeouts.RequestTimeoutAttribute.RequestTimeoutAttribute(int milliseconds) -> void -Microsoft.AspNetCore.Http.Timeouts.RequestTimeoutAttribute.RequestTimeoutAttribute(string! policyName) -> void -Microsoft.AspNetCore.Http.Timeouts.RequestTimeoutAttribute.Timeout.get -> System.TimeSpan? -Microsoft.AspNetCore.Http.Timeouts.RequestTimeoutOptions -Microsoft.AspNetCore.Http.Timeouts.RequestTimeoutOptions.AddPolicy(string! policyName, Microsoft.AspNetCore.Http.Timeouts.RequestTimeoutPolicy! policy) -> Microsoft.AspNetCore.Http.Timeouts.RequestTimeoutOptions! -Microsoft.AspNetCore.Http.Timeouts.RequestTimeoutOptions.AddPolicy(string! policyName, System.TimeSpan timeout) -> Microsoft.AspNetCore.Http.Timeouts.RequestTimeoutOptions! -Microsoft.AspNetCore.Http.Timeouts.RequestTimeoutOptions.DefaultPolicy.get -> Microsoft.AspNetCore.Http.Timeouts.RequestTimeoutPolicy? -Microsoft.AspNetCore.Http.Timeouts.RequestTimeoutOptions.DefaultPolicy.set -> void -Microsoft.AspNetCore.Http.Timeouts.RequestTimeoutOptions.Policies.get -> System.Collections.Generic.IDictionary! -Microsoft.AspNetCore.Http.Timeouts.RequestTimeoutOptions.RequestTimeoutOptions() -> void -Microsoft.AspNetCore.Http.Timeouts.RequestTimeoutPolicy -Microsoft.AspNetCore.Http.Timeouts.RequestTimeoutPolicy.RequestTimeoutPolicy() -> void -Microsoft.AspNetCore.Http.Timeouts.RequestTimeoutPolicy.Timeout.get -> System.TimeSpan? -Microsoft.AspNetCore.Http.Timeouts.RequestTimeoutPolicy.Timeout.init -> void -Microsoft.AspNetCore.Http.Timeouts.RequestTimeoutPolicy.TimeoutStatusCode.get -> int? -Microsoft.AspNetCore.Http.Timeouts.RequestTimeoutPolicy.TimeoutStatusCode.init -> void -Microsoft.AspNetCore.Http.Timeouts.RequestTimeoutPolicy.WriteTimeoutResponse.get -> Microsoft.AspNetCore.Http.RequestDelegate? -Microsoft.AspNetCore.Http.Timeouts.RequestTimeoutPolicy.WriteTimeoutResponse.init -> void -Microsoft.Extensions.DependencyInjection.RequestTimeoutsIServiceCollectionExtensions -static Microsoft.AspNetCore.Builder.RequestTimeoutsIApplicationBuilderExtensions.UseRequestTimeouts(this Microsoft.AspNetCore.Builder.IApplicationBuilder! builder) -> Microsoft.AspNetCore.Builder.IApplicationBuilder! -static Microsoft.AspNetCore.Builder.RequestTimeoutsIEndpointConventionBuilderExtensions.DisableRequestTimeout(this Microsoft.AspNetCore.Builder.IEndpointConventionBuilder! builder) -> Microsoft.AspNetCore.Builder.IEndpointConventionBuilder! -static Microsoft.AspNetCore.Builder.RequestTimeoutsIEndpointConventionBuilderExtensions.WithRequestTimeout(this Microsoft.AspNetCore.Builder.IEndpointConventionBuilder! builder, Microsoft.AspNetCore.Http.Timeouts.RequestTimeoutPolicy! policy) -> Microsoft.AspNetCore.Builder.IEndpointConventionBuilder! -static Microsoft.AspNetCore.Builder.RequestTimeoutsIEndpointConventionBuilderExtensions.WithRequestTimeout(this Microsoft.AspNetCore.Builder.IEndpointConventionBuilder! builder, string! policyName) -> Microsoft.AspNetCore.Builder.IEndpointConventionBuilder! -static Microsoft.AspNetCore.Builder.RequestTimeoutsIEndpointConventionBuilderExtensions.WithRequestTimeout(this Microsoft.AspNetCore.Builder.IEndpointConventionBuilder! builder, System.TimeSpan timeout) -> Microsoft.AspNetCore.Builder.IEndpointConventionBuilder! -static Microsoft.Extensions.DependencyInjection.RequestTimeoutsIServiceCollectionExtensions.AddRequestTimeouts(this Microsoft.Extensions.DependencyInjection.IServiceCollection! services) -> Microsoft.Extensions.DependencyInjection.IServiceCollection! -static Microsoft.Extensions.DependencyInjection.RequestTimeoutsIServiceCollectionExtensions.AddRequestTimeouts(this Microsoft.Extensions.DependencyInjection.IServiceCollection! services, System.Action! configure) -> Microsoft.Extensions.DependencyInjection.IServiceCollection! diff --git a/src/Http/Routing.Abstractions/src/PublicAPI.Shipped.txt b/src/Http/Routing.Abstractions/src/PublicAPI.Shipped.txt index 805d7fb17f9b..7b3c2bcb3bfb 100644 --- a/src/Http/Routing.Abstractions/src/PublicAPI.Shipped.txt +++ b/src/Http/Routing.Abstractions/src/PublicAPI.Shipped.txt @@ -2,7 +2,7 @@ abstract Microsoft.AspNetCore.Routing.LinkGenerator.GetPathByAddress(Microsoft.AspNetCore.Http.HttpContext! httpContext, TAddress address, Microsoft.AspNetCore.Routing.RouteValueDictionary! values, Microsoft.AspNetCore.Routing.RouteValueDictionary? ambientValues = null, Microsoft.AspNetCore.Http.PathString? pathBase = null, Microsoft.AspNetCore.Http.FragmentString fragment = default(Microsoft.AspNetCore.Http.FragmentString), Microsoft.AspNetCore.Routing.LinkOptions? options = null) -> string? abstract Microsoft.AspNetCore.Routing.LinkGenerator.GetPathByAddress(TAddress address, Microsoft.AspNetCore.Routing.RouteValueDictionary! values, Microsoft.AspNetCore.Http.PathString pathBase = default(Microsoft.AspNetCore.Http.PathString), Microsoft.AspNetCore.Http.FragmentString fragment = default(Microsoft.AspNetCore.Http.FragmentString), Microsoft.AspNetCore.Routing.LinkOptions? options = null) -> string? abstract Microsoft.AspNetCore.Routing.LinkGenerator.GetUriByAddress(Microsoft.AspNetCore.Http.HttpContext! httpContext, TAddress address, Microsoft.AspNetCore.Routing.RouteValueDictionary! values, Microsoft.AspNetCore.Routing.RouteValueDictionary? ambientValues = null, string? scheme = null, Microsoft.AspNetCore.Http.HostString? host = null, Microsoft.AspNetCore.Http.PathString? pathBase = null, Microsoft.AspNetCore.Http.FragmentString fragment = default(Microsoft.AspNetCore.Http.FragmentString), Microsoft.AspNetCore.Routing.LinkOptions? options = null) -> string? -abstract Microsoft.AspNetCore.Routing.LinkGenerator.GetUriByAddress(TAddress address, Microsoft.AspNetCore.Routing.RouteValueDictionary! values, string? scheme, Microsoft.AspNetCore.Http.HostString host, Microsoft.AspNetCore.Http.PathString pathBase = default(Microsoft.AspNetCore.Http.PathString), Microsoft.AspNetCore.Http.FragmentString fragment = default(Microsoft.AspNetCore.Http.FragmentString), Microsoft.AspNetCore.Routing.LinkOptions? options = null) -> string? +abstract Microsoft.AspNetCore.Routing.LinkGenerator.GetUriByAddress(TAddress address, Microsoft.AspNetCore.Routing.RouteValueDictionary! values, string! scheme, Microsoft.AspNetCore.Http.HostString host, Microsoft.AspNetCore.Http.PathString pathBase = default(Microsoft.AspNetCore.Http.PathString), Microsoft.AspNetCore.Http.FragmentString fragment = default(Microsoft.AspNetCore.Http.FragmentString), Microsoft.AspNetCore.Routing.LinkOptions? options = null) -> string? Microsoft.AspNetCore.Http.Endpoint (forwarded, contained in Microsoft.AspNetCore.Http.Abstractions) Microsoft.AspNetCore.Http.Endpoint.DisplayName.get -> string? (forwarded, contained in Microsoft.AspNetCore.Http.Abstractions) Microsoft.AspNetCore.Http.Endpoint.Endpoint(Microsoft.AspNetCore.Http.RequestDelegate? requestDelegate, Microsoft.AspNetCore.Http.EndpointMetadataCollection? metadata, string? displayName) -> void (forwarded, contained in Microsoft.AspNetCore.Http.Abstractions) diff --git a/src/Http/Routing.Abstractions/src/PublicAPI.Unshipped.txt b/src/Http/Routing.Abstractions/src/PublicAPI.Unshipped.txt index 842a391b1a81..7dc5c58110bf 100644 --- a/src/Http/Routing.Abstractions/src/PublicAPI.Unshipped.txt +++ b/src/Http/Routing.Abstractions/src/PublicAPI.Unshipped.txt @@ -1,3 +1 @@ #nullable enable -*REMOVED*abstract Microsoft.AspNetCore.Routing.LinkGenerator.GetUriByAddress(TAddress address, Microsoft.AspNetCore.Routing.RouteValueDictionary! values, string? scheme, Microsoft.AspNetCore.Http.HostString host, Microsoft.AspNetCore.Http.PathString pathBase = default(Microsoft.AspNetCore.Http.PathString), Microsoft.AspNetCore.Http.FragmentString fragment = default(Microsoft.AspNetCore.Http.FragmentString), Microsoft.AspNetCore.Routing.LinkOptions? options = null) -> string? -abstract Microsoft.AspNetCore.Routing.LinkGenerator.GetUriByAddress(TAddress address, Microsoft.AspNetCore.Routing.RouteValueDictionary! values, string! scheme, Microsoft.AspNetCore.Http.HostString host, Microsoft.AspNetCore.Http.PathString pathBase = default(Microsoft.AspNetCore.Http.PathString), Microsoft.AspNetCore.Http.FragmentString fragment = default(Microsoft.AspNetCore.Http.FragmentString), Microsoft.AspNetCore.Routing.LinkOptions? options = null) -> string? \ No newline at end of file diff --git a/src/Http/Routing/src/PublicAPI.Shipped.txt b/src/Http/Routing/src/PublicAPI.Shipped.txt index 71545ee9c6f9..ec77b6b45e60 100644 --- a/src/Http/Routing/src/PublicAPI.Shipped.txt +++ b/src/Http/Routing/src/PublicAPI.Shipped.txt @@ -74,6 +74,7 @@ Microsoft.AspNetCore.Builder.RouteHandlerBuilder.RouteHandlerBuilder(System.Coll Microsoft.AspNetCore.Builder.RouterMiddleware Microsoft.AspNetCore.Builder.RouterMiddleware.Invoke(Microsoft.AspNetCore.Http.HttpContext! httpContext) -> System.Threading.Tasks.Task! Microsoft.AspNetCore.Builder.RouterMiddleware.RouterMiddleware(Microsoft.AspNetCore.Http.RequestDelegate! next, Microsoft.Extensions.Logging.ILoggerFactory! loggerFactory, Microsoft.AspNetCore.Routing.IRouter! router) -> void +Microsoft.AspNetCore.Builder.RouteShortCircuitEndpointConventionBuilderExtensions Microsoft.AspNetCore.Builder.RoutingBuilderExtensions Microsoft.AspNetCore.Builder.RoutingEndpointConventionBuilderExtensions Microsoft.AspNetCore.Http.EndpointFilterExtensions @@ -415,6 +416,7 @@ Microsoft.AspNetCore.Routing.RouteHandlerOptions Microsoft.AspNetCore.Routing.RouteHandlerOptions.RouteHandlerOptions() -> void Microsoft.AspNetCore.Routing.RouteHandlerOptions.ThrowOnBadRequest.get -> bool Microsoft.AspNetCore.Routing.RouteHandlerOptions.ThrowOnBadRequest.set -> void +Microsoft.AspNetCore.Routing.RouteHandlerServices Microsoft.AspNetCore.Routing.RouteNameMetadata Microsoft.AspNetCore.Routing.RouteNameMetadata.RouteName.get -> string? Microsoft.AspNetCore.Routing.RouteNameMetadata.RouteNameMetadata(string? routeName) -> void @@ -432,6 +434,7 @@ Microsoft.AspNetCore.Routing.RouteOptions.SetParameterPolicy(string! token, Syst Microsoft.AspNetCore.Routing.RouteOptions.SetParameterPolicy(string! token) -> void Microsoft.AspNetCore.Routing.RouteOptions.SuppressCheckForUnhandledSecurityMetadata.get -> bool Microsoft.AspNetCore.Routing.RouteOptions.SuppressCheckForUnhandledSecurityMetadata.set -> void +Microsoft.AspNetCore.Routing.RouteShortCircuitEndpointRouteBuilderExtensions Microsoft.AspNetCore.Routing.RouteValueEqualityComparer Microsoft.AspNetCore.Routing.RouteValueEqualityComparer.Equals(object? x, object? y) -> bool Microsoft.AspNetCore.Routing.RouteValueEqualityComparer.GetHashCode(object! obj) -> int @@ -539,8 +542,13 @@ Microsoft.Extensions.DependencyInjection.RoutingServiceCollectionExtensions override Microsoft.AspNetCore.Routing.CompositeEndpointDataSource.Endpoints.get -> System.Collections.Generic.IReadOnlyList! override Microsoft.AspNetCore.Routing.CompositeEndpointDataSource.GetChangeToken() -> Microsoft.Extensions.Primitives.IChangeToken! override Microsoft.AspNetCore.Routing.CompositeEndpointDataSource.GetGroupedEndpoints(Microsoft.AspNetCore.Routing.RouteGroupContext! context) -> System.Collections.Generic.IReadOnlyList! +override Microsoft.AspNetCore.Routing.DataTokensMetadata.ToString() -> string! override Microsoft.AspNetCore.Routing.DefaultEndpointDataSource.Endpoints.get -> System.Collections.Generic.IReadOnlyList! override Microsoft.AspNetCore.Routing.DefaultEndpointDataSource.GetChangeToken() -> Microsoft.Extensions.Primitives.IChangeToken! +override Microsoft.AspNetCore.Routing.EndpointNameMetadata.ToString() -> string! +override Microsoft.AspNetCore.Routing.ExcludeFromDescriptionAttribute.ToString() -> string! +override Microsoft.AspNetCore.Routing.HostAttribute.ToString() -> string! +override Microsoft.AspNetCore.Routing.HttpMethodMetadata.ToString() -> string! override Microsoft.AspNetCore.Routing.Matching.HostMatcherPolicy.Order.get -> int override Microsoft.AspNetCore.Routing.Matching.HttpMethodMatcherPolicy.Order.get -> int override Microsoft.AspNetCore.Routing.Patterns.RoutePatternException.GetObjectData(System.Runtime.Serialization.SerializationInfo! info, System.Runtime.Serialization.StreamingContext context) -> void @@ -548,7 +556,10 @@ override Microsoft.AspNetCore.Routing.Route.OnRouteMatched(Microsoft.AspNetCore. override Microsoft.AspNetCore.Routing.Route.OnVirtualPathGenerated(Microsoft.AspNetCore.Routing.VirtualPathContext! context) -> Microsoft.AspNetCore.Routing.VirtualPathData? override Microsoft.AspNetCore.Routing.RouteBase.ToString() -> string! override Microsoft.AspNetCore.Routing.RouteEndpointBuilder.Build() -> Microsoft.AspNetCore.Http.Endpoint! +override Microsoft.AspNetCore.Routing.RouteNameMetadata.ToString() -> string! override Microsoft.AspNetCore.Routing.RouteValuesAddress.ToString() -> string? +override Microsoft.AspNetCore.Routing.SuppressLinkGenerationMetadata.ToString() -> string! +override Microsoft.AspNetCore.Routing.SuppressMatchingMetadata.ToString() -> string! static Microsoft.AspNetCore.Builder.EndpointRouteBuilderExtensions.Map(this Microsoft.AspNetCore.Routing.IEndpointRouteBuilder! endpoints, Microsoft.AspNetCore.Routing.Patterns.RoutePattern! pattern, Microsoft.AspNetCore.Http.RequestDelegate! requestDelegate) -> Microsoft.AspNetCore.Builder.IEndpointConventionBuilder! static Microsoft.AspNetCore.Builder.EndpointRouteBuilderExtensions.Map(this Microsoft.AspNetCore.Routing.IEndpointRouteBuilder! endpoints, Microsoft.AspNetCore.Routing.Patterns.RoutePattern! pattern, System.Delegate! handler) -> Microsoft.AspNetCore.Builder.RouteHandlerBuilder! static Microsoft.AspNetCore.Builder.EndpointRouteBuilderExtensions.Map(this Microsoft.AspNetCore.Routing.IEndpointRouteBuilder! endpoints, string! pattern, Microsoft.AspNetCore.Http.RequestDelegate! requestDelegate) -> Microsoft.AspNetCore.Builder.IEndpointConventionBuilder! @@ -577,14 +588,19 @@ static Microsoft.AspNetCore.Builder.MapRouteRouteBuilderExtensions.MapRoute(this static Microsoft.AspNetCore.Builder.MapRouteRouteBuilderExtensions.MapRoute(this Microsoft.AspNetCore.Routing.IRouteBuilder! routeBuilder, string? name, string? template, object? defaults) -> Microsoft.AspNetCore.Routing.IRouteBuilder! static Microsoft.AspNetCore.Builder.MapRouteRouteBuilderExtensions.MapRoute(this Microsoft.AspNetCore.Routing.IRouteBuilder! routeBuilder, string? name, string? template, object? defaults, object? constraints) -> Microsoft.AspNetCore.Routing.IRouteBuilder! static Microsoft.AspNetCore.Builder.MapRouteRouteBuilderExtensions.MapRoute(this Microsoft.AspNetCore.Routing.IRouteBuilder! routeBuilder, string? name, string? template, object? defaults, object? constraints, object? dataTokens) -> Microsoft.AspNetCore.Routing.IRouteBuilder! +static Microsoft.AspNetCore.Builder.RouteShortCircuitEndpointConventionBuilderExtensions.ShortCircuit(this Microsoft.AspNetCore.Builder.IEndpointConventionBuilder! builder, int? statusCode = null) -> Microsoft.AspNetCore.Builder.IEndpointConventionBuilder! static Microsoft.AspNetCore.Builder.RoutingBuilderExtensions.UseRouter(this Microsoft.AspNetCore.Builder.IApplicationBuilder! builder, Microsoft.AspNetCore.Routing.IRouter! router) -> Microsoft.AspNetCore.Builder.IApplicationBuilder! static Microsoft.AspNetCore.Builder.RoutingBuilderExtensions.UseRouter(this Microsoft.AspNetCore.Builder.IApplicationBuilder! builder, System.Action! action) -> Microsoft.AspNetCore.Builder.IApplicationBuilder! +static Microsoft.AspNetCore.Builder.RoutingEndpointConventionBuilderExtensions.DisableAntiforgery(this TBuilder builder) -> TBuilder static Microsoft.AspNetCore.Builder.RoutingEndpointConventionBuilderExtensions.RequireHost(this TBuilder builder, params string![]! hosts) -> TBuilder static Microsoft.AspNetCore.Builder.RoutingEndpointConventionBuilderExtensions.WithDisplayName(this TBuilder builder, string! displayName) -> TBuilder static Microsoft.AspNetCore.Builder.RoutingEndpointConventionBuilderExtensions.WithDisplayName(this TBuilder builder, System.Func! func) -> TBuilder +static Microsoft.AspNetCore.Builder.RoutingEndpointConventionBuilderExtensions.WithFormMappingOptions(this TBuilder builder, int? maxCollectionSize = null, int? maxRecursionDepth = null, int? maxKeySize = null) -> TBuilder +static Microsoft.AspNetCore.Builder.RoutingEndpointConventionBuilderExtensions.WithFormOptions(this TBuilder builder, bool? bufferBody = null, int? memoryBufferThreshold = null, long? bufferBodyLengthLimit = null, int? valueCountLimit = null, int? keyLengthLimit = null, int? valueLengthLimit = null, int? multipartBoundaryLengthLimit = null, int? multipartHeadersCountLimit = null, int? multipartHeadersLengthLimit = null, long? multipartBodyLengthLimit = null) -> TBuilder static Microsoft.AspNetCore.Builder.RoutingEndpointConventionBuilderExtensions.WithGroupName(this TBuilder builder, string! endpointGroupName) -> TBuilder static Microsoft.AspNetCore.Builder.RoutingEndpointConventionBuilderExtensions.WithMetadata(this TBuilder builder, params object![]! items) -> TBuilder static Microsoft.AspNetCore.Builder.RoutingEndpointConventionBuilderExtensions.WithName(this TBuilder builder, string! endpointName) -> TBuilder +static Microsoft.AspNetCore.Builder.RoutingEndpointConventionBuilderExtensions.WithOrder(this TBuilder builder, int order) -> TBuilder static Microsoft.AspNetCore.Http.EndpointFilterExtensions.AddEndpointFilter(this TBuilder builder) -> TBuilder static Microsoft.AspNetCore.Http.EndpointFilterExtensions.AddEndpointFilter(this TBuilder builder, Microsoft.AspNetCore.Http.IEndpointFilter! filter) -> TBuilder static Microsoft.AspNetCore.Http.EndpointFilterExtensions.AddEndpointFilter(this TBuilder builder, System.Func>! routeHandlerFilter) -> TBuilder @@ -676,6 +692,8 @@ static Microsoft.AspNetCore.Routing.RequestDelegateRouteBuilderExtensions.MapVer static Microsoft.AspNetCore.Routing.RouteBase.GetConstraints(Microsoft.AspNetCore.Routing.IInlineConstraintResolver! inlineConstraintResolver, Microsoft.AspNetCore.Routing.Template.RouteTemplate! parsedTemplate, System.Collections.Generic.IDictionary? constraints) -> System.Collections.Generic.IDictionary! static Microsoft.AspNetCore.Routing.RouteBase.GetDefaults(Microsoft.AspNetCore.Routing.Template.RouteTemplate! parsedTemplate, Microsoft.AspNetCore.Routing.RouteValueDictionary? defaults) -> Microsoft.AspNetCore.Routing.RouteValueDictionary! static Microsoft.AspNetCore.Routing.RouteConstraintMatcher.Match(System.Collections.Generic.IDictionary! constraints, Microsoft.AspNetCore.Routing.RouteValueDictionary! routeValues, Microsoft.AspNetCore.Http.HttpContext! httpContext, Microsoft.AspNetCore.Routing.IRouter! route, Microsoft.AspNetCore.Routing.RouteDirection routeDirection, Microsoft.Extensions.Logging.ILogger! logger) -> bool +static Microsoft.AspNetCore.Routing.RouteHandlerServices.Map(Microsoft.AspNetCore.Routing.IEndpointRouteBuilder! endpoints, string! pattern, System.Delegate! handler, System.Collections.Generic.IEnumerable? httpMethods, System.Func! populateMetadata, System.Func! createRequestDelegate) -> Microsoft.AspNetCore.Builder.RouteHandlerBuilder! +static Microsoft.AspNetCore.Routing.RouteShortCircuitEndpointRouteBuilderExtensions.MapShortCircuit(this Microsoft.AspNetCore.Routing.IEndpointRouteBuilder! builder, int statusCode, params string![]! routePrefixes) -> Microsoft.AspNetCore.Builder.IEndpointConventionBuilder! static Microsoft.AspNetCore.Routing.Template.RoutePrecedence.ComputeInbound(Microsoft.AspNetCore.Routing.Template.RouteTemplate! template) -> decimal static Microsoft.AspNetCore.Routing.Template.RoutePrecedence.ComputeOutbound(Microsoft.AspNetCore.Routing.Template.RouteTemplate! template) -> decimal static Microsoft.AspNetCore.Routing.Template.TemplateBinder.RoutePartsEqual(object? a, object? b) -> bool @@ -684,6 +702,7 @@ static Microsoft.AspNetCore.Routing.Template.TemplatePart.CreateLiteral(string! static Microsoft.AspNetCore.Routing.Template.TemplatePart.CreateParameter(string! name, bool isCatchAll, bool isOptional, object? defaultValue, System.Collections.Generic.IEnumerable? inlineConstraints) -> Microsoft.AspNetCore.Routing.Template.TemplatePart! static Microsoft.Extensions.DependencyInjection.RoutingServiceCollectionExtensions.AddRouting(this Microsoft.Extensions.DependencyInjection.IServiceCollection! services) -> Microsoft.Extensions.DependencyInjection.IServiceCollection! static Microsoft.Extensions.DependencyInjection.RoutingServiceCollectionExtensions.AddRouting(this Microsoft.Extensions.DependencyInjection.IServiceCollection! services, System.Action! configureOptions) -> Microsoft.Extensions.DependencyInjection.IServiceCollection! +static Microsoft.Extensions.DependencyInjection.RoutingServiceCollectionExtensions.AddRoutingCore(this Microsoft.Extensions.DependencyInjection.IServiceCollection! services) -> Microsoft.Extensions.DependencyInjection.IServiceCollection! static readonly Microsoft.AspNetCore.Builder.FallbackEndpointRouteBuilderExtensions.DefaultPattern -> string! static readonly Microsoft.AspNetCore.Routing.Matching.EndpointMetadataComparer.Default -> Microsoft.AspNetCore.Routing.Matching.EndpointMetadataComparer! static readonly Microsoft.AspNetCore.Routing.Patterns.RoutePattern.RequiredValueAny -> object! diff --git a/src/Http/Routing/src/PublicAPI.Unshipped.txt b/src/Http/Routing/src/PublicAPI.Unshipped.txt index b551d7588e0d..7dc5c58110bf 100644 --- a/src/Http/Routing/src/PublicAPI.Unshipped.txt +++ b/src/Http/Routing/src/PublicAPI.Unshipped.txt @@ -1,20 +1 @@ #nullable enable -Microsoft.AspNetCore.Routing.RouteHandlerServices -override Microsoft.AspNetCore.Routing.DataTokensMetadata.ToString() -> string! -override Microsoft.AspNetCore.Routing.EndpointNameMetadata.ToString() -> string! -override Microsoft.AspNetCore.Routing.ExcludeFromDescriptionAttribute.ToString() -> string! -override Microsoft.AspNetCore.Routing.HostAttribute.ToString() -> string! -override Microsoft.AspNetCore.Routing.HttpMethodMetadata.ToString() -> string! -override Microsoft.AspNetCore.Routing.RouteNameMetadata.ToString() -> string! -override Microsoft.AspNetCore.Routing.SuppressLinkGenerationMetadata.ToString() -> string! -override Microsoft.AspNetCore.Routing.SuppressMatchingMetadata.ToString() -> string! -static Microsoft.AspNetCore.Builder.RoutingEndpointConventionBuilderExtensions.WithOrder(this TBuilder builder, int order) -> TBuilder -Microsoft.AspNetCore.Builder.RouteShortCircuitEndpointConventionBuilderExtensions -Microsoft.AspNetCore.Routing.RouteShortCircuitEndpointRouteBuilderExtensions -static Microsoft.AspNetCore.Builder.RouteShortCircuitEndpointConventionBuilderExtensions.ShortCircuit(this Microsoft.AspNetCore.Builder.IEndpointConventionBuilder! builder, int? statusCode = null) -> Microsoft.AspNetCore.Builder.IEndpointConventionBuilder! -static Microsoft.AspNetCore.Builder.RoutingEndpointConventionBuilderExtensions.DisableAntiforgery(this TBuilder builder) -> TBuilder -static Microsoft.AspNetCore.Builder.RoutingEndpointConventionBuilderExtensions.WithFormMappingOptions(this TBuilder builder, int? maxCollectionSize = null, int? maxRecursionDepth = null, int? maxKeySize = null) -> TBuilder -static Microsoft.AspNetCore.Builder.RoutingEndpointConventionBuilderExtensions.WithFormOptions(this TBuilder builder, bool? bufferBody = null, int? memoryBufferThreshold = null, long? bufferBodyLengthLimit = null, int? valueCountLimit = null, int? keyLengthLimit = null, int? valueLengthLimit = null, int? multipartBoundaryLengthLimit = null, int? multipartHeadersCountLimit = null, int? multipartHeadersLengthLimit = null, long? multipartBodyLengthLimit = null) -> TBuilder -static Microsoft.AspNetCore.Routing.RouteHandlerServices.Map(Microsoft.AspNetCore.Routing.IEndpointRouteBuilder! endpoints, string! pattern, System.Delegate! handler, System.Collections.Generic.IEnumerable? httpMethods, System.Func! populateMetadata, System.Func! createRequestDelegate) -> Microsoft.AspNetCore.Builder.RouteHandlerBuilder! -static Microsoft.AspNetCore.Routing.RouteShortCircuitEndpointRouteBuilderExtensions.MapShortCircuit(this Microsoft.AspNetCore.Routing.IEndpointRouteBuilder! builder, int statusCode, params string![]! routePrefixes) -> Microsoft.AspNetCore.Builder.IEndpointConventionBuilder! -static Microsoft.Extensions.DependencyInjection.RoutingServiceCollectionExtensions.AddRoutingCore(this Microsoft.Extensions.DependencyInjection.IServiceCollection! services) -> Microsoft.Extensions.DependencyInjection.IServiceCollection! diff --git a/src/HttpClientFactory/Polly/src/PublicAPI.Shipped.txt b/src/HttpClientFactory/Polly/src/PublicAPI.Shipped.txt index 6c4e30bfc3a3..e6fc0848bed9 100644 --- a/src/HttpClientFactory/Polly/src/PublicAPI.Shipped.txt +++ b/src/HttpClientFactory/Polly/src/PublicAPI.Shipped.txt @@ -1,7 +1,11 @@ #nullable enable +Microsoft.Extensions.DependencyInjection.PollyHttpClientBuilderExtensions +Microsoft.Extensions.DependencyInjection.PollyServiceCollectionExtensions +Microsoft.Extensions.Http.PolicyHttpMessageHandler Microsoft.Extensions.Http.PolicyHttpMessageHandler.PolicyHttpMessageHandler(Polly.IAsyncPolicy! policy) -> void Microsoft.Extensions.Http.PolicyHttpMessageHandler.PolicyHttpMessageHandler(System.Func!>! policySelector) -> void override Microsoft.Extensions.Http.PolicyHttpMessageHandler.SendAsync(System.Net.Http.HttpRequestMessage! request, System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.Task! +Polly.HttpRequestMessageExtensions static Microsoft.Extensions.DependencyInjection.PollyHttpClientBuilderExtensions.AddPolicyHandler(this Microsoft.Extensions.DependencyInjection.IHttpClientBuilder! builder, Polly.IAsyncPolicy! policy) -> Microsoft.Extensions.DependencyInjection.IHttpClientBuilder! static Microsoft.Extensions.DependencyInjection.PollyHttpClientBuilderExtensions.AddPolicyHandler(this Microsoft.Extensions.DependencyInjection.IHttpClientBuilder! builder, System.Func!>! policySelector) -> Microsoft.Extensions.DependencyInjection.IHttpClientBuilder! static Microsoft.Extensions.DependencyInjection.PollyHttpClientBuilderExtensions.AddPolicyHandler(this Microsoft.Extensions.DependencyInjection.IHttpClientBuilder! builder, System.Func!>! policyFactory, System.Func! keySelector) -> Microsoft.Extensions.DependencyInjection.IHttpClientBuilder! @@ -12,10 +16,6 @@ static Microsoft.Extensions.DependencyInjection.PollyHttpClientBuilderExtensions static Microsoft.Extensions.DependencyInjection.PollyServiceCollectionExtensions.AddPolicyRegistry(this Microsoft.Extensions.DependencyInjection.IServiceCollection! services) -> Polly.Registry.IPolicyRegistry! static Microsoft.Extensions.DependencyInjection.PollyServiceCollectionExtensions.AddPolicyRegistry(this Microsoft.Extensions.DependencyInjection.IServiceCollection! services, Polly.Registry.IPolicyRegistry! registry) -> Polly.Registry.IPolicyRegistry! static Microsoft.Extensions.DependencyInjection.PollyServiceCollectionExtensions.AddPolicyRegistry(this Microsoft.Extensions.DependencyInjection.IServiceCollection! services, System.Action!>! configureRegistry) -> Microsoft.Extensions.DependencyInjection.IServiceCollection! -static Polly.HttpRequestMessageExtensions.GetPolicyExecutionContext(this System.Net.Http.HttpRequestMessage! request) -> Polly.Context! -static Polly.HttpRequestMessageExtensions.SetPolicyExecutionContext(this System.Net.Http.HttpRequestMessage! request, Polly.Context! context) -> void +static Polly.HttpRequestMessageExtensions.GetPolicyExecutionContext(this System.Net.Http.HttpRequestMessage! request) -> Polly.Context? +static Polly.HttpRequestMessageExtensions.SetPolicyExecutionContext(this System.Net.Http.HttpRequestMessage! request, Polly.Context? context) -> void virtual Microsoft.Extensions.Http.PolicyHttpMessageHandler.SendCoreAsync(System.Net.Http.HttpRequestMessage! request, Polly.Context! context, System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.Task! -Microsoft.Extensions.DependencyInjection.PollyHttpClientBuilderExtensions -Microsoft.Extensions.DependencyInjection.PollyServiceCollectionExtensions -Microsoft.Extensions.Http.PolicyHttpMessageHandler -Polly.HttpRequestMessageExtensions \ No newline at end of file diff --git a/src/HttpClientFactory/Polly/src/PublicAPI.Unshipped.txt b/src/HttpClientFactory/Polly/src/PublicAPI.Unshipped.txt index c4cb37bcec0a..7dc5c58110bf 100644 --- a/src/HttpClientFactory/Polly/src/PublicAPI.Unshipped.txt +++ b/src/HttpClientFactory/Polly/src/PublicAPI.Unshipped.txt @@ -1,5 +1 @@ #nullable enable -*REMOVED*static Polly.HttpRequestMessageExtensions.GetPolicyExecutionContext(this System.Net.Http.HttpRequestMessage! request) -> Polly.Context! -*REMOVED*static Polly.HttpRequestMessageExtensions.SetPolicyExecutionContext(this System.Net.Http.HttpRequestMessage! request, Polly.Context! context) -> void -static Polly.HttpRequestMessageExtensions.GetPolicyExecutionContext(this System.Net.Http.HttpRequestMessage! request) -> Polly.Context? -static Polly.HttpRequestMessageExtensions.SetPolicyExecutionContext(this System.Net.Http.HttpRequestMessage! request, Polly.Context? context) -> void \ No newline at end of file diff --git a/src/Identity/Core/src/PublicAPI.Shipped.txt b/src/Identity/Core/src/PublicAPI.Shipped.txt index 716dd3376cae..b2dc37ed7288 100644 --- a/src/Identity/Core/src/PublicAPI.Shipped.txt +++ b/src/Identity/Core/src/PublicAPI.Shipped.txt @@ -3,6 +3,80 @@ Microsoft.AspNetCore.Identity.AspNetRoleManager Microsoft.AspNetCore.Identity.AspNetRoleManager.AspNetRoleManager(Microsoft.AspNetCore.Identity.IRoleStore! store, System.Collections.Generic.IEnumerable!>! roleValidators, Microsoft.AspNetCore.Identity.ILookupNormalizer! keyNormalizer, Microsoft.AspNetCore.Identity.IdentityErrorDescriber! errors, Microsoft.Extensions.Logging.ILogger!>! logger, Microsoft.AspNetCore.Http.IHttpContextAccessor! contextAccessor) -> void Microsoft.AspNetCore.Identity.AspNetUserManager Microsoft.AspNetCore.Identity.AspNetUserManager.AspNetUserManager(Microsoft.AspNetCore.Identity.IUserStore! store, Microsoft.Extensions.Options.IOptions! optionsAccessor, Microsoft.AspNetCore.Identity.IPasswordHasher! passwordHasher, System.Collections.Generic.IEnumerable!>! userValidators, System.Collections.Generic.IEnumerable!>! passwordValidators, Microsoft.AspNetCore.Identity.ILookupNormalizer! keyNormalizer, Microsoft.AspNetCore.Identity.IdentityErrorDescriber! errors, System.IServiceProvider! services, Microsoft.Extensions.Logging.ILogger!>! logger) -> void +Microsoft.AspNetCore.Identity.Data.ForgotPasswordRequest +Microsoft.AspNetCore.Identity.Data.ForgotPasswordRequest.Email.get -> string! +Microsoft.AspNetCore.Identity.Data.ForgotPasswordRequest.Email.init -> void +Microsoft.AspNetCore.Identity.Data.ForgotPasswordRequest.ForgotPasswordRequest() -> void +Microsoft.AspNetCore.Identity.Data.InfoRequest +Microsoft.AspNetCore.Identity.Data.InfoRequest.InfoRequest() -> void +Microsoft.AspNetCore.Identity.Data.InfoRequest.NewEmail.get -> string? +Microsoft.AspNetCore.Identity.Data.InfoRequest.NewEmail.init -> void +Microsoft.AspNetCore.Identity.Data.InfoRequest.NewPassword.get -> string? +Microsoft.AspNetCore.Identity.Data.InfoRequest.NewPassword.init -> void +Microsoft.AspNetCore.Identity.Data.InfoRequest.OldPassword.get -> string? +Microsoft.AspNetCore.Identity.Data.InfoRequest.OldPassword.init -> void +Microsoft.AspNetCore.Identity.Data.InfoResponse +Microsoft.AspNetCore.Identity.Data.InfoResponse.Email.get -> string! +Microsoft.AspNetCore.Identity.Data.InfoResponse.Email.init -> void +Microsoft.AspNetCore.Identity.Data.InfoResponse.InfoResponse() -> void +Microsoft.AspNetCore.Identity.Data.InfoResponse.IsEmailConfirmed.get -> bool +Microsoft.AspNetCore.Identity.Data.InfoResponse.IsEmailConfirmed.init -> void +Microsoft.AspNetCore.Identity.Data.LoginRequest +Microsoft.AspNetCore.Identity.Data.LoginRequest.Email.get -> string! +Microsoft.AspNetCore.Identity.Data.LoginRequest.Email.init -> void +Microsoft.AspNetCore.Identity.Data.LoginRequest.LoginRequest() -> void +Microsoft.AspNetCore.Identity.Data.LoginRequest.Password.get -> string! +Microsoft.AspNetCore.Identity.Data.LoginRequest.Password.init -> void +Microsoft.AspNetCore.Identity.Data.LoginRequest.TwoFactorCode.get -> string? +Microsoft.AspNetCore.Identity.Data.LoginRequest.TwoFactorCode.init -> void +Microsoft.AspNetCore.Identity.Data.LoginRequest.TwoFactorRecoveryCode.get -> string? +Microsoft.AspNetCore.Identity.Data.LoginRequest.TwoFactorRecoveryCode.init -> void +Microsoft.AspNetCore.Identity.Data.RefreshRequest +Microsoft.AspNetCore.Identity.Data.RefreshRequest.RefreshRequest() -> void +Microsoft.AspNetCore.Identity.Data.RefreshRequest.RefreshToken.get -> string! +Microsoft.AspNetCore.Identity.Data.RefreshRequest.RefreshToken.init -> void +Microsoft.AspNetCore.Identity.Data.RegisterRequest +Microsoft.AspNetCore.Identity.Data.RegisterRequest.Email.get -> string! +Microsoft.AspNetCore.Identity.Data.RegisterRequest.Email.init -> void +Microsoft.AspNetCore.Identity.Data.RegisterRequest.Password.get -> string! +Microsoft.AspNetCore.Identity.Data.RegisterRequest.Password.init -> void +Microsoft.AspNetCore.Identity.Data.RegisterRequest.RegisterRequest() -> void +Microsoft.AspNetCore.Identity.Data.ResendConfirmationEmailRequest +Microsoft.AspNetCore.Identity.Data.ResendConfirmationEmailRequest.Email.get -> string! +Microsoft.AspNetCore.Identity.Data.ResendConfirmationEmailRequest.Email.init -> void +Microsoft.AspNetCore.Identity.Data.ResendConfirmationEmailRequest.ResendConfirmationEmailRequest() -> void +Microsoft.AspNetCore.Identity.Data.ResetPasswordRequest +Microsoft.AspNetCore.Identity.Data.ResetPasswordRequest.Email.get -> string! +Microsoft.AspNetCore.Identity.Data.ResetPasswordRequest.Email.init -> void +Microsoft.AspNetCore.Identity.Data.ResetPasswordRequest.NewPassword.get -> string! +Microsoft.AspNetCore.Identity.Data.ResetPasswordRequest.NewPassword.init -> void +Microsoft.AspNetCore.Identity.Data.ResetPasswordRequest.ResetCode.get -> string! +Microsoft.AspNetCore.Identity.Data.ResetPasswordRequest.ResetCode.init -> void +Microsoft.AspNetCore.Identity.Data.ResetPasswordRequest.ResetPasswordRequest() -> void +Microsoft.AspNetCore.Identity.Data.TwoFactorRequest +Microsoft.AspNetCore.Identity.Data.TwoFactorRequest.Enable.get -> bool? +Microsoft.AspNetCore.Identity.Data.TwoFactorRequest.Enable.init -> void +Microsoft.AspNetCore.Identity.Data.TwoFactorRequest.ForgetMachine.get -> bool +Microsoft.AspNetCore.Identity.Data.TwoFactorRequest.ForgetMachine.init -> void +Microsoft.AspNetCore.Identity.Data.TwoFactorRequest.ResetRecoveryCodes.get -> bool +Microsoft.AspNetCore.Identity.Data.TwoFactorRequest.ResetRecoveryCodes.init -> void +Microsoft.AspNetCore.Identity.Data.TwoFactorRequest.ResetSharedKey.get -> bool +Microsoft.AspNetCore.Identity.Data.TwoFactorRequest.ResetSharedKey.init -> void +Microsoft.AspNetCore.Identity.Data.TwoFactorRequest.TwoFactorCode.get -> string? +Microsoft.AspNetCore.Identity.Data.TwoFactorRequest.TwoFactorCode.init -> void +Microsoft.AspNetCore.Identity.Data.TwoFactorRequest.TwoFactorRequest() -> void +Microsoft.AspNetCore.Identity.Data.TwoFactorResponse +Microsoft.AspNetCore.Identity.Data.TwoFactorResponse.IsMachineRemembered.get -> bool +Microsoft.AspNetCore.Identity.Data.TwoFactorResponse.IsMachineRemembered.init -> void +Microsoft.AspNetCore.Identity.Data.TwoFactorResponse.IsTwoFactorEnabled.get -> bool +Microsoft.AspNetCore.Identity.Data.TwoFactorResponse.IsTwoFactorEnabled.init -> void +Microsoft.AspNetCore.Identity.Data.TwoFactorResponse.RecoveryCodes.get -> string![]? +Microsoft.AspNetCore.Identity.Data.TwoFactorResponse.RecoveryCodes.init -> void +Microsoft.AspNetCore.Identity.Data.TwoFactorResponse.RecoveryCodesLeft.get -> int +Microsoft.AspNetCore.Identity.Data.TwoFactorResponse.RecoveryCodesLeft.init -> void +Microsoft.AspNetCore.Identity.Data.TwoFactorResponse.SharedKey.get -> string! +Microsoft.AspNetCore.Identity.Data.TwoFactorResponse.SharedKey.init -> void +Microsoft.AspNetCore.Identity.Data.TwoFactorResponse.TwoFactorResponse() -> void Microsoft.AspNetCore.Identity.DataProtectionTokenProviderOptions Microsoft.AspNetCore.Identity.DataProtectionTokenProviderOptions.DataProtectionTokenProviderOptions() -> void Microsoft.AspNetCore.Identity.DataProtectionTokenProviderOptions.Name.get -> string! @@ -37,6 +111,10 @@ Microsoft.AspNetCore.Identity.IdentityCookiesBuilder.TwoFactorRememberMeCookie.g Microsoft.AspNetCore.Identity.IdentityCookiesBuilder.TwoFactorRememberMeCookie.set -> void Microsoft.AspNetCore.Identity.IdentityCookiesBuilder.TwoFactorUserIdCookie.get -> Microsoft.Extensions.Options.OptionsBuilder? Microsoft.AspNetCore.Identity.IdentityCookiesBuilder.TwoFactorUserIdCookie.set -> void +Microsoft.AspNetCore.Identity.IEmailSender +Microsoft.AspNetCore.Identity.IEmailSender.SendConfirmationLinkAsync(TUser! user, string! email, string! confirmationLink) -> System.Threading.Tasks.Task! +Microsoft.AspNetCore.Identity.IEmailSender.SendPasswordResetCodeAsync(TUser! user, string! email, string! resetCode) -> System.Threading.Tasks.Task! +Microsoft.AspNetCore.Identity.IEmailSender.SendPasswordResetLinkAsync(TUser! user, string! email, string! resetLink) -> System.Threading.Tasks.Task! Microsoft.AspNetCore.Identity.ISecurityStampValidator Microsoft.AspNetCore.Identity.ISecurityStampValidator.ValidateAsync(Microsoft.AspNetCore.Authentication.Cookies.CookieValidatePrincipalContext! context) -> System.Threading.Tasks.Task! Microsoft.AspNetCore.Identity.ITwoFactorSecurityStampValidator @@ -53,14 +131,20 @@ Microsoft.AspNetCore.Identity.SecurityStampValidator.Logger.get -> Micros Microsoft.AspNetCore.Identity.SecurityStampValidator.Logger.set -> void Microsoft.AspNetCore.Identity.SecurityStampValidator.Options.get -> Microsoft.AspNetCore.Identity.SecurityStampValidatorOptions! Microsoft.AspNetCore.Identity.SecurityStampValidator.SecurityStampValidator(Microsoft.Extensions.Options.IOptions! options, Microsoft.AspNetCore.Identity.SignInManager! signInManager, Microsoft.AspNetCore.Authentication.ISystemClock! clock, Microsoft.Extensions.Logging.ILoggerFactory! logger) -> void +Microsoft.AspNetCore.Identity.SecurityStampValidator.SecurityStampValidator(Microsoft.Extensions.Options.IOptions! options, Microsoft.AspNetCore.Identity.SignInManager! signInManager, Microsoft.Extensions.Logging.ILoggerFactory! logger) -> void Microsoft.AspNetCore.Identity.SecurityStampValidator.SignInManager.get -> Microsoft.AspNetCore.Identity.SignInManager! +Microsoft.AspNetCore.Identity.SecurityStampValidator.TimeProvider.get -> System.TimeProvider! Microsoft.AspNetCore.Identity.SecurityStampValidatorOptions Microsoft.AspNetCore.Identity.SecurityStampValidatorOptions.OnRefreshingPrincipal.get -> System.Func? Microsoft.AspNetCore.Identity.SecurityStampValidatorOptions.OnRefreshingPrincipal.set -> void Microsoft.AspNetCore.Identity.SecurityStampValidatorOptions.SecurityStampValidatorOptions() -> void +Microsoft.AspNetCore.Identity.SecurityStampValidatorOptions.TimeProvider.get -> System.TimeProvider? +Microsoft.AspNetCore.Identity.SecurityStampValidatorOptions.TimeProvider.set -> void Microsoft.AspNetCore.Identity.SecurityStampValidatorOptions.ValidationInterval.get -> System.TimeSpan Microsoft.AspNetCore.Identity.SecurityStampValidatorOptions.ValidationInterval.set -> void Microsoft.AspNetCore.Identity.SignInManager +Microsoft.AspNetCore.Identity.SignInManager.AuthenticationScheme.get -> string! +Microsoft.AspNetCore.Identity.SignInManager.AuthenticationScheme.set -> void Microsoft.AspNetCore.Identity.SignInManager.ClaimsFactory.get -> Microsoft.AspNetCore.Identity.IUserClaimsPrincipalFactory! Microsoft.AspNetCore.Identity.SignInManager.ClaimsFactory.set -> void Microsoft.AspNetCore.Identity.SignInManager.Context.get -> Microsoft.AspNetCore.Http.HttpContext! @@ -72,11 +156,19 @@ Microsoft.AspNetCore.Identity.SignInManager.UserManager.get -> Microsoft. Microsoft.AspNetCore.Identity.SignInManager.UserManager.set -> void Microsoft.AspNetCore.Identity.TwoFactorSecurityStampValidator Microsoft.AspNetCore.Identity.TwoFactorSecurityStampValidator.TwoFactorSecurityStampValidator(Microsoft.Extensions.Options.IOptions! options, Microsoft.AspNetCore.Identity.SignInManager! signInManager, Microsoft.AspNetCore.Authentication.ISystemClock! clock, Microsoft.Extensions.Logging.ILoggerFactory! logger) -> void +Microsoft.AspNetCore.Identity.TwoFactorSecurityStampValidator.TwoFactorSecurityStampValidator(Microsoft.Extensions.Options.IOptions! options, Microsoft.AspNetCore.Identity.SignInManager! signInManager, Microsoft.Extensions.Logging.ILoggerFactory! logger) -> void +Microsoft.AspNetCore.Identity.UI.Services.IEmailSender +Microsoft.AspNetCore.Identity.UI.Services.IEmailSender.SendEmailAsync(string! email, string! subject, string! htmlMessage) -> System.Threading.Tasks.Task! +Microsoft.AspNetCore.Identity.UI.Services.NoOpEmailSender +Microsoft.AspNetCore.Identity.UI.Services.NoOpEmailSender.NoOpEmailSender() -> void +Microsoft.AspNetCore.Identity.UI.Services.NoOpEmailSender.SendEmailAsync(string! email, string! subject, string! htmlMessage) -> System.Threading.Tasks.Task! +Microsoft.AspNetCore.Routing.IdentityApiEndpointRouteBuilderExtensions Microsoft.Extensions.DependencyInjection.IdentityServiceCollectionExtensions override Microsoft.AspNetCore.Identity.AspNetRoleManager.CancellationToken.get -> System.Threading.CancellationToken override Microsoft.AspNetCore.Identity.AspNetUserManager.CancellationToken.get -> System.Threading.CancellationToken override Microsoft.AspNetCore.Identity.TwoFactorSecurityStampValidator.SecurityStampVerified(TUser! user, Microsoft.AspNetCore.Authentication.Cookies.CookieValidatePrincipalContext! context) -> System.Threading.Tasks.Task! override Microsoft.AspNetCore.Identity.TwoFactorSecurityStampValidator.VerifySecurityStamp(System.Security.Claims.ClaimsPrincipal? principal) -> System.Threading.Tasks.Task! +static Microsoft.AspNetCore.Identity.IdentityBuilderExtensions.AddApiEndpoints(this Microsoft.AspNetCore.Identity.IdentityBuilder! builder) -> Microsoft.AspNetCore.Identity.IdentityBuilder! static Microsoft.AspNetCore.Identity.IdentityBuilderExtensions.AddDefaultTokenProviders(this Microsoft.AspNetCore.Identity.IdentityBuilder! builder) -> Microsoft.AspNetCore.Identity.IdentityBuilder! static Microsoft.AspNetCore.Identity.IdentityBuilderExtensions.AddSignInManager(this Microsoft.AspNetCore.Identity.IdentityBuilder! builder) -> Microsoft.AspNetCore.Identity.IdentityBuilder! static Microsoft.AspNetCore.Identity.IdentityBuilderExtensions.AddSignInManager(this Microsoft.AspNetCore.Identity.IdentityBuilder! builder) -> Microsoft.AspNetCore.Identity.IdentityBuilder! @@ -88,11 +180,15 @@ static Microsoft.AspNetCore.Identity.IdentityCookieAuthenticationBuilderExtensio static Microsoft.AspNetCore.Identity.IdentityCookieAuthenticationBuilderExtensions.AddTwoFactorUserIdCookie(this Microsoft.AspNetCore.Authentication.AuthenticationBuilder! builder) -> Microsoft.Extensions.Options.OptionsBuilder! static Microsoft.AspNetCore.Identity.SecurityStampValidator.ValidateAsync(Microsoft.AspNetCore.Authentication.Cookies.CookieValidatePrincipalContext! context) -> System.Threading.Tasks.Task! static Microsoft.AspNetCore.Identity.SecurityStampValidator.ValidatePrincipalAsync(Microsoft.AspNetCore.Authentication.Cookies.CookieValidatePrincipalContext! context) -> System.Threading.Tasks.Task! +static Microsoft.AspNetCore.Routing.IdentityApiEndpointRouteBuilderExtensions.MapIdentityApi(this Microsoft.AspNetCore.Routing.IEndpointRouteBuilder! endpoints) -> Microsoft.AspNetCore.Builder.IEndpointConventionBuilder! static Microsoft.Extensions.DependencyInjection.IdentityServiceCollectionExtensions.AddIdentity(this Microsoft.Extensions.DependencyInjection.IServiceCollection! services) -> Microsoft.AspNetCore.Identity.IdentityBuilder! static Microsoft.Extensions.DependencyInjection.IdentityServiceCollectionExtensions.AddIdentity(this Microsoft.Extensions.DependencyInjection.IServiceCollection! services, System.Action! setupAction) -> Microsoft.AspNetCore.Identity.IdentityBuilder! +static Microsoft.Extensions.DependencyInjection.IdentityServiceCollectionExtensions.AddIdentityApiEndpoints(this Microsoft.Extensions.DependencyInjection.IServiceCollection! services) -> Microsoft.AspNetCore.Identity.IdentityBuilder! +static Microsoft.Extensions.DependencyInjection.IdentityServiceCollectionExtensions.AddIdentityApiEndpoints(this Microsoft.Extensions.DependencyInjection.IServiceCollection! services, System.Action! configure) -> Microsoft.AspNetCore.Identity.IdentityBuilder! static Microsoft.Extensions.DependencyInjection.IdentityServiceCollectionExtensions.ConfigureApplicationCookie(this Microsoft.Extensions.DependencyInjection.IServiceCollection! services, System.Action! configure) -> Microsoft.Extensions.DependencyInjection.IServiceCollection! static Microsoft.Extensions.DependencyInjection.IdentityServiceCollectionExtensions.ConfigureExternalCookie(this Microsoft.Extensions.DependencyInjection.IServiceCollection! services, System.Action! configure) -> Microsoft.Extensions.DependencyInjection.IServiceCollection! static readonly Microsoft.AspNetCore.Identity.IdentityConstants.ApplicationScheme -> string! +static readonly Microsoft.AspNetCore.Identity.IdentityConstants.BearerScheme -> string! static readonly Microsoft.AspNetCore.Identity.IdentityConstants.ExternalScheme -> string! static readonly Microsoft.AspNetCore.Identity.IdentityConstants.TwoFactorRememberMeScheme -> string! static readonly Microsoft.AspNetCore.Identity.IdentityConstants.TwoFactorUserIdScheme -> string! @@ -115,6 +211,7 @@ virtual Microsoft.AspNetCore.Identity.SignInManager.GetTwoFactorAuthentic virtual Microsoft.AspNetCore.Identity.SignInManager.IsLockedOut(TUser! user) -> System.Threading.Tasks.Task! virtual Microsoft.AspNetCore.Identity.SignInManager.IsSignedIn(System.Security.Claims.ClaimsPrincipal! principal) -> bool virtual Microsoft.AspNetCore.Identity.SignInManager.IsTwoFactorClientRememberedAsync(TUser! user) -> System.Threading.Tasks.Task! +virtual Microsoft.AspNetCore.Identity.SignInManager.IsTwoFactorEnabledAsync(TUser! user) -> System.Threading.Tasks.Task! virtual Microsoft.AspNetCore.Identity.SignInManager.LockedOut(TUser! user) -> System.Threading.Tasks.Task! virtual Microsoft.AspNetCore.Identity.SignInManager.Logger.get -> Microsoft.Extensions.Logging.ILogger! virtual Microsoft.AspNetCore.Identity.SignInManager.Logger.set -> void diff --git a/src/Identity/Core/src/PublicAPI.Unshipped.txt b/src/Identity/Core/src/PublicAPI.Unshipped.txt index 83d4283afbdd..7dc5c58110bf 100644 --- a/src/Identity/Core/src/PublicAPI.Unshipped.txt +++ b/src/Identity/Core/src/PublicAPI.Unshipped.txt @@ -1,98 +1 @@ #nullable enable -Microsoft.AspNetCore.Identity.Data.ForgotPasswordRequest -Microsoft.AspNetCore.Identity.Data.ForgotPasswordRequest.Email.get -> string! -Microsoft.AspNetCore.Identity.Data.ForgotPasswordRequest.Email.init -> void -Microsoft.AspNetCore.Identity.Data.ForgotPasswordRequest.ForgotPasswordRequest() -> void -Microsoft.AspNetCore.Identity.Data.InfoRequest -Microsoft.AspNetCore.Identity.Data.InfoRequest.InfoRequest() -> void -Microsoft.AspNetCore.Identity.Data.InfoRequest.NewEmail.get -> string? -Microsoft.AspNetCore.Identity.Data.InfoRequest.NewEmail.init -> void -Microsoft.AspNetCore.Identity.Data.InfoRequest.NewPassword.get -> string? -Microsoft.AspNetCore.Identity.Data.InfoRequest.NewPassword.init -> void -Microsoft.AspNetCore.Identity.Data.InfoRequest.OldPassword.get -> string? -Microsoft.AspNetCore.Identity.Data.InfoRequest.OldPassword.init -> void -Microsoft.AspNetCore.Identity.Data.InfoResponse -Microsoft.AspNetCore.Identity.Data.InfoResponse.Email.get -> string! -Microsoft.AspNetCore.Identity.Data.InfoResponse.Email.init -> void -Microsoft.AspNetCore.Identity.Data.InfoResponse.InfoResponse() -> void -Microsoft.AspNetCore.Identity.Data.InfoResponse.IsEmailConfirmed.get -> bool -Microsoft.AspNetCore.Identity.Data.InfoResponse.IsEmailConfirmed.init -> void -Microsoft.AspNetCore.Identity.Data.LoginRequest -Microsoft.AspNetCore.Identity.Data.LoginRequest.Email.get -> string! -Microsoft.AspNetCore.Identity.Data.LoginRequest.Email.init -> void -Microsoft.AspNetCore.Identity.Data.LoginRequest.LoginRequest() -> void -Microsoft.AspNetCore.Identity.Data.LoginRequest.Password.get -> string! -Microsoft.AspNetCore.Identity.Data.LoginRequest.Password.init -> void -Microsoft.AspNetCore.Identity.Data.LoginRequest.TwoFactorCode.get -> string? -Microsoft.AspNetCore.Identity.Data.LoginRequest.TwoFactorCode.init -> void -Microsoft.AspNetCore.Identity.Data.LoginRequest.TwoFactorRecoveryCode.get -> string? -Microsoft.AspNetCore.Identity.Data.LoginRequest.TwoFactorRecoveryCode.init -> void -Microsoft.AspNetCore.Identity.Data.RefreshRequest -Microsoft.AspNetCore.Identity.Data.RefreshRequest.RefreshRequest() -> void -Microsoft.AspNetCore.Identity.Data.RefreshRequest.RefreshToken.get -> string! -Microsoft.AspNetCore.Identity.Data.RefreshRequest.RefreshToken.init -> void -Microsoft.AspNetCore.Identity.Data.RegisterRequest -Microsoft.AspNetCore.Identity.Data.RegisterRequest.Email.get -> string! -Microsoft.AspNetCore.Identity.Data.RegisterRequest.Email.init -> void -Microsoft.AspNetCore.Identity.Data.RegisterRequest.Password.get -> string! -Microsoft.AspNetCore.Identity.Data.RegisterRequest.Password.init -> void -Microsoft.AspNetCore.Identity.Data.RegisterRequest.RegisterRequest() -> void -Microsoft.AspNetCore.Identity.Data.ResendConfirmationEmailRequest -Microsoft.AspNetCore.Identity.Data.ResendConfirmationEmailRequest.Email.get -> string! -Microsoft.AspNetCore.Identity.Data.ResendConfirmationEmailRequest.Email.init -> void -Microsoft.AspNetCore.Identity.Data.ResendConfirmationEmailRequest.ResendConfirmationEmailRequest() -> void -Microsoft.AspNetCore.Identity.Data.ResetPasswordRequest -Microsoft.AspNetCore.Identity.Data.ResetPasswordRequest.Email.get -> string! -Microsoft.AspNetCore.Identity.Data.ResetPasswordRequest.Email.init -> void -Microsoft.AspNetCore.Identity.Data.ResetPasswordRequest.NewPassword.get -> string! -Microsoft.AspNetCore.Identity.Data.ResetPasswordRequest.NewPassword.init -> void -Microsoft.AspNetCore.Identity.Data.ResetPasswordRequest.ResetCode.get -> string! -Microsoft.AspNetCore.Identity.Data.ResetPasswordRequest.ResetCode.init -> void -Microsoft.AspNetCore.Identity.Data.ResetPasswordRequest.ResetPasswordRequest() -> void -Microsoft.AspNetCore.Identity.Data.TwoFactorRequest -Microsoft.AspNetCore.Identity.Data.TwoFactorRequest.Enable.get -> bool? -Microsoft.AspNetCore.Identity.Data.TwoFactorRequest.Enable.init -> void -Microsoft.AspNetCore.Identity.Data.TwoFactorRequest.ForgetMachine.get -> bool -Microsoft.AspNetCore.Identity.Data.TwoFactorRequest.ForgetMachine.init -> void -Microsoft.AspNetCore.Identity.Data.TwoFactorRequest.ResetRecoveryCodes.get -> bool -Microsoft.AspNetCore.Identity.Data.TwoFactorRequest.ResetRecoveryCodes.init -> void -Microsoft.AspNetCore.Identity.Data.TwoFactorRequest.ResetSharedKey.get -> bool -Microsoft.AspNetCore.Identity.Data.TwoFactorRequest.ResetSharedKey.init -> void -Microsoft.AspNetCore.Identity.Data.TwoFactorRequest.TwoFactorCode.get -> string? -Microsoft.AspNetCore.Identity.Data.TwoFactorRequest.TwoFactorCode.init -> void -Microsoft.AspNetCore.Identity.Data.TwoFactorRequest.TwoFactorRequest() -> void -Microsoft.AspNetCore.Identity.Data.TwoFactorResponse -Microsoft.AspNetCore.Identity.Data.TwoFactorResponse.IsMachineRemembered.get -> bool -Microsoft.AspNetCore.Identity.Data.TwoFactorResponse.IsMachineRemembered.init -> void -Microsoft.AspNetCore.Identity.Data.TwoFactorResponse.IsTwoFactorEnabled.get -> bool -Microsoft.AspNetCore.Identity.Data.TwoFactorResponse.IsTwoFactorEnabled.init -> void -Microsoft.AspNetCore.Identity.Data.TwoFactorResponse.RecoveryCodes.get -> string![]? -Microsoft.AspNetCore.Identity.Data.TwoFactorResponse.RecoveryCodes.init -> void -Microsoft.AspNetCore.Identity.Data.TwoFactorResponse.RecoveryCodesLeft.get -> int -Microsoft.AspNetCore.Identity.Data.TwoFactorResponse.RecoveryCodesLeft.init -> void -Microsoft.AspNetCore.Identity.Data.TwoFactorResponse.SharedKey.get -> string! -Microsoft.AspNetCore.Identity.Data.TwoFactorResponse.SharedKey.init -> void -Microsoft.AspNetCore.Identity.Data.TwoFactorResponse.TwoFactorResponse() -> void -Microsoft.AspNetCore.Identity.IEmailSender -Microsoft.AspNetCore.Identity.IEmailSender.SendConfirmationLinkAsync(TUser! user, string! email, string! confirmationLink) -> System.Threading.Tasks.Task! -Microsoft.AspNetCore.Identity.IEmailSender.SendPasswordResetCodeAsync(TUser! user, string! email, string! resetCode) -> System.Threading.Tasks.Task! -Microsoft.AspNetCore.Identity.IEmailSender.SendPasswordResetLinkAsync(TUser! user, string! email, string! resetLink) -> System.Threading.Tasks.Task! -Microsoft.AspNetCore.Identity.SecurityStampValidator.SecurityStampValidator(Microsoft.Extensions.Options.IOptions! options, Microsoft.AspNetCore.Identity.SignInManager! signInManager, Microsoft.Extensions.Logging.ILoggerFactory! logger) -> void -Microsoft.AspNetCore.Identity.SecurityStampValidator.TimeProvider.get -> System.TimeProvider! -Microsoft.AspNetCore.Identity.SecurityStampValidatorOptions.TimeProvider.get -> System.TimeProvider? -Microsoft.AspNetCore.Identity.SecurityStampValidatorOptions.TimeProvider.set -> void -Microsoft.AspNetCore.Identity.SignInManager.AuthenticationScheme.get -> string! -Microsoft.AspNetCore.Identity.SignInManager.AuthenticationScheme.set -> void -Microsoft.AspNetCore.Identity.TwoFactorSecurityStampValidator.TwoFactorSecurityStampValidator(Microsoft.Extensions.Options.IOptions! options, Microsoft.AspNetCore.Identity.SignInManager! signInManager, Microsoft.Extensions.Logging.ILoggerFactory! logger) -> void -Microsoft.AspNetCore.Identity.UI.Services.IEmailSender -Microsoft.AspNetCore.Identity.UI.Services.IEmailSender.SendEmailAsync(string! email, string! subject, string! htmlMessage) -> System.Threading.Tasks.Task! -Microsoft.AspNetCore.Identity.UI.Services.NoOpEmailSender -Microsoft.AspNetCore.Identity.UI.Services.NoOpEmailSender.NoOpEmailSender() -> void -Microsoft.AspNetCore.Identity.UI.Services.NoOpEmailSender.SendEmailAsync(string! email, string! subject, string! htmlMessage) -> System.Threading.Tasks.Task! -Microsoft.AspNetCore.Routing.IdentityApiEndpointRouteBuilderExtensions -static Microsoft.AspNetCore.Identity.IdentityBuilderExtensions.AddApiEndpoints(this Microsoft.AspNetCore.Identity.IdentityBuilder! builder) -> Microsoft.AspNetCore.Identity.IdentityBuilder! -static Microsoft.AspNetCore.Routing.IdentityApiEndpointRouteBuilderExtensions.MapIdentityApi(this Microsoft.AspNetCore.Routing.IEndpointRouteBuilder! endpoints) -> Microsoft.AspNetCore.Builder.IEndpointConventionBuilder! -static Microsoft.Extensions.DependencyInjection.IdentityServiceCollectionExtensions.AddIdentityApiEndpoints(this Microsoft.Extensions.DependencyInjection.IServiceCollection! services) -> Microsoft.AspNetCore.Identity.IdentityBuilder! -static Microsoft.Extensions.DependencyInjection.IdentityServiceCollectionExtensions.AddIdentityApiEndpoints(this Microsoft.Extensions.DependencyInjection.IServiceCollection! services, System.Action! configure) -> Microsoft.AspNetCore.Identity.IdentityBuilder! -static readonly Microsoft.AspNetCore.Identity.IdentityConstants.BearerScheme -> string! -virtual Microsoft.AspNetCore.Identity.SignInManager.IsTwoFactorEnabledAsync(TUser! user) -> System.Threading.Tasks.Task! diff --git a/src/Identity/EntityFrameworkCore/src/PublicAPI.Shipped.txt b/src/Identity/EntityFrameworkCore/src/PublicAPI.Shipped.txt index a3da76a015b6..66ec041c4dc9 100644 --- a/src/Identity/EntityFrameworkCore/src/PublicAPI.Shipped.txt +++ b/src/Identity/EntityFrameworkCore/src/PublicAPI.Shipped.txt @@ -123,6 +123,7 @@ virtual Microsoft.AspNetCore.Identity.EntityFrameworkCore.IdentityDbContext.Roles.set -> void virtual Microsoft.AspNetCore.Identity.EntityFrameworkCore.IdentityDbContext.UserRoles.get -> Microsoft.EntityFrameworkCore.DbSet! virtual Microsoft.AspNetCore.Identity.EntityFrameworkCore.IdentityDbContext.UserRoles.set -> void +virtual Microsoft.AspNetCore.Identity.EntityFrameworkCore.IdentityUserContext.SchemaVersion.get -> System.Version! virtual Microsoft.AspNetCore.Identity.EntityFrameworkCore.IdentityUserContext.UserClaims.get -> Microsoft.EntityFrameworkCore.DbSet! virtual Microsoft.AspNetCore.Identity.EntityFrameworkCore.IdentityUserContext.UserClaims.set -> void virtual Microsoft.AspNetCore.Identity.EntityFrameworkCore.IdentityUserContext.UserLogins.get -> Microsoft.EntityFrameworkCore.DbSet! diff --git a/src/Identity/EntityFrameworkCore/src/PublicAPI.Unshipped.txt b/src/Identity/EntityFrameworkCore/src/PublicAPI.Unshipped.txt index 94526ab7e5f7..7dc5c58110bf 100644 --- a/src/Identity/EntityFrameworkCore/src/PublicAPI.Unshipped.txt +++ b/src/Identity/EntityFrameworkCore/src/PublicAPI.Unshipped.txt @@ -1,2 +1 @@ #nullable enable -virtual Microsoft.AspNetCore.Identity.EntityFrameworkCore.IdentityUserContext.SchemaVersion.get -> System.Version! diff --git a/src/Identity/Extensions.Core/src/PublicAPI.Shipped.txt b/src/Identity/Extensions.Core/src/PublicAPI.Shipped.txt index 679c2c550ece..b30ce145ace6 100644 --- a/src/Identity/Extensions.Core/src/PublicAPI.Shipped.txt +++ b/src/Identity/Extensions.Core/src/PublicAPI.Shipped.txt @@ -58,6 +58,7 @@ Microsoft.AspNetCore.Identity.IdentityResult.Errors.get -> System.Collections.Ge Microsoft.AspNetCore.Identity.IdentityResult.IdentityResult() -> void Microsoft.AspNetCore.Identity.IdentityResult.Succeeded.get -> bool Microsoft.AspNetCore.Identity.IdentityResult.Succeeded.set -> void +Microsoft.AspNetCore.Identity.IdentitySchemaVersions Microsoft.AspNetCore.Identity.ILookupNormalizer Microsoft.AspNetCore.Identity.ILookupNormalizer.NormalizeEmail(string? email) -> string? Microsoft.AspNetCore.Identity.ILookupNormalizer.NormalizeName(string? name) -> string? @@ -259,6 +260,8 @@ Microsoft.AspNetCore.Identity.StoreOptions.MaxLengthForKeys.get -> int Microsoft.AspNetCore.Identity.StoreOptions.MaxLengthForKeys.set -> void Microsoft.AspNetCore.Identity.StoreOptions.ProtectPersonalData.get -> bool Microsoft.AspNetCore.Identity.StoreOptions.ProtectPersonalData.set -> void +Microsoft.AspNetCore.Identity.StoreOptions.SchemaVersion.get -> System.Version! +Microsoft.AspNetCore.Identity.StoreOptions.SchemaVersion.set -> void Microsoft.AspNetCore.Identity.StoreOptions.StoreOptions() -> void Microsoft.AspNetCore.Identity.TokenOptions Microsoft.AspNetCore.Identity.TokenOptions.AuthenticatorIssuer.get -> string! @@ -347,6 +350,9 @@ static Microsoft.AspNetCore.Identity.SignInResult.TwoFactorRequired.get -> Micro static Microsoft.AspNetCore.Identity.UserManager.GetChangeEmailTokenPurpose(string! newEmail) -> string! static Microsoft.Extensions.DependencyInjection.IdentityServiceCollectionExtensions.AddIdentityCore(this Microsoft.Extensions.DependencyInjection.IServiceCollection! services) -> Microsoft.AspNetCore.Identity.IdentityBuilder! static Microsoft.Extensions.DependencyInjection.IdentityServiceCollectionExtensions.AddIdentityCore(this Microsoft.Extensions.DependencyInjection.IServiceCollection! services, System.Action! setupAction) -> Microsoft.AspNetCore.Identity.IdentityBuilder! +static readonly Microsoft.AspNetCore.Identity.IdentitySchemaVersions.Default -> System.Version! +static readonly Microsoft.AspNetCore.Identity.IdentitySchemaVersions.Version1 -> System.Version! +static readonly Microsoft.AspNetCore.Identity.IdentitySchemaVersions.Version2 -> System.Version! static readonly Microsoft.AspNetCore.Identity.TokenOptions.DefaultAuthenticatorProvider -> string! static readonly Microsoft.AspNetCore.Identity.TokenOptions.DefaultEmailProvider -> string! static readonly Microsoft.AspNetCore.Identity.TokenOptions.DefaultPhoneProvider -> string! diff --git a/src/Identity/Extensions.Core/src/PublicAPI.Unshipped.txt b/src/Identity/Extensions.Core/src/PublicAPI.Unshipped.txt index d9173be85cd0..7dc5c58110bf 100644 --- a/src/Identity/Extensions.Core/src/PublicAPI.Unshipped.txt +++ b/src/Identity/Extensions.Core/src/PublicAPI.Unshipped.txt @@ -1,7 +1 @@ #nullable enable -Microsoft.AspNetCore.Identity.IdentitySchemaVersions -Microsoft.AspNetCore.Identity.StoreOptions.SchemaVersion.get -> System.Version! -Microsoft.AspNetCore.Identity.StoreOptions.SchemaVersion.set -> void -static readonly Microsoft.AspNetCore.Identity.IdentitySchemaVersions.Default -> System.Version! -static readonly Microsoft.AspNetCore.Identity.IdentitySchemaVersions.Version1 -> System.Version! -static readonly Microsoft.AspNetCore.Identity.IdentitySchemaVersions.Version2 -> System.Version! diff --git a/src/Identity/UI/src/PublicAPI.Shipped.txt b/src/Identity/UI/src/PublicAPI.Shipped.txt index c8a3a5289a2b..deb565b97992 100644 --- a/src/Identity/UI/src/PublicAPI.Shipped.txt +++ b/src/Identity/UI/src/PublicAPI.Shipped.txt @@ -1,8 +1,8 @@ #nullable enable Microsoft.AspNetCore.Identity.IdentityBuilderUIExtensions Microsoft.AspNetCore.Identity.UI.LoggerEventIds -Microsoft.AspNetCore.Identity.UI.Services.IEmailSender -Microsoft.AspNetCore.Identity.UI.Services.IEmailSender.SendEmailAsync(string! email, string! subject, string! htmlMessage) -> System.Threading.Tasks.Task! +Microsoft.AspNetCore.Identity.UI.Services.IEmailSender (forwarded, contained in Microsoft.AspNetCore.Identity) +Microsoft.AspNetCore.Identity.UI.Services.IEmailSender.SendEmailAsync(string! email, string! subject, string! htmlMessage) -> System.Threading.Tasks.Task! (forwarded, contained in Microsoft.AspNetCore.Identity) Microsoft.AspNetCore.Identity.UI.UIFrameworkAttribute Microsoft.AspNetCore.Identity.UI.UIFrameworkAttribute.UIFramework.get -> string! Microsoft.AspNetCore.Identity.UI.UIFrameworkAttribute.UIFrameworkAttribute(string! uiFramework) -> void diff --git a/src/Identity/UI/src/PublicAPI.Unshipped.txt b/src/Identity/UI/src/PublicAPI.Unshipped.txt index cbdf5a233663..7dc5c58110bf 100644 --- a/src/Identity/UI/src/PublicAPI.Unshipped.txt +++ b/src/Identity/UI/src/PublicAPI.Unshipped.txt @@ -1,5 +1 @@ #nullable enable -*REMOVED*Microsoft.AspNetCore.Identity.UI.Services.IEmailSender -*REMOVED*Microsoft.AspNetCore.Identity.UI.Services.IEmailSender.SendEmailAsync(string! email, string! subject, string! htmlMessage) -> System.Threading.Tasks.Task! -Microsoft.AspNetCore.Identity.UI.Services.IEmailSender (forwarded, contained in Microsoft.AspNetCore.Identity) -Microsoft.AspNetCore.Identity.UI.Services.IEmailSender.SendEmailAsync(string! email, string! subject, string! htmlMessage) -> System.Threading.Tasks.Task! (forwarded, contained in Microsoft.AspNetCore.Identity) diff --git a/src/Middleware/CORS/src/PublicAPI.Shipped.txt b/src/Middleware/CORS/src/PublicAPI.Shipped.txt index 0d10acd163d6..8b3524c03289 100644 --- a/src/Middleware/CORS/src/PublicAPI.Shipped.txt +++ b/src/Middleware/CORS/src/PublicAPI.Shipped.txt @@ -155,8 +155,11 @@ Microsoft.AspNetCore.Cors.Infrastructure.IEnableCorsAttribute Microsoft.AspNetCore.Cors.Infrastructure.IEnableCorsAttribute.PolicyName.get -> string? Microsoft.AspNetCore.Cors.Infrastructure.IEnableCorsAttribute.PolicyName.set -> void Microsoft.Extensions.DependencyInjection.CorsServiceCollectionExtensions +override Microsoft.AspNetCore.Cors.DisableCorsAttribute.ToString() -> string! +override Microsoft.AspNetCore.Cors.EnableCorsAttribute.ToString() -> string! override Microsoft.AspNetCore.Cors.Infrastructure.CorsPolicy.ToString() -> string! override Microsoft.AspNetCore.Cors.Infrastructure.CorsResult.ToString() -> string! +static Microsoft.AspNetCore.Builder.CorsEndpointConventionBuilderExtensions.RequireCors(this TBuilder builder) -> TBuilder static Microsoft.AspNetCore.Builder.CorsEndpointConventionBuilderExtensions.RequireCors(this TBuilder builder, string! policyName) -> TBuilder static Microsoft.AspNetCore.Builder.CorsEndpointConventionBuilderExtensions.RequireCors(this TBuilder builder, System.Action! configurePolicy) -> TBuilder static Microsoft.AspNetCore.Builder.CorsMiddlewareExtensions.UseCors(this Microsoft.AspNetCore.Builder.IApplicationBuilder! app) -> Microsoft.AspNetCore.Builder.IApplicationBuilder! diff --git a/src/Middleware/CORS/src/PublicAPI.Unshipped.txt b/src/Middleware/CORS/src/PublicAPI.Unshipped.txt index 958a0f63243b..7dc5c58110bf 100644 --- a/src/Middleware/CORS/src/PublicAPI.Unshipped.txt +++ b/src/Middleware/CORS/src/PublicAPI.Unshipped.txt @@ -1,4 +1 @@ #nullable enable -override Microsoft.AspNetCore.Cors.DisableCorsAttribute.ToString() -> string! -override Microsoft.AspNetCore.Cors.EnableCorsAttribute.ToString() -> string! -static Microsoft.AspNetCore.Builder.CorsEndpointConventionBuilderExtensions.RequireCors(this TBuilder builder) -> TBuilder diff --git a/src/Middleware/Diagnostics.Abstractions/src/PublicAPI.Shipped.txt b/src/Middleware/Diagnostics.Abstractions/src/PublicAPI.Shipped.txt index 03397f346c10..d5f565a7b1f8 100644 --- a/src/Middleware/Diagnostics.Abstractions/src/PublicAPI.Shipped.txt +++ b/src/Middleware/Diagnostics.Abstractions/src/PublicAPI.Shipped.txt @@ -59,4 +59,5 @@ Microsoft.AspNetCore.Diagnostics.IStatusCodeReExecuteFeature.OriginalPathBase.ge Microsoft.AspNetCore.Diagnostics.IStatusCodeReExecuteFeature.OriginalPathBase.set -> void Microsoft.AspNetCore.Diagnostics.IStatusCodeReExecuteFeature.OriginalQueryString.get -> string? Microsoft.AspNetCore.Diagnostics.IStatusCodeReExecuteFeature.OriginalQueryString.set -> void +Microsoft.AspNetCore.Diagnostics.IStatusCodeReExecuteFeature.OriginalStatusCode.get -> int Microsoft.AspNetCore.Diagnostics.IStatusCodeReExecuteFeature.RouteValues.get -> Microsoft.AspNetCore.Routing.RouteValueDictionary? diff --git a/src/Middleware/Diagnostics.Abstractions/src/PublicAPI.Unshipped.txt b/src/Middleware/Diagnostics.Abstractions/src/PublicAPI.Unshipped.txt index aea7496ee615..7dc5c58110bf 100644 --- a/src/Middleware/Diagnostics.Abstractions/src/PublicAPI.Unshipped.txt +++ b/src/Middleware/Diagnostics.Abstractions/src/PublicAPI.Unshipped.txt @@ -1,2 +1 @@ #nullable enable -Microsoft.AspNetCore.Diagnostics.IStatusCodeReExecuteFeature.OriginalStatusCode.get -> int diff --git a/src/Middleware/Diagnostics/src/PublicAPI.Shipped.txt b/src/Middleware/Diagnostics/src/PublicAPI.Shipped.txt index df3ef29a4e76..48f720a53c80 100644 --- a/src/Middleware/Diagnostics/src/PublicAPI.Shipped.txt +++ b/src/Middleware/Diagnostics/src/PublicAPI.Shipped.txt @@ -10,6 +10,8 @@ Microsoft.AspNetCore.Builder.ExceptionHandlerExtensions Microsoft.AspNetCore.Builder.ExceptionHandlerOptions Microsoft.AspNetCore.Builder.ExceptionHandlerOptions.AllowStatusCode404Response.get -> bool Microsoft.AspNetCore.Builder.ExceptionHandlerOptions.AllowStatusCode404Response.set -> void +Microsoft.AspNetCore.Builder.ExceptionHandlerOptions.CreateScopeForErrors.get -> bool +Microsoft.AspNetCore.Builder.ExceptionHandlerOptions.CreateScopeForErrors.set -> void Microsoft.AspNetCore.Builder.ExceptionHandlerOptions.ExceptionHandler.get -> Microsoft.AspNetCore.Http.RequestDelegate? Microsoft.AspNetCore.Builder.ExceptionHandlerOptions.ExceptionHandler.set -> void Microsoft.AspNetCore.Builder.ExceptionHandlerOptions.ExceptionHandlerOptions() -> void @@ -41,6 +43,8 @@ Microsoft.AspNetCore.Diagnostics.ExceptionHandlerFeature.RouteValues.set -> void Microsoft.AspNetCore.Diagnostics.ExceptionHandlerMiddleware Microsoft.AspNetCore.Diagnostics.ExceptionHandlerMiddleware.ExceptionHandlerMiddleware(Microsoft.AspNetCore.Http.RequestDelegate! next, Microsoft.Extensions.Logging.ILoggerFactory! loggerFactory, Microsoft.Extensions.Options.IOptions! options, System.Diagnostics.DiagnosticListener! diagnosticListener) -> void Microsoft.AspNetCore.Diagnostics.ExceptionHandlerMiddleware.Invoke(Microsoft.AspNetCore.Http.HttpContext! context) -> System.Threading.Tasks.Task! +Microsoft.AspNetCore.Diagnostics.IExceptionHandler +Microsoft.AspNetCore.Diagnostics.IExceptionHandler.TryHandleAsync(Microsoft.AspNetCore.Http.HttpContext! httpContext, System.Exception! exception, System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.ValueTask Microsoft.AspNetCore.Diagnostics.StatusCodeContext Microsoft.AspNetCore.Diagnostics.StatusCodeContext.HttpContext.get -> Microsoft.AspNetCore.Http.HttpContext! Microsoft.AspNetCore.Diagnostics.StatusCodeContext.Next.get -> Microsoft.AspNetCore.Http.RequestDelegate! @@ -62,6 +66,7 @@ Microsoft.AspNetCore.Diagnostics.StatusCodeReExecuteFeature.OriginalPathBase.get Microsoft.AspNetCore.Diagnostics.StatusCodeReExecuteFeature.OriginalPathBase.set -> void Microsoft.AspNetCore.Diagnostics.StatusCodeReExecuteFeature.OriginalQueryString.get -> string? Microsoft.AspNetCore.Diagnostics.StatusCodeReExecuteFeature.OriginalQueryString.set -> void +Microsoft.AspNetCore.Diagnostics.StatusCodeReExecuteFeature.OriginalStatusCode.get -> int Microsoft.AspNetCore.Diagnostics.StatusCodeReExecuteFeature.RouteValues.get -> Microsoft.AspNetCore.Routing.RouteValueDictionary? Microsoft.AspNetCore.Diagnostics.StatusCodeReExecuteFeature.RouteValues.set -> void Microsoft.AspNetCore.Diagnostics.StatusCodeReExecuteFeature.StatusCodeReExecuteFeature() -> void @@ -74,6 +79,7 @@ static Microsoft.AspNetCore.Builder.DeveloperExceptionPageExtensions.UseDevelope static Microsoft.AspNetCore.Builder.ExceptionHandlerExtensions.UseExceptionHandler(this Microsoft.AspNetCore.Builder.IApplicationBuilder! app) -> Microsoft.AspNetCore.Builder.IApplicationBuilder! static Microsoft.AspNetCore.Builder.ExceptionHandlerExtensions.UseExceptionHandler(this Microsoft.AspNetCore.Builder.IApplicationBuilder! app, Microsoft.AspNetCore.Builder.ExceptionHandlerOptions! options) -> Microsoft.AspNetCore.Builder.IApplicationBuilder! static Microsoft.AspNetCore.Builder.ExceptionHandlerExtensions.UseExceptionHandler(this Microsoft.AspNetCore.Builder.IApplicationBuilder! app, string! errorHandlingPath) -> Microsoft.AspNetCore.Builder.IApplicationBuilder! +static Microsoft.AspNetCore.Builder.ExceptionHandlerExtensions.UseExceptionHandler(this Microsoft.AspNetCore.Builder.IApplicationBuilder! app, string! errorHandlingPath, bool createScopeForErrors) -> Microsoft.AspNetCore.Builder.IApplicationBuilder! static Microsoft.AspNetCore.Builder.ExceptionHandlerExtensions.UseExceptionHandler(this Microsoft.AspNetCore.Builder.IApplicationBuilder! app, System.Action! configure) -> Microsoft.AspNetCore.Builder.IApplicationBuilder! static Microsoft.AspNetCore.Builder.StatusCodePagesExtensions.UseStatusCodePages(this Microsoft.AspNetCore.Builder.IApplicationBuilder! app) -> Microsoft.AspNetCore.Builder.IApplicationBuilder! static Microsoft.AspNetCore.Builder.StatusCodePagesExtensions.UseStatusCodePages(this Microsoft.AspNetCore.Builder.IApplicationBuilder! app, Microsoft.AspNetCore.Builder.StatusCodePagesOptions! options) -> Microsoft.AspNetCore.Builder.IApplicationBuilder! @@ -87,4 +93,5 @@ static Microsoft.AspNetCore.Builder.WelcomePageExtensions.UseWelcomePage(this Mi static Microsoft.AspNetCore.Builder.WelcomePageExtensions.UseWelcomePage(this Microsoft.AspNetCore.Builder.IApplicationBuilder! app, Microsoft.AspNetCore.Http.PathString path) -> Microsoft.AspNetCore.Builder.IApplicationBuilder! static Microsoft.AspNetCore.Builder.WelcomePageExtensions.UseWelcomePage(this Microsoft.AspNetCore.Builder.IApplicationBuilder! app, string! path) -> Microsoft.AspNetCore.Builder.IApplicationBuilder! static Microsoft.Extensions.DependencyInjection.ExceptionHandlerServiceCollectionExtensions.AddExceptionHandler(this Microsoft.Extensions.DependencyInjection.IServiceCollection! services, System.Action! configureOptions) -> Microsoft.Extensions.DependencyInjection.IServiceCollection! +static Microsoft.Extensions.DependencyInjection.ExceptionHandlerServiceCollectionExtensions.AddExceptionHandler(this Microsoft.Extensions.DependencyInjection.IServiceCollection! services) -> Microsoft.Extensions.DependencyInjection.IServiceCollection! static Microsoft.Extensions.DependencyInjection.ExceptionHandlerServiceCollectionExtensions.AddExceptionHandler(this Microsoft.Extensions.DependencyInjection.IServiceCollection! services, System.Action! configureOptions) -> Microsoft.Extensions.DependencyInjection.IServiceCollection! diff --git a/src/Middleware/Diagnostics/src/PublicAPI.Unshipped.txt b/src/Middleware/Diagnostics/src/PublicAPI.Unshipped.txt index f82528f7d333..7dc5c58110bf 100644 --- a/src/Middleware/Diagnostics/src/PublicAPI.Unshipped.txt +++ b/src/Middleware/Diagnostics/src/PublicAPI.Unshipped.txt @@ -1,8 +1 @@ #nullable enable -Microsoft.AspNetCore.Builder.ExceptionHandlerOptions.CreateScopeForErrors.get -> bool -Microsoft.AspNetCore.Builder.ExceptionHandlerOptions.CreateScopeForErrors.set -> void -Microsoft.AspNetCore.Diagnostics.IExceptionHandler -Microsoft.AspNetCore.Diagnostics.IExceptionHandler.TryHandleAsync(Microsoft.AspNetCore.Http.HttpContext! httpContext, System.Exception! exception, System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.ValueTask -Microsoft.AspNetCore.Diagnostics.StatusCodeReExecuteFeature.OriginalStatusCode.get -> int -static Microsoft.AspNetCore.Builder.ExceptionHandlerExtensions.UseExceptionHandler(this Microsoft.AspNetCore.Builder.IApplicationBuilder! app, string! errorHandlingPath, bool createScopeForErrors) -> Microsoft.AspNetCore.Builder.IApplicationBuilder! -static Microsoft.Extensions.DependencyInjection.ExceptionHandlerServiceCollectionExtensions.AddExceptionHandler(this Microsoft.Extensions.DependencyInjection.IServiceCollection! services) -> Microsoft.Extensions.DependencyInjection.IServiceCollection! diff --git a/src/Middleware/HttpLogging/src/PublicAPI.Shipped.txt b/src/Middleware/HttpLogging/src/PublicAPI.Shipped.txt index 3d1a57715e16..b02a11efea6f 100644 --- a/src/Middleware/HttpLogging/src/PublicAPI.Shipped.txt +++ b/src/Middleware/HttpLogging/src/PublicAPI.Shipped.txt @@ -1,7 +1,18 @@ #nullable enable Microsoft.AspNetCore.Builder.HttpLoggingBuilderExtensions +Microsoft.AspNetCore.Builder.HttpLoggingEndpointConventionBuilderExtensions +Microsoft.AspNetCore.HttpLogging.HttpLoggingAttribute +Microsoft.AspNetCore.HttpLogging.HttpLoggingAttribute.HttpLoggingAttribute(Microsoft.AspNetCore.HttpLogging.HttpLoggingFields loggingFields) -> void +Microsoft.AspNetCore.HttpLogging.HttpLoggingAttribute.IsRequestBodyLogLimitSet.get -> bool +Microsoft.AspNetCore.HttpLogging.HttpLoggingAttribute.IsResponseBodyLogLimitSet.get -> bool +Microsoft.AspNetCore.HttpLogging.HttpLoggingAttribute.LoggingFields.get -> Microsoft.AspNetCore.HttpLogging.HttpLoggingFields +Microsoft.AspNetCore.HttpLogging.HttpLoggingAttribute.RequestBodyLogLimit.get -> int +Microsoft.AspNetCore.HttpLogging.HttpLoggingAttribute.RequestBodyLogLimit.set -> void +Microsoft.AspNetCore.HttpLogging.HttpLoggingAttribute.ResponseBodyLogLimit.get -> int +Microsoft.AspNetCore.HttpLogging.HttpLoggingAttribute.ResponseBodyLogLimit.set -> void Microsoft.AspNetCore.HttpLogging.HttpLoggingFields -Microsoft.AspNetCore.HttpLogging.HttpLoggingFields.All = Microsoft.AspNetCore.HttpLogging.HttpLoggingFields.Request | Microsoft.AspNetCore.HttpLogging.HttpLoggingFields.Response -> Microsoft.AspNetCore.HttpLogging.HttpLoggingFields +Microsoft.AspNetCore.HttpLogging.HttpLoggingFields.All = Microsoft.AspNetCore.HttpLogging.HttpLoggingFields.Request | Microsoft.AspNetCore.HttpLogging.HttpLoggingFields.Response | Microsoft.AspNetCore.HttpLogging.HttpLoggingFields.Duration -> Microsoft.AspNetCore.HttpLogging.HttpLoggingFields +Microsoft.AspNetCore.HttpLogging.HttpLoggingFields.Duration = 4096 -> Microsoft.AspNetCore.HttpLogging.HttpLoggingFields Microsoft.AspNetCore.HttpLogging.HttpLoggingFields.None = 0 -> Microsoft.AspNetCore.HttpLogging.HttpLoggingFields Microsoft.AspNetCore.HttpLogging.HttpLoggingFields.Request = Microsoft.AspNetCore.HttpLogging.HttpLoggingFields.RequestPropertiesAndHeaders | Microsoft.AspNetCore.HttpLogging.HttpLoggingFields.RequestBody -> Microsoft.AspNetCore.HttpLogging.HttpLoggingFields Microsoft.AspNetCore.HttpLogging.HttpLoggingFields.RequestBody = 1024 -> Microsoft.AspNetCore.HttpLogging.HttpLoggingFields @@ -20,7 +31,25 @@ Microsoft.AspNetCore.HttpLogging.HttpLoggingFields.ResponseHeaders = 128 -> Micr Microsoft.AspNetCore.HttpLogging.HttpLoggingFields.ResponsePropertiesAndHeaders = Microsoft.AspNetCore.HttpLogging.HttpLoggingFields.ResponseStatusCode | Microsoft.AspNetCore.HttpLogging.HttpLoggingFields.ResponseHeaders -> Microsoft.AspNetCore.HttpLogging.HttpLoggingFields Microsoft.AspNetCore.HttpLogging.HttpLoggingFields.ResponseStatusCode = 32 -> Microsoft.AspNetCore.HttpLogging.HttpLoggingFields Microsoft.AspNetCore.HttpLogging.HttpLoggingFields.ResponseTrailers = 512 -> Microsoft.AspNetCore.HttpLogging.HttpLoggingFields +Microsoft.AspNetCore.HttpLogging.HttpLoggingInterceptorContext +Microsoft.AspNetCore.HttpLogging.HttpLoggingInterceptorContext.AddParameter(string! key, object? value) -> void +Microsoft.AspNetCore.HttpLogging.HttpLoggingInterceptorContext.Disable(Microsoft.AspNetCore.HttpLogging.HttpLoggingFields fields) -> void +Microsoft.AspNetCore.HttpLogging.HttpLoggingInterceptorContext.Enable(Microsoft.AspNetCore.HttpLogging.HttpLoggingFields fields) -> void +Microsoft.AspNetCore.HttpLogging.HttpLoggingInterceptorContext.HttpContext.get -> Microsoft.AspNetCore.Http.HttpContext! +Microsoft.AspNetCore.HttpLogging.HttpLoggingInterceptorContext.HttpContext.set -> void +Microsoft.AspNetCore.HttpLogging.HttpLoggingInterceptorContext.HttpLoggingInterceptorContext() -> void +Microsoft.AspNetCore.HttpLogging.HttpLoggingInterceptorContext.IsAnyEnabled(Microsoft.AspNetCore.HttpLogging.HttpLoggingFields fields) -> bool +Microsoft.AspNetCore.HttpLogging.HttpLoggingInterceptorContext.LoggingFields.get -> Microsoft.AspNetCore.HttpLogging.HttpLoggingFields +Microsoft.AspNetCore.HttpLogging.HttpLoggingInterceptorContext.LoggingFields.set -> void +Microsoft.AspNetCore.HttpLogging.HttpLoggingInterceptorContext.Parameters.get -> System.Collections.Generic.IList>! +Microsoft.AspNetCore.HttpLogging.HttpLoggingInterceptorContext.RequestBodyLogLimit.get -> int +Microsoft.AspNetCore.HttpLogging.HttpLoggingInterceptorContext.RequestBodyLogLimit.set -> void +Microsoft.AspNetCore.HttpLogging.HttpLoggingInterceptorContext.ResponseBodyLogLimit.get -> int +Microsoft.AspNetCore.HttpLogging.HttpLoggingInterceptorContext.ResponseBodyLogLimit.set -> void +Microsoft.AspNetCore.HttpLogging.HttpLoggingInterceptorContext.TryDisable(Microsoft.AspNetCore.HttpLogging.HttpLoggingFields fields) -> bool Microsoft.AspNetCore.HttpLogging.HttpLoggingOptions +Microsoft.AspNetCore.HttpLogging.HttpLoggingOptions.CombineLogs.get -> bool +Microsoft.AspNetCore.HttpLogging.HttpLoggingOptions.CombineLogs.set -> void Microsoft.AspNetCore.HttpLogging.HttpLoggingOptions.HttpLoggingOptions() -> void Microsoft.AspNetCore.HttpLogging.HttpLoggingOptions.LoggingFields.get -> Microsoft.AspNetCore.HttpLogging.HttpLoggingFields Microsoft.AspNetCore.HttpLogging.HttpLoggingOptions.LoggingFields.set -> void @@ -31,6 +60,9 @@ Microsoft.AspNetCore.HttpLogging.HttpLoggingOptions.RequestHeaders.get -> System Microsoft.AspNetCore.HttpLogging.HttpLoggingOptions.ResponseBodyLogLimit.get -> int Microsoft.AspNetCore.HttpLogging.HttpLoggingOptions.ResponseBodyLogLimit.set -> void Microsoft.AspNetCore.HttpLogging.HttpLoggingOptions.ResponseHeaders.get -> System.Collections.Generic.ISet! +Microsoft.AspNetCore.HttpLogging.IHttpLoggingInterceptor +Microsoft.AspNetCore.HttpLogging.IHttpLoggingInterceptor.OnRequestAsync(Microsoft.AspNetCore.HttpLogging.HttpLoggingInterceptorContext! logContext) -> System.Threading.Tasks.ValueTask +Microsoft.AspNetCore.HttpLogging.IHttpLoggingInterceptor.OnResponseAsync(Microsoft.AspNetCore.HttpLogging.HttpLoggingInterceptorContext! logContext) -> System.Threading.Tasks.ValueTask Microsoft.AspNetCore.HttpLogging.MediaTypeOptions Microsoft.AspNetCore.HttpLogging.MediaTypeOptions.AddBinary(Microsoft.Net.Http.Headers.MediaTypeHeaderValue! mediaType) -> void Microsoft.AspNetCore.HttpLogging.MediaTypeOptions.AddBinary(string! contentType) -> void @@ -78,5 +110,7 @@ Microsoft.AspNetCore.HttpLogging.W3CLoggingFields.UserName = 8 -> Microsoft.AspN Microsoft.Extensions.DependencyInjection.HttpLoggingServicesExtensions static Microsoft.AspNetCore.Builder.HttpLoggingBuilderExtensions.UseHttpLogging(this Microsoft.AspNetCore.Builder.IApplicationBuilder! app) -> Microsoft.AspNetCore.Builder.IApplicationBuilder! static Microsoft.AspNetCore.Builder.HttpLoggingBuilderExtensions.UseW3CLogging(this Microsoft.AspNetCore.Builder.IApplicationBuilder! app) -> Microsoft.AspNetCore.Builder.IApplicationBuilder! +static Microsoft.AspNetCore.Builder.HttpLoggingEndpointConventionBuilderExtensions.WithHttpLogging(this TBuilder builder, Microsoft.AspNetCore.HttpLogging.HttpLoggingFields loggingFields, int? requestBodyLogLimit = null, int? responseBodyLogLimit = null) -> TBuilder static Microsoft.Extensions.DependencyInjection.HttpLoggingServicesExtensions.AddHttpLogging(this Microsoft.Extensions.DependencyInjection.IServiceCollection! services, System.Action! configureOptions) -> Microsoft.Extensions.DependencyInjection.IServiceCollection! +static Microsoft.Extensions.DependencyInjection.HttpLoggingServicesExtensions.AddHttpLoggingInterceptor(this Microsoft.Extensions.DependencyInjection.IServiceCollection! services) -> Microsoft.Extensions.DependencyInjection.IServiceCollection! static Microsoft.Extensions.DependencyInjection.HttpLoggingServicesExtensions.AddW3CLogging(this Microsoft.Extensions.DependencyInjection.IServiceCollection! services, System.Action! configureOptions) -> Microsoft.Extensions.DependencyInjection.IServiceCollection! diff --git a/src/Middleware/HttpLogging/src/PublicAPI.Unshipped.txt b/src/Middleware/HttpLogging/src/PublicAPI.Unshipped.txt index a91169f56fbb..7dc5c58110bf 100644 --- a/src/Middleware/HttpLogging/src/PublicAPI.Unshipped.txt +++ b/src/Middleware/HttpLogging/src/PublicAPI.Unshipped.txt @@ -1,37 +1 @@ #nullable enable -Microsoft.AspNetCore.Builder.HttpLoggingEndpointConventionBuilderExtensions -Microsoft.AspNetCore.HttpLogging.HttpLoggingAttribute -Microsoft.AspNetCore.HttpLogging.HttpLoggingAttribute.HttpLoggingAttribute(Microsoft.AspNetCore.HttpLogging.HttpLoggingFields loggingFields) -> void -Microsoft.AspNetCore.HttpLogging.HttpLoggingAttribute.IsRequestBodyLogLimitSet.get -> bool -Microsoft.AspNetCore.HttpLogging.HttpLoggingAttribute.IsResponseBodyLogLimitSet.get -> bool -Microsoft.AspNetCore.HttpLogging.HttpLoggingAttribute.LoggingFields.get -> Microsoft.AspNetCore.HttpLogging.HttpLoggingFields -Microsoft.AspNetCore.HttpLogging.HttpLoggingAttribute.RequestBodyLogLimit.get -> int -Microsoft.AspNetCore.HttpLogging.HttpLoggingAttribute.RequestBodyLogLimit.set -> void -Microsoft.AspNetCore.HttpLogging.HttpLoggingAttribute.ResponseBodyLogLimit.get -> int -Microsoft.AspNetCore.HttpLogging.HttpLoggingAttribute.ResponseBodyLogLimit.set -> void -*REMOVED*Microsoft.AspNetCore.HttpLogging.HttpLoggingFields.All = Microsoft.AspNetCore.HttpLogging.HttpLoggingFields.Request | Microsoft.AspNetCore.HttpLogging.HttpLoggingFields.Response -> Microsoft.AspNetCore.HttpLogging.HttpLoggingFields -Microsoft.AspNetCore.HttpLogging.HttpLoggingFields.All = Microsoft.AspNetCore.HttpLogging.HttpLoggingFields.Request | Microsoft.AspNetCore.HttpLogging.HttpLoggingFields.Response | Microsoft.AspNetCore.HttpLogging.HttpLoggingFields.Duration -> Microsoft.AspNetCore.HttpLogging.HttpLoggingFields -Microsoft.AspNetCore.HttpLogging.HttpLoggingFields.Duration = 4096 -> Microsoft.AspNetCore.HttpLogging.HttpLoggingFields -Microsoft.AspNetCore.HttpLogging.HttpLoggingInterceptorContext -Microsoft.AspNetCore.HttpLogging.HttpLoggingInterceptorContext.AddParameter(string! key, object? value) -> void -Microsoft.AspNetCore.HttpLogging.HttpLoggingInterceptorContext.Disable(Microsoft.AspNetCore.HttpLogging.HttpLoggingFields fields) -> void -Microsoft.AspNetCore.HttpLogging.HttpLoggingInterceptorContext.Enable(Microsoft.AspNetCore.HttpLogging.HttpLoggingFields fields) -> void -Microsoft.AspNetCore.HttpLogging.HttpLoggingInterceptorContext.HttpContext.get -> Microsoft.AspNetCore.Http.HttpContext! -Microsoft.AspNetCore.HttpLogging.HttpLoggingInterceptorContext.HttpContext.set -> void -Microsoft.AspNetCore.HttpLogging.HttpLoggingInterceptorContext.HttpLoggingInterceptorContext() -> void -Microsoft.AspNetCore.HttpLogging.HttpLoggingInterceptorContext.IsAnyEnabled(Microsoft.AspNetCore.HttpLogging.HttpLoggingFields fields) -> bool -Microsoft.AspNetCore.HttpLogging.HttpLoggingInterceptorContext.LoggingFields.get -> Microsoft.AspNetCore.HttpLogging.HttpLoggingFields -Microsoft.AspNetCore.HttpLogging.HttpLoggingInterceptorContext.LoggingFields.set -> void -Microsoft.AspNetCore.HttpLogging.HttpLoggingInterceptorContext.Parameters.get -> System.Collections.Generic.IList>! -Microsoft.AspNetCore.HttpLogging.HttpLoggingInterceptorContext.RequestBodyLogLimit.get -> int -Microsoft.AspNetCore.HttpLogging.HttpLoggingInterceptorContext.RequestBodyLogLimit.set -> void -Microsoft.AspNetCore.HttpLogging.HttpLoggingInterceptorContext.ResponseBodyLogLimit.get -> int -Microsoft.AspNetCore.HttpLogging.HttpLoggingInterceptorContext.ResponseBodyLogLimit.set -> void -Microsoft.AspNetCore.HttpLogging.HttpLoggingInterceptorContext.TryDisable(Microsoft.AspNetCore.HttpLogging.HttpLoggingFields fields) -> bool -Microsoft.AspNetCore.HttpLogging.HttpLoggingOptions.CombineLogs.get -> bool -Microsoft.AspNetCore.HttpLogging.HttpLoggingOptions.CombineLogs.set -> void -Microsoft.AspNetCore.HttpLogging.IHttpLoggingInterceptor -Microsoft.AspNetCore.HttpLogging.IHttpLoggingInterceptor.OnRequestAsync(Microsoft.AspNetCore.HttpLogging.HttpLoggingInterceptorContext! logContext) -> System.Threading.Tasks.ValueTask -Microsoft.AspNetCore.HttpLogging.IHttpLoggingInterceptor.OnResponseAsync(Microsoft.AspNetCore.HttpLogging.HttpLoggingInterceptorContext! logContext) -> System.Threading.Tasks.ValueTask -static Microsoft.AspNetCore.Builder.HttpLoggingEndpointConventionBuilderExtensions.WithHttpLogging(this TBuilder builder, Microsoft.AspNetCore.HttpLogging.HttpLoggingFields loggingFields, int? requestBodyLogLimit = null, int? responseBodyLogLimit = null) -> TBuilder -static Microsoft.Extensions.DependencyInjection.HttpLoggingServicesExtensions.AddHttpLoggingInterceptor(this Microsoft.Extensions.DependencyInjection.IServiceCollection! services) -> Microsoft.Extensions.DependencyInjection.IServiceCollection! diff --git a/src/Middleware/HttpOverrides/src/PublicAPI.Shipped.txt b/src/Middleware/HttpOverrides/src/PublicAPI.Shipped.txt index 6885f2a777e2..f650613bac7b 100644 --- a/src/Middleware/HttpOverrides/src/PublicAPI.Shipped.txt +++ b/src/Middleware/HttpOverrides/src/PublicAPI.Shipped.txt @@ -14,9 +14,11 @@ ~static Microsoft.AspNetCore.Builder.HttpMethodOverrideExtensions.UseHttpMethodOverride(this Microsoft.AspNetCore.Builder.IApplicationBuilder builder, Microsoft.AspNetCore.Builder.HttpMethodOverrideOptions options) -> Microsoft.AspNetCore.Builder.IApplicationBuilder ~static Microsoft.AspNetCore.HttpOverrides.ForwardedHeadersDefaults.XForwardedForHeaderName.get -> string ~static Microsoft.AspNetCore.HttpOverrides.ForwardedHeadersDefaults.XForwardedHostHeaderName.get -> string +~static Microsoft.AspNetCore.HttpOverrides.ForwardedHeadersDefaults.XForwardedPrefixHeaderName.get -> string ~static Microsoft.AspNetCore.HttpOverrides.ForwardedHeadersDefaults.XForwardedProtoHeaderName.get -> string ~static Microsoft.AspNetCore.HttpOverrides.ForwardedHeadersDefaults.XOriginalForHeaderName.get -> string ~static Microsoft.AspNetCore.HttpOverrides.ForwardedHeadersDefaults.XOriginalHostHeaderName.get -> string +~static Microsoft.AspNetCore.HttpOverrides.ForwardedHeadersDefaults.XOriginalPrefixHeaderName.get -> string ~static Microsoft.AspNetCore.HttpOverrides.ForwardedHeadersDefaults.XOriginalProtoHeaderName.get -> string ~static Microsoft.Extensions.DependencyInjection.CertificateForwardingServiceExtensions.AddCertificateForwarding(this Microsoft.Extensions.DependencyInjection.IServiceCollection services, System.Action configure) -> Microsoft.Extensions.DependencyInjection.IServiceCollection Microsoft.AspNetCore.Builder.CertificateForwardingBuilderExtensions @@ -31,6 +33,8 @@ Microsoft.AspNetCore.Builder.ForwardedHeadersOptions.ForwardedHeaders.set -> voi Microsoft.AspNetCore.Builder.ForwardedHeadersOptions.ForwardedHeadersOptions() -> void Microsoft.AspNetCore.Builder.ForwardedHeadersOptions.ForwardedHostHeaderName.get -> string! Microsoft.AspNetCore.Builder.ForwardedHeadersOptions.ForwardedHostHeaderName.set -> void +Microsoft.AspNetCore.Builder.ForwardedHeadersOptions.ForwardedPrefixHeaderName.get -> string! +Microsoft.AspNetCore.Builder.ForwardedHeadersOptions.ForwardedPrefixHeaderName.set -> void Microsoft.AspNetCore.Builder.ForwardedHeadersOptions.ForwardedProtoHeaderName.get -> string! Microsoft.AspNetCore.Builder.ForwardedHeadersOptions.ForwardedProtoHeaderName.set -> void Microsoft.AspNetCore.Builder.ForwardedHeadersOptions.ForwardLimit.get -> int? @@ -41,6 +45,8 @@ Microsoft.AspNetCore.Builder.ForwardedHeadersOptions.OriginalForHeaderName.get - Microsoft.AspNetCore.Builder.ForwardedHeadersOptions.OriginalForHeaderName.set -> void Microsoft.AspNetCore.Builder.ForwardedHeadersOptions.OriginalHostHeaderName.get -> string! Microsoft.AspNetCore.Builder.ForwardedHeadersOptions.OriginalHostHeaderName.set -> void +Microsoft.AspNetCore.Builder.ForwardedHeadersOptions.OriginalPrefixHeaderName.get -> string! +Microsoft.AspNetCore.Builder.ForwardedHeadersOptions.OriginalPrefixHeaderName.set -> void Microsoft.AspNetCore.Builder.ForwardedHeadersOptions.OriginalProtoHeaderName.get -> string! Microsoft.AspNetCore.Builder.ForwardedHeadersOptions.OriginalProtoHeaderName.set -> void Microsoft.AspNetCore.Builder.ForwardedHeadersOptions.RequireHeaderSymmetry.get -> bool @@ -59,10 +65,11 @@ Microsoft.AspNetCore.HttpOverrides.CertificateForwardingOptions.CertificateHeade Microsoft.AspNetCore.HttpOverrides.CertificateForwardingOptions.CertificateHeader.set -> void Microsoft.AspNetCore.HttpOverrides.CertificateForwardingOptions.HeaderConverter -> System.Func! Microsoft.AspNetCore.HttpOverrides.ForwardedHeaders -Microsoft.AspNetCore.HttpOverrides.ForwardedHeaders.All = Microsoft.AspNetCore.HttpOverrides.ForwardedHeaders.XForwardedFor | Microsoft.AspNetCore.HttpOverrides.ForwardedHeaders.XForwardedHost | Microsoft.AspNetCore.HttpOverrides.ForwardedHeaders.XForwardedProto -> Microsoft.AspNetCore.HttpOverrides.ForwardedHeaders +Microsoft.AspNetCore.HttpOverrides.ForwardedHeaders.All = Microsoft.AspNetCore.HttpOverrides.ForwardedHeaders.XForwardedFor | Microsoft.AspNetCore.HttpOverrides.ForwardedHeaders.XForwardedHost | Microsoft.AspNetCore.HttpOverrides.ForwardedHeaders.XForwardedProto | Microsoft.AspNetCore.HttpOverrides.ForwardedHeaders.XForwardedPrefix -> Microsoft.AspNetCore.HttpOverrides.ForwardedHeaders Microsoft.AspNetCore.HttpOverrides.ForwardedHeaders.None = 0 -> Microsoft.AspNetCore.HttpOverrides.ForwardedHeaders Microsoft.AspNetCore.HttpOverrides.ForwardedHeaders.XForwardedFor = 1 -> Microsoft.AspNetCore.HttpOverrides.ForwardedHeaders Microsoft.AspNetCore.HttpOverrides.ForwardedHeaders.XForwardedHost = 2 -> Microsoft.AspNetCore.HttpOverrides.ForwardedHeaders +Microsoft.AspNetCore.HttpOverrides.ForwardedHeaders.XForwardedPrefix = 8 -> Microsoft.AspNetCore.HttpOverrides.ForwardedHeaders Microsoft.AspNetCore.HttpOverrides.ForwardedHeaders.XForwardedProto = 4 -> Microsoft.AspNetCore.HttpOverrides.ForwardedHeaders Microsoft.AspNetCore.HttpOverrides.ForwardedHeadersDefaults Microsoft.AspNetCore.HttpOverrides.ForwardedHeadersMiddleware @@ -85,8 +92,12 @@ static Microsoft.AspNetCore.Builder.HttpMethodOverrideExtensions.UseHttpMethodOv static Microsoft.AspNetCore.Builder.HttpMethodOverrideExtensions.UseHttpMethodOverride(this Microsoft.AspNetCore.Builder.IApplicationBuilder! builder, Microsoft.AspNetCore.Builder.HttpMethodOverrideOptions! options) -> Microsoft.AspNetCore.Builder.IApplicationBuilder! static Microsoft.AspNetCore.HttpOverrides.ForwardedHeadersDefaults.XForwardedForHeaderName.get -> string! static Microsoft.AspNetCore.HttpOverrides.ForwardedHeadersDefaults.XForwardedHostHeaderName.get -> string! +static Microsoft.AspNetCore.HttpOverrides.ForwardedHeadersDefaults.XForwardedPrefixHeaderName.get -> string! static Microsoft.AspNetCore.HttpOverrides.ForwardedHeadersDefaults.XForwardedProtoHeaderName.get -> string! static Microsoft.AspNetCore.HttpOverrides.ForwardedHeadersDefaults.XOriginalForHeaderName.get -> string! static Microsoft.AspNetCore.HttpOverrides.ForwardedHeadersDefaults.XOriginalHostHeaderName.get -> string! +static Microsoft.AspNetCore.HttpOverrides.ForwardedHeadersDefaults.XOriginalPrefixHeaderName.get -> string! static Microsoft.AspNetCore.HttpOverrides.ForwardedHeadersDefaults.XOriginalProtoHeaderName.get -> string! +static Microsoft.AspNetCore.HttpOverrides.IPNetwork.Parse(System.ReadOnlySpan networkSpan) -> Microsoft.AspNetCore.HttpOverrides.IPNetwork! +static Microsoft.AspNetCore.HttpOverrides.IPNetwork.TryParse(System.ReadOnlySpan networkSpan, out Microsoft.AspNetCore.HttpOverrides.IPNetwork? network) -> bool static Microsoft.Extensions.DependencyInjection.CertificateForwardingServiceExtensions.AddCertificateForwarding(this Microsoft.Extensions.DependencyInjection.IServiceCollection! services, System.Action! configure) -> Microsoft.Extensions.DependencyInjection.IServiceCollection! diff --git a/src/Middleware/HttpOverrides/src/PublicAPI.Unshipped.txt b/src/Middleware/HttpOverrides/src/PublicAPI.Unshipped.txt index 6cf4eb31962c..7dc5c58110bf 100644 --- a/src/Middleware/HttpOverrides/src/PublicAPI.Unshipped.txt +++ b/src/Middleware/HttpOverrides/src/PublicAPI.Unshipped.txt @@ -1,14 +1 @@ #nullable enable -~static Microsoft.AspNetCore.HttpOverrides.ForwardedHeadersDefaults.XForwardedPrefixHeaderName.get -> string -~static Microsoft.AspNetCore.HttpOverrides.ForwardedHeadersDefaults.XOriginalPrefixHeaderName.get -> string -Microsoft.AspNetCore.Builder.ForwardedHeadersOptions.ForwardedPrefixHeaderName.get -> string! -Microsoft.AspNetCore.Builder.ForwardedHeadersOptions.ForwardedPrefixHeaderName.set -> void -Microsoft.AspNetCore.Builder.ForwardedHeadersOptions.OriginalPrefixHeaderName.get -> string! -Microsoft.AspNetCore.Builder.ForwardedHeadersOptions.OriginalPrefixHeaderName.set -> void -*REMOVED*Microsoft.AspNetCore.HttpOverrides.ForwardedHeaders.All = Microsoft.AspNetCore.HttpOverrides.ForwardedHeaders.XForwardedFor | Microsoft.AspNetCore.HttpOverrides.ForwardedHeaders.XForwardedHost | Microsoft.AspNetCore.HttpOverrides.ForwardedHeaders.XForwardedProto -> Microsoft.AspNetCore.HttpOverrides.ForwardedHeaders -Microsoft.AspNetCore.HttpOverrides.ForwardedHeaders.All = Microsoft.AspNetCore.HttpOverrides.ForwardedHeaders.XForwardedFor | Microsoft.AspNetCore.HttpOverrides.ForwardedHeaders.XForwardedHost | Microsoft.AspNetCore.HttpOverrides.ForwardedHeaders.XForwardedProto | Microsoft.AspNetCore.HttpOverrides.ForwardedHeaders.XForwardedPrefix -> Microsoft.AspNetCore.HttpOverrides.ForwardedHeaders -Microsoft.AspNetCore.HttpOverrides.ForwardedHeaders.XForwardedPrefix = 8 -> Microsoft.AspNetCore.HttpOverrides.ForwardedHeaders -static Microsoft.AspNetCore.HttpOverrides.ForwardedHeadersDefaults.XForwardedPrefixHeaderName.get -> string! -static Microsoft.AspNetCore.HttpOverrides.ForwardedHeadersDefaults.XOriginalPrefixHeaderName.get -> string! -static Microsoft.AspNetCore.HttpOverrides.IPNetwork.Parse(System.ReadOnlySpan networkSpan) -> Microsoft.AspNetCore.HttpOverrides.IPNetwork! -static Microsoft.AspNetCore.HttpOverrides.IPNetwork.TryParse(System.ReadOnlySpan networkSpan, out Microsoft.AspNetCore.HttpOverrides.IPNetwork? network) -> bool diff --git a/src/Middleware/Localization/src/PublicAPI.Shipped.txt b/src/Middleware/Localization/src/PublicAPI.Shipped.txt index d33ef8681f7c..3f28a25205b2 100644 --- a/src/Middleware/Localization/src/PublicAPI.Shipped.txt +++ b/src/Middleware/Localization/src/PublicAPI.Shipped.txt @@ -43,6 +43,8 @@ Microsoft.AspNetCore.Builder.RequestLocalizationOptions.AddSupportedCultures(par Microsoft.AspNetCore.Builder.RequestLocalizationOptions.AddSupportedUICultures(params string![]! uiCultures) -> Microsoft.AspNetCore.Builder.RequestLocalizationOptions! Microsoft.AspNetCore.Builder.RequestLocalizationOptions.ApplyCurrentCultureToResponseHeaders.get -> bool Microsoft.AspNetCore.Builder.RequestLocalizationOptions.ApplyCurrentCultureToResponseHeaders.set -> void +Microsoft.AspNetCore.Builder.RequestLocalizationOptions.CultureInfoUseUserOverride.get -> bool +Microsoft.AspNetCore.Builder.RequestLocalizationOptions.CultureInfoUseUserOverride.set -> void Microsoft.AspNetCore.Builder.RequestLocalizationOptions.DefaultRequestCulture.get -> Microsoft.AspNetCore.Localization.RequestCulture! Microsoft.AspNetCore.Builder.RequestLocalizationOptions.DefaultRequestCulture.set -> void Microsoft.AspNetCore.Builder.RequestLocalizationOptions.FallBackToParentCultures.get -> bool diff --git a/src/Middleware/Localization/src/PublicAPI.Unshipped.txt b/src/Middleware/Localization/src/PublicAPI.Unshipped.txt index 3edfee6471c7..7dc5c58110bf 100644 --- a/src/Middleware/Localization/src/PublicAPI.Unshipped.txt +++ b/src/Middleware/Localization/src/PublicAPI.Unshipped.txt @@ -1,3 +1 @@ #nullable enable -Microsoft.AspNetCore.Builder.RequestLocalizationOptions.CultureInfoUseUserOverride.get -> bool -Microsoft.AspNetCore.Builder.RequestLocalizationOptions.CultureInfoUseUserOverride.set -> void diff --git a/src/Middleware/Microsoft.AspNetCore.OutputCaching.StackExchangeRedis/src/PublicAPI.Shipped.txt b/src/Middleware/Microsoft.AspNetCore.OutputCaching.StackExchangeRedis/src/PublicAPI.Shipped.txt index 7dc5c58110bf..d7a6d6c8ed14 100644 --- a/src/Middleware/Microsoft.AspNetCore.OutputCaching.StackExchangeRedis/src/PublicAPI.Shipped.txt +++ b/src/Middleware/Microsoft.AspNetCore.OutputCaching.StackExchangeRedis/src/PublicAPI.Shipped.txt @@ -1 +1,15 @@ #nullable enable +Microsoft.AspNetCore.OutputCaching.StackExchangeRedis.RedisOutputCacheOptions +Microsoft.AspNetCore.OutputCaching.StackExchangeRedis.RedisOutputCacheOptions.Configuration.get -> string? +Microsoft.AspNetCore.OutputCaching.StackExchangeRedis.RedisOutputCacheOptions.Configuration.set -> void +Microsoft.AspNetCore.OutputCaching.StackExchangeRedis.RedisOutputCacheOptions.ConfigurationOptions.get -> StackExchange.Redis.ConfigurationOptions? +Microsoft.AspNetCore.OutputCaching.StackExchangeRedis.RedisOutputCacheOptions.ConfigurationOptions.set -> void +Microsoft.AspNetCore.OutputCaching.StackExchangeRedis.RedisOutputCacheOptions.ConnectionMultiplexerFactory.get -> System.Func!>? +Microsoft.AspNetCore.OutputCaching.StackExchangeRedis.RedisOutputCacheOptions.ConnectionMultiplexerFactory.set -> void +Microsoft.AspNetCore.OutputCaching.StackExchangeRedis.RedisOutputCacheOptions.InstanceName.get -> string? +Microsoft.AspNetCore.OutputCaching.StackExchangeRedis.RedisOutputCacheOptions.InstanceName.set -> void +Microsoft.AspNetCore.OutputCaching.StackExchangeRedis.RedisOutputCacheOptions.ProfilingSession.get -> System.Func? +Microsoft.AspNetCore.OutputCaching.StackExchangeRedis.RedisOutputCacheOptions.ProfilingSession.set -> void +Microsoft.AspNetCore.OutputCaching.StackExchangeRedis.RedisOutputCacheOptions.RedisOutputCacheOptions() -> void +Microsoft.Extensions.DependencyInjection.StackExchangeRedisOutputCacheServiceCollectionExtensions +static Microsoft.Extensions.DependencyInjection.StackExchangeRedisOutputCacheServiceCollectionExtensions.AddStackExchangeRedisOutputCache(this Microsoft.Extensions.DependencyInjection.IServiceCollection! services, System.Action! setupAction) -> Microsoft.Extensions.DependencyInjection.IServiceCollection! diff --git a/src/Middleware/Microsoft.AspNetCore.OutputCaching.StackExchangeRedis/src/PublicAPI.Unshipped.txt b/src/Middleware/Microsoft.AspNetCore.OutputCaching.StackExchangeRedis/src/PublicAPI.Unshipped.txt index d7a6d6c8ed14..7dc5c58110bf 100644 --- a/src/Middleware/Microsoft.AspNetCore.OutputCaching.StackExchangeRedis/src/PublicAPI.Unshipped.txt +++ b/src/Middleware/Microsoft.AspNetCore.OutputCaching.StackExchangeRedis/src/PublicAPI.Unshipped.txt @@ -1,15 +1 @@ #nullable enable -Microsoft.AspNetCore.OutputCaching.StackExchangeRedis.RedisOutputCacheOptions -Microsoft.AspNetCore.OutputCaching.StackExchangeRedis.RedisOutputCacheOptions.Configuration.get -> string? -Microsoft.AspNetCore.OutputCaching.StackExchangeRedis.RedisOutputCacheOptions.Configuration.set -> void -Microsoft.AspNetCore.OutputCaching.StackExchangeRedis.RedisOutputCacheOptions.ConfigurationOptions.get -> StackExchange.Redis.ConfigurationOptions? -Microsoft.AspNetCore.OutputCaching.StackExchangeRedis.RedisOutputCacheOptions.ConfigurationOptions.set -> void -Microsoft.AspNetCore.OutputCaching.StackExchangeRedis.RedisOutputCacheOptions.ConnectionMultiplexerFactory.get -> System.Func!>? -Microsoft.AspNetCore.OutputCaching.StackExchangeRedis.RedisOutputCacheOptions.ConnectionMultiplexerFactory.set -> void -Microsoft.AspNetCore.OutputCaching.StackExchangeRedis.RedisOutputCacheOptions.InstanceName.get -> string? -Microsoft.AspNetCore.OutputCaching.StackExchangeRedis.RedisOutputCacheOptions.InstanceName.set -> void -Microsoft.AspNetCore.OutputCaching.StackExchangeRedis.RedisOutputCacheOptions.ProfilingSession.get -> System.Func? -Microsoft.AspNetCore.OutputCaching.StackExchangeRedis.RedisOutputCacheOptions.ProfilingSession.set -> void -Microsoft.AspNetCore.OutputCaching.StackExchangeRedis.RedisOutputCacheOptions.RedisOutputCacheOptions() -> void -Microsoft.Extensions.DependencyInjection.StackExchangeRedisOutputCacheServiceCollectionExtensions -static Microsoft.Extensions.DependencyInjection.StackExchangeRedisOutputCacheServiceCollectionExtensions.AddStackExchangeRedisOutputCache(this Microsoft.Extensions.DependencyInjection.IServiceCollection! services, System.Action! setupAction) -> Microsoft.Extensions.DependencyInjection.IServiceCollection! diff --git a/src/Middleware/OutputCaching/src/PublicAPI.Shipped.txt b/src/Middleware/OutputCaching/src/PublicAPI.Shipped.txt index b22188c3c386..c3d4ffca1250 100644 --- a/src/Middleware/OutputCaching/src/PublicAPI.Shipped.txt +++ b/src/Middleware/OutputCaching/src/PublicAPI.Shipped.txt @@ -13,6 +13,9 @@ Microsoft.AspNetCore.OutputCaching.CacheVaryByRules.RouteValueNames.set -> void Microsoft.AspNetCore.OutputCaching.CacheVaryByRules.VaryByHost.get -> bool Microsoft.AspNetCore.OutputCaching.CacheVaryByRules.VaryByHost.set -> void Microsoft.AspNetCore.OutputCaching.CacheVaryByRules.VaryByValues.get -> System.Collections.Generic.IDictionary! +Microsoft.AspNetCore.OutputCaching.IOutputCacheBufferStore +Microsoft.AspNetCore.OutputCaching.IOutputCacheBufferStore.SetAsync(string! key, System.Buffers.ReadOnlySequence value, System.ReadOnlyMemory tags, System.TimeSpan validFor, System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.ValueTask +Microsoft.AspNetCore.OutputCaching.IOutputCacheBufferStore.TryGetAsync(string! key, System.IO.Pipelines.PipeWriter! destination, System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.ValueTask Microsoft.AspNetCore.OutputCaching.IOutputCacheFeature Microsoft.AspNetCore.OutputCaching.IOutputCacheFeature.Context.get -> Microsoft.AspNetCore.OutputCaching.OutputCacheContext! Microsoft.AspNetCore.OutputCaching.IOutputCachePolicy @@ -31,6 +34,8 @@ Microsoft.AspNetCore.OutputCaching.OutputCacheAttribute.NoStore.init -> void Microsoft.AspNetCore.OutputCaching.OutputCacheAttribute.OutputCacheAttribute() -> void Microsoft.AspNetCore.OutputCaching.OutputCacheAttribute.PolicyName.get -> string? Microsoft.AspNetCore.OutputCaching.OutputCacheAttribute.PolicyName.init -> void +Microsoft.AspNetCore.OutputCaching.OutputCacheAttribute.Tags.get -> string![]? +Microsoft.AspNetCore.OutputCaching.OutputCacheAttribute.Tags.init -> void Microsoft.AspNetCore.OutputCaching.OutputCacheAttribute.VaryByHeaderNames.get -> string![]? Microsoft.AspNetCore.OutputCaching.OutputCacheAttribute.VaryByHeaderNames.init -> void Microsoft.AspNetCore.OutputCaching.OutputCacheAttribute.VaryByQueryKeys.get -> string![]? diff --git a/src/Middleware/OutputCaching/src/PublicAPI.Unshipped.txt b/src/Middleware/OutputCaching/src/PublicAPI.Unshipped.txt index 828a06a00180..7dc5c58110bf 100644 --- a/src/Middleware/OutputCaching/src/PublicAPI.Unshipped.txt +++ b/src/Middleware/OutputCaching/src/PublicAPI.Unshipped.txt @@ -1,6 +1 @@ #nullable enable -Microsoft.AspNetCore.OutputCaching.IOutputCacheBufferStore -Microsoft.AspNetCore.OutputCaching.IOutputCacheBufferStore.SetAsync(string! key, System.Buffers.ReadOnlySequence value, System.ReadOnlyMemory tags, System.TimeSpan validFor, System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.ValueTask -Microsoft.AspNetCore.OutputCaching.IOutputCacheBufferStore.TryGetAsync(string! key, System.IO.Pipelines.PipeWriter! destination, System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.ValueTask -Microsoft.AspNetCore.OutputCaching.OutputCacheAttribute.Tags.get -> string![]? -Microsoft.AspNetCore.OutputCaching.OutputCacheAttribute.Tags.init -> void diff --git a/src/Middleware/StaticFiles/src/PublicAPI.Shipped.txt b/src/Middleware/StaticFiles/src/PublicAPI.Shipped.txt index ee4a534d1298..5d460be8672d 100644 --- a/src/Middleware/StaticFiles/src/PublicAPI.Shipped.txt +++ b/src/Middleware/StaticFiles/src/PublicAPI.Shipped.txt @@ -31,6 +31,8 @@ Microsoft.AspNetCore.Builder.StaticFileOptions.HttpsCompression.get -> Microsoft Microsoft.AspNetCore.Builder.StaticFileOptions.HttpsCompression.set -> void Microsoft.AspNetCore.Builder.StaticFileOptions.OnPrepareResponse.get -> System.Action! Microsoft.AspNetCore.Builder.StaticFileOptions.OnPrepareResponse.set -> void +Microsoft.AspNetCore.Builder.StaticFileOptions.OnPrepareResponseAsync.get -> System.Func! +Microsoft.AspNetCore.Builder.StaticFileOptions.OnPrepareResponseAsync.set -> void Microsoft.AspNetCore.Builder.StaticFileOptions.ServeUnknownFileTypes.get -> bool Microsoft.AspNetCore.Builder.StaticFileOptions.ServeUnknownFileTypes.set -> void Microsoft.AspNetCore.Builder.StaticFileOptions.StaticFileOptions() -> void diff --git a/src/Middleware/StaticFiles/src/PublicAPI.Unshipped.txt b/src/Middleware/StaticFiles/src/PublicAPI.Unshipped.txt index 332b5e8f34ab..7dc5c58110bf 100644 --- a/src/Middleware/StaticFiles/src/PublicAPI.Unshipped.txt +++ b/src/Middleware/StaticFiles/src/PublicAPI.Unshipped.txt @@ -1,3 +1 @@ #nullable enable -Microsoft.AspNetCore.Builder.StaticFileOptions.OnPrepareResponseAsync.get -> System.Func! -Microsoft.AspNetCore.Builder.StaticFileOptions.OnPrepareResponseAsync.set -> void \ No newline at end of file diff --git a/src/Mvc/Mvc.Abstractions/src/PublicAPI.Shipped.txt b/src/Mvc/Mvc.Abstractions/src/PublicAPI.Shipped.txt index 2de2643a0f65..441e44981b8a 100644 --- a/src/Mvc/Mvc.Abstractions/src/PublicAPI.Shipped.txt +++ b/src/Mvc/Mvc.Abstractions/src/PublicAPI.Shipped.txt @@ -387,6 +387,8 @@ Microsoft.AspNetCore.Mvc.ModelBinding.BindingInfo.PropertyFilterProvider.get -> Microsoft.AspNetCore.Mvc.ModelBinding.BindingInfo.PropertyFilterProvider.set -> void Microsoft.AspNetCore.Mvc.ModelBinding.BindingInfo.RequestPredicate.get -> System.Func? Microsoft.AspNetCore.Mvc.ModelBinding.BindingInfo.RequestPredicate.set -> void +Microsoft.AspNetCore.Mvc.ModelBinding.BindingInfo.ServiceKey.get -> object? +Microsoft.AspNetCore.Mvc.ModelBinding.BindingInfo.ServiceKey.set -> void Microsoft.AspNetCore.Mvc.ModelBinding.BindingInfo.TryApplyBindingInfo(Microsoft.AspNetCore.Mvc.ModelBinding.ModelMetadata! modelMetadata) -> bool Microsoft.AspNetCore.Mvc.ModelBinding.BindingSource Microsoft.AspNetCore.Mvc.ModelBinding.BindingSource.BindingSource(string! id, string! displayName, bool isGreedy, bool isFromRequest) -> void diff --git a/src/Mvc/Mvc.Abstractions/src/PublicAPI.Unshipped.txt b/src/Mvc/Mvc.Abstractions/src/PublicAPI.Unshipped.txt index b6cfbc5fdfa4..7dc5c58110bf 100644 --- a/src/Mvc/Mvc.Abstractions/src/PublicAPI.Unshipped.txt +++ b/src/Mvc/Mvc.Abstractions/src/PublicAPI.Unshipped.txt @@ -1,3 +1 @@ #nullable enable -Microsoft.AspNetCore.Mvc.ModelBinding.BindingInfo.ServiceKey.get -> object? -Microsoft.AspNetCore.Mvc.ModelBinding.BindingInfo.ServiceKey.set -> void diff --git a/src/Mvc/Mvc.Core/src/PublicAPI.Shipped.txt b/src/Mvc/Mvc.Core/src/PublicAPI.Shipped.txt index 065752cc1875..073e491b4a7e 100644 --- a/src/Mvc/Mvc.Core/src/PublicAPI.Shipped.txt +++ b/src/Mvc/Mvc.Core/src/PublicAPI.Shipped.txt @@ -577,9 +577,10 @@ Microsoft.AspNetCore.Mvc.CreatedAtRouteResult.RouteValues.set -> void Microsoft.AspNetCore.Mvc.CreatedAtRouteResult.UrlHelper.get -> Microsoft.AspNetCore.Mvc.IUrlHelper? Microsoft.AspNetCore.Mvc.CreatedAtRouteResult.UrlHelper.set -> void Microsoft.AspNetCore.Mvc.CreatedResult -Microsoft.AspNetCore.Mvc.CreatedResult.CreatedResult(string! location, object? value) -> void -Microsoft.AspNetCore.Mvc.CreatedResult.CreatedResult(System.Uri! location, object? value) -> void -Microsoft.AspNetCore.Mvc.CreatedResult.Location.get -> string! +Microsoft.AspNetCore.Mvc.CreatedResult.CreatedResult() -> void +Microsoft.AspNetCore.Mvc.CreatedResult.CreatedResult(string? location, object? value) -> void +Microsoft.AspNetCore.Mvc.CreatedResult.CreatedResult(System.Uri? location, object? value) -> void +Microsoft.AspNetCore.Mvc.CreatedResult.Location.get -> string? Microsoft.AspNetCore.Mvc.CreatedResult.Location.set -> void Microsoft.AspNetCore.Mvc.DefaultApiConventions Microsoft.AspNetCore.Mvc.Diagnostics.AfterActionEventData @@ -1078,6 +1079,8 @@ Microsoft.AspNetCore.Mvc.MiddlewareFilterAttribute.IsReusable.get -> bool Microsoft.AspNetCore.Mvc.MiddlewareFilterAttribute.MiddlewareFilterAttribute(System.Type! configurationType) -> void Microsoft.AspNetCore.Mvc.MiddlewareFilterAttribute.Order.get -> int Microsoft.AspNetCore.Mvc.MiddlewareFilterAttribute.Order.set -> void +Microsoft.AspNetCore.Mvc.MiddlewareFilterAttribute +Microsoft.AspNetCore.Mvc.MiddlewareFilterAttribute.MiddlewareFilterAttribute() -> void Microsoft.AspNetCore.Mvc.ModelBinderAttribute Microsoft.AspNetCore.Mvc.ModelBinderAttribute.BinderType.get -> System.Type? Microsoft.AspNetCore.Mvc.ModelBinderAttribute.BinderType.set -> void @@ -1085,6 +1088,8 @@ Microsoft.AspNetCore.Mvc.ModelBinderAttribute.ModelBinderAttribute() -> void Microsoft.AspNetCore.Mvc.ModelBinderAttribute.ModelBinderAttribute(System.Type! binderType) -> void Microsoft.AspNetCore.Mvc.ModelBinderAttribute.Name.get -> string? Microsoft.AspNetCore.Mvc.ModelBinderAttribute.Name.set -> void +Microsoft.AspNetCore.Mvc.ModelBinderAttribute +Microsoft.AspNetCore.Mvc.ModelBinderAttribute.ModelBinderAttribute() -> void Microsoft.AspNetCore.Mvc.ModelBinding.Binders.ArrayModelBinder Microsoft.AspNetCore.Mvc.ModelBinding.Binders.ArrayModelBinder.ArrayModelBinder(Microsoft.AspNetCore.Mvc.ModelBinding.IModelBinder! elementBinder, Microsoft.Extensions.Logging.ILoggerFactory! loggerFactory) -> void Microsoft.AspNetCore.Mvc.ModelBinding.Binders.ArrayModelBinder.ArrayModelBinder(Microsoft.AspNetCore.Mvc.ModelBinding.IModelBinder! elementBinder, Microsoft.Extensions.Logging.ILoggerFactory! loggerFactory, bool allowValidatingTopLevelNodes) -> void @@ -1561,6 +1566,8 @@ Microsoft.AspNetCore.Mvc.ModelBinding.ValueProviderFactoryExtensions Microsoft.AspNetCore.Mvc.ModelMetadataTypeAttribute Microsoft.AspNetCore.Mvc.ModelMetadataTypeAttribute.MetadataType.get -> System.Type! Microsoft.AspNetCore.Mvc.ModelMetadataTypeAttribute.ModelMetadataTypeAttribute(System.Type! type) -> void +Microsoft.AspNetCore.Mvc.ModelMetadataTypeAttribute +Microsoft.AspNetCore.Mvc.ModelMetadataTypeAttribute.ModelMetadataTypeAttribute() -> void Microsoft.AspNetCore.Mvc.MvcOptions Microsoft.AspNetCore.Mvc.MvcOptions.AllowEmptyInputInBodyModelBinding.get -> bool Microsoft.AspNetCore.Mvc.MvcOptions.AllowEmptyInputInBodyModelBinding.set -> void @@ -1645,6 +1652,7 @@ Microsoft.AspNetCore.Mvc.ProblemDetails (forwarded, contained in Microsoft.AspNe Microsoft.AspNetCore.Mvc.ProblemDetails.Detail.get -> string? (forwarded, contained in Microsoft.AspNetCore.Http.Abstractions) Microsoft.AspNetCore.Mvc.ProblemDetails.Detail.set -> void (forwarded, contained in Microsoft.AspNetCore.Http.Abstractions) Microsoft.AspNetCore.Mvc.ProblemDetails.Extensions.get -> System.Collections.Generic.IDictionary! (forwarded, contained in Microsoft.AspNetCore.Http.Abstractions) +Microsoft.AspNetCore.Mvc.ProblemDetails.Extensions.set -> void (forwarded, contained in Microsoft.AspNetCore.Http.Abstractions) Microsoft.AspNetCore.Mvc.ProblemDetails.Instance.get -> string? (forwarded, contained in Microsoft.AspNetCore.Http.Abstractions) Microsoft.AspNetCore.Mvc.ProblemDetails.Instance.set -> void (forwarded, contained in Microsoft.AspNetCore.Http.Abstractions) Microsoft.AspNetCore.Mvc.ProblemDetails.ProblemDetails() -> void (forwarded, contained in Microsoft.AspNetCore.Http.Abstractions) @@ -1665,6 +1673,8 @@ Microsoft.AspNetCore.Mvc.ProducesAttribute.SetContentTypes(Microsoft.AspNetCore. Microsoft.AspNetCore.Mvc.ProducesAttribute.StatusCode.get -> int Microsoft.AspNetCore.Mvc.ProducesAttribute.Type.get -> System.Type? Microsoft.AspNetCore.Mvc.ProducesAttribute.Type.set -> void +Microsoft.AspNetCore.Mvc.ProducesAttribute +Microsoft.AspNetCore.Mvc.ProducesAttribute.ProducesAttribute() -> void Microsoft.AspNetCore.Mvc.ProducesDefaultResponseTypeAttribute Microsoft.AspNetCore.Mvc.ProducesDefaultResponseTypeAttribute.ProducesDefaultResponseTypeAttribute() -> void Microsoft.AspNetCore.Mvc.ProducesDefaultResponseTypeAttribute.ProducesDefaultResponseTypeAttribute(System.Type! type) -> void @@ -1681,6 +1691,9 @@ Microsoft.AspNetCore.Mvc.ProducesResponseTypeAttribute.StatusCode.get -> int Microsoft.AspNetCore.Mvc.ProducesResponseTypeAttribute.StatusCode.set -> void Microsoft.AspNetCore.Mvc.ProducesResponseTypeAttribute.Type.get -> System.Type! Microsoft.AspNetCore.Mvc.ProducesResponseTypeAttribute.Type.set -> void +Microsoft.AspNetCore.Mvc.ProducesResponseTypeAttribute +Microsoft.AspNetCore.Mvc.ProducesResponseTypeAttribute.ProducesResponseTypeAttribute(int statusCode) -> void +Microsoft.AspNetCore.Mvc.ProducesResponseTypeAttribute.ProducesResponseTypeAttribute(int statusCode, string! contentType, params string![]! additionalContentTypes) -> void Microsoft.AspNetCore.Mvc.RedirectResult Microsoft.AspNetCore.Mvc.RedirectResult.Permanent.get -> bool Microsoft.AspNetCore.Mvc.RedirectResult.Permanent.set -> void @@ -1886,6 +1899,8 @@ Microsoft.AspNetCore.Mvc.ServiceFilterAttribute.Order.get -> int Microsoft.AspNetCore.Mvc.ServiceFilterAttribute.Order.set -> void Microsoft.AspNetCore.Mvc.ServiceFilterAttribute.ServiceFilterAttribute(System.Type! type) -> void Microsoft.AspNetCore.Mvc.ServiceFilterAttribute.ServiceType.get -> System.Type! +Microsoft.AspNetCore.Mvc.ServiceFilterAttribute +Microsoft.AspNetCore.Mvc.ServiceFilterAttribute.ServiceFilterAttribute() -> void Microsoft.AspNetCore.Mvc.SignInResult Microsoft.AspNetCore.Mvc.SignInResult.AuthenticationScheme.get -> string? Microsoft.AspNetCore.Mvc.SignInResult.AuthenticationScheme.set -> void @@ -1921,6 +1936,8 @@ Microsoft.AspNetCore.Mvc.TypeFilterAttribute.IsReusable.set -> void Microsoft.AspNetCore.Mvc.TypeFilterAttribute.Order.get -> int Microsoft.AspNetCore.Mvc.TypeFilterAttribute.Order.set -> void Microsoft.AspNetCore.Mvc.TypeFilterAttribute.TypeFilterAttribute(System.Type! type) -> void +Microsoft.AspNetCore.Mvc.TypeFilterAttribute +Microsoft.AspNetCore.Mvc.TypeFilterAttribute.TypeFilterAttribute() -> void Microsoft.AspNetCore.Mvc.UnauthorizedObjectResult Microsoft.AspNetCore.Mvc.UnauthorizedObjectResult.UnauthorizedObjectResult(object? value) -> void Microsoft.AspNetCore.Mvc.UnauthorizedResult @@ -1935,6 +1952,7 @@ Microsoft.AspNetCore.Mvc.UnsupportedMediaTypeResult.UnsupportedMediaTypeResult() Microsoft.AspNetCore.Mvc.UrlHelperExtensions Microsoft.AspNetCore.Mvc.ValidationProblemDetails Microsoft.AspNetCore.Mvc.ValidationProblemDetails.Errors.get -> System.Collections.Generic.IDictionary! +Microsoft.AspNetCore.Mvc.ValidationProblemDetails.Errors.set -> void Microsoft.AspNetCore.Mvc.ValidationProblemDetails.ValidationProblemDetails() -> void Microsoft.AspNetCore.Mvc.ValidationProblemDetails.ValidationProblemDetails(Microsoft.AspNetCore.Mvc.ModelBinding.ModelStateDictionary! modelState) -> void Microsoft.AspNetCore.Mvc.ValidationProblemDetails.ValidationProblemDetails(System.Collections.Generic.IDictionary! errors) -> void @@ -2200,7 +2218,7 @@ static Microsoft.AspNetCore.Mvc.UrlHelperExtensions.RouteUrl(this Microsoft.AspN static Microsoft.AspNetCore.Routing.ControllerLinkGeneratorExtensions.GetPathByAction(this Microsoft.AspNetCore.Routing.LinkGenerator! generator, Microsoft.AspNetCore.Http.HttpContext! httpContext, string? action = null, string? controller = null, object? values = null, Microsoft.AspNetCore.Http.PathString? pathBase = null, Microsoft.AspNetCore.Http.FragmentString fragment = default(Microsoft.AspNetCore.Http.FragmentString), Microsoft.AspNetCore.Routing.LinkOptions? options = null) -> string? static Microsoft.AspNetCore.Routing.ControllerLinkGeneratorExtensions.GetPathByAction(this Microsoft.AspNetCore.Routing.LinkGenerator! generator, string! action, string! controller, object? values = null, Microsoft.AspNetCore.Http.PathString pathBase = default(Microsoft.AspNetCore.Http.PathString), Microsoft.AspNetCore.Http.FragmentString fragment = default(Microsoft.AspNetCore.Http.FragmentString), Microsoft.AspNetCore.Routing.LinkOptions? options = null) -> string? static Microsoft.AspNetCore.Routing.ControllerLinkGeneratorExtensions.GetUriByAction(this Microsoft.AspNetCore.Routing.LinkGenerator! generator, Microsoft.AspNetCore.Http.HttpContext! httpContext, string? action = null, string? controller = null, object? values = null, string? scheme = null, Microsoft.AspNetCore.Http.HostString? host = null, Microsoft.AspNetCore.Http.PathString? pathBase = null, Microsoft.AspNetCore.Http.FragmentString fragment = default(Microsoft.AspNetCore.Http.FragmentString), Microsoft.AspNetCore.Routing.LinkOptions? options = null) -> string? -static Microsoft.AspNetCore.Routing.ControllerLinkGeneratorExtensions.GetUriByAction(this Microsoft.AspNetCore.Routing.LinkGenerator! generator, string! action, string! controller, object? values, string? scheme, Microsoft.AspNetCore.Http.HostString host, Microsoft.AspNetCore.Http.PathString pathBase = default(Microsoft.AspNetCore.Http.PathString), Microsoft.AspNetCore.Http.FragmentString fragment = default(Microsoft.AspNetCore.Http.FragmentString), Microsoft.AspNetCore.Routing.LinkOptions? options = null) -> string? +static Microsoft.AspNetCore.Routing.ControllerLinkGeneratorExtensions.GetUriByAction(this Microsoft.AspNetCore.Routing.LinkGenerator! generator, string! action, string! controller, object? values, string! scheme, Microsoft.AspNetCore.Http.HostString host, Microsoft.AspNetCore.Http.PathString pathBase = default(Microsoft.AspNetCore.Http.PathString), Microsoft.AspNetCore.Http.FragmentString fragment = default(Microsoft.AspNetCore.Http.FragmentString), Microsoft.AspNetCore.Routing.LinkOptions? options = null) -> string? static Microsoft.AspNetCore.Routing.PageLinkGeneratorExtensions.GetPathByPage(this Microsoft.AspNetCore.Routing.LinkGenerator! generator, Microsoft.AspNetCore.Http.HttpContext! httpContext, string? page = null, string? handler = null, object? values = null, Microsoft.AspNetCore.Http.PathString? pathBase = null, Microsoft.AspNetCore.Http.FragmentString fragment = default(Microsoft.AspNetCore.Http.FragmentString), Microsoft.AspNetCore.Routing.LinkOptions? options = null) -> string? static Microsoft.AspNetCore.Routing.PageLinkGeneratorExtensions.GetPathByPage(this Microsoft.AspNetCore.Routing.LinkGenerator! generator, string! page, string? handler = null, object? values = null, Microsoft.AspNetCore.Http.PathString pathBase = default(Microsoft.AspNetCore.Http.PathString), Microsoft.AspNetCore.Http.FragmentString fragment = default(Microsoft.AspNetCore.Http.FragmentString), Microsoft.AspNetCore.Routing.LinkOptions? options = null) -> string? static Microsoft.AspNetCore.Routing.PageLinkGeneratorExtensions.GetUriByPage(this Microsoft.AspNetCore.Routing.LinkGenerator! generator, Microsoft.AspNetCore.Http.HttpContext! httpContext, string? page = null, string? handler = null, object? values = null, string? scheme = null, Microsoft.AspNetCore.Http.HostString? host = null, Microsoft.AspNetCore.Http.PathString? pathBase = null, Microsoft.AspNetCore.Http.FragmentString fragment = default(Microsoft.AspNetCore.Http.FragmentString), Microsoft.AspNetCore.Routing.LinkOptions? options = null) -> string? @@ -2285,8 +2303,9 @@ virtual Microsoft.AspNetCore.Mvc.ControllerBase.Content(string! content) -> Micr virtual Microsoft.AspNetCore.Mvc.ControllerBase.Content(string! content, Microsoft.Net.Http.Headers.MediaTypeHeaderValue? contentType) -> Microsoft.AspNetCore.Mvc.ContentResult! virtual Microsoft.AspNetCore.Mvc.ControllerBase.Content(string! content, string! contentType) -> Microsoft.AspNetCore.Mvc.ContentResult! virtual Microsoft.AspNetCore.Mvc.ControllerBase.Content(string! content, string! contentType, System.Text.Encoding! contentEncoding) -> Microsoft.AspNetCore.Mvc.ContentResult! -virtual Microsoft.AspNetCore.Mvc.ControllerBase.Created(string! uri, object? value) -> Microsoft.AspNetCore.Mvc.CreatedResult! -virtual Microsoft.AspNetCore.Mvc.ControllerBase.Created(System.Uri! uri, object? value) -> Microsoft.AspNetCore.Mvc.CreatedResult! +virtual Microsoft.AspNetCore.Mvc.ControllerBase.Created() -> Microsoft.AspNetCore.Mvc.CreatedResult! +virtual Microsoft.AspNetCore.Mvc.ControllerBase.Created(string? uri, object? value) -> Microsoft.AspNetCore.Mvc.CreatedResult! +virtual Microsoft.AspNetCore.Mvc.ControllerBase.Created(System.Uri? uri, object? value) -> Microsoft.AspNetCore.Mvc.CreatedResult! virtual Microsoft.AspNetCore.Mvc.ControllerBase.CreatedAtAction(string? actionName, object? routeValues, object? value) -> Microsoft.AspNetCore.Mvc.CreatedAtActionResult! virtual Microsoft.AspNetCore.Mvc.ControllerBase.CreatedAtAction(string? actionName, object? value) -> Microsoft.AspNetCore.Mvc.CreatedAtActionResult! virtual Microsoft.AspNetCore.Mvc.ControllerBase.CreatedAtAction(string? actionName, string? controllerName, object? routeValues, object? value) -> Microsoft.AspNetCore.Mvc.CreatedAtActionResult! diff --git a/src/Mvc/Mvc.Core/src/PublicAPI.Unshipped.txt b/src/Mvc/Mvc.Core/src/PublicAPI.Unshipped.txt index a6374db5adbb..7dc5c58110bf 100644 --- a/src/Mvc/Mvc.Core/src/PublicAPI.Unshipped.txt +++ b/src/Mvc/Mvc.Core/src/PublicAPI.Unshipped.txt @@ -1,32 +1 @@ #nullable enable -*REMOVED*static Microsoft.AspNetCore.Routing.ControllerLinkGeneratorExtensions.GetUriByAction(this Microsoft.AspNetCore.Routing.LinkGenerator! generator, string! action, string! controller, object? values, string? scheme, Microsoft.AspNetCore.Http.HostString host, Microsoft.AspNetCore.Http.PathString pathBase = default(Microsoft.AspNetCore.Http.PathString), Microsoft.AspNetCore.Http.FragmentString fragment = default(Microsoft.AspNetCore.Http.FragmentString), Microsoft.AspNetCore.Routing.LinkOptions? options = null) -> string? -Microsoft.AspNetCore.Mvc.MiddlewareFilterAttribute -Microsoft.AspNetCore.Mvc.MiddlewareFilterAttribute.MiddlewareFilterAttribute() -> void -Microsoft.AspNetCore.Mvc.ModelBinderAttribute -Microsoft.AspNetCore.Mvc.ModelBinderAttribute.ModelBinderAttribute() -> void -Microsoft.AspNetCore.Mvc.ModelMetadataTypeAttribute -Microsoft.AspNetCore.Mvc.ModelMetadataTypeAttribute.ModelMetadataTypeAttribute() -> void -Microsoft.AspNetCore.Mvc.ProducesAttribute -Microsoft.AspNetCore.Mvc.ProducesAttribute.ProducesAttribute() -> void -Microsoft.AspNetCore.Mvc.ProducesResponseTypeAttribute -Microsoft.AspNetCore.Mvc.ProducesResponseTypeAttribute.ProducesResponseTypeAttribute(int statusCode) -> void -Microsoft.AspNetCore.Mvc.ProducesResponseTypeAttribute.ProducesResponseTypeAttribute(int statusCode, string! contentType, params string![]! additionalContentTypes) -> void -Microsoft.AspNetCore.Mvc.ServiceFilterAttribute -Microsoft.AspNetCore.Mvc.ServiceFilterAttribute.ServiceFilterAttribute() -> void -Microsoft.AspNetCore.Mvc.TypeFilterAttribute -Microsoft.AspNetCore.Mvc.TypeFilterAttribute.TypeFilterAttribute() -> void -Microsoft.AspNetCore.Mvc.ValidationProblemDetails.Errors.set -> void -static Microsoft.AspNetCore.Routing.ControllerLinkGeneratorExtensions.GetUriByAction(this Microsoft.AspNetCore.Routing.LinkGenerator! generator, string! action, string! controller, object? values, string! scheme, Microsoft.AspNetCore.Http.HostString host, Microsoft.AspNetCore.Http.PathString pathBase = default(Microsoft.AspNetCore.Http.PathString), Microsoft.AspNetCore.Http.FragmentString fragment = default(Microsoft.AspNetCore.Http.FragmentString), Microsoft.AspNetCore.Routing.LinkOptions? options = null) -> string? -Microsoft.AspNetCore.Mvc.CreatedResult.CreatedResult() -> void -*REMOVED*Microsoft.AspNetCore.Mvc.CreatedResult.CreatedResult(string! location, object? value) -> void -*REMOVED*Microsoft.AspNetCore.Mvc.CreatedResult.CreatedResult(System.Uri! location, object? value) -> void -Microsoft.AspNetCore.Mvc.CreatedResult.CreatedResult(string? location, object? value) -> void -Microsoft.AspNetCore.Mvc.CreatedResult.CreatedResult(System.Uri? location, object? value) -> void -*REMOVED*Microsoft.AspNetCore.Mvc.CreatedResult.Location.get -> string! -Microsoft.AspNetCore.Mvc.CreatedResult.Location.get -> string? -virtual Microsoft.AspNetCore.Mvc.ControllerBase.Created() -> Microsoft.AspNetCore.Mvc.CreatedResult! -*REMOVED*virtual Microsoft.AspNetCore.Mvc.ControllerBase.Created(string! uri, object? value) -> Microsoft.AspNetCore.Mvc.CreatedResult! -*REMOVED*virtual Microsoft.AspNetCore.Mvc.ControllerBase.Created(System.Uri! uri, object? value) -> Microsoft.AspNetCore.Mvc.CreatedResult! -virtual Microsoft.AspNetCore.Mvc.ControllerBase.Created(string? uri, object? value) -> Microsoft.AspNetCore.Mvc.CreatedResult! -virtual Microsoft.AspNetCore.Mvc.ControllerBase.Created(System.Uri? uri, object? value) -> Microsoft.AspNetCore.Mvc.CreatedResult! -Microsoft.AspNetCore.Mvc.ProblemDetails.Extensions.set -> void (forwarded, contained in Microsoft.AspNetCore.Http.Abstractions) diff --git a/src/Mvc/Mvc.Razor/src/PublicAPI.Shipped.txt b/src/Mvc/Mvc.Razor/src/PublicAPI.Shipped.txt index 61b0c8356f43..c6035a037955 100644 --- a/src/Mvc/Mvc.Razor/src/PublicAPI.Shipped.txt +++ b/src/Mvc/Mvc.Razor/src/PublicAPI.Shipped.txt @@ -57,6 +57,8 @@ Microsoft.AspNetCore.Mvc.Razor.Infrastructure.TagHelperMemoryCacheProvider Microsoft.AspNetCore.Mvc.Razor.Infrastructure.TagHelperMemoryCacheProvider.Cache.get -> Microsoft.Extensions.Caching.Memory.IMemoryCache! Microsoft.AspNetCore.Mvc.Razor.Infrastructure.TagHelperMemoryCacheProvider.TagHelperMemoryCacheProvider() -> void Microsoft.AspNetCore.Mvc.Razor.Internal.RazorInjectAttribute +Microsoft.AspNetCore.Mvc.Razor.Internal.RazorInjectAttribute.Key.get -> object? +Microsoft.AspNetCore.Mvc.Razor.Internal.RazorInjectAttribute.Key.init -> void Microsoft.AspNetCore.Mvc.Razor.Internal.RazorInjectAttribute.RazorInjectAttribute() -> void Microsoft.AspNetCore.Mvc.Razor.IRazorPage Microsoft.AspNetCore.Mvc.Razor.IRazorPage.BodyContent.get -> Microsoft.AspNetCore.Html.IHtmlContent? diff --git a/src/Mvc/Mvc.Razor/src/PublicAPI.Unshipped.txt b/src/Mvc/Mvc.Razor/src/PublicAPI.Unshipped.txt index 7d3a825bfe22..7dc5c58110bf 100644 --- a/src/Mvc/Mvc.Razor/src/PublicAPI.Unshipped.txt +++ b/src/Mvc/Mvc.Razor/src/PublicAPI.Unshipped.txt @@ -1,3 +1 @@ #nullable enable -Microsoft.AspNetCore.Mvc.Razor.Internal.RazorInjectAttribute.Key.get -> object? -Microsoft.AspNetCore.Mvc.Razor.Internal.RazorInjectAttribute.Key.init -> void diff --git a/src/Mvc/Mvc.TagHelpers/src/PublicAPI.Shipped.txt b/src/Mvc/Mvc.TagHelpers/src/PublicAPI.Shipped.txt index e9e138c0d497..447cc36a67c6 100644 --- a/src/Mvc/Mvc.TagHelpers/src/PublicAPI.Shipped.txt +++ b/src/Mvc/Mvc.TagHelpers/src/PublicAPI.Shipped.txt @@ -133,6 +133,8 @@ ~Microsoft.AspNetCore.Mvc.TagHelpers.InputTagHelper.For.set -> void ~Microsoft.AspNetCore.Mvc.TagHelpers.InputTagHelper.Format.get -> string ~Microsoft.AspNetCore.Mvc.TagHelpers.InputTagHelper.Format.set -> void +~Microsoft.AspNetCore.Mvc.TagHelpers.InputTagHelper.FormName.get -> string +~Microsoft.AspNetCore.Mvc.TagHelpers.InputTagHelper.FormName.set -> void ~Microsoft.AspNetCore.Mvc.TagHelpers.InputTagHelper.Generator.get -> Microsoft.AspNetCore.Mvc.ViewFeatures.IHtmlGenerator ~Microsoft.AspNetCore.Mvc.TagHelpers.InputTagHelper.GetInputType(Microsoft.AspNetCore.Mvc.ViewFeatures.ModelExplorer modelExplorer, out string inputTypeHint) -> string ~Microsoft.AspNetCore.Mvc.TagHelpers.InputTagHelper.InputTagHelper(Microsoft.AspNetCore.Mvc.ViewFeatures.IHtmlGenerator generator) -> void diff --git a/src/Mvc/Mvc.TagHelpers/src/PublicAPI.Unshipped.txt b/src/Mvc/Mvc.TagHelpers/src/PublicAPI.Unshipped.txt index 3b900f5c4f03..7dc5c58110bf 100644 --- a/src/Mvc/Mvc.TagHelpers/src/PublicAPI.Unshipped.txt +++ b/src/Mvc/Mvc.TagHelpers/src/PublicAPI.Unshipped.txt @@ -1,3 +1 @@ #nullable enable -~Microsoft.AspNetCore.Mvc.TagHelpers.InputTagHelper.FormName.get -> string -~Microsoft.AspNetCore.Mvc.TagHelpers.InputTagHelper.FormName.set -> void diff --git a/src/Mvc/Mvc.ViewFeatures/src/PublicAPI.Shipped.txt b/src/Mvc/Mvc.ViewFeatures/src/PublicAPI.Shipped.txt index 1d453bf49319..bc4f78524a2e 100644 --- a/src/Mvc/Mvc.ViewFeatures/src/PublicAPI.Shipped.txt +++ b/src/Mvc/Mvc.ViewFeatures/src/PublicAPI.Shipped.txt @@ -680,6 +680,7 @@ Microsoft.AspNetCore.Mvc.Rendering.FormInputRenderMode Microsoft.AspNetCore.Mvc.Rendering.FormInputRenderMode.AlwaysUseCurrentCulture = 1 -> Microsoft.AspNetCore.Mvc.Rendering.FormInputRenderMode Microsoft.AspNetCore.Mvc.Rendering.FormInputRenderMode.DetectCultureFromInputType = 0 -> Microsoft.AspNetCore.Mvc.Rendering.FormInputRenderMode Microsoft.AspNetCore.Mvc.Rendering.FormMethod +Microsoft.AspNetCore.Mvc.Rendering.FormMethod.Dialog = 2 -> Microsoft.AspNetCore.Mvc.Rendering.FormMethod Microsoft.AspNetCore.Mvc.Rendering.FormMethod.Get = 0 -> Microsoft.AspNetCore.Mvc.Rendering.FormMethod Microsoft.AspNetCore.Mvc.Rendering.FormMethod.Post = 1 -> Microsoft.AspNetCore.Mvc.Rendering.FormMethod Microsoft.AspNetCore.Mvc.Rendering.Html5DateRenderingMode diff --git a/src/Mvc/Mvc.ViewFeatures/src/PublicAPI.Unshipped.txt b/src/Mvc/Mvc.ViewFeatures/src/PublicAPI.Unshipped.txt index 29fa1d55e351..7dc5c58110bf 100644 --- a/src/Mvc/Mvc.ViewFeatures/src/PublicAPI.Unshipped.txt +++ b/src/Mvc/Mvc.ViewFeatures/src/PublicAPI.Unshipped.txt @@ -1,2 +1 @@ #nullable enable -Microsoft.AspNetCore.Mvc.Rendering.FormMethod.Dialog = 2 -> Microsoft.AspNetCore.Mvc.Rendering.FormMethod diff --git a/src/ObjectPool/src/PublicAPI.Shipped.txt b/src/ObjectPool/src/PublicAPI.Shipped.txt index 64d05a5f7239..2b98c6a7c722 100644 --- a/src/ObjectPool/src/PublicAPI.Shipped.txt +++ b/src/ObjectPool/src/PublicAPI.Shipped.txt @@ -16,6 +16,8 @@ Microsoft.Extensions.ObjectPool.DefaultPooledObjectPolicy.DefaultPooledObject Microsoft.Extensions.ObjectPool.IPooledObjectPolicy Microsoft.Extensions.ObjectPool.IPooledObjectPolicy.Create() -> T Microsoft.Extensions.ObjectPool.IPooledObjectPolicy.Return(T obj) -> bool +Microsoft.Extensions.ObjectPool.IResettable +Microsoft.Extensions.ObjectPool.IResettable.TryReset() -> bool Microsoft.Extensions.ObjectPool.LeakTrackingObjectPool Microsoft.Extensions.ObjectPool.LeakTrackingObjectPool.LeakTrackingObjectPool(Microsoft.Extensions.ObjectPool.ObjectPool! inner) -> void Microsoft.Extensions.ObjectPool.LeakTrackingObjectPoolProvider diff --git a/src/ObjectPool/src/PublicAPI.Unshipped.txt b/src/ObjectPool/src/PublicAPI.Unshipped.txt index 66b783063ba8..7dc5c58110bf 100644 --- a/src/ObjectPool/src/PublicAPI.Unshipped.txt +++ b/src/ObjectPool/src/PublicAPI.Unshipped.txt @@ -1,3 +1 @@ #nullable enable -Microsoft.Extensions.ObjectPool.IResettable -Microsoft.Extensions.ObjectPool.IResettable.TryReset() -> bool diff --git a/src/Security/Authentication/BearerToken/src/PublicAPI.Shipped.txt b/src/Security/Authentication/BearerToken/src/PublicAPI.Shipped.txt index 7dc5c58110bf..547418feb451 100644 --- a/src/Security/Authentication/BearerToken/src/PublicAPI.Shipped.txt +++ b/src/Security/Authentication/BearerToken/src/PublicAPI.Shipped.txt @@ -1 +1,38 @@ #nullable enable +const Microsoft.AspNetCore.Authentication.BearerToken.BearerTokenDefaults.AuthenticationScheme = "BearerToken" -> string! +Microsoft.AspNetCore.Authentication.BearerToken.AccessTokenResponse +Microsoft.AspNetCore.Authentication.BearerToken.AccessTokenResponse.AccessToken.get -> string! +Microsoft.AspNetCore.Authentication.BearerToken.AccessTokenResponse.AccessToken.init -> void +Microsoft.AspNetCore.Authentication.BearerToken.AccessTokenResponse.AccessTokenResponse() -> void +Microsoft.AspNetCore.Authentication.BearerToken.AccessTokenResponse.ExpiresIn.get -> long +Microsoft.AspNetCore.Authentication.BearerToken.AccessTokenResponse.ExpiresIn.init -> void +Microsoft.AspNetCore.Authentication.BearerToken.AccessTokenResponse.RefreshToken.get -> string! +Microsoft.AspNetCore.Authentication.BearerToken.AccessTokenResponse.RefreshToken.init -> void +Microsoft.AspNetCore.Authentication.BearerToken.AccessTokenResponse.TokenType.get -> string! +Microsoft.AspNetCore.Authentication.BearerToken.BearerTokenDefaults +Microsoft.AspNetCore.Authentication.BearerToken.BearerTokenEvents +Microsoft.AspNetCore.Authentication.BearerToken.BearerTokenEvents.BearerTokenEvents() -> void +Microsoft.AspNetCore.Authentication.BearerToken.BearerTokenEvents.OnMessageReceived.get -> System.Func! +Microsoft.AspNetCore.Authentication.BearerToken.BearerTokenEvents.OnMessageReceived.set -> void +Microsoft.AspNetCore.Authentication.BearerToken.BearerTokenOptions +Microsoft.AspNetCore.Authentication.BearerToken.BearerTokenOptions.BearerTokenExpiration.get -> System.TimeSpan +Microsoft.AspNetCore.Authentication.BearerToken.BearerTokenOptions.BearerTokenExpiration.set -> void +Microsoft.AspNetCore.Authentication.BearerToken.BearerTokenOptions.BearerTokenOptions() -> void +Microsoft.AspNetCore.Authentication.BearerToken.BearerTokenOptions.BearerTokenProtector.get -> Microsoft.AspNetCore.Authentication.ISecureDataFormat! +Microsoft.AspNetCore.Authentication.BearerToken.BearerTokenOptions.BearerTokenProtector.set -> void +Microsoft.AspNetCore.Authentication.BearerToken.BearerTokenOptions.Events.get -> Microsoft.AspNetCore.Authentication.BearerToken.BearerTokenEvents! +Microsoft.AspNetCore.Authentication.BearerToken.BearerTokenOptions.Events.set -> void +Microsoft.AspNetCore.Authentication.BearerToken.BearerTokenOptions.RefreshTokenExpiration.get -> System.TimeSpan +Microsoft.AspNetCore.Authentication.BearerToken.BearerTokenOptions.RefreshTokenExpiration.set -> void +Microsoft.AspNetCore.Authentication.BearerToken.BearerTokenOptions.RefreshTokenProtector.get -> Microsoft.AspNetCore.Authentication.ISecureDataFormat! +Microsoft.AspNetCore.Authentication.BearerToken.BearerTokenOptions.RefreshTokenProtector.set -> void +Microsoft.AspNetCore.Authentication.BearerToken.MessageReceivedContext +Microsoft.AspNetCore.Authentication.BearerToken.MessageReceivedContext.MessageReceivedContext(Microsoft.AspNetCore.Http.HttpContext! context, Microsoft.AspNetCore.Authentication.AuthenticationScheme! scheme, Microsoft.AspNetCore.Authentication.BearerToken.BearerTokenOptions! options) -> void +Microsoft.AspNetCore.Authentication.BearerToken.MessageReceivedContext.Token.get -> string? +Microsoft.AspNetCore.Authentication.BearerToken.MessageReceivedContext.Token.set -> void +Microsoft.Extensions.DependencyInjection.BearerTokenExtensions +static Microsoft.Extensions.DependencyInjection.BearerTokenExtensions.AddBearerToken(this Microsoft.AspNetCore.Authentication.AuthenticationBuilder! builder) -> Microsoft.AspNetCore.Authentication.AuthenticationBuilder! +static Microsoft.Extensions.DependencyInjection.BearerTokenExtensions.AddBearerToken(this Microsoft.AspNetCore.Authentication.AuthenticationBuilder! builder, string! authenticationScheme) -> Microsoft.AspNetCore.Authentication.AuthenticationBuilder! +static Microsoft.Extensions.DependencyInjection.BearerTokenExtensions.AddBearerToken(this Microsoft.AspNetCore.Authentication.AuthenticationBuilder! builder, string! authenticationScheme, System.Action! configure) -> Microsoft.AspNetCore.Authentication.AuthenticationBuilder! +static Microsoft.Extensions.DependencyInjection.BearerTokenExtensions.AddBearerToken(this Microsoft.AspNetCore.Authentication.AuthenticationBuilder! builder, System.Action! configure) -> Microsoft.AspNetCore.Authentication.AuthenticationBuilder! +virtual Microsoft.AspNetCore.Authentication.BearerToken.BearerTokenEvents.MessageReceivedAsync(Microsoft.AspNetCore.Authentication.BearerToken.MessageReceivedContext! context) -> System.Threading.Tasks.Task! diff --git a/src/Security/Authentication/BearerToken/src/PublicAPI.Unshipped.txt b/src/Security/Authentication/BearerToken/src/PublicAPI.Unshipped.txt index 547418feb451..7dc5c58110bf 100644 --- a/src/Security/Authentication/BearerToken/src/PublicAPI.Unshipped.txt +++ b/src/Security/Authentication/BearerToken/src/PublicAPI.Unshipped.txt @@ -1,38 +1 @@ #nullable enable -const Microsoft.AspNetCore.Authentication.BearerToken.BearerTokenDefaults.AuthenticationScheme = "BearerToken" -> string! -Microsoft.AspNetCore.Authentication.BearerToken.AccessTokenResponse -Microsoft.AspNetCore.Authentication.BearerToken.AccessTokenResponse.AccessToken.get -> string! -Microsoft.AspNetCore.Authentication.BearerToken.AccessTokenResponse.AccessToken.init -> void -Microsoft.AspNetCore.Authentication.BearerToken.AccessTokenResponse.AccessTokenResponse() -> void -Microsoft.AspNetCore.Authentication.BearerToken.AccessTokenResponse.ExpiresIn.get -> long -Microsoft.AspNetCore.Authentication.BearerToken.AccessTokenResponse.ExpiresIn.init -> void -Microsoft.AspNetCore.Authentication.BearerToken.AccessTokenResponse.RefreshToken.get -> string! -Microsoft.AspNetCore.Authentication.BearerToken.AccessTokenResponse.RefreshToken.init -> void -Microsoft.AspNetCore.Authentication.BearerToken.AccessTokenResponse.TokenType.get -> string! -Microsoft.AspNetCore.Authentication.BearerToken.BearerTokenDefaults -Microsoft.AspNetCore.Authentication.BearerToken.BearerTokenEvents -Microsoft.AspNetCore.Authentication.BearerToken.BearerTokenEvents.BearerTokenEvents() -> void -Microsoft.AspNetCore.Authentication.BearerToken.BearerTokenEvents.OnMessageReceived.get -> System.Func! -Microsoft.AspNetCore.Authentication.BearerToken.BearerTokenEvents.OnMessageReceived.set -> void -Microsoft.AspNetCore.Authentication.BearerToken.BearerTokenOptions -Microsoft.AspNetCore.Authentication.BearerToken.BearerTokenOptions.BearerTokenExpiration.get -> System.TimeSpan -Microsoft.AspNetCore.Authentication.BearerToken.BearerTokenOptions.BearerTokenExpiration.set -> void -Microsoft.AspNetCore.Authentication.BearerToken.BearerTokenOptions.BearerTokenOptions() -> void -Microsoft.AspNetCore.Authentication.BearerToken.BearerTokenOptions.BearerTokenProtector.get -> Microsoft.AspNetCore.Authentication.ISecureDataFormat! -Microsoft.AspNetCore.Authentication.BearerToken.BearerTokenOptions.BearerTokenProtector.set -> void -Microsoft.AspNetCore.Authentication.BearerToken.BearerTokenOptions.Events.get -> Microsoft.AspNetCore.Authentication.BearerToken.BearerTokenEvents! -Microsoft.AspNetCore.Authentication.BearerToken.BearerTokenOptions.Events.set -> void -Microsoft.AspNetCore.Authentication.BearerToken.BearerTokenOptions.RefreshTokenExpiration.get -> System.TimeSpan -Microsoft.AspNetCore.Authentication.BearerToken.BearerTokenOptions.RefreshTokenExpiration.set -> void -Microsoft.AspNetCore.Authentication.BearerToken.BearerTokenOptions.RefreshTokenProtector.get -> Microsoft.AspNetCore.Authentication.ISecureDataFormat! -Microsoft.AspNetCore.Authentication.BearerToken.BearerTokenOptions.RefreshTokenProtector.set -> void -Microsoft.AspNetCore.Authentication.BearerToken.MessageReceivedContext -Microsoft.AspNetCore.Authentication.BearerToken.MessageReceivedContext.MessageReceivedContext(Microsoft.AspNetCore.Http.HttpContext! context, Microsoft.AspNetCore.Authentication.AuthenticationScheme! scheme, Microsoft.AspNetCore.Authentication.BearerToken.BearerTokenOptions! options) -> void -Microsoft.AspNetCore.Authentication.BearerToken.MessageReceivedContext.Token.get -> string? -Microsoft.AspNetCore.Authentication.BearerToken.MessageReceivedContext.Token.set -> void -Microsoft.Extensions.DependencyInjection.BearerTokenExtensions -static Microsoft.Extensions.DependencyInjection.BearerTokenExtensions.AddBearerToken(this Microsoft.AspNetCore.Authentication.AuthenticationBuilder! builder) -> Microsoft.AspNetCore.Authentication.AuthenticationBuilder! -static Microsoft.Extensions.DependencyInjection.BearerTokenExtensions.AddBearerToken(this Microsoft.AspNetCore.Authentication.AuthenticationBuilder! builder, string! authenticationScheme) -> Microsoft.AspNetCore.Authentication.AuthenticationBuilder! -static Microsoft.Extensions.DependencyInjection.BearerTokenExtensions.AddBearerToken(this Microsoft.AspNetCore.Authentication.AuthenticationBuilder! builder, string! authenticationScheme, System.Action! configure) -> Microsoft.AspNetCore.Authentication.AuthenticationBuilder! -static Microsoft.Extensions.DependencyInjection.BearerTokenExtensions.AddBearerToken(this Microsoft.AspNetCore.Authentication.AuthenticationBuilder! builder, System.Action! configure) -> Microsoft.AspNetCore.Authentication.AuthenticationBuilder! -virtual Microsoft.AspNetCore.Authentication.BearerToken.BearerTokenEvents.MessageReceivedAsync(Microsoft.AspNetCore.Authentication.BearerToken.MessageReceivedContext! context) -> System.Threading.Tasks.Task! diff --git a/src/Security/Authentication/Cookies/src/PublicAPI.Shipped.txt b/src/Security/Authentication/Cookies/src/PublicAPI.Shipped.txt index f7d51172dc8f..85472b3ae0db 100644 --- a/src/Security/Authentication/Cookies/src/PublicAPI.Shipped.txt +++ b/src/Security/Authentication/Cookies/src/PublicAPI.Shipped.txt @@ -32,6 +32,7 @@ Microsoft.AspNetCore.Authentication.Cookies.CookieAuthenticationEvents.OnSigning Microsoft.AspNetCore.Authentication.Cookies.CookieAuthenticationEvents.OnValidatePrincipal.get -> System.Func! Microsoft.AspNetCore.Authentication.Cookies.CookieAuthenticationEvents.OnValidatePrincipal.set -> void Microsoft.AspNetCore.Authentication.Cookies.CookieAuthenticationHandler +Microsoft.AspNetCore.Authentication.Cookies.CookieAuthenticationHandler.CookieAuthenticationHandler(Microsoft.Extensions.Options.IOptionsMonitor! options, Microsoft.Extensions.Logging.ILoggerFactory! logger, System.Text.Encodings.Web.UrlEncoder! encoder) -> void Microsoft.AspNetCore.Authentication.Cookies.CookieAuthenticationHandler.CookieAuthenticationHandler(Microsoft.Extensions.Options.IOptionsMonitor! options, Microsoft.Extensions.Logging.ILoggerFactory! logger, System.Text.Encodings.Web.UrlEncoder! encoder, Microsoft.AspNetCore.Authentication.ISystemClock! clock) -> void Microsoft.AspNetCore.Authentication.Cookies.CookieAuthenticationHandler.Events.get -> Microsoft.AspNetCore.Authentication.Cookies.CookieAuthenticationEvents! Microsoft.AspNetCore.Authentication.Cookies.CookieAuthenticationHandler.Events.set -> void diff --git a/src/Security/Authentication/Cookies/src/PublicAPI.Unshipped.txt b/src/Security/Authentication/Cookies/src/PublicAPI.Unshipped.txt index bf37d3271284..7dc5c58110bf 100644 --- a/src/Security/Authentication/Cookies/src/PublicAPI.Unshipped.txt +++ b/src/Security/Authentication/Cookies/src/PublicAPI.Unshipped.txt @@ -1,2 +1 @@ #nullable enable -Microsoft.AspNetCore.Authentication.Cookies.CookieAuthenticationHandler.CookieAuthenticationHandler(Microsoft.Extensions.Options.IOptionsMonitor! options, Microsoft.Extensions.Logging.ILoggerFactory! logger, System.Text.Encodings.Web.UrlEncoder! encoder) -> void diff --git a/src/Security/Authentication/Core/src/PublicAPI.Shipped.txt b/src/Security/Authentication/Core/src/PublicAPI.Shipped.txt index 82581dc5996f..60afaccaae7e 100644 --- a/src/Security/Authentication/Core/src/PublicAPI.Shipped.txt +++ b/src/Security/Authentication/Core/src/PublicAPI.Shipped.txt @@ -18,6 +18,7 @@ Microsoft.AspNetCore.Authentication.AuthenticationBuilder.AuthenticationBuilder( Microsoft.AspNetCore.Authentication.AuthenticationConfigurationProviderExtensions Microsoft.AspNetCore.Authentication.AuthenticationHandler Microsoft.AspNetCore.Authentication.AuthenticationHandler.AuthenticateAsync() -> System.Threading.Tasks.Task! +Microsoft.AspNetCore.Authentication.AuthenticationHandler.AuthenticationHandler(Microsoft.Extensions.Options.IOptionsMonitor! options, Microsoft.Extensions.Logging.ILoggerFactory! logger, System.Text.Encodings.Web.UrlEncoder! encoder) -> void Microsoft.AspNetCore.Authentication.AuthenticationHandler.AuthenticationHandler(Microsoft.Extensions.Options.IOptionsMonitor! options, Microsoft.Extensions.Logging.ILoggerFactory! logger, System.Text.Encodings.Web.UrlEncoder! encoder, Microsoft.AspNetCore.Authentication.ISystemClock! clock) -> void Microsoft.AspNetCore.Authentication.AuthenticationHandler.BuildRedirectUri(string! targetPath) -> string! Microsoft.AspNetCore.Authentication.AuthenticationHandler.ChallengeAsync(Microsoft.AspNetCore.Authentication.AuthenticationProperties? properties) -> System.Threading.Tasks.Task! @@ -36,6 +37,7 @@ Microsoft.AspNetCore.Authentication.AuthenticationHandler.OriginalPath Microsoft.AspNetCore.Authentication.AuthenticationHandler.Request.get -> Microsoft.AspNetCore.Http.HttpRequest! Microsoft.AspNetCore.Authentication.AuthenticationHandler.Response.get -> Microsoft.AspNetCore.Http.HttpResponse! Microsoft.AspNetCore.Authentication.AuthenticationHandler.Scheme.get -> Microsoft.AspNetCore.Authentication.AuthenticationScheme! +Microsoft.AspNetCore.Authentication.AuthenticationHandler.TimeProvider.get -> System.TimeProvider! Microsoft.AspNetCore.Authentication.AuthenticationHandler.UrlEncoder.get -> System.Text.Encodings.Web.UrlEncoder! Microsoft.AspNetCore.Authentication.AuthenticationMiddleware Microsoft.AspNetCore.Authentication.AuthenticationMiddleware.AuthenticationMiddleware(Microsoft.AspNetCore.Http.RequestDelegate! next, Microsoft.AspNetCore.Authentication.IAuthenticationSchemeProvider! schemes) -> void @@ -64,6 +66,8 @@ Microsoft.AspNetCore.Authentication.AuthenticationSchemeOptions.ForwardSignIn.ge Microsoft.AspNetCore.Authentication.AuthenticationSchemeOptions.ForwardSignIn.set -> void Microsoft.AspNetCore.Authentication.AuthenticationSchemeOptions.ForwardSignOut.get -> string? Microsoft.AspNetCore.Authentication.AuthenticationSchemeOptions.ForwardSignOut.set -> void +Microsoft.AspNetCore.Authentication.AuthenticationSchemeOptions.TimeProvider.get -> System.TimeProvider? +Microsoft.AspNetCore.Authentication.AuthenticationSchemeOptions.TimeProvider.set -> void Microsoft.AspNetCore.Authentication.Base64UrlTextEncoder Microsoft.AspNetCore.Authentication.BaseContext Microsoft.AspNetCore.Authentication.BaseContext.BaseContext(Microsoft.AspNetCore.Http.HttpContext! context, Microsoft.AspNetCore.Authentication.AuthenticationScheme! scheme, TOptions! options) -> void @@ -94,6 +98,7 @@ Microsoft.AspNetCore.Authentication.ISystemClock Microsoft.AspNetCore.Authentication.ISystemClock.UtcNow.get -> System.DateTimeOffset Microsoft.AspNetCore.Authentication.JsonDocumentAuthExtensions Microsoft.AspNetCore.Authentication.PolicySchemeHandler +Microsoft.AspNetCore.Authentication.PolicySchemeHandler.PolicySchemeHandler(Microsoft.Extensions.Options.IOptionsMonitor! options, Microsoft.Extensions.Logging.ILoggerFactory! logger, System.Text.Encodings.Web.UrlEncoder! encoder) -> void Microsoft.AspNetCore.Authentication.PolicySchemeHandler.PolicySchemeHandler(Microsoft.Extensions.Options.IOptionsMonitor! options, Microsoft.Extensions.Logging.ILoggerFactory! logger, System.Text.Encodings.Web.UrlEncoder! encoder, Microsoft.AspNetCore.Authentication.ISystemClock! clock) -> void Microsoft.AspNetCore.Authentication.PolicySchemeOptions Microsoft.AspNetCore.Authentication.PolicySchemeOptions.PolicySchemeOptions() -> void @@ -127,6 +132,7 @@ Microsoft.AspNetCore.Authentication.RemoteAuthenticationEvents.RemoteAuthenticat Microsoft.AspNetCore.Authentication.RemoteAuthenticationHandler Microsoft.AspNetCore.Authentication.RemoteAuthenticationHandler.Events.get -> Microsoft.AspNetCore.Authentication.RemoteAuthenticationEvents! Microsoft.AspNetCore.Authentication.RemoteAuthenticationHandler.Events.set -> void +Microsoft.AspNetCore.Authentication.RemoteAuthenticationHandler.RemoteAuthenticationHandler(Microsoft.Extensions.Options.IOptionsMonitor! options, Microsoft.Extensions.Logging.ILoggerFactory! logger, System.Text.Encodings.Web.UrlEncoder! encoder) -> void Microsoft.AspNetCore.Authentication.RemoteAuthenticationHandler.RemoteAuthenticationHandler(Microsoft.Extensions.Options.IOptionsMonitor! options, Microsoft.Extensions.Logging.ILoggerFactory! logger, System.Text.Encodings.Web.UrlEncoder! encoder, Microsoft.AspNetCore.Authentication.ISystemClock! clock) -> void Microsoft.AspNetCore.Authentication.RemoteAuthenticationHandler.SignInScheme.get -> string? Microsoft.AspNetCore.Authentication.RemoteAuthenticationOptions @@ -181,8 +187,10 @@ Microsoft.AspNetCore.Authentication.SecureDataFormat.SecureDataFormat(Mic Microsoft.AspNetCore.Authentication.SecureDataFormat.Unprotect(string? protectedText) -> TData? Microsoft.AspNetCore.Authentication.SecureDataFormat.Unprotect(string? protectedText, string? purpose) -> TData? Microsoft.AspNetCore.Authentication.SignInAuthenticationHandler +Microsoft.AspNetCore.Authentication.SignInAuthenticationHandler.SignInAuthenticationHandler(Microsoft.Extensions.Options.IOptionsMonitor! options, Microsoft.Extensions.Logging.ILoggerFactory! logger, System.Text.Encodings.Web.UrlEncoder! encoder) -> void Microsoft.AspNetCore.Authentication.SignInAuthenticationHandler.SignInAuthenticationHandler(Microsoft.Extensions.Options.IOptionsMonitor! options, Microsoft.Extensions.Logging.ILoggerFactory! logger, System.Text.Encodings.Web.UrlEncoder! encoder, Microsoft.AspNetCore.Authentication.ISystemClock! clock) -> void Microsoft.AspNetCore.Authentication.SignOutAuthenticationHandler +Microsoft.AspNetCore.Authentication.SignOutAuthenticationHandler.SignOutAuthenticationHandler(Microsoft.Extensions.Options.IOptionsMonitor! options, Microsoft.Extensions.Logging.ILoggerFactory! logger, System.Text.Encodings.Web.UrlEncoder! encoder) -> void Microsoft.AspNetCore.Authentication.SignOutAuthenticationHandler.SignOutAuthenticationHandler(Microsoft.Extensions.Options.IOptionsMonitor! options, Microsoft.Extensions.Logging.ILoggerFactory! logger, System.Text.Encodings.Web.UrlEncoder! encoder, Microsoft.AspNetCore.Authentication.ISystemClock! clock) -> void Microsoft.AspNetCore.Authentication.SystemClock Microsoft.AspNetCore.Authentication.SystemClock.SystemClock() -> void diff --git a/src/Security/Authentication/Core/src/PublicAPI.Unshipped.txt b/src/Security/Authentication/Core/src/PublicAPI.Unshipped.txt index e3d9d5f0905c..7dc5c58110bf 100644 --- a/src/Security/Authentication/Core/src/PublicAPI.Unshipped.txt +++ b/src/Security/Authentication/Core/src/PublicAPI.Unshipped.txt @@ -1,9 +1 @@ #nullable enable -Microsoft.AspNetCore.Authentication.AuthenticationHandler.AuthenticationHandler(Microsoft.Extensions.Options.IOptionsMonitor! options, Microsoft.Extensions.Logging.ILoggerFactory! logger, System.Text.Encodings.Web.UrlEncoder! encoder) -> void -Microsoft.AspNetCore.Authentication.AuthenticationHandler.TimeProvider.get -> System.TimeProvider! -Microsoft.AspNetCore.Authentication.AuthenticationSchemeOptions.TimeProvider.get -> System.TimeProvider? -Microsoft.AspNetCore.Authentication.AuthenticationSchemeOptions.TimeProvider.set -> void -Microsoft.AspNetCore.Authentication.PolicySchemeHandler.PolicySchemeHandler(Microsoft.Extensions.Options.IOptionsMonitor! options, Microsoft.Extensions.Logging.ILoggerFactory! logger, System.Text.Encodings.Web.UrlEncoder! encoder) -> void -Microsoft.AspNetCore.Authentication.RemoteAuthenticationHandler.RemoteAuthenticationHandler(Microsoft.Extensions.Options.IOptionsMonitor! options, Microsoft.Extensions.Logging.ILoggerFactory! logger, System.Text.Encodings.Web.UrlEncoder! encoder) -> void -Microsoft.AspNetCore.Authentication.SignInAuthenticationHandler.SignInAuthenticationHandler(Microsoft.Extensions.Options.IOptionsMonitor! options, Microsoft.Extensions.Logging.ILoggerFactory! logger, System.Text.Encodings.Web.UrlEncoder! encoder) -> void -Microsoft.AspNetCore.Authentication.SignOutAuthenticationHandler.SignOutAuthenticationHandler(Microsoft.Extensions.Options.IOptionsMonitor! options, Microsoft.Extensions.Logging.ILoggerFactory! logger, System.Text.Encodings.Web.UrlEncoder! encoder) -> void diff --git a/src/Security/Authentication/Facebook/src/PublicAPI.Shipped.txt b/src/Security/Authentication/Facebook/src/PublicAPI.Shipped.txt index 7716799b778a..abc832d06a31 100644 --- a/src/Security/Authentication/Facebook/src/PublicAPI.Shipped.txt +++ b/src/Security/Authentication/Facebook/src/PublicAPI.Shipped.txt @@ -16,6 +16,7 @@ const Microsoft.AspNetCore.Authentication.Facebook.FacebookDefaults.AuthenticationScheme = "Facebook" -> string! Microsoft.AspNetCore.Authentication.Facebook.FacebookDefaults Microsoft.AspNetCore.Authentication.Facebook.FacebookHandler +Microsoft.AspNetCore.Authentication.Facebook.FacebookHandler.FacebookHandler(Microsoft.Extensions.Options.IOptionsMonitor! options, Microsoft.Extensions.Logging.ILoggerFactory! logger, System.Text.Encodings.Web.UrlEncoder! encoder) -> void Microsoft.AspNetCore.Authentication.Facebook.FacebookHandler.FacebookHandler(Microsoft.Extensions.Options.IOptionsMonitor! options, Microsoft.Extensions.Logging.ILoggerFactory! logger, System.Text.Encodings.Web.UrlEncoder! encoder, Microsoft.AspNetCore.Authentication.ISystemClock! clock) -> void Microsoft.AspNetCore.Authentication.Facebook.FacebookOptions Microsoft.AspNetCore.Authentication.Facebook.FacebookOptions.AppId.get -> string! diff --git a/src/Security/Authentication/Facebook/src/PublicAPI.Unshipped.txt b/src/Security/Authentication/Facebook/src/PublicAPI.Unshipped.txt index c400addc0923..7dc5c58110bf 100644 --- a/src/Security/Authentication/Facebook/src/PublicAPI.Unshipped.txt +++ b/src/Security/Authentication/Facebook/src/PublicAPI.Unshipped.txt @@ -1,2 +1 @@ #nullable enable -Microsoft.AspNetCore.Authentication.Facebook.FacebookHandler.FacebookHandler(Microsoft.Extensions.Options.IOptionsMonitor! options, Microsoft.Extensions.Logging.ILoggerFactory! logger, System.Text.Encodings.Web.UrlEncoder! encoder) -> void diff --git a/src/Security/Authentication/Google/src/PublicAPI.Shipped.txt b/src/Security/Authentication/Google/src/PublicAPI.Shipped.txt index 8ff04ed623fa..37340656021a 100644 --- a/src/Security/Authentication/Google/src/PublicAPI.Shipped.txt +++ b/src/Security/Authentication/Google/src/PublicAPI.Shipped.txt @@ -35,6 +35,7 @@ Microsoft.AspNetCore.Authentication.Google.GoogleChallengeProperties.Prompt.get Microsoft.AspNetCore.Authentication.Google.GoogleChallengeProperties.Prompt.set -> void Microsoft.AspNetCore.Authentication.Google.GoogleDefaults Microsoft.AspNetCore.Authentication.Google.GoogleHandler +Microsoft.AspNetCore.Authentication.Google.GoogleHandler.GoogleHandler(Microsoft.Extensions.Options.IOptionsMonitor! options, Microsoft.Extensions.Logging.ILoggerFactory! logger, System.Text.Encodings.Web.UrlEncoder! encoder) -> void Microsoft.AspNetCore.Authentication.Google.GoogleHandler.GoogleHandler(Microsoft.Extensions.Options.IOptionsMonitor! options, Microsoft.Extensions.Logging.ILoggerFactory! logger, System.Text.Encodings.Web.UrlEncoder! encoder, Microsoft.AspNetCore.Authentication.ISystemClock! clock) -> void Microsoft.AspNetCore.Authentication.Google.GoogleOptions Microsoft.AspNetCore.Authentication.Google.GoogleOptions.AccessType.get -> string? diff --git a/src/Security/Authentication/Google/src/PublicAPI.Unshipped.txt b/src/Security/Authentication/Google/src/PublicAPI.Unshipped.txt index 11ad64148701..7dc5c58110bf 100644 --- a/src/Security/Authentication/Google/src/PublicAPI.Unshipped.txt +++ b/src/Security/Authentication/Google/src/PublicAPI.Unshipped.txt @@ -1,2 +1 @@ #nullable enable -Microsoft.AspNetCore.Authentication.Google.GoogleHandler.GoogleHandler(Microsoft.Extensions.Options.IOptionsMonitor! options, Microsoft.Extensions.Logging.ILoggerFactory! logger, System.Text.Encodings.Web.UrlEncoder! encoder) -> void diff --git a/src/Security/Authentication/JwtBearer/src/PublicAPI.Shipped.txt b/src/Security/Authentication/JwtBearer/src/PublicAPI.Shipped.txt index c9aa49918342..27e200304b8c 100644 --- a/src/Security/Authentication/JwtBearer/src/PublicAPI.Shipped.txt +++ b/src/Security/Authentication/JwtBearer/src/PublicAPI.Shipped.txt @@ -34,6 +34,7 @@ Microsoft.AspNetCore.Authentication.JwtBearer.JwtBearerEvents.OnTokenValidated.s Microsoft.AspNetCore.Authentication.JwtBearer.JwtBearerHandler Microsoft.AspNetCore.Authentication.JwtBearer.JwtBearerHandler.Events.get -> Microsoft.AspNetCore.Authentication.JwtBearer.JwtBearerEvents! Microsoft.AspNetCore.Authentication.JwtBearer.JwtBearerHandler.Events.set -> void +Microsoft.AspNetCore.Authentication.JwtBearer.JwtBearerHandler.JwtBearerHandler(Microsoft.Extensions.Options.IOptionsMonitor! options, Microsoft.Extensions.Logging.ILoggerFactory! logger, System.Text.Encodings.Web.UrlEncoder! encoder) -> void Microsoft.AspNetCore.Authentication.JwtBearer.JwtBearerHandler.JwtBearerHandler(Microsoft.Extensions.Options.IOptionsMonitor! options, Microsoft.Extensions.Logging.ILoggerFactory! logger, System.Text.Encodings.Web.UrlEncoder! encoder, Microsoft.AspNetCore.Authentication.ISystemClock! clock) -> void Microsoft.AspNetCore.Authentication.JwtBearer.JwtBearerOptions Microsoft.AspNetCore.Authentication.JwtBearer.JwtBearerOptions.Audience.get -> string? @@ -72,8 +73,11 @@ Microsoft.AspNetCore.Authentication.JwtBearer.JwtBearerOptions.RequireHttpsMetad Microsoft.AspNetCore.Authentication.JwtBearer.JwtBearerOptions.SaveToken.get -> bool Microsoft.AspNetCore.Authentication.JwtBearer.JwtBearerOptions.SaveToken.set -> void Microsoft.AspNetCore.Authentication.JwtBearer.JwtBearerOptions.SecurityTokenValidators.get -> System.Collections.Generic.IList! +Microsoft.AspNetCore.Authentication.JwtBearer.JwtBearerOptions.TokenHandlers.get -> System.Collections.Generic.IList! Microsoft.AspNetCore.Authentication.JwtBearer.JwtBearerOptions.TokenValidationParameters.get -> Microsoft.IdentityModel.Tokens.TokenValidationParameters! Microsoft.AspNetCore.Authentication.JwtBearer.JwtBearerOptions.TokenValidationParameters.set -> void +Microsoft.AspNetCore.Authentication.JwtBearer.JwtBearerOptions.UseSecurityTokenValidators.get -> bool +Microsoft.AspNetCore.Authentication.JwtBearer.JwtBearerOptions.UseSecurityTokenValidators.set -> void Microsoft.AspNetCore.Authentication.JwtBearer.JwtBearerPostConfigureOptions Microsoft.AspNetCore.Authentication.JwtBearer.JwtBearerPostConfigureOptions.JwtBearerPostConfigureOptions() -> void Microsoft.AspNetCore.Authentication.JwtBearer.JwtBearerPostConfigureOptions.PostConfigure(string? name, Microsoft.AspNetCore.Authentication.JwtBearer.JwtBearerOptions! options) -> void diff --git a/src/Security/Authentication/JwtBearer/src/PublicAPI.Unshipped.txt b/src/Security/Authentication/JwtBearer/src/PublicAPI.Unshipped.txt index 4626d5e95af8..7dc5c58110bf 100644 --- a/src/Security/Authentication/JwtBearer/src/PublicAPI.Unshipped.txt +++ b/src/Security/Authentication/JwtBearer/src/PublicAPI.Unshipped.txt @@ -1,5 +1 @@ #nullable enable -Microsoft.AspNetCore.Authentication.JwtBearer.JwtBearerHandler.JwtBearerHandler(Microsoft.Extensions.Options.IOptionsMonitor! options, Microsoft.Extensions.Logging.ILoggerFactory! logger, System.Text.Encodings.Web.UrlEncoder! encoder) -> void -Microsoft.AspNetCore.Authentication.JwtBearer.JwtBearerOptions.TokenHandlers.get -> System.Collections.Generic.IList! -Microsoft.AspNetCore.Authentication.JwtBearer.JwtBearerOptions.UseSecurityTokenValidators.get -> bool -Microsoft.AspNetCore.Authentication.JwtBearer.JwtBearerOptions.UseSecurityTokenValidators.set -> void diff --git a/src/Security/Authentication/MicrosoftAccount/src/PublicAPI.Shipped.txt b/src/Security/Authentication/MicrosoftAccount/src/PublicAPI.Shipped.txt index a29ffde6a0c9..e08a7a838d8d 100644 --- a/src/Security/Authentication/MicrosoftAccount/src/PublicAPI.Shipped.txt +++ b/src/Security/Authentication/MicrosoftAccount/src/PublicAPI.Shipped.txt @@ -2,6 +2,7 @@ const Microsoft.AspNetCore.Authentication.MicrosoftAccount.MicrosoftAccountDefaults.AuthenticationScheme = "Microsoft" -> string! Microsoft.AspNetCore.Authentication.MicrosoftAccount.MicrosoftAccountDefaults Microsoft.AspNetCore.Authentication.MicrosoftAccount.MicrosoftAccountHandler +Microsoft.AspNetCore.Authentication.MicrosoftAccount.MicrosoftAccountHandler.MicrosoftAccountHandler(Microsoft.Extensions.Options.IOptionsMonitor! options, Microsoft.Extensions.Logging.ILoggerFactory! logger, System.Text.Encodings.Web.UrlEncoder! encoder) -> void Microsoft.AspNetCore.Authentication.MicrosoftAccount.MicrosoftAccountHandler.MicrosoftAccountHandler(Microsoft.Extensions.Options.IOptionsMonitor! options, Microsoft.Extensions.Logging.ILoggerFactory! logger, System.Text.Encodings.Web.UrlEncoder! encoder, Microsoft.AspNetCore.Authentication.ISystemClock! clock) -> void Microsoft.AspNetCore.Authentication.MicrosoftAccount.MicrosoftAccountOptions Microsoft.AspNetCore.Authentication.MicrosoftAccount.MicrosoftAccountOptions.MicrosoftAccountOptions() -> void diff --git a/src/Security/Authentication/MicrosoftAccount/src/PublicAPI.Unshipped.txt b/src/Security/Authentication/MicrosoftAccount/src/PublicAPI.Unshipped.txt index b06d18f8fa9b..7dc5c58110bf 100644 --- a/src/Security/Authentication/MicrosoftAccount/src/PublicAPI.Unshipped.txt +++ b/src/Security/Authentication/MicrosoftAccount/src/PublicAPI.Unshipped.txt @@ -1,2 +1 @@ #nullable enable -Microsoft.AspNetCore.Authentication.MicrosoftAccount.MicrosoftAccountHandler.MicrosoftAccountHandler(Microsoft.Extensions.Options.IOptionsMonitor! options, Microsoft.Extensions.Logging.ILoggerFactory! logger, System.Text.Encodings.Web.UrlEncoder! encoder) -> void diff --git a/src/Security/Authentication/Negotiate/src/PublicAPI.Shipped.txt b/src/Security/Authentication/Negotiate/src/PublicAPI.Shipped.txt index 684a84c1b3d2..f090335f848e 100644 --- a/src/Security/Authentication/Negotiate/src/PublicAPI.Shipped.txt +++ b/src/Security/Authentication/Negotiate/src/PublicAPI.Shipped.txt @@ -49,6 +49,7 @@ Microsoft.AspNetCore.Authentication.Negotiate.NegotiateHandler Microsoft.AspNetCore.Authentication.Negotiate.NegotiateHandler.Events.get -> Microsoft.AspNetCore.Authentication.Negotiate.NegotiateEvents! Microsoft.AspNetCore.Authentication.Negotiate.NegotiateHandler.Events.set -> void Microsoft.AspNetCore.Authentication.Negotiate.NegotiateHandler.HandleRequestAsync() -> System.Threading.Tasks.Task! +Microsoft.AspNetCore.Authentication.Negotiate.NegotiateHandler.NegotiateHandler(Microsoft.Extensions.Options.IOptionsMonitor! options, Microsoft.Extensions.Logging.ILoggerFactory! logger, System.Text.Encodings.Web.UrlEncoder! encoder) -> void Microsoft.AspNetCore.Authentication.Negotiate.NegotiateHandler.NegotiateHandler(Microsoft.Extensions.Options.IOptionsMonitor! options, Microsoft.Extensions.Logging.ILoggerFactory! logger, System.Text.Encodings.Web.UrlEncoder! encoder, Microsoft.AspNetCore.Authentication.ISystemClock! clock) -> void Microsoft.AspNetCore.Authentication.Negotiate.NegotiateOptions Microsoft.AspNetCore.Authentication.Negotiate.NegotiateOptions.EnableLdap(string! domain) -> void diff --git a/src/Security/Authentication/Negotiate/src/PublicAPI.Unshipped.txt b/src/Security/Authentication/Negotiate/src/PublicAPI.Unshipped.txt index 072b6f359ca1..7dc5c58110bf 100644 --- a/src/Security/Authentication/Negotiate/src/PublicAPI.Unshipped.txt +++ b/src/Security/Authentication/Negotiate/src/PublicAPI.Unshipped.txt @@ -1,2 +1 @@ #nullable enable -Microsoft.AspNetCore.Authentication.Negotiate.NegotiateHandler.NegotiateHandler(Microsoft.Extensions.Options.IOptionsMonitor! options, Microsoft.Extensions.Logging.ILoggerFactory! logger, System.Text.Encodings.Web.UrlEncoder! encoder) -> void diff --git a/src/Security/Authentication/OAuth/src/PublicAPI.Shipped.txt b/src/Security/Authentication/OAuth/src/PublicAPI.Shipped.txt index 144dabc9b80e..bacde21f2131 100644 --- a/src/Security/Authentication/OAuth/src/PublicAPI.Shipped.txt +++ b/src/Security/Authentication/OAuth/src/PublicAPI.Shipped.txt @@ -59,6 +59,7 @@ Microsoft.AspNetCore.Authentication.OAuth.OAuthHandler Microsoft.AspNetCore.Authentication.OAuth.OAuthHandler.Backchannel.get -> System.Net.Http.HttpClient! Microsoft.AspNetCore.Authentication.OAuth.OAuthHandler.Events.get -> Microsoft.AspNetCore.Authentication.OAuth.OAuthEvents! Microsoft.AspNetCore.Authentication.OAuth.OAuthHandler.Events.set -> void +Microsoft.AspNetCore.Authentication.OAuth.OAuthHandler.OAuthHandler(Microsoft.Extensions.Options.IOptionsMonitor! options, Microsoft.Extensions.Logging.ILoggerFactory! logger, System.Text.Encodings.Web.UrlEncoder! encoder) -> void Microsoft.AspNetCore.Authentication.OAuth.OAuthHandler.OAuthHandler(Microsoft.Extensions.Options.IOptionsMonitor! options, Microsoft.Extensions.Logging.ILoggerFactory! logger, System.Text.Encodings.Web.UrlEncoder! encoder, Microsoft.AspNetCore.Authentication.ISystemClock! clock) -> void Microsoft.AspNetCore.Authentication.OAuth.OAuthOptions Microsoft.AspNetCore.Authentication.OAuth.OAuthOptions.AuthorizationEndpoint.get -> string! diff --git a/src/Security/Authentication/OAuth/src/PublicAPI.Unshipped.txt b/src/Security/Authentication/OAuth/src/PublicAPI.Unshipped.txt index 1176455ac260..7dc5c58110bf 100644 --- a/src/Security/Authentication/OAuth/src/PublicAPI.Unshipped.txt +++ b/src/Security/Authentication/OAuth/src/PublicAPI.Unshipped.txt @@ -1,2 +1 @@ #nullable enable -Microsoft.AspNetCore.Authentication.OAuth.OAuthHandler.OAuthHandler(Microsoft.Extensions.Options.IOptionsMonitor! options, Microsoft.Extensions.Logging.ILoggerFactory! logger, System.Text.Encodings.Web.UrlEncoder! encoder) -> void diff --git a/src/Security/Authentication/OpenIdConnect/src/PublicAPI.Shipped.txt b/src/Security/Authentication/OpenIdConnect/src/PublicAPI.Shipped.txt index 443f7f561a9d..343d64c3d2cc 100644 --- a/src/Security/Authentication/OpenIdConnect/src/PublicAPI.Shipped.txt +++ b/src/Security/Authentication/OpenIdConnect/src/PublicAPI.Shipped.txt @@ -66,6 +66,7 @@ Microsoft.AspNetCore.Authentication.OpenIdConnect.OpenIdConnectHandler.Backchann Microsoft.AspNetCore.Authentication.OpenIdConnect.OpenIdConnectHandler.Events.get -> Microsoft.AspNetCore.Authentication.OpenIdConnect.OpenIdConnectEvents! Microsoft.AspNetCore.Authentication.OpenIdConnect.OpenIdConnectHandler.Events.set -> void Microsoft.AspNetCore.Authentication.OpenIdConnect.OpenIdConnectHandler.HtmlEncoder.get -> System.Text.Encodings.Web.HtmlEncoder! +Microsoft.AspNetCore.Authentication.OpenIdConnect.OpenIdConnectHandler.OpenIdConnectHandler(Microsoft.Extensions.Options.IOptionsMonitor! options, Microsoft.Extensions.Logging.ILoggerFactory! logger, System.Text.Encodings.Web.HtmlEncoder! htmlEncoder, System.Text.Encodings.Web.UrlEncoder! encoder) -> void Microsoft.AspNetCore.Authentication.OpenIdConnect.OpenIdConnectHandler.OpenIdConnectHandler(Microsoft.Extensions.Options.IOptionsMonitor! options, Microsoft.Extensions.Logging.ILoggerFactory! logger, System.Text.Encodings.Web.HtmlEncoder! htmlEncoder, System.Text.Encodings.Web.UrlEncoder! encoder, Microsoft.AspNetCore.Authentication.ISystemClock! clock) -> void Microsoft.AspNetCore.Authentication.OpenIdConnect.OpenIdConnectOptions Microsoft.AspNetCore.Authentication.OpenIdConnect.OpenIdConnectOptions.AuthenticationMethod.get -> Microsoft.AspNetCore.Authentication.OpenIdConnect.OpenIdConnectRedirectBehavior @@ -131,10 +132,14 @@ Microsoft.AspNetCore.Authentication.OpenIdConnect.OpenIdConnectOptions.StateData Microsoft.AspNetCore.Authentication.OpenIdConnect.OpenIdConnectOptions.StateDataFormat.set -> void Microsoft.AspNetCore.Authentication.OpenIdConnect.OpenIdConnectOptions.StringDataFormat.get -> Microsoft.AspNetCore.Authentication.ISecureDataFormat! Microsoft.AspNetCore.Authentication.OpenIdConnect.OpenIdConnectOptions.StringDataFormat.set -> void +Microsoft.AspNetCore.Authentication.OpenIdConnect.OpenIdConnectOptions.TokenHandler.get -> Microsoft.IdentityModel.Tokens.TokenHandler! +Microsoft.AspNetCore.Authentication.OpenIdConnect.OpenIdConnectOptions.TokenHandler.set -> void Microsoft.AspNetCore.Authentication.OpenIdConnect.OpenIdConnectOptions.TokenValidationParameters.get -> Microsoft.IdentityModel.Tokens.TokenValidationParameters! Microsoft.AspNetCore.Authentication.OpenIdConnect.OpenIdConnectOptions.TokenValidationParameters.set -> void Microsoft.AspNetCore.Authentication.OpenIdConnect.OpenIdConnectOptions.UsePkce.get -> bool Microsoft.AspNetCore.Authentication.OpenIdConnect.OpenIdConnectOptions.UsePkce.set -> void +Microsoft.AspNetCore.Authentication.OpenIdConnect.OpenIdConnectOptions.UseSecurityTokenValidator.get -> bool +Microsoft.AspNetCore.Authentication.OpenIdConnect.OpenIdConnectOptions.UseSecurityTokenValidator.set -> void Microsoft.AspNetCore.Authentication.OpenIdConnect.OpenIdConnectOptions.UseTokenLifetime.get -> bool Microsoft.AspNetCore.Authentication.OpenIdConnect.OpenIdConnectOptions.UseTokenLifetime.set -> void Microsoft.AspNetCore.Authentication.OpenIdConnect.OpenIdConnectPostConfigureOptions diff --git a/src/Security/Authentication/OpenIdConnect/src/PublicAPI.Unshipped.txt b/src/Security/Authentication/OpenIdConnect/src/PublicAPI.Unshipped.txt index d6dbc14fed1e..7dc5c58110bf 100644 --- a/src/Security/Authentication/OpenIdConnect/src/PublicAPI.Unshipped.txt +++ b/src/Security/Authentication/OpenIdConnect/src/PublicAPI.Unshipped.txt @@ -1,6 +1 @@ #nullable enable -Microsoft.AspNetCore.Authentication.OpenIdConnect.OpenIdConnectHandler.OpenIdConnectHandler(Microsoft.Extensions.Options.IOptionsMonitor! options, Microsoft.Extensions.Logging.ILoggerFactory! logger, System.Text.Encodings.Web.HtmlEncoder! htmlEncoder, System.Text.Encodings.Web.UrlEncoder! encoder) -> void -Microsoft.AspNetCore.Authentication.OpenIdConnect.OpenIdConnectOptions.TokenHandler.get -> Microsoft.IdentityModel.Tokens.TokenHandler! -Microsoft.AspNetCore.Authentication.OpenIdConnect.OpenIdConnectOptions.TokenHandler.set -> void -Microsoft.AspNetCore.Authentication.OpenIdConnect.OpenIdConnectOptions.UseSecurityTokenValidator.get -> bool -Microsoft.AspNetCore.Authentication.OpenIdConnect.OpenIdConnectOptions.UseSecurityTokenValidator.set -> void diff --git a/src/Security/Authentication/Twitter/src/PublicAPI.Shipped.txt b/src/Security/Authentication/Twitter/src/PublicAPI.Shipped.txt index 00872475d665..bf29bca5d70c 100644 --- a/src/Security/Authentication/Twitter/src/PublicAPI.Shipped.txt +++ b/src/Security/Authentication/Twitter/src/PublicAPI.Shipped.txt @@ -53,6 +53,7 @@ Microsoft.AspNetCore.Authentication.Twitter.TwitterEvents.TwitterEvents() -> voi Microsoft.AspNetCore.Authentication.Twitter.TwitterHandler Microsoft.AspNetCore.Authentication.Twitter.TwitterHandler.Events.get -> Microsoft.AspNetCore.Authentication.Twitter.TwitterEvents! Microsoft.AspNetCore.Authentication.Twitter.TwitterHandler.Events.set -> void +Microsoft.AspNetCore.Authentication.Twitter.TwitterHandler.TwitterHandler(Microsoft.Extensions.Options.IOptionsMonitor! options, Microsoft.Extensions.Logging.ILoggerFactory! logger, System.Text.Encodings.Web.UrlEncoder! encoder) -> void Microsoft.AspNetCore.Authentication.Twitter.TwitterHandler.TwitterHandler(Microsoft.Extensions.Options.IOptionsMonitor! options, Microsoft.Extensions.Logging.ILoggerFactory! logger, System.Text.Encodings.Web.UrlEncoder! encoder, Microsoft.AspNetCore.Authentication.ISystemClock! clock) -> void Microsoft.AspNetCore.Authentication.Twitter.TwitterOptions Microsoft.AspNetCore.Authentication.Twitter.TwitterOptions.ClaimActions.get -> Microsoft.AspNetCore.Authentication.OAuth.Claims.ClaimActionCollection! diff --git a/src/Security/Authentication/Twitter/src/PublicAPI.Unshipped.txt b/src/Security/Authentication/Twitter/src/PublicAPI.Unshipped.txt index 55c3f8114d1d..7dc5c58110bf 100644 --- a/src/Security/Authentication/Twitter/src/PublicAPI.Unshipped.txt +++ b/src/Security/Authentication/Twitter/src/PublicAPI.Unshipped.txt @@ -1,2 +1 @@ #nullable enable -Microsoft.AspNetCore.Authentication.Twitter.TwitterHandler.TwitterHandler(Microsoft.Extensions.Options.IOptionsMonitor! options, Microsoft.Extensions.Logging.ILoggerFactory! logger, System.Text.Encodings.Web.UrlEncoder! encoder) -> void diff --git a/src/Security/Authentication/WsFederation/src/PublicAPI.Shipped.txt b/src/Security/Authentication/WsFederation/src/PublicAPI.Shipped.txt index 3af5868ef305..598d605b1741 100644 --- a/src/Security/Authentication/WsFederation/src/PublicAPI.Shipped.txt +++ b/src/Security/Authentication/WsFederation/src/PublicAPI.Shipped.txt @@ -76,6 +76,7 @@ Microsoft.AspNetCore.Authentication.WsFederation.WsFederationEvents.WsFederation Microsoft.AspNetCore.Authentication.WsFederation.WsFederationHandler Microsoft.AspNetCore.Authentication.WsFederation.WsFederationHandler.Events.get -> Microsoft.AspNetCore.Authentication.WsFederation.WsFederationEvents! Microsoft.AspNetCore.Authentication.WsFederation.WsFederationHandler.Events.set -> void +Microsoft.AspNetCore.Authentication.WsFederation.WsFederationHandler.WsFederationHandler(Microsoft.Extensions.Options.IOptionsMonitor! options, Microsoft.Extensions.Logging.ILoggerFactory! logger, System.Text.Encodings.Web.UrlEncoder! encoder) -> void Microsoft.AspNetCore.Authentication.WsFederation.WsFederationHandler.WsFederationHandler(Microsoft.Extensions.Options.IOptionsMonitor! options, Microsoft.Extensions.Logging.ILoggerFactory! logger, System.Text.Encodings.Web.UrlEncoder! encoder, Microsoft.AspNetCore.Authentication.ISystemClock! clock) -> void Microsoft.AspNetCore.Authentication.WsFederation.WsFederationOptions Microsoft.AspNetCore.Authentication.WsFederation.WsFederationOptions.AllowUnsolicitedLogins.get -> bool @@ -106,8 +107,11 @@ Microsoft.AspNetCore.Authentication.WsFederation.WsFederationOptions.SkipUnrecog Microsoft.AspNetCore.Authentication.WsFederation.WsFederationOptions.SkipUnrecognizedRequests.set -> void Microsoft.AspNetCore.Authentication.WsFederation.WsFederationOptions.StateDataFormat.get -> Microsoft.AspNetCore.Authentication.ISecureDataFormat! Microsoft.AspNetCore.Authentication.WsFederation.WsFederationOptions.StateDataFormat.set -> void +Microsoft.AspNetCore.Authentication.WsFederation.WsFederationOptions.TokenHandlers.get -> System.Collections.Generic.ICollection! Microsoft.AspNetCore.Authentication.WsFederation.WsFederationOptions.TokenValidationParameters.get -> Microsoft.IdentityModel.Tokens.TokenValidationParameters! Microsoft.AspNetCore.Authentication.WsFederation.WsFederationOptions.TokenValidationParameters.set -> void +Microsoft.AspNetCore.Authentication.WsFederation.WsFederationOptions.UseSecurityTokenHandlers.get -> bool +Microsoft.AspNetCore.Authentication.WsFederation.WsFederationOptions.UseSecurityTokenHandlers.set -> void Microsoft.AspNetCore.Authentication.WsFederation.WsFederationOptions.UseTokenLifetime.get -> bool Microsoft.AspNetCore.Authentication.WsFederation.WsFederationOptions.UseTokenLifetime.set -> void Microsoft.AspNetCore.Authentication.WsFederation.WsFederationOptions.Wreply.get -> string? diff --git a/src/Security/Authentication/WsFederation/src/PublicAPI.Unshipped.txt b/src/Security/Authentication/WsFederation/src/PublicAPI.Unshipped.txt index 473f251c9c8a..7dc5c58110bf 100644 --- a/src/Security/Authentication/WsFederation/src/PublicAPI.Unshipped.txt +++ b/src/Security/Authentication/WsFederation/src/PublicAPI.Unshipped.txt @@ -1,5 +1 @@ #nullable enable -Microsoft.AspNetCore.Authentication.WsFederation.WsFederationHandler.WsFederationHandler(Microsoft.Extensions.Options.IOptionsMonitor! options, Microsoft.Extensions.Logging.ILoggerFactory! logger, System.Text.Encodings.Web.UrlEncoder! encoder) -> void -Microsoft.AspNetCore.Authentication.WsFederation.WsFederationOptions.TokenHandlers.get -> System.Collections.Generic.ICollection! -Microsoft.AspNetCore.Authentication.WsFederation.WsFederationOptions.UseSecurityTokenHandlers.get -> bool -Microsoft.AspNetCore.Authentication.WsFederation.WsFederationOptions.UseSecurityTokenHandlers.set -> void diff --git a/src/Security/Authorization/Core/src/PublicAPI/net462/PublicAPI.Shipped.txt b/src/Security/Authorization/Core/src/PublicAPI/net462/PublicAPI.Shipped.txt index cfe89af2db46..f9a0a5ccfd83 100644 --- a/src/Security/Authorization/Core/src/PublicAPI/net462/PublicAPI.Shipped.txt +++ b/src/Security/Authorization/Core/src/PublicAPI/net462/PublicAPI.Shipped.txt @@ -95,6 +95,8 @@ Microsoft.AspNetCore.Authorization.IAuthorizationPolicyProvider.GetDefaultPolicy Microsoft.AspNetCore.Authorization.IAuthorizationPolicyProvider.GetFallbackPolicyAsync() -> System.Threading.Tasks.Task! Microsoft.AspNetCore.Authorization.IAuthorizationPolicyProvider.GetPolicyAsync(string! policyName) -> System.Threading.Tasks.Task! Microsoft.AspNetCore.Authorization.IAuthorizationRequirement +Microsoft.AspNetCore.Authorization.IAuthorizationRequirementData +Microsoft.AspNetCore.Authorization.IAuthorizationRequirementData.GetRequirements() -> System.Collections.Generic.IEnumerable! Microsoft.AspNetCore.Authorization.IAuthorizationService Microsoft.AspNetCore.Authorization.IAuthorizationService.AuthorizeAsync(System.Security.Claims.ClaimsPrincipal! user, object? resource, string! policyName) -> System.Threading.Tasks.Task! Microsoft.AspNetCore.Authorization.IAuthorizationService.AuthorizeAsync(System.Security.Claims.ClaimsPrincipal! user, object? resource, System.Collections.Generic.IEnumerable! requirements) -> System.Threading.Tasks.Task! @@ -131,6 +133,8 @@ Microsoft.AspNetCore.Authorization.Infrastructure.RolesAuthorizationRequirement Microsoft.AspNetCore.Authorization.Infrastructure.RolesAuthorizationRequirement.AllowedRoles.get -> System.Collections.Generic.IEnumerable! Microsoft.AspNetCore.Authorization.Infrastructure.RolesAuthorizationRequirement.RolesAuthorizationRequirement(System.Collections.Generic.IEnumerable! allowedRoles) -> void Microsoft.Extensions.DependencyInjection.AuthorizationServiceCollectionExtensions +override Microsoft.AspNetCore.Authorization.AllowAnonymousAttribute.ToString() -> string! +override Microsoft.AspNetCore.Authorization.AuthorizeAttribute.ToString() -> string! override Microsoft.AspNetCore.Authorization.Infrastructure.AssertionRequirement.ToString() -> string! override Microsoft.AspNetCore.Authorization.Infrastructure.ClaimsAuthorizationRequirement.HandleRequirementAsync(Microsoft.AspNetCore.Authorization.AuthorizationHandlerContext! context, Microsoft.AspNetCore.Authorization.Infrastructure.ClaimsAuthorizationRequirement! requirement) -> System.Threading.Tasks.Task! override Microsoft.AspNetCore.Authorization.Infrastructure.ClaimsAuthorizationRequirement.ToString() -> string! diff --git a/src/Security/Authorization/Core/src/PublicAPI/net462/PublicAPI.Unshipped.txt b/src/Security/Authorization/Core/src/PublicAPI/net462/PublicAPI.Unshipped.txt index 23ff31f66b2a..7dc5c58110bf 100644 --- a/src/Security/Authorization/Core/src/PublicAPI/net462/PublicAPI.Unshipped.txt +++ b/src/Security/Authorization/Core/src/PublicAPI/net462/PublicAPI.Unshipped.txt @@ -1,5 +1 @@ #nullable enable -Microsoft.AspNetCore.Authorization.IAuthorizationRequirementData -Microsoft.AspNetCore.Authorization.IAuthorizationRequirementData.GetRequirements() -> System.Collections.Generic.IEnumerable! -override Microsoft.AspNetCore.Authorization.AllowAnonymousAttribute.ToString() -> string! -override Microsoft.AspNetCore.Authorization.AuthorizeAttribute.ToString() -> string! diff --git a/src/Security/Authorization/Core/src/PublicAPI/net8.0/PublicAPI.Shipped.txt b/src/Security/Authorization/Core/src/PublicAPI/net8.0/PublicAPI.Shipped.txt index 6a6acf23524e..b3fb2ab0102e 100644 --- a/src/Security/Authorization/Core/src/PublicAPI/net8.0/PublicAPI.Shipped.txt +++ b/src/Security/Authorization/Core/src/PublicAPI/net8.0/PublicAPI.Shipped.txt @@ -1,10 +1,10 @@ #nullable enable -Microsoft.AspNetCore.Authorization.DefaultAuthorizationPolicyProvider.DefaultAuthorizationPolicyProvider(Microsoft.Extensions.Options.IOptions! options) -> void -Microsoft.AspNetCore.Authorization.DefaultAuthorizationService.DefaultAuthorizationService(Microsoft.AspNetCore.Authorization.IAuthorizationPolicyProvider! policyProvider, Microsoft.AspNetCore.Authorization.IAuthorizationHandlerProvider! handlers, Microsoft.Extensions.Logging.ILogger! logger, Microsoft.AspNetCore.Authorization.IAuthorizationHandlerContextFactory! contextFactory, Microsoft.AspNetCore.Authorization.IAuthorizationEvaluator! evaluator, Microsoft.Extensions.Options.IOptions! options) -> void abstract Microsoft.AspNetCore.Authorization.AuthorizationHandler.HandleRequirementAsync(Microsoft.AspNetCore.Authorization.AuthorizationHandlerContext! context, TRequirement requirement, TResource resource) -> System.Threading.Tasks.Task! abstract Microsoft.AspNetCore.Authorization.AuthorizationHandler.HandleRequirementAsync(Microsoft.AspNetCore.Authorization.AuthorizationHandlerContext! context, TRequirement requirement) -> System.Threading.Tasks.Task! Microsoft.AspNetCore.Authorization.AllowAnonymousAttribute Microsoft.AspNetCore.Authorization.AllowAnonymousAttribute.AllowAnonymousAttribute() -> void +Microsoft.AspNetCore.Authorization.AuthorizationBuilder +Microsoft.AspNetCore.Authorization.AuthorizationBuilder.AuthorizationBuilder(Microsoft.Extensions.DependencyInjection.IServiceCollection! services) -> void Microsoft.AspNetCore.Authorization.AuthorizationFailure Microsoft.AspNetCore.Authorization.AuthorizationFailure.FailCalled.get -> bool Microsoft.AspNetCore.Authorization.AuthorizationFailure.FailedRequirements.get -> System.Collections.Generic.IEnumerable! @@ -76,9 +76,11 @@ Microsoft.AspNetCore.Authorization.DefaultAuthorizationHandlerProvider Microsoft.AspNetCore.Authorization.DefaultAuthorizationHandlerProvider.DefaultAuthorizationHandlerProvider(System.Collections.Generic.IEnumerable! handlers) -> void Microsoft.AspNetCore.Authorization.DefaultAuthorizationHandlerProvider.GetHandlersAsync(Microsoft.AspNetCore.Authorization.AuthorizationHandlerContext! context) -> System.Threading.Tasks.Task!>! Microsoft.AspNetCore.Authorization.DefaultAuthorizationPolicyProvider +Microsoft.AspNetCore.Authorization.DefaultAuthorizationPolicyProvider.DefaultAuthorizationPolicyProvider(Microsoft.Extensions.Options.IOptions! options) -> void Microsoft.AspNetCore.Authorization.DefaultAuthorizationPolicyProvider.GetDefaultPolicyAsync() -> System.Threading.Tasks.Task! Microsoft.AspNetCore.Authorization.DefaultAuthorizationPolicyProvider.GetFallbackPolicyAsync() -> System.Threading.Tasks.Task! Microsoft.AspNetCore.Authorization.DefaultAuthorizationService +Microsoft.AspNetCore.Authorization.DefaultAuthorizationService.DefaultAuthorizationService(Microsoft.AspNetCore.Authorization.IAuthorizationPolicyProvider! policyProvider, Microsoft.AspNetCore.Authorization.IAuthorizationHandlerProvider! handlers, Microsoft.Extensions.Logging.ILogger! logger, Microsoft.AspNetCore.Authorization.IAuthorizationHandlerContextFactory! contextFactory, Microsoft.AspNetCore.Authorization.IAuthorizationEvaluator! evaluator, Microsoft.Extensions.Options.IOptions! options) -> void Microsoft.AspNetCore.Authorization.IAllowAnonymous (forwarded, contained in Microsoft.AspNetCore.Metadata) Microsoft.AspNetCore.Authorization.IAuthorizationEvaluator Microsoft.AspNetCore.Authorization.IAuthorizationEvaluator.Evaluate(Microsoft.AspNetCore.Authorization.AuthorizationHandlerContext! context) -> Microsoft.AspNetCore.Authorization.AuthorizationResult! @@ -89,10 +91,13 @@ Microsoft.AspNetCore.Authorization.IAuthorizationHandlerContextFactory.CreateCon Microsoft.AspNetCore.Authorization.IAuthorizationHandlerProvider Microsoft.AspNetCore.Authorization.IAuthorizationHandlerProvider.GetHandlersAsync(Microsoft.AspNetCore.Authorization.AuthorizationHandlerContext! context) -> System.Threading.Tasks.Task!>! Microsoft.AspNetCore.Authorization.IAuthorizationPolicyProvider +Microsoft.AspNetCore.Authorization.IAuthorizationPolicyProvider.AllowsCachingPolicies.get -> bool Microsoft.AspNetCore.Authorization.IAuthorizationPolicyProvider.GetDefaultPolicyAsync() -> System.Threading.Tasks.Task! Microsoft.AspNetCore.Authorization.IAuthorizationPolicyProvider.GetFallbackPolicyAsync() -> System.Threading.Tasks.Task! Microsoft.AspNetCore.Authorization.IAuthorizationPolicyProvider.GetPolicyAsync(string! policyName) -> System.Threading.Tasks.Task! Microsoft.AspNetCore.Authorization.IAuthorizationRequirement +Microsoft.AspNetCore.Authorization.IAuthorizationRequirementData +Microsoft.AspNetCore.Authorization.IAuthorizationRequirementData.GetRequirements() -> System.Collections.Generic.IEnumerable! Microsoft.AspNetCore.Authorization.IAuthorizationService Microsoft.AspNetCore.Authorization.IAuthorizationService.AuthorizeAsync(System.Security.Claims.ClaimsPrincipal! user, object? resource, string! policyName) -> System.Threading.Tasks.Task! Microsoft.AspNetCore.Authorization.IAuthorizationService.AuthorizeAsync(System.Security.Claims.ClaimsPrincipal! user, object? resource, System.Collections.Generic.IEnumerable! requirements) -> System.Threading.Tasks.Task! @@ -124,10 +129,13 @@ Microsoft.AspNetCore.Authorization.Infrastructure.OperationAuthorizationRequirem Microsoft.AspNetCore.Authorization.Infrastructure.PassThroughAuthorizationHandler Microsoft.AspNetCore.Authorization.Infrastructure.PassThroughAuthorizationHandler.HandleAsync(Microsoft.AspNetCore.Authorization.AuthorizationHandlerContext! context) -> System.Threading.Tasks.Task! Microsoft.AspNetCore.Authorization.Infrastructure.PassThroughAuthorizationHandler.PassThroughAuthorizationHandler() -> void +Microsoft.AspNetCore.Authorization.Infrastructure.PassThroughAuthorizationHandler.PassThroughAuthorizationHandler(Microsoft.Extensions.Options.IOptions! options) -> void Microsoft.AspNetCore.Authorization.Infrastructure.RolesAuthorizationRequirement Microsoft.AspNetCore.Authorization.Infrastructure.RolesAuthorizationRequirement.AllowedRoles.get -> System.Collections.Generic.IEnumerable! Microsoft.AspNetCore.Authorization.Infrastructure.RolesAuthorizationRequirement.RolesAuthorizationRequirement(System.Collections.Generic.IEnumerable! allowedRoles) -> void Microsoft.Extensions.DependencyInjection.AuthorizationServiceCollectionExtensions +override Microsoft.AspNetCore.Authorization.AllowAnonymousAttribute.ToString() -> string! +override Microsoft.AspNetCore.Authorization.AuthorizeAttribute.ToString() -> string! override Microsoft.AspNetCore.Authorization.Infrastructure.AssertionRequirement.ToString() -> string! override Microsoft.AspNetCore.Authorization.Infrastructure.ClaimsAuthorizationRequirement.HandleRequirementAsync(Microsoft.AspNetCore.Authorization.AuthorizationHandlerContext! context, Microsoft.AspNetCore.Authorization.Infrastructure.ClaimsAuthorizationRequirement! requirement) -> System.Threading.Tasks.Task! override Microsoft.AspNetCore.Authorization.Infrastructure.ClaimsAuthorizationRequirement.ToString() -> string! @@ -144,6 +152,7 @@ static Microsoft.AspNetCore.Authorization.AuthorizationFailure.Failed(System.Col static Microsoft.AspNetCore.Authorization.AuthorizationPolicy.Combine(params Microsoft.AspNetCore.Authorization.AuthorizationPolicy![]! policies) -> Microsoft.AspNetCore.Authorization.AuthorizationPolicy! static Microsoft.AspNetCore.Authorization.AuthorizationPolicy.Combine(System.Collections.Generic.IEnumerable! policies) -> Microsoft.AspNetCore.Authorization.AuthorizationPolicy! static Microsoft.AspNetCore.Authorization.AuthorizationPolicy.CombineAsync(Microsoft.AspNetCore.Authorization.IAuthorizationPolicyProvider! policyProvider, System.Collections.Generic.IEnumerable! authorizeData) -> System.Threading.Tasks.Task! +static Microsoft.AspNetCore.Authorization.AuthorizationPolicy.CombineAsync(Microsoft.AspNetCore.Authorization.IAuthorizationPolicyProvider! policyProvider, System.Collections.Generic.IEnumerable! authorizeData, System.Collections.Generic.IEnumerable! policies) -> System.Threading.Tasks.Task! static Microsoft.AspNetCore.Authorization.AuthorizationResult.Failed() -> Microsoft.AspNetCore.Authorization.AuthorizationResult! static Microsoft.AspNetCore.Authorization.AuthorizationResult.Failed(Microsoft.AspNetCore.Authorization.AuthorizationFailure! failure) -> Microsoft.AspNetCore.Authorization.AuthorizationResult! static Microsoft.AspNetCore.Authorization.AuthorizationResult.Success() -> Microsoft.AspNetCore.Authorization.AuthorizationResult! @@ -153,6 +162,16 @@ static Microsoft.AspNetCore.Authorization.AuthorizationServiceExtensions.Authori static Microsoft.AspNetCore.Authorization.AuthorizationServiceExtensions.AuthorizeAsync(this Microsoft.AspNetCore.Authorization.IAuthorizationService! service, System.Security.Claims.ClaimsPrincipal! user, string! policyName) -> System.Threading.Tasks.Task! static Microsoft.Extensions.DependencyInjection.AuthorizationServiceCollectionExtensions.AddAuthorizationCore(this Microsoft.Extensions.DependencyInjection.IServiceCollection! services) -> Microsoft.Extensions.DependencyInjection.IServiceCollection! static Microsoft.Extensions.DependencyInjection.AuthorizationServiceCollectionExtensions.AddAuthorizationCore(this Microsoft.Extensions.DependencyInjection.IServiceCollection! services, System.Action! configure) -> Microsoft.Extensions.DependencyInjection.IServiceCollection! +virtual Microsoft.AspNetCore.Authorization.AuthorizationBuilder.AddDefaultPolicy(string! name, Microsoft.AspNetCore.Authorization.AuthorizationPolicy! policy) -> Microsoft.AspNetCore.Authorization.AuthorizationBuilder! +virtual Microsoft.AspNetCore.Authorization.AuthorizationBuilder.AddDefaultPolicy(string! name, System.Action! configurePolicy) -> Microsoft.AspNetCore.Authorization.AuthorizationBuilder! +virtual Microsoft.AspNetCore.Authorization.AuthorizationBuilder.AddFallbackPolicy(string! name, Microsoft.AspNetCore.Authorization.AuthorizationPolicy! policy) -> Microsoft.AspNetCore.Authorization.AuthorizationBuilder! +virtual Microsoft.AspNetCore.Authorization.AuthorizationBuilder.AddFallbackPolicy(string! name, System.Action! configurePolicy) -> Microsoft.AspNetCore.Authorization.AuthorizationBuilder! +virtual Microsoft.AspNetCore.Authorization.AuthorizationBuilder.AddPolicy(string! name, Microsoft.AspNetCore.Authorization.AuthorizationPolicy! policy) -> Microsoft.AspNetCore.Authorization.AuthorizationBuilder! +virtual Microsoft.AspNetCore.Authorization.AuthorizationBuilder.AddPolicy(string! name, System.Action! configurePolicy) -> Microsoft.AspNetCore.Authorization.AuthorizationBuilder! +virtual Microsoft.AspNetCore.Authorization.AuthorizationBuilder.Services.get -> Microsoft.Extensions.DependencyInjection.IServiceCollection! +virtual Microsoft.AspNetCore.Authorization.AuthorizationBuilder.SetDefaultPolicy(Microsoft.AspNetCore.Authorization.AuthorizationPolicy! policy) -> Microsoft.AspNetCore.Authorization.AuthorizationBuilder! +virtual Microsoft.AspNetCore.Authorization.AuthorizationBuilder.SetFallbackPolicy(Microsoft.AspNetCore.Authorization.AuthorizationPolicy? policy) -> Microsoft.AspNetCore.Authorization.AuthorizationBuilder! +virtual Microsoft.AspNetCore.Authorization.AuthorizationBuilder.SetInvokeHandlersAfterFailure(bool invoke) -> Microsoft.AspNetCore.Authorization.AuthorizationBuilder! virtual Microsoft.AspNetCore.Authorization.AuthorizationHandler.HandleAsync(Microsoft.AspNetCore.Authorization.AuthorizationHandlerContext! context) -> System.Threading.Tasks.Task! virtual Microsoft.AspNetCore.Authorization.AuthorizationHandler.HandleAsync(Microsoft.AspNetCore.Authorization.AuthorizationHandlerContext! context) -> System.Threading.Tasks.Task! virtual Microsoft.AspNetCore.Authorization.AuthorizationHandlerContext.Fail() -> void @@ -166,22 +185,7 @@ virtual Microsoft.AspNetCore.Authorization.AuthorizationHandlerContext.Resource. virtual Microsoft.AspNetCore.Authorization.AuthorizationHandlerContext.Succeed(Microsoft.AspNetCore.Authorization.IAuthorizationRequirement! requirement) -> void virtual Microsoft.AspNetCore.Authorization.AuthorizationHandlerContext.User.get -> System.Security.Claims.ClaimsPrincipal! virtual Microsoft.AspNetCore.Authorization.DefaultAuthorizationHandlerContextFactory.CreateContext(System.Collections.Generic.IEnumerable! requirements, System.Security.Claims.ClaimsPrincipal! user, object? resource) -> Microsoft.AspNetCore.Authorization.AuthorizationHandlerContext! +virtual Microsoft.AspNetCore.Authorization.DefaultAuthorizationPolicyProvider.AllowsCachingPolicies.get -> bool virtual Microsoft.AspNetCore.Authorization.DefaultAuthorizationPolicyProvider.GetPolicyAsync(string! policyName) -> System.Threading.Tasks.Task! virtual Microsoft.AspNetCore.Authorization.DefaultAuthorizationService.AuthorizeAsync(System.Security.Claims.ClaimsPrincipal! user, object? resource, string! policyName) -> System.Threading.Tasks.Task! virtual Microsoft.AspNetCore.Authorization.DefaultAuthorizationService.AuthorizeAsync(System.Security.Claims.ClaimsPrincipal! user, object? resource, System.Collections.Generic.IEnumerable! requirements) -> System.Threading.Tasks.Task! -Microsoft.AspNetCore.Authorization.AuthorizationBuilder -Microsoft.AspNetCore.Authorization.AuthorizationBuilder.AuthorizationBuilder(Microsoft.Extensions.DependencyInjection.IServiceCollection! services) -> void -Microsoft.AspNetCore.Authorization.IAuthorizationPolicyProvider.AllowsCachingPolicies.get -> bool -Microsoft.AspNetCore.Authorization.Infrastructure.PassThroughAuthorizationHandler.PassThroughAuthorizationHandler(Microsoft.Extensions.Options.IOptions! options) -> void -static Microsoft.AspNetCore.Authorization.AuthorizationPolicy.CombineAsync(Microsoft.AspNetCore.Authorization.IAuthorizationPolicyProvider! policyProvider, System.Collections.Generic.IEnumerable! authorizeData, System.Collections.Generic.IEnumerable! policies) -> System.Threading.Tasks.Task! -virtual Microsoft.AspNetCore.Authorization.AuthorizationBuilder.AddDefaultPolicy(string! name, Microsoft.AspNetCore.Authorization.AuthorizationPolicy! policy) -> Microsoft.AspNetCore.Authorization.AuthorizationBuilder! -virtual Microsoft.AspNetCore.Authorization.AuthorizationBuilder.AddDefaultPolicy(string! name, System.Action! configurePolicy) -> Microsoft.AspNetCore.Authorization.AuthorizationBuilder! -virtual Microsoft.AspNetCore.Authorization.AuthorizationBuilder.AddFallbackPolicy(string! name, Microsoft.AspNetCore.Authorization.AuthorizationPolicy! policy) -> Microsoft.AspNetCore.Authorization.AuthorizationBuilder! -virtual Microsoft.AspNetCore.Authorization.AuthorizationBuilder.AddFallbackPolicy(string! name, System.Action! configurePolicy) -> Microsoft.AspNetCore.Authorization.AuthorizationBuilder! -virtual Microsoft.AspNetCore.Authorization.AuthorizationBuilder.AddPolicy(string! name, Microsoft.AspNetCore.Authorization.AuthorizationPolicy! policy) -> Microsoft.AspNetCore.Authorization.AuthorizationBuilder! -virtual Microsoft.AspNetCore.Authorization.AuthorizationBuilder.AddPolicy(string! name, System.Action! configurePolicy) -> Microsoft.AspNetCore.Authorization.AuthorizationBuilder! -virtual Microsoft.AspNetCore.Authorization.AuthorizationBuilder.Services.get -> Microsoft.Extensions.DependencyInjection.IServiceCollection! -virtual Microsoft.AspNetCore.Authorization.AuthorizationBuilder.SetDefaultPolicy(Microsoft.AspNetCore.Authorization.AuthorizationPolicy! policy) -> Microsoft.AspNetCore.Authorization.AuthorizationBuilder! -virtual Microsoft.AspNetCore.Authorization.AuthorizationBuilder.SetFallbackPolicy(Microsoft.AspNetCore.Authorization.AuthorizationPolicy? policy) -> Microsoft.AspNetCore.Authorization.AuthorizationBuilder! -virtual Microsoft.AspNetCore.Authorization.AuthorizationBuilder.SetInvokeHandlersAfterFailure(bool invoke) -> Microsoft.AspNetCore.Authorization.AuthorizationBuilder! -virtual Microsoft.AspNetCore.Authorization.DefaultAuthorizationPolicyProvider.AllowsCachingPolicies.get -> bool \ No newline at end of file diff --git a/src/Security/Authorization/Core/src/PublicAPI/net8.0/PublicAPI.Unshipped.txt b/src/Security/Authorization/Core/src/PublicAPI/net8.0/PublicAPI.Unshipped.txt index 23ff31f66b2a..7dc5c58110bf 100644 --- a/src/Security/Authorization/Core/src/PublicAPI/net8.0/PublicAPI.Unshipped.txt +++ b/src/Security/Authorization/Core/src/PublicAPI/net8.0/PublicAPI.Unshipped.txt @@ -1,5 +1 @@ #nullable enable -Microsoft.AspNetCore.Authorization.IAuthorizationRequirementData -Microsoft.AspNetCore.Authorization.IAuthorizationRequirementData.GetRequirements() -> System.Collections.Generic.IEnumerable! -override Microsoft.AspNetCore.Authorization.AllowAnonymousAttribute.ToString() -> string! -override Microsoft.AspNetCore.Authorization.AuthorizeAttribute.ToString() -> string! diff --git a/src/Security/Authorization/Core/src/PublicAPI/netstandard2.0/PublicAPI.Shipped.txt b/src/Security/Authorization/Core/src/PublicAPI/netstandard2.0/PublicAPI.Shipped.txt index cfe89af2db46..f9a0a5ccfd83 100644 --- a/src/Security/Authorization/Core/src/PublicAPI/netstandard2.0/PublicAPI.Shipped.txt +++ b/src/Security/Authorization/Core/src/PublicAPI/netstandard2.0/PublicAPI.Shipped.txt @@ -95,6 +95,8 @@ Microsoft.AspNetCore.Authorization.IAuthorizationPolicyProvider.GetDefaultPolicy Microsoft.AspNetCore.Authorization.IAuthorizationPolicyProvider.GetFallbackPolicyAsync() -> System.Threading.Tasks.Task! Microsoft.AspNetCore.Authorization.IAuthorizationPolicyProvider.GetPolicyAsync(string! policyName) -> System.Threading.Tasks.Task! Microsoft.AspNetCore.Authorization.IAuthorizationRequirement +Microsoft.AspNetCore.Authorization.IAuthorizationRequirementData +Microsoft.AspNetCore.Authorization.IAuthorizationRequirementData.GetRequirements() -> System.Collections.Generic.IEnumerable! Microsoft.AspNetCore.Authorization.IAuthorizationService Microsoft.AspNetCore.Authorization.IAuthorizationService.AuthorizeAsync(System.Security.Claims.ClaimsPrincipal! user, object? resource, string! policyName) -> System.Threading.Tasks.Task! Microsoft.AspNetCore.Authorization.IAuthorizationService.AuthorizeAsync(System.Security.Claims.ClaimsPrincipal! user, object? resource, System.Collections.Generic.IEnumerable! requirements) -> System.Threading.Tasks.Task! @@ -131,6 +133,8 @@ Microsoft.AspNetCore.Authorization.Infrastructure.RolesAuthorizationRequirement Microsoft.AspNetCore.Authorization.Infrastructure.RolesAuthorizationRequirement.AllowedRoles.get -> System.Collections.Generic.IEnumerable! Microsoft.AspNetCore.Authorization.Infrastructure.RolesAuthorizationRequirement.RolesAuthorizationRequirement(System.Collections.Generic.IEnumerable! allowedRoles) -> void Microsoft.Extensions.DependencyInjection.AuthorizationServiceCollectionExtensions +override Microsoft.AspNetCore.Authorization.AllowAnonymousAttribute.ToString() -> string! +override Microsoft.AspNetCore.Authorization.AuthorizeAttribute.ToString() -> string! override Microsoft.AspNetCore.Authorization.Infrastructure.AssertionRequirement.ToString() -> string! override Microsoft.AspNetCore.Authorization.Infrastructure.ClaimsAuthorizationRequirement.HandleRequirementAsync(Microsoft.AspNetCore.Authorization.AuthorizationHandlerContext! context, Microsoft.AspNetCore.Authorization.Infrastructure.ClaimsAuthorizationRequirement! requirement) -> System.Threading.Tasks.Task! override Microsoft.AspNetCore.Authorization.Infrastructure.ClaimsAuthorizationRequirement.ToString() -> string! diff --git a/src/Security/Authorization/Core/src/PublicAPI/netstandard2.0/PublicAPI.Unshipped.txt b/src/Security/Authorization/Core/src/PublicAPI/netstandard2.0/PublicAPI.Unshipped.txt index 23ff31f66b2a..7dc5c58110bf 100644 --- a/src/Security/Authorization/Core/src/PublicAPI/netstandard2.0/PublicAPI.Unshipped.txt +++ b/src/Security/Authorization/Core/src/PublicAPI/netstandard2.0/PublicAPI.Unshipped.txt @@ -1,5 +1 @@ #nullable enable -Microsoft.AspNetCore.Authorization.IAuthorizationRequirementData -Microsoft.AspNetCore.Authorization.IAuthorizationRequirementData.GetRequirements() -> System.Collections.Generic.IEnumerable! -override Microsoft.AspNetCore.Authorization.AllowAnonymousAttribute.ToString() -> string! -override Microsoft.AspNetCore.Authorization.AuthorizeAttribute.ToString() -> string! diff --git a/src/Security/Authorization/Policy/src/PublicAPI.Shipped.txt b/src/Security/Authorization/Policy/src/PublicAPI.Shipped.txt index 848444a19518..60b296dab3c6 100644 --- a/src/Security/Authorization/Policy/src/PublicAPI.Shipped.txt +++ b/src/Security/Authorization/Policy/src/PublicAPI.Shipped.txt @@ -2,6 +2,7 @@ Microsoft.AspNetCore.Authorization.AuthorizationMiddleware Microsoft.AspNetCore.Authorization.AuthorizationMiddleware.AuthorizationMiddleware(Microsoft.AspNetCore.Http.RequestDelegate! next, Microsoft.AspNetCore.Authorization.IAuthorizationPolicyProvider! policyProvider) -> void Microsoft.AspNetCore.Authorization.AuthorizationMiddleware.AuthorizationMiddleware(Microsoft.AspNetCore.Http.RequestDelegate! next, Microsoft.AspNetCore.Authorization.IAuthorizationPolicyProvider! policyProvider, System.IServiceProvider! services) -> void +Microsoft.AspNetCore.Authorization.AuthorizationMiddleware.AuthorizationMiddleware(Microsoft.AspNetCore.Http.RequestDelegate! next, Microsoft.AspNetCore.Authorization.IAuthorizationPolicyProvider! policyProvider, System.IServiceProvider! services, Microsoft.Extensions.Logging.ILogger! logger) -> void Microsoft.AspNetCore.Authorization.AuthorizationMiddleware.Invoke(Microsoft.AspNetCore.Http.HttpContext! context) -> System.Threading.Tasks.Task! Microsoft.AspNetCore.Authorization.IAuthorizationMiddlewareResultHandler Microsoft.AspNetCore.Authorization.IAuthorizationMiddlewareResultHandler.HandleAsync(Microsoft.AspNetCore.Http.RequestDelegate! next, Microsoft.AspNetCore.Http.HttpContext! context, Microsoft.AspNetCore.Authorization.AuthorizationPolicy! policy, Microsoft.AspNetCore.Authorization.Policy.PolicyAuthorizationResult! authorizeResult) -> System.Threading.Tasks.Task! diff --git a/src/Security/Authorization/Policy/src/PublicAPI.Unshipped.txt b/src/Security/Authorization/Policy/src/PublicAPI.Unshipped.txt index 1e77808ba694..7dc5c58110bf 100644 --- a/src/Security/Authorization/Policy/src/PublicAPI.Unshipped.txt +++ b/src/Security/Authorization/Policy/src/PublicAPI.Unshipped.txt @@ -1,2 +1 @@ #nullable enable -Microsoft.AspNetCore.Authorization.AuthorizationMiddleware.AuthorizationMiddleware(Microsoft.AspNetCore.Http.RequestDelegate! next, Microsoft.AspNetCore.Authorization.IAuthorizationPolicyProvider! policyProvider, System.IServiceProvider! services, Microsoft.Extensions.Logging.ILogger! logger) -> void \ No newline at end of file diff --git a/src/Servers/Connections.Abstractions/src/PublicAPI/net462/PublicAPI.Shipped.txt b/src/Servers/Connections.Abstractions/src/PublicAPI/net462/PublicAPI.Shipped.txt index 67c66ad867f2..17afb600df87 100644 --- a/src/Servers/Connections.Abstractions/src/PublicAPI/net462/PublicAPI.Shipped.txt +++ b/src/Servers/Connections.Abstractions/src/PublicAPI/net462/PublicAPI.Shipped.txt @@ -11,6 +11,9 @@ abstract Microsoft.AspNetCore.Connections.ConnectionContext.Transport.set -> voi abstract Microsoft.AspNetCore.Connections.ConnectionHandler.OnConnectedAsync(Microsoft.AspNetCore.Connections.ConnectionContext! connection) -> System.Threading.Tasks.Task! abstract Microsoft.AspNetCore.Connections.MultiplexedConnectionContext.AcceptAsync(System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.ValueTask abstract Microsoft.AspNetCore.Connections.MultiplexedConnectionContext.ConnectAsync(Microsoft.AspNetCore.Http.Features.IFeatureCollection? features = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.ValueTask +Microsoft.AspNetCore.Connections.Abstractions.IStatefulReconnectFeature +Microsoft.AspNetCore.Connections.Abstractions.IStatefulReconnectFeature.DisableReconnect() -> void +Microsoft.AspNetCore.Connections.Abstractions.IStatefulReconnectFeature.OnReconnected(System.Func! notifyOnReconnect) -> void Microsoft.AspNetCore.Connections.AddressInUseException Microsoft.AspNetCore.Connections.AddressInUseException.AddressInUseException(string! message) -> void Microsoft.AspNetCore.Connections.AddressInUseException.AddressInUseException(string! message, System.Exception! inner) -> void @@ -71,6 +74,10 @@ Microsoft.AspNetCore.Connections.Features.IConnectionLifetimeNotificationFeature Microsoft.AspNetCore.Connections.Features.IConnectionLifetimeNotificationFeature.ConnectionClosedRequested.get -> System.Threading.CancellationToken Microsoft.AspNetCore.Connections.Features.IConnectionLifetimeNotificationFeature.ConnectionClosedRequested.set -> void Microsoft.AspNetCore.Connections.Features.IConnectionLifetimeNotificationFeature.RequestClose() -> void +Microsoft.AspNetCore.Connections.Features.IConnectionMetricsTagsFeature +Microsoft.AspNetCore.Connections.Features.IConnectionMetricsTagsFeature.Tags.get -> System.Collections.Generic.ICollection>! +Microsoft.AspNetCore.Connections.Features.IConnectionNamedPipeFeature +Microsoft.AspNetCore.Connections.Features.IConnectionNamedPipeFeature.NamedPipe.get -> System.IO.Pipes.NamedPipeServerStream! Microsoft.AspNetCore.Connections.Features.IConnectionSocketFeature Microsoft.AspNetCore.Connections.Features.IConnectionSocketFeature.Socket.get -> System.Net.Sockets.Socket! Microsoft.AspNetCore.Connections.Features.IConnectionTransportFeature @@ -128,6 +135,8 @@ Microsoft.AspNetCore.Connections.IConnectionListener.EndPoint.get -> System.Net. Microsoft.AspNetCore.Connections.IConnectionListener.UnbindAsync(System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.ValueTask Microsoft.AspNetCore.Connections.IConnectionListenerFactory Microsoft.AspNetCore.Connections.IConnectionListenerFactory.BindAsync(System.Net.EndPoint! endpoint, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.ValueTask +Microsoft.AspNetCore.Connections.IConnectionListenerFactorySelector +Microsoft.AspNetCore.Connections.IConnectionListenerFactorySelector.CanBind(System.Net.EndPoint! endpoint) -> bool Microsoft.AspNetCore.Connections.IMultiplexedConnectionBuilder Microsoft.AspNetCore.Connections.IMultiplexedConnectionBuilder.ApplicationServices.get -> System.IServiceProvider! Microsoft.AspNetCore.Connections.IMultiplexedConnectionBuilder.Build() -> Microsoft.AspNetCore.Connections.MultiplexedConnectionDelegate! @@ -148,6 +157,11 @@ Microsoft.AspNetCore.Connections.MultiplexedConnectionBuilder.Use(System.Func void Microsoft.AspNetCore.Connections.MultiplexedConnectionDelegate +Microsoft.AspNetCore.Connections.NamedPipeEndPoint +Microsoft.AspNetCore.Connections.NamedPipeEndPoint.NamedPipeEndPoint(string! pipeName) -> void +Microsoft.AspNetCore.Connections.NamedPipeEndPoint.NamedPipeEndPoint(string! pipeName, string! serverName) -> void +Microsoft.AspNetCore.Connections.NamedPipeEndPoint.PipeName.get -> string! +Microsoft.AspNetCore.Connections.NamedPipeEndPoint.ServerName.get -> string! Microsoft.AspNetCore.Connections.TransferFormat Microsoft.AspNetCore.Connections.TransferFormat.Binary = 1 -> Microsoft.AspNetCore.Connections.TransferFormat Microsoft.AspNetCore.Connections.TransferFormat.Text = 2 -> Microsoft.AspNetCore.Connections.TransferFormat @@ -171,8 +185,12 @@ override Microsoft.AspNetCore.Connections.DefaultConnectionContext.RemoteEndPoin override Microsoft.AspNetCore.Connections.DefaultConnectionContext.RemoteEndPoint.set -> void override Microsoft.AspNetCore.Connections.DefaultConnectionContext.Transport.get -> System.IO.Pipelines.IDuplexPipe! override Microsoft.AspNetCore.Connections.DefaultConnectionContext.Transport.set -> void +override Microsoft.AspNetCore.Connections.NamedPipeEndPoint.Equals(object? obj) -> bool +override Microsoft.AspNetCore.Connections.NamedPipeEndPoint.GetHashCode() -> int +override Microsoft.AspNetCore.Connections.NamedPipeEndPoint.ToString() -> string! override Microsoft.AspNetCore.Connections.UriEndPoint.ToString() -> string! static Microsoft.AspNetCore.Connections.ConnectionBuilderExtensions.Run(this Microsoft.AspNetCore.Connections.IConnectionBuilder! connectionBuilder, System.Func! middleware) -> Microsoft.AspNetCore.Connections.IConnectionBuilder! +static Microsoft.AspNetCore.Connections.ConnectionBuilderExtensions.Use(this Microsoft.AspNetCore.Connections.IConnectionBuilder! connectionBuilder, System.Func! middleware) -> Microsoft.AspNetCore.Connections.IConnectionBuilder! static Microsoft.AspNetCore.Connections.ConnectionBuilderExtensions.Use(this Microsoft.AspNetCore.Connections.IConnectionBuilder! connectionBuilder, System.Func!, System.Threading.Tasks.Task!>! middleware) -> Microsoft.AspNetCore.Connections.IConnectionBuilder! static Microsoft.AspNetCore.Connections.ConnectionBuilderExtensions.UseConnectionHandler(this Microsoft.AspNetCore.Connections.IConnectionBuilder! connectionBuilder) -> Microsoft.AspNetCore.Connections.IConnectionBuilder! virtual Microsoft.AspNetCore.Connections.BaseConnectionContext.ConnectionClosed.get -> System.Threading.CancellationToken diff --git a/src/Servers/Connections.Abstractions/src/PublicAPI/net462/PublicAPI.Unshipped.txt b/src/Servers/Connections.Abstractions/src/PublicAPI/net462/PublicAPI.Unshipped.txt index 39e1faa6cf3c..7dc5c58110bf 100644 --- a/src/Servers/Connections.Abstractions/src/PublicAPI/net462/PublicAPI.Unshipped.txt +++ b/src/Servers/Connections.Abstractions/src/PublicAPI/net462/PublicAPI.Unshipped.txt @@ -1,19 +1 @@ #nullable enable -Microsoft.AspNetCore.Connections.Abstractions.IStatefulReconnectFeature -Microsoft.AspNetCore.Connections.Abstractions.IStatefulReconnectFeature.DisableReconnect() -> void -Microsoft.AspNetCore.Connections.Abstractions.IStatefulReconnectFeature.OnReconnected(System.Func! notifyOnReconnect) -> void -Microsoft.AspNetCore.Connections.Features.IConnectionMetricsTagsFeature -Microsoft.AspNetCore.Connections.Features.IConnectionMetricsTagsFeature.Tags.get -> System.Collections.Generic.ICollection>! -Microsoft.AspNetCore.Connections.Features.IConnectionNamedPipeFeature -Microsoft.AspNetCore.Connections.Features.IConnectionNamedPipeFeature.NamedPipe.get -> System.IO.Pipes.NamedPipeServerStream! -Microsoft.AspNetCore.Connections.IConnectionListenerFactorySelector -Microsoft.AspNetCore.Connections.IConnectionListenerFactorySelector.CanBind(System.Net.EndPoint! endpoint) -> bool -Microsoft.AspNetCore.Connections.NamedPipeEndPoint -Microsoft.AspNetCore.Connections.NamedPipeEndPoint.NamedPipeEndPoint(string! pipeName) -> void -Microsoft.AspNetCore.Connections.NamedPipeEndPoint.NamedPipeEndPoint(string! pipeName, string! serverName) -> void -Microsoft.AspNetCore.Connections.NamedPipeEndPoint.PipeName.get -> string! -Microsoft.AspNetCore.Connections.NamedPipeEndPoint.ServerName.get -> string! -override Microsoft.AspNetCore.Connections.NamedPipeEndPoint.Equals(object? obj) -> bool -override Microsoft.AspNetCore.Connections.NamedPipeEndPoint.GetHashCode() -> int -override Microsoft.AspNetCore.Connections.NamedPipeEndPoint.ToString() -> string! -static Microsoft.AspNetCore.Connections.ConnectionBuilderExtensions.Use(this Microsoft.AspNetCore.Connections.IConnectionBuilder! connectionBuilder, System.Func! middleware) -> Microsoft.AspNetCore.Connections.IConnectionBuilder! diff --git a/src/Servers/Connections.Abstractions/src/PublicAPI/net8.0/PublicAPI.Shipped.txt b/src/Servers/Connections.Abstractions/src/PublicAPI/net8.0/PublicAPI.Shipped.txt index 50be3eebbd8d..2afb260969c8 100644 --- a/src/Servers/Connections.Abstractions/src/PublicAPI/net8.0/PublicAPI.Shipped.txt +++ b/src/Servers/Connections.Abstractions/src/PublicAPI/net8.0/PublicAPI.Shipped.txt @@ -11,6 +11,9 @@ abstract Microsoft.AspNetCore.Connections.ConnectionContext.Transport.set -> voi abstract Microsoft.AspNetCore.Connections.ConnectionHandler.OnConnectedAsync(Microsoft.AspNetCore.Connections.ConnectionContext! connection) -> System.Threading.Tasks.Task! abstract Microsoft.AspNetCore.Connections.MultiplexedConnectionContext.AcceptAsync(System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.ValueTask abstract Microsoft.AspNetCore.Connections.MultiplexedConnectionContext.ConnectAsync(Microsoft.AspNetCore.Http.Features.IFeatureCollection? features = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.ValueTask +Microsoft.AspNetCore.Connections.Abstractions.IStatefulReconnectFeature +Microsoft.AspNetCore.Connections.Abstractions.IStatefulReconnectFeature.DisableReconnect() -> void +Microsoft.AspNetCore.Connections.Abstractions.IStatefulReconnectFeature.OnReconnected(System.Func! notifyOnReconnect) -> void Microsoft.AspNetCore.Connections.AddressInUseException Microsoft.AspNetCore.Connections.AddressInUseException.AddressInUseException(string! message) -> void Microsoft.AspNetCore.Connections.AddressInUseException.AddressInUseException(string! message, System.Exception! inner) -> void @@ -71,6 +74,10 @@ Microsoft.AspNetCore.Connections.Features.IConnectionLifetimeNotificationFeature Microsoft.AspNetCore.Connections.Features.IConnectionLifetimeNotificationFeature.ConnectionClosedRequested.get -> System.Threading.CancellationToken Microsoft.AspNetCore.Connections.Features.IConnectionLifetimeNotificationFeature.ConnectionClosedRequested.set -> void Microsoft.AspNetCore.Connections.Features.IConnectionLifetimeNotificationFeature.RequestClose() -> void +Microsoft.AspNetCore.Connections.Features.IConnectionMetricsTagsFeature +Microsoft.AspNetCore.Connections.Features.IConnectionMetricsTagsFeature.Tags.get -> System.Collections.Generic.ICollection>! +Microsoft.AspNetCore.Connections.Features.IConnectionNamedPipeFeature +Microsoft.AspNetCore.Connections.Features.IConnectionNamedPipeFeature.NamedPipe.get -> System.IO.Pipes.NamedPipeServerStream! Microsoft.AspNetCore.Connections.Features.IConnectionSocketFeature Microsoft.AspNetCore.Connections.Features.IConnectionSocketFeature.Socket.get -> System.Net.Sockets.Socket! Microsoft.AspNetCore.Connections.Features.IConnectionTransportFeature @@ -89,6 +96,8 @@ Microsoft.AspNetCore.Connections.Features.IProtocolErrorCodeFeature.Error.set -> Microsoft.AspNetCore.Connections.Features.IStreamAbortFeature Microsoft.AspNetCore.Connections.Features.IStreamAbortFeature.AbortRead(long errorCode, Microsoft.AspNetCore.Connections.ConnectionAbortedException! abortReason) -> void Microsoft.AspNetCore.Connections.Features.IStreamAbortFeature.AbortWrite(long errorCode, Microsoft.AspNetCore.Connections.ConnectionAbortedException! abortReason) -> void +Microsoft.AspNetCore.Connections.Features.IStreamClosedFeature +Microsoft.AspNetCore.Connections.Features.IStreamClosedFeature.OnClosed(System.Action! callback, object? state) -> void Microsoft.AspNetCore.Connections.Features.IStreamDirectionFeature Microsoft.AspNetCore.Connections.Features.IStreamDirectionFeature.CanRead.get -> bool Microsoft.AspNetCore.Connections.Features.IStreamDirectionFeature.CanWrite.get -> bool @@ -99,8 +108,10 @@ Microsoft.AspNetCore.Connections.Features.ITlsHandshakeFeature.CipherAlgorithm.g Microsoft.AspNetCore.Connections.Features.ITlsHandshakeFeature.CipherStrength.get -> int Microsoft.AspNetCore.Connections.Features.ITlsHandshakeFeature.HashAlgorithm.get -> System.Security.Authentication.HashAlgorithmType Microsoft.AspNetCore.Connections.Features.ITlsHandshakeFeature.HashStrength.get -> int +Microsoft.AspNetCore.Connections.Features.ITlsHandshakeFeature.HostName.get -> string! Microsoft.AspNetCore.Connections.Features.ITlsHandshakeFeature.KeyExchangeAlgorithm.get -> System.Security.Authentication.ExchangeAlgorithmType Microsoft.AspNetCore.Connections.Features.ITlsHandshakeFeature.KeyExchangeStrength.get -> int +Microsoft.AspNetCore.Connections.Features.ITlsHandshakeFeature.NegotiatedCipherSuite.get -> System.Net.Security.TlsCipherSuite? Microsoft.AspNetCore.Connections.Features.ITlsHandshakeFeature.Protocol.get -> System.Security.Authentication.SslProtocols Microsoft.AspNetCore.Connections.Features.ITransferFormatFeature Microsoft.AspNetCore.Connections.Features.ITransferFormatFeature.ActiveFormat.get -> Microsoft.AspNetCore.Connections.TransferFormat @@ -126,6 +137,8 @@ Microsoft.AspNetCore.Connections.IConnectionListener.EndPoint.get -> System.Net. Microsoft.AspNetCore.Connections.IConnectionListener.UnbindAsync(System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.ValueTask Microsoft.AspNetCore.Connections.IConnectionListenerFactory Microsoft.AspNetCore.Connections.IConnectionListenerFactory.BindAsync(System.Net.EndPoint! endpoint, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.ValueTask +Microsoft.AspNetCore.Connections.IConnectionListenerFactorySelector +Microsoft.AspNetCore.Connections.IConnectionListenerFactorySelector.CanBind(System.Net.EndPoint! endpoint) -> bool Microsoft.AspNetCore.Connections.IMultiplexedConnectionBuilder Microsoft.AspNetCore.Connections.IMultiplexedConnectionBuilder.ApplicationServices.get -> System.IServiceProvider! Microsoft.AspNetCore.Connections.IMultiplexedConnectionBuilder.Build() -> Microsoft.AspNetCore.Connections.MultiplexedConnectionDelegate! @@ -146,6 +159,27 @@ Microsoft.AspNetCore.Connections.MultiplexedConnectionBuilder.Use(System.Func void Microsoft.AspNetCore.Connections.MultiplexedConnectionDelegate +Microsoft.AspNetCore.Connections.NamedPipeEndPoint +Microsoft.AspNetCore.Connections.NamedPipeEndPoint.NamedPipeEndPoint(string! pipeName) -> void +Microsoft.AspNetCore.Connections.NamedPipeEndPoint.NamedPipeEndPoint(string! pipeName, string! serverName) -> void +Microsoft.AspNetCore.Connections.NamedPipeEndPoint.PipeName.get -> string! +Microsoft.AspNetCore.Connections.NamedPipeEndPoint.ServerName.get -> string! +Microsoft.AspNetCore.Connections.TlsConnectionCallbackContext +Microsoft.AspNetCore.Connections.TlsConnectionCallbackContext.ClientHelloInfo.get -> System.Net.Security.SslClientHelloInfo +Microsoft.AspNetCore.Connections.TlsConnectionCallbackContext.ClientHelloInfo.set -> void +Microsoft.AspNetCore.Connections.TlsConnectionCallbackContext.Connection.get -> Microsoft.AspNetCore.Connections.BaseConnectionContext! +Microsoft.AspNetCore.Connections.TlsConnectionCallbackContext.Connection.set -> void +Microsoft.AspNetCore.Connections.TlsConnectionCallbackContext.State.get -> object? +Microsoft.AspNetCore.Connections.TlsConnectionCallbackContext.State.set -> void +Microsoft.AspNetCore.Connections.TlsConnectionCallbackContext.TlsConnectionCallbackContext() -> void +Microsoft.AspNetCore.Connections.TlsConnectionCallbackOptions +Microsoft.AspNetCore.Connections.TlsConnectionCallbackOptions.ApplicationProtocols.get -> System.Collections.Generic.List! +Microsoft.AspNetCore.Connections.TlsConnectionCallbackOptions.ApplicationProtocols.set -> void +Microsoft.AspNetCore.Connections.TlsConnectionCallbackOptions.OnConnection.get -> System.Func>! +Microsoft.AspNetCore.Connections.TlsConnectionCallbackOptions.OnConnection.set -> void +Microsoft.AspNetCore.Connections.TlsConnectionCallbackOptions.OnConnectionState.get -> object? +Microsoft.AspNetCore.Connections.TlsConnectionCallbackOptions.OnConnectionState.set -> void +Microsoft.AspNetCore.Connections.TlsConnectionCallbackOptions.TlsConnectionCallbackOptions() -> void Microsoft.AspNetCore.Connections.TransferFormat Microsoft.AspNetCore.Connections.TransferFormat.Binary = 1 -> Microsoft.AspNetCore.Connections.TransferFormat Microsoft.AspNetCore.Connections.TransferFormat.Text = 2 -> Microsoft.AspNetCore.Connections.TransferFormat @@ -169,8 +203,12 @@ override Microsoft.AspNetCore.Connections.DefaultConnectionContext.RemoteEndPoin override Microsoft.AspNetCore.Connections.DefaultConnectionContext.RemoteEndPoint.set -> void override Microsoft.AspNetCore.Connections.DefaultConnectionContext.Transport.get -> System.IO.Pipelines.IDuplexPipe! override Microsoft.AspNetCore.Connections.DefaultConnectionContext.Transport.set -> void +override Microsoft.AspNetCore.Connections.NamedPipeEndPoint.Equals(object? obj) -> bool +override Microsoft.AspNetCore.Connections.NamedPipeEndPoint.GetHashCode() -> int +override Microsoft.AspNetCore.Connections.NamedPipeEndPoint.ToString() -> string! override Microsoft.AspNetCore.Connections.UriEndPoint.ToString() -> string! static Microsoft.AspNetCore.Connections.ConnectionBuilderExtensions.Run(this Microsoft.AspNetCore.Connections.IConnectionBuilder! connectionBuilder, System.Func! middleware) -> Microsoft.AspNetCore.Connections.IConnectionBuilder! +static Microsoft.AspNetCore.Connections.ConnectionBuilderExtensions.Use(this Microsoft.AspNetCore.Connections.IConnectionBuilder! connectionBuilder, System.Func! middleware) -> Microsoft.AspNetCore.Connections.IConnectionBuilder! static Microsoft.AspNetCore.Connections.ConnectionBuilderExtensions.Use(this Microsoft.AspNetCore.Connections.IConnectionBuilder! connectionBuilder, System.Func!, System.Threading.Tasks.Task!>! middleware) -> Microsoft.AspNetCore.Connections.IConnectionBuilder! static Microsoft.AspNetCore.Connections.ConnectionBuilderExtensions.UseConnectionHandler(this Microsoft.AspNetCore.Connections.IConnectionBuilder! connectionBuilder) -> Microsoft.AspNetCore.Connections.IConnectionBuilder! virtual Microsoft.AspNetCore.Connections.BaseConnectionContext.ConnectionClosed.get -> System.Threading.CancellationToken @@ -180,21 +218,3 @@ virtual Microsoft.AspNetCore.Connections.BaseConnectionContext.LocalEndPoint.get virtual Microsoft.AspNetCore.Connections.BaseConnectionContext.LocalEndPoint.set -> void virtual Microsoft.AspNetCore.Connections.BaseConnectionContext.RemoteEndPoint.get -> System.Net.EndPoint? virtual Microsoft.AspNetCore.Connections.BaseConnectionContext.RemoteEndPoint.set -> void -Microsoft.AspNetCore.Connections.Features.IStreamClosedFeature -Microsoft.AspNetCore.Connections.Features.IStreamClosedFeature.OnClosed(System.Action! callback, object? state) -> void -Microsoft.AspNetCore.Connections.TlsConnectionCallbackContext -Microsoft.AspNetCore.Connections.TlsConnectionCallbackContext.ClientHelloInfo.get -> System.Net.Security.SslClientHelloInfo -Microsoft.AspNetCore.Connections.TlsConnectionCallbackContext.ClientHelloInfo.set -> void -Microsoft.AspNetCore.Connections.TlsConnectionCallbackContext.Connection.get -> Microsoft.AspNetCore.Connections.BaseConnectionContext! -Microsoft.AspNetCore.Connections.TlsConnectionCallbackContext.Connection.set -> void -Microsoft.AspNetCore.Connections.TlsConnectionCallbackContext.State.get -> object? -Microsoft.AspNetCore.Connections.TlsConnectionCallbackContext.State.set -> void -Microsoft.AspNetCore.Connections.TlsConnectionCallbackContext.TlsConnectionCallbackContext() -> void -Microsoft.AspNetCore.Connections.TlsConnectionCallbackOptions -Microsoft.AspNetCore.Connections.TlsConnectionCallbackOptions.ApplicationProtocols.get -> System.Collections.Generic.List! -Microsoft.AspNetCore.Connections.TlsConnectionCallbackOptions.ApplicationProtocols.set -> void -Microsoft.AspNetCore.Connections.TlsConnectionCallbackOptions.OnConnection.get -> System.Func>! -Microsoft.AspNetCore.Connections.TlsConnectionCallbackOptions.OnConnection.set -> void -Microsoft.AspNetCore.Connections.TlsConnectionCallbackOptions.OnConnectionState.get -> object? -Microsoft.AspNetCore.Connections.TlsConnectionCallbackOptions.OnConnectionState.set -> void -Microsoft.AspNetCore.Connections.TlsConnectionCallbackOptions.TlsConnectionCallbackOptions() -> void \ No newline at end of file diff --git a/src/Servers/Connections.Abstractions/src/PublicAPI/net8.0/PublicAPI.Unshipped.txt b/src/Servers/Connections.Abstractions/src/PublicAPI/net8.0/PublicAPI.Unshipped.txt index a0a5d44409b8..7dc5c58110bf 100644 --- a/src/Servers/Connections.Abstractions/src/PublicAPI/net8.0/PublicAPI.Unshipped.txt +++ b/src/Servers/Connections.Abstractions/src/PublicAPI/net8.0/PublicAPI.Unshipped.txt @@ -1,21 +1 @@ #nullable enable -Microsoft.AspNetCore.Connections.Abstractions.IStatefulReconnectFeature -Microsoft.AspNetCore.Connections.Abstractions.IStatefulReconnectFeature.DisableReconnect() -> void -Microsoft.AspNetCore.Connections.Abstractions.IStatefulReconnectFeature.OnReconnected(System.Func! notifyOnReconnect) -> void -Microsoft.AspNetCore.Connections.Features.IConnectionMetricsTagsFeature -Microsoft.AspNetCore.Connections.Features.IConnectionMetricsTagsFeature.Tags.get -> System.Collections.Generic.ICollection>! -Microsoft.AspNetCore.Connections.Features.IConnectionNamedPipeFeature -Microsoft.AspNetCore.Connections.Features.IConnectionNamedPipeFeature.NamedPipe.get -> System.IO.Pipes.NamedPipeServerStream! -Microsoft.AspNetCore.Connections.Features.ITlsHandshakeFeature.HostName.get -> string! -Microsoft.AspNetCore.Connections.Features.ITlsHandshakeFeature.NegotiatedCipherSuite.get -> System.Net.Security.TlsCipherSuite? -Microsoft.AspNetCore.Connections.IConnectionListenerFactorySelector -Microsoft.AspNetCore.Connections.IConnectionListenerFactorySelector.CanBind(System.Net.EndPoint! endpoint) -> bool -Microsoft.AspNetCore.Connections.NamedPipeEndPoint -Microsoft.AspNetCore.Connections.NamedPipeEndPoint.NamedPipeEndPoint(string! pipeName) -> void -Microsoft.AspNetCore.Connections.NamedPipeEndPoint.NamedPipeEndPoint(string! pipeName, string! serverName) -> void -Microsoft.AspNetCore.Connections.NamedPipeEndPoint.PipeName.get -> string! -Microsoft.AspNetCore.Connections.NamedPipeEndPoint.ServerName.get -> string! -override Microsoft.AspNetCore.Connections.NamedPipeEndPoint.Equals(object? obj) -> bool -override Microsoft.AspNetCore.Connections.NamedPipeEndPoint.GetHashCode() -> int -override Microsoft.AspNetCore.Connections.NamedPipeEndPoint.ToString() -> string! -static Microsoft.AspNetCore.Connections.ConnectionBuilderExtensions.Use(this Microsoft.AspNetCore.Connections.IConnectionBuilder! connectionBuilder, System.Func! middleware) -> Microsoft.AspNetCore.Connections.IConnectionBuilder! diff --git a/src/Servers/Connections.Abstractions/src/PublicAPI/netstandard2.0/PublicAPI.Shipped.txt b/src/Servers/Connections.Abstractions/src/PublicAPI/netstandard2.0/PublicAPI.Shipped.txt index 67c66ad867f2..17afb600df87 100644 --- a/src/Servers/Connections.Abstractions/src/PublicAPI/netstandard2.0/PublicAPI.Shipped.txt +++ b/src/Servers/Connections.Abstractions/src/PublicAPI/netstandard2.0/PublicAPI.Shipped.txt @@ -11,6 +11,9 @@ abstract Microsoft.AspNetCore.Connections.ConnectionContext.Transport.set -> voi abstract Microsoft.AspNetCore.Connections.ConnectionHandler.OnConnectedAsync(Microsoft.AspNetCore.Connections.ConnectionContext! connection) -> System.Threading.Tasks.Task! abstract Microsoft.AspNetCore.Connections.MultiplexedConnectionContext.AcceptAsync(System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.ValueTask abstract Microsoft.AspNetCore.Connections.MultiplexedConnectionContext.ConnectAsync(Microsoft.AspNetCore.Http.Features.IFeatureCollection? features = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.ValueTask +Microsoft.AspNetCore.Connections.Abstractions.IStatefulReconnectFeature +Microsoft.AspNetCore.Connections.Abstractions.IStatefulReconnectFeature.DisableReconnect() -> void +Microsoft.AspNetCore.Connections.Abstractions.IStatefulReconnectFeature.OnReconnected(System.Func! notifyOnReconnect) -> void Microsoft.AspNetCore.Connections.AddressInUseException Microsoft.AspNetCore.Connections.AddressInUseException.AddressInUseException(string! message) -> void Microsoft.AspNetCore.Connections.AddressInUseException.AddressInUseException(string! message, System.Exception! inner) -> void @@ -71,6 +74,10 @@ Microsoft.AspNetCore.Connections.Features.IConnectionLifetimeNotificationFeature Microsoft.AspNetCore.Connections.Features.IConnectionLifetimeNotificationFeature.ConnectionClosedRequested.get -> System.Threading.CancellationToken Microsoft.AspNetCore.Connections.Features.IConnectionLifetimeNotificationFeature.ConnectionClosedRequested.set -> void Microsoft.AspNetCore.Connections.Features.IConnectionLifetimeNotificationFeature.RequestClose() -> void +Microsoft.AspNetCore.Connections.Features.IConnectionMetricsTagsFeature +Microsoft.AspNetCore.Connections.Features.IConnectionMetricsTagsFeature.Tags.get -> System.Collections.Generic.ICollection>! +Microsoft.AspNetCore.Connections.Features.IConnectionNamedPipeFeature +Microsoft.AspNetCore.Connections.Features.IConnectionNamedPipeFeature.NamedPipe.get -> System.IO.Pipes.NamedPipeServerStream! Microsoft.AspNetCore.Connections.Features.IConnectionSocketFeature Microsoft.AspNetCore.Connections.Features.IConnectionSocketFeature.Socket.get -> System.Net.Sockets.Socket! Microsoft.AspNetCore.Connections.Features.IConnectionTransportFeature @@ -128,6 +135,8 @@ Microsoft.AspNetCore.Connections.IConnectionListener.EndPoint.get -> System.Net. Microsoft.AspNetCore.Connections.IConnectionListener.UnbindAsync(System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.ValueTask Microsoft.AspNetCore.Connections.IConnectionListenerFactory Microsoft.AspNetCore.Connections.IConnectionListenerFactory.BindAsync(System.Net.EndPoint! endpoint, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.ValueTask +Microsoft.AspNetCore.Connections.IConnectionListenerFactorySelector +Microsoft.AspNetCore.Connections.IConnectionListenerFactorySelector.CanBind(System.Net.EndPoint! endpoint) -> bool Microsoft.AspNetCore.Connections.IMultiplexedConnectionBuilder Microsoft.AspNetCore.Connections.IMultiplexedConnectionBuilder.ApplicationServices.get -> System.IServiceProvider! Microsoft.AspNetCore.Connections.IMultiplexedConnectionBuilder.Build() -> Microsoft.AspNetCore.Connections.MultiplexedConnectionDelegate! @@ -148,6 +157,11 @@ Microsoft.AspNetCore.Connections.MultiplexedConnectionBuilder.Use(System.Func void Microsoft.AspNetCore.Connections.MultiplexedConnectionDelegate +Microsoft.AspNetCore.Connections.NamedPipeEndPoint +Microsoft.AspNetCore.Connections.NamedPipeEndPoint.NamedPipeEndPoint(string! pipeName) -> void +Microsoft.AspNetCore.Connections.NamedPipeEndPoint.NamedPipeEndPoint(string! pipeName, string! serverName) -> void +Microsoft.AspNetCore.Connections.NamedPipeEndPoint.PipeName.get -> string! +Microsoft.AspNetCore.Connections.NamedPipeEndPoint.ServerName.get -> string! Microsoft.AspNetCore.Connections.TransferFormat Microsoft.AspNetCore.Connections.TransferFormat.Binary = 1 -> Microsoft.AspNetCore.Connections.TransferFormat Microsoft.AspNetCore.Connections.TransferFormat.Text = 2 -> Microsoft.AspNetCore.Connections.TransferFormat @@ -171,8 +185,12 @@ override Microsoft.AspNetCore.Connections.DefaultConnectionContext.RemoteEndPoin override Microsoft.AspNetCore.Connections.DefaultConnectionContext.RemoteEndPoint.set -> void override Microsoft.AspNetCore.Connections.DefaultConnectionContext.Transport.get -> System.IO.Pipelines.IDuplexPipe! override Microsoft.AspNetCore.Connections.DefaultConnectionContext.Transport.set -> void +override Microsoft.AspNetCore.Connections.NamedPipeEndPoint.Equals(object? obj) -> bool +override Microsoft.AspNetCore.Connections.NamedPipeEndPoint.GetHashCode() -> int +override Microsoft.AspNetCore.Connections.NamedPipeEndPoint.ToString() -> string! override Microsoft.AspNetCore.Connections.UriEndPoint.ToString() -> string! static Microsoft.AspNetCore.Connections.ConnectionBuilderExtensions.Run(this Microsoft.AspNetCore.Connections.IConnectionBuilder! connectionBuilder, System.Func! middleware) -> Microsoft.AspNetCore.Connections.IConnectionBuilder! +static Microsoft.AspNetCore.Connections.ConnectionBuilderExtensions.Use(this Microsoft.AspNetCore.Connections.IConnectionBuilder! connectionBuilder, System.Func! middleware) -> Microsoft.AspNetCore.Connections.IConnectionBuilder! static Microsoft.AspNetCore.Connections.ConnectionBuilderExtensions.Use(this Microsoft.AspNetCore.Connections.IConnectionBuilder! connectionBuilder, System.Func!, System.Threading.Tasks.Task!>! middleware) -> Microsoft.AspNetCore.Connections.IConnectionBuilder! static Microsoft.AspNetCore.Connections.ConnectionBuilderExtensions.UseConnectionHandler(this Microsoft.AspNetCore.Connections.IConnectionBuilder! connectionBuilder) -> Microsoft.AspNetCore.Connections.IConnectionBuilder! virtual Microsoft.AspNetCore.Connections.BaseConnectionContext.ConnectionClosed.get -> System.Threading.CancellationToken diff --git a/src/Servers/Connections.Abstractions/src/PublicAPI/netstandard2.0/PublicAPI.Unshipped.txt b/src/Servers/Connections.Abstractions/src/PublicAPI/netstandard2.0/PublicAPI.Unshipped.txt index 39e1faa6cf3c..7dc5c58110bf 100644 --- a/src/Servers/Connections.Abstractions/src/PublicAPI/netstandard2.0/PublicAPI.Unshipped.txt +++ b/src/Servers/Connections.Abstractions/src/PublicAPI/netstandard2.0/PublicAPI.Unshipped.txt @@ -1,19 +1 @@ #nullable enable -Microsoft.AspNetCore.Connections.Abstractions.IStatefulReconnectFeature -Microsoft.AspNetCore.Connections.Abstractions.IStatefulReconnectFeature.DisableReconnect() -> void -Microsoft.AspNetCore.Connections.Abstractions.IStatefulReconnectFeature.OnReconnected(System.Func! notifyOnReconnect) -> void -Microsoft.AspNetCore.Connections.Features.IConnectionMetricsTagsFeature -Microsoft.AspNetCore.Connections.Features.IConnectionMetricsTagsFeature.Tags.get -> System.Collections.Generic.ICollection>! -Microsoft.AspNetCore.Connections.Features.IConnectionNamedPipeFeature -Microsoft.AspNetCore.Connections.Features.IConnectionNamedPipeFeature.NamedPipe.get -> System.IO.Pipes.NamedPipeServerStream! -Microsoft.AspNetCore.Connections.IConnectionListenerFactorySelector -Microsoft.AspNetCore.Connections.IConnectionListenerFactorySelector.CanBind(System.Net.EndPoint! endpoint) -> bool -Microsoft.AspNetCore.Connections.NamedPipeEndPoint -Microsoft.AspNetCore.Connections.NamedPipeEndPoint.NamedPipeEndPoint(string! pipeName) -> void -Microsoft.AspNetCore.Connections.NamedPipeEndPoint.NamedPipeEndPoint(string! pipeName, string! serverName) -> void -Microsoft.AspNetCore.Connections.NamedPipeEndPoint.PipeName.get -> string! -Microsoft.AspNetCore.Connections.NamedPipeEndPoint.ServerName.get -> string! -override Microsoft.AspNetCore.Connections.NamedPipeEndPoint.Equals(object? obj) -> bool -override Microsoft.AspNetCore.Connections.NamedPipeEndPoint.GetHashCode() -> int -override Microsoft.AspNetCore.Connections.NamedPipeEndPoint.ToString() -> string! -static Microsoft.AspNetCore.Connections.ConnectionBuilderExtensions.Use(this Microsoft.AspNetCore.Connections.IConnectionBuilder! connectionBuilder, System.Func! middleware) -> Microsoft.AspNetCore.Connections.IConnectionBuilder! diff --git a/src/Servers/Connections.Abstractions/src/PublicAPI/netstandard2.1/PublicAPI.Shipped.txt b/src/Servers/Connections.Abstractions/src/PublicAPI/netstandard2.1/PublicAPI.Shipped.txt index 67c66ad867f2..17afb600df87 100644 --- a/src/Servers/Connections.Abstractions/src/PublicAPI/netstandard2.1/PublicAPI.Shipped.txt +++ b/src/Servers/Connections.Abstractions/src/PublicAPI/netstandard2.1/PublicAPI.Shipped.txt @@ -11,6 +11,9 @@ abstract Microsoft.AspNetCore.Connections.ConnectionContext.Transport.set -> voi abstract Microsoft.AspNetCore.Connections.ConnectionHandler.OnConnectedAsync(Microsoft.AspNetCore.Connections.ConnectionContext! connection) -> System.Threading.Tasks.Task! abstract Microsoft.AspNetCore.Connections.MultiplexedConnectionContext.AcceptAsync(System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.ValueTask abstract Microsoft.AspNetCore.Connections.MultiplexedConnectionContext.ConnectAsync(Microsoft.AspNetCore.Http.Features.IFeatureCollection? features = null, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.ValueTask +Microsoft.AspNetCore.Connections.Abstractions.IStatefulReconnectFeature +Microsoft.AspNetCore.Connections.Abstractions.IStatefulReconnectFeature.DisableReconnect() -> void +Microsoft.AspNetCore.Connections.Abstractions.IStatefulReconnectFeature.OnReconnected(System.Func! notifyOnReconnect) -> void Microsoft.AspNetCore.Connections.AddressInUseException Microsoft.AspNetCore.Connections.AddressInUseException.AddressInUseException(string! message) -> void Microsoft.AspNetCore.Connections.AddressInUseException.AddressInUseException(string! message, System.Exception! inner) -> void @@ -71,6 +74,10 @@ Microsoft.AspNetCore.Connections.Features.IConnectionLifetimeNotificationFeature Microsoft.AspNetCore.Connections.Features.IConnectionLifetimeNotificationFeature.ConnectionClosedRequested.get -> System.Threading.CancellationToken Microsoft.AspNetCore.Connections.Features.IConnectionLifetimeNotificationFeature.ConnectionClosedRequested.set -> void Microsoft.AspNetCore.Connections.Features.IConnectionLifetimeNotificationFeature.RequestClose() -> void +Microsoft.AspNetCore.Connections.Features.IConnectionMetricsTagsFeature +Microsoft.AspNetCore.Connections.Features.IConnectionMetricsTagsFeature.Tags.get -> System.Collections.Generic.ICollection>! +Microsoft.AspNetCore.Connections.Features.IConnectionNamedPipeFeature +Microsoft.AspNetCore.Connections.Features.IConnectionNamedPipeFeature.NamedPipe.get -> System.IO.Pipes.NamedPipeServerStream! Microsoft.AspNetCore.Connections.Features.IConnectionSocketFeature Microsoft.AspNetCore.Connections.Features.IConnectionSocketFeature.Socket.get -> System.Net.Sockets.Socket! Microsoft.AspNetCore.Connections.Features.IConnectionTransportFeature @@ -128,6 +135,8 @@ Microsoft.AspNetCore.Connections.IConnectionListener.EndPoint.get -> System.Net. Microsoft.AspNetCore.Connections.IConnectionListener.UnbindAsync(System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.ValueTask Microsoft.AspNetCore.Connections.IConnectionListenerFactory Microsoft.AspNetCore.Connections.IConnectionListenerFactory.BindAsync(System.Net.EndPoint! endpoint, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.ValueTask +Microsoft.AspNetCore.Connections.IConnectionListenerFactorySelector +Microsoft.AspNetCore.Connections.IConnectionListenerFactorySelector.CanBind(System.Net.EndPoint! endpoint) -> bool Microsoft.AspNetCore.Connections.IMultiplexedConnectionBuilder Microsoft.AspNetCore.Connections.IMultiplexedConnectionBuilder.ApplicationServices.get -> System.IServiceProvider! Microsoft.AspNetCore.Connections.IMultiplexedConnectionBuilder.Build() -> Microsoft.AspNetCore.Connections.MultiplexedConnectionDelegate! @@ -148,6 +157,11 @@ Microsoft.AspNetCore.Connections.MultiplexedConnectionBuilder.Use(System.Func void Microsoft.AspNetCore.Connections.MultiplexedConnectionDelegate +Microsoft.AspNetCore.Connections.NamedPipeEndPoint +Microsoft.AspNetCore.Connections.NamedPipeEndPoint.NamedPipeEndPoint(string! pipeName) -> void +Microsoft.AspNetCore.Connections.NamedPipeEndPoint.NamedPipeEndPoint(string! pipeName, string! serverName) -> void +Microsoft.AspNetCore.Connections.NamedPipeEndPoint.PipeName.get -> string! +Microsoft.AspNetCore.Connections.NamedPipeEndPoint.ServerName.get -> string! Microsoft.AspNetCore.Connections.TransferFormat Microsoft.AspNetCore.Connections.TransferFormat.Binary = 1 -> Microsoft.AspNetCore.Connections.TransferFormat Microsoft.AspNetCore.Connections.TransferFormat.Text = 2 -> Microsoft.AspNetCore.Connections.TransferFormat @@ -171,8 +185,12 @@ override Microsoft.AspNetCore.Connections.DefaultConnectionContext.RemoteEndPoin override Microsoft.AspNetCore.Connections.DefaultConnectionContext.RemoteEndPoint.set -> void override Microsoft.AspNetCore.Connections.DefaultConnectionContext.Transport.get -> System.IO.Pipelines.IDuplexPipe! override Microsoft.AspNetCore.Connections.DefaultConnectionContext.Transport.set -> void +override Microsoft.AspNetCore.Connections.NamedPipeEndPoint.Equals(object? obj) -> bool +override Microsoft.AspNetCore.Connections.NamedPipeEndPoint.GetHashCode() -> int +override Microsoft.AspNetCore.Connections.NamedPipeEndPoint.ToString() -> string! override Microsoft.AspNetCore.Connections.UriEndPoint.ToString() -> string! static Microsoft.AspNetCore.Connections.ConnectionBuilderExtensions.Run(this Microsoft.AspNetCore.Connections.IConnectionBuilder! connectionBuilder, System.Func! middleware) -> Microsoft.AspNetCore.Connections.IConnectionBuilder! +static Microsoft.AspNetCore.Connections.ConnectionBuilderExtensions.Use(this Microsoft.AspNetCore.Connections.IConnectionBuilder! connectionBuilder, System.Func! middleware) -> Microsoft.AspNetCore.Connections.IConnectionBuilder! static Microsoft.AspNetCore.Connections.ConnectionBuilderExtensions.Use(this Microsoft.AspNetCore.Connections.IConnectionBuilder! connectionBuilder, System.Func!, System.Threading.Tasks.Task!>! middleware) -> Microsoft.AspNetCore.Connections.IConnectionBuilder! static Microsoft.AspNetCore.Connections.ConnectionBuilderExtensions.UseConnectionHandler(this Microsoft.AspNetCore.Connections.IConnectionBuilder! connectionBuilder) -> Microsoft.AspNetCore.Connections.IConnectionBuilder! virtual Microsoft.AspNetCore.Connections.BaseConnectionContext.ConnectionClosed.get -> System.Threading.CancellationToken diff --git a/src/Servers/Connections.Abstractions/src/PublicAPI/netstandard2.1/PublicAPI.Unshipped.txt b/src/Servers/Connections.Abstractions/src/PublicAPI/netstandard2.1/PublicAPI.Unshipped.txt index 39e1faa6cf3c..7dc5c58110bf 100644 --- a/src/Servers/Connections.Abstractions/src/PublicAPI/netstandard2.1/PublicAPI.Unshipped.txt +++ b/src/Servers/Connections.Abstractions/src/PublicAPI/netstandard2.1/PublicAPI.Unshipped.txt @@ -1,19 +1 @@ #nullable enable -Microsoft.AspNetCore.Connections.Abstractions.IStatefulReconnectFeature -Microsoft.AspNetCore.Connections.Abstractions.IStatefulReconnectFeature.DisableReconnect() -> void -Microsoft.AspNetCore.Connections.Abstractions.IStatefulReconnectFeature.OnReconnected(System.Func! notifyOnReconnect) -> void -Microsoft.AspNetCore.Connections.Features.IConnectionMetricsTagsFeature -Microsoft.AspNetCore.Connections.Features.IConnectionMetricsTagsFeature.Tags.get -> System.Collections.Generic.ICollection>! -Microsoft.AspNetCore.Connections.Features.IConnectionNamedPipeFeature -Microsoft.AspNetCore.Connections.Features.IConnectionNamedPipeFeature.NamedPipe.get -> System.IO.Pipes.NamedPipeServerStream! -Microsoft.AspNetCore.Connections.IConnectionListenerFactorySelector -Microsoft.AspNetCore.Connections.IConnectionListenerFactorySelector.CanBind(System.Net.EndPoint! endpoint) -> bool -Microsoft.AspNetCore.Connections.NamedPipeEndPoint -Microsoft.AspNetCore.Connections.NamedPipeEndPoint.NamedPipeEndPoint(string! pipeName) -> void -Microsoft.AspNetCore.Connections.NamedPipeEndPoint.NamedPipeEndPoint(string! pipeName, string! serverName) -> void -Microsoft.AspNetCore.Connections.NamedPipeEndPoint.PipeName.get -> string! -Microsoft.AspNetCore.Connections.NamedPipeEndPoint.ServerName.get -> string! -override Microsoft.AspNetCore.Connections.NamedPipeEndPoint.Equals(object? obj) -> bool -override Microsoft.AspNetCore.Connections.NamedPipeEndPoint.GetHashCode() -> int -override Microsoft.AspNetCore.Connections.NamedPipeEndPoint.ToString() -> string! -static Microsoft.AspNetCore.Connections.ConnectionBuilderExtensions.Use(this Microsoft.AspNetCore.Connections.IConnectionBuilder! connectionBuilder, System.Func! middleware) -> Microsoft.AspNetCore.Connections.IConnectionBuilder! diff --git a/src/Servers/HttpSys/src/PublicAPI.Shipped.txt b/src/Servers/HttpSys/src/PublicAPI.Shipped.txt index 0b7c19e76157..a911df29099f 100644 --- a/src/Servers/HttpSys/src/PublicAPI.Shipped.txt +++ b/src/Servers/HttpSys/src/PublicAPI.Shipped.txt @@ -36,6 +36,8 @@ Microsoft.AspNetCore.Server.HttpSys.HttpSysOptions.AllowSynchronousIO.set -> voi Microsoft.AspNetCore.Server.HttpSys.HttpSysOptions.Authentication.get -> Microsoft.AspNetCore.Server.HttpSys.AuthenticationManager! Microsoft.AspNetCore.Server.HttpSys.HttpSysOptions.ClientCertificateMethod.get -> Microsoft.AspNetCore.Server.HttpSys.ClientCertificateMethod Microsoft.AspNetCore.Server.HttpSys.HttpSysOptions.ClientCertificateMethod.set -> void +Microsoft.AspNetCore.Server.HttpSys.HttpSysOptions.EnableKernelResponseBuffering.get -> bool +Microsoft.AspNetCore.Server.HttpSys.HttpSysOptions.EnableKernelResponseBuffering.set -> void Microsoft.AspNetCore.Server.HttpSys.HttpSysOptions.EnableResponseCaching.get -> bool Microsoft.AspNetCore.Server.HttpSys.HttpSysOptions.EnableResponseCaching.set -> void Microsoft.AspNetCore.Server.HttpSys.HttpSysOptions.Http503Verbosity.get -> Microsoft.AspNetCore.Server.HttpSys.Http503VerbosityLevel @@ -61,11 +63,46 @@ Microsoft.AspNetCore.Server.HttpSys.HttpSysOptions.UnsafePreferInlineScheduling. Microsoft.AspNetCore.Server.HttpSys.HttpSysOptions.UrlPrefixes.get -> Microsoft.AspNetCore.Server.HttpSys.UrlPrefixCollection! Microsoft.AspNetCore.Server.HttpSys.HttpSysOptions.UseLatin1RequestHeaders.get -> bool Microsoft.AspNetCore.Server.HttpSys.HttpSysOptions.UseLatin1RequestHeaders.set -> void +Microsoft.AspNetCore.Server.HttpSys.HttpSysRequestTimingType +Microsoft.AspNetCore.Server.HttpSys.HttpSysRequestTimingType.ConnectionStart = 0 -> Microsoft.AspNetCore.Server.HttpSys.HttpSysRequestTimingType +Microsoft.AspNetCore.Server.HttpSys.HttpSysRequestTimingType.DataStart = 1 -> Microsoft.AspNetCore.Server.HttpSys.HttpSysRequestTimingType +Microsoft.AspNetCore.Server.HttpSys.HttpSysRequestTimingType.Http2HeaderDecodeEnd = 14 -> Microsoft.AspNetCore.Server.HttpSys.HttpSysRequestTimingType +Microsoft.AspNetCore.Server.HttpSys.HttpSysRequestTimingType.Http2HeaderDecodeStart = 13 -> Microsoft.AspNetCore.Server.HttpSys.HttpSysRequestTimingType +Microsoft.AspNetCore.Server.HttpSys.HttpSysRequestTimingType.Http2StreamStart = 12 -> Microsoft.AspNetCore.Server.HttpSys.HttpSysRequestTimingType +Microsoft.AspNetCore.Server.HttpSys.HttpSysRequestTimingType.Http3HeaderDecodeEnd = 29 -> Microsoft.AspNetCore.Server.HttpSys.HttpSysRequestTimingType +Microsoft.AspNetCore.Server.HttpSys.HttpSysRequestTimingType.Http3HeaderDecodeStart = 28 -> Microsoft.AspNetCore.Server.HttpSys.HttpSysRequestTimingType +Microsoft.AspNetCore.Server.HttpSys.HttpSysRequestTimingType.Http3StreamStart = 27 -> Microsoft.AspNetCore.Server.HttpSys.HttpSysRequestTimingType +Microsoft.AspNetCore.Server.HttpSys.HttpSysRequestTimingType.RequestDeliveredForDelegation = 23 -> Microsoft.AspNetCore.Server.HttpSys.HttpSysRequestTimingType +Microsoft.AspNetCore.Server.HttpSys.HttpSysRequestTimingType.RequestDeliveredForInspection = 20 -> Microsoft.AspNetCore.Server.HttpSys.HttpSysRequestTimingType +Microsoft.AspNetCore.Server.HttpSys.HttpSysRequestTimingType.RequestDeliveredForIO = 26 -> Microsoft.AspNetCore.Server.HttpSys.HttpSysRequestTimingType +Microsoft.AspNetCore.Server.HttpSys.HttpSysRequestTimingType.RequestHeaderParseEnd = 16 -> Microsoft.AspNetCore.Server.HttpSys.HttpSysRequestTimingType +Microsoft.AspNetCore.Server.HttpSys.HttpSysRequestTimingType.RequestHeaderParseStart = 15 -> Microsoft.AspNetCore.Server.HttpSys.HttpSysRequestTimingType +Microsoft.AspNetCore.Server.HttpSys.HttpSysRequestTimingType.RequestQueuedForDelegation = 22 -> Microsoft.AspNetCore.Server.HttpSys.HttpSysRequestTimingType +Microsoft.AspNetCore.Server.HttpSys.HttpSysRequestTimingType.RequestQueuedForInspection = 19 -> Microsoft.AspNetCore.Server.HttpSys.HttpSysRequestTimingType +Microsoft.AspNetCore.Server.HttpSys.HttpSysRequestTimingType.RequestQueuedForIO = 25 -> Microsoft.AspNetCore.Server.HttpSys.HttpSysRequestTimingType +Microsoft.AspNetCore.Server.HttpSys.HttpSysRequestTimingType.RequestReturnedAfterDelegation = 24 -> Microsoft.AspNetCore.Server.HttpSys.HttpSysRequestTimingType +Microsoft.AspNetCore.Server.HttpSys.HttpSysRequestTimingType.RequestReturnedAfterInspection = 21 -> Microsoft.AspNetCore.Server.HttpSys.HttpSysRequestTimingType +Microsoft.AspNetCore.Server.HttpSys.HttpSysRequestTimingType.RequestRoutingEnd = 18 -> Microsoft.AspNetCore.Server.HttpSys.HttpSysRequestTimingType +Microsoft.AspNetCore.Server.HttpSys.HttpSysRequestTimingType.RequestRoutingStart = 17 -> Microsoft.AspNetCore.Server.HttpSys.HttpSysRequestTimingType +Microsoft.AspNetCore.Server.HttpSys.HttpSysRequestTimingType.TlsAttributesQueryEnd = 9 -> Microsoft.AspNetCore.Server.HttpSys.HttpSysRequestTimingType +Microsoft.AspNetCore.Server.HttpSys.HttpSysRequestTimingType.TlsAttributesQueryStart = 8 -> Microsoft.AspNetCore.Server.HttpSys.HttpSysRequestTimingType +Microsoft.AspNetCore.Server.HttpSys.HttpSysRequestTimingType.TlsCertificateLoadEnd = 3 -> Microsoft.AspNetCore.Server.HttpSys.HttpSysRequestTimingType +Microsoft.AspNetCore.Server.HttpSys.HttpSysRequestTimingType.TlsCertificateLoadStart = 2 -> Microsoft.AspNetCore.Server.HttpSys.HttpSysRequestTimingType +Microsoft.AspNetCore.Server.HttpSys.HttpSysRequestTimingType.TlsClientCertQueryEnd = 11 -> Microsoft.AspNetCore.Server.HttpSys.HttpSysRequestTimingType +Microsoft.AspNetCore.Server.HttpSys.HttpSysRequestTimingType.TlsClientCertQueryStart = 10 -> Microsoft.AspNetCore.Server.HttpSys.HttpSysRequestTimingType +Microsoft.AspNetCore.Server.HttpSys.HttpSysRequestTimingType.TlsHandshakeLeg1End = 5 -> Microsoft.AspNetCore.Server.HttpSys.HttpSysRequestTimingType +Microsoft.AspNetCore.Server.HttpSys.HttpSysRequestTimingType.TlsHandshakeLeg1Start = 4 -> Microsoft.AspNetCore.Server.HttpSys.HttpSysRequestTimingType +Microsoft.AspNetCore.Server.HttpSys.HttpSysRequestTimingType.TlsHandshakeLeg2End = 7 -> Microsoft.AspNetCore.Server.HttpSys.HttpSysRequestTimingType +Microsoft.AspNetCore.Server.HttpSys.HttpSysRequestTimingType.TlsHandshakeLeg2Start = 6 -> Microsoft.AspNetCore.Server.HttpSys.HttpSysRequestTimingType Microsoft.AspNetCore.Server.HttpSys.IHttpSysRequestDelegationFeature Microsoft.AspNetCore.Server.HttpSys.IHttpSysRequestDelegationFeature.CanDelegate.get -> bool Microsoft.AspNetCore.Server.HttpSys.IHttpSysRequestDelegationFeature.DelegateRequest(Microsoft.AspNetCore.Server.HttpSys.DelegationRule! destination) -> void Microsoft.AspNetCore.Server.HttpSys.IHttpSysRequestInfoFeature Microsoft.AspNetCore.Server.HttpSys.IHttpSysRequestInfoFeature.RequestInfo.get -> System.Collections.Generic.IReadOnlyDictionary>! +Microsoft.AspNetCore.Server.HttpSys.IHttpSysRequestTimingFeature +Microsoft.AspNetCore.Server.HttpSys.IHttpSysRequestTimingFeature.Timestamps.get -> System.ReadOnlySpan +Microsoft.AspNetCore.Server.HttpSys.IHttpSysRequestTimingFeature.TryGetElapsedTime(Microsoft.AspNetCore.Server.HttpSys.HttpSysRequestTimingType startingTimestampType, Microsoft.AspNetCore.Server.HttpSys.HttpSysRequestTimingType endingTimestampType, out System.TimeSpan elapsed) -> bool +Microsoft.AspNetCore.Server.HttpSys.IHttpSysRequestTimingFeature.TryGetTimestamp(Microsoft.AspNetCore.Server.HttpSys.HttpSysRequestTimingType timestampType, out long timestamp) -> bool Microsoft.AspNetCore.Server.HttpSys.IServerDelegationFeature Microsoft.AspNetCore.Server.HttpSys.IServerDelegationFeature.CreateDelegationRule(string! queueName, string! urlPrefix) -> Microsoft.AspNetCore.Server.HttpSys.DelegationRule! Microsoft.AspNetCore.Server.HttpSys.RequestQueueMode diff --git a/src/Servers/HttpSys/src/PublicAPI.Unshipped.txt b/src/Servers/HttpSys/src/PublicAPI.Unshipped.txt index ffe1c5366991..7dc5c58110bf 100644 --- a/src/Servers/HttpSys/src/PublicAPI.Unshipped.txt +++ b/src/Servers/HttpSys/src/PublicAPI.Unshipped.txt @@ -1,38 +1 @@ #nullable enable -Microsoft.AspNetCore.Server.HttpSys.HttpSysOptions.EnableKernelResponseBuffering.get -> bool -Microsoft.AspNetCore.Server.HttpSys.HttpSysOptions.EnableKernelResponseBuffering.set -> void -Microsoft.AspNetCore.Server.HttpSys.HttpSysRequestTimingType -Microsoft.AspNetCore.Server.HttpSys.HttpSysRequestTimingType.ConnectionStart = 0 -> Microsoft.AspNetCore.Server.HttpSys.HttpSysRequestTimingType -Microsoft.AspNetCore.Server.HttpSys.HttpSysRequestTimingType.DataStart = 1 -> Microsoft.AspNetCore.Server.HttpSys.HttpSysRequestTimingType -Microsoft.AspNetCore.Server.HttpSys.HttpSysRequestTimingType.Http2HeaderDecodeEnd = 14 -> Microsoft.AspNetCore.Server.HttpSys.HttpSysRequestTimingType -Microsoft.AspNetCore.Server.HttpSys.HttpSysRequestTimingType.Http2HeaderDecodeStart = 13 -> Microsoft.AspNetCore.Server.HttpSys.HttpSysRequestTimingType -Microsoft.AspNetCore.Server.HttpSys.HttpSysRequestTimingType.Http2StreamStart = 12 -> Microsoft.AspNetCore.Server.HttpSys.HttpSysRequestTimingType -Microsoft.AspNetCore.Server.HttpSys.HttpSysRequestTimingType.Http3HeaderDecodeEnd = 29 -> Microsoft.AspNetCore.Server.HttpSys.HttpSysRequestTimingType -Microsoft.AspNetCore.Server.HttpSys.HttpSysRequestTimingType.Http3HeaderDecodeStart = 28 -> Microsoft.AspNetCore.Server.HttpSys.HttpSysRequestTimingType -Microsoft.AspNetCore.Server.HttpSys.HttpSysRequestTimingType.Http3StreamStart = 27 -> Microsoft.AspNetCore.Server.HttpSys.HttpSysRequestTimingType -Microsoft.AspNetCore.Server.HttpSys.HttpSysRequestTimingType.RequestDeliveredForDelegation = 23 -> Microsoft.AspNetCore.Server.HttpSys.HttpSysRequestTimingType -Microsoft.AspNetCore.Server.HttpSys.HttpSysRequestTimingType.RequestDeliveredForInspection = 20 -> Microsoft.AspNetCore.Server.HttpSys.HttpSysRequestTimingType -Microsoft.AspNetCore.Server.HttpSys.HttpSysRequestTimingType.RequestDeliveredForIO = 26 -> Microsoft.AspNetCore.Server.HttpSys.HttpSysRequestTimingType -Microsoft.AspNetCore.Server.HttpSys.HttpSysRequestTimingType.RequestHeaderParseEnd = 16 -> Microsoft.AspNetCore.Server.HttpSys.HttpSysRequestTimingType -Microsoft.AspNetCore.Server.HttpSys.HttpSysRequestTimingType.RequestHeaderParseStart = 15 -> Microsoft.AspNetCore.Server.HttpSys.HttpSysRequestTimingType -Microsoft.AspNetCore.Server.HttpSys.HttpSysRequestTimingType.RequestQueuedForDelegation = 22 -> Microsoft.AspNetCore.Server.HttpSys.HttpSysRequestTimingType -Microsoft.AspNetCore.Server.HttpSys.HttpSysRequestTimingType.RequestQueuedForInspection = 19 -> Microsoft.AspNetCore.Server.HttpSys.HttpSysRequestTimingType -Microsoft.AspNetCore.Server.HttpSys.HttpSysRequestTimingType.RequestQueuedForIO = 25 -> Microsoft.AspNetCore.Server.HttpSys.HttpSysRequestTimingType -Microsoft.AspNetCore.Server.HttpSys.HttpSysRequestTimingType.RequestReturnedAfterDelegation = 24 -> Microsoft.AspNetCore.Server.HttpSys.HttpSysRequestTimingType -Microsoft.AspNetCore.Server.HttpSys.HttpSysRequestTimingType.RequestReturnedAfterInspection = 21 -> Microsoft.AspNetCore.Server.HttpSys.HttpSysRequestTimingType -Microsoft.AspNetCore.Server.HttpSys.HttpSysRequestTimingType.RequestRoutingEnd = 18 -> Microsoft.AspNetCore.Server.HttpSys.HttpSysRequestTimingType -Microsoft.AspNetCore.Server.HttpSys.HttpSysRequestTimingType.RequestRoutingStart = 17 -> Microsoft.AspNetCore.Server.HttpSys.HttpSysRequestTimingType -Microsoft.AspNetCore.Server.HttpSys.HttpSysRequestTimingType.TlsAttributesQueryEnd = 9 -> Microsoft.AspNetCore.Server.HttpSys.HttpSysRequestTimingType -Microsoft.AspNetCore.Server.HttpSys.HttpSysRequestTimingType.TlsAttributesQueryStart = 8 -> Microsoft.AspNetCore.Server.HttpSys.HttpSysRequestTimingType -Microsoft.AspNetCore.Server.HttpSys.HttpSysRequestTimingType.TlsCertificateLoadEnd = 3 -> Microsoft.AspNetCore.Server.HttpSys.HttpSysRequestTimingType -Microsoft.AspNetCore.Server.HttpSys.HttpSysRequestTimingType.TlsCertificateLoadStart = 2 -> Microsoft.AspNetCore.Server.HttpSys.HttpSysRequestTimingType -Microsoft.AspNetCore.Server.HttpSys.HttpSysRequestTimingType.TlsClientCertQueryEnd = 11 -> Microsoft.AspNetCore.Server.HttpSys.HttpSysRequestTimingType -Microsoft.AspNetCore.Server.HttpSys.HttpSysRequestTimingType.TlsClientCertQueryStart = 10 -> Microsoft.AspNetCore.Server.HttpSys.HttpSysRequestTimingType -Microsoft.AspNetCore.Server.HttpSys.HttpSysRequestTimingType.TlsHandshakeLeg1End = 5 -> Microsoft.AspNetCore.Server.HttpSys.HttpSysRequestTimingType -Microsoft.AspNetCore.Server.HttpSys.HttpSysRequestTimingType.TlsHandshakeLeg1Start = 4 -> Microsoft.AspNetCore.Server.HttpSys.HttpSysRequestTimingType -Microsoft.AspNetCore.Server.HttpSys.HttpSysRequestTimingType.TlsHandshakeLeg2End = 7 -> Microsoft.AspNetCore.Server.HttpSys.HttpSysRequestTimingType -Microsoft.AspNetCore.Server.HttpSys.HttpSysRequestTimingType.TlsHandshakeLeg2Start = 6 -> Microsoft.AspNetCore.Server.HttpSys.HttpSysRequestTimingType -Microsoft.AspNetCore.Server.HttpSys.IHttpSysRequestTimingFeature -Microsoft.AspNetCore.Server.HttpSys.IHttpSysRequestTimingFeature.Timestamps.get -> System.ReadOnlySpan -Microsoft.AspNetCore.Server.HttpSys.IHttpSysRequestTimingFeature.TryGetElapsedTime(Microsoft.AspNetCore.Server.HttpSys.HttpSysRequestTimingType startingTimestampType, Microsoft.AspNetCore.Server.HttpSys.HttpSysRequestTimingType endingTimestampType, out System.TimeSpan elapsed) -> bool -Microsoft.AspNetCore.Server.HttpSys.IHttpSysRequestTimingFeature.TryGetTimestamp(Microsoft.AspNetCore.Server.HttpSys.HttpSysRequestTimingType timestampType, out long timestamp) -> bool diff --git a/src/Servers/IIS/IIS/src/PublicAPI.Shipped.txt b/src/Servers/IIS/IIS/src/PublicAPI.Shipped.txt index d67b16d9b637..dda914c01795 100644 --- a/src/Servers/IIS/IIS/src/PublicAPI.Shipped.txt +++ b/src/Servers/IIS/IIS/src/PublicAPI.Shipped.txt @@ -18,36 +18,18 @@ Microsoft.AspNetCore.Http.Features.IServerVariablesFeature.this[string! variable Microsoft.AspNetCore.Http.Features.IServerVariablesFeature.this[string! variableName].set -> void (forwarded, contained in Microsoft.AspNetCore.Http.Features) Microsoft.AspNetCore.Server.IIS.BadHttpRequestException Microsoft.AspNetCore.Server.IIS.BadHttpRequestException.StatusCode.get -> int -Microsoft.AspNetCore.Server.IIS.Core.IISServerAuthenticationHandler -Microsoft.AspNetCore.Server.IIS.Core.IISServerAuthenticationHandler.AuthenticateAsync() -> System.Threading.Tasks.Task! -Microsoft.AspNetCore.Server.IIS.Core.IISServerAuthenticationHandler.ChallengeAsync(Microsoft.AspNetCore.Authentication.AuthenticationProperties? properties) -> System.Threading.Tasks.Task! -Microsoft.AspNetCore.Server.IIS.Core.IISServerAuthenticationHandler.ForbidAsync(Microsoft.AspNetCore.Authentication.AuthenticationProperties? properties) -> System.Threading.Tasks.Task! -Microsoft.AspNetCore.Server.IIS.Core.IISServerAuthenticationHandler.IISServerAuthenticationHandler() -> void -Microsoft.AspNetCore.Server.IIS.Core.IISServerAuthenticationHandler.InitializeAsync(Microsoft.AspNetCore.Authentication.AuthenticationScheme! scheme, Microsoft.AspNetCore.Http.HttpContext! context) -> System.Threading.Tasks.Task! -Microsoft.AspNetCore.Server.IIS.Core.ThrowingWasUpgradedWriteOnlyStream -Microsoft.AspNetCore.Server.IIS.Core.ThrowingWasUpgradedWriteOnlyStream.ThrowingWasUpgradedWriteOnlyStream() -> void -Microsoft.AspNetCore.Server.IIS.Core.WriteOnlyStream -Microsoft.AspNetCore.Server.IIS.Core.WriteOnlyStream.WriteOnlyStream() -> void Microsoft.AspNetCore.Server.IIS.HttpContextExtensions +Microsoft.AspNetCore.Server.IIS.IIISEnvironmentFeature +Microsoft.AspNetCore.Server.IIS.IIISEnvironmentFeature.AppConfigPath.get -> string! +Microsoft.AspNetCore.Server.IIS.IIISEnvironmentFeature.ApplicationId.get -> string! +Microsoft.AspNetCore.Server.IIS.IIISEnvironmentFeature.ApplicationPhysicalPath.get -> string! +Microsoft.AspNetCore.Server.IIS.IIISEnvironmentFeature.ApplicationVirtualPath.get -> string! +Microsoft.AspNetCore.Server.IIS.IIISEnvironmentFeature.AppPoolConfigFile.get -> string! +Microsoft.AspNetCore.Server.IIS.IIISEnvironmentFeature.AppPoolId.get -> string! +Microsoft.AspNetCore.Server.IIS.IIISEnvironmentFeature.IISVersion.get -> System.Version! +Microsoft.AspNetCore.Server.IIS.IIISEnvironmentFeature.SiteId.get -> uint +Microsoft.AspNetCore.Server.IIS.IIISEnvironmentFeature.SiteName.get -> string! Microsoft.AspNetCore.Server.IIS.IISServerDefaults Microsoft.AspNetCore.Server.IIS.IISServerDefaults.IISServerDefaults() -> void -override Microsoft.AspNetCore.Server.IIS.Core.ThrowingWasUpgradedWriteOnlyStream.Flush() -> void -override Microsoft.AspNetCore.Server.IIS.Core.ThrowingWasUpgradedWriteOnlyStream.Seek(long offset, System.IO.SeekOrigin origin) -> long -override Microsoft.AspNetCore.Server.IIS.Core.ThrowingWasUpgradedWriteOnlyStream.SetLength(long value) -> void -override Microsoft.AspNetCore.Server.IIS.Core.ThrowingWasUpgradedWriteOnlyStream.Write(byte[]! buffer, int offset, int count) -> void -override Microsoft.AspNetCore.Server.IIS.Core.ThrowingWasUpgradedWriteOnlyStream.WriteAsync(byte[]! buffer, int offset, int count, System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.Task! -override Microsoft.AspNetCore.Server.IIS.Core.WriteOnlyStream.CanRead.get -> bool -override Microsoft.AspNetCore.Server.IIS.Core.WriteOnlyStream.CanSeek.get -> bool -override Microsoft.AspNetCore.Server.IIS.Core.WriteOnlyStream.CanWrite.get -> bool -override Microsoft.AspNetCore.Server.IIS.Core.WriteOnlyStream.Length.get -> long -override Microsoft.AspNetCore.Server.IIS.Core.WriteOnlyStream.Position.get -> long -override Microsoft.AspNetCore.Server.IIS.Core.WriteOnlyStream.Position.set -> void -override Microsoft.AspNetCore.Server.IIS.Core.WriteOnlyStream.Read(byte[]! buffer, int offset, int count) -> int -override Microsoft.AspNetCore.Server.IIS.Core.WriteOnlyStream.ReadAsync(byte[]! buffer, int offset, int count, System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.Task! -override Microsoft.AspNetCore.Server.IIS.Core.WriteOnlyStream.ReadAsync(System.Memory buffer, System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.ValueTask -override Microsoft.AspNetCore.Server.IIS.Core.WriteOnlyStream.ReadTimeout.get -> int -override Microsoft.AspNetCore.Server.IIS.Core.WriteOnlyStream.ReadTimeout.set -> void -override Microsoft.AspNetCore.Server.IIS.Core.WriteOnlyStream.Seek(long offset, System.IO.SeekOrigin origin) -> long -override Microsoft.AspNetCore.Server.IIS.Core.WriteOnlyStream.SetLength(long value) -> void static Microsoft.AspNetCore.Hosting.WebHostBuilderIISExtensions.UseIIS(this Microsoft.AspNetCore.Hosting.IWebHostBuilder! hostBuilder) -> Microsoft.AspNetCore.Hosting.IWebHostBuilder! static Microsoft.AspNetCore.Server.IIS.HttpContextExtensions.GetIISServerVariable(this Microsoft.AspNetCore.Http.HttpContext! context, string! variableName) -> string? diff --git a/src/Servers/IIS/IIS/src/PublicAPI.Unshipped.txt b/src/Servers/IIS/IIS/src/PublicAPI.Unshipped.txt index 76ef88049f41..7dc5c58110bf 100644 --- a/src/Servers/IIS/IIS/src/PublicAPI.Unshipped.txt +++ b/src/Servers/IIS/IIS/src/PublicAPI.Unshipped.txt @@ -1,39 +1 @@ #nullable enable -*REMOVED*override Microsoft.AspNetCore.Server.IIS.Core.WriteOnlyStream.ReadAsync(System.Memory buffer, System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.ValueTask -*REMOVED*Microsoft.AspNetCore.Server.IIS.Core.IISServerAuthenticationHandler -*REMOVED*Microsoft.AspNetCore.Server.IIS.Core.IISServerAuthenticationHandler.AuthenticateAsync() -> System.Threading.Tasks.Task! -*REMOVED*Microsoft.AspNetCore.Server.IIS.Core.IISServerAuthenticationHandler.ChallengeAsync(Microsoft.AspNetCore.Authentication.AuthenticationProperties? properties) -> System.Threading.Tasks.Task! -*REMOVED*Microsoft.AspNetCore.Server.IIS.Core.IISServerAuthenticationHandler.ForbidAsync(Microsoft.AspNetCore.Authentication.AuthenticationProperties? properties) -> System.Threading.Tasks.Task! -*REMOVED*Microsoft.AspNetCore.Server.IIS.Core.IISServerAuthenticationHandler.IISServerAuthenticationHandler() -> void -*REMOVED*Microsoft.AspNetCore.Server.IIS.Core.IISServerAuthenticationHandler.InitializeAsync(Microsoft.AspNetCore.Authentication.AuthenticationScheme! scheme, Microsoft.AspNetCore.Http.HttpContext! context) -> System.Threading.Tasks.Task! -*REMOVED*Microsoft.AspNetCore.Server.IIS.Core.ThrowingWasUpgradedWriteOnlyStream -*REMOVED*Microsoft.AspNetCore.Server.IIS.Core.ThrowingWasUpgradedWriteOnlyStream.ThrowingWasUpgradedWriteOnlyStream() -> void -*REMOVED*Microsoft.AspNetCore.Server.IIS.Core.WriteOnlyStream -*REMOVED*Microsoft.AspNetCore.Server.IIS.Core.WriteOnlyStream.WriteOnlyStream() -> void -*REMOVED*override Microsoft.AspNetCore.Server.IIS.Core.ThrowingWasUpgradedWriteOnlyStream.Flush() -> void -*REMOVED*override Microsoft.AspNetCore.Server.IIS.Core.ThrowingWasUpgradedWriteOnlyStream.Seek(long offset, System.IO.SeekOrigin origin) -> long -*REMOVED*override Microsoft.AspNetCore.Server.IIS.Core.ThrowingWasUpgradedWriteOnlyStream.SetLength(long value) -> void -*REMOVED*override Microsoft.AspNetCore.Server.IIS.Core.ThrowingWasUpgradedWriteOnlyStream.Write(byte[]! buffer, int offset, int count) -> void -*REMOVED*override Microsoft.AspNetCore.Server.IIS.Core.ThrowingWasUpgradedWriteOnlyStream.WriteAsync(byte[]! buffer, int offset, int count, System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.Task! -*REMOVED*override Microsoft.AspNetCore.Server.IIS.Core.WriteOnlyStream.CanRead.get -> bool -*REMOVED*override Microsoft.AspNetCore.Server.IIS.Core.WriteOnlyStream.CanSeek.get -> bool -*REMOVED*override Microsoft.AspNetCore.Server.IIS.Core.WriteOnlyStream.CanWrite.get -> bool -*REMOVED*override Microsoft.AspNetCore.Server.IIS.Core.WriteOnlyStream.Length.get -> long -*REMOVED*override Microsoft.AspNetCore.Server.IIS.Core.WriteOnlyStream.Position.get -> long -*REMOVED*override Microsoft.AspNetCore.Server.IIS.Core.WriteOnlyStream.Position.set -> void -*REMOVED*override Microsoft.AspNetCore.Server.IIS.Core.WriteOnlyStream.Read(byte[]! buffer, int offset, int count) -> int -*REMOVED*override Microsoft.AspNetCore.Server.IIS.Core.WriteOnlyStream.ReadAsync(byte[]! buffer, int offset, int count, System.Threading.CancellationToken cancellationToken) -> System.Threading.Tasks.Task! -*REMOVED*override Microsoft.AspNetCore.Server.IIS.Core.WriteOnlyStream.ReadTimeout.get -> int -*REMOVED*override Microsoft.AspNetCore.Server.IIS.Core.WriteOnlyStream.ReadTimeout.set -> void -*REMOVED*override Microsoft.AspNetCore.Server.IIS.Core.WriteOnlyStream.Seek(long offset, System.IO.SeekOrigin origin) -> long -*REMOVED*override Microsoft.AspNetCore.Server.IIS.Core.WriteOnlyStream.SetLength(long value) -> void -Microsoft.AspNetCore.Server.IIS.IIISEnvironmentFeature -Microsoft.AspNetCore.Server.IIS.IIISEnvironmentFeature.AppConfigPath.get -> string! -Microsoft.AspNetCore.Server.IIS.IIISEnvironmentFeature.ApplicationId.get -> string! -Microsoft.AspNetCore.Server.IIS.IIISEnvironmentFeature.ApplicationPhysicalPath.get -> string! -Microsoft.AspNetCore.Server.IIS.IIISEnvironmentFeature.ApplicationVirtualPath.get -> string! -Microsoft.AspNetCore.Server.IIS.IIISEnvironmentFeature.AppPoolConfigFile.get -> string! -Microsoft.AspNetCore.Server.IIS.IIISEnvironmentFeature.AppPoolId.get -> string! -Microsoft.AspNetCore.Server.IIS.IIISEnvironmentFeature.IISVersion.get -> System.Version! -Microsoft.AspNetCore.Server.IIS.IIISEnvironmentFeature.SiteId.get -> uint -Microsoft.AspNetCore.Server.IIS.IIISEnvironmentFeature.SiteName.get -> string! diff --git a/src/Servers/Kestrel/Core/src/PublicAPI.Shipped.txt b/src/Servers/Kestrel/Core/src/PublicAPI.Shipped.txt index e4046841c2b0..9e7d3f10a3d6 100644 --- a/src/Servers/Kestrel/Core/src/PublicAPI.Shipped.txt +++ b/src/Servers/Kestrel/Core/src/PublicAPI.Shipped.txt @@ -18,6 +18,8 @@ Microsoft.AspNetCore.Server.Kestrel.Core.Features.IHttpMinRequestBodyDataRateFea Microsoft.AspNetCore.Server.Kestrel.Core.Features.IHttpMinResponseDataRateFeature Microsoft.AspNetCore.Server.Kestrel.Core.Features.IHttpMinResponseDataRateFeature.MinDataRate.get -> Microsoft.AspNetCore.Server.Kestrel.Core.MinDataRate? Microsoft.AspNetCore.Server.Kestrel.Core.Features.IHttpMinResponseDataRateFeature.MinDataRate.set -> void +Microsoft.AspNetCore.Server.Kestrel.Core.Features.ISslStreamFeature +Microsoft.AspNetCore.Server.Kestrel.Core.Features.ISslStreamFeature.SslStream.get -> System.Net.Security.SslStream! Microsoft.AspNetCore.Server.Kestrel.Core.Features.ITlsApplicationProtocolFeature Microsoft.AspNetCore.Server.Kestrel.Core.Features.ITlsApplicationProtocolFeature.ApplicationProtocol.get -> System.ReadOnlyMemory Microsoft.AspNetCore.Server.Kestrel.Core.Http2Limits @@ -136,6 +138,8 @@ Microsoft.AspNetCore.Server.Kestrel.Core.KestrelServerOptions.AddServerHeader.ge Microsoft.AspNetCore.Server.Kestrel.Core.KestrelServerOptions.AddServerHeader.set -> void Microsoft.AspNetCore.Server.Kestrel.Core.KestrelServerOptions.AllowAlternateSchemes.get -> bool Microsoft.AspNetCore.Server.Kestrel.Core.KestrelServerOptions.AllowAlternateSchemes.set -> void +Microsoft.AspNetCore.Server.Kestrel.Core.KestrelServerOptions.AllowHostHeaderOverride.get -> bool +Microsoft.AspNetCore.Server.Kestrel.Core.KestrelServerOptions.AllowHostHeaderOverride.set -> void Microsoft.AspNetCore.Server.Kestrel.Core.KestrelServerOptions.AllowResponseHeaderCompression.get -> bool Microsoft.AspNetCore.Server.Kestrel.Core.KestrelServerOptions.AllowResponseHeaderCompression.set -> void Microsoft.AspNetCore.Server.Kestrel.Core.KestrelServerOptions.AllowSynchronousIO.get -> bool @@ -167,6 +171,8 @@ Microsoft.AspNetCore.Server.Kestrel.Core.KestrelServerOptions.ListenHandle(ulong Microsoft.AspNetCore.Server.Kestrel.Core.KestrelServerOptions.ListenHandle(ulong handle, System.Action! configure) -> void Microsoft.AspNetCore.Server.Kestrel.Core.KestrelServerOptions.ListenLocalhost(int port) -> void Microsoft.AspNetCore.Server.Kestrel.Core.KestrelServerOptions.ListenLocalhost(int port, System.Action! configure) -> void +Microsoft.AspNetCore.Server.Kestrel.Core.KestrelServerOptions.ListenNamedPipe(string! pipeName) -> void +Microsoft.AspNetCore.Server.Kestrel.Core.KestrelServerOptions.ListenNamedPipe(string! pipeName, System.Action! configure) -> void Microsoft.AspNetCore.Server.Kestrel.Core.KestrelServerOptions.ListenUnixSocket(string! socketPath) -> void Microsoft.AspNetCore.Server.Kestrel.Core.KestrelServerOptions.ListenUnixSocket(string! socketPath, System.Action! configure) -> void Microsoft.AspNetCore.Server.Kestrel.Core.KestrelServerOptions.RequestHeaderEncodingSelector.get -> System.Func! @@ -182,6 +188,7 @@ Microsoft.AspNetCore.Server.Kestrel.Core.ListenOptions.EndPoint.get -> System.Ne Microsoft.AspNetCore.Server.Kestrel.Core.ListenOptions.FileHandle.get -> ulong Microsoft.AspNetCore.Server.Kestrel.Core.ListenOptions.IPEndPoint.get -> System.Net.IPEndPoint? Microsoft.AspNetCore.Server.Kestrel.Core.ListenOptions.KestrelServerOptions.get -> Microsoft.AspNetCore.Server.Kestrel.Core.KestrelServerOptions! +Microsoft.AspNetCore.Server.Kestrel.Core.ListenOptions.PipeName.get -> string? Microsoft.AspNetCore.Server.Kestrel.Core.ListenOptions.Protocols.get -> Microsoft.AspNetCore.Server.Kestrel.Core.HttpProtocols Microsoft.AspNetCore.Server.Kestrel.Core.ListenOptions.Protocols.set -> void Microsoft.AspNetCore.Server.Kestrel.Core.ListenOptions.SocketPath.get -> string? diff --git a/src/Servers/Kestrel/Core/src/PublicAPI.Unshipped.txt b/src/Servers/Kestrel/Core/src/PublicAPI.Unshipped.txt index b9a42177f4ef..7dc5c58110bf 100644 --- a/src/Servers/Kestrel/Core/src/PublicAPI.Unshipped.txt +++ b/src/Servers/Kestrel/Core/src/PublicAPI.Unshipped.txt @@ -1,8 +1 @@ #nullable enable -Microsoft.AspNetCore.Server.Kestrel.Core.Features.ISslStreamFeature -Microsoft.AspNetCore.Server.Kestrel.Core.Features.ISslStreamFeature.SslStream.get -> System.Net.Security.SslStream! -Microsoft.AspNetCore.Server.Kestrel.Core.KestrelServerOptions.AllowHostHeaderOverride.get -> bool -Microsoft.AspNetCore.Server.Kestrel.Core.KestrelServerOptions.AllowHostHeaderOverride.set -> void -Microsoft.AspNetCore.Server.Kestrel.Core.KestrelServerOptions.ListenNamedPipe(string! pipeName) -> void -Microsoft.AspNetCore.Server.Kestrel.Core.KestrelServerOptions.ListenNamedPipe(string! pipeName, System.Action! configure) -> void -Microsoft.AspNetCore.Server.Kestrel.Core.ListenOptions.PipeName.get -> string? \ No newline at end of file diff --git a/src/Servers/Kestrel/Kestrel/src/PublicAPI.Shipped.txt b/src/Servers/Kestrel/Kestrel/src/PublicAPI.Shipped.txt index 35c33bce44ec..1958eedc7b28 100644 --- a/src/Servers/Kestrel/Kestrel/src/PublicAPI.Shipped.txt +++ b/src/Servers/Kestrel/Kestrel/src/PublicAPI.Shipped.txt @@ -5,3 +5,5 @@ static Microsoft.AspNetCore.Hosting.WebHostBuilderKestrelExtensions.ConfigureKes static Microsoft.AspNetCore.Hosting.WebHostBuilderKestrelExtensions.UseKestrel(this Microsoft.AspNetCore.Hosting.IWebHostBuilder! hostBuilder) -> Microsoft.AspNetCore.Hosting.IWebHostBuilder! static Microsoft.AspNetCore.Hosting.WebHostBuilderKestrelExtensions.UseKestrel(this Microsoft.AspNetCore.Hosting.IWebHostBuilder! hostBuilder, System.Action! configureOptions) -> Microsoft.AspNetCore.Hosting.IWebHostBuilder! static Microsoft.AspNetCore.Hosting.WebHostBuilderKestrelExtensions.UseKestrel(this Microsoft.AspNetCore.Hosting.IWebHostBuilder! hostBuilder, System.Action! options) -> Microsoft.AspNetCore.Hosting.IWebHostBuilder! +static Microsoft.AspNetCore.Hosting.WebHostBuilderKestrelExtensions.UseKestrelCore(this Microsoft.AspNetCore.Hosting.IWebHostBuilder! hostBuilder) -> Microsoft.AspNetCore.Hosting.IWebHostBuilder! +static Microsoft.AspNetCore.Hosting.WebHostBuilderKestrelExtensions.UseKestrelHttpsConfiguration(this Microsoft.AspNetCore.Hosting.IWebHostBuilder! hostBuilder) -> Microsoft.AspNetCore.Hosting.IWebHostBuilder! diff --git a/src/Servers/Kestrel/Kestrel/src/PublicAPI.Unshipped.txt b/src/Servers/Kestrel/Kestrel/src/PublicAPI.Unshipped.txt index 1b0f75d6addc..7dc5c58110bf 100644 --- a/src/Servers/Kestrel/Kestrel/src/PublicAPI.Unshipped.txt +++ b/src/Servers/Kestrel/Kestrel/src/PublicAPI.Unshipped.txt @@ -1,3 +1 @@ #nullable enable -static Microsoft.AspNetCore.Hosting.WebHostBuilderKestrelExtensions.UseKestrelHttpsConfiguration(this Microsoft.AspNetCore.Hosting.IWebHostBuilder! hostBuilder) -> Microsoft.AspNetCore.Hosting.IWebHostBuilder! -static Microsoft.AspNetCore.Hosting.WebHostBuilderKestrelExtensions.UseKestrelCore(this Microsoft.AspNetCore.Hosting.IWebHostBuilder! hostBuilder) -> Microsoft.AspNetCore.Hosting.IWebHostBuilder! diff --git a/src/Servers/Kestrel/Transport.NamedPipes/src/PublicAPI.Shipped.txt b/src/Servers/Kestrel/Transport.NamedPipes/src/PublicAPI.Shipped.txt index 7dc5c58110bf..95024ad9a9e5 100644 --- a/src/Servers/Kestrel/Transport.NamedPipes/src/PublicAPI.Shipped.txt +++ b/src/Servers/Kestrel/Transport.NamedPipes/src/PublicAPI.Shipped.txt @@ -1 +1,16 @@ #nullable enable +Microsoft.AspNetCore.Hosting.WebHostBuilderNamedPipeExtensions +Microsoft.AspNetCore.Server.Kestrel.Transport.NamedPipes.NamedPipeTransportOptions +Microsoft.AspNetCore.Server.Kestrel.Transport.NamedPipes.NamedPipeTransportOptions.CurrentUserOnly.get -> bool +Microsoft.AspNetCore.Server.Kestrel.Transport.NamedPipes.NamedPipeTransportOptions.CurrentUserOnly.set -> void +Microsoft.AspNetCore.Server.Kestrel.Transport.NamedPipes.NamedPipeTransportOptions.ListenerQueueCount.get -> int +Microsoft.AspNetCore.Server.Kestrel.Transport.NamedPipes.NamedPipeTransportOptions.ListenerQueueCount.set -> void +Microsoft.AspNetCore.Server.Kestrel.Transport.NamedPipes.NamedPipeTransportOptions.MaxReadBufferSize.get -> long? +Microsoft.AspNetCore.Server.Kestrel.Transport.NamedPipes.NamedPipeTransportOptions.MaxReadBufferSize.set -> void +Microsoft.AspNetCore.Server.Kestrel.Transport.NamedPipes.NamedPipeTransportOptions.MaxWriteBufferSize.get -> long? +Microsoft.AspNetCore.Server.Kestrel.Transport.NamedPipes.NamedPipeTransportOptions.MaxWriteBufferSize.set -> void +Microsoft.AspNetCore.Server.Kestrel.Transport.NamedPipes.NamedPipeTransportOptions.NamedPipeTransportOptions() -> void +Microsoft.AspNetCore.Server.Kestrel.Transport.NamedPipes.NamedPipeTransportOptions.PipeSecurity.get -> System.IO.Pipes.PipeSecurity? +Microsoft.AspNetCore.Server.Kestrel.Transport.NamedPipes.NamedPipeTransportOptions.PipeSecurity.set -> void +static Microsoft.AspNetCore.Hosting.WebHostBuilderNamedPipeExtensions.UseNamedPipes(this Microsoft.AspNetCore.Hosting.IWebHostBuilder! hostBuilder) -> Microsoft.AspNetCore.Hosting.IWebHostBuilder! +static Microsoft.AspNetCore.Hosting.WebHostBuilderNamedPipeExtensions.UseNamedPipes(this Microsoft.AspNetCore.Hosting.IWebHostBuilder! hostBuilder, System.Action! configureOptions) -> Microsoft.AspNetCore.Hosting.IWebHostBuilder! diff --git a/src/Servers/Kestrel/Transport.NamedPipes/src/PublicAPI.Unshipped.txt b/src/Servers/Kestrel/Transport.NamedPipes/src/PublicAPI.Unshipped.txt index 95024ad9a9e5..7dc5c58110bf 100644 --- a/src/Servers/Kestrel/Transport.NamedPipes/src/PublicAPI.Unshipped.txt +++ b/src/Servers/Kestrel/Transport.NamedPipes/src/PublicAPI.Unshipped.txt @@ -1,16 +1 @@ #nullable enable -Microsoft.AspNetCore.Hosting.WebHostBuilderNamedPipeExtensions -Microsoft.AspNetCore.Server.Kestrel.Transport.NamedPipes.NamedPipeTransportOptions -Microsoft.AspNetCore.Server.Kestrel.Transport.NamedPipes.NamedPipeTransportOptions.CurrentUserOnly.get -> bool -Microsoft.AspNetCore.Server.Kestrel.Transport.NamedPipes.NamedPipeTransportOptions.CurrentUserOnly.set -> void -Microsoft.AspNetCore.Server.Kestrel.Transport.NamedPipes.NamedPipeTransportOptions.ListenerQueueCount.get -> int -Microsoft.AspNetCore.Server.Kestrel.Transport.NamedPipes.NamedPipeTransportOptions.ListenerQueueCount.set -> void -Microsoft.AspNetCore.Server.Kestrel.Transport.NamedPipes.NamedPipeTransportOptions.MaxReadBufferSize.get -> long? -Microsoft.AspNetCore.Server.Kestrel.Transport.NamedPipes.NamedPipeTransportOptions.MaxReadBufferSize.set -> void -Microsoft.AspNetCore.Server.Kestrel.Transport.NamedPipes.NamedPipeTransportOptions.MaxWriteBufferSize.get -> long? -Microsoft.AspNetCore.Server.Kestrel.Transport.NamedPipes.NamedPipeTransportOptions.MaxWriteBufferSize.set -> void -Microsoft.AspNetCore.Server.Kestrel.Transport.NamedPipes.NamedPipeTransportOptions.NamedPipeTransportOptions() -> void -Microsoft.AspNetCore.Server.Kestrel.Transport.NamedPipes.NamedPipeTransportOptions.PipeSecurity.get -> System.IO.Pipes.PipeSecurity? -Microsoft.AspNetCore.Server.Kestrel.Transport.NamedPipes.NamedPipeTransportOptions.PipeSecurity.set -> void -static Microsoft.AspNetCore.Hosting.WebHostBuilderNamedPipeExtensions.UseNamedPipes(this Microsoft.AspNetCore.Hosting.IWebHostBuilder! hostBuilder) -> Microsoft.AspNetCore.Hosting.IWebHostBuilder! -static Microsoft.AspNetCore.Hosting.WebHostBuilderNamedPipeExtensions.UseNamedPipes(this Microsoft.AspNetCore.Hosting.IWebHostBuilder! hostBuilder, System.Action! configureOptions) -> Microsoft.AspNetCore.Hosting.IWebHostBuilder! diff --git a/src/Servers/Kestrel/Transport.Sockets/src/PublicAPI.Shipped.txt b/src/Servers/Kestrel/Transport.Sockets/src/PublicAPI.Shipped.txt index e74a40128397..a489abecc6b4 100644 --- a/src/Servers/Kestrel/Transport.Sockets/src/PublicAPI.Shipped.txt +++ b/src/Servers/Kestrel/Transport.Sockets/src/PublicAPI.Shipped.txt @@ -21,6 +21,7 @@ Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets.SocketConnectionFactoryOpt Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets.SocketConnectionFactoryOptions.WaitForDataBeforeAllocatingBuffer.set -> void Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets.SocketTransportFactory Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets.SocketTransportFactory.BindAsync(System.Net.EndPoint! endpoint, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.ValueTask +Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets.SocketTransportFactory.CanBind(System.Net.EndPoint! endpoint) -> bool Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets.SocketTransportFactory.SocketTransportFactory(Microsoft.Extensions.Options.IOptions! options, Microsoft.Extensions.Logging.ILoggerFactory! loggerFactory) -> void Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets.SocketTransportOptions Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets.SocketTransportOptions.Backlog.get -> int diff --git a/src/Servers/Kestrel/Transport.Sockets/src/PublicAPI.Unshipped.txt b/src/Servers/Kestrel/Transport.Sockets/src/PublicAPI.Unshipped.txt index 453928d35e79..7dc5c58110bf 100644 --- a/src/Servers/Kestrel/Transport.Sockets/src/PublicAPI.Unshipped.txt +++ b/src/Servers/Kestrel/Transport.Sockets/src/PublicAPI.Unshipped.txt @@ -1,2 +1 @@ #nullable enable -Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets.SocketTransportFactory.CanBind(System.Net.EndPoint! endpoint) -> bool diff --git a/src/SignalR/clients/csharp/Client.Core/src/PublicAPI.Shipped.txt b/src/SignalR/clients/csharp/Client.Core/src/PublicAPI.Shipped.txt index 51c6ed09b2e9..cc8f6a34e18f 100644 --- a/src/SignalR/clients/csharp/Client.Core/src/PublicAPI.Shipped.txt +++ b/src/SignalR/clients/csharp/Client.Core/src/PublicAPI.Shipped.txt @@ -20,6 +20,14 @@ Microsoft.AspNetCore.SignalR.Client.HubConnectionBuilder.HubConnectionBuilder() Microsoft.AspNetCore.SignalR.Client.HubConnectionBuilder.Services.get -> Microsoft.Extensions.DependencyInjection.IServiceCollection! Microsoft.AspNetCore.SignalR.Client.HubConnectionBuilderExtensions Microsoft.AspNetCore.SignalR.Client.HubConnectionExtensions +Microsoft.AspNetCore.SignalR.Client.HubConnectionOptions +Microsoft.AspNetCore.SignalR.Client.HubConnectionOptions.HubConnectionOptions() -> void +Microsoft.AspNetCore.SignalR.Client.HubConnectionOptions.KeepAliveInterval.get -> System.TimeSpan +Microsoft.AspNetCore.SignalR.Client.HubConnectionOptions.KeepAliveInterval.set -> void +Microsoft.AspNetCore.SignalR.Client.HubConnectionOptions.ServerTimeout.get -> System.TimeSpan +Microsoft.AspNetCore.SignalR.Client.HubConnectionOptions.ServerTimeout.set -> void +Microsoft.AspNetCore.SignalR.Client.HubConnectionOptions.StatefulReconnectBufferSize.get -> long +Microsoft.AspNetCore.SignalR.Client.HubConnectionOptions.StatefulReconnectBufferSize.set -> void Microsoft.AspNetCore.SignalR.Client.HubConnectionState Microsoft.AspNetCore.SignalR.Client.HubConnectionState.Connected = 1 -> Microsoft.AspNetCore.SignalR.Client.HubConnectionState Microsoft.AspNetCore.SignalR.Client.HubConnectionState.Connecting = 2 -> Microsoft.AspNetCore.SignalR.Client.HubConnectionState @@ -44,6 +52,8 @@ static Microsoft.AspNetCore.SignalR.Client.HubConnectionBuilderExtensions.Config static Microsoft.AspNetCore.SignalR.Client.HubConnectionBuilderExtensions.WithAutomaticReconnect(this Microsoft.AspNetCore.SignalR.Client.IHubConnectionBuilder! hubConnectionBuilder) -> Microsoft.AspNetCore.SignalR.Client.IHubConnectionBuilder! static Microsoft.AspNetCore.SignalR.Client.HubConnectionBuilderExtensions.WithAutomaticReconnect(this Microsoft.AspNetCore.SignalR.Client.IHubConnectionBuilder! hubConnectionBuilder, Microsoft.AspNetCore.SignalR.Client.IRetryPolicy! retryPolicy) -> Microsoft.AspNetCore.SignalR.Client.IHubConnectionBuilder! static Microsoft.AspNetCore.SignalR.Client.HubConnectionBuilderExtensions.WithAutomaticReconnect(this Microsoft.AspNetCore.SignalR.Client.IHubConnectionBuilder! hubConnectionBuilder, System.TimeSpan[]! reconnectDelays) -> Microsoft.AspNetCore.SignalR.Client.IHubConnectionBuilder! +static Microsoft.AspNetCore.SignalR.Client.HubConnectionBuilderExtensions.WithKeepAliveInterval(this Microsoft.AspNetCore.SignalR.Client.IHubConnectionBuilder! hubConnectionBuilder, System.TimeSpan interval) -> Microsoft.AspNetCore.SignalR.Client.IHubConnectionBuilder! +static Microsoft.AspNetCore.SignalR.Client.HubConnectionBuilderExtensions.WithServerTimeout(this Microsoft.AspNetCore.SignalR.Client.IHubConnectionBuilder! hubConnectionBuilder, System.TimeSpan timeout) -> Microsoft.AspNetCore.SignalR.Client.IHubConnectionBuilder! static Microsoft.AspNetCore.SignalR.Client.HubConnectionExtensions.InvokeAsync(this Microsoft.AspNetCore.SignalR.Client.HubConnection! hubConnection, string! methodName, object? arg1, object? arg2, object? arg3, object? arg4, object? arg5, object? arg6, object? arg7, object? arg8, object? arg9, object? arg10, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task! static Microsoft.AspNetCore.SignalR.Client.HubConnectionExtensions.InvokeAsync(this Microsoft.AspNetCore.SignalR.Client.HubConnection! hubConnection, string! methodName, object? arg1, object? arg2, object? arg3, object? arg4, object? arg5, object? arg6, object? arg7, object? arg8, object? arg9, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task! static Microsoft.AspNetCore.SignalR.Client.HubConnectionExtensions.InvokeAsync(this Microsoft.AspNetCore.SignalR.Client.HubConnection! hubConnection, string! methodName, object? arg1, object? arg2, object? arg3, object? arg4, object? arg5, object? arg6, object? arg7, object? arg8, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> System.Threading.Tasks.Task! diff --git a/src/SignalR/clients/csharp/Client.Core/src/PublicAPI.Unshipped.txt b/src/SignalR/clients/csharp/Client.Core/src/PublicAPI.Unshipped.txt index 384b96b3d828..7dc5c58110bf 100644 --- a/src/SignalR/clients/csharp/Client.Core/src/PublicAPI.Unshipped.txt +++ b/src/SignalR/clients/csharp/Client.Core/src/PublicAPI.Unshipped.txt @@ -1,11 +1 @@ #nullable enable -Microsoft.AspNetCore.SignalR.Client.HubConnectionOptions -Microsoft.AspNetCore.SignalR.Client.HubConnectionOptions.HubConnectionOptions() -> void -Microsoft.AspNetCore.SignalR.Client.HubConnectionOptions.KeepAliveInterval.get -> System.TimeSpan -Microsoft.AspNetCore.SignalR.Client.HubConnectionOptions.KeepAliveInterval.set -> void -Microsoft.AspNetCore.SignalR.Client.HubConnectionOptions.ServerTimeout.get -> System.TimeSpan -Microsoft.AspNetCore.SignalR.Client.HubConnectionOptions.ServerTimeout.set -> void -Microsoft.AspNetCore.SignalR.Client.HubConnectionOptions.StatefulReconnectBufferSize.get -> long -Microsoft.AspNetCore.SignalR.Client.HubConnectionOptions.StatefulReconnectBufferSize.set -> void -static Microsoft.AspNetCore.SignalR.Client.HubConnectionBuilderExtensions.WithKeepAliveInterval(this Microsoft.AspNetCore.SignalR.Client.IHubConnectionBuilder! hubConnectionBuilder, System.TimeSpan interval) -> Microsoft.AspNetCore.SignalR.Client.IHubConnectionBuilder! -static Microsoft.AspNetCore.SignalR.Client.HubConnectionBuilderExtensions.WithServerTimeout(this Microsoft.AspNetCore.SignalR.Client.IHubConnectionBuilder! hubConnectionBuilder, System.TimeSpan timeout) -> Microsoft.AspNetCore.SignalR.Client.IHubConnectionBuilder! diff --git a/src/SignalR/clients/csharp/Client/src/PublicAPI.Shipped.txt b/src/SignalR/clients/csharp/Client/src/PublicAPI.Shipped.txt index b5aa1442cbf6..d970b466ba16 100644 --- a/src/SignalR/clients/csharp/Client/src/PublicAPI.Shipped.txt +++ b/src/SignalR/clients/csharp/Client/src/PublicAPI.Shipped.txt @@ -1,5 +1,6 @@ #nullable enable Microsoft.AspNetCore.SignalR.Client.HubConnectionBuilderHttpExtensions +static Microsoft.AspNetCore.SignalR.Client.HubConnectionBuilderHttpExtensions.WithStatefulReconnect(this Microsoft.AspNetCore.SignalR.Client.IHubConnectionBuilder! hubConnectionBuilder) -> Microsoft.AspNetCore.SignalR.Client.IHubConnectionBuilder! static Microsoft.AspNetCore.SignalR.Client.HubConnectionBuilderHttpExtensions.WithUrl(this Microsoft.AspNetCore.SignalR.Client.IHubConnectionBuilder! hubConnectionBuilder, string! url) -> Microsoft.AspNetCore.SignalR.Client.IHubConnectionBuilder! static Microsoft.AspNetCore.SignalR.Client.HubConnectionBuilderHttpExtensions.WithUrl(this Microsoft.AspNetCore.SignalR.Client.IHubConnectionBuilder! hubConnectionBuilder, string! url, Microsoft.AspNetCore.Http.Connections.HttpTransportType transports) -> Microsoft.AspNetCore.SignalR.Client.IHubConnectionBuilder! static Microsoft.AspNetCore.SignalR.Client.HubConnectionBuilderHttpExtensions.WithUrl(this Microsoft.AspNetCore.SignalR.Client.IHubConnectionBuilder! hubConnectionBuilder, string! url, Microsoft.AspNetCore.Http.Connections.HttpTransportType transports, System.Action! configureHttpConnection) -> Microsoft.AspNetCore.SignalR.Client.IHubConnectionBuilder! diff --git a/src/SignalR/clients/csharp/Client/src/PublicAPI.Unshipped.txt b/src/SignalR/clients/csharp/Client/src/PublicAPI.Unshipped.txt index 01b2b1dae01e..7dc5c58110bf 100644 --- a/src/SignalR/clients/csharp/Client/src/PublicAPI.Unshipped.txt +++ b/src/SignalR/clients/csharp/Client/src/PublicAPI.Unshipped.txt @@ -1,2 +1 @@ #nullable enable -static Microsoft.AspNetCore.SignalR.Client.HubConnectionBuilderHttpExtensions.WithStatefulReconnect(this Microsoft.AspNetCore.SignalR.Client.IHubConnectionBuilder! hubConnectionBuilder) -> Microsoft.AspNetCore.SignalR.Client.IHubConnectionBuilder! diff --git a/src/SignalR/clients/csharp/Http.Connections.Client/src/PublicAPI.Shipped.txt b/src/SignalR/clients/csharp/Http.Connections.Client/src/PublicAPI.Shipped.txt index ecdc0f42e13f..79114e29fcc5 100644 --- a/src/SignalR/clients/csharp/Http.Connections.Client/src/PublicAPI.Shipped.txt +++ b/src/SignalR/clients/csharp/Http.Connections.Client/src/PublicAPI.Shipped.txt @@ -41,6 +41,8 @@ Microsoft.AspNetCore.Http.Connections.Client.HttpConnectionOptions.Url.get -> Sy Microsoft.AspNetCore.Http.Connections.Client.HttpConnectionOptions.Url.set -> void Microsoft.AspNetCore.Http.Connections.Client.HttpConnectionOptions.UseDefaultCredentials.get -> bool? Microsoft.AspNetCore.Http.Connections.Client.HttpConnectionOptions.UseDefaultCredentials.set -> void +Microsoft.AspNetCore.Http.Connections.Client.HttpConnectionOptions.UseStatefulReconnect.get -> bool +Microsoft.AspNetCore.Http.Connections.Client.HttpConnectionOptions.UseStatefulReconnect.set -> void Microsoft.AspNetCore.Http.Connections.Client.HttpConnectionOptions.WebSocketConfiguration.get -> System.Action? Microsoft.AspNetCore.Http.Connections.Client.HttpConnectionOptions.WebSocketConfiguration.set -> void Microsoft.AspNetCore.Http.Connections.Client.HttpConnectionOptions.WebSocketFactory.get -> System.Func>? diff --git a/src/SignalR/clients/csharp/Http.Connections.Client/src/PublicAPI.Unshipped.txt b/src/SignalR/clients/csharp/Http.Connections.Client/src/PublicAPI.Unshipped.txt index f81b5269348a..7dc5c58110bf 100644 --- a/src/SignalR/clients/csharp/Http.Connections.Client/src/PublicAPI.Unshipped.txt +++ b/src/SignalR/clients/csharp/Http.Connections.Client/src/PublicAPI.Unshipped.txt @@ -1,3 +1 @@ #nullable enable -Microsoft.AspNetCore.Http.Connections.Client.HttpConnectionOptions.UseStatefulReconnect.get -> bool -Microsoft.AspNetCore.Http.Connections.Client.HttpConnectionOptions.UseStatefulReconnect.set -> void diff --git a/src/SignalR/common/Http.Connections.Common/src/PublicAPI.Shipped.txt b/src/SignalR/common/Http.Connections.Common/src/PublicAPI.Shipped.txt index 62e8a0f8bbff..1aef1b03f02c 100644 --- a/src/SignalR/common/Http.Connections.Common/src/PublicAPI.Shipped.txt +++ b/src/SignalR/common/Http.Connections.Common/src/PublicAPI.Shipped.txt @@ -26,6 +26,8 @@ Microsoft.AspNetCore.Http.Connections.NegotiationResponse.Error.set -> void Microsoft.AspNetCore.Http.Connections.NegotiationResponse.NegotiationResponse() -> void Microsoft.AspNetCore.Http.Connections.NegotiationResponse.Url.get -> string? Microsoft.AspNetCore.Http.Connections.NegotiationResponse.Url.set -> void +Microsoft.AspNetCore.Http.Connections.NegotiationResponse.UseStatefulReconnect.get -> bool +Microsoft.AspNetCore.Http.Connections.NegotiationResponse.UseStatefulReconnect.set -> void Microsoft.AspNetCore.Http.Connections.NegotiationResponse.Version.get -> int Microsoft.AspNetCore.Http.Connections.NegotiationResponse.Version.set -> void static Microsoft.AspNetCore.Http.Connections.NegotiateProtocol.ParseResponse(System.ReadOnlySpan content) -> Microsoft.AspNetCore.Http.Connections.NegotiationResponse! diff --git a/src/SignalR/common/Http.Connections.Common/src/PublicAPI.Unshipped.txt b/src/SignalR/common/Http.Connections.Common/src/PublicAPI.Unshipped.txt index 89713177659f..7dc5c58110bf 100644 --- a/src/SignalR/common/Http.Connections.Common/src/PublicAPI.Unshipped.txt +++ b/src/SignalR/common/Http.Connections.Common/src/PublicAPI.Unshipped.txt @@ -1,3 +1 @@ #nullable enable -Microsoft.AspNetCore.Http.Connections.NegotiationResponse.UseStatefulReconnect.get -> bool -Microsoft.AspNetCore.Http.Connections.NegotiationResponse.UseStatefulReconnect.set -> void diff --git a/src/SignalR/common/Http.Connections/src/PublicAPI.Shipped.txt b/src/SignalR/common/Http.Connections/src/PublicAPI.Shipped.txt index 4790f140787c..966fe2362596 100644 --- a/src/SignalR/common/Http.Connections/src/PublicAPI.Shipped.txt +++ b/src/SignalR/common/Http.Connections/src/PublicAPI.Shipped.txt @@ -17,6 +17,8 @@ Microsoft.AspNetCore.Http.Connections.Features.IHttpTransportFeature Microsoft.AspNetCore.Http.Connections.Features.IHttpTransportFeature.TransportType.get -> Microsoft.AspNetCore.Http.Connections.HttpTransportType Microsoft.AspNetCore.Http.Connections.HttpConnectionContextExtensions Microsoft.AspNetCore.Http.Connections.HttpConnectionDispatcherOptions +Microsoft.AspNetCore.Http.Connections.HttpConnectionDispatcherOptions.AllowStatefulReconnects.get -> bool +Microsoft.AspNetCore.Http.Connections.HttpConnectionDispatcherOptions.AllowStatefulReconnects.set -> void Microsoft.AspNetCore.Http.Connections.HttpConnectionDispatcherOptions.ApplicationMaxBufferSize.get -> long Microsoft.AspNetCore.Http.Connections.HttpConnectionDispatcherOptions.ApplicationMaxBufferSize.set -> void Microsoft.AspNetCore.Http.Connections.HttpConnectionDispatcherOptions.AuthorizationData.get -> System.Collections.Generic.IList! diff --git a/src/SignalR/common/Http.Connections/src/PublicAPI.Unshipped.txt b/src/SignalR/common/Http.Connections/src/PublicAPI.Unshipped.txt index 1e5f0a8e0203..7dc5c58110bf 100644 --- a/src/SignalR/common/Http.Connections/src/PublicAPI.Unshipped.txt +++ b/src/SignalR/common/Http.Connections/src/PublicAPI.Unshipped.txt @@ -1,3 +1 @@ #nullable enable -Microsoft.AspNetCore.Http.Connections.HttpConnectionDispatcherOptions.AllowStatefulReconnects.get -> bool -Microsoft.AspNetCore.Http.Connections.HttpConnectionDispatcherOptions.AllowStatefulReconnects.set -> void diff --git a/src/SignalR/common/SignalR.Common/src/PublicAPI/net462/PublicAPI.Shipped.txt b/src/SignalR/common/SignalR.Common/src/PublicAPI/net462/PublicAPI.Shipped.txt index 39a3b7ab9bdc..185804d610fa 100644 --- a/src/SignalR/common/SignalR.Common/src/PublicAPI/net462/PublicAPI.Shipped.txt +++ b/src/SignalR/common/SignalR.Common/src/PublicAPI/net462/PublicAPI.Shipped.txt @@ -1,9 +1,11 @@ #nullable enable +const Microsoft.AspNetCore.SignalR.Protocol.HubProtocolConstants.AckMessageType = 8 -> int const Microsoft.AspNetCore.SignalR.Protocol.HubProtocolConstants.CancelInvocationMessageType = 5 -> int const Microsoft.AspNetCore.SignalR.Protocol.HubProtocolConstants.CloseMessageType = 7 -> int const Microsoft.AspNetCore.SignalR.Protocol.HubProtocolConstants.CompletionMessageType = 3 -> int const Microsoft.AspNetCore.SignalR.Protocol.HubProtocolConstants.InvocationMessageType = 1 -> int const Microsoft.AspNetCore.SignalR.Protocol.HubProtocolConstants.PingMessageType = 6 -> int +const Microsoft.AspNetCore.SignalR.Protocol.HubProtocolConstants.SequenceMessageType = 9 -> int const Microsoft.AspNetCore.SignalR.Protocol.HubProtocolConstants.StreamInvocationMessageType = 4 -> int const Microsoft.AspNetCore.SignalR.Protocol.HubProtocolConstants.StreamItemMessageType = 2 -> int Microsoft.AspNetCore.SignalR.HubException @@ -17,6 +19,10 @@ Microsoft.AspNetCore.SignalR.IInvocationBinder.GetReturnType(string! invocationI Microsoft.AspNetCore.SignalR.IInvocationBinder.GetStreamItemType(string! streamId) -> System.Type! Microsoft.AspNetCore.SignalR.ISignalRBuilder Microsoft.AspNetCore.SignalR.ISignalRBuilder.Services.get -> Microsoft.Extensions.DependencyInjection.IServiceCollection! +Microsoft.AspNetCore.SignalR.Protocol.AckMessage +Microsoft.AspNetCore.SignalR.Protocol.AckMessage.AckMessage(long sequenceId) -> void +Microsoft.AspNetCore.SignalR.Protocol.AckMessage.SequenceId.get -> long +Microsoft.AspNetCore.SignalR.Protocol.AckMessage.SequenceId.set -> void Microsoft.AspNetCore.SignalR.Protocol.CancelInvocationMessage Microsoft.AspNetCore.SignalR.Protocol.CancelInvocationMessage.CancelInvocationMessage(string! invocationId) -> void Microsoft.AspNetCore.SignalR.Protocol.CloseMessage @@ -72,6 +78,10 @@ Microsoft.AspNetCore.SignalR.Protocol.PingMessage Microsoft.AspNetCore.SignalR.Protocol.RawResult Microsoft.AspNetCore.SignalR.Protocol.RawResult.RawResult(System.Buffers.ReadOnlySequence rawBytes) -> void Microsoft.AspNetCore.SignalR.Protocol.RawResult.RawSerializedData.get -> System.Buffers.ReadOnlySequence +Microsoft.AspNetCore.SignalR.Protocol.SequenceMessage +Microsoft.AspNetCore.SignalR.Protocol.SequenceMessage.SequenceId.get -> long +Microsoft.AspNetCore.SignalR.Protocol.SequenceMessage.SequenceId.set -> void +Microsoft.AspNetCore.SignalR.Protocol.SequenceMessage.SequenceMessage(long sequenceId) -> void Microsoft.AspNetCore.SignalR.Protocol.StreamBindingFailureMessage Microsoft.AspNetCore.SignalR.Protocol.StreamBindingFailureMessage.BindingFailure.get -> System.Runtime.ExceptionServices.ExceptionDispatchInfo! Microsoft.AspNetCore.SignalR.Protocol.StreamBindingFailureMessage.Id.get -> string! diff --git a/src/SignalR/common/SignalR.Common/src/PublicAPI/net462/PublicAPI.Unshipped.txt b/src/SignalR/common/SignalR.Common/src/PublicAPI/net462/PublicAPI.Unshipped.txt index 29b26f2e7839..7dc5c58110bf 100644 --- a/src/SignalR/common/SignalR.Common/src/PublicAPI/net462/PublicAPI.Unshipped.txt +++ b/src/SignalR/common/SignalR.Common/src/PublicAPI/net462/PublicAPI.Unshipped.txt @@ -1,11 +1 @@ #nullable enable -const Microsoft.AspNetCore.SignalR.Protocol.HubProtocolConstants.AckMessageType = 8 -> int -const Microsoft.AspNetCore.SignalR.Protocol.HubProtocolConstants.SequenceMessageType = 9 -> int -Microsoft.AspNetCore.SignalR.Protocol.AckMessage -Microsoft.AspNetCore.SignalR.Protocol.AckMessage.AckMessage(long sequenceId) -> void -Microsoft.AspNetCore.SignalR.Protocol.AckMessage.SequenceId.get -> long -Microsoft.AspNetCore.SignalR.Protocol.AckMessage.SequenceId.set -> void -Microsoft.AspNetCore.SignalR.Protocol.SequenceMessage -Microsoft.AspNetCore.SignalR.Protocol.SequenceMessage.SequenceId.get -> long -Microsoft.AspNetCore.SignalR.Protocol.SequenceMessage.SequenceId.set -> void -Microsoft.AspNetCore.SignalR.Protocol.SequenceMessage.SequenceMessage(long sequenceId) -> void diff --git a/src/SignalR/common/SignalR.Common/src/PublicAPI/net8.0/PublicAPI.Shipped.txt b/src/SignalR/common/SignalR.Common/src/PublicAPI/net8.0/PublicAPI.Shipped.txt index 6df62484dc61..2ab6c0fd96c7 100644 --- a/src/SignalR/common/SignalR.Common/src/PublicAPI/net8.0/PublicAPI.Shipped.txt +++ b/src/SignalR/common/SignalR.Common/src/PublicAPI/net8.0/PublicAPI.Shipped.txt @@ -1,9 +1,11 @@ #nullable enable +const Microsoft.AspNetCore.SignalR.Protocol.HubProtocolConstants.AckMessageType = 8 -> int const Microsoft.AspNetCore.SignalR.Protocol.HubProtocolConstants.CancelInvocationMessageType = 5 -> int const Microsoft.AspNetCore.SignalR.Protocol.HubProtocolConstants.CloseMessageType = 7 -> int const Microsoft.AspNetCore.SignalR.Protocol.HubProtocolConstants.CompletionMessageType = 3 -> int const Microsoft.AspNetCore.SignalR.Protocol.HubProtocolConstants.InvocationMessageType = 1 -> int const Microsoft.AspNetCore.SignalR.Protocol.HubProtocolConstants.PingMessageType = 6 -> int +const Microsoft.AspNetCore.SignalR.Protocol.HubProtocolConstants.SequenceMessageType = 9 -> int const Microsoft.AspNetCore.SignalR.Protocol.HubProtocolConstants.StreamInvocationMessageType = 4 -> int const Microsoft.AspNetCore.SignalR.Protocol.HubProtocolConstants.StreamItemMessageType = 2 -> int Microsoft.AspNetCore.SignalR.HubException @@ -18,6 +20,10 @@ Microsoft.AspNetCore.SignalR.IInvocationBinder.GetStreamItemType(string! streamI Microsoft.AspNetCore.SignalR.IInvocationBinder.GetTarget(System.ReadOnlySpan utf8Bytes) -> string? Microsoft.AspNetCore.SignalR.ISignalRBuilder Microsoft.AspNetCore.SignalR.ISignalRBuilder.Services.get -> Microsoft.Extensions.DependencyInjection.IServiceCollection! +Microsoft.AspNetCore.SignalR.Protocol.AckMessage +Microsoft.AspNetCore.SignalR.Protocol.AckMessage.AckMessage(long sequenceId) -> void +Microsoft.AspNetCore.SignalR.Protocol.AckMessage.SequenceId.get -> long +Microsoft.AspNetCore.SignalR.Protocol.AckMessage.SequenceId.set -> void Microsoft.AspNetCore.SignalR.Protocol.CancelInvocationMessage Microsoft.AspNetCore.SignalR.Protocol.CancelInvocationMessage.CancelInvocationMessage(string! invocationId) -> void Microsoft.AspNetCore.SignalR.Protocol.CloseMessage @@ -73,6 +79,10 @@ Microsoft.AspNetCore.SignalR.Protocol.PingMessage Microsoft.AspNetCore.SignalR.Protocol.RawResult Microsoft.AspNetCore.SignalR.Protocol.RawResult.RawResult(System.Buffers.ReadOnlySequence rawBytes) -> void Microsoft.AspNetCore.SignalR.Protocol.RawResult.RawSerializedData.get -> System.Buffers.ReadOnlySequence +Microsoft.AspNetCore.SignalR.Protocol.SequenceMessage +Microsoft.AspNetCore.SignalR.Protocol.SequenceMessage.SequenceId.get -> long +Microsoft.AspNetCore.SignalR.Protocol.SequenceMessage.SequenceId.set -> void +Microsoft.AspNetCore.SignalR.Protocol.SequenceMessage.SequenceMessage(long sequenceId) -> void Microsoft.AspNetCore.SignalR.Protocol.StreamBindingFailureMessage Microsoft.AspNetCore.SignalR.Protocol.StreamBindingFailureMessage.BindingFailure.get -> System.Runtime.ExceptionServices.ExceptionDispatchInfo! Microsoft.AspNetCore.SignalR.Protocol.StreamBindingFailureMessage.Id.get -> string! diff --git a/src/SignalR/common/SignalR.Common/src/PublicAPI/net8.0/PublicAPI.Unshipped.txt b/src/SignalR/common/SignalR.Common/src/PublicAPI/net8.0/PublicAPI.Unshipped.txt index 29b26f2e7839..7dc5c58110bf 100644 --- a/src/SignalR/common/SignalR.Common/src/PublicAPI/net8.0/PublicAPI.Unshipped.txt +++ b/src/SignalR/common/SignalR.Common/src/PublicAPI/net8.0/PublicAPI.Unshipped.txt @@ -1,11 +1 @@ #nullable enable -const Microsoft.AspNetCore.SignalR.Protocol.HubProtocolConstants.AckMessageType = 8 -> int -const Microsoft.AspNetCore.SignalR.Protocol.HubProtocolConstants.SequenceMessageType = 9 -> int -Microsoft.AspNetCore.SignalR.Protocol.AckMessage -Microsoft.AspNetCore.SignalR.Protocol.AckMessage.AckMessage(long sequenceId) -> void -Microsoft.AspNetCore.SignalR.Protocol.AckMessage.SequenceId.get -> long -Microsoft.AspNetCore.SignalR.Protocol.AckMessage.SequenceId.set -> void -Microsoft.AspNetCore.SignalR.Protocol.SequenceMessage -Microsoft.AspNetCore.SignalR.Protocol.SequenceMessage.SequenceId.get -> long -Microsoft.AspNetCore.SignalR.Protocol.SequenceMessage.SequenceId.set -> void -Microsoft.AspNetCore.SignalR.Protocol.SequenceMessage.SequenceMessage(long sequenceId) -> void diff --git a/src/SignalR/common/SignalR.Common/src/PublicAPI/netstandard2.0/PublicAPI.Shipped.txt b/src/SignalR/common/SignalR.Common/src/PublicAPI/netstandard2.0/PublicAPI.Shipped.txt index 39a3b7ab9bdc..185804d610fa 100644 --- a/src/SignalR/common/SignalR.Common/src/PublicAPI/netstandard2.0/PublicAPI.Shipped.txt +++ b/src/SignalR/common/SignalR.Common/src/PublicAPI/netstandard2.0/PublicAPI.Shipped.txt @@ -1,9 +1,11 @@ #nullable enable +const Microsoft.AspNetCore.SignalR.Protocol.HubProtocolConstants.AckMessageType = 8 -> int const Microsoft.AspNetCore.SignalR.Protocol.HubProtocolConstants.CancelInvocationMessageType = 5 -> int const Microsoft.AspNetCore.SignalR.Protocol.HubProtocolConstants.CloseMessageType = 7 -> int const Microsoft.AspNetCore.SignalR.Protocol.HubProtocolConstants.CompletionMessageType = 3 -> int const Microsoft.AspNetCore.SignalR.Protocol.HubProtocolConstants.InvocationMessageType = 1 -> int const Microsoft.AspNetCore.SignalR.Protocol.HubProtocolConstants.PingMessageType = 6 -> int +const Microsoft.AspNetCore.SignalR.Protocol.HubProtocolConstants.SequenceMessageType = 9 -> int const Microsoft.AspNetCore.SignalR.Protocol.HubProtocolConstants.StreamInvocationMessageType = 4 -> int const Microsoft.AspNetCore.SignalR.Protocol.HubProtocolConstants.StreamItemMessageType = 2 -> int Microsoft.AspNetCore.SignalR.HubException @@ -17,6 +19,10 @@ Microsoft.AspNetCore.SignalR.IInvocationBinder.GetReturnType(string! invocationI Microsoft.AspNetCore.SignalR.IInvocationBinder.GetStreamItemType(string! streamId) -> System.Type! Microsoft.AspNetCore.SignalR.ISignalRBuilder Microsoft.AspNetCore.SignalR.ISignalRBuilder.Services.get -> Microsoft.Extensions.DependencyInjection.IServiceCollection! +Microsoft.AspNetCore.SignalR.Protocol.AckMessage +Microsoft.AspNetCore.SignalR.Protocol.AckMessage.AckMessage(long sequenceId) -> void +Microsoft.AspNetCore.SignalR.Protocol.AckMessage.SequenceId.get -> long +Microsoft.AspNetCore.SignalR.Protocol.AckMessage.SequenceId.set -> void Microsoft.AspNetCore.SignalR.Protocol.CancelInvocationMessage Microsoft.AspNetCore.SignalR.Protocol.CancelInvocationMessage.CancelInvocationMessage(string! invocationId) -> void Microsoft.AspNetCore.SignalR.Protocol.CloseMessage @@ -72,6 +78,10 @@ Microsoft.AspNetCore.SignalR.Protocol.PingMessage Microsoft.AspNetCore.SignalR.Protocol.RawResult Microsoft.AspNetCore.SignalR.Protocol.RawResult.RawResult(System.Buffers.ReadOnlySequence rawBytes) -> void Microsoft.AspNetCore.SignalR.Protocol.RawResult.RawSerializedData.get -> System.Buffers.ReadOnlySequence +Microsoft.AspNetCore.SignalR.Protocol.SequenceMessage +Microsoft.AspNetCore.SignalR.Protocol.SequenceMessage.SequenceId.get -> long +Microsoft.AspNetCore.SignalR.Protocol.SequenceMessage.SequenceId.set -> void +Microsoft.AspNetCore.SignalR.Protocol.SequenceMessage.SequenceMessage(long sequenceId) -> void Microsoft.AspNetCore.SignalR.Protocol.StreamBindingFailureMessage Microsoft.AspNetCore.SignalR.Protocol.StreamBindingFailureMessage.BindingFailure.get -> System.Runtime.ExceptionServices.ExceptionDispatchInfo! Microsoft.AspNetCore.SignalR.Protocol.StreamBindingFailureMessage.Id.get -> string! diff --git a/src/SignalR/common/SignalR.Common/src/PublicAPI/netstandard2.0/PublicAPI.Unshipped.txt b/src/SignalR/common/SignalR.Common/src/PublicAPI/netstandard2.0/PublicAPI.Unshipped.txt index 29b26f2e7839..7dc5c58110bf 100644 --- a/src/SignalR/common/SignalR.Common/src/PublicAPI/netstandard2.0/PublicAPI.Unshipped.txt +++ b/src/SignalR/common/SignalR.Common/src/PublicAPI/netstandard2.0/PublicAPI.Unshipped.txt @@ -1,11 +1 @@ #nullable enable -const Microsoft.AspNetCore.SignalR.Protocol.HubProtocolConstants.AckMessageType = 8 -> int -const Microsoft.AspNetCore.SignalR.Protocol.HubProtocolConstants.SequenceMessageType = 9 -> int -Microsoft.AspNetCore.SignalR.Protocol.AckMessage -Microsoft.AspNetCore.SignalR.Protocol.AckMessage.AckMessage(long sequenceId) -> void -Microsoft.AspNetCore.SignalR.Protocol.AckMessage.SequenceId.get -> long -Microsoft.AspNetCore.SignalR.Protocol.AckMessage.SequenceId.set -> void -Microsoft.AspNetCore.SignalR.Protocol.SequenceMessage -Microsoft.AspNetCore.SignalR.Protocol.SequenceMessage.SequenceId.get -> long -Microsoft.AspNetCore.SignalR.Protocol.SequenceMessage.SequenceId.set -> void -Microsoft.AspNetCore.SignalR.Protocol.SequenceMessage.SequenceMessage(long sequenceId) -> void diff --git a/src/SignalR/server/Core/src/PublicAPI.Shipped.txt b/src/SignalR/server/Core/src/PublicAPI.Shipped.txt index 091a6ec97192..a6f52a648b9d 100644 --- a/src/SignalR/server/Core/src/PublicAPI.Shipped.txt +++ b/src/SignalR/server/Core/src/PublicAPI.Shipped.txt @@ -127,6 +127,8 @@ Microsoft.AspNetCore.SignalR.HubOptions.MaximumParallelInvocationsPerClient.get Microsoft.AspNetCore.SignalR.HubOptions.MaximumParallelInvocationsPerClient.set -> void Microsoft.AspNetCore.SignalR.HubOptions.MaximumReceiveMessageSize.get -> long? Microsoft.AspNetCore.SignalR.HubOptions.MaximumReceiveMessageSize.set -> void +Microsoft.AspNetCore.SignalR.HubOptions.StatefulReconnectBufferSize.get -> long +Microsoft.AspNetCore.SignalR.HubOptions.StatefulReconnectBufferSize.set -> void Microsoft.AspNetCore.SignalR.HubOptions.StreamBufferCapacity.get -> int? Microsoft.AspNetCore.SignalR.HubOptions.StreamBufferCapacity.set -> void Microsoft.AspNetCore.SignalR.HubOptions.SupportedProtocols.get -> System.Collections.Generic.IList? diff --git a/src/SignalR/server/Core/src/PublicAPI.Unshipped.txt b/src/SignalR/server/Core/src/PublicAPI.Unshipped.txt index 400d0884220a..7dc5c58110bf 100644 --- a/src/SignalR/server/Core/src/PublicAPI.Unshipped.txt +++ b/src/SignalR/server/Core/src/PublicAPI.Unshipped.txt @@ -1,3 +1 @@ #nullable enable -Microsoft.AspNetCore.SignalR.HubOptions.StatefulReconnectBufferSize.get -> long -Microsoft.AspNetCore.SignalR.HubOptions.StatefulReconnectBufferSize.set -> void From 73f826b7ed68513ebb208743e3432344983a822e Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 13 Nov 2023 09:34:16 -0800 Subject: [PATCH 013/391] Fix construction of AsParameters with default constructor (#51637) Co-authored-by: Safia Abdalla --- .../gen/StaticRouteHandlerModel/EndpointParameter.cs | 2 +- .../RequestDelegateCreationTests.AsParameters.cs | 10 ++++++---- .../test/RequestDelegateGenerator/SharedTypes.cs | 8 ++++++++ 3 files changed, 15 insertions(+), 5 deletions(-) diff --git a/src/Http/Http.Extensions/gen/StaticRouteHandlerModel/EndpointParameter.cs b/src/Http/Http.Extensions/gen/StaticRouteHandlerModel/EndpointParameter.cs index 5bc8b8471113..39f597853c35 100644 --- a/src/Http/Http.Extensions/gen/StaticRouteHandlerModel/EndpointParameter.cs +++ b/src/Http/Http.Extensions/gen/StaticRouteHandlerModel/EndpointParameter.cs @@ -171,7 +171,7 @@ Type is not INamedTypeSymbol namedTypeSymbol || EndpointParameters = matchedProperties.Select(matchedParameter => new EndpointParameter(endpoint, matchedParameter.Property, matchedParameter.Parameter, wellKnownTypes)); if (isDefaultConstructor == true) { - var parameterList = string.Join(", ", EndpointParameters.Select(p => $"{p.LookupName} = {p.EmitHandlerArgument()}")); + var parameterList = string.Join(", ", EndpointParameters.Select(p => $"{p.SymbolName} = {p.EmitHandlerArgument()}")); AssigningCode = $"new {namedTypeSymbol.ToDisplayString(SymbolDisplayFormat.FullyQualifiedFormat)} {{ {parameterList} }}"; } else diff --git a/src/Http/Http.Extensions/test/RequestDelegateGenerator/RequestDelegateCreationTests.AsParameters.cs b/src/Http/Http.Extensions/test/RequestDelegateGenerator/RequestDelegateCreationTests.AsParameters.cs index f5cb67326975..618a8fede5cc 100644 --- a/src/Http/Http.Extensions/test/RequestDelegateGenerator/RequestDelegateCreationTests.AsParameters.cs +++ b/src/Http/Http.Extensions/test/RequestDelegateGenerator/RequestDelegateCreationTests.AsParameters.cs @@ -74,14 +74,16 @@ static void TestAction([AsParameters] ParameterListFromQuery args) Assert.Equal(originalAnotherCustomQueryParam, httpContext.Items["anotherCustomInput"]); } - [Fact] - public async Task RequestDelegatePopulatesFromHeaderParameter_FromParameterList() + [Theory] + [InlineData("ParameterListFromHeader")] + [InlineData("ParameterListFromHeaderWithProperties")] + public async Task RequestDelegatePopulatesFromHeaderParameter_FromParameterList(string type) { const string customHeaderName = "X-Custom-Header"; const int originalHeaderParam = 42; - var source = """ -static void TestAction([AsParameters] ParameterListFromHeader args) + var source = $$""" +static void TestAction([AsParameters] {{type}} args) { args.HttpContext.Items.Add("input", args.Value); } diff --git a/src/Http/Http.Extensions/test/RequestDelegateGenerator/SharedTypes.cs b/src/Http/Http.Extensions/test/RequestDelegateGenerator/SharedTypes.cs index 4946fb18f5ef..dda21878323f 100644 --- a/src/Http/Http.Extensions/test/RequestDelegateGenerator/SharedTypes.cs +++ b/src/Http/Http.Extensions/test/RequestDelegateGenerator/SharedTypes.cs @@ -698,6 +698,14 @@ public record ParameterListFromQuery(HttpContext HttpContext, [property: FromQuery(Name = "anotherCustomQuery")] int? AnotherCustomValue = null); public record ParameterListFromRoute(HttpContext HttpContext, int Value); public record ParameterListFromHeader(HttpContext HttpContext, [FromHeader(Name = "X-Custom-Header")] int Value); + +public record ParameterListFromHeaderWithProperties +{ + public HttpContext HttpContext { get; set; } + [FromHeader(Name = "X-Custom-Header")] + public int Value { get; set; } +} + public record ParametersListWithImplicitFromBody(HttpContext HttpContext, TodoStruct Todo); public record struct TodoStruct(int Id, string Name, bool IsComplete, TodoStatus Status) : ITodo; public record ParametersListWithExplicitFromBody(HttpContext HttpContext, [FromBody] Todo Todo); From 70207b08e29891cc6b8e0f0c8c838234afae0db0 Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" <42748379+dotnet-maestro[bot]@users.noreply.github.com> Date: Mon, 13 Nov 2023 18:54:33 +0000 Subject: [PATCH 014/391] [release/8.0] Update dependencies from dotnet/arcade (#51746) [release/8.0] Update dependencies from dotnet/arcade - Update NuGet.config --- eng/Version.Details.xml | 20 ++++++++++---------- eng/Versions.props | 6 +++--- global.json | 4 ++-- 3 files changed, 15 insertions(+), 15 deletions(-) diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index abefdce669ab..93e8a02ab2ee 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -376,26 +376,26 @@ https://github.com/dotnet/winforms abda8e3bfa78319363526b5a5f86863ec979940e - + https://github.com/dotnet/arcade - 39042b4048580366d35a7c1c4f4ce8fc0dbea4b4 + 080141bf0f9f15408bb6eb8e301b23bddf81d054 - + https://github.com/dotnet/arcade - 39042b4048580366d35a7c1c4f4ce8fc0dbea4b4 + 080141bf0f9f15408bb6eb8e301b23bddf81d054 - + https://github.com/dotnet/arcade - 39042b4048580366d35a7c1c4f4ce8fc0dbea4b4 + 080141bf0f9f15408bb6eb8e301b23bddf81d054 - + https://github.com/dotnet/arcade - 39042b4048580366d35a7c1c4f4ce8fc0dbea4b4 + 080141bf0f9f15408bb6eb8e301b23bddf81d054 - + https://github.com/dotnet/arcade - 39042b4048580366d35a7c1c4f4ce8fc0dbea4b4 + 080141bf0f9f15408bb6eb8e301b23bddf81d054 https://github.com/dotnet/extensions diff --git a/eng/Versions.props b/eng/Versions.props index 711e48b2472c..446d49517ba0 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -161,9 +161,9 @@ 6.2.4 6.2.4 - 8.0.0-beta.23516.4 - 8.0.0-beta.23516.4 - 8.0.0-beta.23516.4 + 8.0.0-beta.23556.5 + 8.0.0-beta.23556.5 + 8.0.0-beta.23556.5 8.0.0-alpha.1.23518.1 diff --git a/global.json b/global.json index b1b03835278a..09bd5d132e38 100644 --- a/global.json +++ b/global.json @@ -27,7 +27,7 @@ }, "msbuild-sdks": { "Yarn.MSBuild": "1.22.10", - "Microsoft.DotNet.Arcade.Sdk": "8.0.0-beta.23516.4", - "Microsoft.DotNet.Helix.Sdk": "8.0.0-beta.23516.4" + "Microsoft.DotNet.Arcade.Sdk": "8.0.0-beta.23556.5", + "Microsoft.DotNet.Helix.Sdk": "8.0.0-beta.23556.5" } } From dc85506bc7c14eaff94c5d77b9fc1b95508e7112 Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" <42748379+dotnet-maestro[bot]@users.noreply.github.com> Date: Mon, 13 Nov 2023 19:05:52 +0000 Subject: [PATCH 015/391] [release/8.0] Update dependencies from dotnet/source-build-reference-packages (#51911) [release/8.0] Update dependencies from dotnet/source-build-reference-packages - Update NuGet.config --- eng/Version.Details.xml | 4 ++-- eng/Versions.props | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 93e8a02ab2ee..8149de1824af 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -338,9 +338,9 @@ 9a1c3e1b7f0c8763d4c96e593961a61a72679a7b - + https://github.com/dotnet/source-build-reference-packages - b4fa7f2e1e65ef49881be2ab2df27624280a8c55 + fa4c0e8f53ef2541a23e519af4dfb86cb88e1bae diff --git a/eng/Versions.props b/eng/Versions.props index 446d49517ba0..cc2352b4055a 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -167,7 +167,7 @@ 8.0.0-alpha.1.23518.1 - 8.0.0-alpha.1.23516.4 + 8.0.0-alpha.1.23556.3 2.0.0-beta-23228-03 From 0fcdf9120d3aa3f6eee78afee8f857b50864aaed Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" <42748379+dotnet-maestro[bot]@users.noreply.github.com> Date: Mon, 13 Nov 2023 19:12:56 +0000 Subject: [PATCH 016/391] [release/8.0] Update dependencies from dotnet/extensions (#51641) [release/8.0] Update dependencies from dotnet/extensions - Update NuGet.config --- NuGet.config | 2 ++ eng/Version.Details.xml | 8 ++++---- eng/Versions.props | 4 ++-- 3 files changed, 8 insertions(+), 6 deletions(-) diff --git a/NuGet.config b/NuGet.config index cb5f021c3c4a..ea5a848d57df 100644 --- a/NuGet.config +++ b/NuGet.config @@ -3,6 +3,8 @@ + + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 8149de1824af..1842f16ad197 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -397,13 +397,13 @@ https://github.com/dotnet/arcade 080141bf0f9f15408bb6eb8e301b23bddf81d054 - + https://github.com/dotnet/extensions - a677e540fab8791daf2f6c21c64e804903ea31cd + 32b81ebb1d5ce0c3c0eb63c76d01310f31f9b8bc - + https://github.com/dotnet/extensions - a677e540fab8791daf2f6c21c64e804903ea31cd + 32b81ebb1d5ce0c3c0eb63c76d01310f31f9b8bc https://github.com/nuget/nuget.client diff --git a/eng/Versions.props b/eng/Versions.props index cc2352b4055a..0279521f4c74 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -139,8 +139,8 @@ 8.0.0 8.0.0 - 8.0.0-rtm.23523.7 - 8.0.0-rtm.23523.7 + 8.1.0-preview.23562.3 + 8.1.0-preview.23562.3 8.0.0 8.0.0 From 068e593ca27cf3d97efa404aa3f4381768c39dd8 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 13 Nov 2023 16:21:27 -0800 Subject: [PATCH 017/391] [release/8.0] Use working directory as relative directory for project file resolution (#51974) * Use working directory as relative directory for project file resolution * Address feedback and use primary constructors --------- Co-authored-by: Safia Abdalla --- .../src/Commands/CreateCommand.cs | 2 +- .../src/Helpers/DevJwtCliHelpers.cs | 2 +- .../dotnet-user-jwts/test/UserJwtsTests.cs | 125 +++++++++++------- 3 files changed, 76 insertions(+), 53 deletions(-) diff --git a/src/Tools/dotnet-user-jwts/src/Commands/CreateCommand.cs b/src/Tools/dotnet-user-jwts/src/Commands/CreateCommand.cs index 2b451704f432..904270ef6784 100644 --- a/src/Tools/dotnet-user-jwts/src/Commands/CreateCommand.cs +++ b/src/Tools/dotnet-user-jwts/src/Commands/CreateCommand.cs @@ -109,7 +109,7 @@ private static (JwtCreatorOptions, bool, string) ValidateArguments( CommandOption claimsOption) { var isValid = true; - var finder = new MsBuildProjectFinder(projectOption.Value() ?? Directory.GetCurrentDirectory()); + var finder = new MsBuildProjectFinder(Directory.GetCurrentDirectory()); var project = finder.FindMsBuildProject(projectOption.Value()); if (project == null) diff --git a/src/Tools/dotnet-user-jwts/src/Helpers/DevJwtCliHelpers.cs b/src/Tools/dotnet-user-jwts/src/Helpers/DevJwtCliHelpers.cs index dd1811a0db1f..27ada5ee2599 100644 --- a/src/Tools/dotnet-user-jwts/src/Helpers/DevJwtCliHelpers.cs +++ b/src/Tools/dotnet-user-jwts/src/Helpers/DevJwtCliHelpers.cs @@ -27,7 +27,7 @@ public static string GetOrSetUserSecretsId(string projectFilePath) public static bool GetProjectAndSecretsId(string projectPath, IReporter reporter, out string project, out string userSecretsId) { - var finder = new MsBuildProjectFinder(projectPath ?? Directory.GetCurrentDirectory()); + var finder = new MsBuildProjectFinder(Directory.GetCurrentDirectory()); project = finder.FindMsBuildProject(projectPath); userSecretsId = null; if (project == null) diff --git a/src/Tools/dotnet-user-jwts/test/UserJwtsTests.cs b/src/Tools/dotnet-user-jwts/test/UserJwtsTests.cs index 22789206b3fa..256d379b430f 100644 --- a/src/Tools/dotnet-user-jwts/test/UserJwtsTests.cs +++ b/src/Tools/dotnet-user-jwts/test/UserJwtsTests.cs @@ -12,23 +12,14 @@ namespace Microsoft.AspNetCore.Authentication.JwtBearer.Tools.Tests; -public class UserJwtsTests : IClassFixture +public class UserJwtsTests(UserJwtsTestFixture fixture, ITestOutputHelper output) : IClassFixture { - private readonly TestConsole _console; - private readonly UserJwtsTestFixture _fixture; - private readonly ITestOutputHelper _testOut; - - public UserJwtsTests(UserJwtsTestFixture fixture, ITestOutputHelper output) - { - _fixture = fixture; - _testOut = output; - _console = new TestConsole(output); - } + private readonly TestConsole _console = new TestConsole(output); [Fact] public void List_NoTokensForNewProject() { - var project = Path.Combine(_fixture.CreateProject(), "TestProject.csproj"); + var project = Path.Combine(fixture.CreateProject(), "TestProject.csproj"); var app = new Program(_console); app.Run(new[] { "list", "--project", project }); @@ -38,7 +29,7 @@ public void List_NoTokensForNewProject() [Fact] public void List_HandlesNoSecretsInProject() { - var project = Path.Combine(_fixture.CreateProject(false), "TestProject.csproj"); + var project = Path.Combine(fixture.CreateProject(false), "TestProject.csproj"); var app = new Program(_console); app.Run(new[] { "list", "--project", project }); @@ -49,7 +40,7 @@ public void List_HandlesNoSecretsInProject() [Fact] public void Create_CreatesSecretOnNoSecretInproject() { - var project = Path.Combine(_fixture.CreateProject(false), "TestProject.csproj"); + var project = Path.Combine(fixture.CreateProject(false), "TestProject.csproj"); var app = new Program(_console); app.Run(new[] { "create", "--project", project }); @@ -62,7 +53,7 @@ public void Create_CreatesSecretOnNoSecretInproject() [Fact] public void Create_WritesGeneratedTokenToDisk() { - var project = Path.Combine(_fixture.CreateProject(), "TestProject.csproj"); + var project = Path.Combine(fixture.CreateProject(), "TestProject.csproj"); var appsettings = Path.Combine(Path.GetDirectoryName(project), "appsettings.Development.json"); var app = new Program(_console); @@ -74,7 +65,7 @@ public void Create_WritesGeneratedTokenToDisk() [Fact] public void Create_CanModifyExistingScheme() { - var project = Path.Combine(_fixture.CreateProject(), "TestProject.csproj"); + var project = Path.Combine(fixture.CreateProject(), "TestProject.csproj"); var appsettings = Path.Combine(Path.GetDirectoryName(project), "appsettings.Development.json"); var app = new Program(_console); @@ -93,7 +84,7 @@ public void Create_CanModifyExistingScheme() [Fact] public void Print_ReturnsNothingForMissingToken() { - var project = Path.Combine(_fixture.CreateProject(), "TestProject.csproj"); + var project = Path.Combine(fixture.CreateProject(), "TestProject.csproj"); var app = new Program(_console); app.Run(new[] { "print", "invalid-id", "--project", project }); @@ -103,7 +94,7 @@ public void Print_ReturnsNothingForMissingToken() [Fact] public void List_ReturnsIdForGeneratedToken() { - var project = Path.Combine(_fixture.CreateProject(), "TestProject.csproj"); + var project = Path.Combine(fixture.CreateProject(), "TestProject.csproj"); var app = new Program(_console); app.Run(new[] { "create", "--project", project, "--scheme", "MyCustomScheme" }); @@ -117,7 +108,7 @@ public void List_ReturnsIdForGeneratedToken() public void List_ReturnsIdForGeneratedToken_WithJsonFormat() { var schemeName = "MyCustomScheme"; - var project = Path.Combine(_fixture.CreateProject(), "TestProject.csproj"); + var project = Path.Combine(fixture.CreateProject(), "TestProject.csproj"); var app = new Program(_console); app.Run(new[] { "create", "--project", project, "--scheme", schemeName }); @@ -138,7 +129,7 @@ public void List_ReturnsIdForGeneratedToken_WithJsonFormat() [Fact] public void List_ReturnsEmptyListWhenNoTokens_WithJsonFormat() { - var project = Path.Combine(_fixture.CreateProject(), "TestProject.csproj"); + var project = Path.Combine(fixture.CreateProject(), "TestProject.csproj"); var app = new Program(_console); app.Run(new[] { "list", "--project", project, "--output", "json" }); @@ -150,7 +141,7 @@ public void List_ReturnsEmptyListWhenNoTokens_WithJsonFormat() [Fact] public void Remove_RemovesGeneratedToken() { - var project = Path.Combine(_fixture.CreateProject(), "TestProject.csproj"); + var project = Path.Combine(fixture.CreateProject(), "TestProject.csproj"); var appsettings = Path.Combine(Path.GetDirectoryName(project), "appsettings.Development.json"); var app = new Program(_console); @@ -168,7 +159,7 @@ public void Remove_RemovesGeneratedToken() [Fact] public void Clear_RemovesGeneratedTokens() { - var project = Path.Combine(_fixture.CreateProject(), "TestProject.csproj"); + var project = Path.Combine(fixture.CreateProject(), "TestProject.csproj"); var appsettings = Path.Combine(Path.GetDirectoryName(project), "appsettings.Development.json"); var app = new Program(_console); @@ -186,7 +177,7 @@ public void Clear_RemovesGeneratedTokens() [Fact] public void Key_CanResetSigningKey() { - var project = Path.Combine(_fixture.CreateProject(), "TestProject.csproj"); + var project = Path.Combine(fixture.CreateProject(), "TestProject.csproj"); var app = new Program(_console); app.Run(new[] { "create", "--project", project }); @@ -200,9 +191,9 @@ public void Key_CanResetSigningKey() [Fact] public async Task Key_CanResetSigningKey_WhenSecretsHasPrepulatedData() { - var project = Path.Combine(_fixture.CreateProject(), "TestProject.csproj"); + var project = Path.Combine(fixture.CreateProject(), "TestProject.csproj"); var app = new Program(_console); - var secretsFilePath = PathHelper.GetSecretsPathFromSecretsId(_fixture.TestSecretsId); + var secretsFilePath = PathHelper.GetSecretsPathFromSecretsId(fixture.TestSecretsId); await File.WriteAllTextAsync(secretsFilePath, @"{ ""Foo"": { @@ -228,7 +219,7 @@ await File.WriteAllTextAsync(secretsFilePath, [Fact] public void Command_ShowsHelpForInvalidCommand() { - var project = Path.Combine(_fixture.CreateProject(), "TestProject.csproj"); + var project = Path.Combine(fixture.CreateProject(), "TestProject.csproj"); var app = new Program(_console); var exception = Record.Exception(() => app.Run(new[] { "not-real", "--project", project })); @@ -240,7 +231,7 @@ public void Command_ShowsHelpForInvalidCommand() [Fact] public void CreateCommand_ShowsBasicTokenDetails() { - var project = Path.Combine(_fixture.CreateProject(), "TestProject.csproj"); + var project = Path.Combine(fixture.CreateProject(), "TestProject.csproj"); var app = new Program(_console); app.Run(new[] { "create", "--project", project }); @@ -254,7 +245,7 @@ public void CreateCommand_ShowsBasicTokenDetails() [Fact] public void CreateCommand_SupportsODateTimeFormats() { - var project = Path.Combine(_fixture.CreateProject(), "TestProject.csproj"); + var project = Path.Combine(fixture.CreateProject(), "TestProject.csproj"); var app = new Program(_console); app.Run(new[] { "create", "--project", project, "--expires-on", DateTime.Now.AddDays(2).ToString("O") }); @@ -269,7 +260,7 @@ public void CreateCommand_SupportsODateTimeFormats() [Fact] public void CreateCommand_ShowsCustomizedTokenDetails() { - var project = Path.Combine(_fixture.CreateProject(), "TestProject.csproj"); + var project = Path.Combine(fixture.CreateProject(), "TestProject.csproj"); var app = new Program(_console); app.Run(new[] { "create", "--project", project, "--scheme", "customScheme" }); @@ -283,7 +274,7 @@ public void CreateCommand_ShowsCustomizedTokenDetails() [Fact] public void CreateCommand_DisplaysErrorForInvalidExpiresOnCombination() { - var project = Path.Combine(_fixture.CreateProject(), "TestProject.csproj"); + var project = Path.Combine(fixture.CreateProject(), "TestProject.csproj"); var app = new Program(_console); app.Run(new[] { "create", "--project", project, "--expires-on", DateTime.UtcNow.AddDays(2).ToString("O"), "--valid-for", "2h" }); @@ -296,7 +287,7 @@ public void CreateCommand_DisplaysErrorForInvalidExpiresOnCombination() [Fact] public void PrintCommand_ShowsBasicOptions() { - var project = Path.Combine(_fixture.CreateProject(), "TestProject.csproj"); + var project = Path.Combine(fixture.CreateProject(), "TestProject.csproj"); var app = new Program(_console); app.Run(new[] { "create", "--project", project }); @@ -315,7 +306,7 @@ public void PrintCommand_ShowsBasicOptions() [Fact] public void PrintCommand_ShowsBasicOptions_WithJsonFormat() { - var project = Path.Combine(_fixture.CreateProject(), "TestProject.csproj"); + var project = Path.Combine(fixture.CreateProject(), "TestProject.csproj"); var app = new Program(_console); app.Run(new[] { "create", "--project", project }); @@ -335,7 +326,7 @@ public void PrintCommand_ShowsBasicOptions_WithJsonFormat() [Fact] public void PrintCommand_ShowsCustomizedOptions() { - var project = Path.Combine(_fixture.CreateProject(), "TestProject.csproj"); + var project = Path.Combine(fixture.CreateProject(), "TestProject.csproj"); var app = new Program(_console); app.Run(new[] { "create", "--project", project, "--role", "foobar" }); @@ -356,7 +347,7 @@ public void PrintCommand_ShowsCustomizedOptions() [Fact] public void PrintComamnd_ShowsAllOptionsWithShowAll() { - var project = Path.Combine(_fixture.CreateProject(), "TestProject.csproj"); + var project = Path.Combine(fixture.CreateProject(), "TestProject.csproj"); var app = new Program(_console); app.Run(new[] { "create", "--project", project, "--claim", "foo=bar" }); @@ -378,7 +369,7 @@ public void PrintComamnd_ShowsAllOptionsWithShowAll() [Fact] public void Create_WithJsonOutput_CanBeSerialized() { - var project = Path.Combine(_fixture.CreateProject(), "TestProject.csproj"); + var project = Path.Combine(fixture.CreateProject(), "TestProject.csproj"); var app = new Program(_console); app.Run(new[] { "create", "--project", project, "--output", "json" }); @@ -393,7 +384,7 @@ public void Create_WithJsonOutput_CanBeSerialized() [Fact] public void Create_WithTokenOutput_ProducesSingleValue() { - var project = Path.Combine(_fixture.CreateProject(), "TestProject.csproj"); + var project = Path.Combine(fixture.CreateProject(), "TestProject.csproj"); var app = new Program(_console); app.Run(new[] { "create", "--project", project, "-o", "token" }); @@ -406,7 +397,7 @@ public void Create_WithTokenOutput_ProducesSingleValue() [Fact] public void Create_GracefullyHandles_NoLaunchSettings() { - var projectPath = _fixture.CreateProject(); + var projectPath = fixture.CreateProject(); var project = Path.Combine(projectPath, "TestProject.csproj"); var app = new Program(_console); var launchSettingsPath = Path.Combine(projectPath, "Properties", "launchSettings.json"); @@ -422,9 +413,9 @@ public void Create_GracefullyHandles_NoLaunchSettings() [Fact] public async Task Create_GracefullyHandles_PrepopulatedSecrets() { - var projectPath = _fixture.CreateProject(); + var projectPath = fixture.CreateProject(); var project = Path.Combine(projectPath, "TestProject.csproj"); - var secretsFilePath = PathHelper.GetSecretsPathFromSecretsId(_fixture.TestSecretsId); + var secretsFilePath = PathHelper.GetSecretsPathFromSecretsId(fixture.TestSecretsId); await File.WriteAllTextAsync(secretsFilePath, @"{ ""Foo"": { @@ -449,7 +440,7 @@ await File.WriteAllTextAsync(secretsFilePath, [Fact] public void Create_GetsAudiencesFromAllIISAndKestrel() { - var projectPath = _fixture.CreateProject(); + var projectPath = fixture.CreateProject(); var project = Path.Combine(projectPath, "TestProject.csproj"); var app = new Program(_console); @@ -466,9 +457,9 @@ public void Create_GetsAudiencesFromAllIISAndKestrel() [Fact] public async Task Create_SupportsSettingACustomIssuerAndScheme() { - var projectPath = _fixture.CreateProject(); + var projectPath = fixture.CreateProject(); var project = Path.Combine(projectPath, "TestProject.csproj"); - var secretsFilePath = PathHelper.GetSecretsPathFromSecretsId(_fixture.TestSecretsId); + var secretsFilePath = PathHelper.GetSecretsPathFromSecretsId(fixture.TestSecretsId); var app = new Program(_console); app.Run(new[] { "create", "--project", project, "--issuer", "test-issuer", "--scheme", "test-scheme" }); @@ -487,9 +478,9 @@ public async Task Create_SupportsSettingACustomIssuerAndScheme() [Fact] public async Task Create_SupportsSettingMutlipleIssuersAndSingleScheme() { - var projectPath = _fixture.CreateProject(); + var projectPath = fixture.CreateProject(); var project = Path.Combine(projectPath, "TestProject.csproj"); - var secretsFilePath = PathHelper.GetSecretsPathFromSecretsId(_fixture.TestSecretsId); + var secretsFilePath = PathHelper.GetSecretsPathFromSecretsId(fixture.TestSecretsId); var app = new Program(_console); app.Run(new[] { "create", "--project", project, "--issuer", "test-issuer", "--scheme", "test-scheme" }); @@ -509,9 +500,9 @@ public async Task Create_SupportsSettingMutlipleIssuersAndSingleScheme() [Fact] public async Task Create_SupportsSettingSingleIssuerAndMultipleSchemes() { - var projectPath = _fixture.CreateProject(); + var projectPath = fixture.CreateProject(); var project = Path.Combine(projectPath, "TestProject.csproj"); - var secretsFilePath = PathHelper.GetSecretsPathFromSecretsId(_fixture.TestSecretsId); + var secretsFilePath = PathHelper.GetSecretsPathFromSecretsId(fixture.TestSecretsId); var app = new Program(_console); app.Run(new[] { "create", "--project", project, "--issuer", "test-issuer", "--scheme", "test-scheme" }); @@ -534,7 +525,7 @@ public async Task Create_SupportsSettingSingleIssuerAndMultipleSchemes() [Fact] public void Key_CanPrintAndReset_BySchemeAndIssuer() { - var projectPath = _fixture.CreateProject(); + var projectPath = fixture.CreateProject(); var project = Path.Combine(projectPath, "TestProject.csproj"); var app = new Program(_console); @@ -560,7 +551,7 @@ public void Key_CanPrintAndReset_BySchemeAndIssuer() [Fact] public void Key_CanPrintWithBase64() { - var projectPath = _fixture.CreateProject(); + var projectPath = fixture.CreateProject(); var project = Path.Combine(projectPath, "TestProject.csproj"); var app = new Program(_console); @@ -585,7 +576,7 @@ public void Key_CanPrintWithBase64() [Fact] public void Create_CanHandleNoProjectOptionProvided() { - var projectPath = _fixture.CreateProject(); + var projectPath = fixture.CreateProject(); Directory.SetCurrentDirectory(projectPath); var app = new Program(_console); @@ -647,7 +638,7 @@ public void List_CanHandleNoProjectOptionProvided_WithNoProjects() [Fact] public void List_CanHandleProjectOptionAsPath() { - var projectPath = _fixture.CreateProject(); + var projectPath = fixture.CreateProject(); var project = Path.Combine(projectPath, "TestProject.csproj"); var app = new Program(_console); @@ -656,11 +647,43 @@ public void List_CanHandleProjectOptionAsPath() Assert.Contains(Path.Combine(projectPath, project), _console.GetOutput()); } + [Fact] + public void List_CanHandleRelativePathAsOption() + { + var projectPath = fixture.CreateProject(); + var tempPath = Path.GetTempPath(); + var targetPath = Path.GetRelativePath(tempPath, projectPath); + var project = Path.Combine(projectPath, "TestProject.csproj"); + Directory.SetCurrentDirectory(tempPath); + + var app = new Program(_console); + app.Run(new[] { "list", "--project", targetPath }); + + Assert.DoesNotContain($"The project file '{targetPath}' does not exist.", _console.GetOutput()); + Assert.Contains(Path.Combine(projectPath, project), _console.GetOutput()); + } + + [Fact] + public void Create_CanHandleRelativePathAsOption() + { + var projectPath = fixture.CreateProject(); + var tempPath = Path.GetTempPath(); + var targetPath = Path.GetRelativePath(tempPath, projectPath); + var project = Path.Combine(projectPath, "TestProject.csproj"); + Directory.SetCurrentDirectory(tempPath); + + var app = new Program(_console); + app.Run(new[] { "create", "--project", targetPath }); + + Assert.DoesNotContain($"The project file '{targetPath}' does not exist.", _console.GetOutput()); + Assert.Contains("New JWT saved", _console.GetOutput()); + } + [ConditionalFact] [OSSkipCondition(OperatingSystems.Windows, SkipReason = "UnixFileMode is not supported on Windows.")] public void Create_CreatesFileWithUserOnlyUnixFileMode() { - var project = Path.Combine(_fixture.CreateProject(), "TestProject.csproj"); + var project = Path.Combine(fixture.CreateProject(), "TestProject.csproj"); var app = new Program(_console); app.Run(new[] { "create", "--project", project }); From 19176d16f1bc936b00845a49c6f43c588b5268e6 Mon Sep 17 00:00:00 2001 From: wtgodbe Date: Tue, 14 Nov 2023 13:49:04 -0800 Subject: [PATCH 018/391] Update baseline, SDK --- eng/Baseline.Designer.props | 996 +++++++++++++++++++----------------- eng/Baseline.xml | 209 ++++---- eng/Versions.props | 6 +- global.json | 4 +- 4 files changed, 624 insertions(+), 591 deletions(-) diff --git a/eng/Baseline.Designer.props b/eng/Baseline.Designer.props index c9d8dfddfc08..9effde6fbf51 100644 --- a/eng/Baseline.Designer.props +++ b/eng/Baseline.Designer.props @@ -2,963 +2,993 @@ $(MSBuildAllProjects);$(MSBuildThisFileFullPath) - 7.0.0 + 8.0.0 - - - 7.0.0 + + + 8.0.0 - - - 7.0.0 + + + 8.0.0 - 7.0.0 - - - - 7.0.0 - - - - - - - - - - - - - - + 8.0.0 + - 7.0.0 + 8.0.0 - 7.0.0 + 8.0.0 - 7.0.0 + 8.0.0 - 7.0.0 + 8.0.0 - 7.0.0 + 8.0.0 - 7.0.0 + 8.0.0 - 7.0.0 + 8.0.0 - 7.0.0 + 8.0.0 - 7.0.0 - - - - 7.0.0 + 8.0.0 - 7.0.0 + 8.0.0 - 7.0.0 + 8.0.0 - 7.0.0 + 8.0.0 - 7.0.0 + 8.0.0 - - + + - 7.0.0 + 8.0.0 - 7.0.0 + 8.0.0 - 7.0.0 + 8.0.0 - - + + - 7.0.0 + 8.0.0 - 7.0.0 + 8.0.0 - - - - + + + + - 7.0.0 + 8.0.0 - - + + - 7.0.0 + 8.0.0 - 7.0.0 + 8.0.0 - - - + + + - 7.0.0 + 8.0.0 - - - + + + - - - - + + + + - - - + + + - 7.0.0 + 8.0.0 - - - + + + - 7.0.0 + 8.0.0 - 7.0.0 + 8.0.0 - - + + - 7.0.0 + 8.0.0 - - - + + + - 7.0.0 + 8.0.0 - 7.0.0 + 8.0.0 - - - + + + - - - 7.0.0 + + + 8.0.0 - - + + - 7.0.0 + 8.0.0 + + + + + + + 8.0.0 - - + + + + + + 8.0.0 + + + + - 7.0.0 + 8.0.0 - - - - - - + + + + + + + - 7.0.0 + 8.0.0 - - - - - - + + + + + + - 7.0.0 + 8.0.0 - - - + + + - 7.0.0 + 8.0.0 - 7.0.0 + 8.0.0 - 7.0.0 + 8.0.0 - - - - - - - + + + + + + + - 7.0.0 + 8.0.0 - - - - + + + + - 7.0.0 + 8.0.0 - - - + + + - - - + + + - - - + + + - - + + + - 7.0.0 + 8.0.0 - 7.0.0 + 8.0.0 - + - - + + - + - 7.0.0 + 8.0.0 - - - - - - + + + + + + - + - - - - - - - - + + + + + + + + - - - - - - + + + + + + - + - 7.0.0 + 8.0.0 - 7.0.0 + 8.0.0 - - - + + + - 7.0.0 + 8.0.0 - - + + - - - + + + - - + + - 7.0.0 + 8.0.0 - - + + - - - + + + - - + + - 7.0.0 + 8.0.0 + + + + + + + 8.0.0 - - + + + + - 7.0.0 + 8.0.0 - - - + + + - 7.0.0 + 8.0.0 - - + + - 7.0.0 + 8.0.0 - - - + + + - - - - + + + + - - - + + + - - - + + + - 7.0.0 + 8.0.0 - - + + - - + + - - + + - 7.0.0 + 8.0.0 - - - + + + - 7.0.0 + 8.0.0 - - - + + + - 7.0.0 + 8.0.0 - + - + - + - + - 7.0.0 + 8.0.0 - 7.0.0 + 8.0.0 - - + + - 7.0.0 + 8.0.0 - - - + + + - 7.0.0 + 8.0.0 - + - + - 7.0.0 + 8.0.0 - - - - + + + + - 7.0.0 + 8.0.0 - + + + + 8.0.0 + + + + + + - 7.0.0 + 8.0.0 - 7.0.0 + 8.0.0 - - + + - - - + + + - - + + - 7.0.0 + 8.0.0 - - - - - - - - - - - - + + + + + + + + + + + + + - - - - - + + + + + + - - - - - + + + + + + - 7.0.0 + 8.0.0 - - + + - + - - - + + + - - - + + + - 7.0.0 + 8.0.0 - + - - + + - + - 7.0.0 + 8.0.0 - - + + - - - + + + - - + + - 7.0.0 + 8.0.0 - - + + - - - + + + - - + + - 7.0.0 + 8.0.0 - - - - - + + + + + - 7.0.0 + 8.0.0 - - - - + + + + - 7.0.0 + 8.0.0 - 7.0.0 + 8.0.0 - - + + - 7.0.0 + 8.0.0 + + + + + + + 8.0.0 - - + + + - 7.0.0 + 8.0.0 - - + + - 7.0.0 + 8.0.0 - 7.0.0 + 8.0.0 - - - 7.0.0 + + + 8.0.0 - - - 7.0.0 - - - - 7.0.0 + + + 8.0.0 - 7.0.0 + 8.0.0 - 7.0.0 + 8.0.0 - 7.0.0 + 8.0.0 - - + + - + - - + + - - + + - 7.0.0 + 8.0.0 - - - - + + + + - - - - - + + + + + - - - - + + + + - 7.0.0 + 8.0.0 - - + + - - - + + + - - + + - 7.0.0 + 8.0.0 - - - - - - - - - - + + + + + + + + + + + - - - - + + + + + - 7.0.0 + 8.0.0 - 7.0.0 + 8.0.0 - - - - + + + + - 7.0.0 + 8.0.0 - 7.0.0 + 8.0.0 - - + + - + - 7.0.0 + 8.0.0 - - + + - 7.0.0 + 8.0.0 - - - + + + - - - - + + + + - - - + + + - 7.0.0 + 8.0.0 - - - + + + - - - - + + + + - - - + + + - 7.0.0 + 8.0.0 - - - - + + + + - - - - - + + + + + - - - - + + + + - 7.0.0 + 8.0.0 - 7.0.0 + 8.0.0 - - - - - + + + + + - - - - - - + + + + + + - - - - - + + + + + - 7.0.0 + 8.0.0 - 7.0.0 + 8.0.0 - - - + + + - - - + + + - - - + + + - 7.0.0 + 8.0.0 - 7.0.0 + 8.0.0 + + + + + + + 8.0.0 - - + + \ No newline at end of file diff --git a/eng/Baseline.xml b/eng/Baseline.xml index c015a9264686..b3315cab1b06 100644 --- a/eng/Baseline.xml +++ b/eng/Baseline.xml @@ -4,107 +4,110 @@ This file contains a list of all the packages and their versions which were rele Update this list when preparing for a new patch. --> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/eng/Versions.props b/eng/Versions.props index fd3441b6d70b..62103934cc81 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -11,7 +11,7 @@ 1 - false + true 7.0.3 diff --git a/global.json b/global.json index 09bd5d132e38..a38890c29b1b 100644 --- a/global.json +++ b/global.json @@ -1,9 +1,9 @@ { "sdk": { - "version": "8.0.100-rtm.23506.1" + "version": "8.0.100" }, "tools": { - "dotnet": "8.0.100-rtm.23506.1", + "dotnet": "8.0.100", "runtimes": { "dotnet/x86": [ "$(MicrosoftNETCoreBrowserDebugHostTransportVersion)" From 5fab70c6ded51021e654533cd35b49aa715836cd Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" <42748379+dotnet-maestro[bot]@users.noreply.github.com> Date: Wed, 15 Nov 2023 15:30:26 +0000 Subject: [PATCH 019/391] Update dependencies from https://github.com/dotnet/extensions build 20231114.2 (#52081) [release/8.0] Update dependencies from dotnet/extensions --- NuGet.config | 6 ++++-- eng/Version.Details.xml | 8 ++++---- eng/Versions.props | 4 ++-- 3 files changed, 10 insertions(+), 8 deletions(-) diff --git a/NuGet.config b/NuGet.config index f0cb7f2d63a9..931908fea507 100644 --- a/NuGet.config +++ b/NuGet.config @@ -6,10 +6,11 @@ - + + @@ -30,9 +31,10 @@ - + + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 2e39075fd449..5d0a181dedf1 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -397,13 +397,13 @@ https://github.com/dotnet/arcade 080141bf0f9f15408bb6eb8e301b23bddf81d054 - + https://github.com/dotnet/extensions - 32b81ebb1d5ce0c3c0eb63c76d01310f31f9b8bc + 2c15116ed1788cf4525e7c39d1972aa269f715d6 - + https://github.com/dotnet/extensions - 32b81ebb1d5ce0c3c0eb63c76d01310f31f9b8bc + 2c15116ed1788cf4525e7c39d1972aa269f715d6 https://github.com/nuget/nuget.client diff --git a/eng/Versions.props b/eng/Versions.props index 62103934cc81..bc85c01d68be 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -139,8 +139,8 @@ 8.0.0 8.0.0 - 8.1.0-preview.23562.3 - 8.1.0-preview.23562.3 + 8.1.0-preview.23564.2 + 8.1.0-preview.23564.2 8.0.0 8.0.0 From 1ded78bb3e1ed52c5dea8671ffe52a6e62525e96 Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" <42748379+dotnet-maestro[bot]@users.noreply.github.com> Date: Thu, 16 Nov 2023 15:19:42 +0000 Subject: [PATCH 020/391] Update dependencies from https://github.com/dotnet/extensions build 20231115.2 (#52124) [release/8.0] Update dependencies from dotnet/extensions --- NuGet.config | 6 ------ eng/Version.Details.xml | 8 ++++---- eng/Versions.props | 4 ++-- 3 files changed, 6 insertions(+), 12 deletions(-) diff --git a/NuGet.config b/NuGet.config index 931908fea507..1c2f27eb90ce 100644 --- a/NuGet.config +++ b/NuGet.config @@ -8,9 +8,6 @@ - - - @@ -33,9 +30,6 @@ - - - diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 5d0a181dedf1..8bfbfc496134 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -397,13 +397,13 @@ https://github.com/dotnet/arcade 080141bf0f9f15408bb6eb8e301b23bddf81d054 - + https://github.com/dotnet/extensions - 2c15116ed1788cf4525e7c39d1972aa269f715d6 + 0bf528b889cb1195e9a123d6794801fbc7b961e1 - + https://github.com/dotnet/extensions - 2c15116ed1788cf4525e7c39d1972aa269f715d6 + 0bf528b889cb1195e9a123d6794801fbc7b961e1 https://github.com/nuget/nuget.client diff --git a/eng/Versions.props b/eng/Versions.props index bc85c01d68be..6e2fdd470a8c 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -139,8 +139,8 @@ 8.0.0 8.0.0 - 8.1.0-preview.23564.2 - 8.1.0-preview.23564.2 + 8.1.0-preview.23565.2 + 8.1.0-preview.23565.2 8.0.0 8.0.0 From 68a197b546727b6b64b45e6d6ee48e2ba75ea2ec Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" <42748379+dotnet-maestro[bot]@users.noreply.github.com> Date: Thu, 16 Nov 2023 15:35:11 +0000 Subject: [PATCH 021/391] Update dependencies from https://github.com/dotnet/source-build-reference-packages build 20231115.1 (#52125) [release/8.0] Update dependencies from dotnet/source-build-reference-packages --- eng/Version.Details.xml | 4 ++-- eng/Versions.props | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 8bfbfc496134..a6ccd74edc8b 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -338,9 +338,9 @@ 9a1c3e1b7f0c8763d4c96e593961a61a72679a7b - + https://github.com/dotnet/source-build-reference-packages - fa4c0e8f53ef2541a23e519af4dfb86cb88e1bae + 95f83e27806330fec09edd96e06bba3acabe3f35 diff --git a/eng/Versions.props b/eng/Versions.props index 6e2fdd470a8c..0be8f3bab8ed 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -167,7 +167,7 @@ 8.0.0-alpha.1.23518.1 - 8.0.0-alpha.1.23556.3 + 8.0.0-alpha.1.23565.1 2.0.0-beta-23228-03 From 84f174f5c4db93427aae647e062ed25cf6409dd2 Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" <42748379+dotnet-maestro[bot]@users.noreply.github.com> Date: Thu, 16 Nov 2023 18:47:29 +0000 Subject: [PATCH 022/391] Update dependencies from https://github.com/dotnet/arcade build 20231114.4 (#52089) [release/8.0] Update dependencies from dotnet/arcade --- eng/Version.Details.xml | 20 ++++++++++---------- eng/Versions.props | 6 +++--- global.json | 4 ++-- 3 files changed, 15 insertions(+), 15 deletions(-) diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index a6ccd74edc8b..14ec886656bf 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -376,26 +376,26 @@ https://github.com/dotnet/winforms abda8e3bfa78319363526b5a5f86863ec979940e - + https://github.com/dotnet/arcade - 080141bf0f9f15408bb6eb8e301b23bddf81d054 + 0aaeafef60933f87b0b50350313bb2fd77defb5d - + https://github.com/dotnet/arcade - 080141bf0f9f15408bb6eb8e301b23bddf81d054 + 0aaeafef60933f87b0b50350313bb2fd77defb5d - + https://github.com/dotnet/arcade - 080141bf0f9f15408bb6eb8e301b23bddf81d054 + 0aaeafef60933f87b0b50350313bb2fd77defb5d - + https://github.com/dotnet/arcade - 080141bf0f9f15408bb6eb8e301b23bddf81d054 + 0aaeafef60933f87b0b50350313bb2fd77defb5d - + https://github.com/dotnet/arcade - 080141bf0f9f15408bb6eb8e301b23bddf81d054 + 0aaeafef60933f87b0b50350313bb2fd77defb5d https://github.com/dotnet/extensions diff --git a/eng/Versions.props b/eng/Versions.props index 0be8f3bab8ed..a64a8953c48d 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -161,9 +161,9 @@ 6.2.4 6.2.4 - 8.0.0-beta.23556.5 - 8.0.0-beta.23556.5 - 8.0.0-beta.23556.5 + 8.0.0-beta.23564.4 + 8.0.0-beta.23564.4 + 8.0.0-beta.23564.4 8.0.0-alpha.1.23518.1 diff --git a/global.json b/global.json index a38890c29b1b..87ae878e6e2e 100644 --- a/global.json +++ b/global.json @@ -27,7 +27,7 @@ }, "msbuild-sdks": { "Yarn.MSBuild": "1.22.10", - "Microsoft.DotNet.Arcade.Sdk": "8.0.0-beta.23556.5", - "Microsoft.DotNet.Helix.Sdk": "8.0.0-beta.23556.5" + "Microsoft.DotNet.Arcade.Sdk": "8.0.0-beta.23564.4", + "Microsoft.DotNet.Helix.Sdk": "8.0.0-beta.23564.4" } } From fa7f7ba6a9e94e86b483bb4598bd40f3f4220b63 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 16 Nov 2023 10:49:34 -0800 Subject: [PATCH 023/391] [release/8.0] Disambiguate type names by containing assembly in WellKnownTypes (#52130) * Disambiguate type names by containing assembly in WellKnownTypes * Address peer review * Update comment * More feedback --------- Co-authored-by: Safia Abdalla --- .../Infrastructure/WellKnownTypesTests.cs | 48 +++++++++++++++++++ src/Shared/RoslynUtils/WellKnownTypes.cs | 29 ++++++++++- 2 files changed, 76 insertions(+), 1 deletion(-) diff --git a/src/Framework/AspNetCoreAnalyzers/test/Infrastructure/WellKnownTypesTests.cs b/src/Framework/AspNetCoreAnalyzers/test/Infrastructure/WellKnownTypesTests.cs index 8c02e10752d8..7619fa767fd1 100644 --- a/src/Framework/AspNetCoreAnalyzers/test/Infrastructure/WellKnownTypesTests.cs +++ b/src/Framework/AspNetCoreAnalyzers/test/Infrastructure/WellKnownTypesTests.cs @@ -4,7 +4,9 @@ using System.Collections.Immutable; using Microsoft.AspNetCore.Analyzer.Testing; using Microsoft.AspNetCore.App.Analyzers.Infrastructure; +using Microsoft.AspNetCore.Razor.Hosting; using Microsoft.CodeAnalysis; +using Microsoft.CodeAnalysis.CSharp; using Microsoft.CodeAnalysis.Diagnostics; namespace Microsoft.AspNetCore.Analyzers.Infrastructure; @@ -34,6 +36,52 @@ static void Main() Assert.Collection(diagnostics, d => Assert.Equal("TEST001", d.Id)); } + [Theory] + [InlineData("ExternAssembly")] + [InlineData("SystemFoo")] + [InlineData("MicrosoftFoo")] + public async Task ResolveAllWellKnownTypes_ToleratesDuplicateTypeNames(string assemblyName) + { + // Arrange + var source = TestSource.Read(@" +class Program +{ + static void Main() + { + } +} +"); + var referenceSource = """ + namespace Microsoft.AspNetCore.Builder + { + public static class EndpointRouteBuilderExtensions + { + } + } + """; + // Act + var project = TestDiagnosticAnalyzerRunner.CreateProjectWithReferencesInBinDir(GetType().Assembly, source.Source); + Stream assemblyStream = GetInMemoryAssemblyStreamForCode(referenceSource, assemblyName, project.MetadataReferences.ToArray()); + project = project.AddMetadataReference(MetadataReference.CreateFromStream(assemblyStream)); + var diagnostics = await Runner.GetDiagnosticsAsync(project); + + // Assert + Assert.Collection(diagnostics, d => Assert.Equal("TEST001", d.Id)); + } + + private static Stream GetInMemoryAssemblyStreamForCode(string code, string assemblyName, params MetadataReference[] references) + { + var tree = CSharpSyntaxTree.ParseText(code); + var trees = ImmutableArray.Create(tree); + var options = new CSharpCompilationOptions(OutputKind.DynamicallyLinkedLibrary); + var compilation = CSharpCompilation.Create(assemblyName, trees).WithOptions(options); + compilation = compilation.AddReferences(references); + var stream = new MemoryStream(); + var emitResult = compilation.Emit(stream); + stream.Seek(0, SeekOrigin.Begin); + return stream; + } + [DiagnosticAnalyzer(LanguageNames.CSharp)] private class TestAnalyzer : DiagnosticAnalyzer { diff --git a/src/Shared/RoslynUtils/WellKnownTypes.cs b/src/Shared/RoslynUtils/WellKnownTypes.cs index 27e44a583cbc..a3a5cd3061b7 100644 --- a/src/Shared/RoslynUtils/WellKnownTypes.cs +++ b/src/Shared/RoslynUtils/WellKnownTypes.cs @@ -74,7 +74,7 @@ public INamedTypeSymbol Get(WellKnownTypeData.WellKnownType type) private INamedTypeSymbol GetAndCache(int index) { - var result = _compilation.GetTypeByMetadataName(WellKnownTypeData.WellKnownTypeNames[index]); + var result = GetTypeByMetadataNameInTargetAssembly(WellKnownTypeData.WellKnownTypeNames[index]); if (result == null) { throw new InvalidOperationException($"Failed to resolve well-known type '{WellKnownTypeData.WellKnownTypeNames[index]}'."); @@ -86,6 +86,33 @@ private INamedTypeSymbol GetAndCache(int index) return _lazyWellKnownTypes[index]!; } + // Filter for types within well-known (framework-owned) assemblies only. + private INamedTypeSymbol? GetTypeByMetadataNameInTargetAssembly(string metadataName) + { + var types = _compilation.GetTypesByMetadataName(metadataName); + if (types.Length == 0) + { + return null; + } + + if (types.Length == 1) + { + return types[0]; + } + + // Multiple types match the name. This is most likely caused by someone reusing the namespace + type name in their apps or libraries. + // Workaround this situation by prioritizing types in System and Microsoft assemblies. + foreach (var type in types) + { + if (type.ContainingAssembly.Identity.Name.StartsWith("System.", StringComparison.Ordinal) + || type.ContainingAssembly.Identity.Name.StartsWith("Microsoft.", StringComparison.Ordinal)) + { + return type; + } + } + return null; + } + public bool IsType(ITypeSymbol type, WellKnownTypeData.WellKnownType[] wellKnownTypes) => IsType(type, wellKnownTypes, out var _); public bool IsType(ITypeSymbol type, WellKnownTypeData.WellKnownType[] wellKnownTypes, [NotNullWhen(true)] out WellKnownTypeData.WellKnownType? match) From aaa15bdb92b1e1bb521abfc2129ecbbb39fc9797 Mon Sep 17 00:00:00 2001 From: Mackinnon Buck Date: Thu, 16 Nov 2023 10:53:32 -0800 Subject: [PATCH 024/391] Fix the '::after' selector (#52105) --- .../Web.JS/dist/Release/blazor.server.js | 2 +- src/Components/Web.JS/dist/Release/blazor.web.js | 2 +- .../Web.JS/dist/Release/blazor.webview.js | 2 +- .../Web.JS/src/Rendering/BrowserRenderer.ts | 15 +++++++++------ .../test/E2ETest/Tests/HeadModificationTest.cs | 13 +++++++++++++ 5 files changed, 25 insertions(+), 9 deletions(-) diff --git a/src/Components/Web.JS/dist/Release/blazor.server.js b/src/Components/Web.JS/dist/Release/blazor.server.js index 57cd39c34878..b59d1c4cf0f4 100644 --- a/src/Components/Web.JS/dist/Release/blazor.server.js +++ b/src/Components/Web.JS/dist/Release/blazor.server.js @@ -1 +1 @@ -(()=>{var e={778:()=>{},77:()=>{},203:()=>{},200:()=>{},628:()=>{},321:()=>{}},t={};function n(r){var o=t[r];if(void 0!==o)return o.exports;var s=t[r]={exports:{}};return e[r](s,s.exports,n),s.exports}n.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),(()=>{"use strict";var e,t,r;!function(e){const t=[],n="__jsObjectId",r="__dotNetObject",o="__byte[]",s="__dotNetStream",i="__jsStreamReferenceLength";let a,c;class l{constructor(e){this._jsObject=e,this._cachedFunctions=new Map}findFunction(e){const t=this._cachedFunctions.get(e);if(t)return t;let n,r=this._jsObject;if(e.split(".").forEach((t=>{if(!(t in r))throw new Error(`Could not find '${e}' ('${t}' was undefined).`);n=r,r=r[t]})),r instanceof Function)return r=r.bind(n),this._cachedFunctions.set(e,r),r;throw new Error(`The value '${e}' is not a function.`)}getWrappedObject(){return this._jsObject}}const h={0:new l(window)};h[0]._cachedFunctions.set("import",(e=>("string"==typeof e&&e.startsWith("./")&&(e=new URL(e.substr(2),document.baseURI).toString()),import(e))));let d,u=1;function p(e){t.push(e)}function f(e){if(e&&"object"==typeof e){h[u]=new l(e);const t={[n]:u};return u++,t}throw new Error(`Cannot create a JSObjectReference from the value '${e}'.`)}function g(e){let t=-1;if(e instanceof ArrayBuffer&&(e=new Uint8Array(e)),e instanceof Blob)t=e.size;else{if(!(e.buffer instanceof ArrayBuffer))throw new Error("Supplied value is not a typed array or blob.");if(void 0===e.byteLength)throw new Error(`Cannot create a JSStreamReference from the value '${e}' as it doesn't have a byteLength.`);t=e.byteLength}const r={[i]:t};try{const t=f(e);r[n]=t[n]}catch(t){throw new Error(`Cannot create a JSStreamReference from the value '${e}'.`)}return r}function m(e,n){c=e;const r=n?JSON.parse(n,((e,n)=>t.reduce(((t,n)=>n(e,t)),n))):null;return c=void 0,r}function v(){if(void 0===a)throw new Error("No call dispatcher has been set.");if(null===a)throw new Error("There are multiple .NET runtimes present, so a default dispatcher could not be resolved. Use DotNetObject to invoke .NET instance methods.");return a}e.attachDispatcher=function(e){const t=new y(e);return void 0===a?a=t:a&&(a=null),t},e.attachReviver=p,e.invokeMethod=function(e,t,...n){return v().invokeDotNetStaticMethod(e,t,...n)},e.invokeMethodAsync=function(e,t,...n){return v().invokeDotNetStaticMethodAsync(e,t,...n)},e.createJSObjectReference=f,e.createJSStreamReference=g,e.disposeJSObjectReference=function(e){const t=e&&e[n];"number"==typeof t&&b(t)},function(e){e[e.Default=0]="Default",e[e.JSObjectReference=1]="JSObjectReference",e[e.JSStreamReference=2]="JSStreamReference",e[e.JSVoidResult=3]="JSVoidResult"}(d=e.JSCallResultType||(e.JSCallResultType={}));class y{constructor(e){this._dotNetCallDispatcher=e,this._byteArraysToBeRevived=new Map,this._pendingDotNetToJSStreams=new Map,this._pendingAsyncCalls={},this._nextAsyncCallId=1}getDotNetCallDispatcher(){return this._dotNetCallDispatcher}invokeJSFromDotNet(e,t,n,r){const o=m(this,t),s=I(_(e,r)(...o||[]),n);return null==s?null:T(this,s)}beginInvokeJSFromDotNet(e,t,n,r,o){const s=new Promise((e=>{const r=m(this,n);e(_(t,o)(...r||[]))}));e&&s.then((t=>T(this,[e,!0,I(t,r)]))).then((t=>this._dotNetCallDispatcher.endInvokeJSFromDotNet(e,!0,t)),(t=>this._dotNetCallDispatcher.endInvokeJSFromDotNet(e,!1,JSON.stringify([e,!1,w(t)]))))}endInvokeDotNetFromJS(e,t,n){const r=t?m(this,n):new Error(n);this.completePendingCall(parseInt(e,10),t,r)}invokeDotNetStaticMethod(e,t,...n){return this.invokeDotNetMethod(e,t,null,n)}invokeDotNetStaticMethodAsync(e,t,...n){return this.invokeDotNetMethodAsync(e,t,null,n)}invokeDotNetMethod(e,t,n,r){if(this._dotNetCallDispatcher.invokeDotNetFromJS){const o=T(this,r),s=this._dotNetCallDispatcher.invokeDotNetFromJS(e,t,n,o);return s?m(this,s):null}throw new Error("The current dispatcher does not support synchronous calls from JS to .NET. Use invokeDotNetMethodAsync instead.")}invokeDotNetMethodAsync(e,t,n,r){if(e&&n)throw new Error(`For instance method calls, assemblyName should be null. Received '${e}'.`);const o=this._nextAsyncCallId++,s=new Promise(((e,t)=>{this._pendingAsyncCalls[o]={resolve:e,reject:t}}));try{const s=T(this,r);this._dotNetCallDispatcher.beginInvokeDotNetFromJS(o,e,t,n,s)}catch(e){this.completePendingCall(o,!1,e)}return s}receiveByteArray(e,t){this._byteArraysToBeRevived.set(e,t)}processByteArray(e){const t=this._byteArraysToBeRevived.get(e);return t?(this._byteArraysToBeRevived.delete(e),t):null}supplyDotNetStream(e,t){if(this._pendingDotNetToJSStreams.has(e)){const n=this._pendingDotNetToJSStreams.get(e);this._pendingDotNetToJSStreams.delete(e),n.resolve(t)}else{const n=new C;n.resolve(t),this._pendingDotNetToJSStreams.set(e,n)}}getDotNetStreamPromise(e){let t;if(this._pendingDotNetToJSStreams.has(e))t=this._pendingDotNetToJSStreams.get(e).streamPromise,this._pendingDotNetToJSStreams.delete(e);else{const n=new C;this._pendingDotNetToJSStreams.set(e,n),t=n.streamPromise}return t}completePendingCall(e,t,n){if(!this._pendingAsyncCalls.hasOwnProperty(e))throw new Error(`There is no pending async call with ID ${e}.`);const r=this._pendingAsyncCalls[e];delete this._pendingAsyncCalls[e],t?r.resolve(n):r.reject(n)}}function w(e){return e instanceof Error?`${e.message}\n${e.stack}`:e?e.toString():"null"}function _(e,t){const n=h[t];if(n)return n.findFunction(e);throw new Error(`JS object instance with ID ${t} does not exist (has it been disposed?).`)}function b(e){delete h[e]}e.findJSFunction=_,e.disposeJSObjectReferenceById=b;class S{constructor(e,t){this._id=e,this._callDispatcher=t}invokeMethod(e,...t){return this._callDispatcher.invokeDotNetMethod(null,e,this._id,t)}invokeMethodAsync(e,...t){return this._callDispatcher.invokeDotNetMethodAsync(null,e,this._id,t)}dispose(){this._callDispatcher.invokeDotNetMethodAsync(null,"__Dispose",this._id,null).catch((e=>console.error(e)))}serializeAsArg(){return{[r]:this._id}}}e.DotNetObject=S,p((function(e,t){if(t&&"object"==typeof t){if(t.hasOwnProperty(r))return new S(t[r],c);if(t.hasOwnProperty(n)){const e=t[n],r=h[e];if(r)return r.getWrappedObject();throw new Error(`JS object instance with Id '${e}' does not exist. It may have been disposed.`)}if(t.hasOwnProperty(o)){const e=t[o],n=c.processByteArray(e);if(void 0===n)throw new Error(`Byte array index '${e}' does not exist.`);return n}if(t.hasOwnProperty(s)){const e=t[s],n=c.getDotNetStreamPromise(e);return new E(n)}}return t}));class E{constructor(e){this._streamPromise=e}stream(){return this._streamPromise}async arrayBuffer(){return new Response(await this.stream()).arrayBuffer()}}class C{constructor(){this.streamPromise=new Promise(((e,t)=>{this.resolve=e,this.reject=t}))}}function I(e,t){switch(t){case d.Default:return e;case d.JSObjectReference:return f(e);case d.JSStreamReference:return g(e);case d.JSVoidResult:return null;default:throw new Error(`Invalid JS call result type '${t}'.`)}}let k=0;function T(e,t){k=0,c=e;const n=JSON.stringify(t,D);return c=void 0,n}function D(e,t){if(t instanceof S)return t.serializeAsArg();if(t instanceof Uint8Array){c.getDotNetCallDispatcher().sendByteArray(k,t);const e={[o]:k};return k++,e}return t}}(e||(e={})),function(e){e[e.prependFrame=1]="prependFrame",e[e.removeFrame=2]="removeFrame",e[e.setAttribute=3]="setAttribute",e[e.removeAttribute=4]="removeAttribute",e[e.updateText=5]="updateText",e[e.stepIn=6]="stepIn",e[e.stepOut=7]="stepOut",e[e.updateMarkup=8]="updateMarkup",e[e.permutationListEntry=9]="permutationListEntry",e[e.permutationListEnd=10]="permutationListEnd"}(t||(t={})),function(e){e[e.element=1]="element",e[e.text=2]="text",e[e.attribute=3]="attribute",e[e.component=4]="component",e[e.region=5]="region",e[e.elementReferenceCapture=6]="elementReferenceCapture",e[e.markup=8]="markup",e[e.namedEvent=10]="namedEvent"}(r||(r={}));class o{constructor(e,t){this.componentId=e,this.fieldValue=t}static fromEvent(e,t){const n=t.target;if(n instanceof Element){const t=function(e){return e instanceof HTMLInputElement?e.type&&"checkbox"===e.type.toLowerCase()?{value:e.checked}:{value:e.value}:e instanceof HTMLSelectElement||e instanceof HTMLTextAreaElement?{value:e.value}:null}(n);if(t)return new o(e,t.value)}return null}}const s=new Map,i=new Map,a=[];function c(e){return s.get(e)}function l(e){const t=s.get(e);return(null==t?void 0:t.browserEventName)||e}function h(e,t){e.forEach((e=>s.set(e,t)))}function d(e){const t=[];for(let n=0;ne.selected)).map((e=>e.value))}}{const e=function(e){return!!e&&"INPUT"===e.tagName&&"checkbox"===e.getAttribute("type")}(t);return{value:e?!!t.checked:t.value}}}}),h(["copy","cut","paste"],{createEventArgs:e=>({type:e.type})}),h(["drag","dragend","dragenter","dragleave","dragover","dragstart","drop"],{createEventArgs:e=>{return{...u(t=e),dataTransfer:t.dataTransfer?{dropEffect:t.dataTransfer.dropEffect,effectAllowed:t.dataTransfer.effectAllowed,files:Array.from(t.dataTransfer.files).map((e=>e.name)),items:Array.from(t.dataTransfer.items).map((e=>({kind:e.kind,type:e.type}))),types:t.dataTransfer.types}:null};var t}}),h(["focus","blur","focusin","focusout"],{createEventArgs:e=>({type:e.type})}),h(["keydown","keyup","keypress"],{createEventArgs:e=>{return{key:(t=e).key,code:t.code,location:t.location,repeat:t.repeat,ctrlKey:t.ctrlKey,shiftKey:t.shiftKey,altKey:t.altKey,metaKey:t.metaKey,type:t.type};var t}}),h(["contextmenu","click","mouseover","mouseout","mousemove","mousedown","mouseup","mouseleave","mouseenter","dblclick"],{createEventArgs:e=>u(e)}),h(["error"],{createEventArgs:e=>{return{message:(t=e).message,filename:t.filename,lineno:t.lineno,colno:t.colno,type:t.type};var t}}),h(["loadstart","timeout","abort","load","loadend","progress"],{createEventArgs:e=>{return{lengthComputable:(t=e).lengthComputable,loaded:t.loaded,total:t.total,type:t.type};var t}}),h(["touchcancel","touchend","touchmove","touchenter","touchleave","touchstart"],{createEventArgs:e=>{return{detail:(t=e).detail,touches:d(t.touches),targetTouches:d(t.targetTouches),changedTouches:d(t.changedTouches),ctrlKey:t.ctrlKey,shiftKey:t.shiftKey,altKey:t.altKey,metaKey:t.metaKey,type:t.type};var t}}),h(["gotpointercapture","lostpointercapture","pointercancel","pointerdown","pointerenter","pointerleave","pointermove","pointerout","pointerover","pointerup"],{createEventArgs:e=>{return{...u(t=e),pointerId:t.pointerId,width:t.width,height:t.height,pressure:t.pressure,tiltX:t.tiltX,tiltY:t.tiltY,pointerType:t.pointerType,isPrimary:t.isPrimary};var t}}),h(["wheel","mousewheel"],{createEventArgs:e=>{return{...u(t=e),deltaX:t.deltaX,deltaY:t.deltaY,deltaZ:t.deltaZ,deltaMode:t.deltaMode};var t}}),h(["cancel","close","toggle"],{createEventArgs:()=>({})});const p=["date","datetime-local","month","time","week"],f=new Map;let g,m,v=0;const y={async add(e,t,n){if(!n)throw new Error("initialParameters must be an object, even if empty.");const r="__bl-dynamic-root:"+(++v).toString();f.set(r,e);const o=await b().invokeMethodAsync("AddRootComponent",t,r),s=new _(o,m[t]);return await s.setParameters(n),s}};class w{invoke(e){return this._callback(e)}setCallback(t){this._selfJSObjectReference||(this._selfJSObjectReference=e.createJSObjectReference(this)),this._callback=t}getJSObjectReference(){return this._selfJSObjectReference}dispose(){this._selfJSObjectReference&&e.disposeJSObjectReference(this._selfJSObjectReference)}}class _{constructor(e,t){this._jsEventCallbackWrappers=new Map,this._componentId=e;for(const e of t)"eventcallback"===e.type&&this._jsEventCallbackWrappers.set(e.name.toLowerCase(),new w)}setParameters(e){const t={},n=Object.entries(e||{}),r=n.length;for(const[e,r]of n){const n=this._jsEventCallbackWrappers.get(e.toLowerCase());n&&r?(n.setCallback(r),t[e]=n.getJSObjectReference()):t[e]=r}return b().invokeMethodAsync("SetRootComponentParameters",this._componentId,r,t)}async dispose(){if(null!==this._componentId){await b().invokeMethodAsync("RemoveRootComponent",this._componentId),this._componentId=null;for(const e of this._jsEventCallbackWrappers.values())e.dispose()}}}function b(){if(!g)throw new Error("Dynamic root components have not been enabled in this application.");return g}const S=new Map,E=[],C=new Map;function I(t,n,r,o){var s,i;if(S.has(t))throw new Error(`Interop methods are already registered for renderer ${t}`);S.set(t,n),r&&o&&Object.keys(r).length>0&&function(t,n,r){if(g)throw new Error("Dynamic root components have already been enabled.");g=t,m=n;for(const[t,o]of Object.entries(r)){const r=e.findJSFunction(t,0);for(const e of o)r(e,n[e])}}(T(t),r,o),null===(i=null===(s=C.get(t))||void 0===s?void 0:s[0])||void 0===i||i.call(s),function(e){for(const t of E)t(e)}(t)}function k(e,t,n){return D(e,t.eventHandlerId,(()=>T(e).invokeMethodAsync("DispatchEventAsync",t,n)))}function T(e){const t=S.get(e);if(!t)throw new Error(`No interop methods are registered for renderer ${e}`);return t}let D=(e,t,n)=>n();const R=M(["abort","blur","cancel","canplay","canplaythrough","change","close","cuechange","durationchange","emptied","ended","error","focus","load","loadeddata","loadedmetadata","loadend","loadstart","mouseenter","mouseleave","pointerenter","pointerleave","pause","play","playing","progress","ratechange","reset","scroll","seeked","seeking","stalled","submit","suspend","timeupdate","toggle","unload","volumechange","waiting","DOMNodeInsertedIntoDocument","DOMNodeRemovedFromDocument"]),x={submit:!0},A=M(["click","dblclick","mousedown","mousemove","mouseup"]);class P{constructor(e){this.browserRendererId=e,this.afterClickCallbacks=[];const t=++P.nextEventDelegatorId;this.eventsCollectionKey=`_blazorEvents_${t}`,this.eventInfoStore=new N(this.onGlobalEvent.bind(this))}setListener(e,t,n,r){const o=this.getEventHandlerInfosForElement(e,!0),s=o.getHandler(t);if(s)this.eventInfoStore.update(s.eventHandlerId,n);else{const s={element:e,eventName:t,eventHandlerId:n,renderingComponentId:r};this.eventInfoStore.add(s),o.setHandler(t,s)}}getHandler(e){return this.eventInfoStore.get(e)}removeListener(e){const t=this.eventInfoStore.remove(e);if(t){const e=t.element,n=this.getEventHandlerInfosForElement(e,!1);n&&n.removeHandler(t.eventName)}}notifyAfterClick(e){this.afterClickCallbacks.push(e),this.eventInfoStore.addGlobalListener("click")}setStopPropagation(e,t,n){this.getEventHandlerInfosForElement(e,!0).stopPropagation(t,n)}setPreventDefault(e,t,n){this.getEventHandlerInfosForElement(e,!0).preventDefault(t,n)}onGlobalEvent(e){if(!(e.target instanceof Element))return;this.dispatchGlobalEventToAllElements(e.type,e);const t=(n=e.type,i.get(n));var n;t&&t.forEach((t=>this.dispatchGlobalEventToAllElements(t,e))),"click"===e.type&&this.afterClickCallbacks.forEach((t=>t(e)))}dispatchGlobalEventToAllElements(e,t){const n=t.composedPath();let r=n.shift(),s=null,i=!1;const a=Object.prototype.hasOwnProperty.call(R,e);let l=!1;for(;r;){const u=r,p=this.getEventHandlerInfosForElement(u,!1);if(p){const n=p.getHandler(e);if(n&&(h=u,d=t.type,!((h instanceof HTMLButtonElement||h instanceof HTMLInputElement||h instanceof HTMLTextAreaElement||h instanceof HTMLSelectElement)&&Object.prototype.hasOwnProperty.call(A,d)&&h.disabled))){if(!i){const n=c(e);s=(null==n?void 0:n.createEventArgs)?n.createEventArgs(t):{},i=!0}Object.prototype.hasOwnProperty.call(x,t.type)&&t.preventDefault(),k(this.browserRendererId,{eventHandlerId:n.eventHandlerId,eventName:e,eventFieldInfo:o.fromEvent(n.renderingComponentId,t)},s)}p.stopPropagation(e)&&(l=!0),p.preventDefault(e)&&t.preventDefault()}r=a||l?void 0:n.shift()}var h,d}getEventHandlerInfosForElement(e,t){return Object.prototype.hasOwnProperty.call(e,this.eventsCollectionKey)?e[this.eventsCollectionKey]:t?e[this.eventsCollectionKey]=new U:null}}P.nextEventDelegatorId=0;class N{constructor(e){this.globalListener=e,this.infosByEventHandlerId={},this.countByEventName={},a.push(this.handleEventNameAliasAdded.bind(this))}add(e){if(this.infosByEventHandlerId[e.eventHandlerId])throw new Error(`Event ${e.eventHandlerId} is already tracked`);this.infosByEventHandlerId[e.eventHandlerId]=e,this.addGlobalListener(e.eventName)}get(e){return this.infosByEventHandlerId[e]}addGlobalListener(e){if(e=l(e),Object.prototype.hasOwnProperty.call(this.countByEventName,e))this.countByEventName[e]++;else{this.countByEventName[e]=1;const t=Object.prototype.hasOwnProperty.call(R,e);document.addEventListener(e,this.globalListener,t)}}update(e,t){if(Object.prototype.hasOwnProperty.call(this.infosByEventHandlerId,t))throw new Error(`Event ${t} is already tracked`);const n=this.infosByEventHandlerId[e];delete this.infosByEventHandlerId[e],n.eventHandlerId=t,this.infosByEventHandlerId[t]=n}remove(e){const t=this.infosByEventHandlerId[e];if(t){delete this.infosByEventHandlerId[e];const n=l(t.eventName);0==--this.countByEventName[n]&&(delete this.countByEventName[n],document.removeEventListener(n,this.globalListener))}return t}handleEventNameAliasAdded(e,t){if(Object.prototype.hasOwnProperty.call(this.countByEventName,e)){const n=this.countByEventName[e];delete this.countByEventName[e],document.removeEventListener(e,this.globalListener),this.addGlobalListener(t),this.countByEventName[t]+=n-1}}}class U{constructor(){this.handlers={},this.preventDefaultFlags=null,this.stopPropagationFlags=null}getHandler(e){return Object.prototype.hasOwnProperty.call(this.handlers,e)?this.handlers[e]:null}setHandler(e,t){this.handlers[e]=t}removeHandler(e){delete this.handlers[e]}preventDefault(e,t){return void 0!==t&&(this.preventDefaultFlags=this.preventDefaultFlags||{},this.preventDefaultFlags[e]=t),!!this.preventDefaultFlags&&this.preventDefaultFlags[e]}stopPropagation(e,t){return void 0!==t&&(this.stopPropagationFlags=this.stopPropagationFlags||{},this.stopPropagationFlags[e]=t),!!this.stopPropagationFlags&&this.stopPropagationFlags[e]}}function M(e){const t={};return e.forEach((e=>{t[e]=!0})),t}const B=Symbol(),L=Symbol(),$=Symbol();function O(e,t){if(B in e)return e;const n=[];if(e.childNodes.length>0){if(!t)throw new Error("New logical elements must start empty, or allowExistingContents must be true");e.childNodes.forEach((t=>{const r=O(t,!0);r[L]=e,n.push(r)}))}return e[B]=n,e}function F(e){const t=K(e);for(;t.length;)W(e,0)}function H(e,t){const n=document.createComment("!");return j(n,e,t),n}function j(e,t,n){const r=e;let o=e;if(B in e){const t=Q(r);if(t!==e){const n=new Range;n.setStartBefore(e),n.setEndAfter(t),o=n.extractContents()}}const s=z(r);if(s){const e=K(s),t=Array.prototype.indexOf.call(e,r);e.splice(t,1),delete r[L]}const i=K(t);if(n0;)W(n,0)}const r=n;r.parentNode.removeChild(r)}function z(e){return e[L]||null}function q(e,t){return K(e)[t]}function J(e){const t=Y(e);return"http://www.w3.org/2000/svg"===t.namespaceURI&&"foreignObject"!==t.tagName}function K(e){return e[B]}function V(e){const t=K(z(e));return t[Array.prototype.indexOf.call(t,e)+1]||null}function X(e,t){const n=K(e);t.forEach((e=>{e.moveRangeStart=n[e.fromSiblingIndex],e.moveRangeEnd=Q(e.moveRangeStart)})),t.forEach((t=>{const r=document.createComment("marker");t.moveToBeforeMarker=r;const o=n[t.toSiblingIndex+1];o?o.parentNode.insertBefore(r,o):G(r,e)})),t.forEach((e=>{const t=e.moveToBeforeMarker,n=t.parentNode,r=e.moveRangeStart,o=e.moveRangeEnd;let s=r;for(;s;){const e=s.nextSibling;if(n.insertBefore(s,t),s===o)break;s=e}n.removeChild(t)})),t.forEach((e=>{n[e.toSiblingIndex]=e.moveRangeStart}))}function Y(e){if(e instanceof Element||e instanceof DocumentFragment)return e;if(e instanceof Comment)return e.parentNode;throw new Error("Not a valid logical element")}function G(e,t){if(t instanceof Element||t instanceof DocumentFragment)t.appendChild(e);else{if(!(t instanceof Comment))throw new Error(`Cannot append node because the parent is not a valid logical element. Parent: ${t}`);{const n=V(t);n?n.parentNode.insertBefore(e,n):G(e,z(t))}}}function Q(e){if(e instanceof Element||e instanceof DocumentFragment)return e;const t=V(e);if(t)return t.previousSibling;{const t=z(e);return t instanceof Element||t instanceof DocumentFragment?t.lastChild:Q(t)}}function Z(e){return`_bl_${e}`}const ee="__internalId";e.attachReviver(((e,t)=>t&&"object"==typeof t&&Object.prototype.hasOwnProperty.call(t,ee)&&"string"==typeof t[ee]?function(e){const t=`[${Z(e)}]`;return document.querySelector(t)}(t[ee]):t));const te="_blazorDeferredValue";function ne(e){return"select-multiple"===e.type}function re(e,t){e.value=t||""}function oe(e,t){e instanceof HTMLSelectElement?ne(e)?function(e,t){t||(t=[]);for(let n=0;n{ke()&&function(e,t){if(0!==e.button||function(e){return e.ctrlKey||e.shiftKey||e.altKey||e.metaKey}(e))return;if(e.defaultPrevented)return;const n=function(e){const t=!window._blazorDisableComposedPath&&e.composedPath&&e.composedPath();if(t){for(let e=0;e{const t=document.createElement("script");t.textContent=e.textContent,e.getAttributeNames().forEach((n=>{t.setAttribute(n,e.getAttribute(n))})),e.parentNode.replaceChild(t,e)})),ie.content));var i;let a=0;for(;s.firstChild;)j(s.firstChild,o,a++)}applyAttribute(e,t,n,r){const o=e.frameReader,s=o.attributeName(r),i=o.attributeEventHandlerId(r);if(i){const e=fe(s);return void this.eventDelegator.setListener(n,e,i,t)}const a=o.attributeValue(r);this.setOrRemoveAttributeOrProperty(n,s,a)}insertFrameRange(e,t,n,r,o,s,i){const a=r;for(let a=s;a{je(t,e)})},enableNavigationInterception:function(e){if(void 0!==me&&me!==e)throw new Error("Only one interactive runtime may enable navigation interception at a time.");me=e},setHasLocationChangingListeners:function(e,t){const n=Ae.get(e);if(!n)throw new Error(`Renderer with ID '${e}' is not listening for navigation events`);n.hasLocationChangingEventListeners=t},endLocationChanging:function(e,t){Ne&&e===xe&&(Ne(t),Ne=null)},navigateTo:function(e,t){Be(e,t,!0)},refresh:function(e){!e&&Se()?Ee(location.href,!0):location.reload()},getBaseURI:()=>document.baseURI,getLocationHref:()=>location.href,scrollToElement:Me};function Me(e){const t=document.getElementById(e);return!!t&&(t.scrollIntoView(),!0)}function Be(e,t,n=!1){const r=Ce(e);!t.forceLoad&&be(r)?qe()?Le(r,!1,t.replaceHistoryEntry,t.historyEntryState,n):Ee(r,t.replaceHistoryEntry):function(e,t){if(location.href===e){const t=e+"?";history.replaceState(null,"",t),location.replace(e)}else t?location.replace(e):location.href=e}(e,t.replaceHistoryEntry)}async function Le(e,t,n,r=void 0,o=!1){if(Fe(),function(e){const t=e.indexOf("#");return t>-1&&location.href.replace(location.hash,"")===e.substring(0,t)}(e))return void function(e,t,n){$e(e,t,n);const r=e.indexOf("#");r!==e.length-1&&Me(e.substring(r+1))}(e,n,r);const s=ze();(o||!(null==s?void 0:s.hasLocationChangingEventListeners)||await He(e,r,t,s))&&(_e=!0,$e(e,n,r),await je(t))}function $e(e,t,n=void 0){t?history.replaceState({userState:n,_index:Re},"",e):(Re++,history.pushState({userState:n,_index:Re},"",e))}function Oe(e){return new Promise((t=>{const n=Pe;Pe=()=>{Pe=n,t()},history.go(e)}))}function Fe(){Ne&&(Ne(!1),Ne=null)}function He(e,t,n,r){return new Promise((o=>{Fe(),xe++,Ne=o,r.locationChanging(xe,e,t,n)}))}async function je(e,t){const n=null!=t?t:location.href;await Promise.all(Array.from(Ae,(async([t,r])=>{var o,s;s=t,S.has(s)&&await r.locationChanged(n,null===(o=history.state)||void 0===o?void 0:o.userState,e)})))}async function We(e){var t,n;Pe&&qe()&&await Pe(e),Re=null!==(n=null===(t=history.state)||void 0===t?void 0:t._index)&&void 0!==n?n:0}function ze(){const e=Te();if(void 0!==e)return Ae.get(e)}function qe(){return ke()||!Se()}const Je={focus:function(e,t){if(e instanceof HTMLElement)e.focus({preventScroll:t});else{if(!(e instanceof SVGElement))throw new Error("Unable to focus an invalid element.");if(!e.hasAttribute("tabindex"))throw new Error("Unable to focus an SVG element that does not have a tabindex.");e.focus({preventScroll:t})}},focusBySelector:function(e,t){const n=document.querySelector(e);n&&(n.hasAttribute("tabindex")||(n.tabIndex=-1),n.focus({preventScroll:!0}))}},Ke={init:function(e,t,n,r=50){const o=Xe(t);(o||document.documentElement).style.overflowAnchor="none";const s=document.createRange();u(n.parentElement)&&(t.style.display="table-row",n.style.display="table-row");const i=new IntersectionObserver((function(r){r.forEach((r=>{var o;if(!r.isIntersecting)return;s.setStartAfter(t),s.setEndBefore(n);const i=s.getBoundingClientRect().height,a=null===(o=r.rootBounds)||void 0===o?void 0:o.height;r.target===t?e.invokeMethodAsync("OnSpacerBeforeVisible",r.intersectionRect.top-r.boundingClientRect.top,i,a):r.target===n&&n.offsetHeight>0&&e.invokeMethodAsync("OnSpacerAfterVisible",r.boundingClientRect.bottom-r.intersectionRect.bottom,i,a)}))}),{root:o,rootMargin:`${r}px`});i.observe(t),i.observe(n);const a=d(t),c=d(n),{observersByDotNetObjectId:l,id:h}=Ye(e);function d(e){const t={attributes:!0},n=new MutationObserver(((n,r)=>{u(e.parentElement)&&(r.disconnect(),e.style.display="table-row",r.observe(e,t)),i.unobserve(e),i.observe(e)}));return n.observe(e,t),n}function u(e){return null!==e&&(e instanceof HTMLTableElement&&""===e.style.display||"table"===e.style.display||e instanceof HTMLTableSectionElement&&""===e.style.display||"table-row-group"===e.style.display)}l[h]={intersectionObserver:i,mutationObserverBefore:a,mutationObserverAfter:c}},dispose:function(e){const{observersByDotNetObjectId:t,id:n}=Ye(e),r=t[n];r&&(r.intersectionObserver.disconnect(),r.mutationObserverBefore.disconnect(),r.mutationObserverAfter.disconnect(),e.dispose(),delete t[n])}},Ve=Symbol();function Xe(e){return e&&e!==document.body&&e!==document.documentElement?"visible"!==getComputedStyle(e).overflowY?e:Xe(e.parentElement):null}function Ye(e){var t;const n=e._callDispatcher,r=e._id;return null!==(t=n[Ve])&&void 0!==t||(n[Ve]={}),{observersByDotNetObjectId:n[Ve],id:r}}const Ge={getAndRemoveExistingTitle:function(){var e;const t=document.head?document.head.getElementsByTagName("title"):[];if(0===t.length)return null;let n=null;for(let r=t.length-1;r>=0;r--){const o=t[r],s=o.previousSibling;s instanceof Comment&&null!==z(s)||(null===n&&(n=o.textContent),null===(e=o.parentNode)||void 0===e||e.removeChild(o))}return n}},Qe={init:function(e,t){t._blazorInputFileNextFileId=0,t.addEventListener("click",(function(){t.value=""})),t.addEventListener("change",(function(){t._blazorFilesById={};const n=Array.prototype.map.call(t.files,(function(e){const n={id:++t._blazorInputFileNextFileId,lastModified:new Date(e.lastModified).toISOString(),name:e.name,size:e.size,contentType:e.type,readPromise:void 0,arrayBuffer:void 0,blob:e};return t._blazorFilesById[n.id]=n,n}));e.invokeMethodAsync("NotifyChange",n)}))},toImageFile:async function(e,t,n,r,o){const s=Ze(e,t),i=await new Promise((function(e){const t=new Image;t.onload=function(){URL.revokeObjectURL(t.src),e(t)},t.onerror=function(){t.onerror=null,URL.revokeObjectURL(t.src)},t.src=URL.createObjectURL(s.blob)})),a=await new Promise((function(e){var t;const s=Math.min(1,r/i.width),a=Math.min(1,o/i.height),c=Math.min(s,a),l=document.createElement("canvas");l.width=Math.round(i.width*c),l.height=Math.round(i.height*c),null===(t=l.getContext("2d"))||void 0===t||t.drawImage(i,0,0,l.width,l.height),l.toBlob(e,n)})),c={id:++e._blazorInputFileNextFileId,lastModified:s.lastModified,name:s.name,size:(null==a?void 0:a.size)||0,contentType:n,blob:a||s.blob};return e._blazorFilesById[c.id]=c,c},readFileData:async function(e,t){return Ze(e,t).blob}};function Ze(e,t){const n=e._blazorFilesById[t];if(!n)throw new Error(`There is no file with ID ${t}. The file list may have changed. See https://aka.ms/aspnet/blazor-input-file-multiple-selections.`);return n}const et=new Set,tt={enableNavigationPrompt:function(e){0===et.size&&window.addEventListener("beforeunload",nt),et.add(e)},disableNavigationPrompt:function(e){et.delete(e),0===et.size&&window.removeEventListener("beforeunload",nt)}};function nt(e){e.preventDefault(),e.returnValue=!0}async function rt(e,t,n){return e instanceof Blob?await async function(e,t,n){const r=e.slice(t,t+n),o=await r.arrayBuffer();return new Uint8Array(o)}(e,t,n):function(e,t,n){return new Uint8Array(e.buffer,e.byteOffset+t,n)}(e,t,n)}new Map;const ot={navigateTo:function(e,t,n=!1){Be(e,t instanceof Object?t:{forceLoad:t,replaceHistoryEntry:n})},registerCustomEventType:function(e,t){if(!t)throw new Error("The options parameter is required.");if(s.has(e))throw new Error(`The event '${e}' is already registered.`);if(t.browserEventName){const n=i.get(t.browserEventName);n?n.push(e):i.set(t.browserEventName,[e]),a.forEach((n=>n(e,t.browserEventName)))}s.set(e,t)},rootComponents:y,runtime:{},_internal:{navigationManager:Ue,domWrapper:Je,Virtualize:Ke,PageTitle:Ge,InputFile:Qe,NavigationLock:tt,getJSDataStreamChunk:rt,attachWebRendererInterop:I}};var st;function it(e){const t={...at,...e};return e&&e.reconnectionOptions&&(t.reconnectionOptions={...at.reconnectionOptions,...e.reconnectionOptions}),t}window.Blazor=ot,function(e){e[e.Trace=0]="Trace",e[e.Debug=1]="Debug",e[e.Information=2]="Information",e[e.Warning=3]="Warning",e[e.Error=4]="Error",e[e.Critical=5]="Critical",e[e.None=6]="None"}(st||(st={}));const at={configureSignalR:e=>{},logLevel:st.Warning,initializers:void 0,circuitHandlers:[],reconnectionOptions:{maxRetries:8,retryIntervalMilliseconds:2e4,dialogId:"components-reconnect-modal"}};class ct{log(e,t){}}ct.instance=new ct;class lt{constructor(e){this.minLevel=e}log(e,t){if(e>=this.minLevel){const n=`[${(new Date).toISOString()}] ${st[e]}: ${t}`;switch(e){case st.Critical:case st.Error:console.error(n);break;case st.Warning:console.warn(n);break;case st.Information:console.info(n);break;default:console.log(n)}}}}const ht=/^\s*Blazor-Server-Component-State:(?[a-zA-Z0-9+/=]+)$/;function dt(e,t,n="state"){var r;if(e.nodeType===Node.COMMENT_NODE){const o=e.textContent||"",s=t.exec(o),i=s&&s.groups&&s.groups[n];return i&&(null===(r=e.parentNode)||void 0===r||r.removeChild(e)),i}if(!e.hasChildNodes())return;const o=e.childNodes;for(let e=0;e.*)$/);function ft(e,t){const n=e.currentElement;var r,o,s;if(n&&n.nodeType===Node.COMMENT_NODE&&n.textContent){const i=pt.exec(n.textContent),a=i&&i.groups&&i.groups.descriptor;if(!a)return;!function(e){if(e.parentNode instanceof Document)throw new Error("Root components cannot be marked as interactive. The element must be rendered statically so that scripts are not evaluated multiple times.")}(n);try{const i=function(e){const t=JSON.parse(e),{type:n}=t;if("server"!==n&&"webassembly"!==n&&"auto"!==n)throw new Error(`Invalid component type '${n}'.`);return t}(a),c=function(e,t,n){const{prerenderId:r}=e;if(r){for(;n.next()&&n.currentElement;){const e=n.currentElement;if(e.nodeType!==Node.COMMENT_NODE)continue;if(!e.textContent)continue;const t=pt.exec(e.textContent),o=t&&t[1];if(o)return yt(o,r),e}throw new Error(`Could not find an end component comment for '${t}'.`)}}(i,n,e);if(t!==i.type)return;switch(i.type){case"webassembly":return o=n,s=c,vt(r=i),{...r,uniqueId:gt++,start:o,end:s};case"server":return function(e,t,n){return mt(e),{...e,uniqueId:gt++,start:t,end:n}}(i,n,c);case"auto":return function(e,t,n){return mt(e),vt(e),{...e,uniqueId:gt++,start:t,end:n}}(i,n,c)}}catch(e){throw new Error(`Found malformed component comment at ${n.textContent}`)}}}let gt=0;function mt(e){const{descriptor:t,sequence:n}=e;if(!t)throw new Error("descriptor must be defined when using a descriptor.");if(void 0===n)throw new Error("sequence must be defined when using a descriptor.");if(!Number.isInteger(n))throw new Error(`Error parsing the sequence '${n}' for component '${JSON.stringify(e)}'`)}function vt(e){const{assembly:t,typeName:n}=e;if(!t)throw new Error("assembly must be defined when using a descriptor.");if(!n)throw new Error("typeName must be defined when using a descriptor.");e.parameterDefinitions=e.parameterDefinitions&&atob(e.parameterDefinitions),e.parameterValues=e.parameterValues&&atob(e.parameterValues)}function yt(e,t){const n=JSON.parse(e);if(1!==Object.keys(n).length)throw new Error(`Invalid end of component comment: '${e}'`);const r=n.prerenderId;if(!r)throw new Error(`End of component comment must have a value for the prerendered property: '${e}'`);if(r!==t)throw new Error(`End of component comment prerendered property must match the start comment prerender id: '${t}', '${r}'`)}class wt{constructor(e){this.childNodes=e,this.currentIndex=-1,this.length=e.length}next(){return this.currentIndex++,this.currentIndex{n+=`0x${e<16?"0":""}${e.toString(16)} `})),n.substr(0,n.length-1)}(e)}'`)):"string"==typeof e&&(n=`String data of length ${e.length}`,t&&(n+=`. Content: '${e}'`)),n}function Tt(e){return e&&"undefined"!=typeof ArrayBuffer&&(e instanceof ArrayBuffer||e.constructor&&"ArrayBuffer"===e.constructor.name)}async function Dt(e,t,n,r,o,s){const i={},[a,c]=At();i[a]=c,e.log(bt.Trace,`(${t} transport) sending data. ${kt(o,s.logMessageContent)}.`);const l=Tt(o)?"arraybuffer":"text",h=await n.post(r,{content:o,headers:{...i,...s.headers},responseType:l,timeout:s.timeout,withCredentials:s.withCredentials});e.log(bt.Trace,`(${t} transport) request complete. Response status: ${h.statusCode}.`)}class Rt{constructor(e,t){this._subject=e,this._observer=t}dispose(){const e=this._subject.observers.indexOf(this._observer);e>-1&&this._subject.observers.splice(e,1),0===this._subject.observers.length&&this._subject.cancelCallback&&this._subject.cancelCallback().catch((e=>{}))}}class xt{constructor(e){this._minLevel=e,this.out=console}log(e,t){if(e>=this._minLevel){const n=`[${(new Date).toISOString()}] ${bt[e]}: ${t}`;switch(e){case bt.Critical:case bt.Error:this.out.error(n);break;case bt.Warning:this.out.warn(n);break;case bt.Information:this.out.info(n);break;default:this.out.log(n)}}}}function At(){let e="X-SignalR-User-Agent";return It.isNode&&(e="User-Agent"),[e,Pt(Et,Nt(),It.isNode?"NodeJS":"Browser",Ut())]}function Pt(e,t,n,r){let o="Microsoft SignalR/";const s=e.split(".");return o+=`${s[0]}.${s[1]}`,o+=` (${e}; `,o+=t&&""!==t?`${t}; `:"Unknown OS; ",o+=`${n}`,o+=r?`; ${r}`:"; Unknown Runtime Version",o+=")",o}function Nt(){if(!It.isNode)return"";switch(process.platform){case"win32":return"Windows NT";case"darwin":return"macOS";case"linux":return"Linux";default:return process.platform}}function Ut(){if(It.isNode)return process.versions.node}function Mt(e){return e.stack?e.stack:e.message?e.message:`${e}`}class Bt{writeHandshakeRequest(e){return _t.write(JSON.stringify(e))}parseHandshakeResponse(e){let t,n;if(Tt(e)){const r=new Uint8Array(e),o=r.indexOf(_t.RecordSeparatorCode);if(-1===o)throw new Error("Message is incomplete.");const s=o+1;t=String.fromCharCode.apply(null,Array.prototype.slice.call(r.slice(0,s))),n=r.byteLength>s?r.slice(s).buffer:null}else{const r=e,o=r.indexOf(_t.RecordSeparator);if(-1===o)throw new Error("Message is incomplete.");const s=o+1;t=r.substring(0,s),n=r.length>s?r.substring(s):null}const r=_t.parse(t),o=JSON.parse(r[0]);if(o.type)throw new Error("Expected a handshake response from the server.");return[n,o]}}class Lt extends Error{constructor(e,t){const n=new.target.prototype;super(`${e}: Status code '${t}'`),this.statusCode=t,this.__proto__=n}}class $t extends Error{constructor(e="A timeout occurred."){const t=new.target.prototype;super(e),this.__proto__=t}}class Ot extends Error{constructor(e="An abort occurred."){const t=new.target.prototype;super(e),this.__proto__=t}}class Ft extends Error{constructor(e,t){const n=new.target.prototype;super(e),this.transport=t,this.errorType="UnsupportedTransportError",this.__proto__=n}}class Ht extends Error{constructor(e,t){const n=new.target.prototype;super(e),this.transport=t,this.errorType="DisabledTransportError",this.__proto__=n}}class jt extends Error{constructor(e,t){const n=new.target.prototype;super(e),this.transport=t,this.errorType="FailedToStartTransportError",this.__proto__=n}}class Wt extends Error{constructor(e){const t=new.target.prototype;super(e),this.errorType="FailedToNegotiateWithServerError",this.__proto__=t}}class zt extends Error{constructor(e,t){const n=new.target.prototype;super(e),this.innerErrors=t,this.__proto__=n}}var qt,Jt;!function(e){e[e.Invocation=1]="Invocation",e[e.StreamItem=2]="StreamItem",e[e.Completion=3]="Completion",e[e.StreamInvocation=4]="StreamInvocation",e[e.CancelInvocation=5]="CancelInvocation",e[e.Ping=6]="Ping",e[e.Close=7]="Close",e[e.Ack=8]="Ack",e[e.Sequence=9]="Sequence"}(qt||(qt={}));class Kt{constructor(){this.observers=[]}next(e){for(const t of this.observers)t.next(e)}error(e){for(const t of this.observers)t.error&&t.error(e)}complete(){for(const e of this.observers)e.complete&&e.complete()}subscribe(e){return this.observers.push(e),new Rt(this,e)}}class Vt{constructor(e,t,n){this._bufferSize=1e5,this._messages=[],this._totalMessageCount=0,this._waitForSequenceMessage=!1,this._nextReceivingSequenceId=1,this._latestReceivedSequenceId=0,this._bufferedByteCount=0,this._reconnectInProgress=!1,this._protocol=e,this._connection=t,this._bufferSize=n}async _send(e){const t=this._protocol.writeMessage(e);let n=Promise.resolve();if(this._isInvocationMessage(e)){this._totalMessageCount++;let e=()=>{},r=()=>{};Tt(t)?this._bufferedByteCount+=t.byteLength:this._bufferedByteCount+=t.length,this._bufferedByteCount>=this._bufferSize&&(n=new Promise(((t,n)=>{e=t,r=n}))),this._messages.push(new Xt(t,this._totalMessageCount,e,r))}try{this._reconnectInProgress||await this._connection.send(t)}catch{this._disconnected()}await n}_ack(e){let t=-1;for(let n=0;nthis._nextReceivingSequenceId?this._connection.stop(new Error("Sequence ID greater than amount of messages we've received.")):this._nextReceivingSequenceId=e.sequenceId}_disconnected(){this._reconnectInProgress=!0,this._waitForSequenceMessage=!0}async _resend(){const e=0!==this._messages.length?this._messages[0]._id:this._totalMessageCount+1;await this._connection.send(this._protocol.writeMessage({type:qt.Sequence,sequenceId:e}));const t=this._messages;for(const e of t)await this._connection.send(e._message);this._reconnectInProgress=!1}_dispose(e){null!=e||(e=new Error("Unable to reconnect to server."));for(const t of this._messages)t._rejector(e)}_isInvocationMessage(e){switch(e.type){case qt.Invocation:case qt.StreamItem:case qt.Completion:case qt.StreamInvocation:case qt.CancelInvocation:return!0;case qt.Close:case qt.Sequence:case qt.Ping:case qt.Ack:return!1}}_ackTimer(){void 0===this._ackTimerHandle&&(this._ackTimerHandle=setTimeout((async()=>{try{this._reconnectInProgress||await this._connection.send(this._protocol.writeMessage({type:qt.Ack,sequenceId:this._latestReceivedSequenceId}))}catch{}clearTimeout(this._ackTimerHandle),this._ackTimerHandle=void 0}),1e3))}}class Xt{constructor(e,t,n,r){this._message=e,this._id=t,this._resolver=n,this._rejector=r}}!function(e){e.Disconnected="Disconnected",e.Connecting="Connecting",e.Connected="Connected",e.Disconnecting="Disconnecting",e.Reconnecting="Reconnecting"}(Jt||(Jt={}));class Yt{static create(e,t,n,r,o,s,i){return new Yt(e,t,n,r,o,s,i)}constructor(e,t,n,r,o,s,i){this._nextKeepAlive=0,this._freezeEventListener=()=>{this._logger.log(bt.Warning,"The page is being frozen, this will likely lead to the connection being closed and messages being lost. For more information see the docs at https://learn.microsoft.com/aspnet/core/signalr/javascript-client#bsleep")},Ct.isRequired(e,"connection"),Ct.isRequired(t,"logger"),Ct.isRequired(n,"protocol"),this.serverTimeoutInMilliseconds=null!=o?o:3e4,this.keepAliveIntervalInMilliseconds=null!=s?s:15e3,this._statefulReconnectBufferSize=null!=i?i:1e5,this._logger=t,this._protocol=n,this.connection=e,this._reconnectPolicy=r,this._handshakeProtocol=new Bt,this.connection.onreceive=e=>this._processIncomingData(e),this.connection.onclose=e=>this._connectionClosed(e),this._callbacks={},this._methods={},this._closedCallbacks=[],this._reconnectingCallbacks=[],this._reconnectedCallbacks=[],this._invocationId=0,this._receivedHandshakeResponse=!1,this._connectionState=Jt.Disconnected,this._connectionStarted=!1,this._cachedPingMessage=this._protocol.writeMessage({type:qt.Ping})}get state(){return this._connectionState}get connectionId(){return this.connection&&this.connection.connectionId||null}get baseUrl(){return this.connection.baseUrl||""}set baseUrl(e){if(this._connectionState!==Jt.Disconnected&&this._connectionState!==Jt.Reconnecting)throw new Error("The HubConnection must be in the Disconnected or Reconnecting state to change the url.");if(!e)throw new Error("The HubConnection url must be a valid url.");this.connection.baseUrl=e}start(){return this._startPromise=this._startWithStateTransitions(),this._startPromise}async _startWithStateTransitions(){if(this._connectionState!==Jt.Disconnected)return Promise.reject(new Error("Cannot start a HubConnection that is not in the 'Disconnected' state."));this._connectionState=Jt.Connecting,this._logger.log(bt.Debug,"Starting HubConnection.");try{await this._startInternal(),It.isBrowser&&window.document.addEventListener("freeze",this._freezeEventListener),this._connectionState=Jt.Connected,this._connectionStarted=!0,this._logger.log(bt.Debug,"HubConnection connected successfully.")}catch(e){return this._connectionState=Jt.Disconnected,this._logger.log(bt.Debug,`HubConnection failed to start successfully because of error '${e}'.`),Promise.reject(e)}}async _startInternal(){this._stopDuringStartError=void 0,this._receivedHandshakeResponse=!1;const e=new Promise(((e,t)=>{this._handshakeResolver=e,this._handshakeRejecter=t}));await this.connection.start(this._protocol.transferFormat);try{let t=this._protocol.version;this.connection.features.reconnect||(t=1);const n={protocol:this._protocol.name,version:t};if(this._logger.log(bt.Debug,"Sending handshake request."),await this._sendMessage(this._handshakeProtocol.writeHandshakeRequest(n)),this._logger.log(bt.Information,`Using HubProtocol '${this._protocol.name}'.`),this._cleanupTimeout(),this._resetTimeoutPeriod(),this._resetKeepAliveInterval(),await e,this._stopDuringStartError)throw this._stopDuringStartError;!!this.connection.features.reconnect&&(this._messageBuffer=new Vt(this._protocol,this.connection,this._statefulReconnectBufferSize),this.connection.features.disconnected=this._messageBuffer._disconnected.bind(this._messageBuffer),this.connection.features.resend=()=>{if(this._messageBuffer)return this._messageBuffer._resend()}),this.connection.features.inherentKeepAlive||await this._sendMessage(this._cachedPingMessage)}catch(e){throw this._logger.log(bt.Debug,`Hub handshake failed with error '${e}' during start(). Stopping HubConnection.`),this._cleanupTimeout(),this._cleanupPingTimer(),await this.connection.stop(e),e}}async stop(){const e=this._startPromise;this.connection.features.reconnect=!1,this._stopPromise=this._stopInternal(),await this._stopPromise;try{await e}catch(e){}}_stopInternal(e){if(this._connectionState===Jt.Disconnected)return this._logger.log(bt.Debug,`Call to HubConnection.stop(${e}) ignored because it is already in the disconnected state.`),Promise.resolve();if(this._connectionState===Jt.Disconnecting)return this._logger.log(bt.Debug,`Call to HttpConnection.stop(${e}) ignored because the connection is already in the disconnecting state.`),this._stopPromise;const t=this._connectionState;return this._connectionState=Jt.Disconnecting,this._logger.log(bt.Debug,"Stopping HubConnection."),this._reconnectDelayHandle?(this._logger.log(bt.Debug,"Connection stopped during reconnect delay. Done reconnecting."),clearTimeout(this._reconnectDelayHandle),this._reconnectDelayHandle=void 0,this._completeClose(),Promise.resolve()):(t===Jt.Connected&&this._sendCloseMessage(),this._cleanupTimeout(),this._cleanupPingTimer(),this._stopDuringStartError=e||new Ot("The connection was stopped before the hub handshake could complete."),this.connection.stop(e))}async _sendCloseMessage(){try{await this._sendWithProtocol(this._createCloseMessage())}catch{}}stream(e,...t){const[n,r]=this._replaceStreamingParams(t),o=this._createStreamInvocation(e,t,r);let s;const i=new Kt;return i.cancelCallback=()=>{const e=this._createCancelInvocation(o.invocationId);return delete this._callbacks[o.invocationId],s.then((()=>this._sendWithProtocol(e)))},this._callbacks[o.invocationId]=(e,t)=>{t?i.error(t):e&&(e.type===qt.Completion?e.error?i.error(new Error(e.error)):i.complete():i.next(e.item))},s=this._sendWithProtocol(o).catch((e=>{i.error(e),delete this._callbacks[o.invocationId]})),this._launchStreams(n,s),i}_sendMessage(e){return this._resetKeepAliveInterval(),this.connection.send(e)}_sendWithProtocol(e){return this._messageBuffer?this._messageBuffer._send(e):this._sendMessage(this._protocol.writeMessage(e))}send(e,...t){const[n,r]=this._replaceStreamingParams(t),o=this._sendWithProtocol(this._createInvocation(e,t,!0,r));return this._launchStreams(n,o),o}invoke(e,...t){const[n,r]=this._replaceStreamingParams(t),o=this._createInvocation(e,t,!1,r);return new Promise(((e,t)=>{this._callbacks[o.invocationId]=(n,r)=>{r?t(r):n&&(n.type===qt.Completion?n.error?t(new Error(n.error)):e(n.result):t(new Error(`Unexpected message type: ${n.type}`)))};const r=this._sendWithProtocol(o).catch((e=>{t(e),delete this._callbacks[o.invocationId]}));this._launchStreams(n,r)}))}on(e,t){e&&t&&(e=e.toLowerCase(),this._methods[e]||(this._methods[e]=[]),-1===this._methods[e].indexOf(t)&&this._methods[e].push(t))}off(e,t){if(!e)return;e=e.toLowerCase();const n=this._methods[e];if(n)if(t){const r=n.indexOf(t);-1!==r&&(n.splice(r,1),0===n.length&&delete this._methods[e])}else delete this._methods[e]}onclose(e){e&&this._closedCallbacks.push(e)}onreconnecting(e){e&&this._reconnectingCallbacks.push(e)}onreconnected(e){e&&this._reconnectedCallbacks.push(e)}_processIncomingData(e){if(this._cleanupTimeout(),this._receivedHandshakeResponse||(e=this._processHandshakeResponse(e),this._receivedHandshakeResponse=!0),e){const t=this._protocol.parseMessages(e,this._logger);for(const e of t)if(!this._messageBuffer||this._messageBuffer._shouldProcessMessage(e))switch(e.type){case qt.Invocation:this._invokeClientMethod(e);break;case qt.StreamItem:case qt.Completion:{const t=this._callbacks[e.invocationId];if(t){e.type===qt.Completion&&delete this._callbacks[e.invocationId];try{t(e)}catch(e){this._logger.log(bt.Error,`Stream callback threw error: ${Mt(e)}`)}}break}case qt.Ping:break;case qt.Close:{this._logger.log(bt.Information,"Close message received from server.");const t=e.error?new Error("Server returned an error on close: "+e.error):void 0;!0===e.allowReconnect?this.connection.stop(t):this._stopPromise=this._stopInternal(t);break}case qt.Ack:this._messageBuffer&&this._messageBuffer._ack(e);break;case qt.Sequence:this._messageBuffer&&this._messageBuffer._resetSequence(e);break;default:this._logger.log(bt.Warning,`Invalid message type: ${e.type}.`)}}this._resetTimeoutPeriod()}_processHandshakeResponse(e){let t,n;try{[n,t]=this._handshakeProtocol.parseHandshakeResponse(e)}catch(e){const t="Error parsing handshake response: "+e;this._logger.log(bt.Error,t);const n=new Error(t);throw this._handshakeRejecter(n),n}if(t.error){const e="Server returned handshake error: "+t.error;this._logger.log(bt.Error,e);const n=new Error(e);throw this._handshakeRejecter(n),n}return this._logger.log(bt.Debug,"Server handshake complete."),this._handshakeResolver(),n}_resetKeepAliveInterval(){this.connection.features.inherentKeepAlive||(this._nextKeepAlive=(new Date).getTime()+this.keepAliveIntervalInMilliseconds,this._cleanupPingTimer())}_resetTimeoutPeriod(){if(!(this.connection.features&&this.connection.features.inherentKeepAlive||(this._timeoutHandle=setTimeout((()=>this.serverTimeout()),this.serverTimeoutInMilliseconds),void 0!==this._pingServerHandle))){let e=this._nextKeepAlive-(new Date).getTime();e<0&&(e=0),this._pingServerHandle=setTimeout((async()=>{if(this._connectionState===Jt.Connected)try{await this._sendMessage(this._cachedPingMessage)}catch{this._cleanupPingTimer()}}),e)}}serverTimeout(){this.connection.stop(new Error("Server timeout elapsed without receiving a message from the server."))}async _invokeClientMethod(e){const t=e.target.toLowerCase(),n=this._methods[t];if(!n)return this._logger.log(bt.Warning,`No client method with the name '${t}' found.`),void(e.invocationId&&(this._logger.log(bt.Warning,`No result given for '${t}' method and invocation ID '${e.invocationId}'.`),await this._sendWithProtocol(this._createCompletionMessage(e.invocationId,"Client didn't provide a result.",null))));const r=n.slice(),o=!!e.invocationId;let s,i,a;for(const n of r)try{const r=s;s=await n.apply(this,e.arguments),o&&s&&r&&(this._logger.log(bt.Error,`Multiple results provided for '${t}'. Sending error to server.`),a=this._createCompletionMessage(e.invocationId,"Client provided multiple results.",null)),i=void 0}catch(e){i=e,this._logger.log(bt.Error,`A callback for the method '${t}' threw error '${e}'.`)}a?await this._sendWithProtocol(a):o?(i?a=this._createCompletionMessage(e.invocationId,`${i}`,null):void 0!==s?a=this._createCompletionMessage(e.invocationId,null,s):(this._logger.log(bt.Warning,`No result given for '${t}' method and invocation ID '${e.invocationId}'.`),a=this._createCompletionMessage(e.invocationId,"Client didn't provide a result.",null)),await this._sendWithProtocol(a)):s&&this._logger.log(bt.Error,`Result given for '${t}' method but server is not expecting a result.`)}_connectionClosed(e){this._logger.log(bt.Debug,`HubConnection.connectionClosed(${e}) called while in state ${this._connectionState}.`),this._stopDuringStartError=this._stopDuringStartError||e||new Ot("The underlying connection was closed before the hub handshake could complete."),this._handshakeResolver&&this._handshakeResolver(),this._cancelCallbacksWithError(e||new Error("Invocation canceled due to the underlying connection being closed.")),this._cleanupTimeout(),this._cleanupPingTimer(),this._connectionState===Jt.Disconnecting?this._completeClose(e):this._connectionState===Jt.Connected&&this._reconnectPolicy?this._reconnect(e):this._connectionState===Jt.Connected&&this._completeClose(e)}_completeClose(e){if(this._connectionStarted){this._connectionState=Jt.Disconnected,this._connectionStarted=!1,this._messageBuffer&&(this._messageBuffer._dispose(null!=e?e:new Error("Connection closed.")),this._messageBuffer=void 0),It.isBrowser&&window.document.removeEventListener("freeze",this._freezeEventListener);try{this._closedCallbacks.forEach((t=>t.apply(this,[e])))}catch(t){this._logger.log(bt.Error,`An onclose callback called with error '${e}' threw error '${t}'.`)}}}async _reconnect(e){const t=Date.now();let n=0,r=void 0!==e?e:new Error("Attempting to reconnect due to a unknown error."),o=this._getNextRetryDelay(n++,0,r);if(null===o)return this._logger.log(bt.Debug,"Connection not reconnecting because the IRetryPolicy returned null on the first reconnect attempt."),void this._completeClose(e);if(this._connectionState=Jt.Reconnecting,e?this._logger.log(bt.Information,`Connection reconnecting because of error '${e}'.`):this._logger.log(bt.Information,"Connection reconnecting."),0!==this._reconnectingCallbacks.length){try{this._reconnectingCallbacks.forEach((t=>t.apply(this,[e])))}catch(t){this._logger.log(bt.Error,`An onreconnecting callback called with error '${e}' threw error '${t}'.`)}if(this._connectionState!==Jt.Reconnecting)return void this._logger.log(bt.Debug,"Connection left the reconnecting state in onreconnecting callback. Done reconnecting.")}for(;null!==o;){if(this._logger.log(bt.Information,`Reconnect attempt number ${n} will start in ${o} ms.`),await new Promise((e=>{this._reconnectDelayHandle=setTimeout(e,o)})),this._reconnectDelayHandle=void 0,this._connectionState!==Jt.Reconnecting)return void this._logger.log(bt.Debug,"Connection left the reconnecting state during reconnect delay. Done reconnecting.");try{if(await this._startInternal(),this._connectionState=Jt.Connected,this._logger.log(bt.Information,"HubConnection reconnected successfully."),0!==this._reconnectedCallbacks.length)try{this._reconnectedCallbacks.forEach((e=>e.apply(this,[this.connection.connectionId])))}catch(e){this._logger.log(bt.Error,`An onreconnected callback called with connectionId '${this.connection.connectionId}; threw error '${e}'.`)}return}catch(e){if(this._logger.log(bt.Information,`Reconnect attempt failed because of error '${e}'.`),this._connectionState!==Jt.Reconnecting)return this._logger.log(bt.Debug,`Connection moved to the '${this._connectionState}' from the reconnecting state during reconnect attempt. Done reconnecting.`),void(this._connectionState===Jt.Disconnecting&&this._completeClose());r=e instanceof Error?e:new Error(e.toString()),o=this._getNextRetryDelay(n++,Date.now()-t,r)}}this._logger.log(bt.Information,`Reconnect retries have been exhausted after ${Date.now()-t} ms and ${n} failed attempts. Connection disconnecting.`),this._completeClose()}_getNextRetryDelay(e,t,n){try{return this._reconnectPolicy.nextRetryDelayInMilliseconds({elapsedMilliseconds:t,previousRetryCount:e,retryReason:n})}catch(n){return this._logger.log(bt.Error,`IRetryPolicy.nextRetryDelayInMilliseconds(${e}, ${t}) threw error '${n}'.`),null}}_cancelCallbacksWithError(e){const t=this._callbacks;this._callbacks={},Object.keys(t).forEach((n=>{const r=t[n];try{r(null,e)}catch(t){this._logger.log(bt.Error,`Stream 'error' callback called with '${e}' threw error: ${Mt(t)}`)}}))}_cleanupPingTimer(){this._pingServerHandle&&(clearTimeout(this._pingServerHandle),this._pingServerHandle=void 0)}_cleanupTimeout(){this._timeoutHandle&&clearTimeout(this._timeoutHandle)}_createInvocation(e,t,n,r){if(n)return 0!==r.length?{arguments:t,streamIds:r,target:e,type:qt.Invocation}:{arguments:t,target:e,type:qt.Invocation};{const n=this._invocationId;return this._invocationId++,0!==r.length?{arguments:t,invocationId:n.toString(),streamIds:r,target:e,type:qt.Invocation}:{arguments:t,invocationId:n.toString(),target:e,type:qt.Invocation}}}_launchStreams(e,t){if(0!==e.length){t||(t=Promise.resolve());for(const n in e)e[n].subscribe({complete:()=>{t=t.then((()=>this._sendWithProtocol(this._createCompletionMessage(n))))},error:e=>{let r;r=e instanceof Error?e.message:e&&e.toString?e.toString():"Unknown error",t=t.then((()=>this._sendWithProtocol(this._createCompletionMessage(n,r))))},next:e=>{t=t.then((()=>this._sendWithProtocol(this._createStreamItemMessage(n,e))))}})}}_replaceStreamingParams(e){const t=[],n=[];for(let r=0;r0)&&(t=!1,this._accessToken=await this._accessTokenFactory()),this._setAuthorizationHeader(e);const n=await this._innerClient.send(e);return t&&401===n.statusCode&&this._accessTokenFactory?(this._accessToken=await this._accessTokenFactory(),this._setAuthorizationHeader(e),await this._innerClient.send(e)):n}_setAuthorizationHeader(e){e.headers||(e.headers={}),this._accessToken?e.headers[Zt.Authorization]=`Bearer ${this._accessToken}`:this._accessTokenFactory&&e.headers[Zt.Authorization]&&delete e.headers[Zt.Authorization]}getCookieString(e){return this._innerClient.getCookieString(e)}}class rn extends tn{constructor(e){super(),this._logger=e;const t={_fetchType:void 0,_jar:void 0};var r;r=t,"undefined"==typeof fetch&&(r._jar=new(n(628).CookieJar),"undefined"==typeof fetch?r._fetchType=n(200):r._fetchType=fetch,r._fetchType=n(203)(r._fetchType,r._jar),1)?(this._fetchType=t._fetchType,this._jar=t._jar):this._fetchType=fetch.bind(function(){if("undefined"!=typeof globalThis)return globalThis;if("undefined"!=typeof self)return self;if("undefined"!=typeof window)return window;if(void 0!==n.g)return n.g;throw new Error("could not find global")}()),this._abortControllerType=AbortController;const o={_abortControllerType:this._abortControllerType};(function(e){return"undefined"==typeof AbortController&&(e._abortControllerType=n(778),!0)})(o)&&(this._abortControllerType=o._abortControllerType)}async send(e){if(e.abortSignal&&e.abortSignal.aborted)throw new Ot;if(!e.method)throw new Error("No method defined.");if(!e.url)throw new Error("No url defined.");const t=new this._abortControllerType;let n;e.abortSignal&&(e.abortSignal.onabort=()=>{t.abort(),n=new Ot});let r,o=null;if(e.timeout){const r=e.timeout;o=setTimeout((()=>{t.abort(),this._logger.log(bt.Warning,"Timeout from HTTP request."),n=new $t}),r)}""===e.content&&(e.content=void 0),e.content&&(e.headers=e.headers||{},Tt(e.content)?e.headers["Content-Type"]="application/octet-stream":e.headers["Content-Type"]="text/plain;charset=UTF-8");try{r=await this._fetchType(e.url,{body:e.content,cache:"no-cache",credentials:!0===e.withCredentials?"include":"same-origin",headers:{"X-Requested-With":"XMLHttpRequest",...e.headers},method:e.method,mode:"cors",redirect:"follow",signal:t.signal})}catch(e){if(n)throw n;throw this._logger.log(bt.Warning,`Error from HTTP request. ${e}.`),e}finally{o&&clearTimeout(o),e.abortSignal&&(e.abortSignal.onabort=null)}if(!r.ok){const e=await on(r,"text");throw new Lt(e||r.statusText,r.status)}const s=on(r,e.responseType),i=await s;return new en(r.status,r.statusText,i)}getCookieString(e){return""}}function on(e,t){let n;switch(t){case"arraybuffer":n=e.arrayBuffer();break;case"text":default:n=e.text();break;case"blob":case"document":case"json":throw new Error(`${t} is not supported.`)}return n}class sn extends tn{constructor(e){super(),this._logger=e}send(e){return e.abortSignal&&e.abortSignal.aborted?Promise.reject(new Ot):e.method?e.url?new Promise(((t,n)=>{const r=new XMLHttpRequest;r.open(e.method,e.url,!0),r.withCredentials=void 0===e.withCredentials||e.withCredentials,r.setRequestHeader("X-Requested-With","XMLHttpRequest"),""===e.content&&(e.content=void 0),e.content&&(Tt(e.content)?r.setRequestHeader("Content-Type","application/octet-stream"):r.setRequestHeader("Content-Type","text/plain;charset=UTF-8"));const o=e.headers;o&&Object.keys(o).forEach((e=>{r.setRequestHeader(e,o[e])})),e.responseType&&(r.responseType=e.responseType),e.abortSignal&&(e.abortSignal.onabort=()=>{r.abort(),n(new Ot)}),e.timeout&&(r.timeout=e.timeout),r.onload=()=>{e.abortSignal&&(e.abortSignal.onabort=null),r.status>=200&&r.status<300?t(new en(r.status,r.statusText,r.response||r.responseText)):n(new Lt(r.response||r.responseText||r.statusText,r.status))},r.onerror=()=>{this._logger.log(bt.Warning,`Error from HTTP request. ${r.status}: ${r.statusText}.`),n(new Lt(r.statusText,r.status))},r.ontimeout=()=>{this._logger.log(bt.Warning,"Timeout from HTTP request."),n(new $t)},r.send(e.content)})):Promise.reject(new Error("No url defined.")):Promise.reject(new Error("No method defined."))}}class an extends tn{constructor(e){if(super(),"undefined"!=typeof fetch)this._httpClient=new rn(e);else{if("undefined"==typeof XMLHttpRequest)throw new Error("No usable HttpClient found.");this._httpClient=new sn(e)}}send(e){return e.abortSignal&&e.abortSignal.aborted?Promise.reject(new Ot):e.method?e.url?this._httpClient.send(e):Promise.reject(new Error("No url defined.")):Promise.reject(new Error("No method defined."))}getCookieString(e){return this._httpClient.getCookieString(e)}}var cn,ln;!function(e){e[e.None=0]="None",e[e.WebSockets=1]="WebSockets",e[e.ServerSentEvents=2]="ServerSentEvents",e[e.LongPolling=4]="LongPolling"}(cn||(cn={})),function(e){e[e.Text=1]="Text",e[e.Binary=2]="Binary"}(ln||(ln={}));class hn{constructor(){this._isAborted=!1,this.onabort=null}abort(){this._isAborted||(this._isAborted=!0,this.onabort&&this.onabort())}get signal(){return this}get aborted(){return this._isAborted}}class dn{get pollAborted(){return this._pollAbort.aborted}constructor(e,t,n){this._httpClient=e,this._logger=t,this._pollAbort=new hn,this._options=n,this._running=!1,this.onreceive=null,this.onclose=null}async connect(e,t){if(Ct.isRequired(e,"url"),Ct.isRequired(t,"transferFormat"),Ct.isIn(t,ln,"transferFormat"),this._url=e,this._logger.log(bt.Trace,"(LongPolling transport) Connecting."),t===ln.Binary&&"undefined"!=typeof XMLHttpRequest&&"string"!=typeof(new XMLHttpRequest).responseType)throw new Error("Binary protocols over XmlHttpRequest not implementing advanced features are not supported.");const[n,r]=At(),o={[n]:r,...this._options.headers},s={abortSignal:this._pollAbort.signal,headers:o,timeout:1e5,withCredentials:this._options.withCredentials};t===ln.Binary&&(s.responseType="arraybuffer");const i=`${e}&_=${Date.now()}`;this._logger.log(bt.Trace,`(LongPolling transport) polling: ${i}.`);const a=await this._httpClient.get(i,s);200!==a.statusCode?(this._logger.log(bt.Error,`(LongPolling transport) Unexpected response code: ${a.statusCode}.`),this._closeError=new Lt(a.statusText||"",a.statusCode),this._running=!1):this._running=!0,this._receiving=this._poll(this._url,s)}async _poll(e,t){try{for(;this._running;)try{const n=`${e}&_=${Date.now()}`;this._logger.log(bt.Trace,`(LongPolling transport) polling: ${n}.`);const r=await this._httpClient.get(n,t);204===r.statusCode?(this._logger.log(bt.Information,"(LongPolling transport) Poll terminated by server."),this._running=!1):200!==r.statusCode?(this._logger.log(bt.Error,`(LongPolling transport) Unexpected response code: ${r.statusCode}.`),this._closeError=new Lt(r.statusText||"",r.statusCode),this._running=!1):r.content?(this._logger.log(bt.Trace,`(LongPolling transport) data received. ${kt(r.content,this._options.logMessageContent)}.`),this.onreceive&&this.onreceive(r.content)):this._logger.log(bt.Trace,"(LongPolling transport) Poll timed out, reissuing.")}catch(e){this._running?e instanceof $t?this._logger.log(bt.Trace,"(LongPolling transport) Poll timed out, reissuing."):(this._closeError=e,this._running=!1):this._logger.log(bt.Trace,`(LongPolling transport) Poll errored after shutdown: ${e.message}`)}}finally{this._logger.log(bt.Trace,"(LongPolling transport) Polling complete."),this.pollAborted||this._raiseOnClose()}}async send(e){return this._running?Dt(this._logger,"LongPolling",this._httpClient,this._url,e,this._options):Promise.reject(new Error("Cannot send until the transport is connected"))}async stop(){this._logger.log(bt.Trace,"(LongPolling transport) Stopping polling."),this._running=!1,this._pollAbort.abort();try{await this._receiving,this._logger.log(bt.Trace,`(LongPolling transport) sending DELETE request to ${this._url}.`);const e={},[t,n]=At();e[t]=n;const r={headers:{...e,...this._options.headers},timeout:this._options.timeout,withCredentials:this._options.withCredentials};let o;try{await this._httpClient.delete(this._url,r)}catch(e){o=e}o?o instanceof Lt&&(404===o.statusCode?this._logger.log(bt.Trace,"(LongPolling transport) A 404 response was returned from sending a DELETE request."):this._logger.log(bt.Trace,`(LongPolling transport) Error sending a DELETE request: ${o}`)):this._logger.log(bt.Trace,"(LongPolling transport) DELETE request accepted.")}finally{this._logger.log(bt.Trace,"(LongPolling transport) Stop finished."),this._raiseOnClose()}}_raiseOnClose(){if(this.onclose){let e="(LongPolling transport) Firing onclose event.";this._closeError&&(e+=" Error: "+this._closeError),this._logger.log(bt.Trace,e),this.onclose(this._closeError)}}}class un{constructor(e,t,n,r){this._httpClient=e,this._accessToken=t,this._logger=n,this._options=r,this.onreceive=null,this.onclose=null}async connect(e,t){return Ct.isRequired(e,"url"),Ct.isRequired(t,"transferFormat"),Ct.isIn(t,ln,"transferFormat"),this._logger.log(bt.Trace,"(SSE transport) Connecting."),this._url=e,this._accessToken&&(e+=(e.indexOf("?")<0?"?":"&")+`access_token=${encodeURIComponent(this._accessToken)}`),new Promise(((n,r)=>{let o,s=!1;if(t===ln.Text){if(It.isBrowser||It.isWebWorker)o=new this._options.EventSource(e,{withCredentials:this._options.withCredentials});else{const t=this._httpClient.getCookieString(e),n={};n.Cookie=t;const[r,s]=At();n[r]=s,o=new this._options.EventSource(e,{withCredentials:this._options.withCredentials,headers:{...n,...this._options.headers}})}try{o.onmessage=e=>{if(this.onreceive)try{this._logger.log(bt.Trace,`(SSE transport) data received. ${kt(e.data,this._options.logMessageContent)}.`),this.onreceive(e.data)}catch(e){return void this._close(e)}},o.onerror=e=>{s?this._close():r(new Error("EventSource failed to connect. The connection could not be found on the server, either the connection ID is not present on the server, or a proxy is refusing/buffering the connection. If you have multiple servers check that sticky sessions are enabled."))},o.onopen=()=>{this._logger.log(bt.Information,`SSE connected to ${this._url}`),this._eventSource=o,s=!0,n()}}catch(e){return void r(e)}}else r(new Error("The Server-Sent Events transport only supports the 'Text' transfer format"))}))}async send(e){return this._eventSource?Dt(this._logger,"SSE",this._httpClient,this._url,e,this._options):Promise.reject(new Error("Cannot send until the transport is connected"))}stop(){return this._close(),Promise.resolve()}_close(e){this._eventSource&&(this._eventSource.close(),this._eventSource=void 0,this.onclose&&this.onclose(e))}}class pn{constructor(e,t,n,r,o,s){this._logger=n,this._accessTokenFactory=t,this._logMessageContent=r,this._webSocketConstructor=o,this._httpClient=e,this.onreceive=null,this.onclose=null,this._headers=s}async connect(e,t){let n;return Ct.isRequired(e,"url"),Ct.isRequired(t,"transferFormat"),Ct.isIn(t,ln,"transferFormat"),this._logger.log(bt.Trace,"(WebSockets transport) Connecting."),this._accessTokenFactory&&(n=await this._accessTokenFactory()),new Promise(((r,o)=>{let s;e=e.replace(/^http/,"ws");const i=this._httpClient.getCookieString(e);let a=!1;if(It.isReactNative){const t={},[r,o]=At();t[r]=o,n&&(t[Zt.Authorization]=`Bearer ${n}`),i&&(t[Zt.Cookie]=i),s=new this._webSocketConstructor(e,void 0,{headers:{...t,...this._headers}})}else n&&(e+=(e.indexOf("?")<0?"?":"&")+`access_token=${encodeURIComponent(n)}`);s||(s=new this._webSocketConstructor(e)),t===ln.Binary&&(s.binaryType="arraybuffer"),s.onopen=t=>{this._logger.log(bt.Information,`WebSocket connected to ${e}.`),this._webSocket=s,a=!0,r()},s.onerror=e=>{let t=null;t="undefined"!=typeof ErrorEvent&&e instanceof ErrorEvent?e.error:"There was an error with the transport",this._logger.log(bt.Information,`(WebSockets transport) ${t}.`)},s.onmessage=e=>{if(this._logger.log(bt.Trace,`(WebSockets transport) data received. ${kt(e.data,this._logMessageContent)}.`),this.onreceive)try{this.onreceive(e.data)}catch(e){return void this._close(e)}},s.onclose=e=>{if(a)this._close(e);else{let t=null;t="undefined"!=typeof ErrorEvent&&e instanceof ErrorEvent?e.error:"WebSocket failed to connect. The connection could not be found on the server, either the endpoint may not be a SignalR endpoint, the connection ID is not present on the server, or there is a proxy blocking WebSockets. If you have multiple servers check that sticky sessions are enabled.",o(new Error(t))}}}))}send(e){return this._webSocket&&this._webSocket.readyState===this._webSocketConstructor.OPEN?(this._logger.log(bt.Trace,`(WebSockets transport) sending data. ${kt(e,this._logMessageContent)}.`),this._webSocket.send(e),Promise.resolve()):Promise.reject("WebSocket is not in the OPEN state")}stop(){return this._webSocket&&this._close(void 0),Promise.resolve()}_close(e){this._webSocket&&(this._webSocket.onclose=()=>{},this._webSocket.onmessage=()=>{},this._webSocket.onerror=()=>{},this._webSocket.close(),this._webSocket=void 0),this._logger.log(bt.Trace,"(WebSockets transport) socket closed."),this.onclose&&(!this._isCloseEvent(e)||!1!==e.wasClean&&1e3===e.code?e instanceof Error?this.onclose(e):this.onclose():this.onclose(new Error(`WebSocket closed with status code: ${e.code} (${e.reason||"no reason given"}).`)))}_isCloseEvent(e){return e&&"boolean"==typeof e.wasClean&&"number"==typeof e.code}}class fn{constructor(e,t={}){if(this._stopPromiseResolver=()=>{},this.features={},this._negotiateVersion=1,Ct.isRequired(e,"url"),this._logger=function(e){return void 0===e?new xt(bt.Information):null===e?St.instance:void 0!==e.log?e:new xt(e)}(t.logger),this.baseUrl=this._resolveUrl(e),(t=t||{}).logMessageContent=void 0!==t.logMessageContent&&t.logMessageContent,"boolean"!=typeof t.withCredentials&&void 0!==t.withCredentials)throw new Error("withCredentials option was not a 'boolean' or 'undefined' value");t.withCredentials=void 0===t.withCredentials||t.withCredentials,t.timeout=void 0===t.timeout?1e5:t.timeout,"undefined"==typeof WebSocket||t.WebSocket||(t.WebSocket=WebSocket),"undefined"==typeof EventSource||t.EventSource||(t.EventSource=EventSource),this._httpClient=new nn(t.httpClient||new an(this._logger),t.accessTokenFactory),this._connectionState="Disconnected",this._connectionStarted=!1,this._options=t,this.onreceive=null,this.onclose=null}async start(e){if(e=e||ln.Binary,Ct.isIn(e,ln,"transferFormat"),this._logger.log(bt.Debug,`Starting connection with transfer format '${ln[e]}'.`),"Disconnected"!==this._connectionState)return Promise.reject(new Error("Cannot start an HttpConnection that is not in the 'Disconnected' state."));if(this._connectionState="Connecting",this._startInternalPromise=this._startInternal(e),await this._startInternalPromise,"Disconnecting"===this._connectionState){const e="Failed to start the HttpConnection before stop() was called.";return this._logger.log(bt.Error,e),await this._stopPromise,Promise.reject(new Ot(e))}if("Connected"!==this._connectionState){const e="HttpConnection.startInternal completed gracefully but didn't enter the connection into the connected state!";return this._logger.log(bt.Error,e),Promise.reject(new Ot(e))}this._connectionStarted=!0}send(e){return"Connected"!==this._connectionState?Promise.reject(new Error("Cannot send data if the connection is not in the 'Connected' State.")):(this._sendQueue||(this._sendQueue=new gn(this.transport)),this._sendQueue.send(e))}async stop(e){return"Disconnected"===this._connectionState?(this._logger.log(bt.Debug,`Call to HttpConnection.stop(${e}) ignored because the connection is already in the disconnected state.`),Promise.resolve()):"Disconnecting"===this._connectionState?(this._logger.log(bt.Debug,`Call to HttpConnection.stop(${e}) ignored because the connection is already in the disconnecting state.`),this._stopPromise):(this._connectionState="Disconnecting",this._stopPromise=new Promise((e=>{this._stopPromiseResolver=e})),await this._stopInternal(e),void await this._stopPromise)}async _stopInternal(e){this._stopError=e;try{await this._startInternalPromise}catch(e){}if(this.transport){try{await this.transport.stop()}catch(e){this._logger.log(bt.Error,`HttpConnection.transport.stop() threw error '${e}'.`),this._stopConnection()}this.transport=void 0}else this._logger.log(bt.Debug,"HttpConnection.transport is undefined in HttpConnection.stop() because start() failed.")}async _startInternal(e){let t=this.baseUrl;this._accessTokenFactory=this._options.accessTokenFactory,this._httpClient._accessTokenFactory=this._accessTokenFactory;try{if(this._options.skipNegotiation){if(this._options.transport!==cn.WebSockets)throw new Error("Negotiation can only be skipped when using the WebSocket transport directly.");this.transport=this._constructTransport(cn.WebSockets),await this._startTransport(t,e)}else{let n=null,r=0;do{if(n=await this._getNegotiationResponse(t),"Disconnecting"===this._connectionState||"Disconnected"===this._connectionState)throw new Ot("The connection was stopped during negotiation.");if(n.error)throw new Error(n.error);if(n.ProtocolVersion)throw new Error("Detected a connection attempt to an ASP.NET SignalR Server. This client only supports connecting to an ASP.NET Core SignalR Server. See https://aka.ms/signalr-core-differences for details.");if(n.url&&(t=n.url),n.accessToken){const e=n.accessToken;this._accessTokenFactory=()=>e,this._httpClient._accessToken=e,this._httpClient._accessTokenFactory=void 0}r++}while(n.url&&r<100);if(100===r&&n.url)throw new Error("Negotiate redirection limit exceeded.");await this._createTransport(t,this._options.transport,n,e)}this.transport instanceof dn&&(this.features.inherentKeepAlive=!0),"Connecting"===this._connectionState&&(this._logger.log(bt.Debug,"The HttpConnection connected successfully."),this._connectionState="Connected")}catch(e){return this._logger.log(bt.Error,"Failed to start the connection: "+e),this._connectionState="Disconnected",this.transport=void 0,this._stopPromiseResolver(),Promise.reject(e)}}async _getNegotiationResponse(e){const t={},[n,r]=At();t[n]=r;const o=this._resolveNegotiateUrl(e);this._logger.log(bt.Debug,`Sending negotiation request: ${o}.`);try{const e=await this._httpClient.post(o,{content:"",headers:{...t,...this._options.headers},timeout:this._options.timeout,withCredentials:this._options.withCredentials});if(200!==e.statusCode)return Promise.reject(new Error(`Unexpected status code returned from negotiate '${e.statusCode}'`));const n=JSON.parse(e.content);return(!n.negotiateVersion||n.negotiateVersion<1)&&(n.connectionToken=n.connectionId),n.useStatefulReconnect&&!0!==this._options._useStatefulReconnect?Promise.reject(new Wt("Client didn't negotiate Stateful Reconnect but the server did.")):n}catch(e){let t="Failed to complete negotiation with the server: "+e;return e instanceof Lt&&404===e.statusCode&&(t+=" Either this is not a SignalR endpoint or there is a proxy blocking the connection."),this._logger.log(bt.Error,t),Promise.reject(new Wt(t))}}_createConnectUrl(e,t){return t?e+(-1===e.indexOf("?")?"?":"&")+`id=${t}`:e}async _createTransport(e,t,n,r){let o=this._createConnectUrl(e,n.connectionToken);if(this._isITransport(t))return this._logger.log(bt.Debug,"Connection was provided an instance of ITransport, using that directly."),this.transport=t,await this._startTransport(o,r),void(this.connectionId=n.connectionId);const s=[],i=n.availableTransports||[];let a=n;for(const n of i){const i=this._resolveTransportOrError(n,t,r,!0===(null==a?void 0:a.useStatefulReconnect));if(i instanceof Error)s.push(`${n.transport} failed:`),s.push(i);else if(this._isITransport(i)){if(this.transport=i,!a){try{a=await this._getNegotiationResponse(e)}catch(e){return Promise.reject(e)}o=this._createConnectUrl(e,a.connectionToken)}try{return await this._startTransport(o,r),void(this.connectionId=a.connectionId)}catch(e){if(this._logger.log(bt.Error,`Failed to start the transport '${n.transport}': ${e}`),a=void 0,s.push(new jt(`${n.transport} failed: ${e}`,cn[n.transport])),"Connecting"!==this._connectionState){const e="Failed to select transport before stop() was called.";return this._logger.log(bt.Debug,e),Promise.reject(new Ot(e))}}}}return s.length>0?Promise.reject(new zt(`Unable to connect to the server with any of the available transports. ${s.join(" ")}`,s)):Promise.reject(new Error("None of the transports supported by the client are supported by the server."))}_constructTransport(e){switch(e){case cn.WebSockets:if(!this._options.WebSocket)throw new Error("'WebSocket' is not supported in your environment.");return new pn(this._httpClient,this._accessTokenFactory,this._logger,this._options.logMessageContent,this._options.WebSocket,this._options.headers||{});case cn.ServerSentEvents:if(!this._options.EventSource)throw new Error("'EventSource' is not supported in your environment.");return new un(this._httpClient,this._httpClient._accessToken,this._logger,this._options);case cn.LongPolling:return new dn(this._httpClient,this._logger,this._options);default:throw new Error(`Unknown transport: ${e}.`)}}_startTransport(e,t){return this.transport.onreceive=this.onreceive,this.features.reconnect?this.transport.onclose=async n=>{let r=!1;if(this.features.reconnect){try{this.features.disconnected(),await this.transport.connect(e,t),await this.features.resend()}catch{r=!0}r&&this._stopConnection(n)}else this._stopConnection(n)}:this.transport.onclose=e=>this._stopConnection(e),this.transport.connect(e,t)}_resolveTransportOrError(e,t,n,r){const o=cn[e.transport];if(null==o)return this._logger.log(bt.Debug,`Skipping transport '${e.transport}' because it is not supported by this client.`),new Error(`Skipping transport '${e.transport}' because it is not supported by this client.`);if(!function(e,t){return!e||0!=(t&e)}(t,o))return this._logger.log(bt.Debug,`Skipping transport '${cn[o]}' because it was disabled by the client.`),new Ht(`'${cn[o]}' is disabled by the client.`,o);if(!(e.transferFormats.map((e=>ln[e])).indexOf(n)>=0))return this._logger.log(bt.Debug,`Skipping transport '${cn[o]}' because it does not support the requested transfer format '${ln[n]}'.`),new Error(`'${cn[o]}' does not support ${ln[n]}.`);if(o===cn.WebSockets&&!this._options.WebSocket||o===cn.ServerSentEvents&&!this._options.EventSource)return this._logger.log(bt.Debug,`Skipping transport '${cn[o]}' because it is not supported in your environment.'`),new Ft(`'${cn[o]}' is not supported in your environment.`,o);this._logger.log(bt.Debug,`Selecting transport '${cn[o]}'.`);try{return this.features.reconnect=o===cn.WebSockets?r:void 0,this._constructTransport(o)}catch(e){return e}}_isITransport(e){return e&&"object"==typeof e&&"connect"in e}_stopConnection(e){if(this._logger.log(bt.Debug,`HttpConnection.stopConnection(${e}) called while in state ${this._connectionState}.`),this.transport=void 0,e=this._stopError||e,this._stopError=void 0,"Disconnected"!==this._connectionState){if("Connecting"===this._connectionState)throw this._logger.log(bt.Warning,`Call to HttpConnection.stopConnection(${e}) was ignored because the connection is still in the connecting state.`),new Error(`HttpConnection.stopConnection(${e}) was called while the connection is still in the connecting state.`);if("Disconnecting"===this._connectionState&&this._stopPromiseResolver(),e?this._logger.log(bt.Error,`Connection disconnected with error '${e}'.`):this._logger.log(bt.Information,"Connection disconnected."),this._sendQueue&&(this._sendQueue.stop().catch((e=>{this._logger.log(bt.Error,`TransportSendQueue.stop() threw error '${e}'.`)})),this._sendQueue=void 0),this.connectionId=void 0,this._connectionState="Disconnected",this._connectionStarted){this._connectionStarted=!1;try{this.onclose&&this.onclose(e)}catch(t){this._logger.log(bt.Error,`HttpConnection.onclose(${e}) threw error '${t}'.`)}}}else this._logger.log(bt.Debug,`Call to HttpConnection.stopConnection(${e}) was ignored because the connection is already in the disconnected state.`)}_resolveUrl(e){if(0===e.lastIndexOf("https://",0)||0===e.lastIndexOf("http://",0))return e;if(!It.isBrowser)throw new Error(`Cannot resolve '${e}'.`);const t=window.document.createElement("a");return t.href=e,this._logger.log(bt.Information,`Normalizing '${e}' to '${t.href}'.`),t.href}_resolveNegotiateUrl(e){const t=new URL(e);t.pathname.endsWith("/")?t.pathname+="negotiate":t.pathname+="/negotiate";const n=new URLSearchParams(t.searchParams);return n.has("negotiateVersion")||n.append("negotiateVersion",this._negotiateVersion.toString()),n.has("useStatefulReconnect")?"true"===n.get("useStatefulReconnect")&&(this._options._useStatefulReconnect=!0):!0===this._options._useStatefulReconnect&&n.append("useStatefulReconnect","true"),t.search=n.toString(),t.toString()}}class gn{constructor(e){this._transport=e,this._buffer=[],this._executing=!0,this._sendBufferedData=new mn,this._transportResult=new mn,this._sendLoopPromise=this._sendLoop()}send(e){return this._bufferData(e),this._transportResult||(this._transportResult=new mn),this._transportResult.promise}stop(){return this._executing=!1,this._sendBufferedData.resolve(),this._sendLoopPromise}_bufferData(e){if(this._buffer.length&&typeof this._buffer[0]!=typeof e)throw new Error(`Expected data to be of type ${typeof this._buffer} but was of type ${typeof e}`);this._buffer.push(e),this._sendBufferedData.resolve()}async _sendLoop(){for(;;){if(await this._sendBufferedData.promise,!this._executing){this._transportResult&&this._transportResult.reject("Connection stopped.");break}this._sendBufferedData=new mn;const e=this._transportResult;this._transportResult=void 0;const t="string"==typeof this._buffer[0]?this._buffer.join(""):gn._concatBuffers(this._buffer);this._buffer.length=0;try{await this._transport.send(t),e.resolve()}catch(t){e.reject(t)}}}static _concatBuffers(e){const t=e.map((e=>e.byteLength)).reduce(((e,t)=>e+t)),n=new Uint8Array(t);let r=0;for(const t of e)n.set(new Uint8Array(t),r),r+=t.byteLength;return n.buffer}}class mn{constructor(){this.promise=new Promise(((e,t)=>[this._resolver,this._rejecter]=[e,t]))}resolve(){this._resolver()}reject(e){this._rejecter(e)}}class vn{constructor(){this.name="json",this.version=2,this.transferFormat=ln.Text}parseMessages(e,t){if("string"!=typeof e)throw new Error("Invalid input for JSON hub protocol. Expected a string.");if(!e)return[];null===t&&(t=St.instance);const n=_t.parse(e),r=[];for(const e of n){const n=JSON.parse(e);if("number"!=typeof n.type)throw new Error("Invalid payload.");switch(n.type){case qt.Invocation:this._isInvocationMessage(n);break;case qt.StreamItem:this._isStreamItemMessage(n);break;case qt.Completion:this._isCompletionMessage(n);break;case qt.Ping:case qt.Close:break;case qt.Ack:this._isAckMessage(n);break;case qt.Sequence:this._isSequenceMessage(n);break;default:t.log(bt.Information,"Unknown message type '"+n.type+"' ignored.");continue}r.push(n)}return r}writeMessage(e){return _t.write(JSON.stringify(e))}_isInvocationMessage(e){this._assertNotEmptyString(e.target,"Invalid payload for Invocation message."),void 0!==e.invocationId&&this._assertNotEmptyString(e.invocationId,"Invalid payload for Invocation message.")}_isStreamItemMessage(e){if(this._assertNotEmptyString(e.invocationId,"Invalid payload for StreamItem message."),void 0===e.item)throw new Error("Invalid payload for StreamItem message.")}_isCompletionMessage(e){if(e.result&&e.error)throw new Error("Invalid payload for Completion message.");!e.result&&e.error&&this._assertNotEmptyString(e.error,"Invalid payload for Completion message."),this._assertNotEmptyString(e.invocationId,"Invalid payload for Completion message.")}_isAckMessage(e){if("number"!=typeof e.sequenceId)throw new Error("Invalid SequenceId for Ack message.")}_isSequenceMessage(e){if("number"!=typeof e.sequenceId)throw new Error("Invalid SequenceId for Sequence message.")}_assertNotEmptyString(e,t){if("string"!=typeof e||""===e)throw new Error(t)}}const yn={trace:bt.Trace,debug:bt.Debug,info:bt.Information,information:bt.Information,warn:bt.Warning,warning:bt.Warning,error:bt.Error,critical:bt.Critical,none:bt.None};class wn{configureLogging(e){if(Ct.isRequired(e,"logging"),function(e){return void 0!==e.log}(e))this.logger=e;else if("string"==typeof e){const t=function(e){const t=yn[e.toLowerCase()];if(void 0!==t)return t;throw new Error(`Unknown log level: ${e}`)}(e);this.logger=new xt(t)}else this.logger=new xt(e);return this}withUrl(e,t){return Ct.isRequired(e,"url"),Ct.isNotEmpty(e,"url"),this.url=e,this.httpConnectionOptions="object"==typeof t?{...this.httpConnectionOptions,...t}:{...this.httpConnectionOptions,transport:t},this}withHubProtocol(e){return Ct.isRequired(e,"protocol"),this.protocol=e,this}withAutomaticReconnect(e){if(this.reconnectPolicy)throw new Error("A reconnectPolicy has already been set.");return e?Array.isArray(e)?this.reconnectPolicy=new Qt(e):this.reconnectPolicy=e:this.reconnectPolicy=new Qt,this}withServerTimeout(e){return Ct.isRequired(e,"milliseconds"),this._serverTimeoutInMilliseconds=e,this}withKeepAliveInterval(e){return Ct.isRequired(e,"milliseconds"),this._keepAliveIntervalInMilliseconds=e,this}withStatefulReconnect(e){return void 0===this.httpConnectionOptions&&(this.httpConnectionOptions={}),this.httpConnectionOptions._useStatefulReconnect=!0,this._statefulReconnectBufferSize=null==e?void 0:e.bufferSize,this}build(){const e=this.httpConnectionOptions||{};if(void 0===e.logger&&(e.logger=this.logger),!this.url)throw new Error("The 'HubConnectionBuilder.withUrl' method must be called before building the connection.");const t=new fn(this.url,e);return Yt.create(t,this.logger||St.instance,this.protocol||new vn,this.reconnectPolicy,this._serverTimeoutInMilliseconds,this._keepAliveIntervalInMilliseconds,this._statefulReconnectBufferSize)}}var _n;!function(e){e[e.Default=0]="Default",e[e.Server=1]="Server",e[e.WebAssembly=2]="WebAssembly",e[e.WebView=3]="WebView"}(_n||(_n={}));var bn,Sn,En,Cn=4294967295;function In(e,t,n){var r=Math.floor(n/4294967296),o=n;e.setUint32(t,r),e.setUint32(t+4,o)}function kn(e,t){return 4294967296*e.getInt32(t)+e.getUint32(t+4)}var Tn=("undefined"==typeof process||"never"!==(null===(bn=null===process||void 0===process?void 0:process.env)||void 0===bn?void 0:bn.TEXT_ENCODING))&&"undefined"!=typeof TextEncoder&&"undefined"!=typeof TextDecoder;function Dn(e){for(var t=e.length,n=0,r=0;r=55296&&o<=56319&&r65535&&(h-=65536,s.push(h>>>10&1023|55296),h=56320|1023&h),s.push(h)}else s.push(a);s.length>=4096&&(i+=String.fromCharCode.apply(String,s),s.length=0)}return s.length>0&&(i+=String.fromCharCode.apply(String,s)),i}var Nn,Un=Tn?new TextDecoder:null,Mn=Tn?"undefined"!=typeof process&&"force"!==(null===(En=null===process||void 0===process?void 0:process.env)||void 0===En?void 0:En.TEXT_DECODER)?200:0:Cn,Bn=function(e,t){this.type=e,this.data=t},Ln=(Nn=function(e,t){return Nn=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},Nn(e,t)},function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function n(){this.constructor=e}Nn(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}),$n=function(e){function t(n){var r=e.call(this,n)||this,o=Object.create(t.prototype);return Object.setPrototypeOf(r,o),Object.defineProperty(r,"name",{configurable:!0,enumerable:!1,value:t.name}),r}return Ln(t,e),t}(Error),On={type:-1,encode:function(e){var t,n,r,o;return e instanceof Date?function(e){var t,n=e.sec,r=e.nsec;if(n>=0&&r>=0&&n<=17179869183){if(0===r&&n<=4294967295){var o=new Uint8Array(4);return(t=new DataView(o.buffer)).setUint32(0,n),o}var s=n/4294967296,i=4294967295&n;return o=new Uint8Array(8),(t=new DataView(o.buffer)).setUint32(0,r<<2|3&s),t.setUint32(4,i),o}return o=new Uint8Array(12),(t=new DataView(o.buffer)).setUint32(0,r),In(t,4,n),o}((r=1e6*((t=e.getTime())-1e3*(n=Math.floor(t/1e3))),{sec:n+(o=Math.floor(r/1e9)),nsec:r-1e9*o})):null},decode:function(e){var t=function(e){var t=new DataView(e.buffer,e.byteOffset,e.byteLength);switch(e.byteLength){case 4:return{sec:t.getUint32(0),nsec:0};case 8:var n=t.getUint32(0);return{sec:4294967296*(3&n)+t.getUint32(4),nsec:n>>>2};case 12:return{sec:kn(t,4),nsec:t.getUint32(0)};default:throw new $n("Unrecognized data size for timestamp (expected 4, 8, or 12): ".concat(e.length))}}(e);return new Date(1e3*t.sec+t.nsec/1e6)}},Fn=function(){function e(){this.builtInEncoders=[],this.builtInDecoders=[],this.encoders=[],this.decoders=[],this.register(On)}return e.prototype.register=function(e){var t=e.type,n=e.encode,r=e.decode;if(t>=0)this.encoders[t]=n,this.decoders[t]=r;else{var o=1+t;this.builtInEncoders[o]=n,this.builtInDecoders[o]=r}},e.prototype.tryToEncode=function(e,t){for(var n=0;nthis.maxDepth)throw new Error("Too deep objects in depth ".concat(t));null==e?this.encodeNil():"boolean"==typeof e?this.encodeBoolean(e):"number"==typeof e?this.encodeNumber(e):"string"==typeof e?this.encodeString(e):this.encodeObject(e,t)},e.prototype.ensureBufferSizeToWrite=function(e){var t=this.pos+e;this.view.byteLength=0?e<128?this.writeU8(e):e<256?(this.writeU8(204),this.writeU8(e)):e<65536?(this.writeU8(205),this.writeU16(e)):e<4294967296?(this.writeU8(206),this.writeU32(e)):(this.writeU8(207),this.writeU64(e)):e>=-32?this.writeU8(224|e+32):e>=-128?(this.writeU8(208),this.writeI8(e)):e>=-32768?(this.writeU8(209),this.writeI16(e)):e>=-2147483648?(this.writeU8(210),this.writeI32(e)):(this.writeU8(211),this.writeI64(e)):this.forceFloat32?(this.writeU8(202),this.writeF32(e)):(this.writeU8(203),this.writeF64(e))},e.prototype.writeStringHeader=function(e){if(e<32)this.writeU8(160+e);else if(e<256)this.writeU8(217),this.writeU8(e);else if(e<65536)this.writeU8(218),this.writeU16(e);else{if(!(e<4294967296))throw new Error("Too long string: ".concat(e," bytes in UTF-8"));this.writeU8(219),this.writeU32(e)}},e.prototype.encodeString=function(e){if(e.length>xn){var t=Dn(e);this.ensureBufferSizeToWrite(5+t),this.writeStringHeader(t),An(e,this.bytes,this.pos),this.pos+=t}else t=Dn(e),this.ensureBufferSizeToWrite(5+t),this.writeStringHeader(t),function(e,t,n){for(var r=e.length,o=n,s=0;s>6&31|192;else{if(i>=55296&&i<=56319&&s>12&15|224,t[o++]=i>>6&63|128):(t[o++]=i>>18&7|240,t[o++]=i>>12&63|128,t[o++]=i>>6&63|128)}t[o++]=63&i|128}else t[o++]=i}}(e,this.bytes,this.pos),this.pos+=t},e.prototype.encodeObject=function(e,t){var n=this.extensionCodec.tryToEncode(e,this.context);if(null!=n)this.encodeExtension(n);else if(Array.isArray(e))this.encodeArray(e,t);else if(ArrayBuffer.isView(e))this.encodeBinary(e);else{if("object"!=typeof e)throw new Error("Unrecognized object: ".concat(Object.prototype.toString.apply(e)));this.encodeMap(e,t)}},e.prototype.encodeBinary=function(e){var t=e.byteLength;if(t<256)this.writeU8(196),this.writeU8(t);else if(t<65536)this.writeU8(197),this.writeU16(t);else{if(!(t<4294967296))throw new Error("Too large binary: ".concat(t));this.writeU8(198),this.writeU32(t)}var n=Hn(e);this.writeU8a(n)},e.prototype.encodeArray=function(e,t){var n=e.length;if(n<16)this.writeU8(144+n);else if(n<65536)this.writeU8(220),this.writeU16(n);else{if(!(n<4294967296))throw new Error("Too large array: ".concat(n));this.writeU8(221),this.writeU32(n)}for(var r=0,o=e;r0&&e<=this.maxKeyLength},e.prototype.find=function(e,t,n){e:for(var r=0,o=this.caches[n-1];r=this.maxLengthPerKey?n[Math.random()*n.length|0]=r:n.push(r)},e.prototype.decode=function(e,t,n){var r=this.find(e,t,n);if(null!=r)return this.hit++,r;this.miss++;var o=Pn(e,t,n),s=Uint8Array.prototype.slice.call(e,t,t+n);return this.store(s,o),o},e}(),qn=function(e,t){var n,r,o,s,i={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return s={next:a(0),throw:a(1),return:a(2)},"function"==typeof Symbol&&(s[Symbol.iterator]=function(){return this}),s;function a(s){return function(a){return function(s){if(n)throw new TypeError("Generator is already executing.");for(;i;)try{if(n=1,r&&(o=2&s[0]?r.return:s[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,s[1])).done)return o;switch(r=0,o&&(s=[2&s[0],o.value]),s[0]){case 0:case 1:o=s;break;case 4:return i.label++,{value:s[1],done:!1};case 5:i.label++,r=s[1],s=[0];continue;case 7:s=i.ops.pop(),i.trys.pop();continue;default:if(!((o=(o=i.trys).length>0&&o[o.length-1])||6!==s[0]&&2!==s[0])){i=0;continue}if(3===s[0]&&(!o||s[1]>o[0]&&s[1]=e},e.prototype.createExtraByteError=function(e){var t=this.view,n=this.pos;return new RangeError("Extra ".concat(t.byteLength-n," of ").concat(t.byteLength," byte(s) found at buffer[").concat(e,"]"))},e.prototype.decode=function(e){this.reinitializeState(),this.setBuffer(e);var t=this.doDecodeSync();if(this.hasRemaining(1))throw this.createExtraByteError(this.pos);return t},e.prototype.decodeMulti=function(e){return qn(this,(function(t){switch(t.label){case 0:this.reinitializeState(),this.setBuffer(e),t.label=1;case 1:return this.hasRemaining(1)?[4,this.doDecodeSync()]:[3,3];case 2:return t.sent(),[3,1];case 3:return[2]}}))},e.prototype.decodeAsync=function(e){var t,n,r,o,s,i,a;return s=this,void 0,a=function(){var s,i,a,c,l,h,d,u;return qn(this,(function(p){switch(p.label){case 0:s=!1,p.label=1;case 1:p.trys.push([1,6,7,12]),t=Jn(e),p.label=2;case 2:return[4,t.next()];case 3:if((n=p.sent()).done)return[3,5];if(a=n.value,s)throw this.createExtraByteError(this.totalPos);this.appendBuffer(a);try{i=this.doDecodeSync(),s=!0}catch(e){if(!(e instanceof Yn))throw e}this.totalPos+=this.pos,p.label=4;case 4:return[3,2];case 5:return[3,12];case 6:return c=p.sent(),r={error:c},[3,12];case 7:return p.trys.push([7,,10,11]),n&&!n.done&&(o=t.return)?[4,o.call(t)]:[3,9];case 8:p.sent(),p.label=9;case 9:return[3,11];case 10:if(r)throw r.error;return[7];case 11:return[7];case 12:if(s){if(this.hasRemaining(1))throw this.createExtraByteError(this.totalPos);return[2,i]}throw h=(l=this).headByte,d=l.pos,u=l.totalPos,new RangeError("Insufficient data in parsing ".concat(Wn(h)," at ").concat(u," (").concat(d," in the current buffer)"))}}))},new((i=void 0)||(i=Promise))((function(e,t){function n(e){try{o(a.next(e))}catch(e){t(e)}}function r(e){try{o(a.throw(e))}catch(e){t(e)}}function o(t){var o;t.done?e(t.value):(o=t.value,o instanceof i?o:new i((function(e){e(o)}))).then(n,r)}o((a=a.apply(s,[])).next())}))},e.prototype.decodeArrayStream=function(e){return this.decodeMultiAsync(e,!0)},e.prototype.decodeStream=function(e){return this.decodeMultiAsync(e,!1)},e.prototype.decodeMultiAsync=function(e,t){return function(n,r,o){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var s,i=function(){var n,r,o,s,i,a,c,l,h;return qn(this,(function(d){switch(d.label){case 0:n=t,r=-1,d.label=1;case 1:d.trys.push([1,13,14,19]),o=Jn(e),d.label=2;case 2:return[4,Kn(o.next())];case 3:if((s=d.sent()).done)return[3,12];if(i=s.value,t&&0===r)throw this.createExtraByteError(this.totalPos);this.appendBuffer(i),n&&(r=this.readArraySize(),n=!1,this.complete()),d.label=4;case 4:d.trys.push([4,9,,10]),d.label=5;case 5:return[4,Kn(this.doDecodeSync())];case 6:return[4,d.sent()];case 7:return d.sent(),0==--r?[3,8]:[3,5];case 8:return[3,10];case 9:if(!((a=d.sent())instanceof Yn))throw a;return[3,10];case 10:this.totalPos+=this.pos,d.label=11;case 11:return[3,2];case 12:return[3,19];case 13:return c=d.sent(),l={error:c},[3,19];case 14:return d.trys.push([14,,17,18]),s&&!s.done&&(h=o.return)?[4,Kn(h.call(o))]:[3,16];case 15:d.sent(),d.label=16;case 16:return[3,18];case 17:if(l)throw l.error;return[7];case 18:return[7];case 19:return[2]}}))}.apply(n,r||[]),a=[];return s={},c("next"),c("throw"),c("return"),s[Symbol.asyncIterator]=function(){return this},s;function c(e){i[e]&&(s[e]=function(t){return new Promise((function(n,r){a.push([e,t,n,r])>1||l(e,t)}))})}function l(e,t){try{(n=i[e](t)).value instanceof Kn?Promise.resolve(n.value.v).then(h,d):u(a[0][2],n)}catch(e){u(a[0][3],e)}var n}function h(e){l("next",e)}function d(e){l("throw",e)}function u(e,t){e(t),a.shift(),a.length&&l(a[0][0],a[0][1])}}(this,arguments)},e.prototype.doDecodeSync=function(){e:for(;;){var e=this.readHeadByte(),t=void 0;if(e>=224)t=e-256;else if(e<192)if(e<128)t=e;else if(e<144){if(0!=(r=e-128)){this.pushMapState(r),this.complete();continue e}t={}}else if(e<160){if(0!=(r=e-144)){this.pushArrayState(r),this.complete();continue e}t=[]}else{var n=e-160;t=this.decodeUtf8String(n,0)}else if(192===e)t=null;else if(194===e)t=!1;else if(195===e)t=!0;else if(202===e)t=this.readF32();else if(203===e)t=this.readF64();else if(204===e)t=this.readU8();else if(205===e)t=this.readU16();else if(206===e)t=this.readU32();else if(207===e)t=this.readU64();else if(208===e)t=this.readI8();else if(209===e)t=this.readI16();else if(210===e)t=this.readI32();else if(211===e)t=this.readI64();else if(217===e)n=this.lookU8(),t=this.decodeUtf8String(n,1);else if(218===e)n=this.lookU16(),t=this.decodeUtf8String(n,2);else if(219===e)n=this.lookU32(),t=this.decodeUtf8String(n,4);else if(220===e){if(0!==(r=this.readU16())){this.pushArrayState(r),this.complete();continue e}t=[]}else if(221===e){if(0!==(r=this.readU32())){this.pushArrayState(r),this.complete();continue e}t=[]}else if(222===e){if(0!==(r=this.readU16())){this.pushMapState(r),this.complete();continue e}t={}}else if(223===e){if(0!==(r=this.readU32())){this.pushMapState(r),this.complete();continue e}t={}}else if(196===e){var r=this.lookU8();t=this.decodeBinary(r,1)}else if(197===e)r=this.lookU16(),t=this.decodeBinary(r,2);else if(198===e)r=this.lookU32(),t=this.decodeBinary(r,4);else if(212===e)t=this.decodeExtension(1,0);else if(213===e)t=this.decodeExtension(2,0);else if(214===e)t=this.decodeExtension(4,0);else if(215===e)t=this.decodeExtension(8,0);else if(216===e)t=this.decodeExtension(16,0);else if(199===e)r=this.lookU8(),t=this.decodeExtension(r,1);else if(200===e)r=this.lookU16(),t=this.decodeExtension(r,2);else{if(201!==e)throw new $n("Unrecognized type byte: ".concat(Wn(e)));r=this.lookU32(),t=this.decodeExtension(r,4)}this.complete();for(var o=this.stack;o.length>0;){var s=o[o.length-1];if(0===s.type){if(s.array[s.position]=t,s.position++,s.position!==s.size)continue e;o.pop(),t=s.array}else{if(1===s.type){if("string"!=(i=typeof t)&&"number"!==i)throw new $n("The type of key must be string or number but "+typeof t);if("__proto__"===t)throw new $n("The key __proto__ is not allowed");s.key=t,s.type=2;continue e}if(s.map[s.key]=t,s.readCount++,s.readCount!==s.size){s.key=null,s.type=1;continue e}o.pop(),t=s.map}}return t}var i},e.prototype.readHeadByte=function(){return-1===this.headByte&&(this.headByte=this.readU8()),this.headByte},e.prototype.complete=function(){this.headByte=-1},e.prototype.readArraySize=function(){var e=this.readHeadByte();switch(e){case 220:return this.readU16();case 221:return this.readU32();default:if(e<160)return e-144;throw new $n("Unrecognized array type byte: ".concat(Wn(e)))}},e.prototype.pushMapState=function(e){if(e>this.maxMapLength)throw new $n("Max length exceeded: map length (".concat(e,") > maxMapLengthLength (").concat(this.maxMapLength,")"));this.stack.push({type:1,size:e,key:null,readCount:0,map:{}})},e.prototype.pushArrayState=function(e){if(e>this.maxArrayLength)throw new $n("Max length exceeded: array length (".concat(e,") > maxArrayLength (").concat(this.maxArrayLength,")"));this.stack.push({type:0,size:e,array:new Array(e),position:0})},e.prototype.decodeUtf8String=function(e,t){var n;if(e>this.maxStrLength)throw new $n("Max length exceeded: UTF-8 byte length (".concat(e,") > maxStrLength (").concat(this.maxStrLength,")"));if(this.bytes.byteLengthMn?function(e,t,n){var r=e.subarray(t,t+n);return Un.decode(r)}(this.bytes,o,e):Pn(this.bytes,o,e),this.pos+=t+e,r},e.prototype.stateIsMapKey=function(){return this.stack.length>0&&1===this.stack[this.stack.length-1].type},e.prototype.decodeBinary=function(e,t){if(e>this.maxBinLength)throw new $n("Max length exceeded: bin length (".concat(e,") > maxBinLength (").concat(this.maxBinLength,")"));if(!this.hasRemaining(e+t))throw Gn;var n=this.pos+t,r=this.bytes.subarray(n,n+e);return this.pos+=t+e,r},e.prototype.decodeExtension=function(e,t){if(e>this.maxExtLength)throw new $n("Max length exceeded: ext length (".concat(e,") > maxExtLength (").concat(this.maxExtLength,")"));var n=this.view.getInt8(this.pos+t),r=this.decodeBinary(e,t+1);return this.extensionCodec.decode(r,n,this.context)},e.prototype.lookU8=function(){return this.view.getUint8(this.pos)},e.prototype.lookU16=function(){return this.view.getUint16(this.pos)},e.prototype.lookU32=function(){return this.view.getUint32(this.pos)},e.prototype.readU8=function(){var e=this.view.getUint8(this.pos);return this.pos++,e},e.prototype.readI8=function(){var e=this.view.getInt8(this.pos);return this.pos++,e},e.prototype.readU16=function(){var e=this.view.getUint16(this.pos);return this.pos+=2,e},e.prototype.readI16=function(){var e=this.view.getInt16(this.pos);return this.pos+=2,e},e.prototype.readU32=function(){var e=this.view.getUint32(this.pos);return this.pos+=4,e},e.prototype.readI32=function(){var e=this.view.getInt32(this.pos);return this.pos+=4,e},e.prototype.readU64=function(){var e,t,n=(e=this.view,t=this.pos,4294967296*e.getUint32(t)+e.getUint32(t+4));return this.pos+=8,n},e.prototype.readI64=function(){var e=kn(this.view,this.pos);return this.pos+=8,e},e.prototype.readF32=function(){var e=this.view.getFloat32(this.pos);return this.pos+=4,e},e.prototype.readF64=function(){var e=this.view.getFloat64(this.pos);return this.pos+=8,e},e}();class er{static write(e){let t=e.byteLength||e.length;const n=[];do{let e=127&t;t>>=7,t>0&&(e|=128),n.push(e)}while(t>0);t=e.byteLength||e.length;const r=new Uint8Array(n.length+t);return r.set(n,0),r.set(e,n.length),r.buffer}static parse(e){const t=[],n=new Uint8Array(e),r=[0,7,14,21,28];for(let o=0;o7)throw new Error("Messages bigger than 2GB are not supported.");if(!(n.byteLength>=o+i+a))throw new Error("Incomplete message.");t.push(n.slice?n.slice(o+i,o+i+a):n.subarray(o+i,o+i+a)),o=o+i+a}return t}}const tr=new Uint8Array([145,qt.Ping]);class nr{constructor(e){this.name="messagepack",this.version=2,this.transferFormat=ln.Binary,this._errorResult=1,this._voidResult=2,this._nonVoidResult=3,e=e||{},this._encoder=new jn(e.extensionCodec,e.context,e.maxDepth,e.initialBufferSize,e.sortKeys,e.forceFloat32,e.ignoreUndefined,e.forceIntegerToFloat),this._decoder=new Zn(e.extensionCodec,e.context,e.maxStrLength,e.maxBinLength,e.maxArrayLength,e.maxMapLength,e.maxExtLength)}parseMessages(e,t){if(!(n=e)||"undefined"==typeof ArrayBuffer||!(n instanceof ArrayBuffer||n.constructor&&"ArrayBuffer"===n.constructor.name))throw new Error("Invalid input for MessagePack hub protocol. Expected an ArrayBuffer.");var n;null===t&&(t=St.instance);const r=er.parse(e),o=[];for(const e of r){const n=this._parseMessage(e,t);n&&o.push(n)}return o}writeMessage(e){switch(e.type){case qt.Invocation:return this._writeInvocation(e);case qt.StreamInvocation:return this._writeStreamInvocation(e);case qt.StreamItem:return this._writeStreamItem(e);case qt.Completion:return this._writeCompletion(e);case qt.Ping:return er.write(tr);case qt.CancelInvocation:return this._writeCancelInvocation(e);case qt.Close:return this._writeClose();case qt.Ack:return this._writeAck(e);case qt.Sequence:return this._writeSequence(e);default:throw new Error("Invalid message type.")}}_parseMessage(e,t){if(0===e.length)throw new Error("Invalid payload.");const n=this._decoder.decode(e);if(0===n.length||!(n instanceof Array))throw new Error("Invalid payload.");const r=n[0];switch(r){case qt.Invocation:return this._createInvocationMessage(this._readHeaders(n),n);case qt.StreamItem:return this._createStreamItemMessage(this._readHeaders(n),n);case qt.Completion:return this._createCompletionMessage(this._readHeaders(n),n);case qt.Ping:return this._createPingMessage(n);case qt.Close:return this._createCloseMessage(n);case qt.Ack:return this._createAckMessage(n);case qt.Sequence:return this._createSequenceMessage(n);default:return t.log(bt.Information,"Unknown message type '"+r+"' ignored."),null}}_createCloseMessage(e){if(e.length<2)throw new Error("Invalid payload for Close message.");return{allowReconnect:e.length>=3?e[2]:void 0,error:e[1],type:qt.Close}}_createPingMessage(e){if(e.length<1)throw new Error("Invalid payload for Ping message.");return{type:qt.Ping}}_createInvocationMessage(e,t){if(t.length<5)throw new Error("Invalid payload for Invocation message.");const n=t[2];return n?{arguments:t[4],headers:e,invocationId:n,streamIds:[],target:t[3],type:qt.Invocation}:{arguments:t[4],headers:e,streamIds:[],target:t[3],type:qt.Invocation}}_createStreamItemMessage(e,t){if(t.length<4)throw new Error("Invalid payload for StreamItem message.");return{headers:e,invocationId:t[2],item:t[3],type:qt.StreamItem}}_createCompletionMessage(e,t){if(t.length<4)throw new Error("Invalid payload for Completion message.");const n=t[3];if(n!==this._voidResult&&t.length<5)throw new Error("Invalid payload for Completion message.");let r,o;switch(n){case this._errorResult:r=t[4];break;case this._nonVoidResult:o=t[4]}return{error:r,headers:e,invocationId:t[2],result:o,type:qt.Completion}}_createAckMessage(e){if(e.length<1)throw new Error("Invalid payload for Ack message.");return{sequenceId:e[1],type:qt.Ack}}_createSequenceMessage(e){if(e.length<1)throw new Error("Invalid payload for Sequence message.");return{sequenceId:e[1],type:qt.Sequence}}_writeInvocation(e){let t;return t=e.streamIds?this._encoder.encode([qt.Invocation,e.headers||{},e.invocationId||null,e.target,e.arguments,e.streamIds]):this._encoder.encode([qt.Invocation,e.headers||{},e.invocationId||null,e.target,e.arguments]),er.write(t.slice())}_writeStreamInvocation(e){let t;return t=e.streamIds?this._encoder.encode([qt.StreamInvocation,e.headers||{},e.invocationId,e.target,e.arguments,e.streamIds]):this._encoder.encode([qt.StreamInvocation,e.headers||{},e.invocationId,e.target,e.arguments]),er.write(t.slice())}_writeStreamItem(e){const t=this._encoder.encode([qt.StreamItem,e.headers||{},e.invocationId,e.item]);return er.write(t.slice())}_writeCompletion(e){const t=e.error?this._errorResult:void 0!==e.result?this._nonVoidResult:this._voidResult;let n;switch(t){case this._errorResult:n=this._encoder.encode([qt.Completion,e.headers||{},e.invocationId,t,e.error]);break;case this._voidResult:n=this._encoder.encode([qt.Completion,e.headers||{},e.invocationId,t]);break;case this._nonVoidResult:n=this._encoder.encode([qt.Completion,e.headers||{},e.invocationId,t,e.result])}return er.write(n.slice())}_writeCancelInvocation(e){const t=this._encoder.encode([qt.CancelInvocation,e.headers||{},e.invocationId]);return er.write(t.slice())}_writeClose(){const e=this._encoder.encode([qt.Close,null]);return er.write(e.slice())}_writeAck(e){const t=this._encoder.encode([qt.Ack,e.sequenceId]);return er.write(t.slice())}_writeSequence(e){const t=this._encoder.encode([qt.Sequence,e.sequenceId]);return er.write(t.slice())}_readHeaders(e){const t=e[1];if("object"!=typeof t)throw new Error("Invalid headers.");return t}}const rr="function"==typeof TextDecoder?new TextDecoder("utf-8"):null,or=rr?rr.decode.bind(rr):function(e){let t=0;const n=e.length,r=[],o=[];for(;t65535&&(o-=65536,r.push(o>>>10&1023|55296),o=56320|1023&o),r.push(o)}r.length>1024&&(o.push(String.fromCharCode.apply(null,r)),r.length=0)}return o.push(String.fromCharCode.apply(null,r)),o.join("")},sr=Math.pow(2,32),ir=Math.pow(2,21)-1;function ar(e,t){return e[t]|e[t+1]<<8|e[t+2]<<16|e[t+3]<<24}function cr(e,t){return e[t]+(e[t+1]<<8)+(e[t+2]<<16)+(e[t+3]<<24>>>0)}function lr(e,t){const n=cr(e,t+4);if(n>ir)throw new Error(`Cannot read uint64 with high order part ${n}, because the result would exceed Number.MAX_SAFE_INTEGER.`);return n*sr+cr(e,t)}class hr{constructor(e){this.batchData=e;const t=new fr(e);this.arrayRangeReader=new gr(e),this.arrayBuilderSegmentReader=new mr(e),this.diffReader=new dr(e),this.editReader=new ur(e,t),this.frameReader=new pr(e,t)}updatedComponents(){return ar(this.batchData,this.batchData.length-20)}referenceFrames(){return ar(this.batchData,this.batchData.length-16)}disposedComponentIds(){return ar(this.batchData,this.batchData.length-12)}disposedEventHandlerIds(){return ar(this.batchData,this.batchData.length-8)}updatedComponentsEntry(e,t){const n=e+4*t;return ar(this.batchData,n)}referenceFramesEntry(e,t){return e+20*t}disposedComponentIdsEntry(e,t){const n=e+4*t;return ar(this.batchData,n)}disposedEventHandlerIdsEntry(e,t){const n=e+8*t;return lr(this.batchData,n)}}class dr{constructor(e){this.batchDataUint8=e}componentId(e){return ar(this.batchDataUint8,e)}edits(e){return e+4}editsEntry(e,t){return e+16*t}}class ur{constructor(e,t){this.batchDataUint8=e,this.stringReader=t}editType(e){return ar(this.batchDataUint8,e)}siblingIndex(e){return ar(this.batchDataUint8,e+4)}newTreeIndex(e){return ar(this.batchDataUint8,e+8)}moveToSiblingIndex(e){return ar(this.batchDataUint8,e+8)}removedAttributeName(e){const t=ar(this.batchDataUint8,e+12);return this.stringReader.readString(t)}}class pr{constructor(e,t){this.batchDataUint8=e,this.stringReader=t}frameType(e){return ar(this.batchDataUint8,e)}subtreeLength(e){return ar(this.batchDataUint8,e+4)}elementReferenceCaptureId(e){const t=ar(this.batchDataUint8,e+4);return this.stringReader.readString(t)}componentId(e){return ar(this.batchDataUint8,e+8)}elementName(e){const t=ar(this.batchDataUint8,e+8);return this.stringReader.readString(t)}textContent(e){const t=ar(this.batchDataUint8,e+4);return this.stringReader.readString(t)}markupContent(e){const t=ar(this.batchDataUint8,e+4);return this.stringReader.readString(t)}attributeName(e){const t=ar(this.batchDataUint8,e+4);return this.stringReader.readString(t)}attributeValue(e){const t=ar(this.batchDataUint8,e+8);return this.stringReader.readString(t)}attributeEventHandlerId(e){return lr(this.batchDataUint8,e+12)}}class fr{constructor(e){this.batchDataUint8=e,this.stringTableStartIndex=ar(e,e.length-4)}readString(e){if(-1===e)return null;{const n=ar(this.batchDataUint8,this.stringTableStartIndex+4*e),r=function(e,t){let n=0,r=0;for(let o=0;o<4;o++){const s=e[t+o];if(n|=(127&s)<this.nextBatchId)return this.fatalError?(this.logger.log(st.Debug,`Received a new batch ${e} but errored out on a previous batch ${this.nextBatchId-1}`),void await n.send("OnRenderCompleted",this.nextBatchId-1,this.fatalError.toString())):void this.logger.log(st.Debug,`Waiting for batch ${this.nextBatchId}. Batch ${e} not processed.`);try{this.nextBatchId++,this.logger.log(st.Debug,`Applying batch ${e}.`),function(e,t){const n=ge[e];if(!n)throw new Error(`There is no browser renderer with ID ${e}.`);const r=t.arrayRangeReader,o=t.updatedComponents(),s=r.values(o),i=r.count(o),a=t.referenceFrames(),c=r.values(a),l=t.diffReader;for(let e=0;e{e.onclick=function(e){location.reload(),e.preventDefault()}})),document.querySelectorAll("#blazor-error-ui .dismiss").forEach((e=>{e.onclick=function(e){const t=document.querySelector("#blazor-error-ui");t&&(t.style.display="none"),e.preventDefault()}})))}class kr{constructor(t,n,r,o){this._firstUpdate=!0,this._renderingFailed=!1,this._disposed=!1,this._circuitId=void 0,this._applicationState=n,this._componentManager=t,this._options=r,this._logger=o,this._renderQueue=new vr(this._logger),this._dispatcher=e.attachDispatcher(this)}start(){if(this.isDisposedOrDisposing())throw new Error("Cannot start a disposed circuit.");return this._startPromise||(this._startPromise=this.startCore()),this._startPromise}updateRootComponents(e){var t,n;return this._firstUpdate?(this._firstUpdate=!1,null===(t=this._connection)||void 0===t?void 0:t.send("UpdateRootComponents",e,this._applicationState)):null===(n=this._connection)||void 0===n?void 0:n.send("UpdateRootComponents",e,"")}async startCore(){if(this._connection=await this.startConnection(),this._connection.state!==Jt.Connected)return!1;const e=JSON.stringify(this._componentManager.initialComponents.map((e=>{return t=e,{...t,start:void 0,end:void 0};var t})));if(this._circuitId=await this._connection.invoke("StartCircuit",Ue.getBaseURI(),Ue.getLocationHref(),e,this._applicationState||""),!this._circuitId)return!1;for(const e of this._options.circuitHandlers)e.onCircuitOpened&&e.onCircuitOpened();return!0}async startConnection(){var e,t;const n=new nr;n.name="blazorpack";const r=(new wn).withUrl("_blazor").withHubProtocol(n);this._options.configureSignalR(r);const o=r.build();o.on("JS.AttachComponent",((e,t)=>function(e,t,n,r){let o=ge[e];o||(o=new de(e),ge[e]=o),o.attachRootComponentToLogicalElement(n,t,!1)}(_n.Server,this.resolveElement(t),e))),o.on("JS.BeginInvokeJS",this._dispatcher.beginInvokeJSFromDotNet.bind(this._dispatcher)),o.on("JS.EndInvokeDotNet",this._dispatcher.endInvokeDotNetFromJS.bind(this._dispatcher)),o.on("JS.ReceiveByteArray",this._dispatcher.receiveByteArray.bind(this._dispatcher)),o.on("JS.BeginTransmitStream",(e=>{const t=new ReadableStream({start:t=>{o.stream("SendDotNetStreamToJS",e).subscribe({next:e=>t.enqueue(e),complete:()=>t.close(),error:e=>t.error(e)})}});this._dispatcher.supplyDotNetStream(e,t)})),o.on("JS.RenderBatch",(async(e,t)=>{var n,r;this._logger.log(bt.Debug,`Received render batch with id ${e} and ${t.byteLength} bytes.`),await this._renderQueue.processBatch(e,t,this._connection),null===(r=(n=this._componentManager).onAfterRenderBatch)||void 0===r||r.call(n,_n.Server)})),o.on("JS.EndUpdateRootComponents",(e=>{var t,n;null===(n=(t=this._componentManager).onAfterUpdateRootComponents)||void 0===n||n.call(t,e)})),o.on("JS.EndLocationChanging",ot._internal.navigationManager.endLocationChanging),o.onclose((e=>{this._interopMethodsForReconnection=function(e){const t=S.get(e);if(!t)throw new Error(`Interop methods are not registered for renderer ${e}`);return S.delete(e),t}(_n.Server),this._disposed||this._renderingFailed||this._options.reconnectionHandler.onConnectionDown(this._options.reconnectionOptions,e)})),o.on("JS.Error",(e=>{this._renderingFailed=!0,this.unhandledError(e),Ir()}));try{await o.start()}catch(e){if(this.unhandledError(e),"FailedToNegotiateWithServerError"===e.errorType)throw e;Ir(),e.innerErrors&&(e.innerErrors.some((e=>"UnsupportedTransportError"===e.errorType&&e.transport===cn.WebSockets))?this._logger.log(bt.Error,"Unable to connect, please ensure you are using an updated browser that supports WebSockets."):e.innerErrors.some((e=>"FailedToStartTransportError"===e.errorType&&e.transport===cn.WebSockets))?this._logger.log(bt.Error,"Unable to connect, please ensure WebSockets are available. A VPN or proxy may be blocking the connection."):e.innerErrors.some((e=>"DisabledTransportError"===e.errorType&&e.transport===cn.LongPolling))&&this._logger.log(bt.Error,"Unable to initiate a SignalR connection to the server. This might be because the server is not configured to support WebSockets. For additional details, visit https://aka.ms/blazor-server-websockets-error."))}return(null===(t=null===(e=o.connection)||void 0===e?void 0:e.features)||void 0===t?void 0:t.inherentKeepAlive)&&this._logger.log(bt.Warning,"Failed to connect via WebSockets, using the Long Polling fallback transport. This may be due to a VPN or proxy blocking the connection. To troubleshoot this, visit https://aka.ms/blazor-server-using-fallback-long-polling."),o}async disconnect(){var e;await(null===(e=this._connection)||void 0===e?void 0:e.stop())}async reconnect(){if(!this._circuitId)throw new Error("Circuit host not initialized.");return this._connection.state===Jt.Connected||(this._connection=await this.startConnection(),this._interopMethodsForReconnection&&(I(_n.Server,this._interopMethodsForReconnection),this._interopMethodsForReconnection=void 0),!!await this._connection.invoke("ConnectCircuit",this._circuitId)&&(this._options.reconnectionHandler.onConnectionUp(),!0))}beginInvokeDotNetFromJS(e,t,n,r,o){this.throwIfDispatchingWhenDisposed(),this._connection.send("BeginInvokeDotNetFromJS",e?e.toString():null,t,n,r||0,o)}endInvokeJSFromDotNet(e,t,n){this.throwIfDispatchingWhenDisposed(),this._connection.send("EndInvokeJSFromDotNet",e,t,n)}sendByteArray(e,t){this.throwIfDispatchingWhenDisposed(),this._connection.send("ReceiveByteArray",e,t)}throwIfDispatchingWhenDisposed(){if(this._disposed)throw new Error("The circuit associated with this dispatcher is no longer available.")}sendLocationChanged(e,t,n){return this._connection.send("OnLocationChanged",e,t,n)}sendLocationChanging(e,t,n,r){return this._connection.send("OnLocationChanging",e,t,n,r)}sendJsDataStream(e,t,n){return function(e,t,n,r){setTimeout((async()=>{let o=5,s=(new Date).valueOf();try{const i=t instanceof Blob?t.size:t.byteLength;let a=0,c=0;for(;a1)await e.send("ReceiveJSDataChunk",n,c,h,null);else{if(!await e.invoke("ReceiveJSDataChunk",n,c,h,null))break;const t=(new Date).valueOf(),r=t-s;s=t,o=Math.max(1,Math.round(500/Math.max(1,r)))}a+=l,c++}}catch(t){await e.send("ReceiveJSDataChunk",n,-1,null,t.toString())}}),0)}(this._connection,e,t,n)}resolveElement(e){const t=function(e){const t=f.get(e);if(t)return f.delete(e),t}(e);if(t)return O(t,!0);const n=Number.parseInt(e);if(!Number.isNaN(n))return function(e){const{start:t,end:n}=e,r=t[$];if(r){if(r!==e)throw new Error("The start component comment was already associated with another component descriptor.");return t}const o=t.parentNode;if(!o)throw new Error(`Comment not connected to the DOM ${t.textContent}`);const s=O(o,!0),i=K(s);t[L]=s,t[$]=e;const a=O(t);if(n){const e=K(a),r=Array.prototype.indexOf.call(i,a)+1;let o=null;for(;o!==n;){const n=i.splice(r,1)[0];if(!n)throw new Error("Could not find the end component comment in the parent logical node list");n[L]=t,e.push(n),o=n}}return a}(this._componentManager.resolveRootComponent(n));throw new Error(`Invalid sequence number or identifier '${e}'.`)}getRootComponentManager(){return this._componentManager}unhandledError(e){this._logger.log(bt.Error,e),this.disconnect()}getDisconnectFormData(){const e=new FormData,t=this._circuitId;return e.append("circuitId",t),e}didRenderingFail(){return this._renderingFailed}isDisposedOrDisposing(){return void 0!==this._disposePromise}sendDisconnectBeacon(){if(this._disposed)return;const e=this.getDisconnectFormData();this._disposed=navigator.sendBeacon("_blazor/disconnect",e)}dispose(){return this._disposePromise||(this._disposePromise=this.disposeCore()),this._disposePromise}async disposeCore(){var e;if(!this._startPromise)return void(this._disposed=!0);await this._startPromise,this._disposed=!0,null===(e=this._connection)||void 0===e||e.stop();const t=this.getDisconnectFormData();fetch("http://github.com/_blazor/disconnect",{method:"POST",body:t});for(const e of this._options.circuitHandlers)e.onCircuitClosed&&e.onCircuitClosed()}}class Tr{constructor(e,t,n,r){this.maxRetries=t,this.document=n,this.logger=r,this.modal=this.document.createElement("div"),this.modal.id=e,this.maxRetries=t,this.modal.style.cssText=["position: fixed","top: 0","right: 0","bottom: 0","left: 0","z-index: 1050","display: none","overflow: hidden","background-color: #fff","opacity: 0.8","text-align: center","font-weight: bold","transition: visibility 0s linear 500ms"].join(";"),this.message=this.document.createElement("h5"),this.message.style.cssText="margin-top: 20px",this.button=this.document.createElement("button"),this.button.style.cssText="margin:5px auto 5px",this.button.textContent="Retry";const o=this.document.createElement("a");o.addEventListener("click",(()=>location.reload())),o.textContent="reload",this.reloadParagraph=this.document.createElement("p"),this.reloadParagraph.textContent="Alternatively, ",this.reloadParagraph.appendChild(o),this.modal.appendChild(this.message),this.modal.appendChild(this.button),this.modal.appendChild(this.reloadParagraph),this.loader=this.getLoader(),this.message.after(this.loader),this.button.addEventListener("click",(async()=>{this.show();try{await ot.reconnect()||this.rejected()}catch(e){this.logger.log(st.Error,e),this.failed()}}))}show(){this.document.contains(this.modal)||this.document.body.appendChild(this.modal),this.modal.style.display="block",this.loader.style.display="inline-block",this.button.style.display="none",this.reloadParagraph.style.display="none",this.message.textContent="Attempting to reconnect to the server...",this.modal.style.visibility="hidden",setTimeout((()=>{this.modal.style.visibility="visible"}),0)}update(e){this.message.textContent=`Attempting to reconnect to the server: ${e} of ${this.maxRetries}`}hide(){this.modal.style.display="none"}failed(){this.button.style.display="block",this.reloadParagraph.style.display="none",this.loader.style.display="none";const e=this.document.createTextNode("Reconnection failed. Try "),t=this.document.createElement("a");t.textContent="reloading",t.setAttribute("href",""),t.addEventListener("click",(()=>location.reload()));const n=this.document.createTextNode(" the page if you're unable to reconnect.");this.message.replaceChildren(e,t,n)}rejected(){this.button.style.display="none",this.reloadParagraph.style.display="none",this.loader.style.display="none";const e=this.document.createTextNode("Could not reconnect to the server. "),t=this.document.createElement("a");t.textContent="Reload",t.setAttribute("href",""),t.addEventListener("click",(()=>location.reload()));const n=this.document.createTextNode(" the page to restore functionality.");this.message.replaceChildren(e,t,n)}getLoader(){const e=this.document.createElement("div");return e.style.cssText=["border: 0.3em solid #f3f3f3","border-top: 0.3em solid #3498db","border-radius: 50%","width: 2em","height: 2em","display: inline-block"].join(";"),e.animate([{transform:"rotate(0deg)"},{transform:"rotate(360deg)"}],{duration:2e3,iterations:1/0}),e}}class Dr{constructor(e,t,n){this.dialog=e,this.maxRetries=t,this.document=n,this.document=n;const r=this.document.getElementById(Dr.MaxRetriesId);r&&(r.innerText=this.maxRetries.toString())}show(){this.removeClasses(),this.dialog.classList.add(Dr.ShowClassName)}update(e){const t=this.document.getElementById(Dr.CurrentAttemptId);t&&(t.innerText=e.toString())}hide(){this.removeClasses(),this.dialog.classList.add(Dr.HideClassName)}failed(){this.removeClasses(),this.dialog.classList.add(Dr.FailedClassName)}rejected(){this.removeClasses(),this.dialog.classList.add(Dr.RejectedClassName)}removeClasses(){this.dialog.classList.remove(Dr.ShowClassName,Dr.HideClassName,Dr.FailedClassName,Dr.RejectedClassName)}}Dr.ShowClassName="components-reconnect-show",Dr.HideClassName="components-reconnect-hide",Dr.FailedClassName="components-reconnect-failed",Dr.RejectedClassName="components-reconnect-rejected",Dr.MaxRetriesId="components-reconnect-max-retries",Dr.CurrentAttemptId="components-reconnect-current-attempt";class Rr{constructor(e,t,n){this._currentReconnectionProcess=null,this._logger=e,this._reconnectionDisplay=t,this._reconnectCallback=n||ot.reconnect}onConnectionDown(e,t){if(!this._reconnectionDisplay){const t=document.getElementById(e.dialogId);this._reconnectionDisplay=t?new Dr(t,e.maxRetries,document):new Tr(e.dialogId,e.maxRetries,document,this._logger)}this._currentReconnectionProcess||(this._currentReconnectionProcess=new xr(e,this._logger,this._reconnectCallback,this._reconnectionDisplay))}onConnectionUp(){this._currentReconnectionProcess&&(this._currentReconnectionProcess.dispose(),this._currentReconnectionProcess=null)}}class xr{constructor(e,t,n,r){this.logger=t,this.reconnectCallback=n,this.isDisposed=!1,this.reconnectDisplay=r,this.reconnectDisplay.show(),this.attemptPeriodicReconnection(e)}dispose(){this.isDisposed=!0,this.reconnectDisplay.hide()}async attemptPeriodicReconnection(e){for(let t=0;txr.MaximumFirstRetryInterval?xr.MaximumFirstRetryInterval:e.retryIntervalMilliseconds;if(await this.delay(n),this.isDisposed)break;try{return await this.reconnectCallback()?void 0:void this.reconnectDisplay.rejected()}catch(e){this.logger.log(st.Error,e)}}this.reconnectDisplay.failed()}delay(e){return new Promise((t=>setTimeout(t,e)))}}xr.MaximumFirstRetryInterval=3e3;class Ar{constructor(e=!0,t,n,r=0){this.singleRuntime=e,this.logger=t,this.webRendererId=r,this.afterStartedCallbacks=[],n&&this.afterStartedCallbacks.push(...n)}async importInitializersAsync(e,t){await Promise.all(e.map((e=>async function(e,n){const r=function(e){const t=document.baseURI;return t.endsWith("/")?`${t}${e}`:`${t}/${e}`}(n),o=await import(r);if(void 0!==o){if(e.singleRuntime){const{beforeStart:n,afterStarted:r,beforeWebAssemblyStart:i,afterWebAssemblyStarted:a,beforeServerStart:c,afterServerStarted:l}=o;let h=n;e.webRendererId===_n.Server&&c&&(h=c),e.webRendererId===_n.WebAssembly&&i&&(h=i);let d=r;return e.webRendererId===_n.Server&&l&&(d=l),e.webRendererId===_n.WebAssembly&&a&&(d=a),s(e,h,d,t)}return function(e,t,n){var o;const i=n[0],{beforeStart:a,afterStarted:c,beforeWebStart:l,afterWebStarted:h,beforeWebAssemblyStart:d,afterWebAssemblyStarted:u,beforeServerStart:p,afterServerStarted:f}=t,g=!(l||h||d||u||p||f||!a&&!c),m=g&&i.enableClassicInitializers;if(g&&!i.enableClassicInitializers)null===(o=e.logger)||void 0===o||o.log(st.Warning,`Initializer '${r}' will be ignored because multiple runtimes are available. use 'before(web|webAssembly|server)Start' and 'after(web|webAssembly|server)Started?' instead.)`);else if(m)return s(e,a,c,n);if(function(e){e.webAssembly?e.webAssembly.initializers||(e.webAssembly.initializers={beforeStart:[],afterStarted:[]}):e.webAssembly={initializers:{beforeStart:[],afterStarted:[]}},e.circuit?e.circuit.initializers||(e.circuit.initializers={beforeStart:[],afterStarted:[]}):e.circuit={initializers:{beforeStart:[],afterStarted:[]}}}(i),d&&i.webAssembly.initializers.beforeStart.push(d),u&&i.webAssembly.initializers.afterStarted.push(u),p&&i.circuit.initializers.beforeStart.push(p),f&&i.circuit.initializers.afterStarted.push(f),h&&e.afterStartedCallbacks.push(h),l)return l(i)}(e,o,t)}function s(e,t,n,r){if(n&&e.afterStartedCallbacks.push(n),t)return t(...r)}}(this,e))))}async invokeAfterStartedCallbacks(e){const t=function(e){var t;return null===(t=C.get(e))||void 0===t?void 0:t[1]}(this.webRendererId);t&&await t,await Promise.all(this.afterStartedCallbacks.map((t=>t(e))))}}function Pr(e){if(void 0!==Er)throw new Error("Blazor Server has already started.");return Er=new Promise(Nr.bind(null,e)),Er}async function Nr(e,t,n){await yr;const r=await async function(e){if(e.initializers)return await Promise.all(e.initializers.beforeStart.map((t=>t(e)))),new Ar(!1,void 0,e.initializers.afterStarted,_n.Server);const t=await fetch("http://github.com/_blazor/initializers",{method:"GET",credentials:"include",cache:"no-cache"}),n=await t.json(),r=new Ar(!0,void 0,void 0,_n.Server);return await r.importInitializersAsync(n,[e]),r}(br);var o;if(o=document,wr=dt(o,ht)||"",Sr=new lt(br.logLevel),_r=new kr(e,wr,br,Sr),Sr.log(st.Information,"Starting up Blazor server-side application."),ot.reconnect=async()=>!(_r.didRenderingFail()||!await _r.reconnect()&&(Sr.log(st.Information,"Reconnection attempt to the circuit was rejected by the server. This may indicate that the associated state is no longer available on the server."),1)),ot.defaultReconnectionHandler=new Rr(Sr),br.reconnectionHandler=br.reconnectionHandler||ot.defaultReconnectionHandler,ot._internal.navigationManager.listenForNavigationEvents(_n.Server,((e,t,n)=>_r.sendLocationChanged(e,t,n)),((e,t,n,r)=>_r.sendLocationChanging(e,t,n,r))),ot._internal.forceCloseConnection=()=>_r.disconnect(),ot._internal.sendJSDataStream=(e,t,n)=>_r.sendJsDataStream(e,t,n),!await _r.start())return Sr.log(st.Error,"Failed to start the circuit."),void t();const s=()=>{_r.sendDisconnectBeacon()};ot.disconnect=s,window.addEventListener("unload",s,{capture:!1,once:!0}),Sr.log(st.Information,"Blazor server-side application started."),r.invokeAfterStartedCallbacks(ot),t()}class Ur{constructor(e){this.initialComponents=e}resolveRootComponent(e){return this.initialComponents[e]}}class Mr{constructor(){this._eventListeners=new Map}static create(e){const t=new Mr;return e.addEventListener=t.addEventListener.bind(t),e.removeEventListener=t.removeEventListener.bind(t),t}addEventListener(e,t){let n=this._eventListeners.get(e);n||(n=new Set,this._eventListeners.set(e,n)),n.add(t)}removeEventListener(e,t){var n;null===(n=this._eventListeners.get(e))||void 0===n||n.delete(t)}dispatchEvent(e,t){const n=this._eventListeners.get(e);if(!n)return;const r={...t,type:e};for(const e of n)e(r)}}let Br=!1;function Lr(e){if(Br)throw new Error("Blazor has already started.");Br=!0;const t=it(e);!function(e){if(br)throw new Error("Circuit options have already been configured.");if(br)throw new Error("WebAssembly options have already been configured.");yr=async function(e){const t=await e;br=it(t)}(e)}(Promise.resolve(t||{})),Mr.create(ot);const n=function(e){return ut(e,"server").sort(((e,t)=>e.sequence-t.sequence))}(document);return Pr(new Ur(n))}ot.start=Lr,window.DotNet=e,document&&document.currentScript&&"false"!==document.currentScript.getAttribute("autostart")&&Lr()})()})(); \ No newline at end of file +(()=>{var e={778:()=>{},77:()=>{},203:()=>{},200:()=>{},628:()=>{},321:()=>{}},t={};function n(r){var o=t[r];if(void 0!==o)return o.exports;var s=t[r]={exports:{}};return e[r](s,s.exports,n),s.exports}n.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),(()=>{"use strict";var e,t,r;!function(e){const t=[],n="__jsObjectId",r="__dotNetObject",o="__byte[]",s="__dotNetStream",i="__jsStreamReferenceLength";let a,c;class l{constructor(e){this._jsObject=e,this._cachedFunctions=new Map}findFunction(e){const t=this._cachedFunctions.get(e);if(t)return t;let n,r=this._jsObject;if(e.split(".").forEach((t=>{if(!(t in r))throw new Error(`Could not find '${e}' ('${t}' was undefined).`);n=r,r=r[t]})),r instanceof Function)return r=r.bind(n),this._cachedFunctions.set(e,r),r;throw new Error(`The value '${e}' is not a function.`)}getWrappedObject(){return this._jsObject}}const h={0:new l(window)};h[0]._cachedFunctions.set("import",(e=>("string"==typeof e&&e.startsWith("./")&&(e=new URL(e.substr(2),document.baseURI).toString()),import(e))));let d,u=1;function p(e){t.push(e)}function f(e){if(e&&"object"==typeof e){h[u]=new l(e);const t={[n]:u};return u++,t}throw new Error(`Cannot create a JSObjectReference from the value '${e}'.`)}function g(e){let t=-1;if(e instanceof ArrayBuffer&&(e=new Uint8Array(e)),e instanceof Blob)t=e.size;else{if(!(e.buffer instanceof ArrayBuffer))throw new Error("Supplied value is not a typed array or blob.");if(void 0===e.byteLength)throw new Error(`Cannot create a JSStreamReference from the value '${e}' as it doesn't have a byteLength.`);t=e.byteLength}const r={[i]:t};try{const t=f(e);r[n]=t[n]}catch(t){throw new Error(`Cannot create a JSStreamReference from the value '${e}'.`)}return r}function m(e,n){c=e;const r=n?JSON.parse(n,((e,n)=>t.reduce(((t,n)=>n(e,t)),n))):null;return c=void 0,r}function v(){if(void 0===a)throw new Error("No call dispatcher has been set.");if(null===a)throw new Error("There are multiple .NET runtimes present, so a default dispatcher could not be resolved. Use DotNetObject to invoke .NET instance methods.");return a}e.attachDispatcher=function(e){const t=new y(e);return void 0===a?a=t:a&&(a=null),t},e.attachReviver=p,e.invokeMethod=function(e,t,...n){return v().invokeDotNetStaticMethod(e,t,...n)},e.invokeMethodAsync=function(e,t,...n){return v().invokeDotNetStaticMethodAsync(e,t,...n)},e.createJSObjectReference=f,e.createJSStreamReference=g,e.disposeJSObjectReference=function(e){const t=e&&e[n];"number"==typeof t&&b(t)},function(e){e[e.Default=0]="Default",e[e.JSObjectReference=1]="JSObjectReference",e[e.JSStreamReference=2]="JSStreamReference",e[e.JSVoidResult=3]="JSVoidResult"}(d=e.JSCallResultType||(e.JSCallResultType={}));class y{constructor(e){this._dotNetCallDispatcher=e,this._byteArraysToBeRevived=new Map,this._pendingDotNetToJSStreams=new Map,this._pendingAsyncCalls={},this._nextAsyncCallId=1}getDotNetCallDispatcher(){return this._dotNetCallDispatcher}invokeJSFromDotNet(e,t,n,r){const o=m(this,t),s=I(_(e,r)(...o||[]),n);return null==s?null:T(this,s)}beginInvokeJSFromDotNet(e,t,n,r,o){const s=new Promise((e=>{const r=m(this,n);e(_(t,o)(...r||[]))}));e&&s.then((t=>T(this,[e,!0,I(t,r)]))).then((t=>this._dotNetCallDispatcher.endInvokeJSFromDotNet(e,!0,t)),(t=>this._dotNetCallDispatcher.endInvokeJSFromDotNet(e,!1,JSON.stringify([e,!1,w(t)]))))}endInvokeDotNetFromJS(e,t,n){const r=t?m(this,n):new Error(n);this.completePendingCall(parseInt(e,10),t,r)}invokeDotNetStaticMethod(e,t,...n){return this.invokeDotNetMethod(e,t,null,n)}invokeDotNetStaticMethodAsync(e,t,...n){return this.invokeDotNetMethodAsync(e,t,null,n)}invokeDotNetMethod(e,t,n,r){if(this._dotNetCallDispatcher.invokeDotNetFromJS){const o=T(this,r),s=this._dotNetCallDispatcher.invokeDotNetFromJS(e,t,n,o);return s?m(this,s):null}throw new Error("The current dispatcher does not support synchronous calls from JS to .NET. Use invokeDotNetMethodAsync instead.")}invokeDotNetMethodAsync(e,t,n,r){if(e&&n)throw new Error(`For instance method calls, assemblyName should be null. Received '${e}'.`);const o=this._nextAsyncCallId++,s=new Promise(((e,t)=>{this._pendingAsyncCalls[o]={resolve:e,reject:t}}));try{const s=T(this,r);this._dotNetCallDispatcher.beginInvokeDotNetFromJS(o,e,t,n,s)}catch(e){this.completePendingCall(o,!1,e)}return s}receiveByteArray(e,t){this._byteArraysToBeRevived.set(e,t)}processByteArray(e){const t=this._byteArraysToBeRevived.get(e);return t?(this._byteArraysToBeRevived.delete(e),t):null}supplyDotNetStream(e,t){if(this._pendingDotNetToJSStreams.has(e)){const n=this._pendingDotNetToJSStreams.get(e);this._pendingDotNetToJSStreams.delete(e),n.resolve(t)}else{const n=new C;n.resolve(t),this._pendingDotNetToJSStreams.set(e,n)}}getDotNetStreamPromise(e){let t;if(this._pendingDotNetToJSStreams.has(e))t=this._pendingDotNetToJSStreams.get(e).streamPromise,this._pendingDotNetToJSStreams.delete(e);else{const n=new C;this._pendingDotNetToJSStreams.set(e,n),t=n.streamPromise}return t}completePendingCall(e,t,n){if(!this._pendingAsyncCalls.hasOwnProperty(e))throw new Error(`There is no pending async call with ID ${e}.`);const r=this._pendingAsyncCalls[e];delete this._pendingAsyncCalls[e],t?r.resolve(n):r.reject(n)}}function w(e){return e instanceof Error?`${e.message}\n${e.stack}`:e?e.toString():"null"}function _(e,t){const n=h[t];if(n)return n.findFunction(e);throw new Error(`JS object instance with ID ${t} does not exist (has it been disposed?).`)}function b(e){delete h[e]}e.findJSFunction=_,e.disposeJSObjectReferenceById=b;class S{constructor(e,t){this._id=e,this._callDispatcher=t}invokeMethod(e,...t){return this._callDispatcher.invokeDotNetMethod(null,e,this._id,t)}invokeMethodAsync(e,...t){return this._callDispatcher.invokeDotNetMethodAsync(null,e,this._id,t)}dispose(){this._callDispatcher.invokeDotNetMethodAsync(null,"__Dispose",this._id,null).catch((e=>console.error(e)))}serializeAsArg(){return{[r]:this._id}}}e.DotNetObject=S,p((function(e,t){if(t&&"object"==typeof t){if(t.hasOwnProperty(r))return new S(t[r],c);if(t.hasOwnProperty(n)){const e=t[n],r=h[e];if(r)return r.getWrappedObject();throw new Error(`JS object instance with Id '${e}' does not exist. It may have been disposed.`)}if(t.hasOwnProperty(o)){const e=t[o],n=c.processByteArray(e);if(void 0===n)throw new Error(`Byte array index '${e}' does not exist.`);return n}if(t.hasOwnProperty(s)){const e=t[s],n=c.getDotNetStreamPromise(e);return new E(n)}}return t}));class E{constructor(e){this._streamPromise=e}stream(){return this._streamPromise}async arrayBuffer(){return new Response(await this.stream()).arrayBuffer()}}class C{constructor(){this.streamPromise=new Promise(((e,t)=>{this.resolve=e,this.reject=t}))}}function I(e,t){switch(t){case d.Default:return e;case d.JSObjectReference:return f(e);case d.JSStreamReference:return g(e);case d.JSVoidResult:return null;default:throw new Error(`Invalid JS call result type '${t}'.`)}}let k=0;function T(e,t){k=0,c=e;const n=JSON.stringify(t,D);return c=void 0,n}function D(e,t){if(t instanceof S)return t.serializeAsArg();if(t instanceof Uint8Array){c.getDotNetCallDispatcher().sendByteArray(k,t);const e={[o]:k};return k++,e}return t}}(e||(e={})),function(e){e[e.prependFrame=1]="prependFrame",e[e.removeFrame=2]="removeFrame",e[e.setAttribute=3]="setAttribute",e[e.removeAttribute=4]="removeAttribute",e[e.updateText=5]="updateText",e[e.stepIn=6]="stepIn",e[e.stepOut=7]="stepOut",e[e.updateMarkup=8]="updateMarkup",e[e.permutationListEntry=9]="permutationListEntry",e[e.permutationListEnd=10]="permutationListEnd"}(t||(t={})),function(e){e[e.element=1]="element",e[e.text=2]="text",e[e.attribute=3]="attribute",e[e.component=4]="component",e[e.region=5]="region",e[e.elementReferenceCapture=6]="elementReferenceCapture",e[e.markup=8]="markup",e[e.namedEvent=10]="namedEvent"}(r||(r={}));class o{constructor(e,t){this.componentId=e,this.fieldValue=t}static fromEvent(e,t){const n=t.target;if(n instanceof Element){const t=function(e){return e instanceof HTMLInputElement?e.type&&"checkbox"===e.type.toLowerCase()?{value:e.checked}:{value:e.value}:e instanceof HTMLSelectElement||e instanceof HTMLTextAreaElement?{value:e.value}:null}(n);if(t)return new o(e,t.value)}return null}}const s=new Map,i=new Map,a=[];function c(e){return s.get(e)}function l(e){const t=s.get(e);return(null==t?void 0:t.browserEventName)||e}function h(e,t){e.forEach((e=>s.set(e,t)))}function d(e){const t=[];for(let n=0;ne.selected)).map((e=>e.value))}}{const e=function(e){return!!e&&"INPUT"===e.tagName&&"checkbox"===e.getAttribute("type")}(t);return{value:e?!!t.checked:t.value}}}}),h(["copy","cut","paste"],{createEventArgs:e=>({type:e.type})}),h(["drag","dragend","dragenter","dragleave","dragover","dragstart","drop"],{createEventArgs:e=>{return{...u(t=e),dataTransfer:t.dataTransfer?{dropEffect:t.dataTransfer.dropEffect,effectAllowed:t.dataTransfer.effectAllowed,files:Array.from(t.dataTransfer.files).map((e=>e.name)),items:Array.from(t.dataTransfer.items).map((e=>({kind:e.kind,type:e.type}))),types:t.dataTransfer.types}:null};var t}}),h(["focus","blur","focusin","focusout"],{createEventArgs:e=>({type:e.type})}),h(["keydown","keyup","keypress"],{createEventArgs:e=>{return{key:(t=e).key,code:t.code,location:t.location,repeat:t.repeat,ctrlKey:t.ctrlKey,shiftKey:t.shiftKey,altKey:t.altKey,metaKey:t.metaKey,type:t.type};var t}}),h(["contextmenu","click","mouseover","mouseout","mousemove","mousedown","mouseup","mouseleave","mouseenter","dblclick"],{createEventArgs:e=>u(e)}),h(["error"],{createEventArgs:e=>{return{message:(t=e).message,filename:t.filename,lineno:t.lineno,colno:t.colno,type:t.type};var t}}),h(["loadstart","timeout","abort","load","loadend","progress"],{createEventArgs:e=>{return{lengthComputable:(t=e).lengthComputable,loaded:t.loaded,total:t.total,type:t.type};var t}}),h(["touchcancel","touchend","touchmove","touchenter","touchleave","touchstart"],{createEventArgs:e=>{return{detail:(t=e).detail,touches:d(t.touches),targetTouches:d(t.targetTouches),changedTouches:d(t.changedTouches),ctrlKey:t.ctrlKey,shiftKey:t.shiftKey,altKey:t.altKey,metaKey:t.metaKey,type:t.type};var t}}),h(["gotpointercapture","lostpointercapture","pointercancel","pointerdown","pointerenter","pointerleave","pointermove","pointerout","pointerover","pointerup"],{createEventArgs:e=>{return{...u(t=e),pointerId:t.pointerId,width:t.width,height:t.height,pressure:t.pressure,tiltX:t.tiltX,tiltY:t.tiltY,pointerType:t.pointerType,isPrimary:t.isPrimary};var t}}),h(["wheel","mousewheel"],{createEventArgs:e=>{return{...u(t=e),deltaX:t.deltaX,deltaY:t.deltaY,deltaZ:t.deltaZ,deltaMode:t.deltaMode};var t}}),h(["cancel","close","toggle"],{createEventArgs:()=>({})});const p=["date","datetime-local","month","time","week"],f=new Map;let g,m,v=0;const y={async add(e,t,n){if(!n)throw new Error("initialParameters must be an object, even if empty.");const r="__bl-dynamic-root:"+(++v).toString();f.set(r,e);const o=await b().invokeMethodAsync("AddRootComponent",t,r),s=new _(o,m[t]);return await s.setParameters(n),s}};class w{invoke(e){return this._callback(e)}setCallback(t){this._selfJSObjectReference||(this._selfJSObjectReference=e.createJSObjectReference(this)),this._callback=t}getJSObjectReference(){return this._selfJSObjectReference}dispose(){this._selfJSObjectReference&&e.disposeJSObjectReference(this._selfJSObjectReference)}}class _{constructor(e,t){this._jsEventCallbackWrappers=new Map,this._componentId=e;for(const e of t)"eventcallback"===e.type&&this._jsEventCallbackWrappers.set(e.name.toLowerCase(),new w)}setParameters(e){const t={},n=Object.entries(e||{}),r=n.length;for(const[e,r]of n){const n=this._jsEventCallbackWrappers.get(e.toLowerCase());n&&r?(n.setCallback(r),t[e]=n.getJSObjectReference()):t[e]=r}return b().invokeMethodAsync("SetRootComponentParameters",this._componentId,r,t)}async dispose(){if(null!==this._componentId){await b().invokeMethodAsync("RemoveRootComponent",this._componentId),this._componentId=null;for(const e of this._jsEventCallbackWrappers.values())e.dispose()}}}function b(){if(!g)throw new Error("Dynamic root components have not been enabled in this application.");return g}const S=new Map,E=[],C=new Map;function I(t,n,r,o){var s,i;if(S.has(t))throw new Error(`Interop methods are already registered for renderer ${t}`);S.set(t,n),r&&o&&Object.keys(r).length>0&&function(t,n,r){if(g)throw new Error("Dynamic root components have already been enabled.");g=t,m=n;for(const[t,o]of Object.entries(r)){const r=e.findJSFunction(t,0);for(const e of o)r(e,n[e])}}(T(t),r,o),null===(i=null===(s=C.get(t))||void 0===s?void 0:s[0])||void 0===i||i.call(s),function(e){for(const t of E)t(e)}(t)}function k(e,t,n){return D(e,t.eventHandlerId,(()=>T(e).invokeMethodAsync("DispatchEventAsync",t,n)))}function T(e){const t=S.get(e);if(!t)throw new Error(`No interop methods are registered for renderer ${e}`);return t}let D=(e,t,n)=>n();const R=M(["abort","blur","cancel","canplay","canplaythrough","change","close","cuechange","durationchange","emptied","ended","error","focus","load","loadeddata","loadedmetadata","loadend","loadstart","mouseenter","mouseleave","pointerenter","pointerleave","pause","play","playing","progress","ratechange","reset","scroll","seeked","seeking","stalled","submit","suspend","timeupdate","toggle","unload","volumechange","waiting","DOMNodeInsertedIntoDocument","DOMNodeRemovedFromDocument"]),x={submit:!0},A=M(["click","dblclick","mousedown","mousemove","mouseup"]);class P{constructor(e){this.browserRendererId=e,this.afterClickCallbacks=[];const t=++P.nextEventDelegatorId;this.eventsCollectionKey=`_blazorEvents_${t}`,this.eventInfoStore=new N(this.onGlobalEvent.bind(this))}setListener(e,t,n,r){const o=this.getEventHandlerInfosForElement(e,!0),s=o.getHandler(t);if(s)this.eventInfoStore.update(s.eventHandlerId,n);else{const s={element:e,eventName:t,eventHandlerId:n,renderingComponentId:r};this.eventInfoStore.add(s),o.setHandler(t,s)}}getHandler(e){return this.eventInfoStore.get(e)}removeListener(e){const t=this.eventInfoStore.remove(e);if(t){const e=t.element,n=this.getEventHandlerInfosForElement(e,!1);n&&n.removeHandler(t.eventName)}}notifyAfterClick(e){this.afterClickCallbacks.push(e),this.eventInfoStore.addGlobalListener("click")}setStopPropagation(e,t,n){this.getEventHandlerInfosForElement(e,!0).stopPropagation(t,n)}setPreventDefault(e,t,n){this.getEventHandlerInfosForElement(e,!0).preventDefault(t,n)}onGlobalEvent(e){if(!(e.target instanceof Element))return;this.dispatchGlobalEventToAllElements(e.type,e);const t=(n=e.type,i.get(n));var n;t&&t.forEach((t=>this.dispatchGlobalEventToAllElements(t,e))),"click"===e.type&&this.afterClickCallbacks.forEach((t=>t(e)))}dispatchGlobalEventToAllElements(e,t){const n=t.composedPath();let r=n.shift(),s=null,i=!1;const a=Object.prototype.hasOwnProperty.call(R,e);let l=!1;for(;r;){const u=r,p=this.getEventHandlerInfosForElement(u,!1);if(p){const n=p.getHandler(e);if(n&&(h=u,d=t.type,!((h instanceof HTMLButtonElement||h instanceof HTMLInputElement||h instanceof HTMLTextAreaElement||h instanceof HTMLSelectElement)&&Object.prototype.hasOwnProperty.call(A,d)&&h.disabled))){if(!i){const n=c(e);s=(null==n?void 0:n.createEventArgs)?n.createEventArgs(t):{},i=!0}Object.prototype.hasOwnProperty.call(x,t.type)&&t.preventDefault(),k(this.browserRendererId,{eventHandlerId:n.eventHandlerId,eventName:e,eventFieldInfo:o.fromEvent(n.renderingComponentId,t)},s)}p.stopPropagation(e)&&(l=!0),p.preventDefault(e)&&t.preventDefault()}r=a||l?void 0:n.shift()}var h,d}getEventHandlerInfosForElement(e,t){return Object.prototype.hasOwnProperty.call(e,this.eventsCollectionKey)?e[this.eventsCollectionKey]:t?e[this.eventsCollectionKey]=new U:null}}P.nextEventDelegatorId=0;class N{constructor(e){this.globalListener=e,this.infosByEventHandlerId={},this.countByEventName={},a.push(this.handleEventNameAliasAdded.bind(this))}add(e){if(this.infosByEventHandlerId[e.eventHandlerId])throw new Error(`Event ${e.eventHandlerId} is already tracked`);this.infosByEventHandlerId[e.eventHandlerId]=e,this.addGlobalListener(e.eventName)}get(e){return this.infosByEventHandlerId[e]}addGlobalListener(e){if(e=l(e),Object.prototype.hasOwnProperty.call(this.countByEventName,e))this.countByEventName[e]++;else{this.countByEventName[e]=1;const t=Object.prototype.hasOwnProperty.call(R,e);document.addEventListener(e,this.globalListener,t)}}update(e,t){if(Object.prototype.hasOwnProperty.call(this.infosByEventHandlerId,t))throw new Error(`Event ${t} is already tracked`);const n=this.infosByEventHandlerId[e];delete this.infosByEventHandlerId[e],n.eventHandlerId=t,this.infosByEventHandlerId[t]=n}remove(e){const t=this.infosByEventHandlerId[e];if(t){delete this.infosByEventHandlerId[e];const n=l(t.eventName);0==--this.countByEventName[n]&&(delete this.countByEventName[n],document.removeEventListener(n,this.globalListener))}return t}handleEventNameAliasAdded(e,t){if(Object.prototype.hasOwnProperty.call(this.countByEventName,e)){const n=this.countByEventName[e];delete this.countByEventName[e],document.removeEventListener(e,this.globalListener),this.addGlobalListener(t),this.countByEventName[t]+=n-1}}}class U{constructor(){this.handlers={},this.preventDefaultFlags=null,this.stopPropagationFlags=null}getHandler(e){return Object.prototype.hasOwnProperty.call(this.handlers,e)?this.handlers[e]:null}setHandler(e,t){this.handlers[e]=t}removeHandler(e){delete this.handlers[e]}preventDefault(e,t){return void 0!==t&&(this.preventDefaultFlags=this.preventDefaultFlags||{},this.preventDefaultFlags[e]=t),!!this.preventDefaultFlags&&this.preventDefaultFlags[e]}stopPropagation(e,t){return void 0!==t&&(this.stopPropagationFlags=this.stopPropagationFlags||{},this.stopPropagationFlags[e]=t),!!this.stopPropagationFlags&&this.stopPropagationFlags[e]}}function M(e){const t={};return e.forEach((e=>{t[e]=!0})),t}const B=Symbol(),L=Symbol(),$=Symbol();function O(e,t){if(B in e)return e;const n=[];if(e.childNodes.length>0){if(!t)throw new Error("New logical elements must start empty, or allowExistingContents must be true");e.childNodes.forEach((t=>{const r=O(t,!0);r[L]=e,n.push(r)}))}return e[B]=n,e}function F(e){const t=K(e);for(;t.length;)W(e,0)}function H(e,t){const n=document.createComment("!");return j(n,e,t),n}function j(e,t,n){const r=e;let o=e;if(B in e){const t=Q(r);if(t!==e){const n=new Range;n.setStartBefore(e),n.setEndAfter(t),o=n.extractContents()}}const s=z(r);if(s){const e=K(s),t=Array.prototype.indexOf.call(e,r);e.splice(t,1),delete r[L]}const i=K(t);if(n0;)W(n,0)}const r=n;r.parentNode.removeChild(r)}function z(e){return e[L]||null}function q(e,t){return K(e)[t]}function J(e){const t=Y(e);return"http://www.w3.org/2000/svg"===t.namespaceURI&&"foreignObject"!==t.tagName}function K(e){return e[B]}function V(e){const t=K(z(e));return t[Array.prototype.indexOf.call(t,e)+1]||null}function X(e,t){const n=K(e);t.forEach((e=>{e.moveRangeStart=n[e.fromSiblingIndex],e.moveRangeEnd=Q(e.moveRangeStart)})),t.forEach((t=>{const r=document.createComment("marker");t.moveToBeforeMarker=r;const o=n[t.toSiblingIndex+1];o?o.parentNode.insertBefore(r,o):G(r,e)})),t.forEach((e=>{const t=e.moveToBeforeMarker,n=t.parentNode,r=e.moveRangeStart,o=e.moveRangeEnd;let s=r;for(;s;){const e=s.nextSibling;if(n.insertBefore(s,t),s===o)break;s=e}n.removeChild(t)})),t.forEach((e=>{n[e.toSiblingIndex]=e.moveRangeStart}))}function Y(e){if(e instanceof Element||e instanceof DocumentFragment)return e;if(e instanceof Comment)return e.parentNode;throw new Error("Not a valid logical element")}function G(e,t){if(t instanceof Element||t instanceof DocumentFragment)t.appendChild(e);else{if(!(t instanceof Comment))throw new Error(`Cannot append node because the parent is not a valid logical element. Parent: ${t}`);{const n=V(t);n?n.parentNode.insertBefore(e,n):G(e,z(t))}}}function Q(e){if(e instanceof Element||e instanceof DocumentFragment)return e;const t=V(e);if(t)return t.previousSibling;{const t=z(e);return t instanceof Element||t instanceof DocumentFragment?t.lastChild:Q(t)}}function Z(e){return`_bl_${e}`}const ee="__internalId";e.attachReviver(((e,t)=>t&&"object"==typeof t&&Object.prototype.hasOwnProperty.call(t,ee)&&"string"==typeof t[ee]?function(e){const t=`[${Z(e)}]`;return document.querySelector(t)}(t[ee]):t));const te="_blazorDeferredValue";function ne(e){return"select-multiple"===e.type}function re(e,t){e.value=t||""}function oe(e,t){e instanceof HTMLSelectElement?ne(e)?function(e,t){t||(t=[]);for(let n=0;n{ke()&&function(e,t){if(0!==e.button||function(e){return e.ctrlKey||e.shiftKey||e.altKey||e.metaKey}(e))return;if(e.defaultPrevented)return;const n=function(e){const t=!window._blazorDisableComposedPath&&e.composedPath&&e.composedPath();if(t){for(let e=0;e{const t=document.createElement("script");t.textContent=e.textContent,e.getAttributeNames().forEach((n=>{t.setAttribute(n,e.getAttribute(n))})),e.parentNode.replaceChild(t,e)})),ie.content));var i;let a=0;for(;s.firstChild;)j(s.firstChild,o,a++)}applyAttribute(e,t,n,r){const o=e.frameReader,s=o.attributeName(r),i=o.attributeEventHandlerId(r);if(i){const e=fe(s);return void this.eventDelegator.setListener(n,e,i,t)}const a=o.attributeValue(r);this.setOrRemoveAttributeOrProperty(n,s,a)}insertFrameRange(e,t,n,r,o,s,i){const a=r;for(let a=s;a{je(t,e)})},enableNavigationInterception:function(e){if(void 0!==me&&me!==e)throw new Error("Only one interactive runtime may enable navigation interception at a time.");me=e},setHasLocationChangingListeners:function(e,t){const n=Ae.get(e);if(!n)throw new Error(`Renderer with ID '${e}' is not listening for navigation events`);n.hasLocationChangingEventListeners=t},endLocationChanging:function(e,t){Ne&&e===xe&&(Ne(t),Ne=null)},navigateTo:function(e,t){Be(e,t,!0)},refresh:function(e){!e&&Se()?Ee(location.href,!0):location.reload()},getBaseURI:()=>document.baseURI,getLocationHref:()=>location.href,scrollToElement:Me};function Me(e){const t=document.getElementById(e);return!!t&&(t.scrollIntoView(),!0)}function Be(e,t,n=!1){const r=Ce(e);!t.forceLoad&&be(r)?qe()?Le(r,!1,t.replaceHistoryEntry,t.historyEntryState,n):Ee(r,t.replaceHistoryEntry):function(e,t){if(location.href===e){const t=e+"?";history.replaceState(null,"",t),location.replace(e)}else t?location.replace(e):location.href=e}(e,t.replaceHistoryEntry)}async function Le(e,t,n,r=void 0,o=!1){if(Fe(),function(e){const t=e.indexOf("#");return t>-1&&location.href.replace(location.hash,"")===e.substring(0,t)}(e))return void function(e,t,n){$e(e,t,n);const r=e.indexOf("#");r!==e.length-1&&Me(e.substring(r+1))}(e,n,r);const s=ze();(o||!(null==s?void 0:s.hasLocationChangingEventListeners)||await He(e,r,t,s))&&(_e=!0,$e(e,n,r),await je(t))}function $e(e,t,n=void 0){t?history.replaceState({userState:n,_index:Re},"",e):(Re++,history.pushState({userState:n,_index:Re},"",e))}function Oe(e){return new Promise((t=>{const n=Pe;Pe=()=>{Pe=n,t()},history.go(e)}))}function Fe(){Ne&&(Ne(!1),Ne=null)}function He(e,t,n,r){return new Promise((o=>{Fe(),xe++,Ne=o,r.locationChanging(xe,e,t,n)}))}async function je(e,t){const n=null!=t?t:location.href;await Promise.all(Array.from(Ae,(async([t,r])=>{var o,s;s=t,S.has(s)&&await r.locationChanged(n,null===(o=history.state)||void 0===o?void 0:o.userState,e)})))}async function We(e){var t,n;Pe&&qe()&&await Pe(e),Re=null!==(n=null===(t=history.state)||void 0===t?void 0:t._index)&&void 0!==n?n:0}function ze(){const e=Te();if(void 0!==e)return Ae.get(e)}function qe(){return ke()||!Se()}const Je={focus:function(e,t){if(e instanceof HTMLElement)e.focus({preventScroll:t});else{if(!(e instanceof SVGElement))throw new Error("Unable to focus an invalid element.");if(!e.hasAttribute("tabindex"))throw new Error("Unable to focus an SVG element that does not have a tabindex.");e.focus({preventScroll:t})}},focusBySelector:function(e,t){const n=document.querySelector(e);n&&(n.hasAttribute("tabindex")||(n.tabIndex=-1),n.focus({preventScroll:!0}))}},Ke={init:function(e,t,n,r=50){const o=Xe(t);(o||document.documentElement).style.overflowAnchor="none";const s=document.createRange();u(n.parentElement)&&(t.style.display="table-row",n.style.display="table-row");const i=new IntersectionObserver((function(r){r.forEach((r=>{var o;if(!r.isIntersecting)return;s.setStartAfter(t),s.setEndBefore(n);const i=s.getBoundingClientRect().height,a=null===(o=r.rootBounds)||void 0===o?void 0:o.height;r.target===t?e.invokeMethodAsync("OnSpacerBeforeVisible",r.intersectionRect.top-r.boundingClientRect.top,i,a):r.target===n&&n.offsetHeight>0&&e.invokeMethodAsync("OnSpacerAfterVisible",r.boundingClientRect.bottom-r.intersectionRect.bottom,i,a)}))}),{root:o,rootMargin:`${r}px`});i.observe(t),i.observe(n);const a=d(t),c=d(n),{observersByDotNetObjectId:l,id:h}=Ye(e);function d(e){const t={attributes:!0},n=new MutationObserver(((n,r)=>{u(e.parentElement)&&(r.disconnect(),e.style.display="table-row",r.observe(e,t)),i.unobserve(e),i.observe(e)}));return n.observe(e,t),n}function u(e){return null!==e&&(e instanceof HTMLTableElement&&""===e.style.display||"table"===e.style.display||e instanceof HTMLTableSectionElement&&""===e.style.display||"table-row-group"===e.style.display)}l[h]={intersectionObserver:i,mutationObserverBefore:a,mutationObserverAfter:c}},dispose:function(e){const{observersByDotNetObjectId:t,id:n}=Ye(e),r=t[n];r&&(r.intersectionObserver.disconnect(),r.mutationObserverBefore.disconnect(),r.mutationObserverAfter.disconnect(),e.dispose(),delete t[n])}},Ve=Symbol();function Xe(e){return e&&e!==document.body&&e!==document.documentElement?"visible"!==getComputedStyle(e).overflowY?e:Xe(e.parentElement):null}function Ye(e){var t;const n=e._callDispatcher,r=e._id;return null!==(t=n[Ve])&&void 0!==t||(n[Ve]={}),{observersByDotNetObjectId:n[Ve],id:r}}const Ge={getAndRemoveExistingTitle:function(){var e;const t=document.head?document.head.getElementsByTagName("title"):[];if(0===t.length)return null;let n=null;for(let r=t.length-1;r>=0;r--){const o=t[r],s=o.previousSibling;s instanceof Comment&&null!==z(s)||(null===n&&(n=o.textContent),null===(e=o.parentNode)||void 0===e||e.removeChild(o))}return n}},Qe={init:function(e,t){t._blazorInputFileNextFileId=0,t.addEventListener("click",(function(){t.value=""})),t.addEventListener("change",(function(){t._blazorFilesById={};const n=Array.prototype.map.call(t.files,(function(e){const n={id:++t._blazorInputFileNextFileId,lastModified:new Date(e.lastModified).toISOString(),name:e.name,size:e.size,contentType:e.type,readPromise:void 0,arrayBuffer:void 0,blob:e};return t._blazorFilesById[n.id]=n,n}));e.invokeMethodAsync("NotifyChange",n)}))},toImageFile:async function(e,t,n,r,o){const s=Ze(e,t),i=await new Promise((function(e){const t=new Image;t.onload=function(){URL.revokeObjectURL(t.src),e(t)},t.onerror=function(){t.onerror=null,URL.revokeObjectURL(t.src)},t.src=URL.createObjectURL(s.blob)})),a=await new Promise((function(e){var t;const s=Math.min(1,r/i.width),a=Math.min(1,o/i.height),c=Math.min(s,a),l=document.createElement("canvas");l.width=Math.round(i.width*c),l.height=Math.round(i.height*c),null===(t=l.getContext("2d"))||void 0===t||t.drawImage(i,0,0,l.width,l.height),l.toBlob(e,n)})),c={id:++e._blazorInputFileNextFileId,lastModified:s.lastModified,name:s.name,size:(null==a?void 0:a.size)||0,contentType:n,blob:a||s.blob};return e._blazorFilesById[c.id]=c,c},readFileData:async function(e,t){return Ze(e,t).blob}};function Ze(e,t){const n=e._blazorFilesById[t];if(!n)throw new Error(`There is no file with ID ${t}. The file list may have changed. See https://aka.ms/aspnet/blazor-input-file-multiple-selections.`);return n}const et=new Set,tt={enableNavigationPrompt:function(e){0===et.size&&window.addEventListener("beforeunload",nt),et.add(e)},disableNavigationPrompt:function(e){et.delete(e),0===et.size&&window.removeEventListener("beforeunload",nt)}};function nt(e){e.preventDefault(),e.returnValue=!0}async function rt(e,t,n){return e instanceof Blob?await async function(e,t,n){const r=e.slice(t,t+n),o=await r.arrayBuffer();return new Uint8Array(o)}(e,t,n):function(e,t,n){return new Uint8Array(e.buffer,e.byteOffset+t,n)}(e,t,n)}new Map;const ot={navigateTo:function(e,t,n=!1){Be(e,t instanceof Object?t:{forceLoad:t,replaceHistoryEntry:n})},registerCustomEventType:function(e,t){if(!t)throw new Error("The options parameter is required.");if(s.has(e))throw new Error(`The event '${e}' is already registered.`);if(t.browserEventName){const n=i.get(t.browserEventName);n?n.push(e):i.set(t.browserEventName,[e]),a.forEach((n=>n(e,t.browserEventName)))}s.set(e,t)},rootComponents:y,runtime:{},_internal:{navigationManager:Ue,domWrapper:Je,Virtualize:Ke,PageTitle:Ge,InputFile:Qe,NavigationLock:tt,getJSDataStreamChunk:rt,attachWebRendererInterop:I}};var st;function it(e){const t={...at,...e};return e&&e.reconnectionOptions&&(t.reconnectionOptions={...at.reconnectionOptions,...e.reconnectionOptions}),t}window.Blazor=ot,function(e){e[e.Trace=0]="Trace",e[e.Debug=1]="Debug",e[e.Information=2]="Information",e[e.Warning=3]="Warning",e[e.Error=4]="Error",e[e.Critical=5]="Critical",e[e.None=6]="None"}(st||(st={}));const at={configureSignalR:e=>{},logLevel:st.Warning,initializers:void 0,circuitHandlers:[],reconnectionOptions:{maxRetries:8,retryIntervalMilliseconds:2e4,dialogId:"components-reconnect-modal"}};class ct{log(e,t){}}ct.instance=new ct;class lt{constructor(e){this.minLevel=e}log(e,t){if(e>=this.minLevel){const n=`[${(new Date).toISOString()}] ${st[e]}: ${t}`;switch(e){case st.Critical:case st.Error:console.error(n);break;case st.Warning:console.warn(n);break;case st.Information:console.info(n);break;default:console.log(n)}}}}const ht=/^\s*Blazor-Server-Component-State:(?[a-zA-Z0-9+/=]+)$/;function dt(e,t,n="state"){var r;if(e.nodeType===Node.COMMENT_NODE){const o=e.textContent||"",s=t.exec(o),i=s&&s.groups&&s.groups[n];return i&&(null===(r=e.parentNode)||void 0===r||r.removeChild(e)),i}if(!e.hasChildNodes())return;const o=e.childNodes;for(let e=0;e.*)$/);function ft(e,t){const n=e.currentElement;var r,o,s;if(n&&n.nodeType===Node.COMMENT_NODE&&n.textContent){const i=pt.exec(n.textContent),a=i&&i.groups&&i.groups.descriptor;if(!a)return;!function(e){if(e.parentNode instanceof Document)throw new Error("Root components cannot be marked as interactive. The element must be rendered statically so that scripts are not evaluated multiple times.")}(n);try{const i=function(e){const t=JSON.parse(e),{type:n}=t;if("server"!==n&&"webassembly"!==n&&"auto"!==n)throw new Error(`Invalid component type '${n}'.`);return t}(a),c=function(e,t,n){const{prerenderId:r}=e;if(r){for(;n.next()&&n.currentElement;){const e=n.currentElement;if(e.nodeType!==Node.COMMENT_NODE)continue;if(!e.textContent)continue;const t=pt.exec(e.textContent),o=t&&t[1];if(o)return yt(o,r),e}throw new Error(`Could not find an end component comment for '${t}'.`)}}(i,n,e);if(t!==i.type)return;switch(i.type){case"webassembly":return o=n,s=c,vt(r=i),{...r,uniqueId:gt++,start:o,end:s};case"server":return function(e,t,n){return mt(e),{...e,uniqueId:gt++,start:t,end:n}}(i,n,c);case"auto":return function(e,t,n){return mt(e),vt(e),{...e,uniqueId:gt++,start:t,end:n}}(i,n,c)}}catch(e){throw new Error(`Found malformed component comment at ${n.textContent}`)}}}let gt=0;function mt(e){const{descriptor:t,sequence:n}=e;if(!t)throw new Error("descriptor must be defined when using a descriptor.");if(void 0===n)throw new Error("sequence must be defined when using a descriptor.");if(!Number.isInteger(n))throw new Error(`Error parsing the sequence '${n}' for component '${JSON.stringify(e)}'`)}function vt(e){const{assembly:t,typeName:n}=e;if(!t)throw new Error("assembly must be defined when using a descriptor.");if(!n)throw new Error("typeName must be defined when using a descriptor.");e.parameterDefinitions=e.parameterDefinitions&&atob(e.parameterDefinitions),e.parameterValues=e.parameterValues&&atob(e.parameterValues)}function yt(e,t){const n=JSON.parse(e);if(1!==Object.keys(n).length)throw new Error(`Invalid end of component comment: '${e}'`);const r=n.prerenderId;if(!r)throw new Error(`End of component comment must have a value for the prerendered property: '${e}'`);if(r!==t)throw new Error(`End of component comment prerendered property must match the start comment prerender id: '${t}', '${r}'`)}class wt{constructor(e){this.childNodes=e,this.currentIndex=-1,this.length=e.length}next(){return this.currentIndex++,this.currentIndex{n+=`0x${e<16?"0":""}${e.toString(16)} `})),n.substr(0,n.length-1)}(e)}'`)):"string"==typeof e&&(n=`String data of length ${e.length}`,t&&(n+=`. Content: '${e}'`)),n}function Tt(e){return e&&"undefined"!=typeof ArrayBuffer&&(e instanceof ArrayBuffer||e.constructor&&"ArrayBuffer"===e.constructor.name)}async function Dt(e,t,n,r,o,s){const i={},[a,c]=At();i[a]=c,e.log(bt.Trace,`(${t} transport) sending data. ${kt(o,s.logMessageContent)}.`);const l=Tt(o)?"arraybuffer":"text",h=await n.post(r,{content:o,headers:{...i,...s.headers},responseType:l,timeout:s.timeout,withCredentials:s.withCredentials});e.log(bt.Trace,`(${t} transport) request complete. Response status: ${h.statusCode}.`)}class Rt{constructor(e,t){this._subject=e,this._observer=t}dispose(){const e=this._subject.observers.indexOf(this._observer);e>-1&&this._subject.observers.splice(e,1),0===this._subject.observers.length&&this._subject.cancelCallback&&this._subject.cancelCallback().catch((e=>{}))}}class xt{constructor(e){this._minLevel=e,this.out=console}log(e,t){if(e>=this._minLevel){const n=`[${(new Date).toISOString()}] ${bt[e]}: ${t}`;switch(e){case bt.Critical:case bt.Error:this.out.error(n);break;case bt.Warning:this.out.warn(n);break;case bt.Information:this.out.info(n);break;default:this.out.log(n)}}}}function At(){let e="X-SignalR-User-Agent";return It.isNode&&(e="User-Agent"),[e,Pt(Et,Nt(),It.isNode?"NodeJS":"Browser",Ut())]}function Pt(e,t,n,r){let o="Microsoft SignalR/";const s=e.split(".");return o+=`${s[0]}.${s[1]}`,o+=` (${e}; `,o+=t&&""!==t?`${t}; `:"Unknown OS; ",o+=`${n}`,o+=r?`; ${r}`:"; Unknown Runtime Version",o+=")",o}function Nt(){if(!It.isNode)return"";switch(process.platform){case"win32":return"Windows NT";case"darwin":return"macOS";case"linux":return"Linux";default:return process.platform}}function Ut(){if(It.isNode)return process.versions.node}function Mt(e){return e.stack?e.stack:e.message?e.message:`${e}`}class Bt{writeHandshakeRequest(e){return _t.write(JSON.stringify(e))}parseHandshakeResponse(e){let t,n;if(Tt(e)){const r=new Uint8Array(e),o=r.indexOf(_t.RecordSeparatorCode);if(-1===o)throw new Error("Message is incomplete.");const s=o+1;t=String.fromCharCode.apply(null,Array.prototype.slice.call(r.slice(0,s))),n=r.byteLength>s?r.slice(s).buffer:null}else{const r=e,o=r.indexOf(_t.RecordSeparator);if(-1===o)throw new Error("Message is incomplete.");const s=o+1;t=r.substring(0,s),n=r.length>s?r.substring(s):null}const r=_t.parse(t),o=JSON.parse(r[0]);if(o.type)throw new Error("Expected a handshake response from the server.");return[n,o]}}class Lt extends Error{constructor(e,t){const n=new.target.prototype;super(`${e}: Status code '${t}'`),this.statusCode=t,this.__proto__=n}}class $t extends Error{constructor(e="A timeout occurred."){const t=new.target.prototype;super(e),this.__proto__=t}}class Ot extends Error{constructor(e="An abort occurred."){const t=new.target.prototype;super(e),this.__proto__=t}}class Ft extends Error{constructor(e,t){const n=new.target.prototype;super(e),this.transport=t,this.errorType="UnsupportedTransportError",this.__proto__=n}}class Ht extends Error{constructor(e,t){const n=new.target.prototype;super(e),this.transport=t,this.errorType="DisabledTransportError",this.__proto__=n}}class jt extends Error{constructor(e,t){const n=new.target.prototype;super(e),this.transport=t,this.errorType="FailedToStartTransportError",this.__proto__=n}}class Wt extends Error{constructor(e){const t=new.target.prototype;super(e),this.errorType="FailedToNegotiateWithServerError",this.__proto__=t}}class zt extends Error{constructor(e,t){const n=new.target.prototype;super(e),this.innerErrors=t,this.__proto__=n}}var qt,Jt;!function(e){e[e.Invocation=1]="Invocation",e[e.StreamItem=2]="StreamItem",e[e.Completion=3]="Completion",e[e.StreamInvocation=4]="StreamInvocation",e[e.CancelInvocation=5]="CancelInvocation",e[e.Ping=6]="Ping",e[e.Close=7]="Close",e[e.Ack=8]="Ack",e[e.Sequence=9]="Sequence"}(qt||(qt={}));class Kt{constructor(){this.observers=[]}next(e){for(const t of this.observers)t.next(e)}error(e){for(const t of this.observers)t.error&&t.error(e)}complete(){for(const e of this.observers)e.complete&&e.complete()}subscribe(e){return this.observers.push(e),new Rt(this,e)}}class Vt{constructor(e,t,n){this._bufferSize=1e5,this._messages=[],this._totalMessageCount=0,this._waitForSequenceMessage=!1,this._nextReceivingSequenceId=1,this._latestReceivedSequenceId=0,this._bufferedByteCount=0,this._reconnectInProgress=!1,this._protocol=e,this._connection=t,this._bufferSize=n}async _send(e){const t=this._protocol.writeMessage(e);let n=Promise.resolve();if(this._isInvocationMessage(e)){this._totalMessageCount++;let e=()=>{},r=()=>{};Tt(t)?this._bufferedByteCount+=t.byteLength:this._bufferedByteCount+=t.length,this._bufferedByteCount>=this._bufferSize&&(n=new Promise(((t,n)=>{e=t,r=n}))),this._messages.push(new Xt(t,this._totalMessageCount,e,r))}try{this._reconnectInProgress||await this._connection.send(t)}catch{this._disconnected()}await n}_ack(e){let t=-1;for(let n=0;nthis._nextReceivingSequenceId?this._connection.stop(new Error("Sequence ID greater than amount of messages we've received.")):this._nextReceivingSequenceId=e.sequenceId}_disconnected(){this._reconnectInProgress=!0,this._waitForSequenceMessage=!0}async _resend(){const e=0!==this._messages.length?this._messages[0]._id:this._totalMessageCount+1;await this._connection.send(this._protocol.writeMessage({type:qt.Sequence,sequenceId:e}));const t=this._messages;for(const e of t)await this._connection.send(e._message);this._reconnectInProgress=!1}_dispose(e){null!=e||(e=new Error("Unable to reconnect to server."));for(const t of this._messages)t._rejector(e)}_isInvocationMessage(e){switch(e.type){case qt.Invocation:case qt.StreamItem:case qt.Completion:case qt.StreamInvocation:case qt.CancelInvocation:return!0;case qt.Close:case qt.Sequence:case qt.Ping:case qt.Ack:return!1}}_ackTimer(){void 0===this._ackTimerHandle&&(this._ackTimerHandle=setTimeout((async()=>{try{this._reconnectInProgress||await this._connection.send(this._protocol.writeMessage({type:qt.Ack,sequenceId:this._latestReceivedSequenceId}))}catch{}clearTimeout(this._ackTimerHandle),this._ackTimerHandle=void 0}),1e3))}}class Xt{constructor(e,t,n,r){this._message=e,this._id=t,this._resolver=n,this._rejector=r}}!function(e){e.Disconnected="Disconnected",e.Connecting="Connecting",e.Connected="Connected",e.Disconnecting="Disconnecting",e.Reconnecting="Reconnecting"}(Jt||(Jt={}));class Yt{static create(e,t,n,r,o,s,i){return new Yt(e,t,n,r,o,s,i)}constructor(e,t,n,r,o,s,i){this._nextKeepAlive=0,this._freezeEventListener=()=>{this._logger.log(bt.Warning,"The page is being frozen, this will likely lead to the connection being closed and messages being lost. For more information see the docs at https://learn.microsoft.com/aspnet/core/signalr/javascript-client#bsleep")},Ct.isRequired(e,"connection"),Ct.isRequired(t,"logger"),Ct.isRequired(n,"protocol"),this.serverTimeoutInMilliseconds=null!=o?o:3e4,this.keepAliveIntervalInMilliseconds=null!=s?s:15e3,this._statefulReconnectBufferSize=null!=i?i:1e5,this._logger=t,this._protocol=n,this.connection=e,this._reconnectPolicy=r,this._handshakeProtocol=new Bt,this.connection.onreceive=e=>this._processIncomingData(e),this.connection.onclose=e=>this._connectionClosed(e),this._callbacks={},this._methods={},this._closedCallbacks=[],this._reconnectingCallbacks=[],this._reconnectedCallbacks=[],this._invocationId=0,this._receivedHandshakeResponse=!1,this._connectionState=Jt.Disconnected,this._connectionStarted=!1,this._cachedPingMessage=this._protocol.writeMessage({type:qt.Ping})}get state(){return this._connectionState}get connectionId(){return this.connection&&this.connection.connectionId||null}get baseUrl(){return this.connection.baseUrl||""}set baseUrl(e){if(this._connectionState!==Jt.Disconnected&&this._connectionState!==Jt.Reconnecting)throw new Error("The HubConnection must be in the Disconnected or Reconnecting state to change the url.");if(!e)throw new Error("The HubConnection url must be a valid url.");this.connection.baseUrl=e}start(){return this._startPromise=this._startWithStateTransitions(),this._startPromise}async _startWithStateTransitions(){if(this._connectionState!==Jt.Disconnected)return Promise.reject(new Error("Cannot start a HubConnection that is not in the 'Disconnected' state."));this._connectionState=Jt.Connecting,this._logger.log(bt.Debug,"Starting HubConnection.");try{await this._startInternal(),It.isBrowser&&window.document.addEventListener("freeze",this._freezeEventListener),this._connectionState=Jt.Connected,this._connectionStarted=!0,this._logger.log(bt.Debug,"HubConnection connected successfully.")}catch(e){return this._connectionState=Jt.Disconnected,this._logger.log(bt.Debug,`HubConnection failed to start successfully because of error '${e}'.`),Promise.reject(e)}}async _startInternal(){this._stopDuringStartError=void 0,this._receivedHandshakeResponse=!1;const e=new Promise(((e,t)=>{this._handshakeResolver=e,this._handshakeRejecter=t}));await this.connection.start(this._protocol.transferFormat);try{let t=this._protocol.version;this.connection.features.reconnect||(t=1);const n={protocol:this._protocol.name,version:t};if(this._logger.log(bt.Debug,"Sending handshake request."),await this._sendMessage(this._handshakeProtocol.writeHandshakeRequest(n)),this._logger.log(bt.Information,`Using HubProtocol '${this._protocol.name}'.`),this._cleanupTimeout(),this._resetTimeoutPeriod(),this._resetKeepAliveInterval(),await e,this._stopDuringStartError)throw this._stopDuringStartError;!!this.connection.features.reconnect&&(this._messageBuffer=new Vt(this._protocol,this.connection,this._statefulReconnectBufferSize),this.connection.features.disconnected=this._messageBuffer._disconnected.bind(this._messageBuffer),this.connection.features.resend=()=>{if(this._messageBuffer)return this._messageBuffer._resend()}),this.connection.features.inherentKeepAlive||await this._sendMessage(this._cachedPingMessage)}catch(e){throw this._logger.log(bt.Debug,`Hub handshake failed with error '${e}' during start(). Stopping HubConnection.`),this._cleanupTimeout(),this._cleanupPingTimer(),await this.connection.stop(e),e}}async stop(){const e=this._startPromise;this.connection.features.reconnect=!1,this._stopPromise=this._stopInternal(),await this._stopPromise;try{await e}catch(e){}}_stopInternal(e){if(this._connectionState===Jt.Disconnected)return this._logger.log(bt.Debug,`Call to HubConnection.stop(${e}) ignored because it is already in the disconnected state.`),Promise.resolve();if(this._connectionState===Jt.Disconnecting)return this._logger.log(bt.Debug,`Call to HttpConnection.stop(${e}) ignored because the connection is already in the disconnecting state.`),this._stopPromise;const t=this._connectionState;return this._connectionState=Jt.Disconnecting,this._logger.log(bt.Debug,"Stopping HubConnection."),this._reconnectDelayHandle?(this._logger.log(bt.Debug,"Connection stopped during reconnect delay. Done reconnecting."),clearTimeout(this._reconnectDelayHandle),this._reconnectDelayHandle=void 0,this._completeClose(),Promise.resolve()):(t===Jt.Connected&&this._sendCloseMessage(),this._cleanupTimeout(),this._cleanupPingTimer(),this._stopDuringStartError=e||new Ot("The connection was stopped before the hub handshake could complete."),this.connection.stop(e))}async _sendCloseMessage(){try{await this._sendWithProtocol(this._createCloseMessage())}catch{}}stream(e,...t){const[n,r]=this._replaceStreamingParams(t),o=this._createStreamInvocation(e,t,r);let s;const i=new Kt;return i.cancelCallback=()=>{const e=this._createCancelInvocation(o.invocationId);return delete this._callbacks[o.invocationId],s.then((()=>this._sendWithProtocol(e)))},this._callbacks[o.invocationId]=(e,t)=>{t?i.error(t):e&&(e.type===qt.Completion?e.error?i.error(new Error(e.error)):i.complete():i.next(e.item))},s=this._sendWithProtocol(o).catch((e=>{i.error(e),delete this._callbacks[o.invocationId]})),this._launchStreams(n,s),i}_sendMessage(e){return this._resetKeepAliveInterval(),this.connection.send(e)}_sendWithProtocol(e){return this._messageBuffer?this._messageBuffer._send(e):this._sendMessage(this._protocol.writeMessage(e))}send(e,...t){const[n,r]=this._replaceStreamingParams(t),o=this._sendWithProtocol(this._createInvocation(e,t,!0,r));return this._launchStreams(n,o),o}invoke(e,...t){const[n,r]=this._replaceStreamingParams(t),o=this._createInvocation(e,t,!1,r);return new Promise(((e,t)=>{this._callbacks[o.invocationId]=(n,r)=>{r?t(r):n&&(n.type===qt.Completion?n.error?t(new Error(n.error)):e(n.result):t(new Error(`Unexpected message type: ${n.type}`)))};const r=this._sendWithProtocol(o).catch((e=>{t(e),delete this._callbacks[o.invocationId]}));this._launchStreams(n,r)}))}on(e,t){e&&t&&(e=e.toLowerCase(),this._methods[e]||(this._methods[e]=[]),-1===this._methods[e].indexOf(t)&&this._methods[e].push(t))}off(e,t){if(!e)return;e=e.toLowerCase();const n=this._methods[e];if(n)if(t){const r=n.indexOf(t);-1!==r&&(n.splice(r,1),0===n.length&&delete this._methods[e])}else delete this._methods[e]}onclose(e){e&&this._closedCallbacks.push(e)}onreconnecting(e){e&&this._reconnectingCallbacks.push(e)}onreconnected(e){e&&this._reconnectedCallbacks.push(e)}_processIncomingData(e){if(this._cleanupTimeout(),this._receivedHandshakeResponse||(e=this._processHandshakeResponse(e),this._receivedHandshakeResponse=!0),e){const t=this._protocol.parseMessages(e,this._logger);for(const e of t)if(!this._messageBuffer||this._messageBuffer._shouldProcessMessage(e))switch(e.type){case qt.Invocation:this._invokeClientMethod(e);break;case qt.StreamItem:case qt.Completion:{const t=this._callbacks[e.invocationId];if(t){e.type===qt.Completion&&delete this._callbacks[e.invocationId];try{t(e)}catch(e){this._logger.log(bt.Error,`Stream callback threw error: ${Mt(e)}`)}}break}case qt.Ping:break;case qt.Close:{this._logger.log(bt.Information,"Close message received from server.");const t=e.error?new Error("Server returned an error on close: "+e.error):void 0;!0===e.allowReconnect?this.connection.stop(t):this._stopPromise=this._stopInternal(t);break}case qt.Ack:this._messageBuffer&&this._messageBuffer._ack(e);break;case qt.Sequence:this._messageBuffer&&this._messageBuffer._resetSequence(e);break;default:this._logger.log(bt.Warning,`Invalid message type: ${e.type}.`)}}this._resetTimeoutPeriod()}_processHandshakeResponse(e){let t,n;try{[n,t]=this._handshakeProtocol.parseHandshakeResponse(e)}catch(e){const t="Error parsing handshake response: "+e;this._logger.log(bt.Error,t);const n=new Error(t);throw this._handshakeRejecter(n),n}if(t.error){const e="Server returned handshake error: "+t.error;this._logger.log(bt.Error,e);const n=new Error(e);throw this._handshakeRejecter(n),n}return this._logger.log(bt.Debug,"Server handshake complete."),this._handshakeResolver(),n}_resetKeepAliveInterval(){this.connection.features.inherentKeepAlive||(this._nextKeepAlive=(new Date).getTime()+this.keepAliveIntervalInMilliseconds,this._cleanupPingTimer())}_resetTimeoutPeriod(){if(!(this.connection.features&&this.connection.features.inherentKeepAlive||(this._timeoutHandle=setTimeout((()=>this.serverTimeout()),this.serverTimeoutInMilliseconds),void 0!==this._pingServerHandle))){let e=this._nextKeepAlive-(new Date).getTime();e<0&&(e=0),this._pingServerHandle=setTimeout((async()=>{if(this._connectionState===Jt.Connected)try{await this._sendMessage(this._cachedPingMessage)}catch{this._cleanupPingTimer()}}),e)}}serverTimeout(){this.connection.stop(new Error("Server timeout elapsed without receiving a message from the server."))}async _invokeClientMethod(e){const t=e.target.toLowerCase(),n=this._methods[t];if(!n)return this._logger.log(bt.Warning,`No client method with the name '${t}' found.`),void(e.invocationId&&(this._logger.log(bt.Warning,`No result given for '${t}' method and invocation ID '${e.invocationId}'.`),await this._sendWithProtocol(this._createCompletionMessage(e.invocationId,"Client didn't provide a result.",null))));const r=n.slice(),o=!!e.invocationId;let s,i,a;for(const n of r)try{const r=s;s=await n.apply(this,e.arguments),o&&s&&r&&(this._logger.log(bt.Error,`Multiple results provided for '${t}'. Sending error to server.`),a=this._createCompletionMessage(e.invocationId,"Client provided multiple results.",null)),i=void 0}catch(e){i=e,this._logger.log(bt.Error,`A callback for the method '${t}' threw error '${e}'.`)}a?await this._sendWithProtocol(a):o?(i?a=this._createCompletionMessage(e.invocationId,`${i}`,null):void 0!==s?a=this._createCompletionMessage(e.invocationId,null,s):(this._logger.log(bt.Warning,`No result given for '${t}' method and invocation ID '${e.invocationId}'.`),a=this._createCompletionMessage(e.invocationId,"Client didn't provide a result.",null)),await this._sendWithProtocol(a)):s&&this._logger.log(bt.Error,`Result given for '${t}' method but server is not expecting a result.`)}_connectionClosed(e){this._logger.log(bt.Debug,`HubConnection.connectionClosed(${e}) called while in state ${this._connectionState}.`),this._stopDuringStartError=this._stopDuringStartError||e||new Ot("The underlying connection was closed before the hub handshake could complete."),this._handshakeResolver&&this._handshakeResolver(),this._cancelCallbacksWithError(e||new Error("Invocation canceled due to the underlying connection being closed.")),this._cleanupTimeout(),this._cleanupPingTimer(),this._connectionState===Jt.Disconnecting?this._completeClose(e):this._connectionState===Jt.Connected&&this._reconnectPolicy?this._reconnect(e):this._connectionState===Jt.Connected&&this._completeClose(e)}_completeClose(e){if(this._connectionStarted){this._connectionState=Jt.Disconnected,this._connectionStarted=!1,this._messageBuffer&&(this._messageBuffer._dispose(null!=e?e:new Error("Connection closed.")),this._messageBuffer=void 0),It.isBrowser&&window.document.removeEventListener("freeze",this._freezeEventListener);try{this._closedCallbacks.forEach((t=>t.apply(this,[e])))}catch(t){this._logger.log(bt.Error,`An onclose callback called with error '${e}' threw error '${t}'.`)}}}async _reconnect(e){const t=Date.now();let n=0,r=void 0!==e?e:new Error("Attempting to reconnect due to a unknown error."),o=this._getNextRetryDelay(n++,0,r);if(null===o)return this._logger.log(bt.Debug,"Connection not reconnecting because the IRetryPolicy returned null on the first reconnect attempt."),void this._completeClose(e);if(this._connectionState=Jt.Reconnecting,e?this._logger.log(bt.Information,`Connection reconnecting because of error '${e}'.`):this._logger.log(bt.Information,"Connection reconnecting."),0!==this._reconnectingCallbacks.length){try{this._reconnectingCallbacks.forEach((t=>t.apply(this,[e])))}catch(t){this._logger.log(bt.Error,`An onreconnecting callback called with error '${e}' threw error '${t}'.`)}if(this._connectionState!==Jt.Reconnecting)return void this._logger.log(bt.Debug,"Connection left the reconnecting state in onreconnecting callback. Done reconnecting.")}for(;null!==o;){if(this._logger.log(bt.Information,`Reconnect attempt number ${n} will start in ${o} ms.`),await new Promise((e=>{this._reconnectDelayHandle=setTimeout(e,o)})),this._reconnectDelayHandle=void 0,this._connectionState!==Jt.Reconnecting)return void this._logger.log(bt.Debug,"Connection left the reconnecting state during reconnect delay. Done reconnecting.");try{if(await this._startInternal(),this._connectionState=Jt.Connected,this._logger.log(bt.Information,"HubConnection reconnected successfully."),0!==this._reconnectedCallbacks.length)try{this._reconnectedCallbacks.forEach((e=>e.apply(this,[this.connection.connectionId])))}catch(e){this._logger.log(bt.Error,`An onreconnected callback called with connectionId '${this.connection.connectionId}; threw error '${e}'.`)}return}catch(e){if(this._logger.log(bt.Information,`Reconnect attempt failed because of error '${e}'.`),this._connectionState!==Jt.Reconnecting)return this._logger.log(bt.Debug,`Connection moved to the '${this._connectionState}' from the reconnecting state during reconnect attempt. Done reconnecting.`),void(this._connectionState===Jt.Disconnecting&&this._completeClose());r=e instanceof Error?e:new Error(e.toString()),o=this._getNextRetryDelay(n++,Date.now()-t,r)}}this._logger.log(bt.Information,`Reconnect retries have been exhausted after ${Date.now()-t} ms and ${n} failed attempts. Connection disconnecting.`),this._completeClose()}_getNextRetryDelay(e,t,n){try{return this._reconnectPolicy.nextRetryDelayInMilliseconds({elapsedMilliseconds:t,previousRetryCount:e,retryReason:n})}catch(n){return this._logger.log(bt.Error,`IRetryPolicy.nextRetryDelayInMilliseconds(${e}, ${t}) threw error '${n}'.`),null}}_cancelCallbacksWithError(e){const t=this._callbacks;this._callbacks={},Object.keys(t).forEach((n=>{const r=t[n];try{r(null,e)}catch(t){this._logger.log(bt.Error,`Stream 'error' callback called with '${e}' threw error: ${Mt(t)}`)}}))}_cleanupPingTimer(){this._pingServerHandle&&(clearTimeout(this._pingServerHandle),this._pingServerHandle=void 0)}_cleanupTimeout(){this._timeoutHandle&&clearTimeout(this._timeoutHandle)}_createInvocation(e,t,n,r){if(n)return 0!==r.length?{arguments:t,streamIds:r,target:e,type:qt.Invocation}:{arguments:t,target:e,type:qt.Invocation};{const n=this._invocationId;return this._invocationId++,0!==r.length?{arguments:t,invocationId:n.toString(),streamIds:r,target:e,type:qt.Invocation}:{arguments:t,invocationId:n.toString(),target:e,type:qt.Invocation}}}_launchStreams(e,t){if(0!==e.length){t||(t=Promise.resolve());for(const n in e)e[n].subscribe({complete:()=>{t=t.then((()=>this._sendWithProtocol(this._createCompletionMessage(n))))},error:e=>{let r;r=e instanceof Error?e.message:e&&e.toString?e.toString():"Unknown error",t=t.then((()=>this._sendWithProtocol(this._createCompletionMessage(n,r))))},next:e=>{t=t.then((()=>this._sendWithProtocol(this._createStreamItemMessage(n,e))))}})}}_replaceStreamingParams(e){const t=[],n=[];for(let r=0;r0)&&(t=!1,this._accessToken=await this._accessTokenFactory()),this._setAuthorizationHeader(e);const n=await this._innerClient.send(e);return t&&401===n.statusCode&&this._accessTokenFactory?(this._accessToken=await this._accessTokenFactory(),this._setAuthorizationHeader(e),await this._innerClient.send(e)):n}_setAuthorizationHeader(e){e.headers||(e.headers={}),this._accessToken?e.headers[Zt.Authorization]=`Bearer ${this._accessToken}`:this._accessTokenFactory&&e.headers[Zt.Authorization]&&delete e.headers[Zt.Authorization]}getCookieString(e){return this._innerClient.getCookieString(e)}}class rn extends tn{constructor(e){super(),this._logger=e;const t={_fetchType:void 0,_jar:void 0};var r;r=t,"undefined"==typeof fetch&&(r._jar=new(n(628).CookieJar),"undefined"==typeof fetch?r._fetchType=n(200):r._fetchType=fetch,r._fetchType=n(203)(r._fetchType,r._jar),1)?(this._fetchType=t._fetchType,this._jar=t._jar):this._fetchType=fetch.bind(function(){if("undefined"!=typeof globalThis)return globalThis;if("undefined"!=typeof self)return self;if("undefined"!=typeof window)return window;if(void 0!==n.g)return n.g;throw new Error("could not find global")}()),this._abortControllerType=AbortController;const o={_abortControllerType:this._abortControllerType};(function(e){return"undefined"==typeof AbortController&&(e._abortControllerType=n(778),!0)})(o)&&(this._abortControllerType=o._abortControllerType)}async send(e){if(e.abortSignal&&e.abortSignal.aborted)throw new Ot;if(!e.method)throw new Error("No method defined.");if(!e.url)throw new Error("No url defined.");const t=new this._abortControllerType;let n;e.abortSignal&&(e.abortSignal.onabort=()=>{t.abort(),n=new Ot});let r,o=null;if(e.timeout){const r=e.timeout;o=setTimeout((()=>{t.abort(),this._logger.log(bt.Warning,"Timeout from HTTP request."),n=new $t}),r)}""===e.content&&(e.content=void 0),e.content&&(e.headers=e.headers||{},Tt(e.content)?e.headers["Content-Type"]="application/octet-stream":e.headers["Content-Type"]="text/plain;charset=UTF-8");try{r=await this._fetchType(e.url,{body:e.content,cache:"no-cache",credentials:!0===e.withCredentials?"include":"same-origin",headers:{"X-Requested-With":"XMLHttpRequest",...e.headers},method:e.method,mode:"cors",redirect:"follow",signal:t.signal})}catch(e){if(n)throw n;throw this._logger.log(bt.Warning,`Error from HTTP request. ${e}.`),e}finally{o&&clearTimeout(o),e.abortSignal&&(e.abortSignal.onabort=null)}if(!r.ok){const e=await on(r,"text");throw new Lt(e||r.statusText,r.status)}const s=on(r,e.responseType),i=await s;return new en(r.status,r.statusText,i)}getCookieString(e){return""}}function on(e,t){let n;switch(t){case"arraybuffer":n=e.arrayBuffer();break;case"text":default:n=e.text();break;case"blob":case"document":case"json":throw new Error(`${t} is not supported.`)}return n}class sn extends tn{constructor(e){super(),this._logger=e}send(e){return e.abortSignal&&e.abortSignal.aborted?Promise.reject(new Ot):e.method?e.url?new Promise(((t,n)=>{const r=new XMLHttpRequest;r.open(e.method,e.url,!0),r.withCredentials=void 0===e.withCredentials||e.withCredentials,r.setRequestHeader("X-Requested-With","XMLHttpRequest"),""===e.content&&(e.content=void 0),e.content&&(Tt(e.content)?r.setRequestHeader("Content-Type","application/octet-stream"):r.setRequestHeader("Content-Type","text/plain;charset=UTF-8"));const o=e.headers;o&&Object.keys(o).forEach((e=>{r.setRequestHeader(e,o[e])})),e.responseType&&(r.responseType=e.responseType),e.abortSignal&&(e.abortSignal.onabort=()=>{r.abort(),n(new Ot)}),e.timeout&&(r.timeout=e.timeout),r.onload=()=>{e.abortSignal&&(e.abortSignal.onabort=null),r.status>=200&&r.status<300?t(new en(r.status,r.statusText,r.response||r.responseText)):n(new Lt(r.response||r.responseText||r.statusText,r.status))},r.onerror=()=>{this._logger.log(bt.Warning,`Error from HTTP request. ${r.status}: ${r.statusText}.`),n(new Lt(r.statusText,r.status))},r.ontimeout=()=>{this._logger.log(bt.Warning,"Timeout from HTTP request."),n(new $t)},r.send(e.content)})):Promise.reject(new Error("No url defined.")):Promise.reject(new Error("No method defined."))}}class an extends tn{constructor(e){if(super(),"undefined"!=typeof fetch)this._httpClient=new rn(e);else{if("undefined"==typeof XMLHttpRequest)throw new Error("No usable HttpClient found.");this._httpClient=new sn(e)}}send(e){return e.abortSignal&&e.abortSignal.aborted?Promise.reject(new Ot):e.method?e.url?this._httpClient.send(e):Promise.reject(new Error("No url defined.")):Promise.reject(new Error("No method defined."))}getCookieString(e){return this._httpClient.getCookieString(e)}}var cn,ln;!function(e){e[e.None=0]="None",e[e.WebSockets=1]="WebSockets",e[e.ServerSentEvents=2]="ServerSentEvents",e[e.LongPolling=4]="LongPolling"}(cn||(cn={})),function(e){e[e.Text=1]="Text",e[e.Binary=2]="Binary"}(ln||(ln={}));class hn{constructor(){this._isAborted=!1,this.onabort=null}abort(){this._isAborted||(this._isAborted=!0,this.onabort&&this.onabort())}get signal(){return this}get aborted(){return this._isAborted}}class dn{get pollAborted(){return this._pollAbort.aborted}constructor(e,t,n){this._httpClient=e,this._logger=t,this._pollAbort=new hn,this._options=n,this._running=!1,this.onreceive=null,this.onclose=null}async connect(e,t){if(Ct.isRequired(e,"url"),Ct.isRequired(t,"transferFormat"),Ct.isIn(t,ln,"transferFormat"),this._url=e,this._logger.log(bt.Trace,"(LongPolling transport) Connecting."),t===ln.Binary&&"undefined"!=typeof XMLHttpRequest&&"string"!=typeof(new XMLHttpRequest).responseType)throw new Error("Binary protocols over XmlHttpRequest not implementing advanced features are not supported.");const[n,r]=At(),o={[n]:r,...this._options.headers},s={abortSignal:this._pollAbort.signal,headers:o,timeout:1e5,withCredentials:this._options.withCredentials};t===ln.Binary&&(s.responseType="arraybuffer");const i=`${e}&_=${Date.now()}`;this._logger.log(bt.Trace,`(LongPolling transport) polling: ${i}.`);const a=await this._httpClient.get(i,s);200!==a.statusCode?(this._logger.log(bt.Error,`(LongPolling transport) Unexpected response code: ${a.statusCode}.`),this._closeError=new Lt(a.statusText||"",a.statusCode),this._running=!1):this._running=!0,this._receiving=this._poll(this._url,s)}async _poll(e,t){try{for(;this._running;)try{const n=`${e}&_=${Date.now()}`;this._logger.log(bt.Trace,`(LongPolling transport) polling: ${n}.`);const r=await this._httpClient.get(n,t);204===r.statusCode?(this._logger.log(bt.Information,"(LongPolling transport) Poll terminated by server."),this._running=!1):200!==r.statusCode?(this._logger.log(bt.Error,`(LongPolling transport) Unexpected response code: ${r.statusCode}.`),this._closeError=new Lt(r.statusText||"",r.statusCode),this._running=!1):r.content?(this._logger.log(bt.Trace,`(LongPolling transport) data received. ${kt(r.content,this._options.logMessageContent)}.`),this.onreceive&&this.onreceive(r.content)):this._logger.log(bt.Trace,"(LongPolling transport) Poll timed out, reissuing.")}catch(e){this._running?e instanceof $t?this._logger.log(bt.Trace,"(LongPolling transport) Poll timed out, reissuing."):(this._closeError=e,this._running=!1):this._logger.log(bt.Trace,`(LongPolling transport) Poll errored after shutdown: ${e.message}`)}}finally{this._logger.log(bt.Trace,"(LongPolling transport) Polling complete."),this.pollAborted||this._raiseOnClose()}}async send(e){return this._running?Dt(this._logger,"LongPolling",this._httpClient,this._url,e,this._options):Promise.reject(new Error("Cannot send until the transport is connected"))}async stop(){this._logger.log(bt.Trace,"(LongPolling transport) Stopping polling."),this._running=!1,this._pollAbort.abort();try{await this._receiving,this._logger.log(bt.Trace,`(LongPolling transport) sending DELETE request to ${this._url}.`);const e={},[t,n]=At();e[t]=n;const r={headers:{...e,...this._options.headers},timeout:this._options.timeout,withCredentials:this._options.withCredentials};let o;try{await this._httpClient.delete(this._url,r)}catch(e){o=e}o?o instanceof Lt&&(404===o.statusCode?this._logger.log(bt.Trace,"(LongPolling transport) A 404 response was returned from sending a DELETE request."):this._logger.log(bt.Trace,`(LongPolling transport) Error sending a DELETE request: ${o}`)):this._logger.log(bt.Trace,"(LongPolling transport) DELETE request accepted.")}finally{this._logger.log(bt.Trace,"(LongPolling transport) Stop finished."),this._raiseOnClose()}}_raiseOnClose(){if(this.onclose){let e="(LongPolling transport) Firing onclose event.";this._closeError&&(e+=" Error: "+this._closeError),this._logger.log(bt.Trace,e),this.onclose(this._closeError)}}}class un{constructor(e,t,n,r){this._httpClient=e,this._accessToken=t,this._logger=n,this._options=r,this.onreceive=null,this.onclose=null}async connect(e,t){return Ct.isRequired(e,"url"),Ct.isRequired(t,"transferFormat"),Ct.isIn(t,ln,"transferFormat"),this._logger.log(bt.Trace,"(SSE transport) Connecting."),this._url=e,this._accessToken&&(e+=(e.indexOf("?")<0?"?":"&")+`access_token=${encodeURIComponent(this._accessToken)}`),new Promise(((n,r)=>{let o,s=!1;if(t===ln.Text){if(It.isBrowser||It.isWebWorker)o=new this._options.EventSource(e,{withCredentials:this._options.withCredentials});else{const t=this._httpClient.getCookieString(e),n={};n.Cookie=t;const[r,s]=At();n[r]=s,o=new this._options.EventSource(e,{withCredentials:this._options.withCredentials,headers:{...n,...this._options.headers}})}try{o.onmessage=e=>{if(this.onreceive)try{this._logger.log(bt.Trace,`(SSE transport) data received. ${kt(e.data,this._options.logMessageContent)}.`),this.onreceive(e.data)}catch(e){return void this._close(e)}},o.onerror=e=>{s?this._close():r(new Error("EventSource failed to connect. The connection could not be found on the server, either the connection ID is not present on the server, or a proxy is refusing/buffering the connection. If you have multiple servers check that sticky sessions are enabled."))},o.onopen=()=>{this._logger.log(bt.Information,`SSE connected to ${this._url}`),this._eventSource=o,s=!0,n()}}catch(e){return void r(e)}}else r(new Error("The Server-Sent Events transport only supports the 'Text' transfer format"))}))}async send(e){return this._eventSource?Dt(this._logger,"SSE",this._httpClient,this._url,e,this._options):Promise.reject(new Error("Cannot send until the transport is connected"))}stop(){return this._close(),Promise.resolve()}_close(e){this._eventSource&&(this._eventSource.close(),this._eventSource=void 0,this.onclose&&this.onclose(e))}}class pn{constructor(e,t,n,r,o,s){this._logger=n,this._accessTokenFactory=t,this._logMessageContent=r,this._webSocketConstructor=o,this._httpClient=e,this.onreceive=null,this.onclose=null,this._headers=s}async connect(e,t){let n;return Ct.isRequired(e,"url"),Ct.isRequired(t,"transferFormat"),Ct.isIn(t,ln,"transferFormat"),this._logger.log(bt.Trace,"(WebSockets transport) Connecting."),this._accessTokenFactory&&(n=await this._accessTokenFactory()),new Promise(((r,o)=>{let s;e=e.replace(/^http/,"ws");const i=this._httpClient.getCookieString(e);let a=!1;if(It.isReactNative){const t={},[r,o]=At();t[r]=o,n&&(t[Zt.Authorization]=`Bearer ${n}`),i&&(t[Zt.Cookie]=i),s=new this._webSocketConstructor(e,void 0,{headers:{...t,...this._headers}})}else n&&(e+=(e.indexOf("?")<0?"?":"&")+`access_token=${encodeURIComponent(n)}`);s||(s=new this._webSocketConstructor(e)),t===ln.Binary&&(s.binaryType="arraybuffer"),s.onopen=t=>{this._logger.log(bt.Information,`WebSocket connected to ${e}.`),this._webSocket=s,a=!0,r()},s.onerror=e=>{let t=null;t="undefined"!=typeof ErrorEvent&&e instanceof ErrorEvent?e.error:"There was an error with the transport",this._logger.log(bt.Information,`(WebSockets transport) ${t}.`)},s.onmessage=e=>{if(this._logger.log(bt.Trace,`(WebSockets transport) data received. ${kt(e.data,this._logMessageContent)}.`),this.onreceive)try{this.onreceive(e.data)}catch(e){return void this._close(e)}},s.onclose=e=>{if(a)this._close(e);else{let t=null;t="undefined"!=typeof ErrorEvent&&e instanceof ErrorEvent?e.error:"WebSocket failed to connect. The connection could not be found on the server, either the endpoint may not be a SignalR endpoint, the connection ID is not present on the server, or there is a proxy blocking WebSockets. If you have multiple servers check that sticky sessions are enabled.",o(new Error(t))}}}))}send(e){return this._webSocket&&this._webSocket.readyState===this._webSocketConstructor.OPEN?(this._logger.log(bt.Trace,`(WebSockets transport) sending data. ${kt(e,this._logMessageContent)}.`),this._webSocket.send(e),Promise.resolve()):Promise.reject("WebSocket is not in the OPEN state")}stop(){return this._webSocket&&this._close(void 0),Promise.resolve()}_close(e){this._webSocket&&(this._webSocket.onclose=()=>{},this._webSocket.onmessage=()=>{},this._webSocket.onerror=()=>{},this._webSocket.close(),this._webSocket=void 0),this._logger.log(bt.Trace,"(WebSockets transport) socket closed."),this.onclose&&(!this._isCloseEvent(e)||!1!==e.wasClean&&1e3===e.code?e instanceof Error?this.onclose(e):this.onclose():this.onclose(new Error(`WebSocket closed with status code: ${e.code} (${e.reason||"no reason given"}).`)))}_isCloseEvent(e){return e&&"boolean"==typeof e.wasClean&&"number"==typeof e.code}}class fn{constructor(e,t={}){if(this._stopPromiseResolver=()=>{},this.features={},this._negotiateVersion=1,Ct.isRequired(e,"url"),this._logger=function(e){return void 0===e?new xt(bt.Information):null===e?St.instance:void 0!==e.log?e:new xt(e)}(t.logger),this.baseUrl=this._resolveUrl(e),(t=t||{}).logMessageContent=void 0!==t.logMessageContent&&t.logMessageContent,"boolean"!=typeof t.withCredentials&&void 0!==t.withCredentials)throw new Error("withCredentials option was not a 'boolean' or 'undefined' value");t.withCredentials=void 0===t.withCredentials||t.withCredentials,t.timeout=void 0===t.timeout?1e5:t.timeout,"undefined"==typeof WebSocket||t.WebSocket||(t.WebSocket=WebSocket),"undefined"==typeof EventSource||t.EventSource||(t.EventSource=EventSource),this._httpClient=new nn(t.httpClient||new an(this._logger),t.accessTokenFactory),this._connectionState="Disconnected",this._connectionStarted=!1,this._options=t,this.onreceive=null,this.onclose=null}async start(e){if(e=e||ln.Binary,Ct.isIn(e,ln,"transferFormat"),this._logger.log(bt.Debug,`Starting connection with transfer format '${ln[e]}'.`),"Disconnected"!==this._connectionState)return Promise.reject(new Error("Cannot start an HttpConnection that is not in the 'Disconnected' state."));if(this._connectionState="Connecting",this._startInternalPromise=this._startInternal(e),await this._startInternalPromise,"Disconnecting"===this._connectionState){const e="Failed to start the HttpConnection before stop() was called.";return this._logger.log(bt.Error,e),await this._stopPromise,Promise.reject(new Ot(e))}if("Connected"!==this._connectionState){const e="HttpConnection.startInternal completed gracefully but didn't enter the connection into the connected state!";return this._logger.log(bt.Error,e),Promise.reject(new Ot(e))}this._connectionStarted=!0}send(e){return"Connected"!==this._connectionState?Promise.reject(new Error("Cannot send data if the connection is not in the 'Connected' State.")):(this._sendQueue||(this._sendQueue=new gn(this.transport)),this._sendQueue.send(e))}async stop(e){return"Disconnected"===this._connectionState?(this._logger.log(bt.Debug,`Call to HttpConnection.stop(${e}) ignored because the connection is already in the disconnected state.`),Promise.resolve()):"Disconnecting"===this._connectionState?(this._logger.log(bt.Debug,`Call to HttpConnection.stop(${e}) ignored because the connection is already in the disconnecting state.`),this._stopPromise):(this._connectionState="Disconnecting",this._stopPromise=new Promise((e=>{this._stopPromiseResolver=e})),await this._stopInternal(e),void await this._stopPromise)}async _stopInternal(e){this._stopError=e;try{await this._startInternalPromise}catch(e){}if(this.transport){try{await this.transport.stop()}catch(e){this._logger.log(bt.Error,`HttpConnection.transport.stop() threw error '${e}'.`),this._stopConnection()}this.transport=void 0}else this._logger.log(bt.Debug,"HttpConnection.transport is undefined in HttpConnection.stop() because start() failed.")}async _startInternal(e){let t=this.baseUrl;this._accessTokenFactory=this._options.accessTokenFactory,this._httpClient._accessTokenFactory=this._accessTokenFactory;try{if(this._options.skipNegotiation){if(this._options.transport!==cn.WebSockets)throw new Error("Negotiation can only be skipped when using the WebSocket transport directly.");this.transport=this._constructTransport(cn.WebSockets),await this._startTransport(t,e)}else{let n=null,r=0;do{if(n=await this._getNegotiationResponse(t),"Disconnecting"===this._connectionState||"Disconnected"===this._connectionState)throw new Ot("The connection was stopped during negotiation.");if(n.error)throw new Error(n.error);if(n.ProtocolVersion)throw new Error("Detected a connection attempt to an ASP.NET SignalR Server. This client only supports connecting to an ASP.NET Core SignalR Server. See https://aka.ms/signalr-core-differences for details.");if(n.url&&(t=n.url),n.accessToken){const e=n.accessToken;this._accessTokenFactory=()=>e,this._httpClient._accessToken=e,this._httpClient._accessTokenFactory=void 0}r++}while(n.url&&r<100);if(100===r&&n.url)throw new Error("Negotiate redirection limit exceeded.");await this._createTransport(t,this._options.transport,n,e)}this.transport instanceof dn&&(this.features.inherentKeepAlive=!0),"Connecting"===this._connectionState&&(this._logger.log(bt.Debug,"The HttpConnection connected successfully."),this._connectionState="Connected")}catch(e){return this._logger.log(bt.Error,"Failed to start the connection: "+e),this._connectionState="Disconnected",this.transport=void 0,this._stopPromiseResolver(),Promise.reject(e)}}async _getNegotiationResponse(e){const t={},[n,r]=At();t[n]=r;const o=this._resolveNegotiateUrl(e);this._logger.log(bt.Debug,`Sending negotiation request: ${o}.`);try{const e=await this._httpClient.post(o,{content:"",headers:{...t,...this._options.headers},timeout:this._options.timeout,withCredentials:this._options.withCredentials});if(200!==e.statusCode)return Promise.reject(new Error(`Unexpected status code returned from negotiate '${e.statusCode}'`));const n=JSON.parse(e.content);return(!n.negotiateVersion||n.negotiateVersion<1)&&(n.connectionToken=n.connectionId),n.useStatefulReconnect&&!0!==this._options._useStatefulReconnect?Promise.reject(new Wt("Client didn't negotiate Stateful Reconnect but the server did.")):n}catch(e){let t="Failed to complete negotiation with the server: "+e;return e instanceof Lt&&404===e.statusCode&&(t+=" Either this is not a SignalR endpoint or there is a proxy blocking the connection."),this._logger.log(bt.Error,t),Promise.reject(new Wt(t))}}_createConnectUrl(e,t){return t?e+(-1===e.indexOf("?")?"?":"&")+`id=${t}`:e}async _createTransport(e,t,n,r){let o=this._createConnectUrl(e,n.connectionToken);if(this._isITransport(t))return this._logger.log(bt.Debug,"Connection was provided an instance of ITransport, using that directly."),this.transport=t,await this._startTransport(o,r),void(this.connectionId=n.connectionId);const s=[],i=n.availableTransports||[];let a=n;for(const n of i){const i=this._resolveTransportOrError(n,t,r,!0===(null==a?void 0:a.useStatefulReconnect));if(i instanceof Error)s.push(`${n.transport} failed:`),s.push(i);else if(this._isITransport(i)){if(this.transport=i,!a){try{a=await this._getNegotiationResponse(e)}catch(e){return Promise.reject(e)}o=this._createConnectUrl(e,a.connectionToken)}try{return await this._startTransport(o,r),void(this.connectionId=a.connectionId)}catch(e){if(this._logger.log(bt.Error,`Failed to start the transport '${n.transport}': ${e}`),a=void 0,s.push(new jt(`${n.transport} failed: ${e}`,cn[n.transport])),"Connecting"!==this._connectionState){const e="Failed to select transport before stop() was called.";return this._logger.log(bt.Debug,e),Promise.reject(new Ot(e))}}}}return s.length>0?Promise.reject(new zt(`Unable to connect to the server with any of the available transports. ${s.join(" ")}`,s)):Promise.reject(new Error("None of the transports supported by the client are supported by the server."))}_constructTransport(e){switch(e){case cn.WebSockets:if(!this._options.WebSocket)throw new Error("'WebSocket' is not supported in your environment.");return new pn(this._httpClient,this._accessTokenFactory,this._logger,this._options.logMessageContent,this._options.WebSocket,this._options.headers||{});case cn.ServerSentEvents:if(!this._options.EventSource)throw new Error("'EventSource' is not supported in your environment.");return new un(this._httpClient,this._httpClient._accessToken,this._logger,this._options);case cn.LongPolling:return new dn(this._httpClient,this._logger,this._options);default:throw new Error(`Unknown transport: ${e}.`)}}_startTransport(e,t){return this.transport.onreceive=this.onreceive,this.features.reconnect?this.transport.onclose=async n=>{let r=!1;if(this.features.reconnect){try{this.features.disconnected(),await this.transport.connect(e,t),await this.features.resend()}catch{r=!0}r&&this._stopConnection(n)}else this._stopConnection(n)}:this.transport.onclose=e=>this._stopConnection(e),this.transport.connect(e,t)}_resolveTransportOrError(e,t,n,r){const o=cn[e.transport];if(null==o)return this._logger.log(bt.Debug,`Skipping transport '${e.transport}' because it is not supported by this client.`),new Error(`Skipping transport '${e.transport}' because it is not supported by this client.`);if(!function(e,t){return!e||0!=(t&e)}(t,o))return this._logger.log(bt.Debug,`Skipping transport '${cn[o]}' because it was disabled by the client.`),new Ht(`'${cn[o]}' is disabled by the client.`,o);if(!(e.transferFormats.map((e=>ln[e])).indexOf(n)>=0))return this._logger.log(bt.Debug,`Skipping transport '${cn[o]}' because it does not support the requested transfer format '${ln[n]}'.`),new Error(`'${cn[o]}' does not support ${ln[n]}.`);if(o===cn.WebSockets&&!this._options.WebSocket||o===cn.ServerSentEvents&&!this._options.EventSource)return this._logger.log(bt.Debug,`Skipping transport '${cn[o]}' because it is not supported in your environment.'`),new Ft(`'${cn[o]}' is not supported in your environment.`,o);this._logger.log(bt.Debug,`Selecting transport '${cn[o]}'.`);try{return this.features.reconnect=o===cn.WebSockets?r:void 0,this._constructTransport(o)}catch(e){return e}}_isITransport(e){return e&&"object"==typeof e&&"connect"in e}_stopConnection(e){if(this._logger.log(bt.Debug,`HttpConnection.stopConnection(${e}) called while in state ${this._connectionState}.`),this.transport=void 0,e=this._stopError||e,this._stopError=void 0,"Disconnected"!==this._connectionState){if("Connecting"===this._connectionState)throw this._logger.log(bt.Warning,`Call to HttpConnection.stopConnection(${e}) was ignored because the connection is still in the connecting state.`),new Error(`HttpConnection.stopConnection(${e}) was called while the connection is still in the connecting state.`);if("Disconnecting"===this._connectionState&&this._stopPromiseResolver(),e?this._logger.log(bt.Error,`Connection disconnected with error '${e}'.`):this._logger.log(bt.Information,"Connection disconnected."),this._sendQueue&&(this._sendQueue.stop().catch((e=>{this._logger.log(bt.Error,`TransportSendQueue.stop() threw error '${e}'.`)})),this._sendQueue=void 0),this.connectionId=void 0,this._connectionState="Disconnected",this._connectionStarted){this._connectionStarted=!1;try{this.onclose&&this.onclose(e)}catch(t){this._logger.log(bt.Error,`HttpConnection.onclose(${e}) threw error '${t}'.`)}}}else this._logger.log(bt.Debug,`Call to HttpConnection.stopConnection(${e}) was ignored because the connection is already in the disconnected state.`)}_resolveUrl(e){if(0===e.lastIndexOf("https://",0)||0===e.lastIndexOf("http://",0))return e;if(!It.isBrowser)throw new Error(`Cannot resolve '${e}'.`);const t=window.document.createElement("a");return t.href=e,this._logger.log(bt.Information,`Normalizing '${e}' to '${t.href}'.`),t.href}_resolveNegotiateUrl(e){const t=new URL(e);t.pathname.endsWith("/")?t.pathname+="negotiate":t.pathname+="/negotiate";const n=new URLSearchParams(t.searchParams);return n.has("negotiateVersion")||n.append("negotiateVersion",this._negotiateVersion.toString()),n.has("useStatefulReconnect")?"true"===n.get("useStatefulReconnect")&&(this._options._useStatefulReconnect=!0):!0===this._options._useStatefulReconnect&&n.append("useStatefulReconnect","true"),t.search=n.toString(),t.toString()}}class gn{constructor(e){this._transport=e,this._buffer=[],this._executing=!0,this._sendBufferedData=new mn,this._transportResult=new mn,this._sendLoopPromise=this._sendLoop()}send(e){return this._bufferData(e),this._transportResult||(this._transportResult=new mn),this._transportResult.promise}stop(){return this._executing=!1,this._sendBufferedData.resolve(),this._sendLoopPromise}_bufferData(e){if(this._buffer.length&&typeof this._buffer[0]!=typeof e)throw new Error(`Expected data to be of type ${typeof this._buffer} but was of type ${typeof e}`);this._buffer.push(e),this._sendBufferedData.resolve()}async _sendLoop(){for(;;){if(await this._sendBufferedData.promise,!this._executing){this._transportResult&&this._transportResult.reject("Connection stopped.");break}this._sendBufferedData=new mn;const e=this._transportResult;this._transportResult=void 0;const t="string"==typeof this._buffer[0]?this._buffer.join(""):gn._concatBuffers(this._buffer);this._buffer.length=0;try{await this._transport.send(t),e.resolve()}catch(t){e.reject(t)}}}static _concatBuffers(e){const t=e.map((e=>e.byteLength)).reduce(((e,t)=>e+t)),n=new Uint8Array(t);let r=0;for(const t of e)n.set(new Uint8Array(t),r),r+=t.byteLength;return n.buffer}}class mn{constructor(){this.promise=new Promise(((e,t)=>[this._resolver,this._rejecter]=[e,t]))}resolve(){this._resolver()}reject(e){this._rejecter(e)}}class vn{constructor(){this.name="json",this.version=2,this.transferFormat=ln.Text}parseMessages(e,t){if("string"!=typeof e)throw new Error("Invalid input for JSON hub protocol. Expected a string.");if(!e)return[];null===t&&(t=St.instance);const n=_t.parse(e),r=[];for(const e of n){const n=JSON.parse(e);if("number"!=typeof n.type)throw new Error("Invalid payload.");switch(n.type){case qt.Invocation:this._isInvocationMessage(n);break;case qt.StreamItem:this._isStreamItemMessage(n);break;case qt.Completion:this._isCompletionMessage(n);break;case qt.Ping:case qt.Close:break;case qt.Ack:this._isAckMessage(n);break;case qt.Sequence:this._isSequenceMessage(n);break;default:t.log(bt.Information,"Unknown message type '"+n.type+"' ignored.");continue}r.push(n)}return r}writeMessage(e){return _t.write(JSON.stringify(e))}_isInvocationMessage(e){this._assertNotEmptyString(e.target,"Invalid payload for Invocation message."),void 0!==e.invocationId&&this._assertNotEmptyString(e.invocationId,"Invalid payload for Invocation message.")}_isStreamItemMessage(e){if(this._assertNotEmptyString(e.invocationId,"Invalid payload for StreamItem message."),void 0===e.item)throw new Error("Invalid payload for StreamItem message.")}_isCompletionMessage(e){if(e.result&&e.error)throw new Error("Invalid payload for Completion message.");!e.result&&e.error&&this._assertNotEmptyString(e.error,"Invalid payload for Completion message."),this._assertNotEmptyString(e.invocationId,"Invalid payload for Completion message.")}_isAckMessage(e){if("number"!=typeof e.sequenceId)throw new Error("Invalid SequenceId for Ack message.")}_isSequenceMessage(e){if("number"!=typeof e.sequenceId)throw new Error("Invalid SequenceId for Sequence message.")}_assertNotEmptyString(e,t){if("string"!=typeof e||""===e)throw new Error(t)}}const yn={trace:bt.Trace,debug:bt.Debug,info:bt.Information,information:bt.Information,warn:bt.Warning,warning:bt.Warning,error:bt.Error,critical:bt.Critical,none:bt.None};class wn{configureLogging(e){if(Ct.isRequired(e,"logging"),function(e){return void 0!==e.log}(e))this.logger=e;else if("string"==typeof e){const t=function(e){const t=yn[e.toLowerCase()];if(void 0!==t)return t;throw new Error(`Unknown log level: ${e}`)}(e);this.logger=new xt(t)}else this.logger=new xt(e);return this}withUrl(e,t){return Ct.isRequired(e,"url"),Ct.isNotEmpty(e,"url"),this.url=e,this.httpConnectionOptions="object"==typeof t?{...this.httpConnectionOptions,...t}:{...this.httpConnectionOptions,transport:t},this}withHubProtocol(e){return Ct.isRequired(e,"protocol"),this.protocol=e,this}withAutomaticReconnect(e){if(this.reconnectPolicy)throw new Error("A reconnectPolicy has already been set.");return e?Array.isArray(e)?this.reconnectPolicy=new Qt(e):this.reconnectPolicy=e:this.reconnectPolicy=new Qt,this}withServerTimeout(e){return Ct.isRequired(e,"milliseconds"),this._serverTimeoutInMilliseconds=e,this}withKeepAliveInterval(e){return Ct.isRequired(e,"milliseconds"),this._keepAliveIntervalInMilliseconds=e,this}withStatefulReconnect(e){return void 0===this.httpConnectionOptions&&(this.httpConnectionOptions={}),this.httpConnectionOptions._useStatefulReconnect=!0,this._statefulReconnectBufferSize=null==e?void 0:e.bufferSize,this}build(){const e=this.httpConnectionOptions||{};if(void 0===e.logger&&(e.logger=this.logger),!this.url)throw new Error("The 'HubConnectionBuilder.withUrl' method must be called before building the connection.");const t=new fn(this.url,e);return Yt.create(t,this.logger||St.instance,this.protocol||new vn,this.reconnectPolicy,this._serverTimeoutInMilliseconds,this._keepAliveIntervalInMilliseconds,this._statefulReconnectBufferSize)}}var _n;!function(e){e[e.Default=0]="Default",e[e.Server=1]="Server",e[e.WebAssembly=2]="WebAssembly",e[e.WebView=3]="WebView"}(_n||(_n={}));var bn,Sn,En,Cn=4294967295;function In(e,t,n){var r=Math.floor(n/4294967296),o=n;e.setUint32(t,r),e.setUint32(t+4,o)}function kn(e,t){return 4294967296*e.getInt32(t)+e.getUint32(t+4)}var Tn=("undefined"==typeof process||"never"!==(null===(bn=null===process||void 0===process?void 0:process.env)||void 0===bn?void 0:bn.TEXT_ENCODING))&&"undefined"!=typeof TextEncoder&&"undefined"!=typeof TextDecoder;function Dn(e){for(var t=e.length,n=0,r=0;r=55296&&o<=56319&&r65535&&(h-=65536,s.push(h>>>10&1023|55296),h=56320|1023&h),s.push(h)}else s.push(a);s.length>=4096&&(i+=String.fromCharCode.apply(String,s),s.length=0)}return s.length>0&&(i+=String.fromCharCode.apply(String,s)),i}var Nn,Un=Tn?new TextDecoder:null,Mn=Tn?"undefined"!=typeof process&&"force"!==(null===(En=null===process||void 0===process?void 0:process.env)||void 0===En?void 0:En.TEXT_DECODER)?200:0:Cn,Bn=function(e,t){this.type=e,this.data=t},Ln=(Nn=function(e,t){return Nn=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},Nn(e,t)},function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function n(){this.constructor=e}Nn(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}),$n=function(e){function t(n){var r=e.call(this,n)||this,o=Object.create(t.prototype);return Object.setPrototypeOf(r,o),Object.defineProperty(r,"name",{configurable:!0,enumerable:!1,value:t.name}),r}return Ln(t,e),t}(Error),On={type:-1,encode:function(e){var t,n,r,o;return e instanceof Date?function(e){var t,n=e.sec,r=e.nsec;if(n>=0&&r>=0&&n<=17179869183){if(0===r&&n<=4294967295){var o=new Uint8Array(4);return(t=new DataView(o.buffer)).setUint32(0,n),o}var s=n/4294967296,i=4294967295&n;return o=new Uint8Array(8),(t=new DataView(o.buffer)).setUint32(0,r<<2|3&s),t.setUint32(4,i),o}return o=new Uint8Array(12),(t=new DataView(o.buffer)).setUint32(0,r),In(t,4,n),o}((r=1e6*((t=e.getTime())-1e3*(n=Math.floor(t/1e3))),{sec:n+(o=Math.floor(r/1e9)),nsec:r-1e9*o})):null},decode:function(e){var t=function(e){var t=new DataView(e.buffer,e.byteOffset,e.byteLength);switch(e.byteLength){case 4:return{sec:t.getUint32(0),nsec:0};case 8:var n=t.getUint32(0);return{sec:4294967296*(3&n)+t.getUint32(4),nsec:n>>>2};case 12:return{sec:kn(t,4),nsec:t.getUint32(0)};default:throw new $n("Unrecognized data size for timestamp (expected 4, 8, or 12): ".concat(e.length))}}(e);return new Date(1e3*t.sec+t.nsec/1e6)}},Fn=function(){function e(){this.builtInEncoders=[],this.builtInDecoders=[],this.encoders=[],this.decoders=[],this.register(On)}return e.prototype.register=function(e){var t=e.type,n=e.encode,r=e.decode;if(t>=0)this.encoders[t]=n,this.decoders[t]=r;else{var o=1+t;this.builtInEncoders[o]=n,this.builtInDecoders[o]=r}},e.prototype.tryToEncode=function(e,t){for(var n=0;nthis.maxDepth)throw new Error("Too deep objects in depth ".concat(t));null==e?this.encodeNil():"boolean"==typeof e?this.encodeBoolean(e):"number"==typeof e?this.encodeNumber(e):"string"==typeof e?this.encodeString(e):this.encodeObject(e,t)},e.prototype.ensureBufferSizeToWrite=function(e){var t=this.pos+e;this.view.byteLength=0?e<128?this.writeU8(e):e<256?(this.writeU8(204),this.writeU8(e)):e<65536?(this.writeU8(205),this.writeU16(e)):e<4294967296?(this.writeU8(206),this.writeU32(e)):(this.writeU8(207),this.writeU64(e)):e>=-32?this.writeU8(224|e+32):e>=-128?(this.writeU8(208),this.writeI8(e)):e>=-32768?(this.writeU8(209),this.writeI16(e)):e>=-2147483648?(this.writeU8(210),this.writeI32(e)):(this.writeU8(211),this.writeI64(e)):this.forceFloat32?(this.writeU8(202),this.writeF32(e)):(this.writeU8(203),this.writeF64(e))},e.prototype.writeStringHeader=function(e){if(e<32)this.writeU8(160+e);else if(e<256)this.writeU8(217),this.writeU8(e);else if(e<65536)this.writeU8(218),this.writeU16(e);else{if(!(e<4294967296))throw new Error("Too long string: ".concat(e," bytes in UTF-8"));this.writeU8(219),this.writeU32(e)}},e.prototype.encodeString=function(e){if(e.length>xn){var t=Dn(e);this.ensureBufferSizeToWrite(5+t),this.writeStringHeader(t),An(e,this.bytes,this.pos),this.pos+=t}else t=Dn(e),this.ensureBufferSizeToWrite(5+t),this.writeStringHeader(t),function(e,t,n){for(var r=e.length,o=n,s=0;s>6&31|192;else{if(i>=55296&&i<=56319&&s>12&15|224,t[o++]=i>>6&63|128):(t[o++]=i>>18&7|240,t[o++]=i>>12&63|128,t[o++]=i>>6&63|128)}t[o++]=63&i|128}else t[o++]=i}}(e,this.bytes,this.pos),this.pos+=t},e.prototype.encodeObject=function(e,t){var n=this.extensionCodec.tryToEncode(e,this.context);if(null!=n)this.encodeExtension(n);else if(Array.isArray(e))this.encodeArray(e,t);else if(ArrayBuffer.isView(e))this.encodeBinary(e);else{if("object"!=typeof e)throw new Error("Unrecognized object: ".concat(Object.prototype.toString.apply(e)));this.encodeMap(e,t)}},e.prototype.encodeBinary=function(e){var t=e.byteLength;if(t<256)this.writeU8(196),this.writeU8(t);else if(t<65536)this.writeU8(197),this.writeU16(t);else{if(!(t<4294967296))throw new Error("Too large binary: ".concat(t));this.writeU8(198),this.writeU32(t)}var n=Hn(e);this.writeU8a(n)},e.prototype.encodeArray=function(e,t){var n=e.length;if(n<16)this.writeU8(144+n);else if(n<65536)this.writeU8(220),this.writeU16(n);else{if(!(n<4294967296))throw new Error("Too large array: ".concat(n));this.writeU8(221),this.writeU32(n)}for(var r=0,o=e;r0&&e<=this.maxKeyLength},e.prototype.find=function(e,t,n){e:for(var r=0,o=this.caches[n-1];r=this.maxLengthPerKey?n[Math.random()*n.length|0]=r:n.push(r)},e.prototype.decode=function(e,t,n){var r=this.find(e,t,n);if(null!=r)return this.hit++,r;this.miss++;var o=Pn(e,t,n),s=Uint8Array.prototype.slice.call(e,t,t+n);return this.store(s,o),o},e}(),qn=function(e,t){var n,r,o,s,i={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return s={next:a(0),throw:a(1),return:a(2)},"function"==typeof Symbol&&(s[Symbol.iterator]=function(){return this}),s;function a(s){return function(a){return function(s){if(n)throw new TypeError("Generator is already executing.");for(;i;)try{if(n=1,r&&(o=2&s[0]?r.return:s[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,s[1])).done)return o;switch(r=0,o&&(s=[2&s[0],o.value]),s[0]){case 0:case 1:o=s;break;case 4:return i.label++,{value:s[1],done:!1};case 5:i.label++,r=s[1],s=[0];continue;case 7:s=i.ops.pop(),i.trys.pop();continue;default:if(!((o=(o=i.trys).length>0&&o[o.length-1])||6!==s[0]&&2!==s[0])){i=0;continue}if(3===s[0]&&(!o||s[1]>o[0]&&s[1]=e},e.prototype.createExtraByteError=function(e){var t=this.view,n=this.pos;return new RangeError("Extra ".concat(t.byteLength-n," of ").concat(t.byteLength," byte(s) found at buffer[").concat(e,"]"))},e.prototype.decode=function(e){this.reinitializeState(),this.setBuffer(e);var t=this.doDecodeSync();if(this.hasRemaining(1))throw this.createExtraByteError(this.pos);return t},e.prototype.decodeMulti=function(e){return qn(this,(function(t){switch(t.label){case 0:this.reinitializeState(),this.setBuffer(e),t.label=1;case 1:return this.hasRemaining(1)?[4,this.doDecodeSync()]:[3,3];case 2:return t.sent(),[3,1];case 3:return[2]}}))},e.prototype.decodeAsync=function(e){var t,n,r,o,s,i,a;return s=this,void 0,a=function(){var s,i,a,c,l,h,d,u;return qn(this,(function(p){switch(p.label){case 0:s=!1,p.label=1;case 1:p.trys.push([1,6,7,12]),t=Jn(e),p.label=2;case 2:return[4,t.next()];case 3:if((n=p.sent()).done)return[3,5];if(a=n.value,s)throw this.createExtraByteError(this.totalPos);this.appendBuffer(a);try{i=this.doDecodeSync(),s=!0}catch(e){if(!(e instanceof Yn))throw e}this.totalPos+=this.pos,p.label=4;case 4:return[3,2];case 5:return[3,12];case 6:return c=p.sent(),r={error:c},[3,12];case 7:return p.trys.push([7,,10,11]),n&&!n.done&&(o=t.return)?[4,o.call(t)]:[3,9];case 8:p.sent(),p.label=9;case 9:return[3,11];case 10:if(r)throw r.error;return[7];case 11:return[7];case 12:if(s){if(this.hasRemaining(1))throw this.createExtraByteError(this.totalPos);return[2,i]}throw h=(l=this).headByte,d=l.pos,u=l.totalPos,new RangeError("Insufficient data in parsing ".concat(Wn(h)," at ").concat(u," (").concat(d," in the current buffer)"))}}))},new((i=void 0)||(i=Promise))((function(e,t){function n(e){try{o(a.next(e))}catch(e){t(e)}}function r(e){try{o(a.throw(e))}catch(e){t(e)}}function o(t){var o;t.done?e(t.value):(o=t.value,o instanceof i?o:new i((function(e){e(o)}))).then(n,r)}o((a=a.apply(s,[])).next())}))},e.prototype.decodeArrayStream=function(e){return this.decodeMultiAsync(e,!0)},e.prototype.decodeStream=function(e){return this.decodeMultiAsync(e,!1)},e.prototype.decodeMultiAsync=function(e,t){return function(n,r,o){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var s,i=function(){var n,r,o,s,i,a,c,l,h;return qn(this,(function(d){switch(d.label){case 0:n=t,r=-1,d.label=1;case 1:d.trys.push([1,13,14,19]),o=Jn(e),d.label=2;case 2:return[4,Kn(o.next())];case 3:if((s=d.sent()).done)return[3,12];if(i=s.value,t&&0===r)throw this.createExtraByteError(this.totalPos);this.appendBuffer(i),n&&(r=this.readArraySize(),n=!1,this.complete()),d.label=4;case 4:d.trys.push([4,9,,10]),d.label=5;case 5:return[4,Kn(this.doDecodeSync())];case 6:return[4,d.sent()];case 7:return d.sent(),0==--r?[3,8]:[3,5];case 8:return[3,10];case 9:if(!((a=d.sent())instanceof Yn))throw a;return[3,10];case 10:this.totalPos+=this.pos,d.label=11;case 11:return[3,2];case 12:return[3,19];case 13:return c=d.sent(),l={error:c},[3,19];case 14:return d.trys.push([14,,17,18]),s&&!s.done&&(h=o.return)?[4,Kn(h.call(o))]:[3,16];case 15:d.sent(),d.label=16;case 16:return[3,18];case 17:if(l)throw l.error;return[7];case 18:return[7];case 19:return[2]}}))}.apply(n,r||[]),a=[];return s={},c("next"),c("throw"),c("return"),s[Symbol.asyncIterator]=function(){return this},s;function c(e){i[e]&&(s[e]=function(t){return new Promise((function(n,r){a.push([e,t,n,r])>1||l(e,t)}))})}function l(e,t){try{(n=i[e](t)).value instanceof Kn?Promise.resolve(n.value.v).then(h,d):u(a[0][2],n)}catch(e){u(a[0][3],e)}var n}function h(e){l("next",e)}function d(e){l("throw",e)}function u(e,t){e(t),a.shift(),a.length&&l(a[0][0],a[0][1])}}(this,arguments)},e.prototype.doDecodeSync=function(){e:for(;;){var e=this.readHeadByte(),t=void 0;if(e>=224)t=e-256;else if(e<192)if(e<128)t=e;else if(e<144){if(0!=(r=e-128)){this.pushMapState(r),this.complete();continue e}t={}}else if(e<160){if(0!=(r=e-144)){this.pushArrayState(r),this.complete();continue e}t=[]}else{var n=e-160;t=this.decodeUtf8String(n,0)}else if(192===e)t=null;else if(194===e)t=!1;else if(195===e)t=!0;else if(202===e)t=this.readF32();else if(203===e)t=this.readF64();else if(204===e)t=this.readU8();else if(205===e)t=this.readU16();else if(206===e)t=this.readU32();else if(207===e)t=this.readU64();else if(208===e)t=this.readI8();else if(209===e)t=this.readI16();else if(210===e)t=this.readI32();else if(211===e)t=this.readI64();else if(217===e)n=this.lookU8(),t=this.decodeUtf8String(n,1);else if(218===e)n=this.lookU16(),t=this.decodeUtf8String(n,2);else if(219===e)n=this.lookU32(),t=this.decodeUtf8String(n,4);else if(220===e){if(0!==(r=this.readU16())){this.pushArrayState(r),this.complete();continue e}t=[]}else if(221===e){if(0!==(r=this.readU32())){this.pushArrayState(r),this.complete();continue e}t=[]}else if(222===e){if(0!==(r=this.readU16())){this.pushMapState(r),this.complete();continue e}t={}}else if(223===e){if(0!==(r=this.readU32())){this.pushMapState(r),this.complete();continue e}t={}}else if(196===e){var r=this.lookU8();t=this.decodeBinary(r,1)}else if(197===e)r=this.lookU16(),t=this.decodeBinary(r,2);else if(198===e)r=this.lookU32(),t=this.decodeBinary(r,4);else if(212===e)t=this.decodeExtension(1,0);else if(213===e)t=this.decodeExtension(2,0);else if(214===e)t=this.decodeExtension(4,0);else if(215===e)t=this.decodeExtension(8,0);else if(216===e)t=this.decodeExtension(16,0);else if(199===e)r=this.lookU8(),t=this.decodeExtension(r,1);else if(200===e)r=this.lookU16(),t=this.decodeExtension(r,2);else{if(201!==e)throw new $n("Unrecognized type byte: ".concat(Wn(e)));r=this.lookU32(),t=this.decodeExtension(r,4)}this.complete();for(var o=this.stack;o.length>0;){var s=o[o.length-1];if(0===s.type){if(s.array[s.position]=t,s.position++,s.position!==s.size)continue e;o.pop(),t=s.array}else{if(1===s.type){if("string"!=(i=typeof t)&&"number"!==i)throw new $n("The type of key must be string or number but "+typeof t);if("__proto__"===t)throw new $n("The key __proto__ is not allowed");s.key=t,s.type=2;continue e}if(s.map[s.key]=t,s.readCount++,s.readCount!==s.size){s.key=null,s.type=1;continue e}o.pop(),t=s.map}}return t}var i},e.prototype.readHeadByte=function(){return-1===this.headByte&&(this.headByte=this.readU8()),this.headByte},e.prototype.complete=function(){this.headByte=-1},e.prototype.readArraySize=function(){var e=this.readHeadByte();switch(e){case 220:return this.readU16();case 221:return this.readU32();default:if(e<160)return e-144;throw new $n("Unrecognized array type byte: ".concat(Wn(e)))}},e.prototype.pushMapState=function(e){if(e>this.maxMapLength)throw new $n("Max length exceeded: map length (".concat(e,") > maxMapLengthLength (").concat(this.maxMapLength,")"));this.stack.push({type:1,size:e,key:null,readCount:0,map:{}})},e.prototype.pushArrayState=function(e){if(e>this.maxArrayLength)throw new $n("Max length exceeded: array length (".concat(e,") > maxArrayLength (").concat(this.maxArrayLength,")"));this.stack.push({type:0,size:e,array:new Array(e),position:0})},e.prototype.decodeUtf8String=function(e,t){var n;if(e>this.maxStrLength)throw new $n("Max length exceeded: UTF-8 byte length (".concat(e,") > maxStrLength (").concat(this.maxStrLength,")"));if(this.bytes.byteLengthMn?function(e,t,n){var r=e.subarray(t,t+n);return Un.decode(r)}(this.bytes,o,e):Pn(this.bytes,o,e),this.pos+=t+e,r},e.prototype.stateIsMapKey=function(){return this.stack.length>0&&1===this.stack[this.stack.length-1].type},e.prototype.decodeBinary=function(e,t){if(e>this.maxBinLength)throw new $n("Max length exceeded: bin length (".concat(e,") > maxBinLength (").concat(this.maxBinLength,")"));if(!this.hasRemaining(e+t))throw Gn;var n=this.pos+t,r=this.bytes.subarray(n,n+e);return this.pos+=t+e,r},e.prototype.decodeExtension=function(e,t){if(e>this.maxExtLength)throw new $n("Max length exceeded: ext length (".concat(e,") > maxExtLength (").concat(this.maxExtLength,")"));var n=this.view.getInt8(this.pos+t),r=this.decodeBinary(e,t+1);return this.extensionCodec.decode(r,n,this.context)},e.prototype.lookU8=function(){return this.view.getUint8(this.pos)},e.prototype.lookU16=function(){return this.view.getUint16(this.pos)},e.prototype.lookU32=function(){return this.view.getUint32(this.pos)},e.prototype.readU8=function(){var e=this.view.getUint8(this.pos);return this.pos++,e},e.prototype.readI8=function(){var e=this.view.getInt8(this.pos);return this.pos++,e},e.prototype.readU16=function(){var e=this.view.getUint16(this.pos);return this.pos+=2,e},e.prototype.readI16=function(){var e=this.view.getInt16(this.pos);return this.pos+=2,e},e.prototype.readU32=function(){var e=this.view.getUint32(this.pos);return this.pos+=4,e},e.prototype.readI32=function(){var e=this.view.getInt32(this.pos);return this.pos+=4,e},e.prototype.readU64=function(){var e,t,n=(e=this.view,t=this.pos,4294967296*e.getUint32(t)+e.getUint32(t+4));return this.pos+=8,n},e.prototype.readI64=function(){var e=kn(this.view,this.pos);return this.pos+=8,e},e.prototype.readF32=function(){var e=this.view.getFloat32(this.pos);return this.pos+=4,e},e.prototype.readF64=function(){var e=this.view.getFloat64(this.pos);return this.pos+=8,e},e}();class er{static write(e){let t=e.byteLength||e.length;const n=[];do{let e=127&t;t>>=7,t>0&&(e|=128),n.push(e)}while(t>0);t=e.byteLength||e.length;const r=new Uint8Array(n.length+t);return r.set(n,0),r.set(e,n.length),r.buffer}static parse(e){const t=[],n=new Uint8Array(e),r=[0,7,14,21,28];for(let o=0;o7)throw new Error("Messages bigger than 2GB are not supported.");if(!(n.byteLength>=o+i+a))throw new Error("Incomplete message.");t.push(n.slice?n.slice(o+i,o+i+a):n.subarray(o+i,o+i+a)),o=o+i+a}return t}}const tr=new Uint8Array([145,qt.Ping]);class nr{constructor(e){this.name="messagepack",this.version=2,this.transferFormat=ln.Binary,this._errorResult=1,this._voidResult=2,this._nonVoidResult=3,e=e||{},this._encoder=new jn(e.extensionCodec,e.context,e.maxDepth,e.initialBufferSize,e.sortKeys,e.forceFloat32,e.ignoreUndefined,e.forceIntegerToFloat),this._decoder=new Zn(e.extensionCodec,e.context,e.maxStrLength,e.maxBinLength,e.maxArrayLength,e.maxMapLength,e.maxExtLength)}parseMessages(e,t){if(!(n=e)||"undefined"==typeof ArrayBuffer||!(n instanceof ArrayBuffer||n.constructor&&"ArrayBuffer"===n.constructor.name))throw new Error("Invalid input for MessagePack hub protocol. Expected an ArrayBuffer.");var n;null===t&&(t=St.instance);const r=er.parse(e),o=[];for(const e of r){const n=this._parseMessage(e,t);n&&o.push(n)}return o}writeMessage(e){switch(e.type){case qt.Invocation:return this._writeInvocation(e);case qt.StreamInvocation:return this._writeStreamInvocation(e);case qt.StreamItem:return this._writeStreamItem(e);case qt.Completion:return this._writeCompletion(e);case qt.Ping:return er.write(tr);case qt.CancelInvocation:return this._writeCancelInvocation(e);case qt.Close:return this._writeClose();case qt.Ack:return this._writeAck(e);case qt.Sequence:return this._writeSequence(e);default:throw new Error("Invalid message type.")}}_parseMessage(e,t){if(0===e.length)throw new Error("Invalid payload.");const n=this._decoder.decode(e);if(0===n.length||!(n instanceof Array))throw new Error("Invalid payload.");const r=n[0];switch(r){case qt.Invocation:return this._createInvocationMessage(this._readHeaders(n),n);case qt.StreamItem:return this._createStreamItemMessage(this._readHeaders(n),n);case qt.Completion:return this._createCompletionMessage(this._readHeaders(n),n);case qt.Ping:return this._createPingMessage(n);case qt.Close:return this._createCloseMessage(n);case qt.Ack:return this._createAckMessage(n);case qt.Sequence:return this._createSequenceMessage(n);default:return t.log(bt.Information,"Unknown message type '"+r+"' ignored."),null}}_createCloseMessage(e){if(e.length<2)throw new Error("Invalid payload for Close message.");return{allowReconnect:e.length>=3?e[2]:void 0,error:e[1],type:qt.Close}}_createPingMessage(e){if(e.length<1)throw new Error("Invalid payload for Ping message.");return{type:qt.Ping}}_createInvocationMessage(e,t){if(t.length<5)throw new Error("Invalid payload for Invocation message.");const n=t[2];return n?{arguments:t[4],headers:e,invocationId:n,streamIds:[],target:t[3],type:qt.Invocation}:{arguments:t[4],headers:e,streamIds:[],target:t[3],type:qt.Invocation}}_createStreamItemMessage(e,t){if(t.length<4)throw new Error("Invalid payload for StreamItem message.");return{headers:e,invocationId:t[2],item:t[3],type:qt.StreamItem}}_createCompletionMessage(e,t){if(t.length<4)throw new Error("Invalid payload for Completion message.");const n=t[3];if(n!==this._voidResult&&t.length<5)throw new Error("Invalid payload for Completion message.");let r,o;switch(n){case this._errorResult:r=t[4];break;case this._nonVoidResult:o=t[4]}return{error:r,headers:e,invocationId:t[2],result:o,type:qt.Completion}}_createAckMessage(e){if(e.length<1)throw new Error("Invalid payload for Ack message.");return{sequenceId:e[1],type:qt.Ack}}_createSequenceMessage(e){if(e.length<1)throw new Error("Invalid payload for Sequence message.");return{sequenceId:e[1],type:qt.Sequence}}_writeInvocation(e){let t;return t=e.streamIds?this._encoder.encode([qt.Invocation,e.headers||{},e.invocationId||null,e.target,e.arguments,e.streamIds]):this._encoder.encode([qt.Invocation,e.headers||{},e.invocationId||null,e.target,e.arguments]),er.write(t.slice())}_writeStreamInvocation(e){let t;return t=e.streamIds?this._encoder.encode([qt.StreamInvocation,e.headers||{},e.invocationId,e.target,e.arguments,e.streamIds]):this._encoder.encode([qt.StreamInvocation,e.headers||{},e.invocationId,e.target,e.arguments]),er.write(t.slice())}_writeStreamItem(e){const t=this._encoder.encode([qt.StreamItem,e.headers||{},e.invocationId,e.item]);return er.write(t.slice())}_writeCompletion(e){const t=e.error?this._errorResult:void 0!==e.result?this._nonVoidResult:this._voidResult;let n;switch(t){case this._errorResult:n=this._encoder.encode([qt.Completion,e.headers||{},e.invocationId,t,e.error]);break;case this._voidResult:n=this._encoder.encode([qt.Completion,e.headers||{},e.invocationId,t]);break;case this._nonVoidResult:n=this._encoder.encode([qt.Completion,e.headers||{},e.invocationId,t,e.result])}return er.write(n.slice())}_writeCancelInvocation(e){const t=this._encoder.encode([qt.CancelInvocation,e.headers||{},e.invocationId]);return er.write(t.slice())}_writeClose(){const e=this._encoder.encode([qt.Close,null]);return er.write(e.slice())}_writeAck(e){const t=this._encoder.encode([qt.Ack,e.sequenceId]);return er.write(t.slice())}_writeSequence(e){const t=this._encoder.encode([qt.Sequence,e.sequenceId]);return er.write(t.slice())}_readHeaders(e){const t=e[1];if("object"!=typeof t)throw new Error("Invalid headers.");return t}}const rr="function"==typeof TextDecoder?new TextDecoder("utf-8"):null,or=rr?rr.decode.bind(rr):function(e){let t=0;const n=e.length,r=[],o=[];for(;t65535&&(o-=65536,r.push(o>>>10&1023|55296),o=56320|1023&o),r.push(o)}r.length>1024&&(o.push(String.fromCharCode.apply(null,r)),r.length=0)}return o.push(String.fromCharCode.apply(null,r)),o.join("")},sr=Math.pow(2,32),ir=Math.pow(2,21)-1;function ar(e,t){return e[t]|e[t+1]<<8|e[t+2]<<16|e[t+3]<<24}function cr(e,t){return e[t]+(e[t+1]<<8)+(e[t+2]<<16)+(e[t+3]<<24>>>0)}function lr(e,t){const n=cr(e,t+4);if(n>ir)throw new Error(`Cannot read uint64 with high order part ${n}, because the result would exceed Number.MAX_SAFE_INTEGER.`);return n*sr+cr(e,t)}class hr{constructor(e){this.batchData=e;const t=new fr(e);this.arrayRangeReader=new gr(e),this.arrayBuilderSegmentReader=new mr(e),this.diffReader=new dr(e),this.editReader=new ur(e,t),this.frameReader=new pr(e,t)}updatedComponents(){return ar(this.batchData,this.batchData.length-20)}referenceFrames(){return ar(this.batchData,this.batchData.length-16)}disposedComponentIds(){return ar(this.batchData,this.batchData.length-12)}disposedEventHandlerIds(){return ar(this.batchData,this.batchData.length-8)}updatedComponentsEntry(e,t){const n=e+4*t;return ar(this.batchData,n)}referenceFramesEntry(e,t){return e+20*t}disposedComponentIdsEntry(e,t){const n=e+4*t;return ar(this.batchData,n)}disposedEventHandlerIdsEntry(e,t){const n=e+8*t;return lr(this.batchData,n)}}class dr{constructor(e){this.batchDataUint8=e}componentId(e){return ar(this.batchDataUint8,e)}edits(e){return e+4}editsEntry(e,t){return e+16*t}}class ur{constructor(e,t){this.batchDataUint8=e,this.stringReader=t}editType(e){return ar(this.batchDataUint8,e)}siblingIndex(e){return ar(this.batchDataUint8,e+4)}newTreeIndex(e){return ar(this.batchDataUint8,e+8)}moveToSiblingIndex(e){return ar(this.batchDataUint8,e+8)}removedAttributeName(e){const t=ar(this.batchDataUint8,e+12);return this.stringReader.readString(t)}}class pr{constructor(e,t){this.batchDataUint8=e,this.stringReader=t}frameType(e){return ar(this.batchDataUint8,e)}subtreeLength(e){return ar(this.batchDataUint8,e+4)}elementReferenceCaptureId(e){const t=ar(this.batchDataUint8,e+4);return this.stringReader.readString(t)}componentId(e){return ar(this.batchDataUint8,e+8)}elementName(e){const t=ar(this.batchDataUint8,e+8);return this.stringReader.readString(t)}textContent(e){const t=ar(this.batchDataUint8,e+4);return this.stringReader.readString(t)}markupContent(e){const t=ar(this.batchDataUint8,e+4);return this.stringReader.readString(t)}attributeName(e){const t=ar(this.batchDataUint8,e+4);return this.stringReader.readString(t)}attributeValue(e){const t=ar(this.batchDataUint8,e+8);return this.stringReader.readString(t)}attributeEventHandlerId(e){return lr(this.batchDataUint8,e+12)}}class fr{constructor(e){this.batchDataUint8=e,this.stringTableStartIndex=ar(e,e.length-4)}readString(e){if(-1===e)return null;{const n=ar(this.batchDataUint8,this.stringTableStartIndex+4*e),r=function(e,t){let n=0,r=0;for(let o=0;o<4;o++){const s=e[t+o];if(n|=(127&s)<this.nextBatchId)return this.fatalError?(this.logger.log(st.Debug,`Received a new batch ${e} but errored out on a previous batch ${this.nextBatchId-1}`),void await n.send("OnRenderCompleted",this.nextBatchId-1,this.fatalError.toString())):void this.logger.log(st.Debug,`Waiting for batch ${this.nextBatchId}. Batch ${e} not processed.`);try{this.nextBatchId++,this.logger.log(st.Debug,`Applying batch ${e}.`),function(e,t){const n=ge[e];if(!n)throw new Error(`There is no browser renderer with ID ${e}.`);const r=t.arrayRangeReader,o=t.updatedComponents(),s=r.values(o),i=r.count(o),a=t.referenceFrames(),c=r.values(a),l=t.diffReader;for(let e=0;e{e.onclick=function(e){location.reload(),e.preventDefault()}})),document.querySelectorAll("#blazor-error-ui .dismiss").forEach((e=>{e.onclick=function(e){const t=document.querySelector("#blazor-error-ui");t&&(t.style.display="none"),e.preventDefault()}})))}class kr{constructor(t,n,r,o){this._firstUpdate=!0,this._renderingFailed=!1,this._disposed=!1,this._circuitId=void 0,this._applicationState=n,this._componentManager=t,this._options=r,this._logger=o,this._renderQueue=new vr(this._logger),this._dispatcher=e.attachDispatcher(this)}start(){if(this.isDisposedOrDisposing())throw new Error("Cannot start a disposed circuit.");return this._startPromise||(this._startPromise=this.startCore()),this._startPromise}updateRootComponents(e){var t,n;return this._firstUpdate?(this._firstUpdate=!1,null===(t=this._connection)||void 0===t?void 0:t.send("UpdateRootComponents",e,this._applicationState)):null===(n=this._connection)||void 0===n?void 0:n.send("UpdateRootComponents",e,"")}async startCore(){if(this._connection=await this.startConnection(),this._connection.state!==Jt.Connected)return!1;const e=JSON.stringify(this._componentManager.initialComponents.map((e=>{return t=e,{...t,start:void 0,end:void 0};var t})));if(this._circuitId=await this._connection.invoke("StartCircuit",Ue.getBaseURI(),Ue.getLocationHref(),e,this._applicationState||""),!this._circuitId)return!1;for(const e of this._options.circuitHandlers)e.onCircuitOpened&&e.onCircuitOpened();return!0}async startConnection(){var e,t;const n=new nr;n.name="blazorpack";const r=(new wn).withUrl("_blazor").withHubProtocol(n);this._options.configureSignalR(r);const o=r.build();o.on("JS.AttachComponent",((e,t)=>function(e,t,n,r){let o=ge[e];o||(o=new de(e),ge[e]=o),o.attachRootComponentToLogicalElement(n,t,!1)}(_n.Server,this.resolveElement(t),e))),o.on("JS.BeginInvokeJS",this._dispatcher.beginInvokeJSFromDotNet.bind(this._dispatcher)),o.on("JS.EndInvokeDotNet",this._dispatcher.endInvokeDotNetFromJS.bind(this._dispatcher)),o.on("JS.ReceiveByteArray",this._dispatcher.receiveByteArray.bind(this._dispatcher)),o.on("JS.BeginTransmitStream",(e=>{const t=new ReadableStream({start:t=>{o.stream("SendDotNetStreamToJS",e).subscribe({next:e=>t.enqueue(e),complete:()=>t.close(),error:e=>t.error(e)})}});this._dispatcher.supplyDotNetStream(e,t)})),o.on("JS.RenderBatch",(async(e,t)=>{var n,r;this._logger.log(bt.Debug,`Received render batch with id ${e} and ${t.byteLength} bytes.`),await this._renderQueue.processBatch(e,t,this._connection),null===(r=(n=this._componentManager).onAfterRenderBatch)||void 0===r||r.call(n,_n.Server)})),o.on("JS.EndUpdateRootComponents",(e=>{var t,n;null===(n=(t=this._componentManager).onAfterUpdateRootComponents)||void 0===n||n.call(t,e)})),o.on("JS.EndLocationChanging",ot._internal.navigationManager.endLocationChanging),o.onclose((e=>{this._interopMethodsForReconnection=function(e){const t=S.get(e);if(!t)throw new Error(`Interop methods are not registered for renderer ${e}`);return S.delete(e),t}(_n.Server),this._disposed||this._renderingFailed||this._options.reconnectionHandler.onConnectionDown(this._options.reconnectionOptions,e)})),o.on("JS.Error",(e=>{this._renderingFailed=!0,this.unhandledError(e),Ir()}));try{await o.start()}catch(e){if(this.unhandledError(e),"FailedToNegotiateWithServerError"===e.errorType)throw e;Ir(),e.innerErrors&&(e.innerErrors.some((e=>"UnsupportedTransportError"===e.errorType&&e.transport===cn.WebSockets))?this._logger.log(bt.Error,"Unable to connect, please ensure you are using an updated browser that supports WebSockets."):e.innerErrors.some((e=>"FailedToStartTransportError"===e.errorType&&e.transport===cn.WebSockets))?this._logger.log(bt.Error,"Unable to connect, please ensure WebSockets are available. A VPN or proxy may be blocking the connection."):e.innerErrors.some((e=>"DisabledTransportError"===e.errorType&&e.transport===cn.LongPolling))&&this._logger.log(bt.Error,"Unable to initiate a SignalR connection to the server. This might be because the server is not configured to support WebSockets. For additional details, visit https://aka.ms/blazor-server-websockets-error."))}return(null===(t=null===(e=o.connection)||void 0===e?void 0:e.features)||void 0===t?void 0:t.inherentKeepAlive)&&this._logger.log(bt.Warning,"Failed to connect via WebSockets, using the Long Polling fallback transport. This may be due to a VPN or proxy blocking the connection. To troubleshoot this, visit https://aka.ms/blazor-server-using-fallback-long-polling."),o}async disconnect(){var e;await(null===(e=this._connection)||void 0===e?void 0:e.stop())}async reconnect(){if(!this._circuitId)throw new Error("Circuit host not initialized.");return this._connection.state===Jt.Connected||(this._connection=await this.startConnection(),this._interopMethodsForReconnection&&(I(_n.Server,this._interopMethodsForReconnection),this._interopMethodsForReconnection=void 0),!!await this._connection.invoke("ConnectCircuit",this._circuitId)&&(this._options.reconnectionHandler.onConnectionUp(),!0))}beginInvokeDotNetFromJS(e,t,n,r,o){this.throwIfDispatchingWhenDisposed(),this._connection.send("BeginInvokeDotNetFromJS",e?e.toString():null,t,n,r||0,o)}endInvokeJSFromDotNet(e,t,n){this.throwIfDispatchingWhenDisposed(),this._connection.send("EndInvokeJSFromDotNet",e,t,n)}sendByteArray(e,t){this.throwIfDispatchingWhenDisposed(),this._connection.send("ReceiveByteArray",e,t)}throwIfDispatchingWhenDisposed(){if(this._disposed)throw new Error("The circuit associated with this dispatcher is no longer available.")}sendLocationChanged(e,t,n){return this._connection.send("OnLocationChanged",e,t,n)}sendLocationChanging(e,t,n,r){return this._connection.send("OnLocationChanging",e,t,n,r)}sendJsDataStream(e,t,n){return function(e,t,n,r){setTimeout((async()=>{let o=5,s=(new Date).valueOf();try{const i=t instanceof Blob?t.size:t.byteLength;let a=0,c=0;for(;a1)await e.send("ReceiveJSDataChunk",n,c,h,null);else{if(!await e.invoke("ReceiveJSDataChunk",n,c,h,null))break;const t=(new Date).valueOf(),r=t-s;s=t,o=Math.max(1,Math.round(500/Math.max(1,r)))}a+=l,c++}}catch(t){await e.send("ReceiveJSDataChunk",n,-1,null,t.toString())}}),0)}(this._connection,e,t,n)}resolveElement(e){const t=function(e){const t=f.get(e);if(t)return f.delete(e),t}(e);if(t)return O(t,!0);const n=Number.parseInt(e);if(!Number.isNaN(n))return function(e){const{start:t,end:n}=e,r=t[$];if(r){if(r!==e)throw new Error("The start component comment was already associated with another component descriptor.");return t}const o=t.parentNode;if(!o)throw new Error(`Comment not connected to the DOM ${t.textContent}`);const s=O(o,!0),i=K(s);t[L]=s,t[$]=e;const a=O(t);if(n){const e=K(a),r=Array.prototype.indexOf.call(i,a)+1;let o=null;for(;o!==n;){const n=i.splice(r,1)[0];if(!n)throw new Error("Could not find the end component comment in the parent logical node list");n[L]=t,e.push(n),o=n}}return a}(this._componentManager.resolveRootComponent(n));throw new Error(`Invalid sequence number or identifier '${e}'.`)}getRootComponentManager(){return this._componentManager}unhandledError(e){this._logger.log(bt.Error,e),this.disconnect()}getDisconnectFormData(){const e=new FormData,t=this._circuitId;return e.append("circuitId",t),e}didRenderingFail(){return this._renderingFailed}isDisposedOrDisposing(){return void 0!==this._disposePromise}sendDisconnectBeacon(){if(this._disposed)return;const e=this.getDisconnectFormData();this._disposed=navigator.sendBeacon("_blazor/disconnect",e)}dispose(){return this._disposePromise||(this._disposePromise=this.disposeCore()),this._disposePromise}async disposeCore(){var e;if(!this._startPromise)return void(this._disposed=!0);await this._startPromise,this._disposed=!0,null===(e=this._connection)||void 0===e||e.stop();const t=this.getDisconnectFormData();fetch("http://github.com/_blazor/disconnect",{method:"POST",body:t});for(const e of this._options.circuitHandlers)e.onCircuitClosed&&e.onCircuitClosed()}}class Tr{constructor(e,t,n,r){this.maxRetries=t,this.document=n,this.logger=r,this.modal=this.document.createElement("div"),this.modal.id=e,this.maxRetries=t,this.modal.style.cssText=["position: fixed","top: 0","right: 0","bottom: 0","left: 0","z-index: 1050","display: none","overflow: hidden","background-color: #fff","opacity: 0.8","text-align: center","font-weight: bold","transition: visibility 0s linear 500ms"].join(";"),this.message=this.document.createElement("h5"),this.message.style.cssText="margin-top: 20px",this.button=this.document.createElement("button"),this.button.style.cssText="margin:5px auto 5px",this.button.textContent="Retry";const o=this.document.createElement("a");o.addEventListener("click",(()=>location.reload())),o.textContent="reload",this.reloadParagraph=this.document.createElement("p"),this.reloadParagraph.textContent="Alternatively, ",this.reloadParagraph.appendChild(o),this.modal.appendChild(this.message),this.modal.appendChild(this.button),this.modal.appendChild(this.reloadParagraph),this.loader=this.getLoader(),this.message.after(this.loader),this.button.addEventListener("click",(async()=>{this.show();try{await ot.reconnect()||this.rejected()}catch(e){this.logger.log(st.Error,e),this.failed()}}))}show(){this.document.contains(this.modal)||this.document.body.appendChild(this.modal),this.modal.style.display="block",this.loader.style.display="inline-block",this.button.style.display="none",this.reloadParagraph.style.display="none",this.message.textContent="Attempting to reconnect to the server...",this.modal.style.visibility="hidden",setTimeout((()=>{this.modal.style.visibility="visible"}),0)}update(e){this.message.textContent=`Attempting to reconnect to the server: ${e} of ${this.maxRetries}`}hide(){this.modal.style.display="none"}failed(){this.button.style.display="block",this.reloadParagraph.style.display="none",this.loader.style.display="none";const e=this.document.createTextNode("Reconnection failed. Try "),t=this.document.createElement("a");t.textContent="reloading",t.setAttribute("href",""),t.addEventListener("click",(()=>location.reload()));const n=this.document.createTextNode(" the page if you're unable to reconnect.");this.message.replaceChildren(e,t,n)}rejected(){this.button.style.display="none",this.reloadParagraph.style.display="none",this.loader.style.display="none";const e=this.document.createTextNode("Could not reconnect to the server. "),t=this.document.createElement("a");t.textContent="Reload",t.setAttribute("href",""),t.addEventListener("click",(()=>location.reload()));const n=this.document.createTextNode(" the page to restore functionality.");this.message.replaceChildren(e,t,n)}getLoader(){const e=this.document.createElement("div");return e.style.cssText=["border: 0.3em solid #f3f3f3","border-top: 0.3em solid #3498db","border-radius: 50%","width: 2em","height: 2em","display: inline-block"].join(";"),e.animate([{transform:"rotate(0deg)"},{transform:"rotate(360deg)"}],{duration:2e3,iterations:1/0}),e}}class Dr{constructor(e,t,n){this.dialog=e,this.maxRetries=t,this.document=n,this.document=n;const r=this.document.getElementById(Dr.MaxRetriesId);r&&(r.innerText=this.maxRetries.toString())}show(){this.removeClasses(),this.dialog.classList.add(Dr.ShowClassName)}update(e){const t=this.document.getElementById(Dr.CurrentAttemptId);t&&(t.innerText=e.toString())}hide(){this.removeClasses(),this.dialog.classList.add(Dr.HideClassName)}failed(){this.removeClasses(),this.dialog.classList.add(Dr.FailedClassName)}rejected(){this.removeClasses(),this.dialog.classList.add(Dr.RejectedClassName)}removeClasses(){this.dialog.classList.remove(Dr.ShowClassName,Dr.HideClassName,Dr.FailedClassName,Dr.RejectedClassName)}}Dr.ShowClassName="components-reconnect-show",Dr.HideClassName="components-reconnect-hide",Dr.FailedClassName="components-reconnect-failed",Dr.RejectedClassName="components-reconnect-rejected",Dr.MaxRetriesId="components-reconnect-max-retries",Dr.CurrentAttemptId="components-reconnect-current-attempt";class Rr{constructor(e,t,n){this._currentReconnectionProcess=null,this._logger=e,this._reconnectionDisplay=t,this._reconnectCallback=n||ot.reconnect}onConnectionDown(e,t){if(!this._reconnectionDisplay){const t=document.getElementById(e.dialogId);this._reconnectionDisplay=t?new Dr(t,e.maxRetries,document):new Tr(e.dialogId,e.maxRetries,document,this._logger)}this._currentReconnectionProcess||(this._currentReconnectionProcess=new xr(e,this._logger,this._reconnectCallback,this._reconnectionDisplay))}onConnectionUp(){this._currentReconnectionProcess&&(this._currentReconnectionProcess.dispose(),this._currentReconnectionProcess=null)}}class xr{constructor(e,t,n,r){this.logger=t,this.reconnectCallback=n,this.isDisposed=!1,this.reconnectDisplay=r,this.reconnectDisplay.show(),this.attemptPeriodicReconnection(e)}dispose(){this.isDisposed=!0,this.reconnectDisplay.hide()}async attemptPeriodicReconnection(e){for(let t=0;txr.MaximumFirstRetryInterval?xr.MaximumFirstRetryInterval:e.retryIntervalMilliseconds;if(await this.delay(n),this.isDisposed)break;try{return await this.reconnectCallback()?void 0:void this.reconnectDisplay.rejected()}catch(e){this.logger.log(st.Error,e)}}this.reconnectDisplay.failed()}delay(e){return new Promise((t=>setTimeout(t,e)))}}xr.MaximumFirstRetryInterval=3e3;class Ar{constructor(e=!0,t,n,r=0){this.singleRuntime=e,this.logger=t,this.webRendererId=r,this.afterStartedCallbacks=[],n&&this.afterStartedCallbacks.push(...n)}async importInitializersAsync(e,t){await Promise.all(e.map((e=>async function(e,n){const r=function(e){const t=document.baseURI;return t.endsWith("/")?`${t}${e}`:`${t}/${e}`}(n),o=await import(r);if(void 0!==o){if(e.singleRuntime){const{beforeStart:n,afterStarted:r,beforeWebAssemblyStart:i,afterWebAssemblyStarted:a,beforeServerStart:c,afterServerStarted:l}=o;let h=n;e.webRendererId===_n.Server&&c&&(h=c),e.webRendererId===_n.WebAssembly&&i&&(h=i);let d=r;return e.webRendererId===_n.Server&&l&&(d=l),e.webRendererId===_n.WebAssembly&&a&&(d=a),s(e,h,d,t)}return function(e,t,n){var o;const i=n[0],{beforeStart:a,afterStarted:c,beforeWebStart:l,afterWebStarted:h,beforeWebAssemblyStart:d,afterWebAssemblyStarted:u,beforeServerStart:p,afterServerStarted:f}=t,g=!(l||h||d||u||p||f||!a&&!c),m=g&&i.enableClassicInitializers;if(g&&!i.enableClassicInitializers)null===(o=e.logger)||void 0===o||o.log(st.Warning,`Initializer '${r}' will be ignored because multiple runtimes are available. use 'before(web|webAssembly|server)Start' and 'after(web|webAssembly|server)Started?' instead.)`);else if(m)return s(e,a,c,n);if(function(e){e.webAssembly?e.webAssembly.initializers||(e.webAssembly.initializers={beforeStart:[],afterStarted:[]}):e.webAssembly={initializers:{beforeStart:[],afterStarted:[]}},e.circuit?e.circuit.initializers||(e.circuit.initializers={beforeStart:[],afterStarted:[]}):e.circuit={initializers:{beforeStart:[],afterStarted:[]}}}(i),d&&i.webAssembly.initializers.beforeStart.push(d),u&&i.webAssembly.initializers.afterStarted.push(u),p&&i.circuit.initializers.beforeStart.push(p),f&&i.circuit.initializers.afterStarted.push(f),h&&e.afterStartedCallbacks.push(h),l)return l(i)}(e,o,t)}function s(e,t,n,r){if(n&&e.afterStartedCallbacks.push(n),t)return t(...r)}}(this,e))))}async invokeAfterStartedCallbacks(e){const t=function(e){var t;return null===(t=C.get(e))||void 0===t?void 0:t[1]}(this.webRendererId);t&&await t,await Promise.all(this.afterStartedCallbacks.map((t=>t(e))))}}function Pr(e){if(void 0!==Er)throw new Error("Blazor Server has already started.");return Er=new Promise(Nr.bind(null,e)),Er}async function Nr(e,t,n){await yr;const r=await async function(e){if(e.initializers)return await Promise.all(e.initializers.beforeStart.map((t=>t(e)))),new Ar(!1,void 0,e.initializers.afterStarted,_n.Server);const t=await fetch("http://github.com/_blazor/initializers",{method:"GET",credentials:"include",cache:"no-cache"}),n=await t.json(),r=new Ar(!0,void 0,void 0,_n.Server);return await r.importInitializersAsync(n,[e]),r}(br);var o;if(o=document,wr=dt(o,ht)||"",Sr=new lt(br.logLevel),_r=new kr(e,wr,br,Sr),Sr.log(st.Information,"Starting up Blazor server-side application."),ot.reconnect=async()=>!(_r.didRenderingFail()||!await _r.reconnect()&&(Sr.log(st.Information,"Reconnection attempt to the circuit was rejected by the server. This may indicate that the associated state is no longer available on the server."),1)),ot.defaultReconnectionHandler=new Rr(Sr),br.reconnectionHandler=br.reconnectionHandler||ot.defaultReconnectionHandler,ot._internal.navigationManager.listenForNavigationEvents(_n.Server,((e,t,n)=>_r.sendLocationChanged(e,t,n)),((e,t,n,r)=>_r.sendLocationChanging(e,t,n,r))),ot._internal.forceCloseConnection=()=>_r.disconnect(),ot._internal.sendJSDataStream=(e,t,n)=>_r.sendJsDataStream(e,t,n),!await _r.start())return Sr.log(st.Error,"Failed to start the circuit."),void t();const s=()=>{_r.sendDisconnectBeacon()};ot.disconnect=s,window.addEventListener("unload",s,{capture:!1,once:!0}),Sr.log(st.Information,"Blazor server-side application started."),r.invokeAfterStartedCallbacks(ot),t()}class Ur{constructor(e){this.initialComponents=e}resolveRootComponent(e){return this.initialComponents[e]}}class Mr{constructor(){this._eventListeners=new Map}static create(e){const t=new Mr;return e.addEventListener=t.addEventListener.bind(t),e.removeEventListener=t.removeEventListener.bind(t),t}addEventListener(e,t){let n=this._eventListeners.get(e);n||(n=new Set,this._eventListeners.set(e,n)),n.add(t)}removeEventListener(e,t){var n;null===(n=this._eventListeners.get(e))||void 0===n||n.delete(t)}dispatchEvent(e,t){const n=this._eventListeners.get(e);if(!n)return;const r={...t,type:e};for(const e of n)e(r)}}let Br=!1;function Lr(e){if(Br)throw new Error("Blazor has already started.");Br=!0;const t=it(e);!function(e){if(br)throw new Error("Circuit options have already been configured.");if(br)throw new Error("WebAssembly options have already been configured.");yr=async function(e){const t=await e;br=it(t)}(e)}(Promise.resolve(t||{})),Mr.create(ot);const n=function(e){return ut(e,"server").sort(((e,t)=>e.sequence-t.sequence))}(document);return Pr(new Ur(n))}ot.start=Lr,window.DotNet=e,document&&document.currentScript&&"false"!==document.currentScript.getAttribute("autostart")&&Lr()})()})(); \ No newline at end of file diff --git a/src/Components/Web.JS/dist/Release/blazor.web.js b/src/Components/Web.JS/dist/Release/blazor.web.js index 1ac3460eedd2..71d85f7aad38 100644 --- a/src/Components/Web.JS/dist/Release/blazor.web.js +++ b/src/Components/Web.JS/dist/Release/blazor.web.js @@ -1 +1 @@ -(()=>{var e={778:()=>{},77:()=>{},203:()=>{},200:()=>{},628:()=>{},321:()=>{}},t={};function n(o){var r=t[o];if(void 0!==r)return r.exports;var i=t[o]={exports:{}};return e[o](i,i.exports,n),i.exports}n.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),(()=>{"use strict";var e,t,o;!function(e){const t=[],n="__jsObjectId",o="__dotNetObject",r="__byte[]",i="__dotNetStream",s="__jsStreamReferenceLength";let a,c;class l{constructor(e){this._jsObject=e,this._cachedFunctions=new Map}findFunction(e){const t=this._cachedFunctions.get(e);if(t)return t;let n,o=this._jsObject;if(e.split(".").forEach((t=>{if(!(t in o))throw new Error(`Could not find '${e}' ('${t}' was undefined).`);n=o,o=o[t]})),o instanceof Function)return o=o.bind(n),this._cachedFunctions.set(e,o),o;throw new Error(`The value '${e}' is not a function.`)}getWrappedObject(){return this._jsObject}}const h={0:new l(window)};h[0]._cachedFunctions.set("import",(e=>("string"==typeof e&&e.startsWith("./")&&(e=new URL(e.substr(2),document.baseURI).toString()),import(e))));let d,u=1;function p(e){t.push(e)}function f(e){if(e&&"object"==typeof e){h[u]=new l(e);const t={[n]:u};return u++,t}throw new Error(`Cannot create a JSObjectReference from the value '${e}'.`)}function g(e){let t=-1;if(e instanceof ArrayBuffer&&(e=new Uint8Array(e)),e instanceof Blob)t=e.size;else{if(!(e.buffer instanceof ArrayBuffer))throw new Error("Supplied value is not a typed array or blob.");if(void 0===e.byteLength)throw new Error(`Cannot create a JSStreamReference from the value '${e}' as it doesn't have a byteLength.`);t=e.byteLength}const o={[s]:t};try{const t=f(e);o[n]=t[n]}catch(t){throw new Error(`Cannot create a JSStreamReference from the value '${e}'.`)}return o}function m(e,n){c=e;const o=n?JSON.parse(n,((e,n)=>t.reduce(((t,n)=>n(e,t)),n))):null;return c=void 0,o}function v(){if(void 0===a)throw new Error("No call dispatcher has been set.");if(null===a)throw new Error("There are multiple .NET runtimes present, so a default dispatcher could not be resolved. Use DotNetObject to invoke .NET instance methods.");return a}e.attachDispatcher=function(e){const t=new y(e);return void 0===a?a=t:a&&(a=null),t},e.attachReviver=p,e.invokeMethod=function(e,t,...n){return v().invokeDotNetStaticMethod(e,t,...n)},e.invokeMethodAsync=function(e,t,...n){return v().invokeDotNetStaticMethodAsync(e,t,...n)},e.createJSObjectReference=f,e.createJSStreamReference=g,e.disposeJSObjectReference=function(e){const t=e&&e[n];"number"==typeof t&&_(t)},function(e){e[e.Default=0]="Default",e[e.JSObjectReference=1]="JSObjectReference",e[e.JSStreamReference=2]="JSStreamReference",e[e.JSVoidResult=3]="JSVoidResult"}(d=e.JSCallResultType||(e.JSCallResultType={}));class y{constructor(e){this._dotNetCallDispatcher=e,this._byteArraysToBeRevived=new Map,this._pendingDotNetToJSStreams=new Map,this._pendingAsyncCalls={},this._nextAsyncCallId=1}getDotNetCallDispatcher(){return this._dotNetCallDispatcher}invokeJSFromDotNet(e,t,n,o){const r=m(this,t),i=I(b(e,o)(...r||[]),n);return null==i?null:T(this,i)}beginInvokeJSFromDotNet(e,t,n,o,r){const i=new Promise((e=>{const o=m(this,n);e(b(t,r)(...o||[]))}));e&&i.then((t=>T(this,[e,!0,I(t,o)]))).then((t=>this._dotNetCallDispatcher.endInvokeJSFromDotNet(e,!0,t)),(t=>this._dotNetCallDispatcher.endInvokeJSFromDotNet(e,!1,JSON.stringify([e,!1,w(t)]))))}endInvokeDotNetFromJS(e,t,n){const o=t?m(this,n):new Error(n);this.completePendingCall(parseInt(e,10),t,o)}invokeDotNetStaticMethod(e,t,...n){return this.invokeDotNetMethod(e,t,null,n)}invokeDotNetStaticMethodAsync(e,t,...n){return this.invokeDotNetMethodAsync(e,t,null,n)}invokeDotNetMethod(e,t,n,o){if(this._dotNetCallDispatcher.invokeDotNetFromJS){const r=T(this,o),i=this._dotNetCallDispatcher.invokeDotNetFromJS(e,t,n,r);return i?m(this,i):null}throw new Error("The current dispatcher does not support synchronous calls from JS to .NET. Use invokeDotNetMethodAsync instead.")}invokeDotNetMethodAsync(e,t,n,o){if(e&&n)throw new Error(`For instance method calls, assemblyName should be null. Received '${e}'.`);const r=this._nextAsyncCallId++,i=new Promise(((e,t)=>{this._pendingAsyncCalls[r]={resolve:e,reject:t}}));try{const i=T(this,o);this._dotNetCallDispatcher.beginInvokeDotNetFromJS(r,e,t,n,i)}catch(e){this.completePendingCall(r,!1,e)}return i}receiveByteArray(e,t){this._byteArraysToBeRevived.set(e,t)}processByteArray(e){const t=this._byteArraysToBeRevived.get(e);return t?(this._byteArraysToBeRevived.delete(e),t):null}supplyDotNetStream(e,t){if(this._pendingDotNetToJSStreams.has(e)){const n=this._pendingDotNetToJSStreams.get(e);this._pendingDotNetToJSStreams.delete(e),n.resolve(t)}else{const n=new E;n.resolve(t),this._pendingDotNetToJSStreams.set(e,n)}}getDotNetStreamPromise(e){let t;if(this._pendingDotNetToJSStreams.has(e))t=this._pendingDotNetToJSStreams.get(e).streamPromise,this._pendingDotNetToJSStreams.delete(e);else{const n=new E;this._pendingDotNetToJSStreams.set(e,n),t=n.streamPromise}return t}completePendingCall(e,t,n){if(!this._pendingAsyncCalls.hasOwnProperty(e))throw new Error(`There is no pending async call with ID ${e}.`);const o=this._pendingAsyncCalls[e];delete this._pendingAsyncCalls[e],t?o.resolve(n):o.reject(n)}}function w(e){return e instanceof Error?`${e.message}\n${e.stack}`:e?e.toString():"null"}function b(e,t){const n=h[t];if(n)return n.findFunction(e);throw new Error(`JS object instance with ID ${t} does not exist (has it been disposed?).`)}function _(e){delete h[e]}e.findJSFunction=b,e.disposeJSObjectReferenceById=_;class S{constructor(e,t){this._id=e,this._callDispatcher=t}invokeMethod(e,...t){return this._callDispatcher.invokeDotNetMethod(null,e,this._id,t)}invokeMethodAsync(e,...t){return this._callDispatcher.invokeDotNetMethodAsync(null,e,this._id,t)}dispose(){this._callDispatcher.invokeDotNetMethodAsync(null,"__Dispose",this._id,null).catch((e=>console.error(e)))}serializeAsArg(){return{[o]:this._id}}}e.DotNetObject=S,p((function(e,t){if(t&&"object"==typeof t){if(t.hasOwnProperty(o))return new S(t[o],c);if(t.hasOwnProperty(n)){const e=t[n],o=h[e];if(o)return o.getWrappedObject();throw new Error(`JS object instance with Id '${e}' does not exist. It may have been disposed.`)}if(t.hasOwnProperty(r)){const e=t[r],n=c.processByteArray(e);if(void 0===n)throw new Error(`Byte array index '${e}' does not exist.`);return n}if(t.hasOwnProperty(i)){const e=t[i],n=c.getDotNetStreamPromise(e);return new C(n)}}return t}));class C{constructor(e){this._streamPromise=e}stream(){return this._streamPromise}async arrayBuffer(){return new Response(await this.stream()).arrayBuffer()}}class E{constructor(){this.streamPromise=new Promise(((e,t)=>{this.resolve=e,this.reject=t}))}}function I(e,t){switch(t){case d.Default:return e;case d.JSObjectReference:return f(e);case d.JSStreamReference:return g(e);case d.JSVoidResult:return null;default:throw new Error(`Invalid JS call result type '${t}'.`)}}let k=0;function T(e,t){k=0,c=e;const n=JSON.stringify(t,R);return c=void 0,n}function R(e,t){if(t instanceof S)return t.serializeAsArg();if(t instanceof Uint8Array){c.getDotNetCallDispatcher().sendByteArray(k,t);const e={[r]:k};return k++,e}return t}}(e||(e={})),function(e){e[e.prependFrame=1]="prependFrame",e[e.removeFrame=2]="removeFrame",e[e.setAttribute=3]="setAttribute",e[e.removeAttribute=4]="removeAttribute",e[e.updateText=5]="updateText",e[e.stepIn=6]="stepIn",e[e.stepOut=7]="stepOut",e[e.updateMarkup=8]="updateMarkup",e[e.permutationListEntry=9]="permutationListEntry",e[e.permutationListEnd=10]="permutationListEnd"}(t||(t={})),function(e){e[e.element=1]="element",e[e.text=2]="text",e[e.attribute=3]="attribute",e[e.component=4]="component",e[e.region=5]="region",e[e.elementReferenceCapture=6]="elementReferenceCapture",e[e.markup=8]="markup",e[e.namedEvent=10]="namedEvent"}(o||(o={}));class r{constructor(e,t){this.componentId=e,this.fieldValue=t}static fromEvent(e,t){const n=t.target;if(n instanceof Element){const t=function(e){return e instanceof HTMLInputElement?e.type&&"checkbox"===e.type.toLowerCase()?{value:e.checked}:{value:e.value}:e instanceof HTMLSelectElement||e instanceof HTMLTextAreaElement?{value:e.value}:null}(n);if(t)return new r(e,t.value)}return null}}const i=new Map,s=new Map,a=[];function c(e){return i.get(e)}function l(e){const t=i.get(e);return(null==t?void 0:t.browserEventName)||e}function h(e,t){e.forEach((e=>i.set(e,t)))}function d(e){const t=[];for(let n=0;ne.selected)).map((e=>e.value))}}{const e=function(e){return!!e&&"INPUT"===e.tagName&&"checkbox"===e.getAttribute("type")}(t);return{value:e?!!t.checked:t.value}}}}),h(["copy","cut","paste"],{createEventArgs:e=>({type:e.type})}),h(["drag","dragend","dragenter","dragleave","dragover","dragstart","drop"],{createEventArgs:e=>{return{...u(t=e),dataTransfer:t.dataTransfer?{dropEffect:t.dataTransfer.dropEffect,effectAllowed:t.dataTransfer.effectAllowed,files:Array.from(t.dataTransfer.files).map((e=>e.name)),items:Array.from(t.dataTransfer.items).map((e=>({kind:e.kind,type:e.type}))),types:t.dataTransfer.types}:null};var t}}),h(["focus","blur","focusin","focusout"],{createEventArgs:e=>({type:e.type})}),h(["keydown","keyup","keypress"],{createEventArgs:e=>{return{key:(t=e).key,code:t.code,location:t.location,repeat:t.repeat,ctrlKey:t.ctrlKey,shiftKey:t.shiftKey,altKey:t.altKey,metaKey:t.metaKey,type:t.type};var t}}),h(["contextmenu","click","mouseover","mouseout","mousemove","mousedown","mouseup","mouseleave","mouseenter","dblclick"],{createEventArgs:e=>u(e)}),h(["error"],{createEventArgs:e=>{return{message:(t=e).message,filename:t.filename,lineno:t.lineno,colno:t.colno,type:t.type};var t}}),h(["loadstart","timeout","abort","load","loadend","progress"],{createEventArgs:e=>{return{lengthComputable:(t=e).lengthComputable,loaded:t.loaded,total:t.total,type:t.type};var t}}),h(["touchcancel","touchend","touchmove","touchenter","touchleave","touchstart"],{createEventArgs:e=>{return{detail:(t=e).detail,touches:d(t.touches),targetTouches:d(t.targetTouches),changedTouches:d(t.changedTouches),ctrlKey:t.ctrlKey,shiftKey:t.shiftKey,altKey:t.altKey,metaKey:t.metaKey,type:t.type};var t}}),h(["gotpointercapture","lostpointercapture","pointercancel","pointerdown","pointerenter","pointerleave","pointermove","pointerout","pointerover","pointerup"],{createEventArgs:e=>{return{...u(t=e),pointerId:t.pointerId,width:t.width,height:t.height,pressure:t.pressure,tiltX:t.tiltX,tiltY:t.tiltY,pointerType:t.pointerType,isPrimary:t.isPrimary};var t}}),h(["wheel","mousewheel"],{createEventArgs:e=>{return{...u(t=e),deltaX:t.deltaX,deltaY:t.deltaY,deltaZ:t.deltaZ,deltaMode:t.deltaMode};var t}}),h(["cancel","close","toggle"],{createEventArgs:()=>({})});const p=["date","datetime-local","month","time","week"],f=new Map;let g,m,v=0;const y={async add(e,t,n){if(!n)throw new Error("initialParameters must be an object, even if empty.");const o="__bl-dynamic-root:"+(++v).toString();f.set(o,e);const r=await S().invokeMethodAsync("AddRootComponent",t,o),i=new _(r,m[t]);return await i.setParameters(n),i}};function w(e){const t=f.get(e);if(t)return f.delete(e),t}class b{invoke(e){return this._callback(e)}setCallback(t){this._selfJSObjectReference||(this._selfJSObjectReference=e.createJSObjectReference(this)),this._callback=t}getJSObjectReference(){return this._selfJSObjectReference}dispose(){this._selfJSObjectReference&&e.disposeJSObjectReference(this._selfJSObjectReference)}}class _{constructor(e,t){this._jsEventCallbackWrappers=new Map,this._componentId=e;for(const e of t)"eventcallback"===e.type&&this._jsEventCallbackWrappers.set(e.name.toLowerCase(),new b)}setParameters(e){const t={},n=Object.entries(e||{}),o=n.length;for(const[e,o]of n){const n=this._jsEventCallbackWrappers.get(e.toLowerCase());n&&o?(n.setCallback(o),t[e]=n.getJSObjectReference()):t[e]=o}return S().invokeMethodAsync("SetRootComponentParameters",this._componentId,o,t)}async dispose(){if(null!==this._componentId){await S().invokeMethodAsync("RemoveRootComponent",this._componentId),this._componentId=null;for(const e of this._jsEventCallbackWrappers.values())e.dispose()}}}function S(){if(!g)throw new Error("Dynamic root components have not been enabled in this application.");return g}const C=new Map,E=[],I=new Map;function k(t,n,o,r){var i,s;if(C.has(t))throw new Error(`Interop methods are already registered for renderer ${t}`);C.set(t,n),o&&r&&Object.keys(o).length>0&&function(t,n,o){if(g)throw new Error("Dynamic root components have already been enabled.");g=t,m=n;for(const[t,r]of Object.entries(o)){const o=e.findJSFunction(t,0);for(const e of r)o(e,n[e])}}(D(t),o,r),null===(s=null===(i=I.get(t))||void 0===i?void 0:i[0])||void 0===s||s.call(i),function(e){for(const t of E)t(e)}(t)}function T(e){return C.has(e)}function R(e,t,n){return A(e,t.eventHandlerId,(()=>D(e).invokeMethodAsync("DispatchEventAsync",t,n)))}function D(e){const t=C.get(e);if(!t)throw new Error(`No interop methods are registered for renderer ${e}`);return t}let A=(e,t,n)=>n();const x=B(["abort","blur","cancel","canplay","canplaythrough","change","close","cuechange","durationchange","emptied","ended","error","focus","load","loadeddata","loadedmetadata","loadend","loadstart","mouseenter","mouseleave","pointerenter","pointerleave","pause","play","playing","progress","ratechange","reset","scroll","seeked","seeking","stalled","submit","suspend","timeupdate","toggle","unload","volumechange","waiting","DOMNodeInsertedIntoDocument","DOMNodeRemovedFromDocument"]),N={submit:!0},P=B(["click","dblclick","mousedown","mousemove","mouseup"]);class M{constructor(e){this.browserRendererId=e,this.afterClickCallbacks=[];const t=++M.nextEventDelegatorId;this.eventsCollectionKey=`_blazorEvents_${t}`,this.eventInfoStore=new U(this.onGlobalEvent.bind(this))}setListener(e,t,n,o){const r=this.getEventHandlerInfosForElement(e,!0),i=r.getHandler(t);if(i)this.eventInfoStore.update(i.eventHandlerId,n);else{const i={element:e,eventName:t,eventHandlerId:n,renderingComponentId:o};this.eventInfoStore.add(i),r.setHandler(t,i)}}getHandler(e){return this.eventInfoStore.get(e)}removeListener(e){const t=this.eventInfoStore.remove(e);if(t){const e=t.element,n=this.getEventHandlerInfosForElement(e,!1);n&&n.removeHandler(t.eventName)}}notifyAfterClick(e){this.afterClickCallbacks.push(e),this.eventInfoStore.addGlobalListener("click")}setStopPropagation(e,t,n){this.getEventHandlerInfosForElement(e,!0).stopPropagation(t,n)}setPreventDefault(e,t,n){this.getEventHandlerInfosForElement(e,!0).preventDefault(t,n)}onGlobalEvent(e){if(!(e.target instanceof Element))return;this.dispatchGlobalEventToAllElements(e.type,e);const t=(n=e.type,s.get(n));var n;t&&t.forEach((t=>this.dispatchGlobalEventToAllElements(t,e))),"click"===e.type&&this.afterClickCallbacks.forEach((t=>t(e)))}dispatchGlobalEventToAllElements(e,t){const n=t.composedPath();let o=n.shift(),i=null,s=!1;const a=Object.prototype.hasOwnProperty.call(x,e);let l=!1;for(;o;){const u=o,p=this.getEventHandlerInfosForElement(u,!1);if(p){const n=p.getHandler(e);if(n&&(h=u,d=t.type,!((h instanceof HTMLButtonElement||h instanceof HTMLInputElement||h instanceof HTMLTextAreaElement||h instanceof HTMLSelectElement)&&Object.prototype.hasOwnProperty.call(P,d)&&h.disabled))){if(!s){const n=c(e);i=(null==n?void 0:n.createEventArgs)?n.createEventArgs(t):{},s=!0}Object.prototype.hasOwnProperty.call(N,t.type)&&t.preventDefault(),R(this.browserRendererId,{eventHandlerId:n.eventHandlerId,eventName:e,eventFieldInfo:r.fromEvent(n.renderingComponentId,t)},i)}p.stopPropagation(e)&&(l=!0),p.preventDefault(e)&&t.preventDefault()}o=a||l?void 0:n.shift()}var h,d}getEventHandlerInfosForElement(e,t){return Object.prototype.hasOwnProperty.call(e,this.eventsCollectionKey)?e[this.eventsCollectionKey]:t?e[this.eventsCollectionKey]=new L:null}}M.nextEventDelegatorId=0;class U{constructor(e){this.globalListener=e,this.infosByEventHandlerId={},this.countByEventName={},a.push(this.handleEventNameAliasAdded.bind(this))}add(e){if(this.infosByEventHandlerId[e.eventHandlerId])throw new Error(`Event ${e.eventHandlerId} is already tracked`);this.infosByEventHandlerId[e.eventHandlerId]=e,this.addGlobalListener(e.eventName)}get(e){return this.infosByEventHandlerId[e]}addGlobalListener(e){if(e=l(e),Object.prototype.hasOwnProperty.call(this.countByEventName,e))this.countByEventName[e]++;else{this.countByEventName[e]=1;const t=Object.prototype.hasOwnProperty.call(x,e);document.addEventListener(e,this.globalListener,t)}}update(e,t){if(Object.prototype.hasOwnProperty.call(this.infosByEventHandlerId,t))throw new Error(`Event ${t} is already tracked`);const n=this.infosByEventHandlerId[e];delete this.infosByEventHandlerId[e],n.eventHandlerId=t,this.infosByEventHandlerId[t]=n}remove(e){const t=this.infosByEventHandlerId[e];if(t){delete this.infosByEventHandlerId[e];const n=l(t.eventName);0==--this.countByEventName[n]&&(delete this.countByEventName[n],document.removeEventListener(n,this.globalListener))}return t}handleEventNameAliasAdded(e,t){if(Object.prototype.hasOwnProperty.call(this.countByEventName,e)){const n=this.countByEventName[e];delete this.countByEventName[e],document.removeEventListener(e,this.globalListener),this.addGlobalListener(t),this.countByEventName[t]+=n-1}}}class L{constructor(){this.handlers={},this.preventDefaultFlags=null,this.stopPropagationFlags=null}getHandler(e){return Object.prototype.hasOwnProperty.call(this.handlers,e)?this.handlers[e]:null}setHandler(e,t){this.handlers[e]=t}removeHandler(e){delete this.handlers[e]}preventDefault(e,t){return void 0!==t&&(this.preventDefaultFlags=this.preventDefaultFlags||{},this.preventDefaultFlags[e]=t),!!this.preventDefaultFlags&&this.preventDefaultFlags[e]}stopPropagation(e,t){return void 0!==t&&(this.stopPropagationFlags=this.stopPropagationFlags||{},this.stopPropagationFlags[e]=t),!!this.stopPropagationFlags&&this.stopPropagationFlags[e]}}function B(e){const t={};return e.forEach((e=>{t[e]=!0})),t}const O=Symbol(),F=Symbol(),$=Symbol();function H(e){const{start:t,end:n}=e,o=t[$];if(o){if(o!==e)throw new Error("The start component comment was already associated with another component descriptor.");return t}const r=t.parentNode;if(!r)throw new Error(`Comment not connected to the DOM ${t.textContent}`);const i=W(r,!0),s=Y(i);t[F]=i,t[$]=e;const a=W(t);if(n){const e=Y(a),o=Array.prototype.indexOf.call(s,a)+1;let r=null;for(;r!==n;){const n=s.splice(o,1)[0];if(!n)throw new Error("Could not find the end component comment in the parent logical node list");n[F]=t,e.push(n),r=n}}return a}function W(e,t){if(O in e)return e;const n=[];if(e.childNodes.length>0){if(!t)throw new Error("New logical elements must start empty, or allowExistingContents must be true");e.childNodes.forEach((t=>{const o=W(t,!0);o[F]=e,n.push(o)}))}return e[O]=n,e}function j(e){const t=Y(e);for(;t.length;)J(e,0)}function z(e,t){const n=document.createComment("!");return q(n,e,t),n}function q(e,t,n){const o=e;let r=e;if(Z(e)){const t=oe(o);if(t!==e){const n=new Range;n.setStartBefore(e),n.setEndAfter(t),r=n.extractContents()}}const i=K(o);if(i){const e=Y(i),t=Array.prototype.indexOf.call(e,o);e.splice(t,1),delete o[F]}const s=Y(t);if(n0;)J(n,0)}const o=n;o.parentNode.removeChild(o)}function K(e){return e[F]||null}function V(e,t){return Y(e)[t]}function X(e){return e[$]||null}function G(e){const t=te(e);return"http://www.w3.org/2000/svg"===t.namespaceURI&&"foreignObject"!==t.tagName}function Y(e){return e[O]}function Q(e){const t=Y(K(e));return t[Array.prototype.indexOf.call(t,e)+1]||null}function Z(e){return O in e}function ee(e,t){const n=Y(e);t.forEach((e=>{e.moveRangeStart=n[e.fromSiblingIndex],e.moveRangeEnd=oe(e.moveRangeStart)})),t.forEach((t=>{const o=document.createComment("marker");t.moveToBeforeMarker=o;const r=n[t.toSiblingIndex+1];r?r.parentNode.insertBefore(o,r):ne(o,e)})),t.forEach((e=>{const t=e.moveToBeforeMarker,n=t.parentNode,o=e.moveRangeStart,r=e.moveRangeEnd;let i=o;for(;i;){const e=i.nextSibling;if(n.insertBefore(i,t),i===r)break;i=e}n.removeChild(t)})),t.forEach((e=>{n[e.toSiblingIndex]=e.moveRangeStart}))}function te(e){if(e instanceof Element||e instanceof DocumentFragment)return e;if(e instanceof Comment)return e.parentNode;throw new Error("Not a valid logical element")}function ne(e,t){if(t instanceof Element||t instanceof DocumentFragment)t.appendChild(e);else{if(!(t instanceof Comment))throw new Error(`Cannot append node because the parent is not a valid logical element. Parent: ${t}`);{const n=Q(t);n?n.parentNode.insertBefore(e,n):ne(e,K(t))}}}function oe(e){if(e instanceof Element||e instanceof DocumentFragment)return e;const t=Q(e);if(t)return t.previousSibling;{const t=K(e);return t instanceof Element||t instanceof DocumentFragment?t.lastChild:oe(t)}}function re(e){return`_bl_${e}`}const ie="__internalId";e.attachReviver(((e,t)=>t&&"object"==typeof t&&Object.prototype.hasOwnProperty.call(t,ie)&&"string"==typeof t[ie]?function(e){const t=`[${re(e)}]`;return document.querySelector(t)}(t[ie]):t));const se="_blazorDeferredValue";function ae(e){e instanceof HTMLOptionElement?de(e):se in e&&he(e,e[se])}function ce(e){return"select-multiple"===e.type}function le(e,t){e.value=t||""}function he(e,t){e instanceof HTMLSelectElement?ce(e)?function(e,t){t||(t=[]);for(let n=0;n{Oe()&&Ne(e,(e=>{Xe(e,!0,!1)}))}))}getRootComponentCount(){return this.rootComponentIds.size}attachRootComponentToLogicalElement(e,t,n){if(we(t))throw new Error(`Root component '${e}' could not be attached because its target element is already associated with a root component`);ye(t,!0),this.attachComponentToElement(e,t),this.rootComponentIds.add(e),n||fe.add(t)}updateComponent(e,t,n,o){var r;const i=this.childComponentLocations[t];if(!i)throw new Error(`No element is currently associated with component ${t}`);fe.delete(i)&&(j(i),i instanceof Comment&&(i.textContent="!"));const s=null===(r=te(i))||void 0===r?void 0:r.getRootNode(),a=s&&s.activeElement;this.applyEdits(e,t,i,0,n,o),a instanceof HTMLElement&&s&&s.activeElement!==a&&a.focus()}disposeComponent(e){if(this.rootComponentIds.delete(e)){const t=this.childComponentLocations[e];ye(t,!1),!0===t[me]?fe.add(t):j(t)}delete this.childComponentLocations[e]}disposeEventHandler(e){this.eventDelegator.removeListener(e)}attachComponentToElement(e,t){this.childComponentLocations[e]=t}applyEdits(e,n,o,r,i,s){let a,c=0,l=r;const h=e.arrayBuilderSegmentReader,d=e.editReader,u=e.frameReader,p=h.values(i),f=h.offset(i),g=f+h.count(i);for(let i=f;i{const t=document.createElement("script");t.textContent=e.textContent,e.getAttributeNames().forEach((n=>{t.setAttribute(n,e.getAttribute(n))})),e.parentNode.replaceChild(t,e)})),ue.content));var s;let a=0;for(;i.firstChild;)q(i.firstChild,r,a++)}applyAttribute(e,t,n,o){const r=e.frameReader,i=r.attributeName(o),s=r.attributeEventHandlerId(o);if(s){const e=Se(i);return void this.eventDelegator.setListener(n,e,s,t)}const a=r.attributeValue(o);this.setOrRemoveAttributeOrProperty(n,i,a)}insertFrameRange(e,t,n,o,r,i,s){const a=o;for(let a=i;a{et(t,e)})},enableNavigationInterception:function(e){if(void 0!==Ee&&Ee!==e)throw new Error("Only one interactive runtime may enable navigation interception at a time.");Ee=e},setHasLocationChangingListeners:function(e,t){const n=je.get(e);if(!n)throw new Error(`Renderer with ID '${e}' is not listening for navigation events`);n.hasLocationChangingEventListeners=t},endLocationChanging:function(e,t){qe&&e===We&&(qe(t),qe=null)},navigateTo:function(e,t){Ve(e,t,!0)},refresh:function(e){!e&&Me()?Ue(location.href,!0):location.reload()},getBaseURI:()=>document.baseURI,getLocationHref:()=>location.href,scrollToElement:Ke};function Ke(e){const t=document.getElementById(e);return!!t&&(t.scrollIntoView(),!0)}function Ve(e,t,n=!1){const o=Le(e);!t.forceLoad&&Pe(o)?ot()?Xe(o,!1,t.replaceHistoryEntry,t.historyEntryState,n):Ue(o,t.replaceHistoryEntry):function(e,t){if(location.href===e){const t=e+"?";history.replaceState(null,"",t),location.replace(e)}else t?location.replace(e):location.href=e}(e,t.replaceHistoryEntry)}async function Xe(e,t,n,o=void 0,r=!1){if(Qe(),function(e){const t=e.indexOf("#");return t>-1&&location.href.replace(location.hash,"")===e.substring(0,t)}(e))return void function(e,t,n){Ge(e,t,n);const o=e.indexOf("#");o!==e.length-1&&Ke(e.substring(o+1))}(e,n,o);const i=nt();(r||!(null==i?void 0:i.hasLocationChangingEventListeners)||await Ze(e,o,t,i))&&(Re=!0,Ge(e,n,o),await et(t))}function Ge(e,t,n=void 0){t?history.replaceState({userState:n,_index:He},"",e):(He++,history.pushState({userState:n,_index:He},"",e))}function Ye(e){return new Promise((t=>{const n=ze;ze=()=>{ze=n,t()},history.go(e)}))}function Qe(){qe&&(qe(!1),qe=null)}function Ze(e,t,n,o){return new Promise((r=>{Qe(),We++,qe=r,o.locationChanging(We,e,t,n)}))}async function et(e,t){const n=null!=t?t:location.href;await Promise.all(Array.from(je,(async([t,o])=>{var r;T(t)&&await o.locationChanged(n,null===(r=history.state)||void 0===r?void 0:r.userState,e)})))}async function tt(e){var t,n;ze&&ot()&&await ze(e),He=null!==(n=null===(t=history.state)||void 0===t?void 0:t._index)&&void 0!==n?n:0}function nt(){const e=Fe();if(void 0!==e)return je.get(e)}function ot(){return Oe()||!Me()}const rt={focus:function(e,t){if(e instanceof HTMLElement)e.focus({preventScroll:t});else{if(!(e instanceof SVGElement))throw new Error("Unable to focus an invalid element.");if(!e.hasAttribute("tabindex"))throw new Error("Unable to focus an SVG element that does not have a tabindex.");e.focus({preventScroll:t})}},focusBySelector:function(e,t){const n=document.querySelector(e);n&&(n.hasAttribute("tabindex")||(n.tabIndex=-1),n.focus({preventScroll:!0}))}},it={init:function(e,t,n,o=50){const r=at(t);(r||document.documentElement).style.overflowAnchor="none";const i=document.createRange();u(n.parentElement)&&(t.style.display="table-row",n.style.display="table-row");const s=new IntersectionObserver((function(o){o.forEach((o=>{var r;if(!o.isIntersecting)return;i.setStartAfter(t),i.setEndBefore(n);const s=i.getBoundingClientRect().height,a=null===(r=o.rootBounds)||void 0===r?void 0:r.height;o.target===t?e.invokeMethodAsync("OnSpacerBeforeVisible",o.intersectionRect.top-o.boundingClientRect.top,s,a):o.target===n&&n.offsetHeight>0&&e.invokeMethodAsync("OnSpacerAfterVisible",o.boundingClientRect.bottom-o.intersectionRect.bottom,s,a)}))}),{root:r,rootMargin:`${o}px`});s.observe(t),s.observe(n);const a=d(t),c=d(n),{observersByDotNetObjectId:l,id:h}=ct(e);function d(e){const t={attributes:!0},n=new MutationObserver(((n,o)=>{u(e.parentElement)&&(o.disconnect(),e.style.display="table-row",o.observe(e,t)),s.unobserve(e),s.observe(e)}));return n.observe(e,t),n}function u(e){return null!==e&&(e instanceof HTMLTableElement&&""===e.style.display||"table"===e.style.display||e instanceof HTMLTableSectionElement&&""===e.style.display||"table-row-group"===e.style.display)}l[h]={intersectionObserver:s,mutationObserverBefore:a,mutationObserverAfter:c}},dispose:function(e){const{observersByDotNetObjectId:t,id:n}=ct(e),o=t[n];o&&(o.intersectionObserver.disconnect(),o.mutationObserverBefore.disconnect(),o.mutationObserverAfter.disconnect(),e.dispose(),delete t[n])}},st=Symbol();function at(e){return e&&e!==document.body&&e!==document.documentElement?"visible"!==getComputedStyle(e).overflowY?e:at(e.parentElement):null}function ct(e){var t;const n=e._callDispatcher,o=e._id;return null!==(t=n[st])&&void 0!==t||(n[st]={}),{observersByDotNetObjectId:n[st],id:o}}const lt={getAndRemoveExistingTitle:function(){var e;const t=document.head?document.head.getElementsByTagName("title"):[];if(0===t.length)return null;let n=null;for(let o=t.length-1;o>=0;o--){const r=t[o],i=r.previousSibling;i instanceof Comment&&null!==K(i)||(null===n&&(n=r.textContent),null===(e=r.parentNode)||void 0===e||e.removeChild(r))}return n}},ht={init:function(e,t){t._blazorInputFileNextFileId=0,t.addEventListener("click",(function(){t.value=""})),t.addEventListener("change",(function(){t._blazorFilesById={};const n=Array.prototype.map.call(t.files,(function(e){const n={id:++t._blazorInputFileNextFileId,lastModified:new Date(e.lastModified).toISOString(),name:e.name,size:e.size,contentType:e.type,readPromise:void 0,arrayBuffer:void 0,blob:e};return t._blazorFilesById[n.id]=n,n}));e.invokeMethodAsync("NotifyChange",n)}))},toImageFile:async function(e,t,n,o,r){const i=dt(e,t),s=await new Promise((function(e){const t=new Image;t.onload=function(){URL.revokeObjectURL(t.src),e(t)},t.onerror=function(){t.onerror=null,URL.revokeObjectURL(t.src)},t.src=URL.createObjectURL(i.blob)})),a=await new Promise((function(e){var t;const i=Math.min(1,o/s.width),a=Math.min(1,r/s.height),c=Math.min(i,a),l=document.createElement("canvas");l.width=Math.round(s.width*c),l.height=Math.round(s.height*c),null===(t=l.getContext("2d"))||void 0===t||t.drawImage(s,0,0,l.width,l.height),l.toBlob(e,n)})),c={id:++e._blazorInputFileNextFileId,lastModified:i.lastModified,name:i.name,size:(null==a?void 0:a.size)||0,contentType:n,blob:a||i.blob};return e._blazorFilesById[c.id]=c,c},readFileData:async function(e,t){return dt(e,t).blob}};function dt(e,t){const n=e._blazorFilesById[t];if(!n)throw new Error(`There is no file with ID ${t}. The file list may have changed. See https://aka.ms/aspnet/blazor-input-file-multiple-selections.`);return n}const ut=new Set,pt={enableNavigationPrompt:function(e){0===ut.size&&window.addEventListener("beforeunload",ft),ut.add(e)},disableNavigationPrompt:function(e){ut.delete(e),0===ut.size&&window.removeEventListener("beforeunload",ft)}};function ft(e){e.preventDefault(),e.returnValue=!0}async function gt(e,t,n){return e instanceof Blob?await async function(e,t,n){const o=e.slice(t,t+n),r=await o.arrayBuffer();return new Uint8Array(r)}(e,t,n):function(e,t,n){return new Uint8Array(e.buffer,e.byteOffset+t,n)}(e,t,n)}const mt=new Map,vt={navigateTo:function(e,t,n=!1){Ve(e,t instanceof Object?t:{forceLoad:t,replaceHistoryEntry:n})},registerCustomEventType:function(e,t){if(!t)throw new Error("The options parameter is required.");if(i.has(e))throw new Error(`The event '${e}' is already registered.`);if(t.browserEventName){const n=s.get(t.browserEventName);n?n.push(e):s.set(t.browserEventName,[e]),a.forEach((n=>n(e,t.browserEventName)))}i.set(e,t)},rootComponents:y,runtime:{},_internal:{navigationManager:Je,domWrapper:rt,Virtualize:it,PageTitle:lt,InputFile:ht,NavigationLock:pt,getJSDataStreamChunk:gt,attachWebRendererInterop:k}};var yt;window.Blazor=vt,function(e){e[e.Trace=0]="Trace",e[e.Debug=1]="Debug",e[e.Information=2]="Information",e[e.Warning=3]="Warning",e[e.Error=4]="Error",e[e.Critical=5]="Critical",e[e.None=6]="None"}(yt||(yt={}));class wt{log(e,t){}}wt.instance=new wt;class bt{constructor(e){this.minLevel=e}log(e,t){if(e>=this.minLevel){const n=`[${(new Date).toISOString()}] ${yt[e]}: ${t}`;switch(e){case yt.Critical:case yt.Error:console.error(n);break;case yt.Warning:console.warn(n);break;case yt.Information:console.info(n);break;default:console.log(n)}}}}function _t(e,t){switch(t){case"webassembly":return Tt(e,"webassembly");case"server":return function(e){return Tt(e,"server").sort(((e,t)=>e.sequence-t.sequence))}(e);case"auto":return Tt(e,"auto")}}const St=/^\s*Blazor-Server-Component-State:(?[a-zA-Z0-9+/=]+)$/,Ct=/^\s*Blazor-WebAssembly-Component-State:(?[a-zA-Z0-9+/=]+)$/,Et=/^\s*Blazor-Web-Initializers:(?[a-zA-Z0-9+/=]+)$/;function It(e){return kt(e,St)}function kt(e,t,n="state"){var o;if(e.nodeType===Node.COMMENT_NODE){const r=e.textContent||"",i=t.exec(r),s=i&&i.groups&&i.groups[n];return s&&(null===(o=e.parentNode)||void 0===o||o.removeChild(e)),s}if(!e.hasChildNodes())return;const r=e.childNodes;for(let e=0;e.*)$/);function Dt(e,t){const n=e.currentElement;var o,r,i;if(n&&n.nodeType===Node.COMMENT_NODE&&n.textContent){const s=Rt.exec(n.textContent),a=s&&s.groups&&s.groups.descriptor;if(!a)return;!function(e){if(e.parentNode instanceof Document)throw new Error("Root components cannot be marked as interactive. The element must be rendered statically so that scripts are not evaluated multiple times.")}(n);try{const s=function(e){const t=JSON.parse(e),{type:n}=t;if("server"!==n&&"webassembly"!==n&&"auto"!==n)throw new Error(`Invalid component type '${n}'.`);return t}(a),c=function(e,t,n){const{prerenderId:o}=e;if(o){for(;n.next()&&n.currentElement;){const e=n.currentElement;if(e.nodeType!==Node.COMMENT_NODE)continue;if(!e.textContent)continue;const t=Rt.exec(e.textContent),r=t&&t[1];if(r)return Pt(r,o),e}throw new Error(`Could not find an end component comment for '${t}'.`)}}(s,n,e);if(t!==s.type)return;switch(s.type){case"webassembly":return r=n,i=c,Nt(o=s),{...o,uniqueId:At++,start:r,end:i};case"server":return function(e,t,n){return xt(e),{...e,uniqueId:At++,start:t,end:n}}(s,n,c);case"auto":return function(e,t,n){return xt(e),Nt(e),{...e,uniqueId:At++,start:t,end:n}}(s,n,c)}}catch(e){throw new Error(`Found malformed component comment at ${n.textContent}`)}}}let At=0;function xt(e){const{descriptor:t,sequence:n}=e;if(!t)throw new Error("descriptor must be defined when using a descriptor.");if(void 0===n)throw new Error("sequence must be defined when using a descriptor.");if(!Number.isInteger(n))throw new Error(`Error parsing the sequence '${n}' for component '${JSON.stringify(e)}'`)}function Nt(e){const{assembly:t,typeName:n}=e;if(!t)throw new Error("assembly must be defined when using a descriptor.");if(!n)throw new Error("typeName must be defined when using a descriptor.");e.parameterDefinitions=e.parameterDefinitions&&atob(e.parameterDefinitions),e.parameterValues=e.parameterValues&&atob(e.parameterValues)}function Pt(e,t){const n=JSON.parse(e);if(1!==Object.keys(n).length)throw new Error(`Invalid end of component comment: '${e}'`);const o=n.prerenderId;if(!o)throw new Error(`End of component comment must have a value for the prerendered property: '${e}'`);if(o!==t)throw new Error(`End of component comment prerendered property must match the start comment prerender id: '${t}', '${o}'`)}class Mt{constructor(e){this.childNodes=e,this.currentIndex=-1,this.length=e.length}next(){return this.currentIndex++,this.currentIndex{n+=`0x${e<16?"0":""}${e.toString(16)} `})),n.substr(0,n.length-1)}(e)}'`)):"string"==typeof e&&(n=`String data of length ${e.length}`,t&&(n+=`. Content: '${e}'`)),n}function zt(e){return e&&"undefined"!=typeof ArrayBuffer&&(e instanceof ArrayBuffer||e.constructor&&"ArrayBuffer"===e.constructor.name)}async function qt(e,t,n,o,r,i){const s={},[a,c]=Vt();s[a]=c,e.log(Ot.Trace,`(${t} transport) sending data. ${jt(r,i.logMessageContent)}.`);const l=zt(r)?"arraybuffer":"text",h=await n.post(o,{content:r,headers:{...s,...i.headers},responseType:l,timeout:i.timeout,withCredentials:i.withCredentials});e.log(Ot.Trace,`(${t} transport) request complete. Response status: ${h.statusCode}.`)}class Jt{constructor(e,t){this._subject=e,this._observer=t}dispose(){const e=this._subject.observers.indexOf(this._observer);e>-1&&this._subject.observers.splice(e,1),0===this._subject.observers.length&&this._subject.cancelCallback&&this._subject.cancelCallback().catch((e=>{}))}}class Kt{constructor(e){this._minLevel=e,this.out=console}log(e,t){if(e>=this._minLevel){const n=`[${(new Date).toISOString()}] ${Ot[e]}: ${t}`;switch(e){case Ot.Critical:case Ot.Error:this.out.error(n);break;case Ot.Warning:this.out.warn(n);break;case Ot.Information:this.out.info(n);break;default:this.out.log(n)}}}}function Vt(){let e="X-SignalR-User-Agent";return Wt.isNode&&(e="User-Agent"),[e,Xt($t,Gt(),Wt.isNode?"NodeJS":"Browser",Yt())]}function Xt(e,t,n,o){let r="Microsoft SignalR/";const i=e.split(".");return r+=`${i[0]}.${i[1]}`,r+=` (${e}; `,r+=t&&""!==t?`${t}; `:"Unknown OS; ",r+=`${n}`,r+=o?`; ${o}`:"; Unknown Runtime Version",r+=")",r}function Gt(){if(!Wt.isNode)return"";switch(process.platform){case"win32":return"Windows NT";case"darwin":return"macOS";case"linux":return"Linux";default:return process.platform}}function Yt(){if(Wt.isNode)return process.versions.node}function Qt(e){return e.stack?e.stack:e.message?e.message:`${e}`}class Zt{writeHandshakeRequest(e){return Bt.write(JSON.stringify(e))}parseHandshakeResponse(e){let t,n;if(zt(e)){const o=new Uint8Array(e),r=o.indexOf(Bt.RecordSeparatorCode);if(-1===r)throw new Error("Message is incomplete.");const i=r+1;t=String.fromCharCode.apply(null,Array.prototype.slice.call(o.slice(0,i))),n=o.byteLength>i?o.slice(i).buffer:null}else{const o=e,r=o.indexOf(Bt.RecordSeparator);if(-1===r)throw new Error("Message is incomplete.");const i=r+1;t=o.substring(0,i),n=o.length>i?o.substring(i):null}const o=Bt.parse(t),r=JSON.parse(o[0]);if(r.type)throw new Error("Expected a handshake response from the server.");return[n,r]}}class en extends Error{constructor(e,t){const n=new.target.prototype;super(`${e}: Status code '${t}'`),this.statusCode=t,this.__proto__=n}}class tn extends Error{constructor(e="A timeout occurred."){const t=new.target.prototype;super(e),this.__proto__=t}}class nn extends Error{constructor(e="An abort occurred."){const t=new.target.prototype;super(e),this.__proto__=t}}class on extends Error{constructor(e,t){const n=new.target.prototype;super(e),this.transport=t,this.errorType="UnsupportedTransportError",this.__proto__=n}}class rn extends Error{constructor(e,t){const n=new.target.prototype;super(e),this.transport=t,this.errorType="DisabledTransportError",this.__proto__=n}}class sn extends Error{constructor(e,t){const n=new.target.prototype;super(e),this.transport=t,this.errorType="FailedToStartTransportError",this.__proto__=n}}class an extends Error{constructor(e){const t=new.target.prototype;super(e),this.errorType="FailedToNegotiateWithServerError",this.__proto__=t}}class cn extends Error{constructor(e,t){const n=new.target.prototype;super(e),this.innerErrors=t,this.__proto__=n}}var ln,hn;!function(e){e[e.Invocation=1]="Invocation",e[e.StreamItem=2]="StreamItem",e[e.Completion=3]="Completion",e[e.StreamInvocation=4]="StreamInvocation",e[e.CancelInvocation=5]="CancelInvocation",e[e.Ping=6]="Ping",e[e.Close=7]="Close",e[e.Ack=8]="Ack",e[e.Sequence=9]="Sequence"}(ln||(ln={}));class dn{constructor(){this.observers=[]}next(e){for(const t of this.observers)t.next(e)}error(e){for(const t of this.observers)t.error&&t.error(e)}complete(){for(const e of this.observers)e.complete&&e.complete()}subscribe(e){return this.observers.push(e),new Jt(this,e)}}class un{constructor(e,t,n){this._bufferSize=1e5,this._messages=[],this._totalMessageCount=0,this._waitForSequenceMessage=!1,this._nextReceivingSequenceId=1,this._latestReceivedSequenceId=0,this._bufferedByteCount=0,this._reconnectInProgress=!1,this._protocol=e,this._connection=t,this._bufferSize=n}async _send(e){const t=this._protocol.writeMessage(e);let n=Promise.resolve();if(this._isInvocationMessage(e)){this._totalMessageCount++;let e=()=>{},o=()=>{};zt(t)?this._bufferedByteCount+=t.byteLength:this._bufferedByteCount+=t.length,this._bufferedByteCount>=this._bufferSize&&(n=new Promise(((t,n)=>{e=t,o=n}))),this._messages.push(new pn(t,this._totalMessageCount,e,o))}try{this._reconnectInProgress||await this._connection.send(t)}catch{this._disconnected()}await n}_ack(e){let t=-1;for(let n=0;nthis._nextReceivingSequenceId?this._connection.stop(new Error("Sequence ID greater than amount of messages we've received.")):this._nextReceivingSequenceId=e.sequenceId}_disconnected(){this._reconnectInProgress=!0,this._waitForSequenceMessage=!0}async _resend(){const e=0!==this._messages.length?this._messages[0]._id:this._totalMessageCount+1;await this._connection.send(this._protocol.writeMessage({type:ln.Sequence,sequenceId:e}));const t=this._messages;for(const e of t)await this._connection.send(e._message);this._reconnectInProgress=!1}_dispose(e){null!=e||(e=new Error("Unable to reconnect to server."));for(const t of this._messages)t._rejector(e)}_isInvocationMessage(e){switch(e.type){case ln.Invocation:case ln.StreamItem:case ln.Completion:case ln.StreamInvocation:case ln.CancelInvocation:return!0;case ln.Close:case ln.Sequence:case ln.Ping:case ln.Ack:return!1}}_ackTimer(){void 0===this._ackTimerHandle&&(this._ackTimerHandle=setTimeout((async()=>{try{this._reconnectInProgress||await this._connection.send(this._protocol.writeMessage({type:ln.Ack,sequenceId:this._latestReceivedSequenceId}))}catch{}clearTimeout(this._ackTimerHandle),this._ackTimerHandle=void 0}),1e3))}}class pn{constructor(e,t,n,o){this._message=e,this._id=t,this._resolver=n,this._rejector=o}}!function(e){e.Disconnected="Disconnected",e.Connecting="Connecting",e.Connected="Connected",e.Disconnecting="Disconnecting",e.Reconnecting="Reconnecting"}(hn||(hn={}));class fn{static create(e,t,n,o,r,i,s){return new fn(e,t,n,o,r,i,s)}constructor(e,t,n,o,r,i,s){this._nextKeepAlive=0,this._freezeEventListener=()=>{this._logger.log(Ot.Warning,"The page is being frozen, this will likely lead to the connection being closed and messages being lost. For more information see the docs at https://learn.microsoft.com/aspnet/core/signalr/javascript-client#bsleep")},Ht.isRequired(e,"connection"),Ht.isRequired(t,"logger"),Ht.isRequired(n,"protocol"),this.serverTimeoutInMilliseconds=null!=r?r:3e4,this.keepAliveIntervalInMilliseconds=null!=i?i:15e3,this._statefulReconnectBufferSize=null!=s?s:1e5,this._logger=t,this._protocol=n,this.connection=e,this._reconnectPolicy=o,this._handshakeProtocol=new Zt,this.connection.onreceive=e=>this._processIncomingData(e),this.connection.onclose=e=>this._connectionClosed(e),this._callbacks={},this._methods={},this._closedCallbacks=[],this._reconnectingCallbacks=[],this._reconnectedCallbacks=[],this._invocationId=0,this._receivedHandshakeResponse=!1,this._connectionState=hn.Disconnected,this._connectionStarted=!1,this._cachedPingMessage=this._protocol.writeMessage({type:ln.Ping})}get state(){return this._connectionState}get connectionId(){return this.connection&&this.connection.connectionId||null}get baseUrl(){return this.connection.baseUrl||""}set baseUrl(e){if(this._connectionState!==hn.Disconnected&&this._connectionState!==hn.Reconnecting)throw new Error("The HubConnection must be in the Disconnected or Reconnecting state to change the url.");if(!e)throw new Error("The HubConnection url must be a valid url.");this.connection.baseUrl=e}start(){return this._startPromise=this._startWithStateTransitions(),this._startPromise}async _startWithStateTransitions(){if(this._connectionState!==hn.Disconnected)return Promise.reject(new Error("Cannot start a HubConnection that is not in the 'Disconnected' state."));this._connectionState=hn.Connecting,this._logger.log(Ot.Debug,"Starting HubConnection.");try{await this._startInternal(),Wt.isBrowser&&window.document.addEventListener("freeze",this._freezeEventListener),this._connectionState=hn.Connected,this._connectionStarted=!0,this._logger.log(Ot.Debug,"HubConnection connected successfully.")}catch(e){return this._connectionState=hn.Disconnected,this._logger.log(Ot.Debug,`HubConnection failed to start successfully because of error '${e}'.`),Promise.reject(e)}}async _startInternal(){this._stopDuringStartError=void 0,this._receivedHandshakeResponse=!1;const e=new Promise(((e,t)=>{this._handshakeResolver=e,this._handshakeRejecter=t}));await this.connection.start(this._protocol.transferFormat);try{let t=this._protocol.version;this.connection.features.reconnect||(t=1);const n={protocol:this._protocol.name,version:t};if(this._logger.log(Ot.Debug,"Sending handshake request."),await this._sendMessage(this._handshakeProtocol.writeHandshakeRequest(n)),this._logger.log(Ot.Information,`Using HubProtocol '${this._protocol.name}'.`),this._cleanupTimeout(),this._resetTimeoutPeriod(),this._resetKeepAliveInterval(),await e,this._stopDuringStartError)throw this._stopDuringStartError;!!this.connection.features.reconnect&&(this._messageBuffer=new un(this._protocol,this.connection,this._statefulReconnectBufferSize),this.connection.features.disconnected=this._messageBuffer._disconnected.bind(this._messageBuffer),this.connection.features.resend=()=>{if(this._messageBuffer)return this._messageBuffer._resend()}),this.connection.features.inherentKeepAlive||await this._sendMessage(this._cachedPingMessage)}catch(e){throw this._logger.log(Ot.Debug,`Hub handshake failed with error '${e}' during start(). Stopping HubConnection.`),this._cleanupTimeout(),this._cleanupPingTimer(),await this.connection.stop(e),e}}async stop(){const e=this._startPromise;this.connection.features.reconnect=!1,this._stopPromise=this._stopInternal(),await this._stopPromise;try{await e}catch(e){}}_stopInternal(e){if(this._connectionState===hn.Disconnected)return this._logger.log(Ot.Debug,`Call to HubConnection.stop(${e}) ignored because it is already in the disconnected state.`),Promise.resolve();if(this._connectionState===hn.Disconnecting)return this._logger.log(Ot.Debug,`Call to HttpConnection.stop(${e}) ignored because the connection is already in the disconnecting state.`),this._stopPromise;const t=this._connectionState;return this._connectionState=hn.Disconnecting,this._logger.log(Ot.Debug,"Stopping HubConnection."),this._reconnectDelayHandle?(this._logger.log(Ot.Debug,"Connection stopped during reconnect delay. Done reconnecting."),clearTimeout(this._reconnectDelayHandle),this._reconnectDelayHandle=void 0,this._completeClose(),Promise.resolve()):(t===hn.Connected&&this._sendCloseMessage(),this._cleanupTimeout(),this._cleanupPingTimer(),this._stopDuringStartError=e||new nn("The connection was stopped before the hub handshake could complete."),this.connection.stop(e))}async _sendCloseMessage(){try{await this._sendWithProtocol(this._createCloseMessage())}catch{}}stream(e,...t){const[n,o]=this._replaceStreamingParams(t),r=this._createStreamInvocation(e,t,o);let i;const s=new dn;return s.cancelCallback=()=>{const e=this._createCancelInvocation(r.invocationId);return delete this._callbacks[r.invocationId],i.then((()=>this._sendWithProtocol(e)))},this._callbacks[r.invocationId]=(e,t)=>{t?s.error(t):e&&(e.type===ln.Completion?e.error?s.error(new Error(e.error)):s.complete():s.next(e.item))},i=this._sendWithProtocol(r).catch((e=>{s.error(e),delete this._callbacks[r.invocationId]})),this._launchStreams(n,i),s}_sendMessage(e){return this._resetKeepAliveInterval(),this.connection.send(e)}_sendWithProtocol(e){return this._messageBuffer?this._messageBuffer._send(e):this._sendMessage(this._protocol.writeMessage(e))}send(e,...t){const[n,o]=this._replaceStreamingParams(t),r=this._sendWithProtocol(this._createInvocation(e,t,!0,o));return this._launchStreams(n,r),r}invoke(e,...t){const[n,o]=this._replaceStreamingParams(t),r=this._createInvocation(e,t,!1,o);return new Promise(((e,t)=>{this._callbacks[r.invocationId]=(n,o)=>{o?t(o):n&&(n.type===ln.Completion?n.error?t(new Error(n.error)):e(n.result):t(new Error(`Unexpected message type: ${n.type}`)))};const o=this._sendWithProtocol(r).catch((e=>{t(e),delete this._callbacks[r.invocationId]}));this._launchStreams(n,o)}))}on(e,t){e&&t&&(e=e.toLowerCase(),this._methods[e]||(this._methods[e]=[]),-1===this._methods[e].indexOf(t)&&this._methods[e].push(t))}off(e,t){if(!e)return;e=e.toLowerCase();const n=this._methods[e];if(n)if(t){const o=n.indexOf(t);-1!==o&&(n.splice(o,1),0===n.length&&delete this._methods[e])}else delete this._methods[e]}onclose(e){e&&this._closedCallbacks.push(e)}onreconnecting(e){e&&this._reconnectingCallbacks.push(e)}onreconnected(e){e&&this._reconnectedCallbacks.push(e)}_processIncomingData(e){if(this._cleanupTimeout(),this._receivedHandshakeResponse||(e=this._processHandshakeResponse(e),this._receivedHandshakeResponse=!0),e){const t=this._protocol.parseMessages(e,this._logger);for(const e of t)if(!this._messageBuffer||this._messageBuffer._shouldProcessMessage(e))switch(e.type){case ln.Invocation:this._invokeClientMethod(e);break;case ln.StreamItem:case ln.Completion:{const t=this._callbacks[e.invocationId];if(t){e.type===ln.Completion&&delete this._callbacks[e.invocationId];try{t(e)}catch(e){this._logger.log(Ot.Error,`Stream callback threw error: ${Qt(e)}`)}}break}case ln.Ping:break;case ln.Close:{this._logger.log(Ot.Information,"Close message received from server.");const t=e.error?new Error("Server returned an error on close: "+e.error):void 0;!0===e.allowReconnect?this.connection.stop(t):this._stopPromise=this._stopInternal(t);break}case ln.Ack:this._messageBuffer&&this._messageBuffer._ack(e);break;case ln.Sequence:this._messageBuffer&&this._messageBuffer._resetSequence(e);break;default:this._logger.log(Ot.Warning,`Invalid message type: ${e.type}.`)}}this._resetTimeoutPeriod()}_processHandshakeResponse(e){let t,n;try{[n,t]=this._handshakeProtocol.parseHandshakeResponse(e)}catch(e){const t="Error parsing handshake response: "+e;this._logger.log(Ot.Error,t);const n=new Error(t);throw this._handshakeRejecter(n),n}if(t.error){const e="Server returned handshake error: "+t.error;this._logger.log(Ot.Error,e);const n=new Error(e);throw this._handshakeRejecter(n),n}return this._logger.log(Ot.Debug,"Server handshake complete."),this._handshakeResolver(),n}_resetKeepAliveInterval(){this.connection.features.inherentKeepAlive||(this._nextKeepAlive=(new Date).getTime()+this.keepAliveIntervalInMilliseconds,this._cleanupPingTimer())}_resetTimeoutPeriod(){if(!(this.connection.features&&this.connection.features.inherentKeepAlive||(this._timeoutHandle=setTimeout((()=>this.serverTimeout()),this.serverTimeoutInMilliseconds),void 0!==this._pingServerHandle))){let e=this._nextKeepAlive-(new Date).getTime();e<0&&(e=0),this._pingServerHandle=setTimeout((async()=>{if(this._connectionState===hn.Connected)try{await this._sendMessage(this._cachedPingMessage)}catch{this._cleanupPingTimer()}}),e)}}serverTimeout(){this.connection.stop(new Error("Server timeout elapsed without receiving a message from the server."))}async _invokeClientMethod(e){const t=e.target.toLowerCase(),n=this._methods[t];if(!n)return this._logger.log(Ot.Warning,`No client method with the name '${t}' found.`),void(e.invocationId&&(this._logger.log(Ot.Warning,`No result given for '${t}' method and invocation ID '${e.invocationId}'.`),await this._sendWithProtocol(this._createCompletionMessage(e.invocationId,"Client didn't provide a result.",null))));const o=n.slice(),r=!!e.invocationId;let i,s,a;for(const n of o)try{const o=i;i=await n.apply(this,e.arguments),r&&i&&o&&(this._logger.log(Ot.Error,`Multiple results provided for '${t}'. Sending error to server.`),a=this._createCompletionMessage(e.invocationId,"Client provided multiple results.",null)),s=void 0}catch(e){s=e,this._logger.log(Ot.Error,`A callback for the method '${t}' threw error '${e}'.`)}a?await this._sendWithProtocol(a):r?(s?a=this._createCompletionMessage(e.invocationId,`${s}`,null):void 0!==i?a=this._createCompletionMessage(e.invocationId,null,i):(this._logger.log(Ot.Warning,`No result given for '${t}' method and invocation ID '${e.invocationId}'.`),a=this._createCompletionMessage(e.invocationId,"Client didn't provide a result.",null)),await this._sendWithProtocol(a)):i&&this._logger.log(Ot.Error,`Result given for '${t}' method but server is not expecting a result.`)}_connectionClosed(e){this._logger.log(Ot.Debug,`HubConnection.connectionClosed(${e}) called while in state ${this._connectionState}.`),this._stopDuringStartError=this._stopDuringStartError||e||new nn("The underlying connection was closed before the hub handshake could complete."),this._handshakeResolver&&this._handshakeResolver(),this._cancelCallbacksWithError(e||new Error("Invocation canceled due to the underlying connection being closed.")),this._cleanupTimeout(),this._cleanupPingTimer(),this._connectionState===hn.Disconnecting?this._completeClose(e):this._connectionState===hn.Connected&&this._reconnectPolicy?this._reconnect(e):this._connectionState===hn.Connected&&this._completeClose(e)}_completeClose(e){if(this._connectionStarted){this._connectionState=hn.Disconnected,this._connectionStarted=!1,this._messageBuffer&&(this._messageBuffer._dispose(null!=e?e:new Error("Connection closed.")),this._messageBuffer=void 0),Wt.isBrowser&&window.document.removeEventListener("freeze",this._freezeEventListener);try{this._closedCallbacks.forEach((t=>t.apply(this,[e])))}catch(t){this._logger.log(Ot.Error,`An onclose callback called with error '${e}' threw error '${t}'.`)}}}async _reconnect(e){const t=Date.now();let n=0,o=void 0!==e?e:new Error("Attempting to reconnect due to a unknown error."),r=this._getNextRetryDelay(n++,0,o);if(null===r)return this._logger.log(Ot.Debug,"Connection not reconnecting because the IRetryPolicy returned null on the first reconnect attempt."),void this._completeClose(e);if(this._connectionState=hn.Reconnecting,e?this._logger.log(Ot.Information,`Connection reconnecting because of error '${e}'.`):this._logger.log(Ot.Information,"Connection reconnecting."),0!==this._reconnectingCallbacks.length){try{this._reconnectingCallbacks.forEach((t=>t.apply(this,[e])))}catch(t){this._logger.log(Ot.Error,`An onreconnecting callback called with error '${e}' threw error '${t}'.`)}if(this._connectionState!==hn.Reconnecting)return void this._logger.log(Ot.Debug,"Connection left the reconnecting state in onreconnecting callback. Done reconnecting.")}for(;null!==r;){if(this._logger.log(Ot.Information,`Reconnect attempt number ${n} will start in ${r} ms.`),await new Promise((e=>{this._reconnectDelayHandle=setTimeout(e,r)})),this._reconnectDelayHandle=void 0,this._connectionState!==hn.Reconnecting)return void this._logger.log(Ot.Debug,"Connection left the reconnecting state during reconnect delay. Done reconnecting.");try{if(await this._startInternal(),this._connectionState=hn.Connected,this._logger.log(Ot.Information,"HubConnection reconnected successfully."),0!==this._reconnectedCallbacks.length)try{this._reconnectedCallbacks.forEach((e=>e.apply(this,[this.connection.connectionId])))}catch(e){this._logger.log(Ot.Error,`An onreconnected callback called with connectionId '${this.connection.connectionId}; threw error '${e}'.`)}return}catch(e){if(this._logger.log(Ot.Information,`Reconnect attempt failed because of error '${e}'.`),this._connectionState!==hn.Reconnecting)return this._logger.log(Ot.Debug,`Connection moved to the '${this._connectionState}' from the reconnecting state during reconnect attempt. Done reconnecting.`),void(this._connectionState===hn.Disconnecting&&this._completeClose());o=e instanceof Error?e:new Error(e.toString()),r=this._getNextRetryDelay(n++,Date.now()-t,o)}}this._logger.log(Ot.Information,`Reconnect retries have been exhausted after ${Date.now()-t} ms and ${n} failed attempts. Connection disconnecting.`),this._completeClose()}_getNextRetryDelay(e,t,n){try{return this._reconnectPolicy.nextRetryDelayInMilliseconds({elapsedMilliseconds:t,previousRetryCount:e,retryReason:n})}catch(n){return this._logger.log(Ot.Error,`IRetryPolicy.nextRetryDelayInMilliseconds(${e}, ${t}) threw error '${n}'.`),null}}_cancelCallbacksWithError(e){const t=this._callbacks;this._callbacks={},Object.keys(t).forEach((n=>{const o=t[n];try{o(null,e)}catch(t){this._logger.log(Ot.Error,`Stream 'error' callback called with '${e}' threw error: ${Qt(t)}`)}}))}_cleanupPingTimer(){this._pingServerHandle&&(clearTimeout(this._pingServerHandle),this._pingServerHandle=void 0)}_cleanupTimeout(){this._timeoutHandle&&clearTimeout(this._timeoutHandle)}_createInvocation(e,t,n,o){if(n)return 0!==o.length?{arguments:t,streamIds:o,target:e,type:ln.Invocation}:{arguments:t,target:e,type:ln.Invocation};{const n=this._invocationId;return this._invocationId++,0!==o.length?{arguments:t,invocationId:n.toString(),streamIds:o,target:e,type:ln.Invocation}:{arguments:t,invocationId:n.toString(),target:e,type:ln.Invocation}}}_launchStreams(e,t){if(0!==e.length){t||(t=Promise.resolve());for(const n in e)e[n].subscribe({complete:()=>{t=t.then((()=>this._sendWithProtocol(this._createCompletionMessage(n))))},error:e=>{let o;o=e instanceof Error?e.message:e&&e.toString?e.toString():"Unknown error",t=t.then((()=>this._sendWithProtocol(this._createCompletionMessage(n,o))))},next:e=>{t=t.then((()=>this._sendWithProtocol(this._createStreamItemMessage(n,e))))}})}}_replaceStreamingParams(e){const t=[],n=[];for(let o=0;o0)&&(t=!1,this._accessToken=await this._accessTokenFactory()),this._setAuthorizationHeader(e);const n=await this._innerClient.send(e);return t&&401===n.statusCode&&this._accessTokenFactory?(this._accessToken=await this._accessTokenFactory(),this._setAuthorizationHeader(e),await this._innerClient.send(e)):n}_setAuthorizationHeader(e){e.headers||(e.headers={}),this._accessToken?e.headers[vn.Authorization]=`Bearer ${this._accessToken}`:this._accessTokenFactory&&e.headers[vn.Authorization]&&delete e.headers[vn.Authorization]}getCookieString(e){return this._innerClient.getCookieString(e)}}class _n extends wn{constructor(e){super(),this._logger=e;const t={_fetchType:void 0,_jar:void 0};var o;o=t,"undefined"==typeof fetch&&(o._jar=new(n(628).CookieJar),"undefined"==typeof fetch?o._fetchType=n(200):o._fetchType=fetch,o._fetchType=n(203)(o._fetchType,o._jar),1)?(this._fetchType=t._fetchType,this._jar=t._jar):this._fetchType=fetch.bind(function(){if("undefined"!=typeof globalThis)return globalThis;if("undefined"!=typeof self)return self;if("undefined"!=typeof window)return window;if(void 0!==n.g)return n.g;throw new Error("could not find global")}()),this._abortControllerType=AbortController;const r={_abortControllerType:this._abortControllerType};(function(e){return"undefined"==typeof AbortController&&(e._abortControllerType=n(778),!0)})(r)&&(this._abortControllerType=r._abortControllerType)}async send(e){if(e.abortSignal&&e.abortSignal.aborted)throw new nn;if(!e.method)throw new Error("No method defined.");if(!e.url)throw new Error("No url defined.");const t=new this._abortControllerType;let n;e.abortSignal&&(e.abortSignal.onabort=()=>{t.abort(),n=new nn});let o,r=null;if(e.timeout){const o=e.timeout;r=setTimeout((()=>{t.abort(),this._logger.log(Ot.Warning,"Timeout from HTTP request."),n=new tn}),o)}""===e.content&&(e.content=void 0),e.content&&(e.headers=e.headers||{},zt(e.content)?e.headers["Content-Type"]="application/octet-stream":e.headers["Content-Type"]="text/plain;charset=UTF-8");try{o=await this._fetchType(e.url,{body:e.content,cache:"no-cache",credentials:!0===e.withCredentials?"include":"same-origin",headers:{"X-Requested-With":"XMLHttpRequest",...e.headers},method:e.method,mode:"cors",redirect:"follow",signal:t.signal})}catch(e){if(n)throw n;throw this._logger.log(Ot.Warning,`Error from HTTP request. ${e}.`),e}finally{r&&clearTimeout(r),e.abortSignal&&(e.abortSignal.onabort=null)}if(!o.ok){const e=await Sn(o,"text");throw new en(e||o.statusText,o.status)}const i=Sn(o,e.responseType),s=await i;return new yn(o.status,o.statusText,s)}getCookieString(e){return""}}function Sn(e,t){let n;switch(t){case"arraybuffer":n=e.arrayBuffer();break;case"text":default:n=e.text();break;case"blob":case"document":case"json":throw new Error(`${t} is not supported.`)}return n}class Cn extends wn{constructor(e){super(),this._logger=e}send(e){return e.abortSignal&&e.abortSignal.aborted?Promise.reject(new nn):e.method?e.url?new Promise(((t,n)=>{const o=new XMLHttpRequest;o.open(e.method,e.url,!0),o.withCredentials=void 0===e.withCredentials||e.withCredentials,o.setRequestHeader("X-Requested-With","XMLHttpRequest"),""===e.content&&(e.content=void 0),e.content&&(zt(e.content)?o.setRequestHeader("Content-Type","application/octet-stream"):o.setRequestHeader("Content-Type","text/plain;charset=UTF-8"));const r=e.headers;r&&Object.keys(r).forEach((e=>{o.setRequestHeader(e,r[e])})),e.responseType&&(o.responseType=e.responseType),e.abortSignal&&(e.abortSignal.onabort=()=>{o.abort(),n(new nn)}),e.timeout&&(o.timeout=e.timeout),o.onload=()=>{e.abortSignal&&(e.abortSignal.onabort=null),o.status>=200&&o.status<300?t(new yn(o.status,o.statusText,o.response||o.responseText)):n(new en(o.response||o.responseText||o.statusText,o.status))},o.onerror=()=>{this._logger.log(Ot.Warning,`Error from HTTP request. ${o.status}: ${o.statusText}.`),n(new en(o.statusText,o.status))},o.ontimeout=()=>{this._logger.log(Ot.Warning,"Timeout from HTTP request."),n(new tn)},o.send(e.content)})):Promise.reject(new Error("No url defined.")):Promise.reject(new Error("No method defined."))}}class En extends wn{constructor(e){if(super(),"undefined"!=typeof fetch)this._httpClient=new _n(e);else{if("undefined"==typeof XMLHttpRequest)throw new Error("No usable HttpClient found.");this._httpClient=new Cn(e)}}send(e){return e.abortSignal&&e.abortSignal.aborted?Promise.reject(new nn):e.method?e.url?this._httpClient.send(e):Promise.reject(new Error("No url defined.")):Promise.reject(new Error("No method defined."))}getCookieString(e){return this._httpClient.getCookieString(e)}}var In,kn;!function(e){e[e.None=0]="None",e[e.WebSockets=1]="WebSockets",e[e.ServerSentEvents=2]="ServerSentEvents",e[e.LongPolling=4]="LongPolling"}(In||(In={})),function(e){e[e.Text=1]="Text",e[e.Binary=2]="Binary"}(kn||(kn={}));class Tn{constructor(){this._isAborted=!1,this.onabort=null}abort(){this._isAborted||(this._isAborted=!0,this.onabort&&this.onabort())}get signal(){return this}get aborted(){return this._isAborted}}class Rn{get pollAborted(){return this._pollAbort.aborted}constructor(e,t,n){this._httpClient=e,this._logger=t,this._pollAbort=new Tn,this._options=n,this._running=!1,this.onreceive=null,this.onclose=null}async connect(e,t){if(Ht.isRequired(e,"url"),Ht.isRequired(t,"transferFormat"),Ht.isIn(t,kn,"transferFormat"),this._url=e,this._logger.log(Ot.Trace,"(LongPolling transport) Connecting."),t===kn.Binary&&"undefined"!=typeof XMLHttpRequest&&"string"!=typeof(new XMLHttpRequest).responseType)throw new Error("Binary protocols over XmlHttpRequest not implementing advanced features are not supported.");const[n,o]=Vt(),r={[n]:o,...this._options.headers},i={abortSignal:this._pollAbort.signal,headers:r,timeout:1e5,withCredentials:this._options.withCredentials};t===kn.Binary&&(i.responseType="arraybuffer");const s=`${e}&_=${Date.now()}`;this._logger.log(Ot.Trace,`(LongPolling transport) polling: ${s}.`);const a=await this._httpClient.get(s,i);200!==a.statusCode?(this._logger.log(Ot.Error,`(LongPolling transport) Unexpected response code: ${a.statusCode}.`),this._closeError=new en(a.statusText||"",a.statusCode),this._running=!1):this._running=!0,this._receiving=this._poll(this._url,i)}async _poll(e,t){try{for(;this._running;)try{const n=`${e}&_=${Date.now()}`;this._logger.log(Ot.Trace,`(LongPolling transport) polling: ${n}.`);const o=await this._httpClient.get(n,t);204===o.statusCode?(this._logger.log(Ot.Information,"(LongPolling transport) Poll terminated by server."),this._running=!1):200!==o.statusCode?(this._logger.log(Ot.Error,`(LongPolling transport) Unexpected response code: ${o.statusCode}.`),this._closeError=new en(o.statusText||"",o.statusCode),this._running=!1):o.content?(this._logger.log(Ot.Trace,`(LongPolling transport) data received. ${jt(o.content,this._options.logMessageContent)}.`),this.onreceive&&this.onreceive(o.content)):this._logger.log(Ot.Trace,"(LongPolling transport) Poll timed out, reissuing.")}catch(e){this._running?e instanceof tn?this._logger.log(Ot.Trace,"(LongPolling transport) Poll timed out, reissuing."):(this._closeError=e,this._running=!1):this._logger.log(Ot.Trace,`(LongPolling transport) Poll errored after shutdown: ${e.message}`)}}finally{this._logger.log(Ot.Trace,"(LongPolling transport) Polling complete."),this.pollAborted||this._raiseOnClose()}}async send(e){return this._running?qt(this._logger,"LongPolling",this._httpClient,this._url,e,this._options):Promise.reject(new Error("Cannot send until the transport is connected"))}async stop(){this._logger.log(Ot.Trace,"(LongPolling transport) Stopping polling."),this._running=!1,this._pollAbort.abort();try{await this._receiving,this._logger.log(Ot.Trace,`(LongPolling transport) sending DELETE request to ${this._url}.`);const e={},[t,n]=Vt();e[t]=n;const o={headers:{...e,...this._options.headers},timeout:this._options.timeout,withCredentials:this._options.withCredentials};let r;try{await this._httpClient.delete(this._url,o)}catch(e){r=e}r?r instanceof en&&(404===r.statusCode?this._logger.log(Ot.Trace,"(LongPolling transport) A 404 response was returned from sending a DELETE request."):this._logger.log(Ot.Trace,`(LongPolling transport) Error sending a DELETE request: ${r}`)):this._logger.log(Ot.Trace,"(LongPolling transport) DELETE request accepted.")}finally{this._logger.log(Ot.Trace,"(LongPolling transport) Stop finished."),this._raiseOnClose()}}_raiseOnClose(){if(this.onclose){let e="(LongPolling transport) Firing onclose event.";this._closeError&&(e+=" Error: "+this._closeError),this._logger.log(Ot.Trace,e),this.onclose(this._closeError)}}}class Dn{constructor(e,t,n,o){this._httpClient=e,this._accessToken=t,this._logger=n,this._options=o,this.onreceive=null,this.onclose=null}async connect(e,t){return Ht.isRequired(e,"url"),Ht.isRequired(t,"transferFormat"),Ht.isIn(t,kn,"transferFormat"),this._logger.log(Ot.Trace,"(SSE transport) Connecting."),this._url=e,this._accessToken&&(e+=(e.indexOf("?")<0?"?":"&")+`access_token=${encodeURIComponent(this._accessToken)}`),new Promise(((n,o)=>{let r,i=!1;if(t===kn.Text){if(Wt.isBrowser||Wt.isWebWorker)r=new this._options.EventSource(e,{withCredentials:this._options.withCredentials});else{const t=this._httpClient.getCookieString(e),n={};n.Cookie=t;const[o,i]=Vt();n[o]=i,r=new this._options.EventSource(e,{withCredentials:this._options.withCredentials,headers:{...n,...this._options.headers}})}try{r.onmessage=e=>{if(this.onreceive)try{this._logger.log(Ot.Trace,`(SSE transport) data received. ${jt(e.data,this._options.logMessageContent)}.`),this.onreceive(e.data)}catch(e){return void this._close(e)}},r.onerror=e=>{i?this._close():o(new Error("EventSource failed to connect. The connection could not be found on the server, either the connection ID is not present on the server, or a proxy is refusing/buffering the connection. If you have multiple servers check that sticky sessions are enabled."))},r.onopen=()=>{this._logger.log(Ot.Information,`SSE connected to ${this._url}`),this._eventSource=r,i=!0,n()}}catch(e){return void o(e)}}else o(new Error("The Server-Sent Events transport only supports the 'Text' transfer format"))}))}async send(e){return this._eventSource?qt(this._logger,"SSE",this._httpClient,this._url,e,this._options):Promise.reject(new Error("Cannot send until the transport is connected"))}stop(){return this._close(),Promise.resolve()}_close(e){this._eventSource&&(this._eventSource.close(),this._eventSource=void 0,this.onclose&&this.onclose(e))}}class An{constructor(e,t,n,o,r,i){this._logger=n,this._accessTokenFactory=t,this._logMessageContent=o,this._webSocketConstructor=r,this._httpClient=e,this.onreceive=null,this.onclose=null,this._headers=i}async connect(e,t){let n;return Ht.isRequired(e,"url"),Ht.isRequired(t,"transferFormat"),Ht.isIn(t,kn,"transferFormat"),this._logger.log(Ot.Trace,"(WebSockets transport) Connecting."),this._accessTokenFactory&&(n=await this._accessTokenFactory()),new Promise(((o,r)=>{let i;e=e.replace(/^http/,"ws");const s=this._httpClient.getCookieString(e);let a=!1;if(Wt.isReactNative){const t={},[o,r]=Vt();t[o]=r,n&&(t[vn.Authorization]=`Bearer ${n}`),s&&(t[vn.Cookie]=s),i=new this._webSocketConstructor(e,void 0,{headers:{...t,...this._headers}})}else n&&(e+=(e.indexOf("?")<0?"?":"&")+`access_token=${encodeURIComponent(n)}`);i||(i=new this._webSocketConstructor(e)),t===kn.Binary&&(i.binaryType="arraybuffer"),i.onopen=t=>{this._logger.log(Ot.Information,`WebSocket connected to ${e}.`),this._webSocket=i,a=!0,o()},i.onerror=e=>{let t=null;t="undefined"!=typeof ErrorEvent&&e instanceof ErrorEvent?e.error:"There was an error with the transport",this._logger.log(Ot.Information,`(WebSockets transport) ${t}.`)},i.onmessage=e=>{if(this._logger.log(Ot.Trace,`(WebSockets transport) data received. ${jt(e.data,this._logMessageContent)}.`),this.onreceive)try{this.onreceive(e.data)}catch(e){return void this._close(e)}},i.onclose=e=>{if(a)this._close(e);else{let t=null;t="undefined"!=typeof ErrorEvent&&e instanceof ErrorEvent?e.error:"WebSocket failed to connect. The connection could not be found on the server, either the endpoint may not be a SignalR endpoint, the connection ID is not present on the server, or there is a proxy blocking WebSockets. If you have multiple servers check that sticky sessions are enabled.",r(new Error(t))}}}))}send(e){return this._webSocket&&this._webSocket.readyState===this._webSocketConstructor.OPEN?(this._logger.log(Ot.Trace,`(WebSockets transport) sending data. ${jt(e,this._logMessageContent)}.`),this._webSocket.send(e),Promise.resolve()):Promise.reject("WebSocket is not in the OPEN state")}stop(){return this._webSocket&&this._close(void 0),Promise.resolve()}_close(e){this._webSocket&&(this._webSocket.onclose=()=>{},this._webSocket.onmessage=()=>{},this._webSocket.onerror=()=>{},this._webSocket.close(),this._webSocket=void 0),this._logger.log(Ot.Trace,"(WebSockets transport) socket closed."),this.onclose&&(!this._isCloseEvent(e)||!1!==e.wasClean&&1e3===e.code?e instanceof Error?this.onclose(e):this.onclose():this.onclose(new Error(`WebSocket closed with status code: ${e.code} (${e.reason||"no reason given"}).`)))}_isCloseEvent(e){return e&&"boolean"==typeof e.wasClean&&"number"==typeof e.code}}class xn{constructor(e,t={}){if(this._stopPromiseResolver=()=>{},this.features={},this._negotiateVersion=1,Ht.isRequired(e,"url"),this._logger=function(e){return void 0===e?new Kt(Ot.Information):null===e?Ft.instance:void 0!==e.log?e:new Kt(e)}(t.logger),this.baseUrl=this._resolveUrl(e),(t=t||{}).logMessageContent=void 0!==t.logMessageContent&&t.logMessageContent,"boolean"!=typeof t.withCredentials&&void 0!==t.withCredentials)throw new Error("withCredentials option was not a 'boolean' or 'undefined' value");t.withCredentials=void 0===t.withCredentials||t.withCredentials,t.timeout=void 0===t.timeout?1e5:t.timeout,"undefined"==typeof WebSocket||t.WebSocket||(t.WebSocket=WebSocket),"undefined"==typeof EventSource||t.EventSource||(t.EventSource=EventSource),this._httpClient=new bn(t.httpClient||new En(this._logger),t.accessTokenFactory),this._connectionState="Disconnected",this._connectionStarted=!1,this._options=t,this.onreceive=null,this.onclose=null}async start(e){if(e=e||kn.Binary,Ht.isIn(e,kn,"transferFormat"),this._logger.log(Ot.Debug,`Starting connection with transfer format '${kn[e]}'.`),"Disconnected"!==this._connectionState)return Promise.reject(new Error("Cannot start an HttpConnection that is not in the 'Disconnected' state."));if(this._connectionState="Connecting",this._startInternalPromise=this._startInternal(e),await this._startInternalPromise,"Disconnecting"===this._connectionState){const e="Failed to start the HttpConnection before stop() was called.";return this._logger.log(Ot.Error,e),await this._stopPromise,Promise.reject(new nn(e))}if("Connected"!==this._connectionState){const e="HttpConnection.startInternal completed gracefully but didn't enter the connection into the connected state!";return this._logger.log(Ot.Error,e),Promise.reject(new nn(e))}this._connectionStarted=!0}send(e){return"Connected"!==this._connectionState?Promise.reject(new Error("Cannot send data if the connection is not in the 'Connected' State.")):(this._sendQueue||(this._sendQueue=new Nn(this.transport)),this._sendQueue.send(e))}async stop(e){return"Disconnected"===this._connectionState?(this._logger.log(Ot.Debug,`Call to HttpConnection.stop(${e}) ignored because the connection is already in the disconnected state.`),Promise.resolve()):"Disconnecting"===this._connectionState?(this._logger.log(Ot.Debug,`Call to HttpConnection.stop(${e}) ignored because the connection is already in the disconnecting state.`),this._stopPromise):(this._connectionState="Disconnecting",this._stopPromise=new Promise((e=>{this._stopPromiseResolver=e})),await this._stopInternal(e),void await this._stopPromise)}async _stopInternal(e){this._stopError=e;try{await this._startInternalPromise}catch(e){}if(this.transport){try{await this.transport.stop()}catch(e){this._logger.log(Ot.Error,`HttpConnection.transport.stop() threw error '${e}'.`),this._stopConnection()}this.transport=void 0}else this._logger.log(Ot.Debug,"HttpConnection.transport is undefined in HttpConnection.stop() because start() failed.")}async _startInternal(e){let t=this.baseUrl;this._accessTokenFactory=this._options.accessTokenFactory,this._httpClient._accessTokenFactory=this._accessTokenFactory;try{if(this._options.skipNegotiation){if(this._options.transport!==In.WebSockets)throw new Error("Negotiation can only be skipped when using the WebSocket transport directly.");this.transport=this._constructTransport(In.WebSockets),await this._startTransport(t,e)}else{let n=null,o=0;do{if(n=await this._getNegotiationResponse(t),"Disconnecting"===this._connectionState||"Disconnected"===this._connectionState)throw new nn("The connection was stopped during negotiation.");if(n.error)throw new Error(n.error);if(n.ProtocolVersion)throw new Error("Detected a connection attempt to an ASP.NET SignalR Server. This client only supports connecting to an ASP.NET Core SignalR Server. See https://aka.ms/signalr-core-differences for details.");if(n.url&&(t=n.url),n.accessToken){const e=n.accessToken;this._accessTokenFactory=()=>e,this._httpClient._accessToken=e,this._httpClient._accessTokenFactory=void 0}o++}while(n.url&&o<100);if(100===o&&n.url)throw new Error("Negotiate redirection limit exceeded.");await this._createTransport(t,this._options.transport,n,e)}this.transport instanceof Rn&&(this.features.inherentKeepAlive=!0),"Connecting"===this._connectionState&&(this._logger.log(Ot.Debug,"The HttpConnection connected successfully."),this._connectionState="Connected")}catch(e){return this._logger.log(Ot.Error,"Failed to start the connection: "+e),this._connectionState="Disconnected",this.transport=void 0,this._stopPromiseResolver(),Promise.reject(e)}}async _getNegotiationResponse(e){const t={},[n,o]=Vt();t[n]=o;const r=this._resolveNegotiateUrl(e);this._logger.log(Ot.Debug,`Sending negotiation request: ${r}.`);try{const e=await this._httpClient.post(r,{content:"",headers:{...t,...this._options.headers},timeout:this._options.timeout,withCredentials:this._options.withCredentials});if(200!==e.statusCode)return Promise.reject(new Error(`Unexpected status code returned from negotiate '${e.statusCode}'`));const n=JSON.parse(e.content);return(!n.negotiateVersion||n.negotiateVersion<1)&&(n.connectionToken=n.connectionId),n.useStatefulReconnect&&!0!==this._options._useStatefulReconnect?Promise.reject(new an("Client didn't negotiate Stateful Reconnect but the server did.")):n}catch(e){let t="Failed to complete negotiation with the server: "+e;return e instanceof en&&404===e.statusCode&&(t+=" Either this is not a SignalR endpoint or there is a proxy blocking the connection."),this._logger.log(Ot.Error,t),Promise.reject(new an(t))}}_createConnectUrl(e,t){return t?e+(-1===e.indexOf("?")?"?":"&")+`id=${t}`:e}async _createTransport(e,t,n,o){let r=this._createConnectUrl(e,n.connectionToken);if(this._isITransport(t))return this._logger.log(Ot.Debug,"Connection was provided an instance of ITransport, using that directly."),this.transport=t,await this._startTransport(r,o),void(this.connectionId=n.connectionId);const i=[],s=n.availableTransports||[];let a=n;for(const n of s){const s=this._resolveTransportOrError(n,t,o,!0===(null==a?void 0:a.useStatefulReconnect));if(s instanceof Error)i.push(`${n.transport} failed:`),i.push(s);else if(this._isITransport(s)){if(this.transport=s,!a){try{a=await this._getNegotiationResponse(e)}catch(e){return Promise.reject(e)}r=this._createConnectUrl(e,a.connectionToken)}try{return await this._startTransport(r,o),void(this.connectionId=a.connectionId)}catch(e){if(this._logger.log(Ot.Error,`Failed to start the transport '${n.transport}': ${e}`),a=void 0,i.push(new sn(`${n.transport} failed: ${e}`,In[n.transport])),"Connecting"!==this._connectionState){const e="Failed to select transport before stop() was called.";return this._logger.log(Ot.Debug,e),Promise.reject(new nn(e))}}}}return i.length>0?Promise.reject(new cn(`Unable to connect to the server with any of the available transports. ${i.join(" ")}`,i)):Promise.reject(new Error("None of the transports supported by the client are supported by the server."))}_constructTransport(e){switch(e){case In.WebSockets:if(!this._options.WebSocket)throw new Error("'WebSocket' is not supported in your environment.");return new An(this._httpClient,this._accessTokenFactory,this._logger,this._options.logMessageContent,this._options.WebSocket,this._options.headers||{});case In.ServerSentEvents:if(!this._options.EventSource)throw new Error("'EventSource' is not supported in your environment.");return new Dn(this._httpClient,this._httpClient._accessToken,this._logger,this._options);case In.LongPolling:return new Rn(this._httpClient,this._logger,this._options);default:throw new Error(`Unknown transport: ${e}.`)}}_startTransport(e,t){return this.transport.onreceive=this.onreceive,this.features.reconnect?this.transport.onclose=async n=>{let o=!1;if(this.features.reconnect){try{this.features.disconnected(),await this.transport.connect(e,t),await this.features.resend()}catch{o=!0}o&&this._stopConnection(n)}else this._stopConnection(n)}:this.transport.onclose=e=>this._stopConnection(e),this.transport.connect(e,t)}_resolveTransportOrError(e,t,n,o){const r=In[e.transport];if(null==r)return this._logger.log(Ot.Debug,`Skipping transport '${e.transport}' because it is not supported by this client.`),new Error(`Skipping transport '${e.transport}' because it is not supported by this client.`);if(!function(e,t){return!e||0!=(t&e)}(t,r))return this._logger.log(Ot.Debug,`Skipping transport '${In[r]}' because it was disabled by the client.`),new rn(`'${In[r]}' is disabled by the client.`,r);if(!(e.transferFormats.map((e=>kn[e])).indexOf(n)>=0))return this._logger.log(Ot.Debug,`Skipping transport '${In[r]}' because it does not support the requested transfer format '${kn[n]}'.`),new Error(`'${In[r]}' does not support ${kn[n]}.`);if(r===In.WebSockets&&!this._options.WebSocket||r===In.ServerSentEvents&&!this._options.EventSource)return this._logger.log(Ot.Debug,`Skipping transport '${In[r]}' because it is not supported in your environment.'`),new on(`'${In[r]}' is not supported in your environment.`,r);this._logger.log(Ot.Debug,`Selecting transport '${In[r]}'.`);try{return this.features.reconnect=r===In.WebSockets?o:void 0,this._constructTransport(r)}catch(e){return e}}_isITransport(e){return e&&"object"==typeof e&&"connect"in e}_stopConnection(e){if(this._logger.log(Ot.Debug,`HttpConnection.stopConnection(${e}) called while in state ${this._connectionState}.`),this.transport=void 0,e=this._stopError||e,this._stopError=void 0,"Disconnected"!==this._connectionState){if("Connecting"===this._connectionState)throw this._logger.log(Ot.Warning,`Call to HttpConnection.stopConnection(${e}) was ignored because the connection is still in the connecting state.`),new Error(`HttpConnection.stopConnection(${e}) was called while the connection is still in the connecting state.`);if("Disconnecting"===this._connectionState&&this._stopPromiseResolver(),e?this._logger.log(Ot.Error,`Connection disconnected with error '${e}'.`):this._logger.log(Ot.Information,"Connection disconnected."),this._sendQueue&&(this._sendQueue.stop().catch((e=>{this._logger.log(Ot.Error,`TransportSendQueue.stop() threw error '${e}'.`)})),this._sendQueue=void 0),this.connectionId=void 0,this._connectionState="Disconnected",this._connectionStarted){this._connectionStarted=!1;try{this.onclose&&this.onclose(e)}catch(t){this._logger.log(Ot.Error,`HttpConnection.onclose(${e}) threw error '${t}'.`)}}}else this._logger.log(Ot.Debug,`Call to HttpConnection.stopConnection(${e}) was ignored because the connection is already in the disconnected state.`)}_resolveUrl(e){if(0===e.lastIndexOf("https://",0)||0===e.lastIndexOf("http://",0))return e;if(!Wt.isBrowser)throw new Error(`Cannot resolve '${e}'.`);const t=window.document.createElement("a");return t.href=e,this._logger.log(Ot.Information,`Normalizing '${e}' to '${t.href}'.`),t.href}_resolveNegotiateUrl(e){const t=new URL(e);t.pathname.endsWith("/")?t.pathname+="negotiate":t.pathname+="/negotiate";const n=new URLSearchParams(t.searchParams);return n.has("negotiateVersion")||n.append("negotiateVersion",this._negotiateVersion.toString()),n.has("useStatefulReconnect")?"true"===n.get("useStatefulReconnect")&&(this._options._useStatefulReconnect=!0):!0===this._options._useStatefulReconnect&&n.append("useStatefulReconnect","true"),t.search=n.toString(),t.toString()}}class Nn{constructor(e){this._transport=e,this._buffer=[],this._executing=!0,this._sendBufferedData=new Pn,this._transportResult=new Pn,this._sendLoopPromise=this._sendLoop()}send(e){return this._bufferData(e),this._transportResult||(this._transportResult=new Pn),this._transportResult.promise}stop(){return this._executing=!1,this._sendBufferedData.resolve(),this._sendLoopPromise}_bufferData(e){if(this._buffer.length&&typeof this._buffer[0]!=typeof e)throw new Error(`Expected data to be of type ${typeof this._buffer} but was of type ${typeof e}`);this._buffer.push(e),this._sendBufferedData.resolve()}async _sendLoop(){for(;;){if(await this._sendBufferedData.promise,!this._executing){this._transportResult&&this._transportResult.reject("Connection stopped.");break}this._sendBufferedData=new Pn;const e=this._transportResult;this._transportResult=void 0;const t="string"==typeof this._buffer[0]?this._buffer.join(""):Nn._concatBuffers(this._buffer);this._buffer.length=0;try{await this._transport.send(t),e.resolve()}catch(t){e.reject(t)}}}static _concatBuffers(e){const t=e.map((e=>e.byteLength)).reduce(((e,t)=>e+t)),n=new Uint8Array(t);let o=0;for(const t of e)n.set(new Uint8Array(t),o),o+=t.byteLength;return n.buffer}}class Pn{constructor(){this.promise=new Promise(((e,t)=>[this._resolver,this._rejecter]=[e,t]))}resolve(){this._resolver()}reject(e){this._rejecter(e)}}class Mn{constructor(){this.name="json",this.version=2,this.transferFormat=kn.Text}parseMessages(e,t){if("string"!=typeof e)throw new Error("Invalid input for JSON hub protocol. Expected a string.");if(!e)return[];null===t&&(t=Ft.instance);const n=Bt.parse(e),o=[];for(const e of n){const n=JSON.parse(e);if("number"!=typeof n.type)throw new Error("Invalid payload.");switch(n.type){case ln.Invocation:this._isInvocationMessage(n);break;case ln.StreamItem:this._isStreamItemMessage(n);break;case ln.Completion:this._isCompletionMessage(n);break;case ln.Ping:case ln.Close:break;case ln.Ack:this._isAckMessage(n);break;case ln.Sequence:this._isSequenceMessage(n);break;default:t.log(Ot.Information,"Unknown message type '"+n.type+"' ignored.");continue}o.push(n)}return o}writeMessage(e){return Bt.write(JSON.stringify(e))}_isInvocationMessage(e){this._assertNotEmptyString(e.target,"Invalid payload for Invocation message."),void 0!==e.invocationId&&this._assertNotEmptyString(e.invocationId,"Invalid payload for Invocation message.")}_isStreamItemMessage(e){if(this._assertNotEmptyString(e.invocationId,"Invalid payload for StreamItem message."),void 0===e.item)throw new Error("Invalid payload for StreamItem message.")}_isCompletionMessage(e){if(e.result&&e.error)throw new Error("Invalid payload for Completion message.");!e.result&&e.error&&this._assertNotEmptyString(e.error,"Invalid payload for Completion message."),this._assertNotEmptyString(e.invocationId,"Invalid payload for Completion message.")}_isAckMessage(e){if("number"!=typeof e.sequenceId)throw new Error("Invalid SequenceId for Ack message.")}_isSequenceMessage(e){if("number"!=typeof e.sequenceId)throw new Error("Invalid SequenceId for Sequence message.")}_assertNotEmptyString(e,t){if("string"!=typeof e||""===e)throw new Error(t)}}const Un={trace:Ot.Trace,debug:Ot.Debug,info:Ot.Information,information:Ot.Information,warn:Ot.Warning,warning:Ot.Warning,error:Ot.Error,critical:Ot.Critical,none:Ot.None};class Ln{configureLogging(e){if(Ht.isRequired(e,"logging"),function(e){return void 0!==e.log}(e))this.logger=e;else if("string"==typeof e){const t=function(e){const t=Un[e.toLowerCase()];if(void 0!==t)return t;throw new Error(`Unknown log level: ${e}`)}(e);this.logger=new Kt(t)}else this.logger=new Kt(e);return this}withUrl(e,t){return Ht.isRequired(e,"url"),Ht.isNotEmpty(e,"url"),this.url=e,this.httpConnectionOptions="object"==typeof t?{...this.httpConnectionOptions,...t}:{...this.httpConnectionOptions,transport:t},this}withHubProtocol(e){return Ht.isRequired(e,"protocol"),this.protocol=e,this}withAutomaticReconnect(e){if(this.reconnectPolicy)throw new Error("A reconnectPolicy has already been set.");return e?Array.isArray(e)?this.reconnectPolicy=new mn(e):this.reconnectPolicy=e:this.reconnectPolicy=new mn,this}withServerTimeout(e){return Ht.isRequired(e,"milliseconds"),this._serverTimeoutInMilliseconds=e,this}withKeepAliveInterval(e){return Ht.isRequired(e,"milliseconds"),this._keepAliveIntervalInMilliseconds=e,this}withStatefulReconnect(e){return void 0===this.httpConnectionOptions&&(this.httpConnectionOptions={}),this.httpConnectionOptions._useStatefulReconnect=!0,this._statefulReconnectBufferSize=null==e?void 0:e.bufferSize,this}build(){const e=this.httpConnectionOptions||{};if(void 0===e.logger&&(e.logger=this.logger),!this.url)throw new Error("The 'HubConnectionBuilder.withUrl' method must be called before building the connection.");const t=new xn(this.url,e);return fn.create(t,this.logger||Ft.instance,this.protocol||new Mn,this.reconnectPolicy,this._serverTimeoutInMilliseconds,this._keepAliveIntervalInMilliseconds,this._statefulReconnectBufferSize)}}var Bn;!function(e){e[e.Default=0]="Default",e[e.Server=1]="Server",e[e.WebAssembly=2]="WebAssembly",e[e.WebView=3]="WebView"}(Bn||(Bn={}));var On,Fn,$n,Hn=4294967295;function Wn(e,t,n){var o=Math.floor(n/4294967296),r=n;e.setUint32(t,o),e.setUint32(t+4,r)}function jn(e,t){return 4294967296*e.getInt32(t)+e.getUint32(t+4)}var zn=("undefined"==typeof process||"never"!==(null===(On=null===process||void 0===process?void 0:process.env)||void 0===On?void 0:On.TEXT_ENCODING))&&"undefined"!=typeof TextEncoder&&"undefined"!=typeof TextDecoder;function qn(e){for(var t=e.length,n=0,o=0;o=55296&&r<=56319&&o65535&&(h-=65536,i.push(h>>>10&1023|55296),h=56320|1023&h),i.push(h)}else i.push(a);i.length>=4096&&(s+=String.fromCharCode.apply(String,i),i.length=0)}return i.length>0&&(s+=String.fromCharCode.apply(String,i)),s}var Gn,Yn=zn?new TextDecoder:null,Qn=zn?"undefined"!=typeof process&&"force"!==(null===($n=null===process||void 0===process?void 0:process.env)||void 0===$n?void 0:$n.TEXT_DECODER)?200:0:Hn,Zn=function(e,t){this.type=e,this.data=t},eo=(Gn=function(e,t){return Gn=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},Gn(e,t)},function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function n(){this.constructor=e}Gn(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}),to=function(e){function t(n){var o=e.call(this,n)||this,r=Object.create(t.prototype);return Object.setPrototypeOf(o,r),Object.defineProperty(o,"name",{configurable:!0,enumerable:!1,value:t.name}),o}return eo(t,e),t}(Error),no={type:-1,encode:function(e){var t,n,o,r;return e instanceof Date?function(e){var t,n=e.sec,o=e.nsec;if(n>=0&&o>=0&&n<=17179869183){if(0===o&&n<=4294967295){var r=new Uint8Array(4);return(t=new DataView(r.buffer)).setUint32(0,n),r}var i=n/4294967296,s=4294967295&n;return r=new Uint8Array(8),(t=new DataView(r.buffer)).setUint32(0,o<<2|3&i),t.setUint32(4,s),r}return r=new Uint8Array(12),(t=new DataView(r.buffer)).setUint32(0,o),Wn(t,4,n),r}((o=1e6*((t=e.getTime())-1e3*(n=Math.floor(t/1e3))),{sec:n+(r=Math.floor(o/1e9)),nsec:o-1e9*r})):null},decode:function(e){var t=function(e){var t=new DataView(e.buffer,e.byteOffset,e.byteLength);switch(e.byteLength){case 4:return{sec:t.getUint32(0),nsec:0};case 8:var n=t.getUint32(0);return{sec:4294967296*(3&n)+t.getUint32(4),nsec:n>>>2};case 12:return{sec:jn(t,4),nsec:t.getUint32(0)};default:throw new to("Unrecognized data size for timestamp (expected 4, 8, or 12): ".concat(e.length))}}(e);return new Date(1e3*t.sec+t.nsec/1e6)}},oo=function(){function e(){this.builtInEncoders=[],this.builtInDecoders=[],this.encoders=[],this.decoders=[],this.register(no)}return e.prototype.register=function(e){var t=e.type,n=e.encode,o=e.decode;if(t>=0)this.encoders[t]=n,this.decoders[t]=o;else{var r=1+t;this.builtInEncoders[r]=n,this.builtInDecoders[r]=o}},e.prototype.tryToEncode=function(e,t){for(var n=0;nthis.maxDepth)throw new Error("Too deep objects in depth ".concat(t));null==e?this.encodeNil():"boolean"==typeof e?this.encodeBoolean(e):"number"==typeof e?this.encodeNumber(e):"string"==typeof e?this.encodeString(e):this.encodeObject(e,t)},e.prototype.ensureBufferSizeToWrite=function(e){var t=this.pos+e;this.view.byteLength=0?e<128?this.writeU8(e):e<256?(this.writeU8(204),this.writeU8(e)):e<65536?(this.writeU8(205),this.writeU16(e)):e<4294967296?(this.writeU8(206),this.writeU32(e)):(this.writeU8(207),this.writeU64(e)):e>=-32?this.writeU8(224|e+32):e>=-128?(this.writeU8(208),this.writeI8(e)):e>=-32768?(this.writeU8(209),this.writeI16(e)):e>=-2147483648?(this.writeU8(210),this.writeI32(e)):(this.writeU8(211),this.writeI64(e)):this.forceFloat32?(this.writeU8(202),this.writeF32(e)):(this.writeU8(203),this.writeF64(e))},e.prototype.writeStringHeader=function(e){if(e<32)this.writeU8(160+e);else if(e<256)this.writeU8(217),this.writeU8(e);else if(e<65536)this.writeU8(218),this.writeU16(e);else{if(!(e<4294967296))throw new Error("Too long string: ".concat(e," bytes in UTF-8"));this.writeU8(219),this.writeU32(e)}},e.prototype.encodeString=function(e){if(e.length>Kn){var t=qn(e);this.ensureBufferSizeToWrite(5+t),this.writeStringHeader(t),Vn(e,this.bytes,this.pos),this.pos+=t}else t=qn(e),this.ensureBufferSizeToWrite(5+t),this.writeStringHeader(t),function(e,t,n){for(var o=e.length,r=n,i=0;i>6&31|192;else{if(s>=55296&&s<=56319&&i>12&15|224,t[r++]=s>>6&63|128):(t[r++]=s>>18&7|240,t[r++]=s>>12&63|128,t[r++]=s>>6&63|128)}t[r++]=63&s|128}else t[r++]=s}}(e,this.bytes,this.pos),this.pos+=t},e.prototype.encodeObject=function(e,t){var n=this.extensionCodec.tryToEncode(e,this.context);if(null!=n)this.encodeExtension(n);else if(Array.isArray(e))this.encodeArray(e,t);else if(ArrayBuffer.isView(e))this.encodeBinary(e);else{if("object"!=typeof e)throw new Error("Unrecognized object: ".concat(Object.prototype.toString.apply(e)));this.encodeMap(e,t)}},e.prototype.encodeBinary=function(e){var t=e.byteLength;if(t<256)this.writeU8(196),this.writeU8(t);else if(t<65536)this.writeU8(197),this.writeU16(t);else{if(!(t<4294967296))throw new Error("Too large binary: ".concat(t));this.writeU8(198),this.writeU32(t)}var n=ro(e);this.writeU8a(n)},e.prototype.encodeArray=function(e,t){var n=e.length;if(n<16)this.writeU8(144+n);else if(n<65536)this.writeU8(220),this.writeU16(n);else{if(!(n<4294967296))throw new Error("Too large array: ".concat(n));this.writeU8(221),this.writeU32(n)}for(var o=0,r=e;o0&&e<=this.maxKeyLength},e.prototype.find=function(e,t,n){e:for(var o=0,r=this.caches[n-1];o=this.maxLengthPerKey?n[Math.random()*n.length|0]=o:n.push(o)},e.prototype.decode=function(e,t,n){var o=this.find(e,t,n);if(null!=o)return this.hit++,o;this.miss++;var r=Xn(e,t,n),i=Uint8Array.prototype.slice.call(e,t,t+n);return this.store(i,r),r},e}(),co=function(e,t){var n,o,r,i,s={label:0,sent:function(){if(1&r[0])throw r[1];return r[1]},trys:[],ops:[]};return i={next:a(0),throw:a(1),return:a(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function a(i){return function(a){return function(i){if(n)throw new TypeError("Generator is already executing.");for(;s;)try{if(n=1,o&&(r=2&i[0]?o.return:i[0]?o.throw||((r=o.return)&&r.call(o),0):o.next)&&!(r=r.call(o,i[1])).done)return r;switch(o=0,r&&(i=[2&i[0],r.value]),i[0]){case 0:case 1:r=i;break;case 4:return s.label++,{value:i[1],done:!1};case 5:s.label++,o=i[1],i=[0];continue;case 7:i=s.ops.pop(),s.trys.pop();continue;default:if(!((r=(r=s.trys).length>0&&r[r.length-1])||6!==i[0]&&2!==i[0])){s=0;continue}if(3===i[0]&&(!r||i[1]>r[0]&&i[1]=e},e.prototype.createExtraByteError=function(e){var t=this.view,n=this.pos;return new RangeError("Extra ".concat(t.byteLength-n," of ").concat(t.byteLength," byte(s) found at buffer[").concat(e,"]"))},e.prototype.decode=function(e){this.reinitializeState(),this.setBuffer(e);var t=this.doDecodeSync();if(this.hasRemaining(1))throw this.createExtraByteError(this.pos);return t},e.prototype.decodeMulti=function(e){return co(this,(function(t){switch(t.label){case 0:this.reinitializeState(),this.setBuffer(e),t.label=1;case 1:return this.hasRemaining(1)?[4,this.doDecodeSync()]:[3,3];case 2:return t.sent(),[3,1];case 3:return[2]}}))},e.prototype.decodeAsync=function(e){var t,n,o,r,i,s,a;return i=this,void 0,a=function(){var i,s,a,c,l,h,d,u;return co(this,(function(p){switch(p.label){case 0:i=!1,p.label=1;case 1:p.trys.push([1,6,7,12]),t=lo(e),p.label=2;case 2:return[4,t.next()];case 3:if((n=p.sent()).done)return[3,5];if(a=n.value,i)throw this.createExtraByteError(this.totalPos);this.appendBuffer(a);try{s=this.doDecodeSync(),i=!0}catch(e){if(!(e instanceof fo))throw e}this.totalPos+=this.pos,p.label=4;case 4:return[3,2];case 5:return[3,12];case 6:return c=p.sent(),o={error:c},[3,12];case 7:return p.trys.push([7,,10,11]),n&&!n.done&&(r=t.return)?[4,r.call(t)]:[3,9];case 8:p.sent(),p.label=9;case 9:return[3,11];case 10:if(o)throw o.error;return[7];case 11:return[7];case 12:if(i){if(this.hasRemaining(1))throw this.createExtraByteError(this.totalPos);return[2,s]}throw h=(l=this).headByte,d=l.pos,u=l.totalPos,new RangeError("Insufficient data in parsing ".concat(so(h)," at ").concat(u," (").concat(d," in the current buffer)"))}}))},new((s=void 0)||(s=Promise))((function(e,t){function n(e){try{r(a.next(e))}catch(e){t(e)}}function o(e){try{r(a.throw(e))}catch(e){t(e)}}function r(t){var r;t.done?e(t.value):(r=t.value,r instanceof s?r:new s((function(e){e(r)}))).then(n,o)}r((a=a.apply(i,[])).next())}))},e.prototype.decodeArrayStream=function(e){return this.decodeMultiAsync(e,!0)},e.prototype.decodeStream=function(e){return this.decodeMultiAsync(e,!1)},e.prototype.decodeMultiAsync=function(e,t){return function(n,o,r){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var i,s=function(){var n,o,r,i,s,a,c,l,h;return co(this,(function(d){switch(d.label){case 0:n=t,o=-1,d.label=1;case 1:d.trys.push([1,13,14,19]),r=lo(e),d.label=2;case 2:return[4,ho(r.next())];case 3:if((i=d.sent()).done)return[3,12];if(s=i.value,t&&0===o)throw this.createExtraByteError(this.totalPos);this.appendBuffer(s),n&&(o=this.readArraySize(),n=!1,this.complete()),d.label=4;case 4:d.trys.push([4,9,,10]),d.label=5;case 5:return[4,ho(this.doDecodeSync())];case 6:return[4,d.sent()];case 7:return d.sent(),0==--o?[3,8]:[3,5];case 8:return[3,10];case 9:if(!((a=d.sent())instanceof fo))throw a;return[3,10];case 10:this.totalPos+=this.pos,d.label=11;case 11:return[3,2];case 12:return[3,19];case 13:return c=d.sent(),l={error:c},[3,19];case 14:return d.trys.push([14,,17,18]),i&&!i.done&&(h=r.return)?[4,ho(h.call(r))]:[3,16];case 15:d.sent(),d.label=16;case 16:return[3,18];case 17:if(l)throw l.error;return[7];case 18:return[7];case 19:return[2]}}))}.apply(n,o||[]),a=[];return i={},c("next"),c("throw"),c("return"),i[Symbol.asyncIterator]=function(){return this},i;function c(e){s[e]&&(i[e]=function(t){return new Promise((function(n,o){a.push([e,t,n,o])>1||l(e,t)}))})}function l(e,t){try{(n=s[e](t)).value instanceof ho?Promise.resolve(n.value.v).then(h,d):u(a[0][2],n)}catch(e){u(a[0][3],e)}var n}function h(e){l("next",e)}function d(e){l("throw",e)}function u(e,t){e(t),a.shift(),a.length&&l(a[0][0],a[0][1])}}(this,arguments)},e.prototype.doDecodeSync=function(){e:for(;;){var e=this.readHeadByte(),t=void 0;if(e>=224)t=e-256;else if(e<192)if(e<128)t=e;else if(e<144){if(0!=(o=e-128)){this.pushMapState(o),this.complete();continue e}t={}}else if(e<160){if(0!=(o=e-144)){this.pushArrayState(o),this.complete();continue e}t=[]}else{var n=e-160;t=this.decodeUtf8String(n,0)}else if(192===e)t=null;else if(194===e)t=!1;else if(195===e)t=!0;else if(202===e)t=this.readF32();else if(203===e)t=this.readF64();else if(204===e)t=this.readU8();else if(205===e)t=this.readU16();else if(206===e)t=this.readU32();else if(207===e)t=this.readU64();else if(208===e)t=this.readI8();else if(209===e)t=this.readI16();else if(210===e)t=this.readI32();else if(211===e)t=this.readI64();else if(217===e)n=this.lookU8(),t=this.decodeUtf8String(n,1);else if(218===e)n=this.lookU16(),t=this.decodeUtf8String(n,2);else if(219===e)n=this.lookU32(),t=this.decodeUtf8String(n,4);else if(220===e){if(0!==(o=this.readU16())){this.pushArrayState(o),this.complete();continue e}t=[]}else if(221===e){if(0!==(o=this.readU32())){this.pushArrayState(o),this.complete();continue e}t=[]}else if(222===e){if(0!==(o=this.readU16())){this.pushMapState(o),this.complete();continue e}t={}}else if(223===e){if(0!==(o=this.readU32())){this.pushMapState(o),this.complete();continue e}t={}}else if(196===e){var o=this.lookU8();t=this.decodeBinary(o,1)}else if(197===e)o=this.lookU16(),t=this.decodeBinary(o,2);else if(198===e)o=this.lookU32(),t=this.decodeBinary(o,4);else if(212===e)t=this.decodeExtension(1,0);else if(213===e)t=this.decodeExtension(2,0);else if(214===e)t=this.decodeExtension(4,0);else if(215===e)t=this.decodeExtension(8,0);else if(216===e)t=this.decodeExtension(16,0);else if(199===e)o=this.lookU8(),t=this.decodeExtension(o,1);else if(200===e)o=this.lookU16(),t=this.decodeExtension(o,2);else{if(201!==e)throw new to("Unrecognized type byte: ".concat(so(e)));o=this.lookU32(),t=this.decodeExtension(o,4)}this.complete();for(var r=this.stack;r.length>0;){var i=r[r.length-1];if(0===i.type){if(i.array[i.position]=t,i.position++,i.position!==i.size)continue e;r.pop(),t=i.array}else{if(1===i.type){if("string"!=(s=typeof t)&&"number"!==s)throw new to("The type of key must be string or number but "+typeof t);if("__proto__"===t)throw new to("The key __proto__ is not allowed");i.key=t,i.type=2;continue e}if(i.map[i.key]=t,i.readCount++,i.readCount!==i.size){i.key=null,i.type=1;continue e}r.pop(),t=i.map}}return t}var s},e.prototype.readHeadByte=function(){return-1===this.headByte&&(this.headByte=this.readU8()),this.headByte},e.prototype.complete=function(){this.headByte=-1},e.prototype.readArraySize=function(){var e=this.readHeadByte();switch(e){case 220:return this.readU16();case 221:return this.readU32();default:if(e<160)return e-144;throw new to("Unrecognized array type byte: ".concat(so(e)))}},e.prototype.pushMapState=function(e){if(e>this.maxMapLength)throw new to("Max length exceeded: map length (".concat(e,") > maxMapLengthLength (").concat(this.maxMapLength,")"));this.stack.push({type:1,size:e,key:null,readCount:0,map:{}})},e.prototype.pushArrayState=function(e){if(e>this.maxArrayLength)throw new to("Max length exceeded: array length (".concat(e,") > maxArrayLength (").concat(this.maxArrayLength,")"));this.stack.push({type:0,size:e,array:new Array(e),position:0})},e.prototype.decodeUtf8String=function(e,t){var n;if(e>this.maxStrLength)throw new to("Max length exceeded: UTF-8 byte length (".concat(e,") > maxStrLength (").concat(this.maxStrLength,")"));if(this.bytes.byteLengthQn?function(e,t,n){var o=e.subarray(t,t+n);return Yn.decode(o)}(this.bytes,r,e):Xn(this.bytes,r,e),this.pos+=t+e,o},e.prototype.stateIsMapKey=function(){return this.stack.length>0&&1===this.stack[this.stack.length-1].type},e.prototype.decodeBinary=function(e,t){if(e>this.maxBinLength)throw new to("Max length exceeded: bin length (".concat(e,") > maxBinLength (").concat(this.maxBinLength,")"));if(!this.hasRemaining(e+t))throw go;var n=this.pos+t,o=this.bytes.subarray(n,n+e);return this.pos+=t+e,o},e.prototype.decodeExtension=function(e,t){if(e>this.maxExtLength)throw new to("Max length exceeded: ext length (".concat(e,") > maxExtLength (").concat(this.maxExtLength,")"));var n=this.view.getInt8(this.pos+t),o=this.decodeBinary(e,t+1);return this.extensionCodec.decode(o,n,this.context)},e.prototype.lookU8=function(){return this.view.getUint8(this.pos)},e.prototype.lookU16=function(){return this.view.getUint16(this.pos)},e.prototype.lookU32=function(){return this.view.getUint32(this.pos)},e.prototype.readU8=function(){var e=this.view.getUint8(this.pos);return this.pos++,e},e.prototype.readI8=function(){var e=this.view.getInt8(this.pos);return this.pos++,e},e.prototype.readU16=function(){var e=this.view.getUint16(this.pos);return this.pos+=2,e},e.prototype.readI16=function(){var e=this.view.getInt16(this.pos);return this.pos+=2,e},e.prototype.readU32=function(){var e=this.view.getUint32(this.pos);return this.pos+=4,e},e.prototype.readI32=function(){var e=this.view.getInt32(this.pos);return this.pos+=4,e},e.prototype.readU64=function(){var e,t,n=(e=this.view,t=this.pos,4294967296*e.getUint32(t)+e.getUint32(t+4));return this.pos+=8,n},e.prototype.readI64=function(){var e=jn(this.view,this.pos);return this.pos+=8,e},e.prototype.readF32=function(){var e=this.view.getFloat32(this.pos);return this.pos+=4,e},e.prototype.readF64=function(){var e=this.view.getFloat64(this.pos);return this.pos+=8,e},e}();class yo{static write(e){let t=e.byteLength||e.length;const n=[];do{let e=127&t;t>>=7,t>0&&(e|=128),n.push(e)}while(t>0);t=e.byteLength||e.length;const o=new Uint8Array(n.length+t);return o.set(n,0),o.set(e,n.length),o.buffer}static parse(e){const t=[],n=new Uint8Array(e),o=[0,7,14,21,28];for(let r=0;r7)throw new Error("Messages bigger than 2GB are not supported.");if(!(n.byteLength>=r+s+a))throw new Error("Incomplete message.");t.push(n.slice?n.slice(r+s,r+s+a):n.subarray(r+s,r+s+a)),r=r+s+a}return t}}const wo=new Uint8Array([145,ln.Ping]);class bo{constructor(e){this.name="messagepack",this.version=2,this.transferFormat=kn.Binary,this._errorResult=1,this._voidResult=2,this._nonVoidResult=3,e=e||{},this._encoder=new io(e.extensionCodec,e.context,e.maxDepth,e.initialBufferSize,e.sortKeys,e.forceFloat32,e.ignoreUndefined,e.forceIntegerToFloat),this._decoder=new vo(e.extensionCodec,e.context,e.maxStrLength,e.maxBinLength,e.maxArrayLength,e.maxMapLength,e.maxExtLength)}parseMessages(e,t){if(!(n=e)||"undefined"==typeof ArrayBuffer||!(n instanceof ArrayBuffer||n.constructor&&"ArrayBuffer"===n.constructor.name))throw new Error("Invalid input for MessagePack hub protocol. Expected an ArrayBuffer.");var n;null===t&&(t=Ft.instance);const o=yo.parse(e),r=[];for(const e of o){const n=this._parseMessage(e,t);n&&r.push(n)}return r}writeMessage(e){switch(e.type){case ln.Invocation:return this._writeInvocation(e);case ln.StreamInvocation:return this._writeStreamInvocation(e);case ln.StreamItem:return this._writeStreamItem(e);case ln.Completion:return this._writeCompletion(e);case ln.Ping:return yo.write(wo);case ln.CancelInvocation:return this._writeCancelInvocation(e);case ln.Close:return this._writeClose();case ln.Ack:return this._writeAck(e);case ln.Sequence:return this._writeSequence(e);default:throw new Error("Invalid message type.")}}_parseMessage(e,t){if(0===e.length)throw new Error("Invalid payload.");const n=this._decoder.decode(e);if(0===n.length||!(n instanceof Array))throw new Error("Invalid payload.");const o=n[0];switch(o){case ln.Invocation:return this._createInvocationMessage(this._readHeaders(n),n);case ln.StreamItem:return this._createStreamItemMessage(this._readHeaders(n),n);case ln.Completion:return this._createCompletionMessage(this._readHeaders(n),n);case ln.Ping:return this._createPingMessage(n);case ln.Close:return this._createCloseMessage(n);case ln.Ack:return this._createAckMessage(n);case ln.Sequence:return this._createSequenceMessage(n);default:return t.log(Ot.Information,"Unknown message type '"+o+"' ignored."),null}}_createCloseMessage(e){if(e.length<2)throw new Error("Invalid payload for Close message.");return{allowReconnect:e.length>=3?e[2]:void 0,error:e[1],type:ln.Close}}_createPingMessage(e){if(e.length<1)throw new Error("Invalid payload for Ping message.");return{type:ln.Ping}}_createInvocationMessage(e,t){if(t.length<5)throw new Error("Invalid payload for Invocation message.");const n=t[2];return n?{arguments:t[4],headers:e,invocationId:n,streamIds:[],target:t[3],type:ln.Invocation}:{arguments:t[4],headers:e,streamIds:[],target:t[3],type:ln.Invocation}}_createStreamItemMessage(e,t){if(t.length<4)throw new Error("Invalid payload for StreamItem message.");return{headers:e,invocationId:t[2],item:t[3],type:ln.StreamItem}}_createCompletionMessage(e,t){if(t.length<4)throw new Error("Invalid payload for Completion message.");const n=t[3];if(n!==this._voidResult&&t.length<5)throw new Error("Invalid payload for Completion message.");let o,r;switch(n){case this._errorResult:o=t[4];break;case this._nonVoidResult:r=t[4]}return{error:o,headers:e,invocationId:t[2],result:r,type:ln.Completion}}_createAckMessage(e){if(e.length<1)throw new Error("Invalid payload for Ack message.");return{sequenceId:e[1],type:ln.Ack}}_createSequenceMessage(e){if(e.length<1)throw new Error("Invalid payload for Sequence message.");return{sequenceId:e[1],type:ln.Sequence}}_writeInvocation(e){let t;return t=e.streamIds?this._encoder.encode([ln.Invocation,e.headers||{},e.invocationId||null,e.target,e.arguments,e.streamIds]):this._encoder.encode([ln.Invocation,e.headers||{},e.invocationId||null,e.target,e.arguments]),yo.write(t.slice())}_writeStreamInvocation(e){let t;return t=e.streamIds?this._encoder.encode([ln.StreamInvocation,e.headers||{},e.invocationId,e.target,e.arguments,e.streamIds]):this._encoder.encode([ln.StreamInvocation,e.headers||{},e.invocationId,e.target,e.arguments]),yo.write(t.slice())}_writeStreamItem(e){const t=this._encoder.encode([ln.StreamItem,e.headers||{},e.invocationId,e.item]);return yo.write(t.slice())}_writeCompletion(e){const t=e.error?this._errorResult:void 0!==e.result?this._nonVoidResult:this._voidResult;let n;switch(t){case this._errorResult:n=this._encoder.encode([ln.Completion,e.headers||{},e.invocationId,t,e.error]);break;case this._voidResult:n=this._encoder.encode([ln.Completion,e.headers||{},e.invocationId,t]);break;case this._nonVoidResult:n=this._encoder.encode([ln.Completion,e.headers||{},e.invocationId,t,e.result])}return yo.write(n.slice())}_writeCancelInvocation(e){const t=this._encoder.encode([ln.CancelInvocation,e.headers||{},e.invocationId]);return yo.write(t.slice())}_writeClose(){const e=this._encoder.encode([ln.Close,null]);return yo.write(e.slice())}_writeAck(e){const t=this._encoder.encode([ln.Ack,e.sequenceId]);return yo.write(t.slice())}_writeSequence(e){const t=this._encoder.encode([ln.Sequence,e.sequenceId]);return yo.write(t.slice())}_readHeaders(e){const t=e[1];if("object"!=typeof t)throw new Error("Invalid headers.");return t}}const _o="function"==typeof TextDecoder?new TextDecoder("utf-8"):null,So=_o?_o.decode.bind(_o):function(e){let t=0;const n=e.length,o=[],r=[];for(;t65535&&(r-=65536,o.push(r>>>10&1023|55296),r=56320|1023&r),o.push(r)}o.length>1024&&(r.push(String.fromCharCode.apply(null,o)),o.length=0)}return r.push(String.fromCharCode.apply(null,o)),r.join("")},Co=Math.pow(2,32),Eo=Math.pow(2,21)-1;function Io(e,t){return e[t]|e[t+1]<<8|e[t+2]<<16|e[t+3]<<24}function ko(e,t){return e[t]+(e[t+1]<<8)+(e[t+2]<<16)+(e[t+3]<<24>>>0)}function To(e,t){const n=ko(e,t+4);if(n>Eo)throw new Error(`Cannot read uint64 with high order part ${n}, because the result would exceed Number.MAX_SAFE_INTEGER.`);return n*Co+ko(e,t)}class Ro{constructor(e){this.batchData=e;const t=new No(e);this.arrayRangeReader=new Po(e),this.arrayBuilderSegmentReader=new Mo(e),this.diffReader=new Do(e),this.editReader=new Ao(e,t),this.frameReader=new xo(e,t)}updatedComponents(){return Io(this.batchData,this.batchData.length-20)}referenceFrames(){return Io(this.batchData,this.batchData.length-16)}disposedComponentIds(){return Io(this.batchData,this.batchData.length-12)}disposedEventHandlerIds(){return Io(this.batchData,this.batchData.length-8)}updatedComponentsEntry(e,t){const n=e+4*t;return Io(this.batchData,n)}referenceFramesEntry(e,t){return e+20*t}disposedComponentIdsEntry(e,t){const n=e+4*t;return Io(this.batchData,n)}disposedEventHandlerIdsEntry(e,t){const n=e+8*t;return To(this.batchData,n)}}class Do{constructor(e){this.batchDataUint8=e}componentId(e){return Io(this.batchDataUint8,e)}edits(e){return e+4}editsEntry(e,t){return e+16*t}}class Ao{constructor(e,t){this.batchDataUint8=e,this.stringReader=t}editType(e){return Io(this.batchDataUint8,e)}siblingIndex(e){return Io(this.batchDataUint8,e+4)}newTreeIndex(e){return Io(this.batchDataUint8,e+8)}moveToSiblingIndex(e){return Io(this.batchDataUint8,e+8)}removedAttributeName(e){const t=Io(this.batchDataUint8,e+12);return this.stringReader.readString(t)}}class xo{constructor(e,t){this.batchDataUint8=e,this.stringReader=t}frameType(e){return Io(this.batchDataUint8,e)}subtreeLength(e){return Io(this.batchDataUint8,e+4)}elementReferenceCaptureId(e){const t=Io(this.batchDataUint8,e+4);return this.stringReader.readString(t)}componentId(e){return Io(this.batchDataUint8,e+8)}elementName(e){const t=Io(this.batchDataUint8,e+8);return this.stringReader.readString(t)}textContent(e){const t=Io(this.batchDataUint8,e+4);return this.stringReader.readString(t)}markupContent(e){const t=Io(this.batchDataUint8,e+4);return this.stringReader.readString(t)}attributeName(e){const t=Io(this.batchDataUint8,e+4);return this.stringReader.readString(t)}attributeValue(e){const t=Io(this.batchDataUint8,e+8);return this.stringReader.readString(t)}attributeEventHandlerId(e){return To(this.batchDataUint8,e+12)}}class No{constructor(e){this.batchDataUint8=e,this.stringTableStartIndex=Io(e,e.length-4)}readString(e){if(-1===e)return null;{const n=Io(this.batchDataUint8,this.stringTableStartIndex+4*e),o=function(e,t){let n=0,o=0;for(let r=0;r<4;r++){const i=e[t+r];if(n|=(127&i)<this.nextBatchId)return this.fatalError?(this.logger.log(yt.Debug,`Received a new batch ${e} but errored out on a previous batch ${this.nextBatchId-1}`),void await n.send("OnRenderCompleted",this.nextBatchId-1,this.fatalError.toString())):void this.logger.log(yt.Debug,`Waiting for batch ${this.nextBatchId}. Batch ${e} not processed.`);try{this.nextBatchId++,this.logger.log(yt.Debug,`Applying batch ${e}.`),xe(Bn.Server,new Ro(t)),await this.completeBatch(n,e)}catch(t){throw this.fatalError=t.toString(),this.logger.log(yt.Error,`There was an error applying batch ${e}.`),n.send("OnRenderCompleted",e,t.toString()),t}}getLastBatchid(){return this.nextBatchId-1}async completeBatch(e,t){try{await e.send("OnRenderCompleted",t,null)}catch{this.logger.log(yt.Warning,`Failed to deliver completion notification for render '${t}'.`)}}}let Lo=!1;function Bo(){const e=document.querySelector("#blazor-error-ui");e&&(e.style.display="block"),Lo||(Lo=!0,document.querySelectorAll("#blazor-error-ui .reload").forEach((e=>{e.onclick=function(e){location.reload(),e.preventDefault()}})),document.querySelectorAll("#blazor-error-ui .dismiss").forEach((e=>{e.onclick=function(e){const t=document.querySelector("#blazor-error-ui");t&&(t.style.display="none"),e.preventDefault()}})))}class Oo{constructor(t,n,o,r){this._firstUpdate=!0,this._renderingFailed=!1,this._disposed=!1,this._circuitId=void 0,this._applicationState=n,this._componentManager=t,this._options=o,this._logger=r,this._renderQueue=new Uo(this._logger),this._dispatcher=e.attachDispatcher(this)}start(){if(this.isDisposedOrDisposing())throw new Error("Cannot start a disposed circuit.");return this._startPromise||(this._startPromise=this.startCore()),this._startPromise}updateRootComponents(e){var t,n;return this._firstUpdate?(this._firstUpdate=!1,null===(t=this._connection)||void 0===t?void 0:t.send("UpdateRootComponents",e,this._applicationState)):null===(n=this._connection)||void 0===n?void 0:n.send("UpdateRootComponents",e,"")}async startCore(){if(this._connection=await this.startConnection(),this._connection.state!==hn.Connected)return!1;const e=JSON.stringify(this._componentManager.initialComponents.map((e=>Ut(e))));if(this._circuitId=await this._connection.invoke("StartCircuit",Je.getBaseURI(),Je.getLocationHref(),e,this._applicationState||""),!this._circuitId)return!1;for(const e of this._options.circuitHandlers)e.onCircuitOpened&&e.onCircuitOpened();return!0}async startConnection(){var e,t;const n=new bo;n.name="blazorpack";const o=(new Ln).withUrl("_blazor").withHubProtocol(n);this._options.configureSignalR(o);const r=o.build();r.on("JS.AttachComponent",((e,t)=>De(Bn.Server,this.resolveElement(t),e,!1))),r.on("JS.BeginInvokeJS",this._dispatcher.beginInvokeJSFromDotNet.bind(this._dispatcher)),r.on("JS.EndInvokeDotNet",this._dispatcher.endInvokeDotNetFromJS.bind(this._dispatcher)),r.on("JS.ReceiveByteArray",this._dispatcher.receiveByteArray.bind(this._dispatcher)),r.on("JS.BeginTransmitStream",(e=>{const t=new ReadableStream({start:t=>{r.stream("SendDotNetStreamToJS",e).subscribe({next:e=>t.enqueue(e),complete:()=>t.close(),error:e=>t.error(e)})}});this._dispatcher.supplyDotNetStream(e,t)})),r.on("JS.RenderBatch",(async(e,t)=>{var n,o;this._logger.log(Ot.Debug,`Received render batch with id ${e} and ${t.byteLength} bytes.`),await this._renderQueue.processBatch(e,t,this._connection),null===(o=(n=this._componentManager).onAfterRenderBatch)||void 0===o||o.call(n,Bn.Server)})),r.on("JS.EndUpdateRootComponents",(e=>{var t,n;null===(n=(t=this._componentManager).onAfterUpdateRootComponents)||void 0===n||n.call(t,e)})),r.on("JS.EndLocationChanging",vt._internal.navigationManager.endLocationChanging),r.onclose((e=>{this._interopMethodsForReconnection=function(e){const t=C.get(e);if(!t)throw new Error(`Interop methods are not registered for renderer ${e}`);return C.delete(e),t}(Bn.Server),this._disposed||this._renderingFailed||this._options.reconnectionHandler.onConnectionDown(this._options.reconnectionOptions,e)})),r.on("JS.Error",(e=>{this._renderingFailed=!0,this.unhandledError(e),Bo()}));try{await r.start()}catch(e){if(this.unhandledError(e),"FailedToNegotiateWithServerError"===e.errorType)throw e;Bo(),e.innerErrors&&(e.innerErrors.some((e=>"UnsupportedTransportError"===e.errorType&&e.transport===In.WebSockets))?this._logger.log(Ot.Error,"Unable to connect, please ensure you are using an updated browser that supports WebSockets."):e.innerErrors.some((e=>"FailedToStartTransportError"===e.errorType&&e.transport===In.WebSockets))?this._logger.log(Ot.Error,"Unable to connect, please ensure WebSockets are available. A VPN or proxy may be blocking the connection."):e.innerErrors.some((e=>"DisabledTransportError"===e.errorType&&e.transport===In.LongPolling))&&this._logger.log(Ot.Error,"Unable to initiate a SignalR connection to the server. This might be because the server is not configured to support WebSockets. For additional details, visit https://aka.ms/blazor-server-websockets-error."))}return(null===(t=null===(e=r.connection)||void 0===e?void 0:e.features)||void 0===t?void 0:t.inherentKeepAlive)&&this._logger.log(Ot.Warning,"Failed to connect via WebSockets, using the Long Polling fallback transport. This may be due to a VPN or proxy blocking the connection. To troubleshoot this, visit https://aka.ms/blazor-server-using-fallback-long-polling."),r}async disconnect(){var e;await(null===(e=this._connection)||void 0===e?void 0:e.stop())}async reconnect(){if(!this._circuitId)throw new Error("Circuit host not initialized.");return this._connection.state===hn.Connected||(this._connection=await this.startConnection(),this._interopMethodsForReconnection&&(k(Bn.Server,this._interopMethodsForReconnection),this._interopMethodsForReconnection=void 0),!!await this._connection.invoke("ConnectCircuit",this._circuitId)&&(this._options.reconnectionHandler.onConnectionUp(),!0))}beginInvokeDotNetFromJS(e,t,n,o,r){this.throwIfDispatchingWhenDisposed(),this._connection.send("BeginInvokeDotNetFromJS",e?e.toString():null,t,n,o||0,r)}endInvokeJSFromDotNet(e,t,n){this.throwIfDispatchingWhenDisposed(),this._connection.send("EndInvokeJSFromDotNet",e,t,n)}sendByteArray(e,t){this.throwIfDispatchingWhenDisposed(),this._connection.send("ReceiveByteArray",e,t)}throwIfDispatchingWhenDisposed(){if(this._disposed)throw new Error("The circuit associated with this dispatcher is no longer available.")}sendLocationChanged(e,t,n){return this._connection.send("OnLocationChanged",e,t,n)}sendLocationChanging(e,t,n,o){return this._connection.send("OnLocationChanging",e,t,n,o)}sendJsDataStream(e,t,n){return function(e,t,n,o){setTimeout((async()=>{let r=5,i=(new Date).valueOf();try{const s=t instanceof Blob?t.size:t.byteLength;let a=0,c=0;for(;a1)await e.send("ReceiveJSDataChunk",n,c,h,null);else{if(!await e.invoke("ReceiveJSDataChunk",n,c,h,null))break;const t=(new Date).valueOf(),o=t-i;i=t,r=Math.max(1,Math.round(500/Math.max(1,o)))}a+=l,c++}}catch(t){await e.send("ReceiveJSDataChunk",n,-1,null,t.toString())}}),0)}(this._connection,e,t,n)}resolveElement(e){const t=w(e);if(t)return W(t,!0);const n=Number.parseInt(e);if(!Number.isNaN(n))return H(this._componentManager.resolveRootComponent(n));throw new Error(`Invalid sequence number or identifier '${e}'.`)}getRootComponentManager(){return this._componentManager}unhandledError(e){this._logger.log(Ot.Error,e),this.disconnect()}getDisconnectFormData(){const e=new FormData,t=this._circuitId;return e.append("circuitId",t),e}didRenderingFail(){return this._renderingFailed}isDisposedOrDisposing(){return void 0!==this._disposePromise}sendDisconnectBeacon(){if(this._disposed)return;const e=this.getDisconnectFormData();this._disposed=navigator.sendBeacon("_blazor/disconnect",e)}dispose(){return this._disposePromise||(this._disposePromise=this.disposeCore()),this._disposePromise}async disposeCore(){var e;if(!this._startPromise)return void(this._disposed=!0);await this._startPromise,this._disposed=!0,null===(e=this._connection)||void 0===e||e.stop();const t=this.getDisconnectFormData();fetch("http://github.com/_blazor/disconnect",{method:"POST",body:t});for(const e of this._options.circuitHandlers)e.onCircuitClosed&&e.onCircuitClosed()}}function Fo(e){const t={...$o,...e};return e&&e.reconnectionOptions&&(t.reconnectionOptions={...$o.reconnectionOptions,...e.reconnectionOptions}),t}const $o={configureSignalR:e=>{},logLevel:yt.Warning,initializers:void 0,circuitHandlers:[],reconnectionOptions:{maxRetries:8,retryIntervalMilliseconds:2e4,dialogId:"components-reconnect-modal"}};class Ho{constructor(e,t,n,o){this.maxRetries=t,this.document=n,this.logger=o,this.modal=this.document.createElement("div"),this.modal.id=e,this.maxRetries=t,this.modal.style.cssText=["position: fixed","top: 0","right: 0","bottom: 0","left: 0","z-index: 1050","display: none","overflow: hidden","background-color: #fff","opacity: 0.8","text-align: center","font-weight: bold","transition: visibility 0s linear 500ms"].join(";"),this.message=this.document.createElement("h5"),this.message.style.cssText="margin-top: 20px",this.button=this.document.createElement("button"),this.button.style.cssText="margin:5px auto 5px",this.button.textContent="Retry";const r=this.document.createElement("a");r.addEventListener("click",(()=>location.reload())),r.textContent="reload",this.reloadParagraph=this.document.createElement("p"),this.reloadParagraph.textContent="Alternatively, ",this.reloadParagraph.appendChild(r),this.modal.appendChild(this.message),this.modal.appendChild(this.button),this.modal.appendChild(this.reloadParagraph),this.loader=this.getLoader(),this.message.after(this.loader),this.button.addEventListener("click",(async()=>{this.show();try{await vt.reconnect()||this.rejected()}catch(e){this.logger.log(yt.Error,e),this.failed()}}))}show(){this.document.contains(this.modal)||this.document.body.appendChild(this.modal),this.modal.style.display="block",this.loader.style.display="inline-block",this.button.style.display="none",this.reloadParagraph.style.display="none",this.message.textContent="Attempting to reconnect to the server...",this.modal.style.visibility="hidden",setTimeout((()=>{this.modal.style.visibility="visible"}),0)}update(e){this.message.textContent=`Attempting to reconnect to the server: ${e} of ${this.maxRetries}`}hide(){this.modal.style.display="none"}failed(){this.button.style.display="block",this.reloadParagraph.style.display="none",this.loader.style.display="none";const e=this.document.createTextNode("Reconnection failed. Try "),t=this.document.createElement("a");t.textContent="reloading",t.setAttribute("href",""),t.addEventListener("click",(()=>location.reload()));const n=this.document.createTextNode(" the page if you're unable to reconnect.");this.message.replaceChildren(e,t,n)}rejected(){this.button.style.display="none",this.reloadParagraph.style.display="none",this.loader.style.display="none";const e=this.document.createTextNode("Could not reconnect to the server. "),t=this.document.createElement("a");t.textContent="Reload",t.setAttribute("href",""),t.addEventListener("click",(()=>location.reload()));const n=this.document.createTextNode(" the page to restore functionality.");this.message.replaceChildren(e,t,n)}getLoader(){const e=this.document.createElement("div");return e.style.cssText=["border: 0.3em solid #f3f3f3","border-top: 0.3em solid #3498db","border-radius: 50%","width: 2em","height: 2em","display: inline-block"].join(";"),e.animate([{transform:"rotate(0deg)"},{transform:"rotate(360deg)"}],{duration:2e3,iterations:1/0}),e}}class Wo{constructor(e,t,n){this.dialog=e,this.maxRetries=t,this.document=n,this.document=n;const o=this.document.getElementById(Wo.MaxRetriesId);o&&(o.innerText=this.maxRetries.toString())}show(){this.removeClasses(),this.dialog.classList.add(Wo.ShowClassName)}update(e){const t=this.document.getElementById(Wo.CurrentAttemptId);t&&(t.innerText=e.toString())}hide(){this.removeClasses(),this.dialog.classList.add(Wo.HideClassName)}failed(){this.removeClasses(),this.dialog.classList.add(Wo.FailedClassName)}rejected(){this.removeClasses(),this.dialog.classList.add(Wo.RejectedClassName)}removeClasses(){this.dialog.classList.remove(Wo.ShowClassName,Wo.HideClassName,Wo.FailedClassName,Wo.RejectedClassName)}}Wo.ShowClassName="components-reconnect-show",Wo.HideClassName="components-reconnect-hide",Wo.FailedClassName="components-reconnect-failed",Wo.RejectedClassName="components-reconnect-rejected",Wo.MaxRetriesId="components-reconnect-max-retries",Wo.CurrentAttemptId="components-reconnect-current-attempt";class jo{constructor(e,t,n){this._currentReconnectionProcess=null,this._logger=e,this._reconnectionDisplay=t,this._reconnectCallback=n||vt.reconnect}onConnectionDown(e,t){if(!this._reconnectionDisplay){const t=document.getElementById(e.dialogId);this._reconnectionDisplay=t?new Wo(t,e.maxRetries,document):new Ho(e.dialogId,e.maxRetries,document,this._logger)}this._currentReconnectionProcess||(this._currentReconnectionProcess=new zo(e,this._logger,this._reconnectCallback,this._reconnectionDisplay))}onConnectionUp(){this._currentReconnectionProcess&&(this._currentReconnectionProcess.dispose(),this._currentReconnectionProcess=null)}}class zo{constructor(e,t,n,o){this.logger=t,this.reconnectCallback=n,this.isDisposed=!1,this.reconnectDisplay=o,this.reconnectDisplay.show(),this.attemptPeriodicReconnection(e)}dispose(){this.isDisposed=!0,this.reconnectDisplay.hide()}async attemptPeriodicReconnection(e){for(let t=0;tzo.MaximumFirstRetryInterval?zo.MaximumFirstRetryInterval:e.retryIntervalMilliseconds;if(await this.delay(n),this.isDisposed)break;try{return await this.reconnectCallback()?void 0:void this.reconnectDisplay.rejected()}catch(e){this.logger.log(yt.Error,e)}}this.reconnectDisplay.failed()}delay(e){return new Promise((t=>setTimeout(t,e)))}}zo.MaximumFirstRetryInterval=3e3;class qo{constructor(e=!0,t,n,o=0){this.singleRuntime=e,this.logger=t,this.webRendererId=o,this.afterStartedCallbacks=[],n&&this.afterStartedCallbacks.push(...n)}async importInitializersAsync(e,t){await Promise.all(e.map((e=>async function(e,n){const o=function(e){const t=document.baseURI;return t.endsWith("/")?`${t}${e}`:`${t}/${e}`}(n),r=await import(o);if(void 0!==r){if(e.singleRuntime){const{beforeStart:n,afterStarted:o,beforeWebAssemblyStart:s,afterWebAssemblyStarted:a,beforeServerStart:c,afterServerStarted:l}=r;let h=n;e.webRendererId===Bn.Server&&c&&(h=c),e.webRendererId===Bn.WebAssembly&&s&&(h=s);let d=o;return e.webRendererId===Bn.Server&&l&&(d=l),e.webRendererId===Bn.WebAssembly&&a&&(d=a),i(e,h,d,t)}return function(e,t,n){var r;const s=n[0],{beforeStart:a,afterStarted:c,beforeWebStart:l,afterWebStarted:h,beforeWebAssemblyStart:d,afterWebAssemblyStarted:u,beforeServerStart:p,afterServerStarted:f}=t,g=!(l||h||d||u||p||f||!a&&!c),m=g&&s.enableClassicInitializers;if(g&&!s.enableClassicInitializers)null===(r=e.logger)||void 0===r||r.log(yt.Warning,`Initializer '${o}' will be ignored because multiple runtimes are available. use 'before(web|webAssembly|server)Start' and 'after(web|webAssembly|server)Started?' instead.)`);else if(m)return i(e,a,c,n);if(function(e){e.webAssembly?e.webAssembly.initializers||(e.webAssembly.initializers={beforeStart:[],afterStarted:[]}):e.webAssembly={initializers:{beforeStart:[],afterStarted:[]}},e.circuit?e.circuit.initializers||(e.circuit.initializers={beforeStart:[],afterStarted:[]}):e.circuit={initializers:{beforeStart:[],afterStarted:[]}}}(s),d&&s.webAssembly.initializers.beforeStart.push(d),u&&s.webAssembly.initializers.afterStarted.push(u),p&&s.circuit.initializers.beforeStart.push(p),f&&s.circuit.initializers.afterStarted.push(f),h&&e.afterStartedCallbacks.push(h),l)return l(s)}(e,r,t)}function i(e,t,n,o){if(n&&e.afterStartedCallbacks.push(n),t)return t(...o)}}(this,e))))}async invokeAfterStartedCallbacks(e){const t=function(e){var t;return null===(t=I.get(e))||void 0===t?void 0:t[1]}(this.webRendererId);t&&await t,await Promise.all(this.afterStartedCallbacks.map((t=>t(e))))}}let Jo,Ko,Vo,Xo,Go,Yo,Qo,Zo;function er(e){if(Xo)throw new Error("Circuit options have already been configured.");if(Xo)throw new Error("WebAssembly options have already been configured.");Jo=async function(e){const t=await e;Xo=Fo(t)}(e)}function tr(e){if(void 0!==Yo)throw new Error("Blazor Server has already started.");return Yo=new Promise(nr.bind(null,e)),Yo}async function nr(e,t,n){await Jo;const o=await async function(e){if(e.initializers)return await Promise.all(e.initializers.beforeStart.map((t=>t(e)))),new qo(!1,void 0,e.initializers.afterStarted,Bn.Server);const t=await fetch("http://github.com/_blazor/initializers",{method:"GET",credentials:"include",cache:"no-cache"}),n=await t.json(),o=new qo(!0,void 0,void 0,Bn.Server);return await o.importInitializersAsync(n,[e]),o}(Xo);if(Ko=It(document)||"",Go=new bt(Xo.logLevel),Vo=new Oo(e,Ko,Xo,Go),Go.log(yt.Information,"Starting up Blazor server-side application."),vt.reconnect=async()=>!(Vo.didRenderingFail()||!await Vo.reconnect()&&(Go.log(yt.Information,"Reconnection attempt to the circuit was rejected by the server. This may indicate that the associated state is no longer available on the server."),1)),vt.defaultReconnectionHandler=new jo(Go),Xo.reconnectionHandler=Xo.reconnectionHandler||vt.defaultReconnectionHandler,vt._internal.navigationManager.listenForNavigationEvents(Bn.Server,((e,t,n)=>Vo.sendLocationChanged(e,t,n)),((e,t,n,o)=>Vo.sendLocationChanging(e,t,n,o))),vt._internal.forceCloseConnection=()=>Vo.disconnect(),vt._internal.sendJSDataStream=(e,t,n)=>Vo.sendJsDataStream(e,t,n),!await Vo.start())return Go.log(yt.Error,"Failed to start the circuit."),void t();const r=()=>{Vo.sendDisconnectBeacon()};vt.disconnect=r,window.addEventListener("unload",r,{capture:!1,once:!0}),Go.log(yt.Information,"Blazor server-side application started."),o.invokeAfterStartedCallbacks(vt),t()}async function or(){if(!Yo)throw new Error("Cannot start the circuit until Blazor Server has started.");return!(!Vo||Vo.isDisposedOrDisposing())||(Qo?await Qo:(await Yo,(!Vo||!Vo.didRenderingFail())&&(Vo&&Vo.isDisposedOrDisposing()&&(Ko=It(document)||"",Vo=new Oo(Vo.getRootComponentManager(),Ko,Xo,Go)),Qo=Vo.start(),async function(e){await e,Qo===e&&(Qo=void 0)}(Qo),Qo)))}function rr(e){if(Vo&&!Vo.isDisposedOrDisposing())return Vo.updateRootComponents(e);!async function(e){await Yo,await or()&&Vo.updateRootComponents(e)}(e)}function ir(e){return Zo=e,Zo}var sr,ar;const cr=navigator,lr=cr.userAgentData&&cr.userAgentData.brands,hr=lr&&lr.length>0?lr.some((e=>"Google Chrome"===e.brand||"Microsoft Edge"===e.brand||"Chromium"===e.brand)):window.chrome,dr=null!==(ar=null===(sr=cr.userAgentData)||void 0===sr?void 0:sr.platform)&&void 0!==ar?ar:navigator.platform;function ur(e){return 0!==e.debugLevel&&(hr||navigator.userAgent.includes("Firefox"))}let pr,fr,gr,mr,vr,yr,wr;const br=Math.pow(2,32),_r=Math.pow(2,21)-1;let Sr=null;function Cr(e){return fr.getI32(e)}const Er={load:function(e,t){return async function(e,t){const{dotnet:n}=await async function(e){if("undefined"==typeof WebAssembly||!WebAssembly.validate)throw new Error("This browser does not support WebAssembly.");let t="_framework/dotnet.js";if(e.loadBootResource){const n="dotnetjs",o=e.loadBootResource(n,"dotnet.js",t,"","js-module-dotnet");if("string"==typeof o)t=o;else if(o)throw new Error(`For a ${n} resource, custom loaders must supply a URI string.`)}const n=new URL(t,document.baseURI).toString();return await import(n)}(e),o=function(e,t){const n={maxParallelDownloads:1e6,enableDownloadRetry:!1,applicationEnvironment:e.environment},o={...window.Module||{},onConfigLoaded:async n=>{n.environmentVariables||(n.environmentVariables={}),"sharded"===n.globalizationMode&&(n.environmentVariables.__BLAZOR_SHARDED_ICU="1"),vt._internal.getApplicationEnvironment=()=>n.applicationEnvironment,null==t||t(n),wr=await async function(e,t){var n,o,r;if(e.initializers)return await Promise.all(e.initializers.beforeStart.map((t=>t(e)))),new qo(!1,void 0,e.initializers.afterStarted,Bn.WebAssembly);{const i=[e,null!==(o=null===(n=t.resources)||void 0===n?void 0:n.extensions)&&void 0!==o?o:{}],s=new qo(!0,void 0,void 0,Bn.WebAssembly),a=Object.keys((null===(r=null==t?void 0:t.resources)||void 0===r?void 0:r.libraryInitializers)||{});return await s.importInitializersAsync(a,i),s}}(e,n)},onDownloadResourceProgress:Ir,config:n,disableDotnet6Compatibility:!1,out:Tr,err:Rr};return o}(e,t);e.applicationCulture&&n.withApplicationCulture(e.applicationCulture),e.environment&&n.withApplicationEnvironment(e.environment),e.loadBootResource&&n.withResourceLoader(e.loadBootResource),n.withModuleConfig(o),e.configureRuntime&&e.configureRuntime(n),yr=await n.create()}(e,t)},start:function(){return async function(){if(!yr)throw new Error("The runtime must be loaded it gets configured.");const{MONO:t,BINDING:n,Module:o,setModuleImports:r,INTERNAL:i,getConfig:s,invokeLibraryInitializers:a}=yr;gr=o,pr=n,fr=t,vr=i,function(e){const t=dr.match(/^Mac/i)?"Cmd":"Alt";ur(e)&&console.info(`Debugging hotkey: Shift+${t}+D (when application has focus)`),document.addEventListener("keydown",(t=>{t.shiftKey&&(t.metaKey||t.altKey)&&"KeyD"===t.code&&(ur(e)?navigator.userAgent.includes("Firefox")?async function(){const e=await fetch(`_framework/debug?url=${encodeURIComponent(location.href)}&isFirefox=true`);200!==e.status&&console.warn(await e.text())}():hr?function(){const e=document.createElement("a");e.href=`_framework/debug?url=${encodeURIComponent(location.href)}`,e.target="_blank",e.rel="noopener noreferrer",e.click()}():console.error("Currently, only Microsoft Edge (80+), Google Chrome, or Chromium, are supported for debugging."):console.error("Cannot start debugging, because the application was not compiled with debugging enabled."))}))}(s()),vt.runtime=yr,vt._internal.dotNetCriticalError=Rr,r("blazor-internal",{Blazor:{_internal:vt._internal}});const c=await yr.getAssemblyExports("Microsoft.AspNetCore.Components.WebAssembly");return Object.assign(vt._internal,{dotNetExports:{...c.Microsoft.AspNetCore.Components.WebAssembly.Services.DefaultWebAssemblyJSRuntime}}),mr=e.attachDispatcher({beginInvokeDotNetFromJS:(e,t,n,o,r)=>{if(Ar(),!o&&!t)throw new Error("Either assemblyName or dotNetObjectId must have a non null value.");const i=o?o.toString():t;vt._internal.dotNetExports.BeginInvokeDotNet(e?e.toString():null,i,n,r)},endInvokeJSFromDotNet:(e,t,n)=>{vt._internal.dotNetExports.EndInvokeJS(n)},sendByteArray:(e,t)=>{vt._internal.dotNetExports.ReceiveByteArrayFromJS(e,t)},invokeDotNetFromJS:(e,t,n,o)=>(Ar(),vt._internal.dotNetExports.InvokeDotNet(e||null,t,null!=n?n:0,o))}),{invokeLibraryInitializers:a}}()},callEntryPoint:async function(){try{await yr.runMain(yr.getConfig().mainAssemblyName,[])}catch(e){console.error(e),Bo()}},toUint8Array:function(e){const t=Dr(e),n=Cr(t),o=new Uint8Array(n);return o.set(gr.HEAPU8.subarray(t+4,t+4+n)),o},getArrayLength:function(e){return Cr(Dr(e))},getArrayEntryPtr:function(e,t,n){return Dr(e)+4+t*n},getObjectFieldsBaseAddress:function(e){return e+8},readInt16Field:function(e,t){return n=e+(t||0),fr.getI16(n);var n},readInt32Field:function(e,t){return Cr(e+(t||0))},readUint64Field:function(e,t){return function(e){const t=e>>2,n=gr.HEAPU32[t+1];if(n>_r)throw new Error(`Cannot read uint64 with high order part ${n}, because the result would exceed Number.MAX_SAFE_INTEGER.`);return n*br+gr.HEAPU32[t]}(e+(t||0))},readFloatField:function(e,t){return n=e+(t||0),fr.getF32(n);var n},readObjectField:function(e,t){return Cr(e+(t||0))},readStringField:function(e,t,n){const o=Cr(e+(t||0));if(0===o)return null;if(n){const e=pr.unbox_mono_obj(o);return"boolean"==typeof e?e?"":null:e}return pr.conv_string(o)},readStructField:function(e,t){return e+(t||0)},beginHeapLock:function(){return Ar(),Sr=xr.create(),Sr},invokeWhenHeapUnlocked:function(e){Sr?Sr.enqueuePostReleaseAction(e):e()}};function Ir(e,t){const n=e/t*100;document.documentElement.style.setProperty("--blazor-load-percentage",`${n}%`),document.documentElement.style.setProperty("--blazor-load-percentage-text",`"${Math.floor(n)}%"`)}const kr=["DEBUGGING ENABLED"],Tr=e=>kr.indexOf(e)<0&&console.log(e),Rr=e=>{console.error(e||"(null)"),Bo()};function Dr(e){return e+12}function Ar(){if(Sr)throw new Error("Assertion failed - heap is currently locked")}class xr{enqueuePostReleaseAction(e){this.postReleaseActions||(this.postReleaseActions=[]),this.postReleaseActions.push(e)}release(){var e;if(Sr!==this)throw new Error("Trying to release a lock which isn't current");for(vr.mono_wasm_gc_unlock(),Sr=null;null===(e=this.postReleaseActions)||void 0===e?void 0:e.length;)this.postReleaseActions.shift()(),Ar()}static create(){return vr.mono_wasm_gc_lock(),new xr}}class Nr{constructor(e){this.batchAddress=e,this.arrayRangeReader=Pr,this.arrayBuilderSegmentReader=Mr,this.diffReader=Ur,this.editReader=Lr,this.frameReader=Br}updatedComponents(){return Zo.readStructField(this.batchAddress,0)}referenceFrames(){return Zo.readStructField(this.batchAddress,Pr.structLength)}disposedComponentIds(){return Zo.readStructField(this.batchAddress,2*Pr.structLength)}disposedEventHandlerIds(){return Zo.readStructField(this.batchAddress,3*Pr.structLength)}updatedComponentsEntry(e,t){return Or(e,t,Ur.structLength)}referenceFramesEntry(e,t){return Or(e,t,Br.structLength)}disposedComponentIdsEntry(e,t){const n=Or(e,t,4);return Zo.readInt32Field(n)}disposedEventHandlerIdsEntry(e,t){const n=Or(e,t,8);return Zo.readUint64Field(n)}}const Pr={structLength:8,values:e=>Zo.readObjectField(e,0),count:e=>Zo.readInt32Field(e,4)},Mr={structLength:12,values:e=>{const t=Zo.readObjectField(e,0),n=Zo.getObjectFieldsBaseAddress(t);return Zo.readObjectField(n,0)},offset:e=>Zo.readInt32Field(e,4),count:e=>Zo.readInt32Field(e,8)},Ur={structLength:4+Mr.structLength,componentId:e=>Zo.readInt32Field(e,0),edits:e=>Zo.readStructField(e,4),editsEntry:(e,t)=>Or(e,t,Lr.structLength)},Lr={structLength:20,editType:e=>Zo.readInt32Field(e,0),siblingIndex:e=>Zo.readInt32Field(e,4),newTreeIndex:e=>Zo.readInt32Field(e,8),moveToSiblingIndex:e=>Zo.readInt32Field(e,8),removedAttributeName:e=>Zo.readStringField(e,16)},Br={structLength:36,frameType:e=>Zo.readInt16Field(e,4),subtreeLength:e=>Zo.readInt32Field(e,8),elementReferenceCaptureId:e=>Zo.readStringField(e,16),componentId:e=>Zo.readInt32Field(e,12),elementName:e=>Zo.readStringField(e,16),textContent:e=>Zo.readStringField(e,16),markupContent:e=>Zo.readStringField(e,16),attributeName:e=>Zo.readStringField(e,16),attributeValue:e=>Zo.readStringField(e,24,!0),attributeEventHandlerId:e=>Zo.readUint64Field(e,8)};function Or(e,t,n){return Zo.getArrayEntryPtr(e,t,n)}class Fr{constructor(e){this.componentManager=e}resolveRegisteredElement(e){const t=Number.parseInt(e);if(!Number.isNaN(t))return H(this.componentManager.resolveRootComponent(t))}getParameterValues(e){return this.componentManager.initialComponents[e].parameterValues}getParameterDefinitions(e){return this.componentManager.initialComponents[e].parameterDefinitions}getTypeName(e){return this.componentManager.initialComponents[e].typeName}getAssembly(e){return this.componentManager.initialComponents[e].assembly}getCount(){return this.componentManager.initialComponents.length}}let $r,Hr,Wr,jr,zr,qr=!1,Jr=!1,Kr=!0,Vr=!1;const Xr=new Promise((e=>{zr=e}));let Gr;const Yr=new Promise((e=>{Gr=e}));let Qr;function Zr(e){if(void 0!==jr)throw new Error("Blazor WebAssembly has already started.");return jr=new Promise(ei.bind(null,e)),jr}async function ei(e,t,n){(function(){if(window.parent!==window&&!window.opener&&window.frameElement){const e=window.sessionStorage&&window.sessionStorage["Microsoft.AspNetCore.Components.WebAssembly.Authentication.CachedAuthSettings"],t=e&&JSON.parse(e);return t&&t.redirect_uri&&location.href.startsWith(t.redirect_uri)}return!1})()&&await new Promise((()=>{}));const o=ti();!function(e){const t=A;A=(e,n,o)=>{((e,t,n)=>{const o=Ae(e);(null==o?void 0:o.eventDelegator.getHandler(t))&&Er.invokeWhenHeapUnlocked(n)})(e,n,(()=>t(e,n,o)))}}(),vt._internal.applyHotReload=(e,t,n,o)=>{mr.invokeDotNetStaticMethod("Microsoft.AspNetCore.Components.WebAssembly","ApplyHotReloadDelta",e,t,n,o)},vt._internal.getApplyUpdateCapabilities=()=>mr.invokeDotNetStaticMethod("Microsoft.AspNetCore.Components.WebAssembly","GetApplyUpdateCapabilities"),vt._internal.invokeJSFromDotNet=oi,vt._internal.invokeJSJson=ri,vt._internal.endInvokeDotNetFromJS=ii,vt._internal.receiveWebAssemblyDotNetDataStream=si,vt._internal.receiveByteArray=ai;const r=ir(Er);vt.platform=r,vt._internal.renderBatch=(e,t)=>{const n=Er.beginHeapLock();try{xe(e,new Nr(t))}finally{n.release()}},vt._internal.navigationManager.listenForNavigationEvents(Bn.WebAssembly,(async(e,t,n)=>{await mr.invokeDotNetStaticMethodAsync("Microsoft.AspNetCore.Components.WebAssembly","NotifyLocationChanged",e,t,n)}),(async(e,t,n,o)=>{const r=await mr.invokeDotNetStaticMethodAsync("Microsoft.AspNetCore.Components.WebAssembly","NotifyLocationChangingAsync",t,n,o);vt._internal.navigationManager.endLocationChanging(e,r)}));const i=new Fr(e);let s;vt._internal.registeredComponents={getRegisteredComponentsCount:()=>i.getCount(),getAssembly:e=>i.getAssembly(e),getTypeName:e=>i.getTypeName(e),getParameterDefinitions:e=>i.getParameterDefinitions(e)||"",getParameterValues:e=>i.getParameterValues(e)||""},vt._internal.getPersistedState=()=>kt(document,Ct)||"",vt._internal.getInitialComponentsUpdate=()=>Yr,vt._internal.updateRootComponents=e=>{var t;return null===(t=vt._internal.dotNetExports)||void 0===t?void 0:t.UpdateRootComponentsCore(e)},vt._internal.endUpdateRootComponents=t=>{var n;return null===(n=e.onAfterUpdateRootComponents)||void 0===n?void 0:n.call(e,t)},vt._internal.attachRootComponentToElement=(e,t,n)=>{const o=i.resolveRegisteredElement(e);o?De(n,o,t,!1):function(e,t,n){const o="::before";let r=!1;if(e.endsWith("::after"))e=e.slice(0,-7),r=!0;else if(e.endsWith(o))throw new Error(`The '${o}' selector is not supported.`);const i=w(e)||document.querySelector(e);if(!i)throw new Error(`Could not find any element matching selector '${e}'.`);De(n,W(i,!0),t,r)}(e,t,n)};try{await o,s=await r.start()}catch(e){throw new Error(`Failed to start platform. Reason: ${e}`)}r.callEntryPoint(),wr.invokeAfterStartedCallbacks(vt),Jr=!0,t()}function ti(){return null!=Wr||(Wr=(async()=>{await Hr;const e=null!=$r?$r:{},t=null==$r?void 0:$r.configureRuntime;e.configureRuntime=e=>{null==t||t(e),Vr&&e.withEnvironmentVariable("__BLAZOR_WEBASSEMBLY_WAIT_FOR_ROOT_COMPONENTS","true")},await Er.load(e,zr),qr=!0})()),Wr}function ni(){return qr}function oi(t,n,o,r){const i=Er.readStringField(t,0),s=Er.readInt32Field(t,4),a=Er.readStringField(t,8),c=Er.readUint64Field(t,20);if(null!==a){const e=Er.readUint64Field(t,12);if(0!==e)return mr.beginInvokeJSFromDotNet(e,i,a,s,c),0;{const e=mr.invokeJSFromDotNet(i,a,s,c);return null===e?0:pr.js_string_to_mono_string(e)}}{const t=e.findJSFunction(i,c).call(null,n,o,r);switch(s){case e.JSCallResultType.Default:return t;case e.JSCallResultType.JSObjectReference:return e.createJSObjectReference(t).__jsObjectId;case e.JSCallResultType.JSStreamReference:{const n=e.createJSStreamReference(t),o=JSON.stringify(n);return pr.js_string_to_mono_string(o)}case e.JSCallResultType.JSVoidResult:return null;default:throw new Error(`Invalid JS call result type '${s}'.`)}}}function ri(e,t,n,o,r){return 0!==r?(mr.beginInvokeJSFromDotNet(r,e,o,n,t),null):mr.invokeJSFromDotNet(e,o,n,t)}function ii(e,t,n){mr.endInvokeDotNetFromJS(e,t,n)}function si(e,t,n,o){!function(e,t,n,o,r){let i=mt.get(t);if(!i){const n=new ReadableStream({start(e){mt.set(t,e),i=e}});e.supplyDotNetStream(t,n)}r?(i.error(r),mt.delete(t)):0===o?(i.close(),mt.delete(t)):i.enqueue(n.length===o?n:n.subarray(0,o))}(mr,e,t,n,o)}function ai(e,t){mr.receiveByteArray(e,t)}function ci(e,t){t.namespaceURI?e.setAttributeNS(t.namespaceURI,t.name,t.value):e.setAttribute(t.name,t.value)}Hr=new Promise((e=>{Qr=e}));const li="data-permanent";var hi,di;!function(e){e[e.None=0]="None",e[e.Some=1]="Some",e[e.Infinite=2]="Infinite"}(hi||(hi={})),function(e){e.Keep="keep",e.Update="update",e.Insert="insert",e.Delete="delete"}(di||(di={}));class ui{static create(e,t,n){return 0===t&&n===e.length?e:new ui(e,t,n)}constructor(e,t,n){this.source=e,this.startIndex=t,this.length=n}item(e){return this.source.item(e+this.startIndex)}forEach(e,t){for(let t=0;t=n&&s>=o&&r(e.item(i),t.item(s))===hi.None;)i--,s--,a++;return a}(e,t,o,o,n),i=function(e){var t;const n=[];let o=e.length-1,r=(null===(t=e[o])||void 0===t?void 0:t.length)-1;for(;o>0||r>0;){const t=0===o?di.Insert:0===r?di.Delete:e[o][r];switch(n.unshift(t),t){case di.Keep:case di.Update:o--,r--;break;case di.Insert:r--;break;case di.Delete:o--}}return n}(function(e,t,n){const o=[],r=[],i=e.length,s=t.length;if(0===i&&0===s)return[];for(let e=0;e<=i;e++)(o[e]=Array(s+1))[0]=e,r[e]=Array(s+1);const a=o[0];for(let e=1;e<=s;e++)a[e]=e;for(let a=1;a<=i;a++)for(let i=1;i<=s;i++){const s=n(e.item(a-1),t.item(i-1)),c=o[a-1][i]+1,l=o[a][i-1]+1;let h;switch(s){case hi.None:h=o[a-1][i-1];break;case hi.Some:h=o[a-1][i-1]+1;break;case hi.Infinite:h=Number.MAX_VALUE}h{history.pushState(null,"",e),Mi(e,!0)}))}function Ni(e){Oe()||Mi(location.href,!1)}function Pi(e){if(Oe()||e.defaultPrevented)return;const t=e.target;if(t instanceof HTMLFormElement){if(!function(e){const t=e.getAttribute("data-enhance");return"string"==typeof t&&""===t||"true"===(null==t?void 0:t.toLowerCase())}(t))return;e.preventDefault();const n=new URL(t.action),o={method:t.method},r=new FormData(t),i=e.submitter;i&&i.name&&r.append(i.name,i.value),"get"===o.method?(n.search=new URLSearchParams(r).toString(),history.pushState(null,"",n.toString())):o.body=r,Mi(n.toString(),!1,o)}}async function Mi(e,t,n){gi=!0,null==pi||pi.abort(),function(e,t){null==ke||ke(e,t)}(e,t),pi=new AbortController;const o=pi.signal,r=fetch(e,Object.assign({signal:o,mode:"no-cors",headers:{accept:"text/html; blazor-enhanced-nav=on"}},n));let i=null;if(await async function(e,t,n,o){let r;try{if(r=await e,!r.body)return void n(r,"");const t=r.headers.get("ssr-framing");if(!t){const e=await r.text();return void n(r,e)}let o=!0;await r.body.pipeThrough(new TextDecoderStream).pipeThrough(function(e){let t="";return new TransformStream({transform(n,o){if(t+=n,t.indexOf(e,t.length-n.length-e.length)>=0){const n=t.split(e);n.slice(0,-1).forEach((e=>o.enqueue(e))),t=n[n.length-1]}},flush(e){e.enqueue(t)}})}(`\x3c!--${t}--\x3e`)).pipeTo(new WritableStream({write(e){o?(o=!1,n(r,e)):(e=>{const t=document.createRange().createContextualFragment(e);for(;t.firstChild;)document.body.appendChild(t.firstChild)})(e)}}))}catch(e){if("AbortError"===e.name&&t.aborted)return;throw e}}(r,o,((t,o)=>{const r=!(null==n?void 0:n.method)||"get"===n.method,s=t.status>=200&&t.status<300;if("opaque"===t.type){if(r)return void Li(e);throw new Error("Enhanced navigation does not support making a non-GET request to an endpoint that redirects to an external origin. Avoid enabling enhanced navigation for form posts that may perform external redirections.")}if(s&&"allow"!==t.headers.get("blazor-enhanced-nav")){if(r)return void Li(e);throw new Error("Enhanced navigation does not support making a non-GET request to a non-Blazor endpoint. Avoid enabling enhanced navigation for forms that post to a non-Blazor endpoint.")}t.redirected&&(r?history.replaceState(null,"",t.url):history.pushState(null,"",t.url),e=t.url);const a=t.headers.get("blazor-enhanced-nav-redirect-location");if(a)return void location.replace(a);t.redirected||r||!s||(function(e){const t=new URL(e.url),n=new URL(Ri);return t.protocol===n.protocol&&t.host===n.host&&t.port===n.port&&t.pathname===n.pathname}(t)?location.href!==Ri&&history.pushState(null,"",Ri):i=`Cannot perform enhanced form submission that changes the URL (except via a redirection), because then back/forward would not work. Either remove this form's 'action' attribute, or change its method to 'get', or do not mark it as enhanced.\nOld URL: ${location.href}\nNew URL: ${t.url}`),Ri=t.url;const c=t.headers.get("content-type");if((null==c?void 0:c.startsWith("text/html"))&&o){const e=(new DOMParser).parseFromString(o,"text/html");vi(document,e),fi.documentUpdated()}else(null==c?void 0:c.startsWith("text/"))&&o?Ui(o):s||o?r?Li(e):Ui(`Error: ${n.method} request to ${e} returned non-HTML content of type ${c||"unspecified"}.`):Ui(`Error: ${t.status} ${t.statusText}`)})),!o.aborted){const t=e.indexOf("#");if(t>=0){const n=e.substring(t+1),o=document.getElementById(n);null==o||o.scrollIntoView()}if(gi=!1,fi.enhancedNavigationCompleted(),i)throw new Error(i)}}function Ui(e){document.documentElement.textContent=e;const t=document.documentElement.style;t.fontFamily="consolas, monospace",t.whiteSpace="pre-wrap",t.padding="1rem"}function Li(e){history.replaceState(null,"",e+"?"),location.replace(e)}let Bi,Oi=!0;class Fi extends HTMLElement{connectedCallback(){var e;const t=this.parentNode;null===(e=t.parentNode)||void 0===e||e.removeChild(t),t.childNodes.forEach((e=>{if(e instanceof HTMLTemplateElement){const t=e.getAttribute("blazor-component-id");if(t)"true"!==e.getAttribute("enhanced-nav")&&pi||function(e,t){const n=function(e){const t=`bl:${e}`,n=document.createNodeIterator(document,NodeFilter.SHOW_COMMENT);let o=null;for(;(o=n.nextNode())&&o.textContent!==t;);if(!o)return null;const r=`/bl:${e}`;let i=null;for(;(i=n.nextNode())&&i.textContent!==r;);return i?{startMarker:o,endMarker:i}:null}(e);if(n){const{startMarker:e,endMarker:o}=n;if(Oi)vi({startExclusive:e,endExclusive:o},t);else{const n=o.parentNode,r=new Range;for(r.setStart(e,e.textContent.length),r.setEnd(o,0),r.deleteContents();t.childNodes[0];)n.insertBefore(t.childNodes[0],o)}Bi.documentUpdated()}}(t,e.content);else switch(e.getAttribute("type")){case"redirection":const t=Le(e.content.textContent),n="form-post"===e.getAttribute("from");"true"===e.getAttribute("enhanced")&&Pe(t)?(n?history.pushState(null,"",t):history.replaceState(null,"",t),Mi(t,!1)):n?location.assign(t):location.replace(t);break;case"error":Ui(e.content.textContent||"Error")}}}))}}class $i{constructor(e){var t;this._circuitInactivityTimeoutMs=e,this._rootComponentsBySsrComponentId=new Map,this._seenDescriptors=new Set,this._pendingOperationBatches={},this._nextOperationBatchId=1,this._nextSsrComponentId=1,this._didWebAssemblyFailToLoadQuickly=!1,this._isComponentRefreshPending=!1,this.initialComponents=[],t=()=>{this.rootComponentsMayRequireRefresh()},E.push(t)}onAfterRenderBatch(e){e===Bn.Server&&this.circuitMayHaveNoRootComponents()}onDocumentUpdated(){this.rootComponentsMayRequireRefresh()}onEnhancedNavigationCompleted(){this.rootComponentsMayRequireRefresh()}registerComponent(e){if(this._seenDescriptors.has(e))return;"auto"!==e.type&&"webassembly"!==e.type||this.startLoadingWebAssemblyIfNotStarted();const t=this._nextSsrComponentId++;this._seenDescriptors.add(e),this._rootComponentsBySsrComponentId.set(t,{descriptor:e,ssrComponentId:t})}unregisterComponent(e){this._seenDescriptors.delete(e.descriptor),this._rootComponentsBySsrComponentId.delete(e.ssrComponentId),this.circuitMayHaveNoRootComponents()}async startLoadingWebAssemblyIfNotStarted(){if(void 0!==Wr)return;Vr=!0;const e=ti();setTimeout((()=>{ni()||this.onWebAssemblyFailedToLoadQuickly()}),vt._internal.loadWebAssemblyQuicklyTimeout);const t=await Xr;(function(e){if(!e.cacheBootResources)return!1;const t=Hi(e);if(!t)return!1;const n=window.localStorage.getItem(t.key);return t.value===n})(t)||this.onWebAssemblyFailedToLoadQuickly(),await e,function(e){const t=Hi(e);t&&window.localStorage.setItem(t.key,t.value)}(t),this.rootComponentsMayRequireRefresh()}onWebAssemblyFailedToLoadQuickly(){this._didWebAssemblyFailToLoadQuickly||(this._didWebAssemblyFailToLoadQuickly=!0,this.rootComponentsMayRequireRefresh())}startCircutIfNotStarted(){return void 0===Yo?tr(this):!Vo||Vo.isDisposedOrDisposing()?or():void 0}async startWebAssemblyIfNotStarted(){this.startLoadingWebAssemblyIfNotStarted(),void 0===jr&&await Zr(this)}rootComponentsMayRequireRefresh(){this._isComponentRefreshPending||(this._isComponentRefreshPending=!0,setTimeout((()=>{this._isComponentRefreshPending=!1,this.refreshRootComponents(this._rootComponentsBySsrComponentId.values())}),0))}circuitMayHaveNoRootComponents(){if(this.rendererHasExistingOrPendingComponents(Bn.Server,"server","auto"))return clearTimeout(this._circuitInactivityTimeoutId),void(this._circuitInactivityTimeoutId=void 0);void 0===this._circuitInactivityTimeoutId&&(this._circuitInactivityTimeoutId=setTimeout((()=>{this.rendererHasExistingOrPendingComponents(Bn.Server,"server","auto")||(async function(){await(null==Vo?void 0:Vo.dispose())}(),this._circuitInactivityTimeoutId=void 0)}),this._circuitInactivityTimeoutMs))}rendererHasComponents(e){const t=Ae(e);return void 0!==t&&t.getRootComponentCount()>0}rendererHasExistingOrPendingComponents(e,...t){if(this.rendererHasComponents(e))return!0;for(const{descriptor:{type:n},assignedRendererId:o}of this._rootComponentsBySsrComponentId.values()){if(o===e)return!0;if(void 0===o&&-1!==t.indexOf(n))return!0}return!1}refreshRootComponents(e){const t=new Map;for(const n of e){const e=this.determinePendingOperation(n);if(!e)continue;const o=n.assignedRendererId;if(!o)throw new Error("Descriptors must be assigned a renderer ID before getting used as root components");let r=t.get(o);r||(r=[],t.set(o,r)),r.push(e)}for(const[e,n]of t){const t={batchId:this._nextOperationBatchId++,operations:n};this._pendingOperationBatches[t.batchId]=t;const o=JSON.stringify(t);e===Bn.Server?rr(o):this.updateWebAssemblyRootComponents(o)}}updateWebAssemblyRootComponents(e){Kr?(Gr(e),Kr=!1):function(e){if(!jr)throw new Error("Blazor WebAssembly has not started.");if(!vt._internal.updateRootComponents)throw new Error("Blazor WebAssembly has not initialized.");Jr?vt._internal.updateRootComponents(e):async function(e){if(await jr,!vt._internal.updateRootComponents)throw new Error("Blazor WebAssembly has not initialized.");vt._internal.updateRootComponents(e)}(e)}(e)}resolveRendererIdForDescriptor(e){switch("auto"===e.type?this.getAutoRenderMode():e.type){case"server":return this.startCircutIfNotStarted(),Bn.Server;case"webassembly":return this.startWebAssemblyIfNotStarted(),Bn.WebAssembly;case null:return null}}getAutoRenderMode(){return this.rendererHasExistingOrPendingComponents(Bn.WebAssembly,"webassembly")?"webassembly":this.rendererHasExistingOrPendingComponents(Bn.Server,"server")?"server":ni()?"webassembly":this._didWebAssemblyFailToLoadQuickly?"server":null}determinePendingOperation(e){if(t=e.descriptor,document.contains(t.start)){if(void 0===e.assignedRendererId){if(gi||"loading"===document.readyState)return null;const t=this.resolveRendererIdForDescriptor(e.descriptor);return null===t?null:T(t)?(be(e.descriptor.start,!0),e.assignedRendererId=t,e.uniqueIdAtLastUpdate=e.descriptor.uniqueId,{type:"add",ssrComponentId:e.ssrComponentId,marker:Ut(e.descriptor)}):null}return T(e.assignedRendererId)?e.uniqueIdAtLastUpdate===e.descriptor.uniqueId?null:(e.uniqueIdAtLastUpdate=e.descriptor.uniqueId,{type:"update",ssrComponentId:e.ssrComponentId,marker:Ut(e.descriptor)}):null}return e.hasPendingRemoveOperation?null:void 0===e.assignedRendererId?(this.unregisterComponent(e),null):T(e.assignedRendererId)?(be(e.descriptor.start,!1),e.hasPendingRemoveOperation=!0,{type:"remove",ssrComponentId:e.ssrComponentId}):null;var t}resolveRootComponent(e){const t=this._rootComponentsBySsrComponentId.get(e);if(!t)throw new Error(`Could not resolve a root component with SSR component ID '${e}'.`);return t.descriptor}onAfterUpdateRootComponents(e){const t=this._pendingOperationBatches[e];delete this._pendingOperationBatches[e];for(const e of t.operations)switch(e.type){case"remove":{const t=this._rootComponentsBySsrComponentId.get(e.ssrComponentId);t&&this.unregisterComponent(t);break}}}}function Hi(e){var t;const n=null===(t=e.resources)||void 0===t?void 0:t.hash,o=e.mainAssemblyName;return n&&o?{key:`blazor-resource-hash:${o}`,value:n}:null}class Wi{constructor(){this._eventListeners=new Map}static create(e){const t=new Wi;return e.addEventListener=t.addEventListener.bind(t),e.removeEventListener=t.removeEventListener.bind(t),t}addEventListener(e,t){let n=this._eventListeners.get(e);n||(n=new Set,this._eventListeners.set(e,n)),n.add(t)}removeEventListener(e,t){var n;null===(n=this._eventListeners.get(e))||void 0===n||n.delete(t)}dispatchEvent(e,t){const n=this._eventListeners.get(e);if(!n)return;const o={...t,type:e};for(const e of n)e(o)}}let ji,zi=!1;function qi(e){var t,n,o,r;if(zi)throw new Error("Blazor has already started.");zi=!0,null!==(t=(e=e||{}).logLevel)&&void 0!==t||(e.logLevel=yt.Error),vt._internal.loadWebAssemblyQuicklyTimeout=3e3,vt._internal.hotReloadApplied=()=>{Me()&&Ue(location.href,!0)},ji=new $i(null!==(o=null===(n=null==e?void 0:e.ssr)||void 0===n?void 0:n.circuitInactivityTimeoutMs)&&void 0!==o?o:2e3);const i=Wi.create(vt),s={documentUpdated:()=>{ji.onDocumentUpdated(),i.dispatchEvent("enhancedload",{})},enhancedNavigationCompleted(){ji.onEnhancedNavigationCompleted()}};return mi=ji,function(e,t){Bi=t,(null==e?void 0:e.disableDomPreservation)&&(Oi=!1),customElements.define("blazor-ssr-end",Fi)}(null==e?void 0:e.ssr,s),(null===(r=null==e?void 0:e.ssr)||void 0===r?void 0:r.disableDomPreservation)||Di(s),"loading"===document.readyState?document.addEventListener("DOMContentLoaded",Ji.bind(null,e)):Ji(e),Promise.resolve()}function Ji(e){const t=Fo((null==e?void 0:e.circuit)||{});e.circuit=t;const n=async function(e,t){var n;const o=kt(document,Et,"initializers");if(!o)return new qo(!1,t);const r=null!==(n=JSON.parse(atob(o)))&&void 0!==n?n:[],i=new qo(!1,t);return await i.importInitializersAsync(r,[e]),i}(e,new bt(t.logLevel));er(Ki(n,t)),function(e){if($r)throw new Error("WebAssembly options have already been configured.");!async function(e){const t=await e;$r=t,Qr()}(e)}(Ki(n,(null==e?void 0:e.webAssembly)||{})),function(e){const t=Ci(document);for(const e of t)null==mi||mi.registerComponent(e)}(),ji.onDocumentUpdated(),async function(e){const t=await e;await t.invokeAfterStartedCallbacks(vt)}(n)}async function Ki(e,t){return await e,t}vt.start=qi,window.DotNet=e,document&&document.currentScript&&"false"!==document.currentScript.getAttribute("autostart")&&qi()})()})(); \ No newline at end of file +(()=>{var e={778:()=>{},77:()=>{},203:()=>{},200:()=>{},628:()=>{},321:()=>{}},t={};function n(o){var r=t[o];if(void 0!==r)return r.exports;var i=t[o]={exports:{}};return e[o](i,i.exports,n),i.exports}n.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),(()=>{"use strict";var e,t,o;!function(e){const t=[],n="__jsObjectId",o="__dotNetObject",r="__byte[]",i="__dotNetStream",s="__jsStreamReferenceLength";let a,c;class l{constructor(e){this._jsObject=e,this._cachedFunctions=new Map}findFunction(e){const t=this._cachedFunctions.get(e);if(t)return t;let n,o=this._jsObject;if(e.split(".").forEach((t=>{if(!(t in o))throw new Error(`Could not find '${e}' ('${t}' was undefined).`);n=o,o=o[t]})),o instanceof Function)return o=o.bind(n),this._cachedFunctions.set(e,o),o;throw new Error(`The value '${e}' is not a function.`)}getWrappedObject(){return this._jsObject}}const h={0:new l(window)};h[0]._cachedFunctions.set("import",(e=>("string"==typeof e&&e.startsWith("./")&&(e=new URL(e.substr(2),document.baseURI).toString()),import(e))));let d,u=1;function p(e){t.push(e)}function f(e){if(e&&"object"==typeof e){h[u]=new l(e);const t={[n]:u};return u++,t}throw new Error(`Cannot create a JSObjectReference from the value '${e}'.`)}function g(e){let t=-1;if(e instanceof ArrayBuffer&&(e=new Uint8Array(e)),e instanceof Blob)t=e.size;else{if(!(e.buffer instanceof ArrayBuffer))throw new Error("Supplied value is not a typed array or blob.");if(void 0===e.byteLength)throw new Error(`Cannot create a JSStreamReference from the value '${e}' as it doesn't have a byteLength.`);t=e.byteLength}const o={[s]:t};try{const t=f(e);o[n]=t[n]}catch(t){throw new Error(`Cannot create a JSStreamReference from the value '${e}'.`)}return o}function m(e,n){c=e;const o=n?JSON.parse(n,((e,n)=>t.reduce(((t,n)=>n(e,t)),n))):null;return c=void 0,o}function v(){if(void 0===a)throw new Error("No call dispatcher has been set.");if(null===a)throw new Error("There are multiple .NET runtimes present, so a default dispatcher could not be resolved. Use DotNetObject to invoke .NET instance methods.");return a}e.attachDispatcher=function(e){const t=new y(e);return void 0===a?a=t:a&&(a=null),t},e.attachReviver=p,e.invokeMethod=function(e,t,...n){return v().invokeDotNetStaticMethod(e,t,...n)},e.invokeMethodAsync=function(e,t,...n){return v().invokeDotNetStaticMethodAsync(e,t,...n)},e.createJSObjectReference=f,e.createJSStreamReference=g,e.disposeJSObjectReference=function(e){const t=e&&e[n];"number"==typeof t&&_(t)},function(e){e[e.Default=0]="Default",e[e.JSObjectReference=1]="JSObjectReference",e[e.JSStreamReference=2]="JSStreamReference",e[e.JSVoidResult=3]="JSVoidResult"}(d=e.JSCallResultType||(e.JSCallResultType={}));class y{constructor(e){this._dotNetCallDispatcher=e,this._byteArraysToBeRevived=new Map,this._pendingDotNetToJSStreams=new Map,this._pendingAsyncCalls={},this._nextAsyncCallId=1}getDotNetCallDispatcher(){return this._dotNetCallDispatcher}invokeJSFromDotNet(e,t,n,o){const r=m(this,t),i=I(b(e,o)(...r||[]),n);return null==i?null:T(this,i)}beginInvokeJSFromDotNet(e,t,n,o,r){const i=new Promise((e=>{const o=m(this,n);e(b(t,r)(...o||[]))}));e&&i.then((t=>T(this,[e,!0,I(t,o)]))).then((t=>this._dotNetCallDispatcher.endInvokeJSFromDotNet(e,!0,t)),(t=>this._dotNetCallDispatcher.endInvokeJSFromDotNet(e,!1,JSON.stringify([e,!1,w(t)]))))}endInvokeDotNetFromJS(e,t,n){const o=t?m(this,n):new Error(n);this.completePendingCall(parseInt(e,10),t,o)}invokeDotNetStaticMethod(e,t,...n){return this.invokeDotNetMethod(e,t,null,n)}invokeDotNetStaticMethodAsync(e,t,...n){return this.invokeDotNetMethodAsync(e,t,null,n)}invokeDotNetMethod(e,t,n,o){if(this._dotNetCallDispatcher.invokeDotNetFromJS){const r=T(this,o),i=this._dotNetCallDispatcher.invokeDotNetFromJS(e,t,n,r);return i?m(this,i):null}throw new Error("The current dispatcher does not support synchronous calls from JS to .NET. Use invokeDotNetMethodAsync instead.")}invokeDotNetMethodAsync(e,t,n,o){if(e&&n)throw new Error(`For instance method calls, assemblyName should be null. Received '${e}'.`);const r=this._nextAsyncCallId++,i=new Promise(((e,t)=>{this._pendingAsyncCalls[r]={resolve:e,reject:t}}));try{const i=T(this,o);this._dotNetCallDispatcher.beginInvokeDotNetFromJS(r,e,t,n,i)}catch(e){this.completePendingCall(r,!1,e)}return i}receiveByteArray(e,t){this._byteArraysToBeRevived.set(e,t)}processByteArray(e){const t=this._byteArraysToBeRevived.get(e);return t?(this._byteArraysToBeRevived.delete(e),t):null}supplyDotNetStream(e,t){if(this._pendingDotNetToJSStreams.has(e)){const n=this._pendingDotNetToJSStreams.get(e);this._pendingDotNetToJSStreams.delete(e),n.resolve(t)}else{const n=new E;n.resolve(t),this._pendingDotNetToJSStreams.set(e,n)}}getDotNetStreamPromise(e){let t;if(this._pendingDotNetToJSStreams.has(e))t=this._pendingDotNetToJSStreams.get(e).streamPromise,this._pendingDotNetToJSStreams.delete(e);else{const n=new E;this._pendingDotNetToJSStreams.set(e,n),t=n.streamPromise}return t}completePendingCall(e,t,n){if(!this._pendingAsyncCalls.hasOwnProperty(e))throw new Error(`There is no pending async call with ID ${e}.`);const o=this._pendingAsyncCalls[e];delete this._pendingAsyncCalls[e],t?o.resolve(n):o.reject(n)}}function w(e){return e instanceof Error?`${e.message}\n${e.stack}`:e?e.toString():"null"}function b(e,t){const n=h[t];if(n)return n.findFunction(e);throw new Error(`JS object instance with ID ${t} does not exist (has it been disposed?).`)}function _(e){delete h[e]}e.findJSFunction=b,e.disposeJSObjectReferenceById=_;class S{constructor(e,t){this._id=e,this._callDispatcher=t}invokeMethod(e,...t){return this._callDispatcher.invokeDotNetMethod(null,e,this._id,t)}invokeMethodAsync(e,...t){return this._callDispatcher.invokeDotNetMethodAsync(null,e,this._id,t)}dispose(){this._callDispatcher.invokeDotNetMethodAsync(null,"__Dispose",this._id,null).catch((e=>console.error(e)))}serializeAsArg(){return{[o]:this._id}}}e.DotNetObject=S,p((function(e,t){if(t&&"object"==typeof t){if(t.hasOwnProperty(o))return new S(t[o],c);if(t.hasOwnProperty(n)){const e=t[n],o=h[e];if(o)return o.getWrappedObject();throw new Error(`JS object instance with Id '${e}' does not exist. It may have been disposed.`)}if(t.hasOwnProperty(r)){const e=t[r],n=c.processByteArray(e);if(void 0===n)throw new Error(`Byte array index '${e}' does not exist.`);return n}if(t.hasOwnProperty(i)){const e=t[i],n=c.getDotNetStreamPromise(e);return new C(n)}}return t}));class C{constructor(e){this._streamPromise=e}stream(){return this._streamPromise}async arrayBuffer(){return new Response(await this.stream()).arrayBuffer()}}class E{constructor(){this.streamPromise=new Promise(((e,t)=>{this.resolve=e,this.reject=t}))}}function I(e,t){switch(t){case d.Default:return e;case d.JSObjectReference:return f(e);case d.JSStreamReference:return g(e);case d.JSVoidResult:return null;default:throw new Error(`Invalid JS call result type '${t}'.`)}}let k=0;function T(e,t){k=0,c=e;const n=JSON.stringify(t,R);return c=void 0,n}function R(e,t){if(t instanceof S)return t.serializeAsArg();if(t instanceof Uint8Array){c.getDotNetCallDispatcher().sendByteArray(k,t);const e={[r]:k};return k++,e}return t}}(e||(e={})),function(e){e[e.prependFrame=1]="prependFrame",e[e.removeFrame=2]="removeFrame",e[e.setAttribute=3]="setAttribute",e[e.removeAttribute=4]="removeAttribute",e[e.updateText=5]="updateText",e[e.stepIn=6]="stepIn",e[e.stepOut=7]="stepOut",e[e.updateMarkup=8]="updateMarkup",e[e.permutationListEntry=9]="permutationListEntry",e[e.permutationListEnd=10]="permutationListEnd"}(t||(t={})),function(e){e[e.element=1]="element",e[e.text=2]="text",e[e.attribute=3]="attribute",e[e.component=4]="component",e[e.region=5]="region",e[e.elementReferenceCapture=6]="elementReferenceCapture",e[e.markup=8]="markup",e[e.namedEvent=10]="namedEvent"}(o||(o={}));class r{constructor(e,t){this.componentId=e,this.fieldValue=t}static fromEvent(e,t){const n=t.target;if(n instanceof Element){const t=function(e){return e instanceof HTMLInputElement?e.type&&"checkbox"===e.type.toLowerCase()?{value:e.checked}:{value:e.value}:e instanceof HTMLSelectElement||e instanceof HTMLTextAreaElement?{value:e.value}:null}(n);if(t)return new r(e,t.value)}return null}}const i=new Map,s=new Map,a=[];function c(e){return i.get(e)}function l(e){const t=i.get(e);return(null==t?void 0:t.browserEventName)||e}function h(e,t){e.forEach((e=>i.set(e,t)))}function d(e){const t=[];for(let n=0;ne.selected)).map((e=>e.value))}}{const e=function(e){return!!e&&"INPUT"===e.tagName&&"checkbox"===e.getAttribute("type")}(t);return{value:e?!!t.checked:t.value}}}}),h(["copy","cut","paste"],{createEventArgs:e=>({type:e.type})}),h(["drag","dragend","dragenter","dragleave","dragover","dragstart","drop"],{createEventArgs:e=>{return{...u(t=e),dataTransfer:t.dataTransfer?{dropEffect:t.dataTransfer.dropEffect,effectAllowed:t.dataTransfer.effectAllowed,files:Array.from(t.dataTransfer.files).map((e=>e.name)),items:Array.from(t.dataTransfer.items).map((e=>({kind:e.kind,type:e.type}))),types:t.dataTransfer.types}:null};var t}}),h(["focus","blur","focusin","focusout"],{createEventArgs:e=>({type:e.type})}),h(["keydown","keyup","keypress"],{createEventArgs:e=>{return{key:(t=e).key,code:t.code,location:t.location,repeat:t.repeat,ctrlKey:t.ctrlKey,shiftKey:t.shiftKey,altKey:t.altKey,metaKey:t.metaKey,type:t.type};var t}}),h(["contextmenu","click","mouseover","mouseout","mousemove","mousedown","mouseup","mouseleave","mouseenter","dblclick"],{createEventArgs:e=>u(e)}),h(["error"],{createEventArgs:e=>{return{message:(t=e).message,filename:t.filename,lineno:t.lineno,colno:t.colno,type:t.type};var t}}),h(["loadstart","timeout","abort","load","loadend","progress"],{createEventArgs:e=>{return{lengthComputable:(t=e).lengthComputable,loaded:t.loaded,total:t.total,type:t.type};var t}}),h(["touchcancel","touchend","touchmove","touchenter","touchleave","touchstart"],{createEventArgs:e=>{return{detail:(t=e).detail,touches:d(t.touches),targetTouches:d(t.targetTouches),changedTouches:d(t.changedTouches),ctrlKey:t.ctrlKey,shiftKey:t.shiftKey,altKey:t.altKey,metaKey:t.metaKey,type:t.type};var t}}),h(["gotpointercapture","lostpointercapture","pointercancel","pointerdown","pointerenter","pointerleave","pointermove","pointerout","pointerover","pointerup"],{createEventArgs:e=>{return{...u(t=e),pointerId:t.pointerId,width:t.width,height:t.height,pressure:t.pressure,tiltX:t.tiltX,tiltY:t.tiltY,pointerType:t.pointerType,isPrimary:t.isPrimary};var t}}),h(["wheel","mousewheel"],{createEventArgs:e=>{return{...u(t=e),deltaX:t.deltaX,deltaY:t.deltaY,deltaZ:t.deltaZ,deltaMode:t.deltaMode};var t}}),h(["cancel","close","toggle"],{createEventArgs:()=>({})});const p=["date","datetime-local","month","time","week"],f=new Map;let g,m,v=0;const y={async add(e,t,n){if(!n)throw new Error("initialParameters must be an object, even if empty.");const o="__bl-dynamic-root:"+(++v).toString();f.set(o,e);const r=await S().invokeMethodAsync("AddRootComponent",t,o),i=new _(r,m[t]);return await i.setParameters(n),i}};function w(e){const t=f.get(e);if(t)return f.delete(e),t}class b{invoke(e){return this._callback(e)}setCallback(t){this._selfJSObjectReference||(this._selfJSObjectReference=e.createJSObjectReference(this)),this._callback=t}getJSObjectReference(){return this._selfJSObjectReference}dispose(){this._selfJSObjectReference&&e.disposeJSObjectReference(this._selfJSObjectReference)}}class _{constructor(e,t){this._jsEventCallbackWrappers=new Map,this._componentId=e;for(const e of t)"eventcallback"===e.type&&this._jsEventCallbackWrappers.set(e.name.toLowerCase(),new b)}setParameters(e){const t={},n=Object.entries(e||{}),o=n.length;for(const[e,o]of n){const n=this._jsEventCallbackWrappers.get(e.toLowerCase());n&&o?(n.setCallback(o),t[e]=n.getJSObjectReference()):t[e]=o}return S().invokeMethodAsync("SetRootComponentParameters",this._componentId,o,t)}async dispose(){if(null!==this._componentId){await S().invokeMethodAsync("RemoveRootComponent",this._componentId),this._componentId=null;for(const e of this._jsEventCallbackWrappers.values())e.dispose()}}}function S(){if(!g)throw new Error("Dynamic root components have not been enabled in this application.");return g}const C=new Map,E=[],I=new Map;function k(t,n,o,r){var i,s;if(C.has(t))throw new Error(`Interop methods are already registered for renderer ${t}`);C.set(t,n),o&&r&&Object.keys(o).length>0&&function(t,n,o){if(g)throw new Error("Dynamic root components have already been enabled.");g=t,m=n;for(const[t,r]of Object.entries(o)){const o=e.findJSFunction(t,0);for(const e of r)o(e,n[e])}}(D(t),o,r),null===(s=null===(i=I.get(t))||void 0===i?void 0:i[0])||void 0===s||s.call(i),function(e){for(const t of E)t(e)}(t)}function T(e){return C.has(e)}function R(e,t,n){return A(e,t.eventHandlerId,(()=>D(e).invokeMethodAsync("DispatchEventAsync",t,n)))}function D(e){const t=C.get(e);if(!t)throw new Error(`No interop methods are registered for renderer ${e}`);return t}let A=(e,t,n)=>n();const x=B(["abort","blur","cancel","canplay","canplaythrough","change","close","cuechange","durationchange","emptied","ended","error","focus","load","loadeddata","loadedmetadata","loadend","loadstart","mouseenter","mouseleave","pointerenter","pointerleave","pause","play","playing","progress","ratechange","reset","scroll","seeked","seeking","stalled","submit","suspend","timeupdate","toggle","unload","volumechange","waiting","DOMNodeInsertedIntoDocument","DOMNodeRemovedFromDocument"]),N={submit:!0},P=B(["click","dblclick","mousedown","mousemove","mouseup"]);class M{constructor(e){this.browserRendererId=e,this.afterClickCallbacks=[];const t=++M.nextEventDelegatorId;this.eventsCollectionKey=`_blazorEvents_${t}`,this.eventInfoStore=new U(this.onGlobalEvent.bind(this))}setListener(e,t,n,o){const r=this.getEventHandlerInfosForElement(e,!0),i=r.getHandler(t);if(i)this.eventInfoStore.update(i.eventHandlerId,n);else{const i={element:e,eventName:t,eventHandlerId:n,renderingComponentId:o};this.eventInfoStore.add(i),r.setHandler(t,i)}}getHandler(e){return this.eventInfoStore.get(e)}removeListener(e){const t=this.eventInfoStore.remove(e);if(t){const e=t.element,n=this.getEventHandlerInfosForElement(e,!1);n&&n.removeHandler(t.eventName)}}notifyAfterClick(e){this.afterClickCallbacks.push(e),this.eventInfoStore.addGlobalListener("click")}setStopPropagation(e,t,n){this.getEventHandlerInfosForElement(e,!0).stopPropagation(t,n)}setPreventDefault(e,t,n){this.getEventHandlerInfosForElement(e,!0).preventDefault(t,n)}onGlobalEvent(e){if(!(e.target instanceof Element))return;this.dispatchGlobalEventToAllElements(e.type,e);const t=(n=e.type,s.get(n));var n;t&&t.forEach((t=>this.dispatchGlobalEventToAllElements(t,e))),"click"===e.type&&this.afterClickCallbacks.forEach((t=>t(e)))}dispatchGlobalEventToAllElements(e,t){const n=t.composedPath();let o=n.shift(),i=null,s=!1;const a=Object.prototype.hasOwnProperty.call(x,e);let l=!1;for(;o;){const u=o,p=this.getEventHandlerInfosForElement(u,!1);if(p){const n=p.getHandler(e);if(n&&(h=u,d=t.type,!((h instanceof HTMLButtonElement||h instanceof HTMLInputElement||h instanceof HTMLTextAreaElement||h instanceof HTMLSelectElement)&&Object.prototype.hasOwnProperty.call(P,d)&&h.disabled))){if(!s){const n=c(e);i=(null==n?void 0:n.createEventArgs)?n.createEventArgs(t):{},s=!0}Object.prototype.hasOwnProperty.call(N,t.type)&&t.preventDefault(),R(this.browserRendererId,{eventHandlerId:n.eventHandlerId,eventName:e,eventFieldInfo:r.fromEvent(n.renderingComponentId,t)},i)}p.stopPropagation(e)&&(l=!0),p.preventDefault(e)&&t.preventDefault()}o=a||l?void 0:n.shift()}var h,d}getEventHandlerInfosForElement(e,t){return Object.prototype.hasOwnProperty.call(e,this.eventsCollectionKey)?e[this.eventsCollectionKey]:t?e[this.eventsCollectionKey]=new L:null}}M.nextEventDelegatorId=0;class U{constructor(e){this.globalListener=e,this.infosByEventHandlerId={},this.countByEventName={},a.push(this.handleEventNameAliasAdded.bind(this))}add(e){if(this.infosByEventHandlerId[e.eventHandlerId])throw new Error(`Event ${e.eventHandlerId} is already tracked`);this.infosByEventHandlerId[e.eventHandlerId]=e,this.addGlobalListener(e.eventName)}get(e){return this.infosByEventHandlerId[e]}addGlobalListener(e){if(e=l(e),Object.prototype.hasOwnProperty.call(this.countByEventName,e))this.countByEventName[e]++;else{this.countByEventName[e]=1;const t=Object.prototype.hasOwnProperty.call(x,e);document.addEventListener(e,this.globalListener,t)}}update(e,t){if(Object.prototype.hasOwnProperty.call(this.infosByEventHandlerId,t))throw new Error(`Event ${t} is already tracked`);const n=this.infosByEventHandlerId[e];delete this.infosByEventHandlerId[e],n.eventHandlerId=t,this.infosByEventHandlerId[t]=n}remove(e){const t=this.infosByEventHandlerId[e];if(t){delete this.infosByEventHandlerId[e];const n=l(t.eventName);0==--this.countByEventName[n]&&(delete this.countByEventName[n],document.removeEventListener(n,this.globalListener))}return t}handleEventNameAliasAdded(e,t){if(Object.prototype.hasOwnProperty.call(this.countByEventName,e)){const n=this.countByEventName[e];delete this.countByEventName[e],document.removeEventListener(e,this.globalListener),this.addGlobalListener(t),this.countByEventName[t]+=n-1}}}class L{constructor(){this.handlers={},this.preventDefaultFlags=null,this.stopPropagationFlags=null}getHandler(e){return Object.prototype.hasOwnProperty.call(this.handlers,e)?this.handlers[e]:null}setHandler(e,t){this.handlers[e]=t}removeHandler(e){delete this.handlers[e]}preventDefault(e,t){return void 0!==t&&(this.preventDefaultFlags=this.preventDefaultFlags||{},this.preventDefaultFlags[e]=t),!!this.preventDefaultFlags&&this.preventDefaultFlags[e]}stopPropagation(e,t){return void 0!==t&&(this.stopPropagationFlags=this.stopPropagationFlags||{},this.stopPropagationFlags[e]=t),!!this.stopPropagationFlags&&this.stopPropagationFlags[e]}}function B(e){const t={};return e.forEach((e=>{t[e]=!0})),t}const O=Symbol(),F=Symbol(),$=Symbol();function H(e){const{start:t,end:n}=e,o=t[$];if(o){if(o!==e)throw new Error("The start component comment was already associated with another component descriptor.");return t}const r=t.parentNode;if(!r)throw new Error(`Comment not connected to the DOM ${t.textContent}`);const i=W(r,!0),s=Y(i);t[F]=i,t[$]=e;const a=W(t);if(n){const e=Y(a),o=Array.prototype.indexOf.call(s,a)+1;let r=null;for(;r!==n;){const n=s.splice(o,1)[0];if(!n)throw new Error("Could not find the end component comment in the parent logical node list");n[F]=t,e.push(n),r=n}}return a}function W(e,t){if(O in e)return e;const n=[];if(e.childNodes.length>0){if(!t)throw new Error("New logical elements must start empty, or allowExistingContents must be true");e.childNodes.forEach((t=>{const o=W(t,!0);o[F]=e,n.push(o)}))}return e[O]=n,e}function j(e){const t=Y(e);for(;t.length;)J(e,0)}function z(e,t){const n=document.createComment("!");return q(n,e,t),n}function q(e,t,n){const o=e;let r=e;if(Z(e)){const t=oe(o);if(t!==e){const n=new Range;n.setStartBefore(e),n.setEndAfter(t),r=n.extractContents()}}const i=K(o);if(i){const e=Y(i),t=Array.prototype.indexOf.call(e,o);e.splice(t,1),delete o[F]}const s=Y(t);if(n0;)J(n,0)}const o=n;o.parentNode.removeChild(o)}function K(e){return e[F]||null}function V(e,t){return Y(e)[t]}function X(e){return e[$]||null}function G(e){const t=te(e);return"http://www.w3.org/2000/svg"===t.namespaceURI&&"foreignObject"!==t.tagName}function Y(e){return e[O]}function Q(e){const t=Y(K(e));return t[Array.prototype.indexOf.call(t,e)+1]||null}function Z(e){return O in e}function ee(e,t){const n=Y(e);t.forEach((e=>{e.moveRangeStart=n[e.fromSiblingIndex],e.moveRangeEnd=oe(e.moveRangeStart)})),t.forEach((t=>{const o=document.createComment("marker");t.moveToBeforeMarker=o;const r=n[t.toSiblingIndex+1];r?r.parentNode.insertBefore(o,r):ne(o,e)})),t.forEach((e=>{const t=e.moveToBeforeMarker,n=t.parentNode,o=e.moveRangeStart,r=e.moveRangeEnd;let i=o;for(;i;){const e=i.nextSibling;if(n.insertBefore(i,t),i===r)break;i=e}n.removeChild(t)})),t.forEach((e=>{n[e.toSiblingIndex]=e.moveRangeStart}))}function te(e){if(e instanceof Element||e instanceof DocumentFragment)return e;if(e instanceof Comment)return e.parentNode;throw new Error("Not a valid logical element")}function ne(e,t){if(t instanceof Element||t instanceof DocumentFragment)t.appendChild(e);else{if(!(t instanceof Comment))throw new Error(`Cannot append node because the parent is not a valid logical element. Parent: ${t}`);{const n=Q(t);n?n.parentNode.insertBefore(e,n):ne(e,K(t))}}}function oe(e){if(e instanceof Element||e instanceof DocumentFragment)return e;const t=Q(e);if(t)return t.previousSibling;{const t=K(e);return t instanceof Element||t instanceof DocumentFragment?t.lastChild:oe(t)}}function re(e){return`_bl_${e}`}const ie="__internalId";e.attachReviver(((e,t)=>t&&"object"==typeof t&&Object.prototype.hasOwnProperty.call(t,ie)&&"string"==typeof t[ie]?function(e){const t=`[${re(e)}]`;return document.querySelector(t)}(t[ie]):t));const se="_blazorDeferredValue";function ae(e){e instanceof HTMLOptionElement?de(e):se in e&&he(e,e[se])}function ce(e){return"select-multiple"===e.type}function le(e,t){e.value=t||""}function he(e,t){e instanceof HTMLSelectElement?ce(e)?function(e,t){t||(t=[]);for(let n=0;n{Oe()&&Ne(e,(e=>{Xe(e,!0,!1)}))}))}getRootComponentCount(){return this.rootComponentIds.size}attachRootComponentToLogicalElement(e,t,n){if(we(t))throw new Error(`Root component '${e}' could not be attached because its target element is already associated with a root component`);n&&(t=z(t,Y(t).length)),ye(t,!0),this.attachComponentToElement(e,t),this.rootComponentIds.add(e),fe.add(t)}updateComponent(e,t,n,o){var r;const i=this.childComponentLocations[t];if(!i)throw new Error(`No element is currently associated with component ${t}`);fe.delete(i)&&(j(i),i instanceof Comment&&(i.textContent="!"));const s=null===(r=te(i))||void 0===r?void 0:r.getRootNode(),a=s&&s.activeElement;this.applyEdits(e,t,i,0,n,o),a instanceof HTMLElement&&s&&s.activeElement!==a&&a.focus()}disposeComponent(e){if(this.rootComponentIds.delete(e)){const t=this.childComponentLocations[e];ye(t,!1),!0===t[me]?fe.add(t):j(t)}delete this.childComponentLocations[e]}disposeEventHandler(e){this.eventDelegator.removeListener(e)}attachComponentToElement(e,t){this.childComponentLocations[e]=t}applyEdits(e,n,o,r,i,s){let a,c=0,l=r;const h=e.arrayBuilderSegmentReader,d=e.editReader,u=e.frameReader,p=h.values(i),f=h.offset(i),g=f+h.count(i);for(let i=f;i{const t=document.createElement("script");t.textContent=e.textContent,e.getAttributeNames().forEach((n=>{t.setAttribute(n,e.getAttribute(n))})),e.parentNode.replaceChild(t,e)})),ue.content));var s;let a=0;for(;i.firstChild;)q(i.firstChild,r,a++)}applyAttribute(e,t,n,o){const r=e.frameReader,i=r.attributeName(o),s=r.attributeEventHandlerId(o);if(s){const e=Se(i);return void this.eventDelegator.setListener(n,e,s,t)}const a=r.attributeValue(o);this.setOrRemoveAttributeOrProperty(n,i,a)}insertFrameRange(e,t,n,o,r,i,s){const a=o;for(let a=i;a{et(t,e)})},enableNavigationInterception:function(e){if(void 0!==Ee&&Ee!==e)throw new Error("Only one interactive runtime may enable navigation interception at a time.");Ee=e},setHasLocationChangingListeners:function(e,t){const n=je.get(e);if(!n)throw new Error(`Renderer with ID '${e}' is not listening for navigation events`);n.hasLocationChangingEventListeners=t},endLocationChanging:function(e,t){qe&&e===We&&(qe(t),qe=null)},navigateTo:function(e,t){Ve(e,t,!0)},refresh:function(e){!e&&Me()?Ue(location.href,!0):location.reload()},getBaseURI:()=>document.baseURI,getLocationHref:()=>location.href,scrollToElement:Ke};function Ke(e){const t=document.getElementById(e);return!!t&&(t.scrollIntoView(),!0)}function Ve(e,t,n=!1){const o=Le(e);!t.forceLoad&&Pe(o)?ot()?Xe(o,!1,t.replaceHistoryEntry,t.historyEntryState,n):Ue(o,t.replaceHistoryEntry):function(e,t){if(location.href===e){const t=e+"?";history.replaceState(null,"",t),location.replace(e)}else t?location.replace(e):location.href=e}(e,t.replaceHistoryEntry)}async function Xe(e,t,n,o=void 0,r=!1){if(Qe(),function(e){const t=e.indexOf("#");return t>-1&&location.href.replace(location.hash,"")===e.substring(0,t)}(e))return void function(e,t,n){Ge(e,t,n);const o=e.indexOf("#");o!==e.length-1&&Ke(e.substring(o+1))}(e,n,o);const i=nt();(r||!(null==i?void 0:i.hasLocationChangingEventListeners)||await Ze(e,o,t,i))&&(Re=!0,Ge(e,n,o),await et(t))}function Ge(e,t,n=void 0){t?history.replaceState({userState:n,_index:He},"",e):(He++,history.pushState({userState:n,_index:He},"",e))}function Ye(e){return new Promise((t=>{const n=ze;ze=()=>{ze=n,t()},history.go(e)}))}function Qe(){qe&&(qe(!1),qe=null)}function Ze(e,t,n,o){return new Promise((r=>{Qe(),We++,qe=r,o.locationChanging(We,e,t,n)}))}async function et(e,t){const n=null!=t?t:location.href;await Promise.all(Array.from(je,(async([t,o])=>{var r;T(t)&&await o.locationChanged(n,null===(r=history.state)||void 0===r?void 0:r.userState,e)})))}async function tt(e){var t,n;ze&&ot()&&await ze(e),He=null!==(n=null===(t=history.state)||void 0===t?void 0:t._index)&&void 0!==n?n:0}function nt(){const e=Fe();if(void 0!==e)return je.get(e)}function ot(){return Oe()||!Me()}const rt={focus:function(e,t){if(e instanceof HTMLElement)e.focus({preventScroll:t});else{if(!(e instanceof SVGElement))throw new Error("Unable to focus an invalid element.");if(!e.hasAttribute("tabindex"))throw new Error("Unable to focus an SVG element that does not have a tabindex.");e.focus({preventScroll:t})}},focusBySelector:function(e,t){const n=document.querySelector(e);n&&(n.hasAttribute("tabindex")||(n.tabIndex=-1),n.focus({preventScroll:!0}))}},it={init:function(e,t,n,o=50){const r=at(t);(r||document.documentElement).style.overflowAnchor="none";const i=document.createRange();u(n.parentElement)&&(t.style.display="table-row",n.style.display="table-row");const s=new IntersectionObserver((function(o){o.forEach((o=>{var r;if(!o.isIntersecting)return;i.setStartAfter(t),i.setEndBefore(n);const s=i.getBoundingClientRect().height,a=null===(r=o.rootBounds)||void 0===r?void 0:r.height;o.target===t?e.invokeMethodAsync("OnSpacerBeforeVisible",o.intersectionRect.top-o.boundingClientRect.top,s,a):o.target===n&&n.offsetHeight>0&&e.invokeMethodAsync("OnSpacerAfterVisible",o.boundingClientRect.bottom-o.intersectionRect.bottom,s,a)}))}),{root:r,rootMargin:`${o}px`});s.observe(t),s.observe(n);const a=d(t),c=d(n),{observersByDotNetObjectId:l,id:h}=ct(e);function d(e){const t={attributes:!0},n=new MutationObserver(((n,o)=>{u(e.parentElement)&&(o.disconnect(),e.style.display="table-row",o.observe(e,t)),s.unobserve(e),s.observe(e)}));return n.observe(e,t),n}function u(e){return null!==e&&(e instanceof HTMLTableElement&&""===e.style.display||"table"===e.style.display||e instanceof HTMLTableSectionElement&&""===e.style.display||"table-row-group"===e.style.display)}l[h]={intersectionObserver:s,mutationObserverBefore:a,mutationObserverAfter:c}},dispose:function(e){const{observersByDotNetObjectId:t,id:n}=ct(e),o=t[n];o&&(o.intersectionObserver.disconnect(),o.mutationObserverBefore.disconnect(),o.mutationObserverAfter.disconnect(),e.dispose(),delete t[n])}},st=Symbol();function at(e){return e&&e!==document.body&&e!==document.documentElement?"visible"!==getComputedStyle(e).overflowY?e:at(e.parentElement):null}function ct(e){var t;const n=e._callDispatcher,o=e._id;return null!==(t=n[st])&&void 0!==t||(n[st]={}),{observersByDotNetObjectId:n[st],id:o}}const lt={getAndRemoveExistingTitle:function(){var e;const t=document.head?document.head.getElementsByTagName("title"):[];if(0===t.length)return null;let n=null;for(let o=t.length-1;o>=0;o--){const r=t[o],i=r.previousSibling;i instanceof Comment&&null!==K(i)||(null===n&&(n=r.textContent),null===(e=r.parentNode)||void 0===e||e.removeChild(r))}return n}},ht={init:function(e,t){t._blazorInputFileNextFileId=0,t.addEventListener("click",(function(){t.value=""})),t.addEventListener("change",(function(){t._blazorFilesById={};const n=Array.prototype.map.call(t.files,(function(e){const n={id:++t._blazorInputFileNextFileId,lastModified:new Date(e.lastModified).toISOString(),name:e.name,size:e.size,contentType:e.type,readPromise:void 0,arrayBuffer:void 0,blob:e};return t._blazorFilesById[n.id]=n,n}));e.invokeMethodAsync("NotifyChange",n)}))},toImageFile:async function(e,t,n,o,r){const i=dt(e,t),s=await new Promise((function(e){const t=new Image;t.onload=function(){URL.revokeObjectURL(t.src),e(t)},t.onerror=function(){t.onerror=null,URL.revokeObjectURL(t.src)},t.src=URL.createObjectURL(i.blob)})),a=await new Promise((function(e){var t;const i=Math.min(1,o/s.width),a=Math.min(1,r/s.height),c=Math.min(i,a),l=document.createElement("canvas");l.width=Math.round(s.width*c),l.height=Math.round(s.height*c),null===(t=l.getContext("2d"))||void 0===t||t.drawImage(s,0,0,l.width,l.height),l.toBlob(e,n)})),c={id:++e._blazorInputFileNextFileId,lastModified:i.lastModified,name:i.name,size:(null==a?void 0:a.size)||0,contentType:n,blob:a||i.blob};return e._blazorFilesById[c.id]=c,c},readFileData:async function(e,t){return dt(e,t).blob}};function dt(e,t){const n=e._blazorFilesById[t];if(!n)throw new Error(`There is no file with ID ${t}. The file list may have changed. See https://aka.ms/aspnet/blazor-input-file-multiple-selections.`);return n}const ut=new Set,pt={enableNavigationPrompt:function(e){0===ut.size&&window.addEventListener("beforeunload",ft),ut.add(e)},disableNavigationPrompt:function(e){ut.delete(e),0===ut.size&&window.removeEventListener("beforeunload",ft)}};function ft(e){e.preventDefault(),e.returnValue=!0}async function gt(e,t,n){return e instanceof Blob?await async function(e,t,n){const o=e.slice(t,t+n),r=await o.arrayBuffer();return new Uint8Array(r)}(e,t,n):function(e,t,n){return new Uint8Array(e.buffer,e.byteOffset+t,n)}(e,t,n)}const mt=new Map,vt={navigateTo:function(e,t,n=!1){Ve(e,t instanceof Object?t:{forceLoad:t,replaceHistoryEntry:n})},registerCustomEventType:function(e,t){if(!t)throw new Error("The options parameter is required.");if(i.has(e))throw new Error(`The event '${e}' is already registered.`);if(t.browserEventName){const n=s.get(t.browserEventName);n?n.push(e):s.set(t.browserEventName,[e]),a.forEach((n=>n(e,t.browserEventName)))}i.set(e,t)},rootComponents:y,runtime:{},_internal:{navigationManager:Je,domWrapper:rt,Virtualize:it,PageTitle:lt,InputFile:ht,NavigationLock:pt,getJSDataStreamChunk:gt,attachWebRendererInterop:k}};var yt;window.Blazor=vt,function(e){e[e.Trace=0]="Trace",e[e.Debug=1]="Debug",e[e.Information=2]="Information",e[e.Warning=3]="Warning",e[e.Error=4]="Error",e[e.Critical=5]="Critical",e[e.None=6]="None"}(yt||(yt={}));class wt{log(e,t){}}wt.instance=new wt;class bt{constructor(e){this.minLevel=e}log(e,t){if(e>=this.minLevel){const n=`[${(new Date).toISOString()}] ${yt[e]}: ${t}`;switch(e){case yt.Critical:case yt.Error:console.error(n);break;case yt.Warning:console.warn(n);break;case yt.Information:console.info(n);break;default:console.log(n)}}}}function _t(e,t){switch(t){case"webassembly":return Tt(e,"webassembly");case"server":return function(e){return Tt(e,"server").sort(((e,t)=>e.sequence-t.sequence))}(e);case"auto":return Tt(e,"auto")}}const St=/^\s*Blazor-Server-Component-State:(?[a-zA-Z0-9+/=]+)$/,Ct=/^\s*Blazor-WebAssembly-Component-State:(?[a-zA-Z0-9+/=]+)$/,Et=/^\s*Blazor-Web-Initializers:(?[a-zA-Z0-9+/=]+)$/;function It(e){return kt(e,St)}function kt(e,t,n="state"){var o;if(e.nodeType===Node.COMMENT_NODE){const r=e.textContent||"",i=t.exec(r),s=i&&i.groups&&i.groups[n];return s&&(null===(o=e.parentNode)||void 0===o||o.removeChild(e)),s}if(!e.hasChildNodes())return;const r=e.childNodes;for(let e=0;e.*)$/);function Dt(e,t){const n=e.currentElement;var o,r,i;if(n&&n.nodeType===Node.COMMENT_NODE&&n.textContent){const s=Rt.exec(n.textContent),a=s&&s.groups&&s.groups.descriptor;if(!a)return;!function(e){if(e.parentNode instanceof Document)throw new Error("Root components cannot be marked as interactive. The element must be rendered statically so that scripts are not evaluated multiple times.")}(n);try{const s=function(e){const t=JSON.parse(e),{type:n}=t;if("server"!==n&&"webassembly"!==n&&"auto"!==n)throw new Error(`Invalid component type '${n}'.`);return t}(a),c=function(e,t,n){const{prerenderId:o}=e;if(o){for(;n.next()&&n.currentElement;){const e=n.currentElement;if(e.nodeType!==Node.COMMENT_NODE)continue;if(!e.textContent)continue;const t=Rt.exec(e.textContent),r=t&&t[1];if(r)return Pt(r,o),e}throw new Error(`Could not find an end component comment for '${t}'.`)}}(s,n,e);if(t!==s.type)return;switch(s.type){case"webassembly":return r=n,i=c,Nt(o=s),{...o,uniqueId:At++,start:r,end:i};case"server":return function(e,t,n){return xt(e),{...e,uniqueId:At++,start:t,end:n}}(s,n,c);case"auto":return function(e,t,n){return xt(e),Nt(e),{...e,uniqueId:At++,start:t,end:n}}(s,n,c)}}catch(e){throw new Error(`Found malformed component comment at ${n.textContent}`)}}}let At=0;function xt(e){const{descriptor:t,sequence:n}=e;if(!t)throw new Error("descriptor must be defined when using a descriptor.");if(void 0===n)throw new Error("sequence must be defined when using a descriptor.");if(!Number.isInteger(n))throw new Error(`Error parsing the sequence '${n}' for component '${JSON.stringify(e)}'`)}function Nt(e){const{assembly:t,typeName:n}=e;if(!t)throw new Error("assembly must be defined when using a descriptor.");if(!n)throw new Error("typeName must be defined when using a descriptor.");e.parameterDefinitions=e.parameterDefinitions&&atob(e.parameterDefinitions),e.parameterValues=e.parameterValues&&atob(e.parameterValues)}function Pt(e,t){const n=JSON.parse(e);if(1!==Object.keys(n).length)throw new Error(`Invalid end of component comment: '${e}'`);const o=n.prerenderId;if(!o)throw new Error(`End of component comment must have a value for the prerendered property: '${e}'`);if(o!==t)throw new Error(`End of component comment prerendered property must match the start comment prerender id: '${t}', '${o}'`)}class Mt{constructor(e){this.childNodes=e,this.currentIndex=-1,this.length=e.length}next(){return this.currentIndex++,this.currentIndex{n+=`0x${e<16?"0":""}${e.toString(16)} `})),n.substr(0,n.length-1)}(e)}'`)):"string"==typeof e&&(n=`String data of length ${e.length}`,t&&(n+=`. Content: '${e}'`)),n}function zt(e){return e&&"undefined"!=typeof ArrayBuffer&&(e instanceof ArrayBuffer||e.constructor&&"ArrayBuffer"===e.constructor.name)}async function qt(e,t,n,o,r,i){const s={},[a,c]=Vt();s[a]=c,e.log(Ot.Trace,`(${t} transport) sending data. ${jt(r,i.logMessageContent)}.`);const l=zt(r)?"arraybuffer":"text",h=await n.post(o,{content:r,headers:{...s,...i.headers},responseType:l,timeout:i.timeout,withCredentials:i.withCredentials});e.log(Ot.Trace,`(${t} transport) request complete. Response status: ${h.statusCode}.`)}class Jt{constructor(e,t){this._subject=e,this._observer=t}dispose(){const e=this._subject.observers.indexOf(this._observer);e>-1&&this._subject.observers.splice(e,1),0===this._subject.observers.length&&this._subject.cancelCallback&&this._subject.cancelCallback().catch((e=>{}))}}class Kt{constructor(e){this._minLevel=e,this.out=console}log(e,t){if(e>=this._minLevel){const n=`[${(new Date).toISOString()}] ${Ot[e]}: ${t}`;switch(e){case Ot.Critical:case Ot.Error:this.out.error(n);break;case Ot.Warning:this.out.warn(n);break;case Ot.Information:this.out.info(n);break;default:this.out.log(n)}}}}function Vt(){let e="X-SignalR-User-Agent";return Wt.isNode&&(e="User-Agent"),[e,Xt($t,Gt(),Wt.isNode?"NodeJS":"Browser",Yt())]}function Xt(e,t,n,o){let r="Microsoft SignalR/";const i=e.split(".");return r+=`${i[0]}.${i[1]}`,r+=` (${e}; `,r+=t&&""!==t?`${t}; `:"Unknown OS; ",r+=`${n}`,r+=o?`; ${o}`:"; Unknown Runtime Version",r+=")",r}function Gt(){if(!Wt.isNode)return"";switch(process.platform){case"win32":return"Windows NT";case"darwin":return"macOS";case"linux":return"Linux";default:return process.platform}}function Yt(){if(Wt.isNode)return process.versions.node}function Qt(e){return e.stack?e.stack:e.message?e.message:`${e}`}class Zt{writeHandshakeRequest(e){return Bt.write(JSON.stringify(e))}parseHandshakeResponse(e){let t,n;if(zt(e)){const o=new Uint8Array(e),r=o.indexOf(Bt.RecordSeparatorCode);if(-1===r)throw new Error("Message is incomplete.");const i=r+1;t=String.fromCharCode.apply(null,Array.prototype.slice.call(o.slice(0,i))),n=o.byteLength>i?o.slice(i).buffer:null}else{const o=e,r=o.indexOf(Bt.RecordSeparator);if(-1===r)throw new Error("Message is incomplete.");const i=r+1;t=o.substring(0,i),n=o.length>i?o.substring(i):null}const o=Bt.parse(t),r=JSON.parse(o[0]);if(r.type)throw new Error("Expected a handshake response from the server.");return[n,r]}}class en extends Error{constructor(e,t){const n=new.target.prototype;super(`${e}: Status code '${t}'`),this.statusCode=t,this.__proto__=n}}class tn extends Error{constructor(e="A timeout occurred."){const t=new.target.prototype;super(e),this.__proto__=t}}class nn extends Error{constructor(e="An abort occurred."){const t=new.target.prototype;super(e),this.__proto__=t}}class on extends Error{constructor(e,t){const n=new.target.prototype;super(e),this.transport=t,this.errorType="UnsupportedTransportError",this.__proto__=n}}class rn extends Error{constructor(e,t){const n=new.target.prototype;super(e),this.transport=t,this.errorType="DisabledTransportError",this.__proto__=n}}class sn extends Error{constructor(e,t){const n=new.target.prototype;super(e),this.transport=t,this.errorType="FailedToStartTransportError",this.__proto__=n}}class an extends Error{constructor(e){const t=new.target.prototype;super(e),this.errorType="FailedToNegotiateWithServerError",this.__proto__=t}}class cn extends Error{constructor(e,t){const n=new.target.prototype;super(e),this.innerErrors=t,this.__proto__=n}}var ln,hn;!function(e){e[e.Invocation=1]="Invocation",e[e.StreamItem=2]="StreamItem",e[e.Completion=3]="Completion",e[e.StreamInvocation=4]="StreamInvocation",e[e.CancelInvocation=5]="CancelInvocation",e[e.Ping=6]="Ping",e[e.Close=7]="Close",e[e.Ack=8]="Ack",e[e.Sequence=9]="Sequence"}(ln||(ln={}));class dn{constructor(){this.observers=[]}next(e){for(const t of this.observers)t.next(e)}error(e){for(const t of this.observers)t.error&&t.error(e)}complete(){for(const e of this.observers)e.complete&&e.complete()}subscribe(e){return this.observers.push(e),new Jt(this,e)}}class un{constructor(e,t,n){this._bufferSize=1e5,this._messages=[],this._totalMessageCount=0,this._waitForSequenceMessage=!1,this._nextReceivingSequenceId=1,this._latestReceivedSequenceId=0,this._bufferedByteCount=0,this._reconnectInProgress=!1,this._protocol=e,this._connection=t,this._bufferSize=n}async _send(e){const t=this._protocol.writeMessage(e);let n=Promise.resolve();if(this._isInvocationMessage(e)){this._totalMessageCount++;let e=()=>{},o=()=>{};zt(t)?this._bufferedByteCount+=t.byteLength:this._bufferedByteCount+=t.length,this._bufferedByteCount>=this._bufferSize&&(n=new Promise(((t,n)=>{e=t,o=n}))),this._messages.push(new pn(t,this._totalMessageCount,e,o))}try{this._reconnectInProgress||await this._connection.send(t)}catch{this._disconnected()}await n}_ack(e){let t=-1;for(let n=0;nthis._nextReceivingSequenceId?this._connection.stop(new Error("Sequence ID greater than amount of messages we've received.")):this._nextReceivingSequenceId=e.sequenceId}_disconnected(){this._reconnectInProgress=!0,this._waitForSequenceMessage=!0}async _resend(){const e=0!==this._messages.length?this._messages[0]._id:this._totalMessageCount+1;await this._connection.send(this._protocol.writeMessage({type:ln.Sequence,sequenceId:e}));const t=this._messages;for(const e of t)await this._connection.send(e._message);this._reconnectInProgress=!1}_dispose(e){null!=e||(e=new Error("Unable to reconnect to server."));for(const t of this._messages)t._rejector(e)}_isInvocationMessage(e){switch(e.type){case ln.Invocation:case ln.StreamItem:case ln.Completion:case ln.StreamInvocation:case ln.CancelInvocation:return!0;case ln.Close:case ln.Sequence:case ln.Ping:case ln.Ack:return!1}}_ackTimer(){void 0===this._ackTimerHandle&&(this._ackTimerHandle=setTimeout((async()=>{try{this._reconnectInProgress||await this._connection.send(this._protocol.writeMessage({type:ln.Ack,sequenceId:this._latestReceivedSequenceId}))}catch{}clearTimeout(this._ackTimerHandle),this._ackTimerHandle=void 0}),1e3))}}class pn{constructor(e,t,n,o){this._message=e,this._id=t,this._resolver=n,this._rejector=o}}!function(e){e.Disconnected="Disconnected",e.Connecting="Connecting",e.Connected="Connected",e.Disconnecting="Disconnecting",e.Reconnecting="Reconnecting"}(hn||(hn={}));class fn{static create(e,t,n,o,r,i,s){return new fn(e,t,n,o,r,i,s)}constructor(e,t,n,o,r,i,s){this._nextKeepAlive=0,this._freezeEventListener=()=>{this._logger.log(Ot.Warning,"The page is being frozen, this will likely lead to the connection being closed and messages being lost. For more information see the docs at https://learn.microsoft.com/aspnet/core/signalr/javascript-client#bsleep")},Ht.isRequired(e,"connection"),Ht.isRequired(t,"logger"),Ht.isRequired(n,"protocol"),this.serverTimeoutInMilliseconds=null!=r?r:3e4,this.keepAliveIntervalInMilliseconds=null!=i?i:15e3,this._statefulReconnectBufferSize=null!=s?s:1e5,this._logger=t,this._protocol=n,this.connection=e,this._reconnectPolicy=o,this._handshakeProtocol=new Zt,this.connection.onreceive=e=>this._processIncomingData(e),this.connection.onclose=e=>this._connectionClosed(e),this._callbacks={},this._methods={},this._closedCallbacks=[],this._reconnectingCallbacks=[],this._reconnectedCallbacks=[],this._invocationId=0,this._receivedHandshakeResponse=!1,this._connectionState=hn.Disconnected,this._connectionStarted=!1,this._cachedPingMessage=this._protocol.writeMessage({type:ln.Ping})}get state(){return this._connectionState}get connectionId(){return this.connection&&this.connection.connectionId||null}get baseUrl(){return this.connection.baseUrl||""}set baseUrl(e){if(this._connectionState!==hn.Disconnected&&this._connectionState!==hn.Reconnecting)throw new Error("The HubConnection must be in the Disconnected or Reconnecting state to change the url.");if(!e)throw new Error("The HubConnection url must be a valid url.");this.connection.baseUrl=e}start(){return this._startPromise=this._startWithStateTransitions(),this._startPromise}async _startWithStateTransitions(){if(this._connectionState!==hn.Disconnected)return Promise.reject(new Error("Cannot start a HubConnection that is not in the 'Disconnected' state."));this._connectionState=hn.Connecting,this._logger.log(Ot.Debug,"Starting HubConnection.");try{await this._startInternal(),Wt.isBrowser&&window.document.addEventListener("freeze",this._freezeEventListener),this._connectionState=hn.Connected,this._connectionStarted=!0,this._logger.log(Ot.Debug,"HubConnection connected successfully.")}catch(e){return this._connectionState=hn.Disconnected,this._logger.log(Ot.Debug,`HubConnection failed to start successfully because of error '${e}'.`),Promise.reject(e)}}async _startInternal(){this._stopDuringStartError=void 0,this._receivedHandshakeResponse=!1;const e=new Promise(((e,t)=>{this._handshakeResolver=e,this._handshakeRejecter=t}));await this.connection.start(this._protocol.transferFormat);try{let t=this._protocol.version;this.connection.features.reconnect||(t=1);const n={protocol:this._protocol.name,version:t};if(this._logger.log(Ot.Debug,"Sending handshake request."),await this._sendMessage(this._handshakeProtocol.writeHandshakeRequest(n)),this._logger.log(Ot.Information,`Using HubProtocol '${this._protocol.name}'.`),this._cleanupTimeout(),this._resetTimeoutPeriod(),this._resetKeepAliveInterval(),await e,this._stopDuringStartError)throw this._stopDuringStartError;!!this.connection.features.reconnect&&(this._messageBuffer=new un(this._protocol,this.connection,this._statefulReconnectBufferSize),this.connection.features.disconnected=this._messageBuffer._disconnected.bind(this._messageBuffer),this.connection.features.resend=()=>{if(this._messageBuffer)return this._messageBuffer._resend()}),this.connection.features.inherentKeepAlive||await this._sendMessage(this._cachedPingMessage)}catch(e){throw this._logger.log(Ot.Debug,`Hub handshake failed with error '${e}' during start(). Stopping HubConnection.`),this._cleanupTimeout(),this._cleanupPingTimer(),await this.connection.stop(e),e}}async stop(){const e=this._startPromise;this.connection.features.reconnect=!1,this._stopPromise=this._stopInternal(),await this._stopPromise;try{await e}catch(e){}}_stopInternal(e){if(this._connectionState===hn.Disconnected)return this._logger.log(Ot.Debug,`Call to HubConnection.stop(${e}) ignored because it is already in the disconnected state.`),Promise.resolve();if(this._connectionState===hn.Disconnecting)return this._logger.log(Ot.Debug,`Call to HttpConnection.stop(${e}) ignored because the connection is already in the disconnecting state.`),this._stopPromise;const t=this._connectionState;return this._connectionState=hn.Disconnecting,this._logger.log(Ot.Debug,"Stopping HubConnection."),this._reconnectDelayHandle?(this._logger.log(Ot.Debug,"Connection stopped during reconnect delay. Done reconnecting."),clearTimeout(this._reconnectDelayHandle),this._reconnectDelayHandle=void 0,this._completeClose(),Promise.resolve()):(t===hn.Connected&&this._sendCloseMessage(),this._cleanupTimeout(),this._cleanupPingTimer(),this._stopDuringStartError=e||new nn("The connection was stopped before the hub handshake could complete."),this.connection.stop(e))}async _sendCloseMessage(){try{await this._sendWithProtocol(this._createCloseMessage())}catch{}}stream(e,...t){const[n,o]=this._replaceStreamingParams(t),r=this._createStreamInvocation(e,t,o);let i;const s=new dn;return s.cancelCallback=()=>{const e=this._createCancelInvocation(r.invocationId);return delete this._callbacks[r.invocationId],i.then((()=>this._sendWithProtocol(e)))},this._callbacks[r.invocationId]=(e,t)=>{t?s.error(t):e&&(e.type===ln.Completion?e.error?s.error(new Error(e.error)):s.complete():s.next(e.item))},i=this._sendWithProtocol(r).catch((e=>{s.error(e),delete this._callbacks[r.invocationId]})),this._launchStreams(n,i),s}_sendMessage(e){return this._resetKeepAliveInterval(),this.connection.send(e)}_sendWithProtocol(e){return this._messageBuffer?this._messageBuffer._send(e):this._sendMessage(this._protocol.writeMessage(e))}send(e,...t){const[n,o]=this._replaceStreamingParams(t),r=this._sendWithProtocol(this._createInvocation(e,t,!0,o));return this._launchStreams(n,r),r}invoke(e,...t){const[n,o]=this._replaceStreamingParams(t),r=this._createInvocation(e,t,!1,o);return new Promise(((e,t)=>{this._callbacks[r.invocationId]=(n,o)=>{o?t(o):n&&(n.type===ln.Completion?n.error?t(new Error(n.error)):e(n.result):t(new Error(`Unexpected message type: ${n.type}`)))};const o=this._sendWithProtocol(r).catch((e=>{t(e),delete this._callbacks[r.invocationId]}));this._launchStreams(n,o)}))}on(e,t){e&&t&&(e=e.toLowerCase(),this._methods[e]||(this._methods[e]=[]),-1===this._methods[e].indexOf(t)&&this._methods[e].push(t))}off(e,t){if(!e)return;e=e.toLowerCase();const n=this._methods[e];if(n)if(t){const o=n.indexOf(t);-1!==o&&(n.splice(o,1),0===n.length&&delete this._methods[e])}else delete this._methods[e]}onclose(e){e&&this._closedCallbacks.push(e)}onreconnecting(e){e&&this._reconnectingCallbacks.push(e)}onreconnected(e){e&&this._reconnectedCallbacks.push(e)}_processIncomingData(e){if(this._cleanupTimeout(),this._receivedHandshakeResponse||(e=this._processHandshakeResponse(e),this._receivedHandshakeResponse=!0),e){const t=this._protocol.parseMessages(e,this._logger);for(const e of t)if(!this._messageBuffer||this._messageBuffer._shouldProcessMessage(e))switch(e.type){case ln.Invocation:this._invokeClientMethod(e);break;case ln.StreamItem:case ln.Completion:{const t=this._callbacks[e.invocationId];if(t){e.type===ln.Completion&&delete this._callbacks[e.invocationId];try{t(e)}catch(e){this._logger.log(Ot.Error,`Stream callback threw error: ${Qt(e)}`)}}break}case ln.Ping:break;case ln.Close:{this._logger.log(Ot.Information,"Close message received from server.");const t=e.error?new Error("Server returned an error on close: "+e.error):void 0;!0===e.allowReconnect?this.connection.stop(t):this._stopPromise=this._stopInternal(t);break}case ln.Ack:this._messageBuffer&&this._messageBuffer._ack(e);break;case ln.Sequence:this._messageBuffer&&this._messageBuffer._resetSequence(e);break;default:this._logger.log(Ot.Warning,`Invalid message type: ${e.type}.`)}}this._resetTimeoutPeriod()}_processHandshakeResponse(e){let t,n;try{[n,t]=this._handshakeProtocol.parseHandshakeResponse(e)}catch(e){const t="Error parsing handshake response: "+e;this._logger.log(Ot.Error,t);const n=new Error(t);throw this._handshakeRejecter(n),n}if(t.error){const e="Server returned handshake error: "+t.error;this._logger.log(Ot.Error,e);const n=new Error(e);throw this._handshakeRejecter(n),n}return this._logger.log(Ot.Debug,"Server handshake complete."),this._handshakeResolver(),n}_resetKeepAliveInterval(){this.connection.features.inherentKeepAlive||(this._nextKeepAlive=(new Date).getTime()+this.keepAliveIntervalInMilliseconds,this._cleanupPingTimer())}_resetTimeoutPeriod(){if(!(this.connection.features&&this.connection.features.inherentKeepAlive||(this._timeoutHandle=setTimeout((()=>this.serverTimeout()),this.serverTimeoutInMilliseconds),void 0!==this._pingServerHandle))){let e=this._nextKeepAlive-(new Date).getTime();e<0&&(e=0),this._pingServerHandle=setTimeout((async()=>{if(this._connectionState===hn.Connected)try{await this._sendMessage(this._cachedPingMessage)}catch{this._cleanupPingTimer()}}),e)}}serverTimeout(){this.connection.stop(new Error("Server timeout elapsed without receiving a message from the server."))}async _invokeClientMethod(e){const t=e.target.toLowerCase(),n=this._methods[t];if(!n)return this._logger.log(Ot.Warning,`No client method with the name '${t}' found.`),void(e.invocationId&&(this._logger.log(Ot.Warning,`No result given for '${t}' method and invocation ID '${e.invocationId}'.`),await this._sendWithProtocol(this._createCompletionMessage(e.invocationId,"Client didn't provide a result.",null))));const o=n.slice(),r=!!e.invocationId;let i,s,a;for(const n of o)try{const o=i;i=await n.apply(this,e.arguments),r&&i&&o&&(this._logger.log(Ot.Error,`Multiple results provided for '${t}'. Sending error to server.`),a=this._createCompletionMessage(e.invocationId,"Client provided multiple results.",null)),s=void 0}catch(e){s=e,this._logger.log(Ot.Error,`A callback for the method '${t}' threw error '${e}'.`)}a?await this._sendWithProtocol(a):r?(s?a=this._createCompletionMessage(e.invocationId,`${s}`,null):void 0!==i?a=this._createCompletionMessage(e.invocationId,null,i):(this._logger.log(Ot.Warning,`No result given for '${t}' method and invocation ID '${e.invocationId}'.`),a=this._createCompletionMessage(e.invocationId,"Client didn't provide a result.",null)),await this._sendWithProtocol(a)):i&&this._logger.log(Ot.Error,`Result given for '${t}' method but server is not expecting a result.`)}_connectionClosed(e){this._logger.log(Ot.Debug,`HubConnection.connectionClosed(${e}) called while in state ${this._connectionState}.`),this._stopDuringStartError=this._stopDuringStartError||e||new nn("The underlying connection was closed before the hub handshake could complete."),this._handshakeResolver&&this._handshakeResolver(),this._cancelCallbacksWithError(e||new Error("Invocation canceled due to the underlying connection being closed.")),this._cleanupTimeout(),this._cleanupPingTimer(),this._connectionState===hn.Disconnecting?this._completeClose(e):this._connectionState===hn.Connected&&this._reconnectPolicy?this._reconnect(e):this._connectionState===hn.Connected&&this._completeClose(e)}_completeClose(e){if(this._connectionStarted){this._connectionState=hn.Disconnected,this._connectionStarted=!1,this._messageBuffer&&(this._messageBuffer._dispose(null!=e?e:new Error("Connection closed.")),this._messageBuffer=void 0),Wt.isBrowser&&window.document.removeEventListener("freeze",this._freezeEventListener);try{this._closedCallbacks.forEach((t=>t.apply(this,[e])))}catch(t){this._logger.log(Ot.Error,`An onclose callback called with error '${e}' threw error '${t}'.`)}}}async _reconnect(e){const t=Date.now();let n=0,o=void 0!==e?e:new Error("Attempting to reconnect due to a unknown error."),r=this._getNextRetryDelay(n++,0,o);if(null===r)return this._logger.log(Ot.Debug,"Connection not reconnecting because the IRetryPolicy returned null on the first reconnect attempt."),void this._completeClose(e);if(this._connectionState=hn.Reconnecting,e?this._logger.log(Ot.Information,`Connection reconnecting because of error '${e}'.`):this._logger.log(Ot.Information,"Connection reconnecting."),0!==this._reconnectingCallbacks.length){try{this._reconnectingCallbacks.forEach((t=>t.apply(this,[e])))}catch(t){this._logger.log(Ot.Error,`An onreconnecting callback called with error '${e}' threw error '${t}'.`)}if(this._connectionState!==hn.Reconnecting)return void this._logger.log(Ot.Debug,"Connection left the reconnecting state in onreconnecting callback. Done reconnecting.")}for(;null!==r;){if(this._logger.log(Ot.Information,`Reconnect attempt number ${n} will start in ${r} ms.`),await new Promise((e=>{this._reconnectDelayHandle=setTimeout(e,r)})),this._reconnectDelayHandle=void 0,this._connectionState!==hn.Reconnecting)return void this._logger.log(Ot.Debug,"Connection left the reconnecting state during reconnect delay. Done reconnecting.");try{if(await this._startInternal(),this._connectionState=hn.Connected,this._logger.log(Ot.Information,"HubConnection reconnected successfully."),0!==this._reconnectedCallbacks.length)try{this._reconnectedCallbacks.forEach((e=>e.apply(this,[this.connection.connectionId])))}catch(e){this._logger.log(Ot.Error,`An onreconnected callback called with connectionId '${this.connection.connectionId}; threw error '${e}'.`)}return}catch(e){if(this._logger.log(Ot.Information,`Reconnect attempt failed because of error '${e}'.`),this._connectionState!==hn.Reconnecting)return this._logger.log(Ot.Debug,`Connection moved to the '${this._connectionState}' from the reconnecting state during reconnect attempt. Done reconnecting.`),void(this._connectionState===hn.Disconnecting&&this._completeClose());o=e instanceof Error?e:new Error(e.toString()),r=this._getNextRetryDelay(n++,Date.now()-t,o)}}this._logger.log(Ot.Information,`Reconnect retries have been exhausted after ${Date.now()-t} ms and ${n} failed attempts. Connection disconnecting.`),this._completeClose()}_getNextRetryDelay(e,t,n){try{return this._reconnectPolicy.nextRetryDelayInMilliseconds({elapsedMilliseconds:t,previousRetryCount:e,retryReason:n})}catch(n){return this._logger.log(Ot.Error,`IRetryPolicy.nextRetryDelayInMilliseconds(${e}, ${t}) threw error '${n}'.`),null}}_cancelCallbacksWithError(e){const t=this._callbacks;this._callbacks={},Object.keys(t).forEach((n=>{const o=t[n];try{o(null,e)}catch(t){this._logger.log(Ot.Error,`Stream 'error' callback called with '${e}' threw error: ${Qt(t)}`)}}))}_cleanupPingTimer(){this._pingServerHandle&&(clearTimeout(this._pingServerHandle),this._pingServerHandle=void 0)}_cleanupTimeout(){this._timeoutHandle&&clearTimeout(this._timeoutHandle)}_createInvocation(e,t,n,o){if(n)return 0!==o.length?{arguments:t,streamIds:o,target:e,type:ln.Invocation}:{arguments:t,target:e,type:ln.Invocation};{const n=this._invocationId;return this._invocationId++,0!==o.length?{arguments:t,invocationId:n.toString(),streamIds:o,target:e,type:ln.Invocation}:{arguments:t,invocationId:n.toString(),target:e,type:ln.Invocation}}}_launchStreams(e,t){if(0!==e.length){t||(t=Promise.resolve());for(const n in e)e[n].subscribe({complete:()=>{t=t.then((()=>this._sendWithProtocol(this._createCompletionMessage(n))))},error:e=>{let o;o=e instanceof Error?e.message:e&&e.toString?e.toString():"Unknown error",t=t.then((()=>this._sendWithProtocol(this._createCompletionMessage(n,o))))},next:e=>{t=t.then((()=>this._sendWithProtocol(this._createStreamItemMessage(n,e))))}})}}_replaceStreamingParams(e){const t=[],n=[];for(let o=0;o0)&&(t=!1,this._accessToken=await this._accessTokenFactory()),this._setAuthorizationHeader(e);const n=await this._innerClient.send(e);return t&&401===n.statusCode&&this._accessTokenFactory?(this._accessToken=await this._accessTokenFactory(),this._setAuthorizationHeader(e),await this._innerClient.send(e)):n}_setAuthorizationHeader(e){e.headers||(e.headers={}),this._accessToken?e.headers[vn.Authorization]=`Bearer ${this._accessToken}`:this._accessTokenFactory&&e.headers[vn.Authorization]&&delete e.headers[vn.Authorization]}getCookieString(e){return this._innerClient.getCookieString(e)}}class _n extends wn{constructor(e){super(),this._logger=e;const t={_fetchType:void 0,_jar:void 0};var o;o=t,"undefined"==typeof fetch&&(o._jar=new(n(628).CookieJar),"undefined"==typeof fetch?o._fetchType=n(200):o._fetchType=fetch,o._fetchType=n(203)(o._fetchType,o._jar),1)?(this._fetchType=t._fetchType,this._jar=t._jar):this._fetchType=fetch.bind(function(){if("undefined"!=typeof globalThis)return globalThis;if("undefined"!=typeof self)return self;if("undefined"!=typeof window)return window;if(void 0!==n.g)return n.g;throw new Error("could not find global")}()),this._abortControllerType=AbortController;const r={_abortControllerType:this._abortControllerType};(function(e){return"undefined"==typeof AbortController&&(e._abortControllerType=n(778),!0)})(r)&&(this._abortControllerType=r._abortControllerType)}async send(e){if(e.abortSignal&&e.abortSignal.aborted)throw new nn;if(!e.method)throw new Error("No method defined.");if(!e.url)throw new Error("No url defined.");const t=new this._abortControllerType;let n;e.abortSignal&&(e.abortSignal.onabort=()=>{t.abort(),n=new nn});let o,r=null;if(e.timeout){const o=e.timeout;r=setTimeout((()=>{t.abort(),this._logger.log(Ot.Warning,"Timeout from HTTP request."),n=new tn}),o)}""===e.content&&(e.content=void 0),e.content&&(e.headers=e.headers||{},zt(e.content)?e.headers["Content-Type"]="application/octet-stream":e.headers["Content-Type"]="text/plain;charset=UTF-8");try{o=await this._fetchType(e.url,{body:e.content,cache:"no-cache",credentials:!0===e.withCredentials?"include":"same-origin",headers:{"X-Requested-With":"XMLHttpRequest",...e.headers},method:e.method,mode:"cors",redirect:"follow",signal:t.signal})}catch(e){if(n)throw n;throw this._logger.log(Ot.Warning,`Error from HTTP request. ${e}.`),e}finally{r&&clearTimeout(r),e.abortSignal&&(e.abortSignal.onabort=null)}if(!o.ok){const e=await Sn(o,"text");throw new en(e||o.statusText,o.status)}const i=Sn(o,e.responseType),s=await i;return new yn(o.status,o.statusText,s)}getCookieString(e){return""}}function Sn(e,t){let n;switch(t){case"arraybuffer":n=e.arrayBuffer();break;case"text":default:n=e.text();break;case"blob":case"document":case"json":throw new Error(`${t} is not supported.`)}return n}class Cn extends wn{constructor(e){super(),this._logger=e}send(e){return e.abortSignal&&e.abortSignal.aborted?Promise.reject(new nn):e.method?e.url?new Promise(((t,n)=>{const o=new XMLHttpRequest;o.open(e.method,e.url,!0),o.withCredentials=void 0===e.withCredentials||e.withCredentials,o.setRequestHeader("X-Requested-With","XMLHttpRequest"),""===e.content&&(e.content=void 0),e.content&&(zt(e.content)?o.setRequestHeader("Content-Type","application/octet-stream"):o.setRequestHeader("Content-Type","text/plain;charset=UTF-8"));const r=e.headers;r&&Object.keys(r).forEach((e=>{o.setRequestHeader(e,r[e])})),e.responseType&&(o.responseType=e.responseType),e.abortSignal&&(e.abortSignal.onabort=()=>{o.abort(),n(new nn)}),e.timeout&&(o.timeout=e.timeout),o.onload=()=>{e.abortSignal&&(e.abortSignal.onabort=null),o.status>=200&&o.status<300?t(new yn(o.status,o.statusText,o.response||o.responseText)):n(new en(o.response||o.responseText||o.statusText,o.status))},o.onerror=()=>{this._logger.log(Ot.Warning,`Error from HTTP request. ${o.status}: ${o.statusText}.`),n(new en(o.statusText,o.status))},o.ontimeout=()=>{this._logger.log(Ot.Warning,"Timeout from HTTP request."),n(new tn)},o.send(e.content)})):Promise.reject(new Error("No url defined.")):Promise.reject(new Error("No method defined."))}}class En extends wn{constructor(e){if(super(),"undefined"!=typeof fetch)this._httpClient=new _n(e);else{if("undefined"==typeof XMLHttpRequest)throw new Error("No usable HttpClient found.");this._httpClient=new Cn(e)}}send(e){return e.abortSignal&&e.abortSignal.aborted?Promise.reject(new nn):e.method?e.url?this._httpClient.send(e):Promise.reject(new Error("No url defined.")):Promise.reject(new Error("No method defined."))}getCookieString(e){return this._httpClient.getCookieString(e)}}var In,kn;!function(e){e[e.None=0]="None",e[e.WebSockets=1]="WebSockets",e[e.ServerSentEvents=2]="ServerSentEvents",e[e.LongPolling=4]="LongPolling"}(In||(In={})),function(e){e[e.Text=1]="Text",e[e.Binary=2]="Binary"}(kn||(kn={}));class Tn{constructor(){this._isAborted=!1,this.onabort=null}abort(){this._isAborted||(this._isAborted=!0,this.onabort&&this.onabort())}get signal(){return this}get aborted(){return this._isAborted}}class Rn{get pollAborted(){return this._pollAbort.aborted}constructor(e,t,n){this._httpClient=e,this._logger=t,this._pollAbort=new Tn,this._options=n,this._running=!1,this.onreceive=null,this.onclose=null}async connect(e,t){if(Ht.isRequired(e,"url"),Ht.isRequired(t,"transferFormat"),Ht.isIn(t,kn,"transferFormat"),this._url=e,this._logger.log(Ot.Trace,"(LongPolling transport) Connecting."),t===kn.Binary&&"undefined"!=typeof XMLHttpRequest&&"string"!=typeof(new XMLHttpRequest).responseType)throw new Error("Binary protocols over XmlHttpRequest not implementing advanced features are not supported.");const[n,o]=Vt(),r={[n]:o,...this._options.headers},i={abortSignal:this._pollAbort.signal,headers:r,timeout:1e5,withCredentials:this._options.withCredentials};t===kn.Binary&&(i.responseType="arraybuffer");const s=`${e}&_=${Date.now()}`;this._logger.log(Ot.Trace,`(LongPolling transport) polling: ${s}.`);const a=await this._httpClient.get(s,i);200!==a.statusCode?(this._logger.log(Ot.Error,`(LongPolling transport) Unexpected response code: ${a.statusCode}.`),this._closeError=new en(a.statusText||"",a.statusCode),this._running=!1):this._running=!0,this._receiving=this._poll(this._url,i)}async _poll(e,t){try{for(;this._running;)try{const n=`${e}&_=${Date.now()}`;this._logger.log(Ot.Trace,`(LongPolling transport) polling: ${n}.`);const o=await this._httpClient.get(n,t);204===o.statusCode?(this._logger.log(Ot.Information,"(LongPolling transport) Poll terminated by server."),this._running=!1):200!==o.statusCode?(this._logger.log(Ot.Error,`(LongPolling transport) Unexpected response code: ${o.statusCode}.`),this._closeError=new en(o.statusText||"",o.statusCode),this._running=!1):o.content?(this._logger.log(Ot.Trace,`(LongPolling transport) data received. ${jt(o.content,this._options.logMessageContent)}.`),this.onreceive&&this.onreceive(o.content)):this._logger.log(Ot.Trace,"(LongPolling transport) Poll timed out, reissuing.")}catch(e){this._running?e instanceof tn?this._logger.log(Ot.Trace,"(LongPolling transport) Poll timed out, reissuing."):(this._closeError=e,this._running=!1):this._logger.log(Ot.Trace,`(LongPolling transport) Poll errored after shutdown: ${e.message}`)}}finally{this._logger.log(Ot.Trace,"(LongPolling transport) Polling complete."),this.pollAborted||this._raiseOnClose()}}async send(e){return this._running?qt(this._logger,"LongPolling",this._httpClient,this._url,e,this._options):Promise.reject(new Error("Cannot send until the transport is connected"))}async stop(){this._logger.log(Ot.Trace,"(LongPolling transport) Stopping polling."),this._running=!1,this._pollAbort.abort();try{await this._receiving,this._logger.log(Ot.Trace,`(LongPolling transport) sending DELETE request to ${this._url}.`);const e={},[t,n]=Vt();e[t]=n;const o={headers:{...e,...this._options.headers},timeout:this._options.timeout,withCredentials:this._options.withCredentials};let r;try{await this._httpClient.delete(this._url,o)}catch(e){r=e}r?r instanceof en&&(404===r.statusCode?this._logger.log(Ot.Trace,"(LongPolling transport) A 404 response was returned from sending a DELETE request."):this._logger.log(Ot.Trace,`(LongPolling transport) Error sending a DELETE request: ${r}`)):this._logger.log(Ot.Trace,"(LongPolling transport) DELETE request accepted.")}finally{this._logger.log(Ot.Trace,"(LongPolling transport) Stop finished."),this._raiseOnClose()}}_raiseOnClose(){if(this.onclose){let e="(LongPolling transport) Firing onclose event.";this._closeError&&(e+=" Error: "+this._closeError),this._logger.log(Ot.Trace,e),this.onclose(this._closeError)}}}class Dn{constructor(e,t,n,o){this._httpClient=e,this._accessToken=t,this._logger=n,this._options=o,this.onreceive=null,this.onclose=null}async connect(e,t){return Ht.isRequired(e,"url"),Ht.isRequired(t,"transferFormat"),Ht.isIn(t,kn,"transferFormat"),this._logger.log(Ot.Trace,"(SSE transport) Connecting."),this._url=e,this._accessToken&&(e+=(e.indexOf("?")<0?"?":"&")+`access_token=${encodeURIComponent(this._accessToken)}`),new Promise(((n,o)=>{let r,i=!1;if(t===kn.Text){if(Wt.isBrowser||Wt.isWebWorker)r=new this._options.EventSource(e,{withCredentials:this._options.withCredentials});else{const t=this._httpClient.getCookieString(e),n={};n.Cookie=t;const[o,i]=Vt();n[o]=i,r=new this._options.EventSource(e,{withCredentials:this._options.withCredentials,headers:{...n,...this._options.headers}})}try{r.onmessage=e=>{if(this.onreceive)try{this._logger.log(Ot.Trace,`(SSE transport) data received. ${jt(e.data,this._options.logMessageContent)}.`),this.onreceive(e.data)}catch(e){return void this._close(e)}},r.onerror=e=>{i?this._close():o(new Error("EventSource failed to connect. The connection could not be found on the server, either the connection ID is not present on the server, or a proxy is refusing/buffering the connection. If you have multiple servers check that sticky sessions are enabled."))},r.onopen=()=>{this._logger.log(Ot.Information,`SSE connected to ${this._url}`),this._eventSource=r,i=!0,n()}}catch(e){return void o(e)}}else o(new Error("The Server-Sent Events transport only supports the 'Text' transfer format"))}))}async send(e){return this._eventSource?qt(this._logger,"SSE",this._httpClient,this._url,e,this._options):Promise.reject(new Error("Cannot send until the transport is connected"))}stop(){return this._close(),Promise.resolve()}_close(e){this._eventSource&&(this._eventSource.close(),this._eventSource=void 0,this.onclose&&this.onclose(e))}}class An{constructor(e,t,n,o,r,i){this._logger=n,this._accessTokenFactory=t,this._logMessageContent=o,this._webSocketConstructor=r,this._httpClient=e,this.onreceive=null,this.onclose=null,this._headers=i}async connect(e,t){let n;return Ht.isRequired(e,"url"),Ht.isRequired(t,"transferFormat"),Ht.isIn(t,kn,"transferFormat"),this._logger.log(Ot.Trace,"(WebSockets transport) Connecting."),this._accessTokenFactory&&(n=await this._accessTokenFactory()),new Promise(((o,r)=>{let i;e=e.replace(/^http/,"ws");const s=this._httpClient.getCookieString(e);let a=!1;if(Wt.isReactNative){const t={},[o,r]=Vt();t[o]=r,n&&(t[vn.Authorization]=`Bearer ${n}`),s&&(t[vn.Cookie]=s),i=new this._webSocketConstructor(e,void 0,{headers:{...t,...this._headers}})}else n&&(e+=(e.indexOf("?")<0?"?":"&")+`access_token=${encodeURIComponent(n)}`);i||(i=new this._webSocketConstructor(e)),t===kn.Binary&&(i.binaryType="arraybuffer"),i.onopen=t=>{this._logger.log(Ot.Information,`WebSocket connected to ${e}.`),this._webSocket=i,a=!0,o()},i.onerror=e=>{let t=null;t="undefined"!=typeof ErrorEvent&&e instanceof ErrorEvent?e.error:"There was an error with the transport",this._logger.log(Ot.Information,`(WebSockets transport) ${t}.`)},i.onmessage=e=>{if(this._logger.log(Ot.Trace,`(WebSockets transport) data received. ${jt(e.data,this._logMessageContent)}.`),this.onreceive)try{this.onreceive(e.data)}catch(e){return void this._close(e)}},i.onclose=e=>{if(a)this._close(e);else{let t=null;t="undefined"!=typeof ErrorEvent&&e instanceof ErrorEvent?e.error:"WebSocket failed to connect. The connection could not be found on the server, either the endpoint may not be a SignalR endpoint, the connection ID is not present on the server, or there is a proxy blocking WebSockets. If you have multiple servers check that sticky sessions are enabled.",r(new Error(t))}}}))}send(e){return this._webSocket&&this._webSocket.readyState===this._webSocketConstructor.OPEN?(this._logger.log(Ot.Trace,`(WebSockets transport) sending data. ${jt(e,this._logMessageContent)}.`),this._webSocket.send(e),Promise.resolve()):Promise.reject("WebSocket is not in the OPEN state")}stop(){return this._webSocket&&this._close(void 0),Promise.resolve()}_close(e){this._webSocket&&(this._webSocket.onclose=()=>{},this._webSocket.onmessage=()=>{},this._webSocket.onerror=()=>{},this._webSocket.close(),this._webSocket=void 0),this._logger.log(Ot.Trace,"(WebSockets transport) socket closed."),this.onclose&&(!this._isCloseEvent(e)||!1!==e.wasClean&&1e3===e.code?e instanceof Error?this.onclose(e):this.onclose():this.onclose(new Error(`WebSocket closed with status code: ${e.code} (${e.reason||"no reason given"}).`)))}_isCloseEvent(e){return e&&"boolean"==typeof e.wasClean&&"number"==typeof e.code}}class xn{constructor(e,t={}){if(this._stopPromiseResolver=()=>{},this.features={},this._negotiateVersion=1,Ht.isRequired(e,"url"),this._logger=function(e){return void 0===e?new Kt(Ot.Information):null===e?Ft.instance:void 0!==e.log?e:new Kt(e)}(t.logger),this.baseUrl=this._resolveUrl(e),(t=t||{}).logMessageContent=void 0!==t.logMessageContent&&t.logMessageContent,"boolean"!=typeof t.withCredentials&&void 0!==t.withCredentials)throw new Error("withCredentials option was not a 'boolean' or 'undefined' value");t.withCredentials=void 0===t.withCredentials||t.withCredentials,t.timeout=void 0===t.timeout?1e5:t.timeout,"undefined"==typeof WebSocket||t.WebSocket||(t.WebSocket=WebSocket),"undefined"==typeof EventSource||t.EventSource||(t.EventSource=EventSource),this._httpClient=new bn(t.httpClient||new En(this._logger),t.accessTokenFactory),this._connectionState="Disconnected",this._connectionStarted=!1,this._options=t,this.onreceive=null,this.onclose=null}async start(e){if(e=e||kn.Binary,Ht.isIn(e,kn,"transferFormat"),this._logger.log(Ot.Debug,`Starting connection with transfer format '${kn[e]}'.`),"Disconnected"!==this._connectionState)return Promise.reject(new Error("Cannot start an HttpConnection that is not in the 'Disconnected' state."));if(this._connectionState="Connecting",this._startInternalPromise=this._startInternal(e),await this._startInternalPromise,"Disconnecting"===this._connectionState){const e="Failed to start the HttpConnection before stop() was called.";return this._logger.log(Ot.Error,e),await this._stopPromise,Promise.reject(new nn(e))}if("Connected"!==this._connectionState){const e="HttpConnection.startInternal completed gracefully but didn't enter the connection into the connected state!";return this._logger.log(Ot.Error,e),Promise.reject(new nn(e))}this._connectionStarted=!0}send(e){return"Connected"!==this._connectionState?Promise.reject(new Error("Cannot send data if the connection is not in the 'Connected' State.")):(this._sendQueue||(this._sendQueue=new Nn(this.transport)),this._sendQueue.send(e))}async stop(e){return"Disconnected"===this._connectionState?(this._logger.log(Ot.Debug,`Call to HttpConnection.stop(${e}) ignored because the connection is already in the disconnected state.`),Promise.resolve()):"Disconnecting"===this._connectionState?(this._logger.log(Ot.Debug,`Call to HttpConnection.stop(${e}) ignored because the connection is already in the disconnecting state.`),this._stopPromise):(this._connectionState="Disconnecting",this._stopPromise=new Promise((e=>{this._stopPromiseResolver=e})),await this._stopInternal(e),void await this._stopPromise)}async _stopInternal(e){this._stopError=e;try{await this._startInternalPromise}catch(e){}if(this.transport){try{await this.transport.stop()}catch(e){this._logger.log(Ot.Error,`HttpConnection.transport.stop() threw error '${e}'.`),this._stopConnection()}this.transport=void 0}else this._logger.log(Ot.Debug,"HttpConnection.transport is undefined in HttpConnection.stop() because start() failed.")}async _startInternal(e){let t=this.baseUrl;this._accessTokenFactory=this._options.accessTokenFactory,this._httpClient._accessTokenFactory=this._accessTokenFactory;try{if(this._options.skipNegotiation){if(this._options.transport!==In.WebSockets)throw new Error("Negotiation can only be skipped when using the WebSocket transport directly.");this.transport=this._constructTransport(In.WebSockets),await this._startTransport(t,e)}else{let n=null,o=0;do{if(n=await this._getNegotiationResponse(t),"Disconnecting"===this._connectionState||"Disconnected"===this._connectionState)throw new nn("The connection was stopped during negotiation.");if(n.error)throw new Error(n.error);if(n.ProtocolVersion)throw new Error("Detected a connection attempt to an ASP.NET SignalR Server. This client only supports connecting to an ASP.NET Core SignalR Server. See https://aka.ms/signalr-core-differences for details.");if(n.url&&(t=n.url),n.accessToken){const e=n.accessToken;this._accessTokenFactory=()=>e,this._httpClient._accessToken=e,this._httpClient._accessTokenFactory=void 0}o++}while(n.url&&o<100);if(100===o&&n.url)throw new Error("Negotiate redirection limit exceeded.");await this._createTransport(t,this._options.transport,n,e)}this.transport instanceof Rn&&(this.features.inherentKeepAlive=!0),"Connecting"===this._connectionState&&(this._logger.log(Ot.Debug,"The HttpConnection connected successfully."),this._connectionState="Connected")}catch(e){return this._logger.log(Ot.Error,"Failed to start the connection: "+e),this._connectionState="Disconnected",this.transport=void 0,this._stopPromiseResolver(),Promise.reject(e)}}async _getNegotiationResponse(e){const t={},[n,o]=Vt();t[n]=o;const r=this._resolveNegotiateUrl(e);this._logger.log(Ot.Debug,`Sending negotiation request: ${r}.`);try{const e=await this._httpClient.post(r,{content:"",headers:{...t,...this._options.headers},timeout:this._options.timeout,withCredentials:this._options.withCredentials});if(200!==e.statusCode)return Promise.reject(new Error(`Unexpected status code returned from negotiate '${e.statusCode}'`));const n=JSON.parse(e.content);return(!n.negotiateVersion||n.negotiateVersion<1)&&(n.connectionToken=n.connectionId),n.useStatefulReconnect&&!0!==this._options._useStatefulReconnect?Promise.reject(new an("Client didn't negotiate Stateful Reconnect but the server did.")):n}catch(e){let t="Failed to complete negotiation with the server: "+e;return e instanceof en&&404===e.statusCode&&(t+=" Either this is not a SignalR endpoint or there is a proxy blocking the connection."),this._logger.log(Ot.Error,t),Promise.reject(new an(t))}}_createConnectUrl(e,t){return t?e+(-1===e.indexOf("?")?"?":"&")+`id=${t}`:e}async _createTransport(e,t,n,o){let r=this._createConnectUrl(e,n.connectionToken);if(this._isITransport(t))return this._logger.log(Ot.Debug,"Connection was provided an instance of ITransport, using that directly."),this.transport=t,await this._startTransport(r,o),void(this.connectionId=n.connectionId);const i=[],s=n.availableTransports||[];let a=n;for(const n of s){const s=this._resolveTransportOrError(n,t,o,!0===(null==a?void 0:a.useStatefulReconnect));if(s instanceof Error)i.push(`${n.transport} failed:`),i.push(s);else if(this._isITransport(s)){if(this.transport=s,!a){try{a=await this._getNegotiationResponse(e)}catch(e){return Promise.reject(e)}r=this._createConnectUrl(e,a.connectionToken)}try{return await this._startTransport(r,o),void(this.connectionId=a.connectionId)}catch(e){if(this._logger.log(Ot.Error,`Failed to start the transport '${n.transport}': ${e}`),a=void 0,i.push(new sn(`${n.transport} failed: ${e}`,In[n.transport])),"Connecting"!==this._connectionState){const e="Failed to select transport before stop() was called.";return this._logger.log(Ot.Debug,e),Promise.reject(new nn(e))}}}}return i.length>0?Promise.reject(new cn(`Unable to connect to the server with any of the available transports. ${i.join(" ")}`,i)):Promise.reject(new Error("None of the transports supported by the client are supported by the server."))}_constructTransport(e){switch(e){case In.WebSockets:if(!this._options.WebSocket)throw new Error("'WebSocket' is not supported in your environment.");return new An(this._httpClient,this._accessTokenFactory,this._logger,this._options.logMessageContent,this._options.WebSocket,this._options.headers||{});case In.ServerSentEvents:if(!this._options.EventSource)throw new Error("'EventSource' is not supported in your environment.");return new Dn(this._httpClient,this._httpClient._accessToken,this._logger,this._options);case In.LongPolling:return new Rn(this._httpClient,this._logger,this._options);default:throw new Error(`Unknown transport: ${e}.`)}}_startTransport(e,t){return this.transport.onreceive=this.onreceive,this.features.reconnect?this.transport.onclose=async n=>{let o=!1;if(this.features.reconnect){try{this.features.disconnected(),await this.transport.connect(e,t),await this.features.resend()}catch{o=!0}o&&this._stopConnection(n)}else this._stopConnection(n)}:this.transport.onclose=e=>this._stopConnection(e),this.transport.connect(e,t)}_resolveTransportOrError(e,t,n,o){const r=In[e.transport];if(null==r)return this._logger.log(Ot.Debug,`Skipping transport '${e.transport}' because it is not supported by this client.`),new Error(`Skipping transport '${e.transport}' because it is not supported by this client.`);if(!function(e,t){return!e||0!=(t&e)}(t,r))return this._logger.log(Ot.Debug,`Skipping transport '${In[r]}' because it was disabled by the client.`),new rn(`'${In[r]}' is disabled by the client.`,r);if(!(e.transferFormats.map((e=>kn[e])).indexOf(n)>=0))return this._logger.log(Ot.Debug,`Skipping transport '${In[r]}' because it does not support the requested transfer format '${kn[n]}'.`),new Error(`'${In[r]}' does not support ${kn[n]}.`);if(r===In.WebSockets&&!this._options.WebSocket||r===In.ServerSentEvents&&!this._options.EventSource)return this._logger.log(Ot.Debug,`Skipping transport '${In[r]}' because it is not supported in your environment.'`),new on(`'${In[r]}' is not supported in your environment.`,r);this._logger.log(Ot.Debug,`Selecting transport '${In[r]}'.`);try{return this.features.reconnect=r===In.WebSockets?o:void 0,this._constructTransport(r)}catch(e){return e}}_isITransport(e){return e&&"object"==typeof e&&"connect"in e}_stopConnection(e){if(this._logger.log(Ot.Debug,`HttpConnection.stopConnection(${e}) called while in state ${this._connectionState}.`),this.transport=void 0,e=this._stopError||e,this._stopError=void 0,"Disconnected"!==this._connectionState){if("Connecting"===this._connectionState)throw this._logger.log(Ot.Warning,`Call to HttpConnection.stopConnection(${e}) was ignored because the connection is still in the connecting state.`),new Error(`HttpConnection.stopConnection(${e}) was called while the connection is still in the connecting state.`);if("Disconnecting"===this._connectionState&&this._stopPromiseResolver(),e?this._logger.log(Ot.Error,`Connection disconnected with error '${e}'.`):this._logger.log(Ot.Information,"Connection disconnected."),this._sendQueue&&(this._sendQueue.stop().catch((e=>{this._logger.log(Ot.Error,`TransportSendQueue.stop() threw error '${e}'.`)})),this._sendQueue=void 0),this.connectionId=void 0,this._connectionState="Disconnected",this._connectionStarted){this._connectionStarted=!1;try{this.onclose&&this.onclose(e)}catch(t){this._logger.log(Ot.Error,`HttpConnection.onclose(${e}) threw error '${t}'.`)}}}else this._logger.log(Ot.Debug,`Call to HttpConnection.stopConnection(${e}) was ignored because the connection is already in the disconnected state.`)}_resolveUrl(e){if(0===e.lastIndexOf("https://",0)||0===e.lastIndexOf("http://",0))return e;if(!Wt.isBrowser)throw new Error(`Cannot resolve '${e}'.`);const t=window.document.createElement("a");return t.href=e,this._logger.log(Ot.Information,`Normalizing '${e}' to '${t.href}'.`),t.href}_resolveNegotiateUrl(e){const t=new URL(e);t.pathname.endsWith("/")?t.pathname+="negotiate":t.pathname+="/negotiate";const n=new URLSearchParams(t.searchParams);return n.has("negotiateVersion")||n.append("negotiateVersion",this._negotiateVersion.toString()),n.has("useStatefulReconnect")?"true"===n.get("useStatefulReconnect")&&(this._options._useStatefulReconnect=!0):!0===this._options._useStatefulReconnect&&n.append("useStatefulReconnect","true"),t.search=n.toString(),t.toString()}}class Nn{constructor(e){this._transport=e,this._buffer=[],this._executing=!0,this._sendBufferedData=new Pn,this._transportResult=new Pn,this._sendLoopPromise=this._sendLoop()}send(e){return this._bufferData(e),this._transportResult||(this._transportResult=new Pn),this._transportResult.promise}stop(){return this._executing=!1,this._sendBufferedData.resolve(),this._sendLoopPromise}_bufferData(e){if(this._buffer.length&&typeof this._buffer[0]!=typeof e)throw new Error(`Expected data to be of type ${typeof this._buffer} but was of type ${typeof e}`);this._buffer.push(e),this._sendBufferedData.resolve()}async _sendLoop(){for(;;){if(await this._sendBufferedData.promise,!this._executing){this._transportResult&&this._transportResult.reject("Connection stopped.");break}this._sendBufferedData=new Pn;const e=this._transportResult;this._transportResult=void 0;const t="string"==typeof this._buffer[0]?this._buffer.join(""):Nn._concatBuffers(this._buffer);this._buffer.length=0;try{await this._transport.send(t),e.resolve()}catch(t){e.reject(t)}}}static _concatBuffers(e){const t=e.map((e=>e.byteLength)).reduce(((e,t)=>e+t)),n=new Uint8Array(t);let o=0;for(const t of e)n.set(new Uint8Array(t),o),o+=t.byteLength;return n.buffer}}class Pn{constructor(){this.promise=new Promise(((e,t)=>[this._resolver,this._rejecter]=[e,t]))}resolve(){this._resolver()}reject(e){this._rejecter(e)}}class Mn{constructor(){this.name="json",this.version=2,this.transferFormat=kn.Text}parseMessages(e,t){if("string"!=typeof e)throw new Error("Invalid input for JSON hub protocol. Expected a string.");if(!e)return[];null===t&&(t=Ft.instance);const n=Bt.parse(e),o=[];for(const e of n){const n=JSON.parse(e);if("number"!=typeof n.type)throw new Error("Invalid payload.");switch(n.type){case ln.Invocation:this._isInvocationMessage(n);break;case ln.StreamItem:this._isStreamItemMessage(n);break;case ln.Completion:this._isCompletionMessage(n);break;case ln.Ping:case ln.Close:break;case ln.Ack:this._isAckMessage(n);break;case ln.Sequence:this._isSequenceMessage(n);break;default:t.log(Ot.Information,"Unknown message type '"+n.type+"' ignored.");continue}o.push(n)}return o}writeMessage(e){return Bt.write(JSON.stringify(e))}_isInvocationMessage(e){this._assertNotEmptyString(e.target,"Invalid payload for Invocation message."),void 0!==e.invocationId&&this._assertNotEmptyString(e.invocationId,"Invalid payload for Invocation message.")}_isStreamItemMessage(e){if(this._assertNotEmptyString(e.invocationId,"Invalid payload for StreamItem message."),void 0===e.item)throw new Error("Invalid payload for StreamItem message.")}_isCompletionMessage(e){if(e.result&&e.error)throw new Error("Invalid payload for Completion message.");!e.result&&e.error&&this._assertNotEmptyString(e.error,"Invalid payload for Completion message."),this._assertNotEmptyString(e.invocationId,"Invalid payload for Completion message.")}_isAckMessage(e){if("number"!=typeof e.sequenceId)throw new Error("Invalid SequenceId for Ack message.")}_isSequenceMessage(e){if("number"!=typeof e.sequenceId)throw new Error("Invalid SequenceId for Sequence message.")}_assertNotEmptyString(e,t){if("string"!=typeof e||""===e)throw new Error(t)}}const Un={trace:Ot.Trace,debug:Ot.Debug,info:Ot.Information,information:Ot.Information,warn:Ot.Warning,warning:Ot.Warning,error:Ot.Error,critical:Ot.Critical,none:Ot.None};class Ln{configureLogging(e){if(Ht.isRequired(e,"logging"),function(e){return void 0!==e.log}(e))this.logger=e;else if("string"==typeof e){const t=function(e){const t=Un[e.toLowerCase()];if(void 0!==t)return t;throw new Error(`Unknown log level: ${e}`)}(e);this.logger=new Kt(t)}else this.logger=new Kt(e);return this}withUrl(e,t){return Ht.isRequired(e,"url"),Ht.isNotEmpty(e,"url"),this.url=e,this.httpConnectionOptions="object"==typeof t?{...this.httpConnectionOptions,...t}:{...this.httpConnectionOptions,transport:t},this}withHubProtocol(e){return Ht.isRequired(e,"protocol"),this.protocol=e,this}withAutomaticReconnect(e){if(this.reconnectPolicy)throw new Error("A reconnectPolicy has already been set.");return e?Array.isArray(e)?this.reconnectPolicy=new mn(e):this.reconnectPolicy=e:this.reconnectPolicy=new mn,this}withServerTimeout(e){return Ht.isRequired(e,"milliseconds"),this._serverTimeoutInMilliseconds=e,this}withKeepAliveInterval(e){return Ht.isRequired(e,"milliseconds"),this._keepAliveIntervalInMilliseconds=e,this}withStatefulReconnect(e){return void 0===this.httpConnectionOptions&&(this.httpConnectionOptions={}),this.httpConnectionOptions._useStatefulReconnect=!0,this._statefulReconnectBufferSize=null==e?void 0:e.bufferSize,this}build(){const e=this.httpConnectionOptions||{};if(void 0===e.logger&&(e.logger=this.logger),!this.url)throw new Error("The 'HubConnectionBuilder.withUrl' method must be called before building the connection.");const t=new xn(this.url,e);return fn.create(t,this.logger||Ft.instance,this.protocol||new Mn,this.reconnectPolicy,this._serverTimeoutInMilliseconds,this._keepAliveIntervalInMilliseconds,this._statefulReconnectBufferSize)}}var Bn;!function(e){e[e.Default=0]="Default",e[e.Server=1]="Server",e[e.WebAssembly=2]="WebAssembly",e[e.WebView=3]="WebView"}(Bn||(Bn={}));var On,Fn,$n,Hn=4294967295;function Wn(e,t,n){var o=Math.floor(n/4294967296),r=n;e.setUint32(t,o),e.setUint32(t+4,r)}function jn(e,t){return 4294967296*e.getInt32(t)+e.getUint32(t+4)}var zn=("undefined"==typeof process||"never"!==(null===(On=null===process||void 0===process?void 0:process.env)||void 0===On?void 0:On.TEXT_ENCODING))&&"undefined"!=typeof TextEncoder&&"undefined"!=typeof TextDecoder;function qn(e){for(var t=e.length,n=0,o=0;o=55296&&r<=56319&&o65535&&(h-=65536,i.push(h>>>10&1023|55296),h=56320|1023&h),i.push(h)}else i.push(a);i.length>=4096&&(s+=String.fromCharCode.apply(String,i),i.length=0)}return i.length>0&&(s+=String.fromCharCode.apply(String,i)),s}var Gn,Yn=zn?new TextDecoder:null,Qn=zn?"undefined"!=typeof process&&"force"!==(null===($n=null===process||void 0===process?void 0:process.env)||void 0===$n?void 0:$n.TEXT_DECODER)?200:0:Hn,Zn=function(e,t){this.type=e,this.data=t},eo=(Gn=function(e,t){return Gn=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},Gn(e,t)},function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function n(){this.constructor=e}Gn(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}),to=function(e){function t(n){var o=e.call(this,n)||this,r=Object.create(t.prototype);return Object.setPrototypeOf(o,r),Object.defineProperty(o,"name",{configurable:!0,enumerable:!1,value:t.name}),o}return eo(t,e),t}(Error),no={type:-1,encode:function(e){var t,n,o,r;return e instanceof Date?function(e){var t,n=e.sec,o=e.nsec;if(n>=0&&o>=0&&n<=17179869183){if(0===o&&n<=4294967295){var r=new Uint8Array(4);return(t=new DataView(r.buffer)).setUint32(0,n),r}var i=n/4294967296,s=4294967295&n;return r=new Uint8Array(8),(t=new DataView(r.buffer)).setUint32(0,o<<2|3&i),t.setUint32(4,s),r}return r=new Uint8Array(12),(t=new DataView(r.buffer)).setUint32(0,o),Wn(t,4,n),r}((o=1e6*((t=e.getTime())-1e3*(n=Math.floor(t/1e3))),{sec:n+(r=Math.floor(o/1e9)),nsec:o-1e9*r})):null},decode:function(e){var t=function(e){var t=new DataView(e.buffer,e.byteOffset,e.byteLength);switch(e.byteLength){case 4:return{sec:t.getUint32(0),nsec:0};case 8:var n=t.getUint32(0);return{sec:4294967296*(3&n)+t.getUint32(4),nsec:n>>>2};case 12:return{sec:jn(t,4),nsec:t.getUint32(0)};default:throw new to("Unrecognized data size for timestamp (expected 4, 8, or 12): ".concat(e.length))}}(e);return new Date(1e3*t.sec+t.nsec/1e6)}},oo=function(){function e(){this.builtInEncoders=[],this.builtInDecoders=[],this.encoders=[],this.decoders=[],this.register(no)}return e.prototype.register=function(e){var t=e.type,n=e.encode,o=e.decode;if(t>=0)this.encoders[t]=n,this.decoders[t]=o;else{var r=1+t;this.builtInEncoders[r]=n,this.builtInDecoders[r]=o}},e.prototype.tryToEncode=function(e,t){for(var n=0;nthis.maxDepth)throw new Error("Too deep objects in depth ".concat(t));null==e?this.encodeNil():"boolean"==typeof e?this.encodeBoolean(e):"number"==typeof e?this.encodeNumber(e):"string"==typeof e?this.encodeString(e):this.encodeObject(e,t)},e.prototype.ensureBufferSizeToWrite=function(e){var t=this.pos+e;this.view.byteLength=0?e<128?this.writeU8(e):e<256?(this.writeU8(204),this.writeU8(e)):e<65536?(this.writeU8(205),this.writeU16(e)):e<4294967296?(this.writeU8(206),this.writeU32(e)):(this.writeU8(207),this.writeU64(e)):e>=-32?this.writeU8(224|e+32):e>=-128?(this.writeU8(208),this.writeI8(e)):e>=-32768?(this.writeU8(209),this.writeI16(e)):e>=-2147483648?(this.writeU8(210),this.writeI32(e)):(this.writeU8(211),this.writeI64(e)):this.forceFloat32?(this.writeU8(202),this.writeF32(e)):(this.writeU8(203),this.writeF64(e))},e.prototype.writeStringHeader=function(e){if(e<32)this.writeU8(160+e);else if(e<256)this.writeU8(217),this.writeU8(e);else if(e<65536)this.writeU8(218),this.writeU16(e);else{if(!(e<4294967296))throw new Error("Too long string: ".concat(e," bytes in UTF-8"));this.writeU8(219),this.writeU32(e)}},e.prototype.encodeString=function(e){if(e.length>Kn){var t=qn(e);this.ensureBufferSizeToWrite(5+t),this.writeStringHeader(t),Vn(e,this.bytes,this.pos),this.pos+=t}else t=qn(e),this.ensureBufferSizeToWrite(5+t),this.writeStringHeader(t),function(e,t,n){for(var o=e.length,r=n,i=0;i>6&31|192;else{if(s>=55296&&s<=56319&&i>12&15|224,t[r++]=s>>6&63|128):(t[r++]=s>>18&7|240,t[r++]=s>>12&63|128,t[r++]=s>>6&63|128)}t[r++]=63&s|128}else t[r++]=s}}(e,this.bytes,this.pos),this.pos+=t},e.prototype.encodeObject=function(e,t){var n=this.extensionCodec.tryToEncode(e,this.context);if(null!=n)this.encodeExtension(n);else if(Array.isArray(e))this.encodeArray(e,t);else if(ArrayBuffer.isView(e))this.encodeBinary(e);else{if("object"!=typeof e)throw new Error("Unrecognized object: ".concat(Object.prototype.toString.apply(e)));this.encodeMap(e,t)}},e.prototype.encodeBinary=function(e){var t=e.byteLength;if(t<256)this.writeU8(196),this.writeU8(t);else if(t<65536)this.writeU8(197),this.writeU16(t);else{if(!(t<4294967296))throw new Error("Too large binary: ".concat(t));this.writeU8(198),this.writeU32(t)}var n=ro(e);this.writeU8a(n)},e.prototype.encodeArray=function(e,t){var n=e.length;if(n<16)this.writeU8(144+n);else if(n<65536)this.writeU8(220),this.writeU16(n);else{if(!(n<4294967296))throw new Error("Too large array: ".concat(n));this.writeU8(221),this.writeU32(n)}for(var o=0,r=e;o0&&e<=this.maxKeyLength},e.prototype.find=function(e,t,n){e:for(var o=0,r=this.caches[n-1];o=this.maxLengthPerKey?n[Math.random()*n.length|0]=o:n.push(o)},e.prototype.decode=function(e,t,n){var o=this.find(e,t,n);if(null!=o)return this.hit++,o;this.miss++;var r=Xn(e,t,n),i=Uint8Array.prototype.slice.call(e,t,t+n);return this.store(i,r),r},e}(),co=function(e,t){var n,o,r,i,s={label:0,sent:function(){if(1&r[0])throw r[1];return r[1]},trys:[],ops:[]};return i={next:a(0),throw:a(1),return:a(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function a(i){return function(a){return function(i){if(n)throw new TypeError("Generator is already executing.");for(;s;)try{if(n=1,o&&(r=2&i[0]?o.return:i[0]?o.throw||((r=o.return)&&r.call(o),0):o.next)&&!(r=r.call(o,i[1])).done)return r;switch(o=0,r&&(i=[2&i[0],r.value]),i[0]){case 0:case 1:r=i;break;case 4:return s.label++,{value:i[1],done:!1};case 5:s.label++,o=i[1],i=[0];continue;case 7:i=s.ops.pop(),s.trys.pop();continue;default:if(!((r=(r=s.trys).length>0&&r[r.length-1])||6!==i[0]&&2!==i[0])){s=0;continue}if(3===i[0]&&(!r||i[1]>r[0]&&i[1]=e},e.prototype.createExtraByteError=function(e){var t=this.view,n=this.pos;return new RangeError("Extra ".concat(t.byteLength-n," of ").concat(t.byteLength," byte(s) found at buffer[").concat(e,"]"))},e.prototype.decode=function(e){this.reinitializeState(),this.setBuffer(e);var t=this.doDecodeSync();if(this.hasRemaining(1))throw this.createExtraByteError(this.pos);return t},e.prototype.decodeMulti=function(e){return co(this,(function(t){switch(t.label){case 0:this.reinitializeState(),this.setBuffer(e),t.label=1;case 1:return this.hasRemaining(1)?[4,this.doDecodeSync()]:[3,3];case 2:return t.sent(),[3,1];case 3:return[2]}}))},e.prototype.decodeAsync=function(e){var t,n,o,r,i,s,a;return i=this,void 0,a=function(){var i,s,a,c,l,h,d,u;return co(this,(function(p){switch(p.label){case 0:i=!1,p.label=1;case 1:p.trys.push([1,6,7,12]),t=lo(e),p.label=2;case 2:return[4,t.next()];case 3:if((n=p.sent()).done)return[3,5];if(a=n.value,i)throw this.createExtraByteError(this.totalPos);this.appendBuffer(a);try{s=this.doDecodeSync(),i=!0}catch(e){if(!(e instanceof fo))throw e}this.totalPos+=this.pos,p.label=4;case 4:return[3,2];case 5:return[3,12];case 6:return c=p.sent(),o={error:c},[3,12];case 7:return p.trys.push([7,,10,11]),n&&!n.done&&(r=t.return)?[4,r.call(t)]:[3,9];case 8:p.sent(),p.label=9;case 9:return[3,11];case 10:if(o)throw o.error;return[7];case 11:return[7];case 12:if(i){if(this.hasRemaining(1))throw this.createExtraByteError(this.totalPos);return[2,s]}throw h=(l=this).headByte,d=l.pos,u=l.totalPos,new RangeError("Insufficient data in parsing ".concat(so(h)," at ").concat(u," (").concat(d," in the current buffer)"))}}))},new((s=void 0)||(s=Promise))((function(e,t){function n(e){try{r(a.next(e))}catch(e){t(e)}}function o(e){try{r(a.throw(e))}catch(e){t(e)}}function r(t){var r;t.done?e(t.value):(r=t.value,r instanceof s?r:new s((function(e){e(r)}))).then(n,o)}r((a=a.apply(i,[])).next())}))},e.prototype.decodeArrayStream=function(e){return this.decodeMultiAsync(e,!0)},e.prototype.decodeStream=function(e){return this.decodeMultiAsync(e,!1)},e.prototype.decodeMultiAsync=function(e,t){return function(n,o,r){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var i,s=function(){var n,o,r,i,s,a,c,l,h;return co(this,(function(d){switch(d.label){case 0:n=t,o=-1,d.label=1;case 1:d.trys.push([1,13,14,19]),r=lo(e),d.label=2;case 2:return[4,ho(r.next())];case 3:if((i=d.sent()).done)return[3,12];if(s=i.value,t&&0===o)throw this.createExtraByteError(this.totalPos);this.appendBuffer(s),n&&(o=this.readArraySize(),n=!1,this.complete()),d.label=4;case 4:d.trys.push([4,9,,10]),d.label=5;case 5:return[4,ho(this.doDecodeSync())];case 6:return[4,d.sent()];case 7:return d.sent(),0==--o?[3,8]:[3,5];case 8:return[3,10];case 9:if(!((a=d.sent())instanceof fo))throw a;return[3,10];case 10:this.totalPos+=this.pos,d.label=11;case 11:return[3,2];case 12:return[3,19];case 13:return c=d.sent(),l={error:c},[3,19];case 14:return d.trys.push([14,,17,18]),i&&!i.done&&(h=r.return)?[4,ho(h.call(r))]:[3,16];case 15:d.sent(),d.label=16;case 16:return[3,18];case 17:if(l)throw l.error;return[7];case 18:return[7];case 19:return[2]}}))}.apply(n,o||[]),a=[];return i={},c("next"),c("throw"),c("return"),i[Symbol.asyncIterator]=function(){return this},i;function c(e){s[e]&&(i[e]=function(t){return new Promise((function(n,o){a.push([e,t,n,o])>1||l(e,t)}))})}function l(e,t){try{(n=s[e](t)).value instanceof ho?Promise.resolve(n.value.v).then(h,d):u(a[0][2],n)}catch(e){u(a[0][3],e)}var n}function h(e){l("next",e)}function d(e){l("throw",e)}function u(e,t){e(t),a.shift(),a.length&&l(a[0][0],a[0][1])}}(this,arguments)},e.prototype.doDecodeSync=function(){e:for(;;){var e=this.readHeadByte(),t=void 0;if(e>=224)t=e-256;else if(e<192)if(e<128)t=e;else if(e<144){if(0!=(o=e-128)){this.pushMapState(o),this.complete();continue e}t={}}else if(e<160){if(0!=(o=e-144)){this.pushArrayState(o),this.complete();continue e}t=[]}else{var n=e-160;t=this.decodeUtf8String(n,0)}else if(192===e)t=null;else if(194===e)t=!1;else if(195===e)t=!0;else if(202===e)t=this.readF32();else if(203===e)t=this.readF64();else if(204===e)t=this.readU8();else if(205===e)t=this.readU16();else if(206===e)t=this.readU32();else if(207===e)t=this.readU64();else if(208===e)t=this.readI8();else if(209===e)t=this.readI16();else if(210===e)t=this.readI32();else if(211===e)t=this.readI64();else if(217===e)n=this.lookU8(),t=this.decodeUtf8String(n,1);else if(218===e)n=this.lookU16(),t=this.decodeUtf8String(n,2);else if(219===e)n=this.lookU32(),t=this.decodeUtf8String(n,4);else if(220===e){if(0!==(o=this.readU16())){this.pushArrayState(o),this.complete();continue e}t=[]}else if(221===e){if(0!==(o=this.readU32())){this.pushArrayState(o),this.complete();continue e}t=[]}else if(222===e){if(0!==(o=this.readU16())){this.pushMapState(o),this.complete();continue e}t={}}else if(223===e){if(0!==(o=this.readU32())){this.pushMapState(o),this.complete();continue e}t={}}else if(196===e){var o=this.lookU8();t=this.decodeBinary(o,1)}else if(197===e)o=this.lookU16(),t=this.decodeBinary(o,2);else if(198===e)o=this.lookU32(),t=this.decodeBinary(o,4);else if(212===e)t=this.decodeExtension(1,0);else if(213===e)t=this.decodeExtension(2,0);else if(214===e)t=this.decodeExtension(4,0);else if(215===e)t=this.decodeExtension(8,0);else if(216===e)t=this.decodeExtension(16,0);else if(199===e)o=this.lookU8(),t=this.decodeExtension(o,1);else if(200===e)o=this.lookU16(),t=this.decodeExtension(o,2);else{if(201!==e)throw new to("Unrecognized type byte: ".concat(so(e)));o=this.lookU32(),t=this.decodeExtension(o,4)}this.complete();for(var r=this.stack;r.length>0;){var i=r[r.length-1];if(0===i.type){if(i.array[i.position]=t,i.position++,i.position!==i.size)continue e;r.pop(),t=i.array}else{if(1===i.type){if("string"!=(s=typeof t)&&"number"!==s)throw new to("The type of key must be string or number but "+typeof t);if("__proto__"===t)throw new to("The key __proto__ is not allowed");i.key=t,i.type=2;continue e}if(i.map[i.key]=t,i.readCount++,i.readCount!==i.size){i.key=null,i.type=1;continue e}r.pop(),t=i.map}}return t}var s},e.prototype.readHeadByte=function(){return-1===this.headByte&&(this.headByte=this.readU8()),this.headByte},e.prototype.complete=function(){this.headByte=-1},e.prototype.readArraySize=function(){var e=this.readHeadByte();switch(e){case 220:return this.readU16();case 221:return this.readU32();default:if(e<160)return e-144;throw new to("Unrecognized array type byte: ".concat(so(e)))}},e.prototype.pushMapState=function(e){if(e>this.maxMapLength)throw new to("Max length exceeded: map length (".concat(e,") > maxMapLengthLength (").concat(this.maxMapLength,")"));this.stack.push({type:1,size:e,key:null,readCount:0,map:{}})},e.prototype.pushArrayState=function(e){if(e>this.maxArrayLength)throw new to("Max length exceeded: array length (".concat(e,") > maxArrayLength (").concat(this.maxArrayLength,")"));this.stack.push({type:0,size:e,array:new Array(e),position:0})},e.prototype.decodeUtf8String=function(e,t){var n;if(e>this.maxStrLength)throw new to("Max length exceeded: UTF-8 byte length (".concat(e,") > maxStrLength (").concat(this.maxStrLength,")"));if(this.bytes.byteLengthQn?function(e,t,n){var o=e.subarray(t,t+n);return Yn.decode(o)}(this.bytes,r,e):Xn(this.bytes,r,e),this.pos+=t+e,o},e.prototype.stateIsMapKey=function(){return this.stack.length>0&&1===this.stack[this.stack.length-1].type},e.prototype.decodeBinary=function(e,t){if(e>this.maxBinLength)throw new to("Max length exceeded: bin length (".concat(e,") > maxBinLength (").concat(this.maxBinLength,")"));if(!this.hasRemaining(e+t))throw go;var n=this.pos+t,o=this.bytes.subarray(n,n+e);return this.pos+=t+e,o},e.prototype.decodeExtension=function(e,t){if(e>this.maxExtLength)throw new to("Max length exceeded: ext length (".concat(e,") > maxExtLength (").concat(this.maxExtLength,")"));var n=this.view.getInt8(this.pos+t),o=this.decodeBinary(e,t+1);return this.extensionCodec.decode(o,n,this.context)},e.prototype.lookU8=function(){return this.view.getUint8(this.pos)},e.prototype.lookU16=function(){return this.view.getUint16(this.pos)},e.prototype.lookU32=function(){return this.view.getUint32(this.pos)},e.prototype.readU8=function(){var e=this.view.getUint8(this.pos);return this.pos++,e},e.prototype.readI8=function(){var e=this.view.getInt8(this.pos);return this.pos++,e},e.prototype.readU16=function(){var e=this.view.getUint16(this.pos);return this.pos+=2,e},e.prototype.readI16=function(){var e=this.view.getInt16(this.pos);return this.pos+=2,e},e.prototype.readU32=function(){var e=this.view.getUint32(this.pos);return this.pos+=4,e},e.prototype.readI32=function(){var e=this.view.getInt32(this.pos);return this.pos+=4,e},e.prototype.readU64=function(){var e,t,n=(e=this.view,t=this.pos,4294967296*e.getUint32(t)+e.getUint32(t+4));return this.pos+=8,n},e.prototype.readI64=function(){var e=jn(this.view,this.pos);return this.pos+=8,e},e.prototype.readF32=function(){var e=this.view.getFloat32(this.pos);return this.pos+=4,e},e.prototype.readF64=function(){var e=this.view.getFloat64(this.pos);return this.pos+=8,e},e}();class yo{static write(e){let t=e.byteLength||e.length;const n=[];do{let e=127&t;t>>=7,t>0&&(e|=128),n.push(e)}while(t>0);t=e.byteLength||e.length;const o=new Uint8Array(n.length+t);return o.set(n,0),o.set(e,n.length),o.buffer}static parse(e){const t=[],n=new Uint8Array(e),o=[0,7,14,21,28];for(let r=0;r7)throw new Error("Messages bigger than 2GB are not supported.");if(!(n.byteLength>=r+s+a))throw new Error("Incomplete message.");t.push(n.slice?n.slice(r+s,r+s+a):n.subarray(r+s,r+s+a)),r=r+s+a}return t}}const wo=new Uint8Array([145,ln.Ping]);class bo{constructor(e){this.name="messagepack",this.version=2,this.transferFormat=kn.Binary,this._errorResult=1,this._voidResult=2,this._nonVoidResult=3,e=e||{},this._encoder=new io(e.extensionCodec,e.context,e.maxDepth,e.initialBufferSize,e.sortKeys,e.forceFloat32,e.ignoreUndefined,e.forceIntegerToFloat),this._decoder=new vo(e.extensionCodec,e.context,e.maxStrLength,e.maxBinLength,e.maxArrayLength,e.maxMapLength,e.maxExtLength)}parseMessages(e,t){if(!(n=e)||"undefined"==typeof ArrayBuffer||!(n instanceof ArrayBuffer||n.constructor&&"ArrayBuffer"===n.constructor.name))throw new Error("Invalid input for MessagePack hub protocol. Expected an ArrayBuffer.");var n;null===t&&(t=Ft.instance);const o=yo.parse(e),r=[];for(const e of o){const n=this._parseMessage(e,t);n&&r.push(n)}return r}writeMessage(e){switch(e.type){case ln.Invocation:return this._writeInvocation(e);case ln.StreamInvocation:return this._writeStreamInvocation(e);case ln.StreamItem:return this._writeStreamItem(e);case ln.Completion:return this._writeCompletion(e);case ln.Ping:return yo.write(wo);case ln.CancelInvocation:return this._writeCancelInvocation(e);case ln.Close:return this._writeClose();case ln.Ack:return this._writeAck(e);case ln.Sequence:return this._writeSequence(e);default:throw new Error("Invalid message type.")}}_parseMessage(e,t){if(0===e.length)throw new Error("Invalid payload.");const n=this._decoder.decode(e);if(0===n.length||!(n instanceof Array))throw new Error("Invalid payload.");const o=n[0];switch(o){case ln.Invocation:return this._createInvocationMessage(this._readHeaders(n),n);case ln.StreamItem:return this._createStreamItemMessage(this._readHeaders(n),n);case ln.Completion:return this._createCompletionMessage(this._readHeaders(n),n);case ln.Ping:return this._createPingMessage(n);case ln.Close:return this._createCloseMessage(n);case ln.Ack:return this._createAckMessage(n);case ln.Sequence:return this._createSequenceMessage(n);default:return t.log(Ot.Information,"Unknown message type '"+o+"' ignored."),null}}_createCloseMessage(e){if(e.length<2)throw new Error("Invalid payload for Close message.");return{allowReconnect:e.length>=3?e[2]:void 0,error:e[1],type:ln.Close}}_createPingMessage(e){if(e.length<1)throw new Error("Invalid payload for Ping message.");return{type:ln.Ping}}_createInvocationMessage(e,t){if(t.length<5)throw new Error("Invalid payload for Invocation message.");const n=t[2];return n?{arguments:t[4],headers:e,invocationId:n,streamIds:[],target:t[3],type:ln.Invocation}:{arguments:t[4],headers:e,streamIds:[],target:t[3],type:ln.Invocation}}_createStreamItemMessage(e,t){if(t.length<4)throw new Error("Invalid payload for StreamItem message.");return{headers:e,invocationId:t[2],item:t[3],type:ln.StreamItem}}_createCompletionMessage(e,t){if(t.length<4)throw new Error("Invalid payload for Completion message.");const n=t[3];if(n!==this._voidResult&&t.length<5)throw new Error("Invalid payload for Completion message.");let o,r;switch(n){case this._errorResult:o=t[4];break;case this._nonVoidResult:r=t[4]}return{error:o,headers:e,invocationId:t[2],result:r,type:ln.Completion}}_createAckMessage(e){if(e.length<1)throw new Error("Invalid payload for Ack message.");return{sequenceId:e[1],type:ln.Ack}}_createSequenceMessage(e){if(e.length<1)throw new Error("Invalid payload for Sequence message.");return{sequenceId:e[1],type:ln.Sequence}}_writeInvocation(e){let t;return t=e.streamIds?this._encoder.encode([ln.Invocation,e.headers||{},e.invocationId||null,e.target,e.arguments,e.streamIds]):this._encoder.encode([ln.Invocation,e.headers||{},e.invocationId||null,e.target,e.arguments]),yo.write(t.slice())}_writeStreamInvocation(e){let t;return t=e.streamIds?this._encoder.encode([ln.StreamInvocation,e.headers||{},e.invocationId,e.target,e.arguments,e.streamIds]):this._encoder.encode([ln.StreamInvocation,e.headers||{},e.invocationId,e.target,e.arguments]),yo.write(t.slice())}_writeStreamItem(e){const t=this._encoder.encode([ln.StreamItem,e.headers||{},e.invocationId,e.item]);return yo.write(t.slice())}_writeCompletion(e){const t=e.error?this._errorResult:void 0!==e.result?this._nonVoidResult:this._voidResult;let n;switch(t){case this._errorResult:n=this._encoder.encode([ln.Completion,e.headers||{},e.invocationId,t,e.error]);break;case this._voidResult:n=this._encoder.encode([ln.Completion,e.headers||{},e.invocationId,t]);break;case this._nonVoidResult:n=this._encoder.encode([ln.Completion,e.headers||{},e.invocationId,t,e.result])}return yo.write(n.slice())}_writeCancelInvocation(e){const t=this._encoder.encode([ln.CancelInvocation,e.headers||{},e.invocationId]);return yo.write(t.slice())}_writeClose(){const e=this._encoder.encode([ln.Close,null]);return yo.write(e.slice())}_writeAck(e){const t=this._encoder.encode([ln.Ack,e.sequenceId]);return yo.write(t.slice())}_writeSequence(e){const t=this._encoder.encode([ln.Sequence,e.sequenceId]);return yo.write(t.slice())}_readHeaders(e){const t=e[1];if("object"!=typeof t)throw new Error("Invalid headers.");return t}}const _o="function"==typeof TextDecoder?new TextDecoder("utf-8"):null,So=_o?_o.decode.bind(_o):function(e){let t=0;const n=e.length,o=[],r=[];for(;t65535&&(r-=65536,o.push(r>>>10&1023|55296),r=56320|1023&r),o.push(r)}o.length>1024&&(r.push(String.fromCharCode.apply(null,o)),o.length=0)}return r.push(String.fromCharCode.apply(null,o)),r.join("")},Co=Math.pow(2,32),Eo=Math.pow(2,21)-1;function Io(e,t){return e[t]|e[t+1]<<8|e[t+2]<<16|e[t+3]<<24}function ko(e,t){return e[t]+(e[t+1]<<8)+(e[t+2]<<16)+(e[t+3]<<24>>>0)}function To(e,t){const n=ko(e,t+4);if(n>Eo)throw new Error(`Cannot read uint64 with high order part ${n}, because the result would exceed Number.MAX_SAFE_INTEGER.`);return n*Co+ko(e,t)}class Ro{constructor(e){this.batchData=e;const t=new No(e);this.arrayRangeReader=new Po(e),this.arrayBuilderSegmentReader=new Mo(e),this.diffReader=new Do(e),this.editReader=new Ao(e,t),this.frameReader=new xo(e,t)}updatedComponents(){return Io(this.batchData,this.batchData.length-20)}referenceFrames(){return Io(this.batchData,this.batchData.length-16)}disposedComponentIds(){return Io(this.batchData,this.batchData.length-12)}disposedEventHandlerIds(){return Io(this.batchData,this.batchData.length-8)}updatedComponentsEntry(e,t){const n=e+4*t;return Io(this.batchData,n)}referenceFramesEntry(e,t){return e+20*t}disposedComponentIdsEntry(e,t){const n=e+4*t;return Io(this.batchData,n)}disposedEventHandlerIdsEntry(e,t){const n=e+8*t;return To(this.batchData,n)}}class Do{constructor(e){this.batchDataUint8=e}componentId(e){return Io(this.batchDataUint8,e)}edits(e){return e+4}editsEntry(e,t){return e+16*t}}class Ao{constructor(e,t){this.batchDataUint8=e,this.stringReader=t}editType(e){return Io(this.batchDataUint8,e)}siblingIndex(e){return Io(this.batchDataUint8,e+4)}newTreeIndex(e){return Io(this.batchDataUint8,e+8)}moveToSiblingIndex(e){return Io(this.batchDataUint8,e+8)}removedAttributeName(e){const t=Io(this.batchDataUint8,e+12);return this.stringReader.readString(t)}}class xo{constructor(e,t){this.batchDataUint8=e,this.stringReader=t}frameType(e){return Io(this.batchDataUint8,e)}subtreeLength(e){return Io(this.batchDataUint8,e+4)}elementReferenceCaptureId(e){const t=Io(this.batchDataUint8,e+4);return this.stringReader.readString(t)}componentId(e){return Io(this.batchDataUint8,e+8)}elementName(e){const t=Io(this.batchDataUint8,e+8);return this.stringReader.readString(t)}textContent(e){const t=Io(this.batchDataUint8,e+4);return this.stringReader.readString(t)}markupContent(e){const t=Io(this.batchDataUint8,e+4);return this.stringReader.readString(t)}attributeName(e){const t=Io(this.batchDataUint8,e+4);return this.stringReader.readString(t)}attributeValue(e){const t=Io(this.batchDataUint8,e+8);return this.stringReader.readString(t)}attributeEventHandlerId(e){return To(this.batchDataUint8,e+12)}}class No{constructor(e){this.batchDataUint8=e,this.stringTableStartIndex=Io(e,e.length-4)}readString(e){if(-1===e)return null;{const n=Io(this.batchDataUint8,this.stringTableStartIndex+4*e),o=function(e,t){let n=0,o=0;for(let r=0;r<4;r++){const i=e[t+r];if(n|=(127&i)<this.nextBatchId)return this.fatalError?(this.logger.log(yt.Debug,`Received a new batch ${e} but errored out on a previous batch ${this.nextBatchId-1}`),void await n.send("OnRenderCompleted",this.nextBatchId-1,this.fatalError.toString())):void this.logger.log(yt.Debug,`Waiting for batch ${this.nextBatchId}. Batch ${e} not processed.`);try{this.nextBatchId++,this.logger.log(yt.Debug,`Applying batch ${e}.`),xe(Bn.Server,new Ro(t)),await this.completeBatch(n,e)}catch(t){throw this.fatalError=t.toString(),this.logger.log(yt.Error,`There was an error applying batch ${e}.`),n.send("OnRenderCompleted",e,t.toString()),t}}getLastBatchid(){return this.nextBatchId-1}async completeBatch(e,t){try{await e.send("OnRenderCompleted",t,null)}catch{this.logger.log(yt.Warning,`Failed to deliver completion notification for render '${t}'.`)}}}let Lo=!1;function Bo(){const e=document.querySelector("#blazor-error-ui");e&&(e.style.display="block"),Lo||(Lo=!0,document.querySelectorAll("#blazor-error-ui .reload").forEach((e=>{e.onclick=function(e){location.reload(),e.preventDefault()}})),document.querySelectorAll("#blazor-error-ui .dismiss").forEach((e=>{e.onclick=function(e){const t=document.querySelector("#blazor-error-ui");t&&(t.style.display="none"),e.preventDefault()}})))}class Oo{constructor(t,n,o,r){this._firstUpdate=!0,this._renderingFailed=!1,this._disposed=!1,this._circuitId=void 0,this._applicationState=n,this._componentManager=t,this._options=o,this._logger=r,this._renderQueue=new Uo(this._logger),this._dispatcher=e.attachDispatcher(this)}start(){if(this.isDisposedOrDisposing())throw new Error("Cannot start a disposed circuit.");return this._startPromise||(this._startPromise=this.startCore()),this._startPromise}updateRootComponents(e){var t,n;return this._firstUpdate?(this._firstUpdate=!1,null===(t=this._connection)||void 0===t?void 0:t.send("UpdateRootComponents",e,this._applicationState)):null===(n=this._connection)||void 0===n?void 0:n.send("UpdateRootComponents",e,"")}async startCore(){if(this._connection=await this.startConnection(),this._connection.state!==hn.Connected)return!1;const e=JSON.stringify(this._componentManager.initialComponents.map((e=>Ut(e))));if(this._circuitId=await this._connection.invoke("StartCircuit",Je.getBaseURI(),Je.getLocationHref(),e,this._applicationState||""),!this._circuitId)return!1;for(const e of this._options.circuitHandlers)e.onCircuitOpened&&e.onCircuitOpened();return!0}async startConnection(){var e,t;const n=new bo;n.name="blazorpack";const o=(new Ln).withUrl("_blazor").withHubProtocol(n);this._options.configureSignalR(o);const r=o.build();r.on("JS.AttachComponent",((e,t)=>De(Bn.Server,this.resolveElement(t),e,!1))),r.on("JS.BeginInvokeJS",this._dispatcher.beginInvokeJSFromDotNet.bind(this._dispatcher)),r.on("JS.EndInvokeDotNet",this._dispatcher.endInvokeDotNetFromJS.bind(this._dispatcher)),r.on("JS.ReceiveByteArray",this._dispatcher.receiveByteArray.bind(this._dispatcher)),r.on("JS.BeginTransmitStream",(e=>{const t=new ReadableStream({start:t=>{r.stream("SendDotNetStreamToJS",e).subscribe({next:e=>t.enqueue(e),complete:()=>t.close(),error:e=>t.error(e)})}});this._dispatcher.supplyDotNetStream(e,t)})),r.on("JS.RenderBatch",(async(e,t)=>{var n,o;this._logger.log(Ot.Debug,`Received render batch with id ${e} and ${t.byteLength} bytes.`),await this._renderQueue.processBatch(e,t,this._connection),null===(o=(n=this._componentManager).onAfterRenderBatch)||void 0===o||o.call(n,Bn.Server)})),r.on("JS.EndUpdateRootComponents",(e=>{var t,n;null===(n=(t=this._componentManager).onAfterUpdateRootComponents)||void 0===n||n.call(t,e)})),r.on("JS.EndLocationChanging",vt._internal.navigationManager.endLocationChanging),r.onclose((e=>{this._interopMethodsForReconnection=function(e){const t=C.get(e);if(!t)throw new Error(`Interop methods are not registered for renderer ${e}`);return C.delete(e),t}(Bn.Server),this._disposed||this._renderingFailed||this._options.reconnectionHandler.onConnectionDown(this._options.reconnectionOptions,e)})),r.on("JS.Error",(e=>{this._renderingFailed=!0,this.unhandledError(e),Bo()}));try{await r.start()}catch(e){if(this.unhandledError(e),"FailedToNegotiateWithServerError"===e.errorType)throw e;Bo(),e.innerErrors&&(e.innerErrors.some((e=>"UnsupportedTransportError"===e.errorType&&e.transport===In.WebSockets))?this._logger.log(Ot.Error,"Unable to connect, please ensure you are using an updated browser that supports WebSockets."):e.innerErrors.some((e=>"FailedToStartTransportError"===e.errorType&&e.transport===In.WebSockets))?this._logger.log(Ot.Error,"Unable to connect, please ensure WebSockets are available. A VPN or proxy may be blocking the connection."):e.innerErrors.some((e=>"DisabledTransportError"===e.errorType&&e.transport===In.LongPolling))&&this._logger.log(Ot.Error,"Unable to initiate a SignalR connection to the server. This might be because the server is not configured to support WebSockets. For additional details, visit https://aka.ms/blazor-server-websockets-error."))}return(null===(t=null===(e=r.connection)||void 0===e?void 0:e.features)||void 0===t?void 0:t.inherentKeepAlive)&&this._logger.log(Ot.Warning,"Failed to connect via WebSockets, using the Long Polling fallback transport. This may be due to a VPN or proxy blocking the connection. To troubleshoot this, visit https://aka.ms/blazor-server-using-fallback-long-polling."),r}async disconnect(){var e;await(null===(e=this._connection)||void 0===e?void 0:e.stop())}async reconnect(){if(!this._circuitId)throw new Error("Circuit host not initialized.");return this._connection.state===hn.Connected||(this._connection=await this.startConnection(),this._interopMethodsForReconnection&&(k(Bn.Server,this._interopMethodsForReconnection),this._interopMethodsForReconnection=void 0),!!await this._connection.invoke("ConnectCircuit",this._circuitId)&&(this._options.reconnectionHandler.onConnectionUp(),!0))}beginInvokeDotNetFromJS(e,t,n,o,r){this.throwIfDispatchingWhenDisposed(),this._connection.send("BeginInvokeDotNetFromJS",e?e.toString():null,t,n,o||0,r)}endInvokeJSFromDotNet(e,t,n){this.throwIfDispatchingWhenDisposed(),this._connection.send("EndInvokeJSFromDotNet",e,t,n)}sendByteArray(e,t){this.throwIfDispatchingWhenDisposed(),this._connection.send("ReceiveByteArray",e,t)}throwIfDispatchingWhenDisposed(){if(this._disposed)throw new Error("The circuit associated with this dispatcher is no longer available.")}sendLocationChanged(e,t,n){return this._connection.send("OnLocationChanged",e,t,n)}sendLocationChanging(e,t,n,o){return this._connection.send("OnLocationChanging",e,t,n,o)}sendJsDataStream(e,t,n){return function(e,t,n,o){setTimeout((async()=>{let r=5,i=(new Date).valueOf();try{const s=t instanceof Blob?t.size:t.byteLength;let a=0,c=0;for(;a1)await e.send("ReceiveJSDataChunk",n,c,h,null);else{if(!await e.invoke("ReceiveJSDataChunk",n,c,h,null))break;const t=(new Date).valueOf(),o=t-i;i=t,r=Math.max(1,Math.round(500/Math.max(1,o)))}a+=l,c++}}catch(t){await e.send("ReceiveJSDataChunk",n,-1,null,t.toString())}}),0)}(this._connection,e,t,n)}resolveElement(e){const t=w(e);if(t)return W(t,!0);const n=Number.parseInt(e);if(!Number.isNaN(n))return H(this._componentManager.resolveRootComponent(n));throw new Error(`Invalid sequence number or identifier '${e}'.`)}getRootComponentManager(){return this._componentManager}unhandledError(e){this._logger.log(Ot.Error,e),this.disconnect()}getDisconnectFormData(){const e=new FormData,t=this._circuitId;return e.append("circuitId",t),e}didRenderingFail(){return this._renderingFailed}isDisposedOrDisposing(){return void 0!==this._disposePromise}sendDisconnectBeacon(){if(this._disposed)return;const e=this.getDisconnectFormData();this._disposed=navigator.sendBeacon("_blazor/disconnect",e)}dispose(){return this._disposePromise||(this._disposePromise=this.disposeCore()),this._disposePromise}async disposeCore(){var e;if(!this._startPromise)return void(this._disposed=!0);await this._startPromise,this._disposed=!0,null===(e=this._connection)||void 0===e||e.stop();const t=this.getDisconnectFormData();fetch("http://github.com/_blazor/disconnect",{method:"POST",body:t});for(const e of this._options.circuitHandlers)e.onCircuitClosed&&e.onCircuitClosed()}}function Fo(e){const t={...$o,...e};return e&&e.reconnectionOptions&&(t.reconnectionOptions={...$o.reconnectionOptions,...e.reconnectionOptions}),t}const $o={configureSignalR:e=>{},logLevel:yt.Warning,initializers:void 0,circuitHandlers:[],reconnectionOptions:{maxRetries:8,retryIntervalMilliseconds:2e4,dialogId:"components-reconnect-modal"}};class Ho{constructor(e,t,n,o){this.maxRetries=t,this.document=n,this.logger=o,this.modal=this.document.createElement("div"),this.modal.id=e,this.maxRetries=t,this.modal.style.cssText=["position: fixed","top: 0","right: 0","bottom: 0","left: 0","z-index: 1050","display: none","overflow: hidden","background-color: #fff","opacity: 0.8","text-align: center","font-weight: bold","transition: visibility 0s linear 500ms"].join(";"),this.message=this.document.createElement("h5"),this.message.style.cssText="margin-top: 20px",this.button=this.document.createElement("button"),this.button.style.cssText="margin:5px auto 5px",this.button.textContent="Retry";const r=this.document.createElement("a");r.addEventListener("click",(()=>location.reload())),r.textContent="reload",this.reloadParagraph=this.document.createElement("p"),this.reloadParagraph.textContent="Alternatively, ",this.reloadParagraph.appendChild(r),this.modal.appendChild(this.message),this.modal.appendChild(this.button),this.modal.appendChild(this.reloadParagraph),this.loader=this.getLoader(),this.message.after(this.loader),this.button.addEventListener("click",(async()=>{this.show();try{await vt.reconnect()||this.rejected()}catch(e){this.logger.log(yt.Error,e),this.failed()}}))}show(){this.document.contains(this.modal)||this.document.body.appendChild(this.modal),this.modal.style.display="block",this.loader.style.display="inline-block",this.button.style.display="none",this.reloadParagraph.style.display="none",this.message.textContent="Attempting to reconnect to the server...",this.modal.style.visibility="hidden",setTimeout((()=>{this.modal.style.visibility="visible"}),0)}update(e){this.message.textContent=`Attempting to reconnect to the server: ${e} of ${this.maxRetries}`}hide(){this.modal.style.display="none"}failed(){this.button.style.display="block",this.reloadParagraph.style.display="none",this.loader.style.display="none";const e=this.document.createTextNode("Reconnection failed. Try "),t=this.document.createElement("a");t.textContent="reloading",t.setAttribute("href",""),t.addEventListener("click",(()=>location.reload()));const n=this.document.createTextNode(" the page if you're unable to reconnect.");this.message.replaceChildren(e,t,n)}rejected(){this.button.style.display="none",this.reloadParagraph.style.display="none",this.loader.style.display="none";const e=this.document.createTextNode("Could not reconnect to the server. "),t=this.document.createElement("a");t.textContent="Reload",t.setAttribute("href",""),t.addEventListener("click",(()=>location.reload()));const n=this.document.createTextNode(" the page to restore functionality.");this.message.replaceChildren(e,t,n)}getLoader(){const e=this.document.createElement("div");return e.style.cssText=["border: 0.3em solid #f3f3f3","border-top: 0.3em solid #3498db","border-radius: 50%","width: 2em","height: 2em","display: inline-block"].join(";"),e.animate([{transform:"rotate(0deg)"},{transform:"rotate(360deg)"}],{duration:2e3,iterations:1/0}),e}}class Wo{constructor(e,t,n){this.dialog=e,this.maxRetries=t,this.document=n,this.document=n;const o=this.document.getElementById(Wo.MaxRetriesId);o&&(o.innerText=this.maxRetries.toString())}show(){this.removeClasses(),this.dialog.classList.add(Wo.ShowClassName)}update(e){const t=this.document.getElementById(Wo.CurrentAttemptId);t&&(t.innerText=e.toString())}hide(){this.removeClasses(),this.dialog.classList.add(Wo.HideClassName)}failed(){this.removeClasses(),this.dialog.classList.add(Wo.FailedClassName)}rejected(){this.removeClasses(),this.dialog.classList.add(Wo.RejectedClassName)}removeClasses(){this.dialog.classList.remove(Wo.ShowClassName,Wo.HideClassName,Wo.FailedClassName,Wo.RejectedClassName)}}Wo.ShowClassName="components-reconnect-show",Wo.HideClassName="components-reconnect-hide",Wo.FailedClassName="components-reconnect-failed",Wo.RejectedClassName="components-reconnect-rejected",Wo.MaxRetriesId="components-reconnect-max-retries",Wo.CurrentAttemptId="components-reconnect-current-attempt";class jo{constructor(e,t,n){this._currentReconnectionProcess=null,this._logger=e,this._reconnectionDisplay=t,this._reconnectCallback=n||vt.reconnect}onConnectionDown(e,t){if(!this._reconnectionDisplay){const t=document.getElementById(e.dialogId);this._reconnectionDisplay=t?new Wo(t,e.maxRetries,document):new Ho(e.dialogId,e.maxRetries,document,this._logger)}this._currentReconnectionProcess||(this._currentReconnectionProcess=new zo(e,this._logger,this._reconnectCallback,this._reconnectionDisplay))}onConnectionUp(){this._currentReconnectionProcess&&(this._currentReconnectionProcess.dispose(),this._currentReconnectionProcess=null)}}class zo{constructor(e,t,n,o){this.logger=t,this.reconnectCallback=n,this.isDisposed=!1,this.reconnectDisplay=o,this.reconnectDisplay.show(),this.attemptPeriodicReconnection(e)}dispose(){this.isDisposed=!0,this.reconnectDisplay.hide()}async attemptPeriodicReconnection(e){for(let t=0;tzo.MaximumFirstRetryInterval?zo.MaximumFirstRetryInterval:e.retryIntervalMilliseconds;if(await this.delay(n),this.isDisposed)break;try{return await this.reconnectCallback()?void 0:void this.reconnectDisplay.rejected()}catch(e){this.logger.log(yt.Error,e)}}this.reconnectDisplay.failed()}delay(e){return new Promise((t=>setTimeout(t,e)))}}zo.MaximumFirstRetryInterval=3e3;class qo{constructor(e=!0,t,n,o=0){this.singleRuntime=e,this.logger=t,this.webRendererId=o,this.afterStartedCallbacks=[],n&&this.afterStartedCallbacks.push(...n)}async importInitializersAsync(e,t){await Promise.all(e.map((e=>async function(e,n){const o=function(e){const t=document.baseURI;return t.endsWith("/")?`${t}${e}`:`${t}/${e}`}(n),r=await import(o);if(void 0!==r){if(e.singleRuntime){const{beforeStart:n,afterStarted:o,beforeWebAssemblyStart:s,afterWebAssemblyStarted:a,beforeServerStart:c,afterServerStarted:l}=r;let h=n;e.webRendererId===Bn.Server&&c&&(h=c),e.webRendererId===Bn.WebAssembly&&s&&(h=s);let d=o;return e.webRendererId===Bn.Server&&l&&(d=l),e.webRendererId===Bn.WebAssembly&&a&&(d=a),i(e,h,d,t)}return function(e,t,n){var r;const s=n[0],{beforeStart:a,afterStarted:c,beforeWebStart:l,afterWebStarted:h,beforeWebAssemblyStart:d,afterWebAssemblyStarted:u,beforeServerStart:p,afterServerStarted:f}=t,g=!(l||h||d||u||p||f||!a&&!c),m=g&&s.enableClassicInitializers;if(g&&!s.enableClassicInitializers)null===(r=e.logger)||void 0===r||r.log(yt.Warning,`Initializer '${o}' will be ignored because multiple runtimes are available. use 'before(web|webAssembly|server)Start' and 'after(web|webAssembly|server)Started?' instead.)`);else if(m)return i(e,a,c,n);if(function(e){e.webAssembly?e.webAssembly.initializers||(e.webAssembly.initializers={beforeStart:[],afterStarted:[]}):e.webAssembly={initializers:{beforeStart:[],afterStarted:[]}},e.circuit?e.circuit.initializers||(e.circuit.initializers={beforeStart:[],afterStarted:[]}):e.circuit={initializers:{beforeStart:[],afterStarted:[]}}}(s),d&&s.webAssembly.initializers.beforeStart.push(d),u&&s.webAssembly.initializers.afterStarted.push(u),p&&s.circuit.initializers.beforeStart.push(p),f&&s.circuit.initializers.afterStarted.push(f),h&&e.afterStartedCallbacks.push(h),l)return l(s)}(e,r,t)}function i(e,t,n,o){if(n&&e.afterStartedCallbacks.push(n),t)return t(...o)}}(this,e))))}async invokeAfterStartedCallbacks(e){const t=function(e){var t;return null===(t=I.get(e))||void 0===t?void 0:t[1]}(this.webRendererId);t&&await t,await Promise.all(this.afterStartedCallbacks.map((t=>t(e))))}}let Jo,Ko,Vo,Xo,Go,Yo,Qo,Zo;function er(e){if(Xo)throw new Error("Circuit options have already been configured.");if(Xo)throw new Error("WebAssembly options have already been configured.");Jo=async function(e){const t=await e;Xo=Fo(t)}(e)}function tr(e){if(void 0!==Yo)throw new Error("Blazor Server has already started.");return Yo=new Promise(nr.bind(null,e)),Yo}async function nr(e,t,n){await Jo;const o=await async function(e){if(e.initializers)return await Promise.all(e.initializers.beforeStart.map((t=>t(e)))),new qo(!1,void 0,e.initializers.afterStarted,Bn.Server);const t=await fetch("http://github.com/_blazor/initializers",{method:"GET",credentials:"include",cache:"no-cache"}),n=await t.json(),o=new qo(!0,void 0,void 0,Bn.Server);return await o.importInitializersAsync(n,[e]),o}(Xo);if(Ko=It(document)||"",Go=new bt(Xo.logLevel),Vo=new Oo(e,Ko,Xo,Go),Go.log(yt.Information,"Starting up Blazor server-side application."),vt.reconnect=async()=>!(Vo.didRenderingFail()||!await Vo.reconnect()&&(Go.log(yt.Information,"Reconnection attempt to the circuit was rejected by the server. This may indicate that the associated state is no longer available on the server."),1)),vt.defaultReconnectionHandler=new jo(Go),Xo.reconnectionHandler=Xo.reconnectionHandler||vt.defaultReconnectionHandler,vt._internal.navigationManager.listenForNavigationEvents(Bn.Server,((e,t,n)=>Vo.sendLocationChanged(e,t,n)),((e,t,n,o)=>Vo.sendLocationChanging(e,t,n,o))),vt._internal.forceCloseConnection=()=>Vo.disconnect(),vt._internal.sendJSDataStream=(e,t,n)=>Vo.sendJsDataStream(e,t,n),!await Vo.start())return Go.log(yt.Error,"Failed to start the circuit."),void t();const r=()=>{Vo.sendDisconnectBeacon()};vt.disconnect=r,window.addEventListener("unload",r,{capture:!1,once:!0}),Go.log(yt.Information,"Blazor server-side application started."),o.invokeAfterStartedCallbacks(vt),t()}async function or(){if(!Yo)throw new Error("Cannot start the circuit until Blazor Server has started.");return!(!Vo||Vo.isDisposedOrDisposing())||(Qo?await Qo:(await Yo,(!Vo||!Vo.didRenderingFail())&&(Vo&&Vo.isDisposedOrDisposing()&&(Ko=It(document)||"",Vo=new Oo(Vo.getRootComponentManager(),Ko,Xo,Go)),Qo=Vo.start(),async function(e){await e,Qo===e&&(Qo=void 0)}(Qo),Qo)))}function rr(e){if(Vo&&!Vo.isDisposedOrDisposing())return Vo.updateRootComponents(e);!async function(e){await Yo,await or()&&Vo.updateRootComponents(e)}(e)}function ir(e){return Zo=e,Zo}var sr,ar;const cr=navigator,lr=cr.userAgentData&&cr.userAgentData.brands,hr=lr&&lr.length>0?lr.some((e=>"Google Chrome"===e.brand||"Microsoft Edge"===e.brand||"Chromium"===e.brand)):window.chrome,dr=null!==(ar=null===(sr=cr.userAgentData)||void 0===sr?void 0:sr.platform)&&void 0!==ar?ar:navigator.platform;function ur(e){return 0!==e.debugLevel&&(hr||navigator.userAgent.includes("Firefox"))}let pr,fr,gr,mr,vr,yr,wr;const br=Math.pow(2,32),_r=Math.pow(2,21)-1;let Sr=null;function Cr(e){return fr.getI32(e)}const Er={load:function(e,t){return async function(e,t){const{dotnet:n}=await async function(e){if("undefined"==typeof WebAssembly||!WebAssembly.validate)throw new Error("This browser does not support WebAssembly.");let t="_framework/dotnet.js";if(e.loadBootResource){const n="dotnetjs",o=e.loadBootResource(n,"dotnet.js",t,"","js-module-dotnet");if("string"==typeof o)t=o;else if(o)throw new Error(`For a ${n} resource, custom loaders must supply a URI string.`)}const n=new URL(t,document.baseURI).toString();return await import(n)}(e),o=function(e,t){const n={maxParallelDownloads:1e6,enableDownloadRetry:!1,applicationEnvironment:e.environment},o={...window.Module||{},onConfigLoaded:async n=>{n.environmentVariables||(n.environmentVariables={}),"sharded"===n.globalizationMode&&(n.environmentVariables.__BLAZOR_SHARDED_ICU="1"),vt._internal.getApplicationEnvironment=()=>n.applicationEnvironment,null==t||t(n),wr=await async function(e,t){var n,o,r;if(e.initializers)return await Promise.all(e.initializers.beforeStart.map((t=>t(e)))),new qo(!1,void 0,e.initializers.afterStarted,Bn.WebAssembly);{const i=[e,null!==(o=null===(n=t.resources)||void 0===n?void 0:n.extensions)&&void 0!==o?o:{}],s=new qo(!0,void 0,void 0,Bn.WebAssembly),a=Object.keys((null===(r=null==t?void 0:t.resources)||void 0===r?void 0:r.libraryInitializers)||{});return await s.importInitializersAsync(a,i),s}}(e,n)},onDownloadResourceProgress:Ir,config:n,disableDotnet6Compatibility:!1,out:Tr,err:Rr};return o}(e,t);e.applicationCulture&&n.withApplicationCulture(e.applicationCulture),e.environment&&n.withApplicationEnvironment(e.environment),e.loadBootResource&&n.withResourceLoader(e.loadBootResource),n.withModuleConfig(o),e.configureRuntime&&e.configureRuntime(n),yr=await n.create()}(e,t)},start:function(){return async function(){if(!yr)throw new Error("The runtime must be loaded it gets configured.");const{MONO:t,BINDING:n,Module:o,setModuleImports:r,INTERNAL:i,getConfig:s,invokeLibraryInitializers:a}=yr;gr=o,pr=n,fr=t,vr=i,function(e){const t=dr.match(/^Mac/i)?"Cmd":"Alt";ur(e)&&console.info(`Debugging hotkey: Shift+${t}+D (when application has focus)`),document.addEventListener("keydown",(t=>{t.shiftKey&&(t.metaKey||t.altKey)&&"KeyD"===t.code&&(ur(e)?navigator.userAgent.includes("Firefox")?async function(){const e=await fetch(`_framework/debug?url=${encodeURIComponent(location.href)}&isFirefox=true`);200!==e.status&&console.warn(await e.text())}():hr?function(){const e=document.createElement("a");e.href=`_framework/debug?url=${encodeURIComponent(location.href)}`,e.target="_blank",e.rel="noopener noreferrer",e.click()}():console.error("Currently, only Microsoft Edge (80+), Google Chrome, or Chromium, are supported for debugging."):console.error("Cannot start debugging, because the application was not compiled with debugging enabled."))}))}(s()),vt.runtime=yr,vt._internal.dotNetCriticalError=Rr,r("blazor-internal",{Blazor:{_internal:vt._internal}});const c=await yr.getAssemblyExports("Microsoft.AspNetCore.Components.WebAssembly");return Object.assign(vt._internal,{dotNetExports:{...c.Microsoft.AspNetCore.Components.WebAssembly.Services.DefaultWebAssemblyJSRuntime}}),mr=e.attachDispatcher({beginInvokeDotNetFromJS:(e,t,n,o,r)=>{if(Ar(),!o&&!t)throw new Error("Either assemblyName or dotNetObjectId must have a non null value.");const i=o?o.toString():t;vt._internal.dotNetExports.BeginInvokeDotNet(e?e.toString():null,i,n,r)},endInvokeJSFromDotNet:(e,t,n)=>{vt._internal.dotNetExports.EndInvokeJS(n)},sendByteArray:(e,t)=>{vt._internal.dotNetExports.ReceiveByteArrayFromJS(e,t)},invokeDotNetFromJS:(e,t,n,o)=>(Ar(),vt._internal.dotNetExports.InvokeDotNet(e||null,t,null!=n?n:0,o))}),{invokeLibraryInitializers:a}}()},callEntryPoint:async function(){try{await yr.runMain(yr.getConfig().mainAssemblyName,[])}catch(e){console.error(e),Bo()}},toUint8Array:function(e){const t=Dr(e),n=Cr(t),o=new Uint8Array(n);return o.set(gr.HEAPU8.subarray(t+4,t+4+n)),o},getArrayLength:function(e){return Cr(Dr(e))},getArrayEntryPtr:function(e,t,n){return Dr(e)+4+t*n},getObjectFieldsBaseAddress:function(e){return e+8},readInt16Field:function(e,t){return n=e+(t||0),fr.getI16(n);var n},readInt32Field:function(e,t){return Cr(e+(t||0))},readUint64Field:function(e,t){return function(e){const t=e>>2,n=gr.HEAPU32[t+1];if(n>_r)throw new Error(`Cannot read uint64 with high order part ${n}, because the result would exceed Number.MAX_SAFE_INTEGER.`);return n*br+gr.HEAPU32[t]}(e+(t||0))},readFloatField:function(e,t){return n=e+(t||0),fr.getF32(n);var n},readObjectField:function(e,t){return Cr(e+(t||0))},readStringField:function(e,t,n){const o=Cr(e+(t||0));if(0===o)return null;if(n){const e=pr.unbox_mono_obj(o);return"boolean"==typeof e?e?"":null:e}return pr.conv_string(o)},readStructField:function(e,t){return e+(t||0)},beginHeapLock:function(){return Ar(),Sr=xr.create(),Sr},invokeWhenHeapUnlocked:function(e){Sr?Sr.enqueuePostReleaseAction(e):e()}};function Ir(e,t){const n=e/t*100;document.documentElement.style.setProperty("--blazor-load-percentage",`${n}%`),document.documentElement.style.setProperty("--blazor-load-percentage-text",`"${Math.floor(n)}%"`)}const kr=["DEBUGGING ENABLED"],Tr=e=>kr.indexOf(e)<0&&console.log(e),Rr=e=>{console.error(e||"(null)"),Bo()};function Dr(e){return e+12}function Ar(){if(Sr)throw new Error("Assertion failed - heap is currently locked")}class xr{enqueuePostReleaseAction(e){this.postReleaseActions||(this.postReleaseActions=[]),this.postReleaseActions.push(e)}release(){var e;if(Sr!==this)throw new Error("Trying to release a lock which isn't current");for(vr.mono_wasm_gc_unlock(),Sr=null;null===(e=this.postReleaseActions)||void 0===e?void 0:e.length;)this.postReleaseActions.shift()(),Ar()}static create(){return vr.mono_wasm_gc_lock(),new xr}}class Nr{constructor(e){this.batchAddress=e,this.arrayRangeReader=Pr,this.arrayBuilderSegmentReader=Mr,this.diffReader=Ur,this.editReader=Lr,this.frameReader=Br}updatedComponents(){return Zo.readStructField(this.batchAddress,0)}referenceFrames(){return Zo.readStructField(this.batchAddress,Pr.structLength)}disposedComponentIds(){return Zo.readStructField(this.batchAddress,2*Pr.structLength)}disposedEventHandlerIds(){return Zo.readStructField(this.batchAddress,3*Pr.structLength)}updatedComponentsEntry(e,t){return Or(e,t,Ur.structLength)}referenceFramesEntry(e,t){return Or(e,t,Br.structLength)}disposedComponentIdsEntry(e,t){const n=Or(e,t,4);return Zo.readInt32Field(n)}disposedEventHandlerIdsEntry(e,t){const n=Or(e,t,8);return Zo.readUint64Field(n)}}const Pr={structLength:8,values:e=>Zo.readObjectField(e,0),count:e=>Zo.readInt32Field(e,4)},Mr={structLength:12,values:e=>{const t=Zo.readObjectField(e,0),n=Zo.getObjectFieldsBaseAddress(t);return Zo.readObjectField(n,0)},offset:e=>Zo.readInt32Field(e,4),count:e=>Zo.readInt32Field(e,8)},Ur={structLength:4+Mr.structLength,componentId:e=>Zo.readInt32Field(e,0),edits:e=>Zo.readStructField(e,4),editsEntry:(e,t)=>Or(e,t,Lr.structLength)},Lr={structLength:20,editType:e=>Zo.readInt32Field(e,0),siblingIndex:e=>Zo.readInt32Field(e,4),newTreeIndex:e=>Zo.readInt32Field(e,8),moveToSiblingIndex:e=>Zo.readInt32Field(e,8),removedAttributeName:e=>Zo.readStringField(e,16)},Br={structLength:36,frameType:e=>Zo.readInt16Field(e,4),subtreeLength:e=>Zo.readInt32Field(e,8),elementReferenceCaptureId:e=>Zo.readStringField(e,16),componentId:e=>Zo.readInt32Field(e,12),elementName:e=>Zo.readStringField(e,16),textContent:e=>Zo.readStringField(e,16),markupContent:e=>Zo.readStringField(e,16),attributeName:e=>Zo.readStringField(e,16),attributeValue:e=>Zo.readStringField(e,24,!0),attributeEventHandlerId:e=>Zo.readUint64Field(e,8)};function Or(e,t,n){return Zo.getArrayEntryPtr(e,t,n)}class Fr{constructor(e){this.componentManager=e}resolveRegisteredElement(e){const t=Number.parseInt(e);if(!Number.isNaN(t))return H(this.componentManager.resolveRootComponent(t))}getParameterValues(e){return this.componentManager.initialComponents[e].parameterValues}getParameterDefinitions(e){return this.componentManager.initialComponents[e].parameterDefinitions}getTypeName(e){return this.componentManager.initialComponents[e].typeName}getAssembly(e){return this.componentManager.initialComponents[e].assembly}getCount(){return this.componentManager.initialComponents.length}}let $r,Hr,Wr,jr,zr,qr=!1,Jr=!1,Kr=!0,Vr=!1;const Xr=new Promise((e=>{zr=e}));let Gr;const Yr=new Promise((e=>{Gr=e}));let Qr;function Zr(e){if(void 0!==jr)throw new Error("Blazor WebAssembly has already started.");return jr=new Promise(ei.bind(null,e)),jr}async function ei(e,t,n){(function(){if(window.parent!==window&&!window.opener&&window.frameElement){const e=window.sessionStorage&&window.sessionStorage["Microsoft.AspNetCore.Components.WebAssembly.Authentication.CachedAuthSettings"],t=e&&JSON.parse(e);return t&&t.redirect_uri&&location.href.startsWith(t.redirect_uri)}return!1})()&&await new Promise((()=>{}));const o=ti();!function(e){const t=A;A=(e,n,o)=>{((e,t,n)=>{const o=Ae(e);(null==o?void 0:o.eventDelegator.getHandler(t))&&Er.invokeWhenHeapUnlocked(n)})(e,n,(()=>t(e,n,o)))}}(),vt._internal.applyHotReload=(e,t,n,o)=>{mr.invokeDotNetStaticMethod("Microsoft.AspNetCore.Components.WebAssembly","ApplyHotReloadDelta",e,t,n,o)},vt._internal.getApplyUpdateCapabilities=()=>mr.invokeDotNetStaticMethod("Microsoft.AspNetCore.Components.WebAssembly","GetApplyUpdateCapabilities"),vt._internal.invokeJSFromDotNet=oi,vt._internal.invokeJSJson=ri,vt._internal.endInvokeDotNetFromJS=ii,vt._internal.receiveWebAssemblyDotNetDataStream=si,vt._internal.receiveByteArray=ai;const r=ir(Er);vt.platform=r,vt._internal.renderBatch=(e,t)=>{const n=Er.beginHeapLock();try{xe(e,new Nr(t))}finally{n.release()}},vt._internal.navigationManager.listenForNavigationEvents(Bn.WebAssembly,(async(e,t,n)=>{await mr.invokeDotNetStaticMethodAsync("Microsoft.AspNetCore.Components.WebAssembly","NotifyLocationChanged",e,t,n)}),(async(e,t,n,o)=>{const r=await mr.invokeDotNetStaticMethodAsync("Microsoft.AspNetCore.Components.WebAssembly","NotifyLocationChangingAsync",t,n,o);vt._internal.navigationManager.endLocationChanging(e,r)}));const i=new Fr(e);let s;vt._internal.registeredComponents={getRegisteredComponentsCount:()=>i.getCount(),getAssembly:e=>i.getAssembly(e),getTypeName:e=>i.getTypeName(e),getParameterDefinitions:e=>i.getParameterDefinitions(e)||"",getParameterValues:e=>i.getParameterValues(e)||""},vt._internal.getPersistedState=()=>kt(document,Ct)||"",vt._internal.getInitialComponentsUpdate=()=>Yr,vt._internal.updateRootComponents=e=>{var t;return null===(t=vt._internal.dotNetExports)||void 0===t?void 0:t.UpdateRootComponentsCore(e)},vt._internal.endUpdateRootComponents=t=>{var n;return null===(n=e.onAfterUpdateRootComponents)||void 0===n?void 0:n.call(e,t)},vt._internal.attachRootComponentToElement=(e,t,n)=>{const o=i.resolveRegisteredElement(e);o?De(n,o,t,!1):function(e,t,n){const o="::before";let r=!1;if(e.endsWith("::after"))e=e.slice(0,-7),r=!0;else if(e.endsWith(o))throw new Error(`The '${o}' selector is not supported.`);const i=w(e)||document.querySelector(e);if(!i)throw new Error(`Could not find any element matching selector '${e}'.`);De(n,W(i,!0),t,r)}(e,t,n)};try{await o,s=await r.start()}catch(e){throw new Error(`Failed to start platform. Reason: ${e}`)}r.callEntryPoint(),wr.invokeAfterStartedCallbacks(vt),Jr=!0,t()}function ti(){return null!=Wr||(Wr=(async()=>{await Hr;const e=null!=$r?$r:{},t=null==$r?void 0:$r.configureRuntime;e.configureRuntime=e=>{null==t||t(e),Vr&&e.withEnvironmentVariable("__BLAZOR_WEBASSEMBLY_WAIT_FOR_ROOT_COMPONENTS","true")},await Er.load(e,zr),qr=!0})()),Wr}function ni(){return qr}function oi(t,n,o,r){const i=Er.readStringField(t,0),s=Er.readInt32Field(t,4),a=Er.readStringField(t,8),c=Er.readUint64Field(t,20);if(null!==a){const e=Er.readUint64Field(t,12);if(0!==e)return mr.beginInvokeJSFromDotNet(e,i,a,s,c),0;{const e=mr.invokeJSFromDotNet(i,a,s,c);return null===e?0:pr.js_string_to_mono_string(e)}}{const t=e.findJSFunction(i,c).call(null,n,o,r);switch(s){case e.JSCallResultType.Default:return t;case e.JSCallResultType.JSObjectReference:return e.createJSObjectReference(t).__jsObjectId;case e.JSCallResultType.JSStreamReference:{const n=e.createJSStreamReference(t),o=JSON.stringify(n);return pr.js_string_to_mono_string(o)}case e.JSCallResultType.JSVoidResult:return null;default:throw new Error(`Invalid JS call result type '${s}'.`)}}}function ri(e,t,n,o,r){return 0!==r?(mr.beginInvokeJSFromDotNet(r,e,o,n,t),null):mr.invokeJSFromDotNet(e,o,n,t)}function ii(e,t,n){mr.endInvokeDotNetFromJS(e,t,n)}function si(e,t,n,o){!function(e,t,n,o,r){let i=mt.get(t);if(!i){const n=new ReadableStream({start(e){mt.set(t,e),i=e}});e.supplyDotNetStream(t,n)}r?(i.error(r),mt.delete(t)):0===o?(i.close(),mt.delete(t)):i.enqueue(n.length===o?n:n.subarray(0,o))}(mr,e,t,n,o)}function ai(e,t){mr.receiveByteArray(e,t)}function ci(e,t){t.namespaceURI?e.setAttributeNS(t.namespaceURI,t.name,t.value):e.setAttribute(t.name,t.value)}Hr=new Promise((e=>{Qr=e}));const li="data-permanent";var hi,di;!function(e){e[e.None=0]="None",e[e.Some=1]="Some",e[e.Infinite=2]="Infinite"}(hi||(hi={})),function(e){e.Keep="keep",e.Update="update",e.Insert="insert",e.Delete="delete"}(di||(di={}));class ui{static create(e,t,n){return 0===t&&n===e.length?e:new ui(e,t,n)}constructor(e,t,n){this.source=e,this.startIndex=t,this.length=n}item(e){return this.source.item(e+this.startIndex)}forEach(e,t){for(let t=0;t=n&&s>=o&&r(e.item(i),t.item(s))===hi.None;)i--,s--,a++;return a}(e,t,o,o,n),i=function(e){var t;const n=[];let o=e.length-1,r=(null===(t=e[o])||void 0===t?void 0:t.length)-1;for(;o>0||r>0;){const t=0===o?di.Insert:0===r?di.Delete:e[o][r];switch(n.unshift(t),t){case di.Keep:case di.Update:o--,r--;break;case di.Insert:r--;break;case di.Delete:o--}}return n}(function(e,t,n){const o=[],r=[],i=e.length,s=t.length;if(0===i&&0===s)return[];for(let e=0;e<=i;e++)(o[e]=Array(s+1))[0]=e,r[e]=Array(s+1);const a=o[0];for(let e=1;e<=s;e++)a[e]=e;for(let a=1;a<=i;a++)for(let i=1;i<=s;i++){const s=n(e.item(a-1),t.item(i-1)),c=o[a-1][i]+1,l=o[a][i-1]+1;let h;switch(s){case hi.None:h=o[a-1][i-1];break;case hi.Some:h=o[a-1][i-1]+1;break;case hi.Infinite:h=Number.MAX_VALUE}h{history.pushState(null,"",e),Mi(e,!0)}))}function Ni(e){Oe()||Mi(location.href,!1)}function Pi(e){if(Oe()||e.defaultPrevented)return;const t=e.target;if(t instanceof HTMLFormElement){if(!function(e){const t=e.getAttribute("data-enhance");return"string"==typeof t&&""===t||"true"===(null==t?void 0:t.toLowerCase())}(t))return;e.preventDefault();const n=new URL(t.action),o={method:t.method},r=new FormData(t),i=e.submitter;i&&i.name&&r.append(i.name,i.value),"get"===o.method?(n.search=new URLSearchParams(r).toString(),history.pushState(null,"",n.toString())):o.body=r,Mi(n.toString(),!1,o)}}async function Mi(e,t,n){gi=!0,null==pi||pi.abort(),function(e,t){null==ke||ke(e,t)}(e,t),pi=new AbortController;const o=pi.signal,r=fetch(e,Object.assign({signal:o,mode:"no-cors",headers:{accept:"text/html; blazor-enhanced-nav=on"}},n));let i=null;if(await async function(e,t,n,o){let r;try{if(r=await e,!r.body)return void n(r,"");const t=r.headers.get("ssr-framing");if(!t){const e=await r.text();return void n(r,e)}let o=!0;await r.body.pipeThrough(new TextDecoderStream).pipeThrough(function(e){let t="";return new TransformStream({transform(n,o){if(t+=n,t.indexOf(e,t.length-n.length-e.length)>=0){const n=t.split(e);n.slice(0,-1).forEach((e=>o.enqueue(e))),t=n[n.length-1]}},flush(e){e.enqueue(t)}})}(`\x3c!--${t}--\x3e`)).pipeTo(new WritableStream({write(e){o?(o=!1,n(r,e)):(e=>{const t=document.createRange().createContextualFragment(e);for(;t.firstChild;)document.body.appendChild(t.firstChild)})(e)}}))}catch(e){if("AbortError"===e.name&&t.aborted)return;throw e}}(r,o,((t,o)=>{const r=!(null==n?void 0:n.method)||"get"===n.method,s=t.status>=200&&t.status<300;if("opaque"===t.type){if(r)return void Li(e);throw new Error("Enhanced navigation does not support making a non-GET request to an endpoint that redirects to an external origin. Avoid enabling enhanced navigation for form posts that may perform external redirections.")}if(s&&"allow"!==t.headers.get("blazor-enhanced-nav")){if(r)return void Li(e);throw new Error("Enhanced navigation does not support making a non-GET request to a non-Blazor endpoint. Avoid enabling enhanced navigation for forms that post to a non-Blazor endpoint.")}t.redirected&&(r?history.replaceState(null,"",t.url):history.pushState(null,"",t.url),e=t.url);const a=t.headers.get("blazor-enhanced-nav-redirect-location");if(a)return void location.replace(a);t.redirected||r||!s||(function(e){const t=new URL(e.url),n=new URL(Ri);return t.protocol===n.protocol&&t.host===n.host&&t.port===n.port&&t.pathname===n.pathname}(t)?location.href!==Ri&&history.pushState(null,"",Ri):i=`Cannot perform enhanced form submission that changes the URL (except via a redirection), because then back/forward would not work. Either remove this form's 'action' attribute, or change its method to 'get', or do not mark it as enhanced.\nOld URL: ${location.href}\nNew URL: ${t.url}`),Ri=t.url;const c=t.headers.get("content-type");if((null==c?void 0:c.startsWith("text/html"))&&o){const e=(new DOMParser).parseFromString(o,"text/html");vi(document,e),fi.documentUpdated()}else(null==c?void 0:c.startsWith("text/"))&&o?Ui(o):s||o?r?Li(e):Ui(`Error: ${n.method} request to ${e} returned non-HTML content of type ${c||"unspecified"}.`):Ui(`Error: ${t.status} ${t.statusText}`)})),!o.aborted){const t=e.indexOf("#");if(t>=0){const n=e.substring(t+1),o=document.getElementById(n);null==o||o.scrollIntoView()}if(gi=!1,fi.enhancedNavigationCompleted(),i)throw new Error(i)}}function Ui(e){document.documentElement.textContent=e;const t=document.documentElement.style;t.fontFamily="consolas, monospace",t.whiteSpace="pre-wrap",t.padding="1rem"}function Li(e){history.replaceState(null,"",e+"?"),location.replace(e)}let Bi,Oi=!0;class Fi extends HTMLElement{connectedCallback(){var e;const t=this.parentNode;null===(e=t.parentNode)||void 0===e||e.removeChild(t),t.childNodes.forEach((e=>{if(e instanceof HTMLTemplateElement){const t=e.getAttribute("blazor-component-id");if(t)"true"!==e.getAttribute("enhanced-nav")&&pi||function(e,t){const n=function(e){const t=`bl:${e}`,n=document.createNodeIterator(document,NodeFilter.SHOW_COMMENT);let o=null;for(;(o=n.nextNode())&&o.textContent!==t;);if(!o)return null;const r=`/bl:${e}`;let i=null;for(;(i=n.nextNode())&&i.textContent!==r;);return i?{startMarker:o,endMarker:i}:null}(e);if(n){const{startMarker:e,endMarker:o}=n;if(Oi)vi({startExclusive:e,endExclusive:o},t);else{const n=o.parentNode,r=new Range;for(r.setStart(e,e.textContent.length),r.setEnd(o,0),r.deleteContents();t.childNodes[0];)n.insertBefore(t.childNodes[0],o)}Bi.documentUpdated()}}(t,e.content);else switch(e.getAttribute("type")){case"redirection":const t=Le(e.content.textContent),n="form-post"===e.getAttribute("from");"true"===e.getAttribute("enhanced")&&Pe(t)?(n?history.pushState(null,"",t):history.replaceState(null,"",t),Mi(t,!1)):n?location.assign(t):location.replace(t);break;case"error":Ui(e.content.textContent||"Error")}}}))}}class $i{constructor(e){var t;this._circuitInactivityTimeoutMs=e,this._rootComponentsBySsrComponentId=new Map,this._seenDescriptors=new Set,this._pendingOperationBatches={},this._nextOperationBatchId=1,this._nextSsrComponentId=1,this._didWebAssemblyFailToLoadQuickly=!1,this._isComponentRefreshPending=!1,this.initialComponents=[],t=()=>{this.rootComponentsMayRequireRefresh()},E.push(t)}onAfterRenderBatch(e){e===Bn.Server&&this.circuitMayHaveNoRootComponents()}onDocumentUpdated(){this.rootComponentsMayRequireRefresh()}onEnhancedNavigationCompleted(){this.rootComponentsMayRequireRefresh()}registerComponent(e){if(this._seenDescriptors.has(e))return;"auto"!==e.type&&"webassembly"!==e.type||this.startLoadingWebAssemblyIfNotStarted();const t=this._nextSsrComponentId++;this._seenDescriptors.add(e),this._rootComponentsBySsrComponentId.set(t,{descriptor:e,ssrComponentId:t})}unregisterComponent(e){this._seenDescriptors.delete(e.descriptor),this._rootComponentsBySsrComponentId.delete(e.ssrComponentId),this.circuitMayHaveNoRootComponents()}async startLoadingWebAssemblyIfNotStarted(){if(void 0!==Wr)return;Vr=!0;const e=ti();setTimeout((()=>{ni()||this.onWebAssemblyFailedToLoadQuickly()}),vt._internal.loadWebAssemblyQuicklyTimeout);const t=await Xr;(function(e){if(!e.cacheBootResources)return!1;const t=Hi(e);if(!t)return!1;const n=window.localStorage.getItem(t.key);return t.value===n})(t)||this.onWebAssemblyFailedToLoadQuickly(),await e,function(e){const t=Hi(e);t&&window.localStorage.setItem(t.key,t.value)}(t),this.rootComponentsMayRequireRefresh()}onWebAssemblyFailedToLoadQuickly(){this._didWebAssemblyFailToLoadQuickly||(this._didWebAssemblyFailToLoadQuickly=!0,this.rootComponentsMayRequireRefresh())}startCircutIfNotStarted(){return void 0===Yo?tr(this):!Vo||Vo.isDisposedOrDisposing()?or():void 0}async startWebAssemblyIfNotStarted(){this.startLoadingWebAssemblyIfNotStarted(),void 0===jr&&await Zr(this)}rootComponentsMayRequireRefresh(){this._isComponentRefreshPending||(this._isComponentRefreshPending=!0,setTimeout((()=>{this._isComponentRefreshPending=!1,this.refreshRootComponents(this._rootComponentsBySsrComponentId.values())}),0))}circuitMayHaveNoRootComponents(){if(this.rendererHasExistingOrPendingComponents(Bn.Server,"server","auto"))return clearTimeout(this._circuitInactivityTimeoutId),void(this._circuitInactivityTimeoutId=void 0);void 0===this._circuitInactivityTimeoutId&&(this._circuitInactivityTimeoutId=setTimeout((()=>{this.rendererHasExistingOrPendingComponents(Bn.Server,"server","auto")||(async function(){await(null==Vo?void 0:Vo.dispose())}(),this._circuitInactivityTimeoutId=void 0)}),this._circuitInactivityTimeoutMs))}rendererHasComponents(e){const t=Ae(e);return void 0!==t&&t.getRootComponentCount()>0}rendererHasExistingOrPendingComponents(e,...t){if(this.rendererHasComponents(e))return!0;for(const{descriptor:{type:n},assignedRendererId:o}of this._rootComponentsBySsrComponentId.values()){if(o===e)return!0;if(void 0===o&&-1!==t.indexOf(n))return!0}return!1}refreshRootComponents(e){const t=new Map;for(const n of e){const e=this.determinePendingOperation(n);if(!e)continue;const o=n.assignedRendererId;if(!o)throw new Error("Descriptors must be assigned a renderer ID before getting used as root components");let r=t.get(o);r||(r=[],t.set(o,r)),r.push(e)}for(const[e,n]of t){const t={batchId:this._nextOperationBatchId++,operations:n};this._pendingOperationBatches[t.batchId]=t;const o=JSON.stringify(t);e===Bn.Server?rr(o):this.updateWebAssemblyRootComponents(o)}}updateWebAssemblyRootComponents(e){Kr?(Gr(e),Kr=!1):function(e){if(!jr)throw new Error("Blazor WebAssembly has not started.");if(!vt._internal.updateRootComponents)throw new Error("Blazor WebAssembly has not initialized.");Jr?vt._internal.updateRootComponents(e):async function(e){if(await jr,!vt._internal.updateRootComponents)throw new Error("Blazor WebAssembly has not initialized.");vt._internal.updateRootComponents(e)}(e)}(e)}resolveRendererIdForDescriptor(e){switch("auto"===e.type?this.getAutoRenderMode():e.type){case"server":return this.startCircutIfNotStarted(),Bn.Server;case"webassembly":return this.startWebAssemblyIfNotStarted(),Bn.WebAssembly;case null:return null}}getAutoRenderMode(){return this.rendererHasExistingOrPendingComponents(Bn.WebAssembly,"webassembly")?"webassembly":this.rendererHasExistingOrPendingComponents(Bn.Server,"server")?"server":ni()?"webassembly":this._didWebAssemblyFailToLoadQuickly?"server":null}determinePendingOperation(e){if(t=e.descriptor,document.contains(t.start)){if(void 0===e.assignedRendererId){if(gi||"loading"===document.readyState)return null;const t=this.resolveRendererIdForDescriptor(e.descriptor);return null===t?null:T(t)?(be(e.descriptor.start,!0),e.assignedRendererId=t,e.uniqueIdAtLastUpdate=e.descriptor.uniqueId,{type:"add",ssrComponentId:e.ssrComponentId,marker:Ut(e.descriptor)}):null}return T(e.assignedRendererId)?e.uniqueIdAtLastUpdate===e.descriptor.uniqueId?null:(e.uniqueIdAtLastUpdate=e.descriptor.uniqueId,{type:"update",ssrComponentId:e.ssrComponentId,marker:Ut(e.descriptor)}):null}return e.hasPendingRemoveOperation?null:void 0===e.assignedRendererId?(this.unregisterComponent(e),null):T(e.assignedRendererId)?(be(e.descriptor.start,!1),e.hasPendingRemoveOperation=!0,{type:"remove",ssrComponentId:e.ssrComponentId}):null;var t}resolveRootComponent(e){const t=this._rootComponentsBySsrComponentId.get(e);if(!t)throw new Error(`Could not resolve a root component with SSR component ID '${e}'.`);return t.descriptor}onAfterUpdateRootComponents(e){const t=this._pendingOperationBatches[e];delete this._pendingOperationBatches[e];for(const e of t.operations)switch(e.type){case"remove":{const t=this._rootComponentsBySsrComponentId.get(e.ssrComponentId);t&&this.unregisterComponent(t);break}}}}function Hi(e){var t;const n=null===(t=e.resources)||void 0===t?void 0:t.hash,o=e.mainAssemblyName;return n&&o?{key:`blazor-resource-hash:${o}`,value:n}:null}class Wi{constructor(){this._eventListeners=new Map}static create(e){const t=new Wi;return e.addEventListener=t.addEventListener.bind(t),e.removeEventListener=t.removeEventListener.bind(t),t}addEventListener(e,t){let n=this._eventListeners.get(e);n||(n=new Set,this._eventListeners.set(e,n)),n.add(t)}removeEventListener(e,t){var n;null===(n=this._eventListeners.get(e))||void 0===n||n.delete(t)}dispatchEvent(e,t){const n=this._eventListeners.get(e);if(!n)return;const o={...t,type:e};for(const e of n)e(o)}}let ji,zi=!1;function qi(e){var t,n,o,r;if(zi)throw new Error("Blazor has already started.");zi=!0,null!==(t=(e=e||{}).logLevel)&&void 0!==t||(e.logLevel=yt.Error),vt._internal.loadWebAssemblyQuicklyTimeout=3e3,vt._internal.hotReloadApplied=()=>{Me()&&Ue(location.href,!0)},ji=new $i(null!==(o=null===(n=null==e?void 0:e.ssr)||void 0===n?void 0:n.circuitInactivityTimeoutMs)&&void 0!==o?o:2e3);const i=Wi.create(vt),s={documentUpdated:()=>{ji.onDocumentUpdated(),i.dispatchEvent("enhancedload",{})},enhancedNavigationCompleted(){ji.onEnhancedNavigationCompleted()}};return mi=ji,function(e,t){Bi=t,(null==e?void 0:e.disableDomPreservation)&&(Oi=!1),customElements.define("blazor-ssr-end",Fi)}(null==e?void 0:e.ssr,s),(null===(r=null==e?void 0:e.ssr)||void 0===r?void 0:r.disableDomPreservation)||Di(s),"loading"===document.readyState?document.addEventListener("DOMContentLoaded",Ji.bind(null,e)):Ji(e),Promise.resolve()}function Ji(e){const t=Fo((null==e?void 0:e.circuit)||{});e.circuit=t;const n=async function(e,t){var n;const o=kt(document,Et,"initializers");if(!o)return new qo(!1,t);const r=null!==(n=JSON.parse(atob(o)))&&void 0!==n?n:[],i=new qo(!1,t);return await i.importInitializersAsync(r,[e]),i}(e,new bt(t.logLevel));er(Ki(n,t)),function(e){if($r)throw new Error("WebAssembly options have already been configured.");!async function(e){const t=await e;$r=t,Qr()}(e)}(Ki(n,(null==e?void 0:e.webAssembly)||{})),function(e){const t=Ci(document);for(const e of t)null==mi||mi.registerComponent(e)}(),ji.onDocumentUpdated(),async function(e){const t=await e;await t.invokeAfterStartedCallbacks(vt)}(n)}async function Ki(e,t){return await e,t}vt.start=qi,window.DotNet=e,document&&document.currentScript&&"false"!==document.currentScript.getAttribute("autostart")&&qi()})()})(); \ No newline at end of file diff --git a/src/Components/Web.JS/dist/Release/blazor.webview.js b/src/Components/Web.JS/dist/Release/blazor.webview.js index ca007289927d..20b461c1c988 100644 --- a/src/Components/Web.JS/dist/Release/blazor.webview.js +++ b/src/Components/Web.JS/dist/Release/blazor.webview.js @@ -1 +1 @@ -(()=>{"use strict";var e,t,n,r={d:(e,t)=>{for(var n in t)r.o(t,n)&&!r.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t)};r.d({},{e:()=>Ot}),function(e){const t=[],n="__jsObjectId",r="__dotNetObject",o="__byte[]",a="__dotNetStream",i="__jsStreamReferenceLength";let s,c;class l{constructor(e){this._jsObject=e,this._cachedFunctions=new Map}findFunction(e){const t=this._cachedFunctions.get(e);if(t)return t;let n,r=this._jsObject;if(e.split(".").forEach((t=>{if(!(t in r))throw new Error(`Could not find '${e}' ('${t}' was undefined).`);n=r,r=r[t]})),r instanceof Function)return r=r.bind(n),this._cachedFunctions.set(e,r),r;throw new Error(`The value '${e}' is not a function.`)}getWrappedObject(){return this._jsObject}}const u={0:new l(window)};u[0]._cachedFunctions.set("import",(e=>("string"==typeof e&&e.startsWith("./")&&(e=new URL(e.substr(2),document.baseURI).toString()),import(e))));let d,h=1;function f(e){t.push(e)}function m(e){if(e&&"object"==typeof e){u[h]=new l(e);const t={[n]:h};return h++,t}throw new Error(`Cannot create a JSObjectReference from the value '${e}'.`)}function p(e){let t=-1;if(e instanceof ArrayBuffer&&(e=new Uint8Array(e)),e instanceof Blob)t=e.size;else{if(!(e.buffer instanceof ArrayBuffer))throw new Error("Supplied value is not a typed array or blob.");if(void 0===e.byteLength)throw new Error(`Cannot create a JSStreamReference from the value '${e}' as it doesn't have a byteLength.`);t=e.byteLength}const r={[i]:t};try{const t=m(e);r[n]=t[n]}catch(t){throw new Error(`Cannot create a JSStreamReference from the value '${e}'.`)}return r}function b(e,n){c=e;const r=n?JSON.parse(n,((e,n)=>t.reduce(((t,n)=>n(e,t)),n))):null;return c=void 0,r}function v(){if(void 0===s)throw new Error("No call dispatcher has been set.");if(null===s)throw new Error("There are multiple .NET runtimes present, so a default dispatcher could not be resolved. Use DotNetObject to invoke .NET instance methods.");return s}e.attachDispatcher=function(e){const t=new g(e);return void 0===s?s=t:s&&(s=null),t},e.attachReviver=f,e.invokeMethod=function(e,t,...n){return v().invokeDotNetStaticMethod(e,t,...n)},e.invokeMethodAsync=function(e,t,...n){return v().invokeDotNetStaticMethodAsync(e,t,...n)},e.createJSObjectReference=m,e.createJSStreamReference=p,e.disposeJSObjectReference=function(e){const t=e&&e[n];"number"==typeof t&&E(t)},function(e){e[e.Default=0]="Default",e[e.JSObjectReference=1]="JSObjectReference",e[e.JSStreamReference=2]="JSStreamReference",e[e.JSVoidResult=3]="JSVoidResult"}(d=e.JSCallResultType||(e.JSCallResultType={}));class g{constructor(e){this._dotNetCallDispatcher=e,this._byteArraysToBeRevived=new Map,this._pendingDotNetToJSStreams=new Map,this._pendingAsyncCalls={},this._nextAsyncCallId=1}getDotNetCallDispatcher(){return this._dotNetCallDispatcher}invokeJSFromDotNet(e,t,n,r){const o=b(this,t),a=D(w(e,r)(...o||[]),n);return null==a?null:N(this,a)}beginInvokeJSFromDotNet(e,t,n,r,o){const a=new Promise((e=>{const r=b(this,n);e(w(t,o)(...r||[]))}));e&&a.then((t=>N(this,[e,!0,D(t,r)]))).then((t=>this._dotNetCallDispatcher.endInvokeJSFromDotNet(e,!0,t)),(t=>this._dotNetCallDispatcher.endInvokeJSFromDotNet(e,!1,JSON.stringify([e,!1,y(t)]))))}endInvokeDotNetFromJS(e,t,n){const r=t?b(this,n):new Error(n);this.completePendingCall(parseInt(e,10),t,r)}invokeDotNetStaticMethod(e,t,...n){return this.invokeDotNetMethod(e,t,null,n)}invokeDotNetStaticMethodAsync(e,t,...n){return this.invokeDotNetMethodAsync(e,t,null,n)}invokeDotNetMethod(e,t,n,r){if(this._dotNetCallDispatcher.invokeDotNetFromJS){const o=N(this,r),a=this._dotNetCallDispatcher.invokeDotNetFromJS(e,t,n,o);return a?b(this,a):null}throw new Error("The current dispatcher does not support synchronous calls from JS to .NET. Use invokeDotNetMethodAsync instead.")}invokeDotNetMethodAsync(e,t,n,r){if(e&&n)throw new Error(`For instance method calls, assemblyName should be null. Received '${e}'.`);const o=this._nextAsyncCallId++,a=new Promise(((e,t)=>{this._pendingAsyncCalls[o]={resolve:e,reject:t}}));try{const a=N(this,r);this._dotNetCallDispatcher.beginInvokeDotNetFromJS(o,e,t,n,a)}catch(e){this.completePendingCall(o,!1,e)}return a}receiveByteArray(e,t){this._byteArraysToBeRevived.set(e,t)}processByteArray(e){const t=this._byteArraysToBeRevived.get(e);return t?(this._byteArraysToBeRevived.delete(e),t):null}supplyDotNetStream(e,t){if(this._pendingDotNetToJSStreams.has(e)){const n=this._pendingDotNetToJSStreams.get(e);this._pendingDotNetToJSStreams.delete(e),n.resolve(t)}else{const n=new C;n.resolve(t),this._pendingDotNetToJSStreams.set(e,n)}}getDotNetStreamPromise(e){let t;if(this._pendingDotNetToJSStreams.has(e))t=this._pendingDotNetToJSStreams.get(e).streamPromise,this._pendingDotNetToJSStreams.delete(e);else{const n=new C;this._pendingDotNetToJSStreams.set(e,n),t=n.streamPromise}return t}completePendingCall(e,t,n){if(!this._pendingAsyncCalls.hasOwnProperty(e))throw new Error(`There is no pending async call with ID ${e}.`);const r=this._pendingAsyncCalls[e];delete this._pendingAsyncCalls[e],t?r.resolve(n):r.reject(n)}}function y(e){return e instanceof Error?`${e.message}\n${e.stack}`:e?e.toString():"null"}function w(e,t){const n=u[t];if(n)return n.findFunction(e);throw new Error(`JS object instance with ID ${t} does not exist (has it been disposed?).`)}function E(e){delete u[e]}e.findJSFunction=w,e.disposeJSObjectReferenceById=E;class S{constructor(e,t){this._id=e,this._callDispatcher=t}invokeMethod(e,...t){return this._callDispatcher.invokeDotNetMethod(null,e,this._id,t)}invokeMethodAsync(e,...t){return this._callDispatcher.invokeDotNetMethodAsync(null,e,this._id,t)}dispose(){this._callDispatcher.invokeDotNetMethodAsync(null,"__Dispose",this._id,null).catch((e=>console.error(e)))}serializeAsArg(){return{[r]:this._id}}}e.DotNetObject=S,f((function(e,t){if(t&&"object"==typeof t){if(t.hasOwnProperty(r))return new S(t[r],c);if(t.hasOwnProperty(n)){const e=t[n],r=u[e];if(r)return r.getWrappedObject();throw new Error(`JS object instance with Id '${e}' does not exist. It may have been disposed.`)}if(t.hasOwnProperty(o)){const e=t[o],n=c.processByteArray(e);if(void 0===n)throw new Error(`Byte array index '${e}' does not exist.`);return n}if(t.hasOwnProperty(a)){const e=t[a],n=c.getDotNetStreamPromise(e);return new I(n)}}return t}));class I{constructor(e){this._streamPromise=e}stream(){return this._streamPromise}async arrayBuffer(){return new Response(await this.stream()).arrayBuffer()}}class C{constructor(){this.streamPromise=new Promise(((e,t)=>{this.resolve=e,this.reject=t}))}}function D(e,t){switch(t){case d.Default:return e;case d.JSObjectReference:return m(e);case d.JSStreamReference:return p(e);case d.JSVoidResult:return null;default:throw new Error(`Invalid JS call result type '${t}'.`)}}let A=0;function N(e,t){A=0,c=e;const n=JSON.stringify(t,k);return c=void 0,n}function k(e,t){if(t instanceof S)return t.serializeAsArg();if(t instanceof Uint8Array){c.getDotNetCallDispatcher().sendByteArray(A,t);const e={[o]:A};return A++,e}return t}}(e||(e={})),function(e){e[e.prependFrame=1]="prependFrame",e[e.removeFrame=2]="removeFrame",e[e.setAttribute=3]="setAttribute",e[e.removeAttribute=4]="removeAttribute",e[e.updateText=5]="updateText",e[e.stepIn=6]="stepIn",e[e.stepOut=7]="stepOut",e[e.updateMarkup=8]="updateMarkup",e[e.permutationListEntry=9]="permutationListEntry",e[e.permutationListEnd=10]="permutationListEnd"}(t||(t={})),function(e){e[e.element=1]="element",e[e.text=2]="text",e[e.attribute=3]="attribute",e[e.component=4]="component",e[e.region=5]="region",e[e.elementReferenceCapture=6]="elementReferenceCapture",e[e.markup=8]="markup",e[e.namedEvent=10]="namedEvent"}(n||(n={}));class o{constructor(e,t){this.componentId=e,this.fieldValue=t}static fromEvent(e,t){const n=t.target;if(n instanceof Element){const t=function(e){return e instanceof HTMLInputElement?e.type&&"checkbox"===e.type.toLowerCase()?{value:e.checked}:{value:e.value}:e instanceof HTMLSelectElement||e instanceof HTMLTextAreaElement?{value:e.value}:null}(n);if(t)return new o(e,t.value)}return null}}const a=new Map,i=new Map,s=[];function c(e){return a.get(e)}function l(e){const t=a.get(e);return(null==t?void 0:t.browserEventName)||e}function u(e,t){e.forEach((e=>a.set(e,t)))}function d(e){const t=[];for(let n=0;ne.selected)).map((e=>e.value))}}{const e=function(e){return!!e&&"INPUT"===e.tagName&&"checkbox"===e.getAttribute("type")}(t);return{value:e?!!t.checked:t.value}}}}),u(["copy","cut","paste"],{createEventArgs:e=>({type:e.type})}),u(["drag","dragend","dragenter","dragleave","dragover","dragstart","drop"],{createEventArgs:e=>{return{...h(t=e),dataTransfer:t.dataTransfer?{dropEffect:t.dataTransfer.dropEffect,effectAllowed:t.dataTransfer.effectAllowed,files:Array.from(t.dataTransfer.files).map((e=>e.name)),items:Array.from(t.dataTransfer.items).map((e=>({kind:e.kind,type:e.type}))),types:t.dataTransfer.types}:null};var t}}),u(["focus","blur","focusin","focusout"],{createEventArgs:e=>({type:e.type})}),u(["keydown","keyup","keypress"],{createEventArgs:e=>{return{key:(t=e).key,code:t.code,location:t.location,repeat:t.repeat,ctrlKey:t.ctrlKey,shiftKey:t.shiftKey,altKey:t.altKey,metaKey:t.metaKey,type:t.type};var t}}),u(["contextmenu","click","mouseover","mouseout","mousemove","mousedown","mouseup","mouseleave","mouseenter","dblclick"],{createEventArgs:e=>h(e)}),u(["error"],{createEventArgs:e=>{return{message:(t=e).message,filename:t.filename,lineno:t.lineno,colno:t.colno,type:t.type};var t}}),u(["loadstart","timeout","abort","load","loadend","progress"],{createEventArgs:e=>{return{lengthComputable:(t=e).lengthComputable,loaded:t.loaded,total:t.total,type:t.type};var t}}),u(["touchcancel","touchend","touchmove","touchenter","touchleave","touchstart"],{createEventArgs:e=>{return{detail:(t=e).detail,touches:d(t.touches),targetTouches:d(t.targetTouches),changedTouches:d(t.changedTouches),ctrlKey:t.ctrlKey,shiftKey:t.shiftKey,altKey:t.altKey,metaKey:t.metaKey,type:t.type};var t}}),u(["gotpointercapture","lostpointercapture","pointercancel","pointerdown","pointerenter","pointerleave","pointermove","pointerout","pointerover","pointerup"],{createEventArgs:e=>{return{...h(t=e),pointerId:t.pointerId,width:t.width,height:t.height,pressure:t.pressure,tiltX:t.tiltX,tiltY:t.tiltY,pointerType:t.pointerType,isPrimary:t.isPrimary};var t}}),u(["wheel","mousewheel"],{createEventArgs:e=>{return{...h(t=e),deltaX:t.deltaX,deltaY:t.deltaY,deltaZ:t.deltaZ,deltaMode:t.deltaMode};var t}}),u(["cancel","close","toggle"],{createEventArgs:()=>({})});const f=["date","datetime-local","month","time","week"],m=new Map;let p,b,v=0;const g={async add(e,t,n){if(!n)throw new Error("initialParameters must be an object, even if empty.");const r="__bl-dynamic-root:"+(++v).toString();m.set(r,e);const o=await E().invokeMethodAsync("AddRootComponent",t,r),a=new w(o,b[t]);return await a.setParameters(n),a}};class y{invoke(e){return this._callback(e)}setCallback(t){this._selfJSObjectReference||(this._selfJSObjectReference=e.createJSObjectReference(this)),this._callback=t}getJSObjectReference(){return this._selfJSObjectReference}dispose(){this._selfJSObjectReference&&e.disposeJSObjectReference(this._selfJSObjectReference)}}class w{constructor(e,t){this._jsEventCallbackWrappers=new Map,this._componentId=e;for(const e of t)"eventcallback"===e.type&&this._jsEventCallbackWrappers.set(e.name.toLowerCase(),new y)}setParameters(e){const t={},n=Object.entries(e||{}),r=n.length;for(const[e,r]of n){const n=this._jsEventCallbackWrappers.get(e.toLowerCase());n&&r?(n.setCallback(r),t[e]=n.getJSObjectReference()):t[e]=r}return E().invokeMethodAsync("SetRootComponentParameters",this._componentId,r,t)}async dispose(){if(null!==this._componentId){await E().invokeMethodAsync("RemoveRootComponent",this._componentId),this._componentId=null;for(const e of this._jsEventCallbackWrappers.values())e.dispose()}}}function E(){if(!p)throw new Error("Dynamic root components have not been enabled in this application.");return p}const S=new Map,I=[],C=new Map;function D(e,t,n){return N(e,t.eventHandlerId,(()=>A(e).invokeMethodAsync("DispatchEventAsync",t,n)))}function A(e){const t=S.get(e);if(!t)throw new Error(`No interop methods are registered for renderer ${e}`);return t}let N=(e,t,n)=>n();const k=x(["abort","blur","cancel","canplay","canplaythrough","change","close","cuechange","durationchange","emptied","ended","error","focus","load","loadeddata","loadedmetadata","loadend","loadstart","mouseenter","mouseleave","pointerenter","pointerleave","pause","play","playing","progress","ratechange","reset","scroll","seeked","seeking","stalled","submit","suspend","timeupdate","toggle","unload","volumechange","waiting","DOMNodeInsertedIntoDocument","DOMNodeRemovedFromDocument"]),R={submit:!0},T=x(["click","dblclick","mousedown","mousemove","mouseup"]);class _{constructor(e){this.browserRendererId=e,this.afterClickCallbacks=[];const t=++_.nextEventDelegatorId;this.eventsCollectionKey=`_blazorEvents_${t}`,this.eventInfoStore=new O(this.onGlobalEvent.bind(this))}setListener(e,t,n,r){const o=this.getEventHandlerInfosForElement(e,!0),a=o.getHandler(t);if(a)this.eventInfoStore.update(a.eventHandlerId,n);else{const a={element:e,eventName:t,eventHandlerId:n,renderingComponentId:r};this.eventInfoStore.add(a),o.setHandler(t,a)}}getHandler(e){return this.eventInfoStore.get(e)}removeListener(e){const t=this.eventInfoStore.remove(e);if(t){const e=t.element,n=this.getEventHandlerInfosForElement(e,!1);n&&n.removeHandler(t.eventName)}}notifyAfterClick(e){this.afterClickCallbacks.push(e),this.eventInfoStore.addGlobalListener("click")}setStopPropagation(e,t,n){this.getEventHandlerInfosForElement(e,!0).stopPropagation(t,n)}setPreventDefault(e,t,n){this.getEventHandlerInfosForElement(e,!0).preventDefault(t,n)}onGlobalEvent(e){if(!(e.target instanceof Element))return;this.dispatchGlobalEventToAllElements(e.type,e);const t=(n=e.type,i.get(n));var n;t&&t.forEach((t=>this.dispatchGlobalEventToAllElements(t,e))),"click"===e.type&&this.afterClickCallbacks.forEach((t=>t(e)))}dispatchGlobalEventToAllElements(e,t){const n=t.composedPath();let r=n.shift(),a=null,i=!1;const s=Object.prototype.hasOwnProperty.call(k,e);let l=!1;for(;r;){const h=r,f=this.getEventHandlerInfosForElement(h,!1);if(f){const n=f.getHandler(e);if(n&&(u=h,d=t.type,!((u instanceof HTMLButtonElement||u instanceof HTMLInputElement||u instanceof HTMLTextAreaElement||u instanceof HTMLSelectElement)&&Object.prototype.hasOwnProperty.call(T,d)&&u.disabled))){if(!i){const n=c(e);a=(null==n?void 0:n.createEventArgs)?n.createEventArgs(t):{},i=!0}Object.prototype.hasOwnProperty.call(R,t.type)&&t.preventDefault(),D(this.browserRendererId,{eventHandlerId:n.eventHandlerId,eventName:e,eventFieldInfo:o.fromEvent(n.renderingComponentId,t)},a)}f.stopPropagation(e)&&(l=!0),f.preventDefault(e)&&t.preventDefault()}r=s||l?void 0:n.shift()}var u,d}getEventHandlerInfosForElement(e,t){return Object.prototype.hasOwnProperty.call(e,this.eventsCollectionKey)?e[this.eventsCollectionKey]:t?e[this.eventsCollectionKey]=new L:null}}_.nextEventDelegatorId=0;class O{constructor(e){this.globalListener=e,this.infosByEventHandlerId={},this.countByEventName={},s.push(this.handleEventNameAliasAdded.bind(this))}add(e){if(this.infosByEventHandlerId[e.eventHandlerId])throw new Error(`Event ${e.eventHandlerId} is already tracked`);this.infosByEventHandlerId[e.eventHandlerId]=e,this.addGlobalListener(e.eventName)}get(e){return this.infosByEventHandlerId[e]}addGlobalListener(e){if(e=l(e),Object.prototype.hasOwnProperty.call(this.countByEventName,e))this.countByEventName[e]++;else{this.countByEventName[e]=1;const t=Object.prototype.hasOwnProperty.call(k,e);document.addEventListener(e,this.globalListener,t)}}update(e,t){if(Object.prototype.hasOwnProperty.call(this.infosByEventHandlerId,t))throw new Error(`Event ${t} is already tracked`);const n=this.infosByEventHandlerId[e];delete this.infosByEventHandlerId[e],n.eventHandlerId=t,this.infosByEventHandlerId[t]=n}remove(e){const t=this.infosByEventHandlerId[e];if(t){delete this.infosByEventHandlerId[e];const n=l(t.eventName);0==--this.countByEventName[n]&&(delete this.countByEventName[n],document.removeEventListener(n,this.globalListener))}return t}handleEventNameAliasAdded(e,t){if(Object.prototype.hasOwnProperty.call(this.countByEventName,e)){const n=this.countByEventName[e];delete this.countByEventName[e],document.removeEventListener(e,this.globalListener),this.addGlobalListener(t),this.countByEventName[t]+=n-1}}}class L{constructor(){this.handlers={},this.preventDefaultFlags=null,this.stopPropagationFlags=null}getHandler(e){return Object.prototype.hasOwnProperty.call(this.handlers,e)?this.handlers[e]:null}setHandler(e,t){this.handlers[e]=t}removeHandler(e){delete this.handlers[e]}preventDefault(e,t){return void 0!==t&&(this.preventDefaultFlags=this.preventDefaultFlags||{},this.preventDefaultFlags[e]=t),!!this.preventDefaultFlags&&this.preventDefaultFlags[e]}stopPropagation(e,t){return void 0!==t&&(this.stopPropagationFlags=this.stopPropagationFlags||{},this.stopPropagationFlags[e]=t),!!this.stopPropagationFlags&&this.stopPropagationFlags[e]}}function x(e){const t={};return e.forEach((e=>{t[e]=!0})),t}const F=Symbol(),M=Symbol();function P(e,t){if(F in e)return e;const n=[];if(e.childNodes.length>0){if(!t)throw new Error("New logical elements must start empty, or allowExistingContents must be true");e.childNodes.forEach((t=>{const r=P(t,!0);r[M]=e,n.push(r)}))}return e[F]=n,e}function B(e){const t=W(e);for(;t.length;)J(e,0)}function j(e,t){const n=document.createComment("!");return H(n,e,t),n}function H(e,t,n){const r=e;let o=e;if(F in e){const t=G(r);if(t!==e){const n=new Range;n.setStartBefore(e),n.setEndAfter(t),o=n.extractContents()}}const a=U(r);if(a){const e=W(a),t=Array.prototype.indexOf.call(e,r);e.splice(t,1),delete r[M]}const i=W(t);if(n0;)J(n,0)}const r=n;r.parentNode.removeChild(r)}function U(e){return e[M]||null}function z(e,t){return W(e)[t]}function $(e){const t=X(e);return"http://www.w3.org/2000/svg"===t.namespaceURI&&"foreignObject"!==t.tagName}function W(e){return e[F]}function K(e){const t=W(U(e));return t[Array.prototype.indexOf.call(t,e)+1]||null}function V(e,t){const n=W(e);t.forEach((e=>{e.moveRangeStart=n[e.fromSiblingIndex],e.moveRangeEnd=G(e.moveRangeStart)})),t.forEach((t=>{const r=document.createComment("marker");t.moveToBeforeMarker=r;const o=n[t.toSiblingIndex+1];o?o.parentNode.insertBefore(r,o):Y(r,e)})),t.forEach((e=>{const t=e.moveToBeforeMarker,n=t.parentNode,r=e.moveRangeStart,o=e.moveRangeEnd;let a=r;for(;a;){const e=a.nextSibling;if(n.insertBefore(a,t),a===o)break;a=e}n.removeChild(t)})),t.forEach((e=>{n[e.toSiblingIndex]=e.moveRangeStart}))}function X(e){if(e instanceof Element||e instanceof DocumentFragment)return e;if(e instanceof Comment)return e.parentNode;throw new Error("Not a valid logical element")}function Y(e,t){if(t instanceof Element||t instanceof DocumentFragment)t.appendChild(e);else{if(!(t instanceof Comment))throw new Error(`Cannot append node because the parent is not a valid logical element. Parent: ${t}`);{const n=K(t);n?n.parentNode.insertBefore(e,n):Y(e,U(t))}}}function G(e){if(e instanceof Element||e instanceof DocumentFragment)return e;const t=K(e);if(t)return t.previousSibling;{const t=U(e);return t instanceof Element||t instanceof DocumentFragment?t.lastChild:G(t)}}function q(e){return`_bl_${e}`}Symbol();const Z="__internalId";e.attachReviver(((e,t)=>t&&"object"==typeof t&&Object.prototype.hasOwnProperty.call(t,Z)&&"string"==typeof t[Z]?function(e){const t=`[${q(e)}]`;return document.querySelector(t)}(t[Z]):t));const Q="_blazorDeferredValue";function ee(e){return"select-multiple"===e.type}function te(e,t){e.value=t||""}function ne(e,t){e instanceof HTMLSelectElement?ee(e)?function(e,t){t||(t=[]);for(let n=0;n{Ce()&&function(e,t){if(0!==e.button||function(e){return e.ctrlKey||e.shiftKey||e.altKey||e.metaKey}(e))return;if(e.defaultPrevented)return;const n=function(e){const t=!window._blazorDisableComposedPath&&e.composedPath&&e.composedPath();if(t){for(let e=0;e{const t=document.createElement("script");t.textContent=e.textContent,e.getAttributeNames().forEach((n=>{t.setAttribute(n,e.getAttribute(n))})),e.parentNode.replaceChild(t,e)})),oe.content));var i;let s=0;for(;a.firstChild;)H(a.firstChild,o,s++)}applyAttribute(e,t,n,r){const o=e.frameReader,a=o.attributeName(r),i=o.attributeEventHandlerId(r);if(i){const e=he(a);return void this.eventDelegator.setListener(n,e,i,t)}const s=o.attributeValue(r);this.setOrRemoveAttributeOrProperty(n,a,s)}insertFrameRange(e,t,n,r,o,a,i){const s=r;for(let s=a;s{He(t,e)})},enableNavigationInterception:function(e){if(void 0!==me&&me!==e)throw new Error("Only one interactive runtime may enable navigation interception at a time.");me=e},setHasLocationChangingListeners:function(e,t){const n=Re.get(e);if(!n)throw new Error(`Renderer with ID '${e}' is not listening for navigation events`);n.hasLocationChangingEventListeners=t},endLocationChanging:function(e,t){_e&&e===ke&&(_e(t),_e=null)},navigateTo:function(e,t){xe(e,t,!0)},refresh:function(e){!e&&we()?Ee(location.href,!0):location.reload()},getBaseURI:()=>document.baseURI,getLocationHref:()=>location.href,scrollToElement:Le};function Le(e){const t=document.getElementById(e);return!!t&&(t.scrollIntoView(),!0)}function xe(e,t,n=!1){const r=Se(e);!t.forceLoad&&ye(r)?ze()?Fe(r,!1,t.replaceHistoryEntry,t.historyEntryState,n):Ee(r,t.replaceHistoryEntry):function(e,t){if(location.href===e){const t=e+"?";history.replaceState(null,"",t),location.replace(e)}else t?location.replace(e):location.href=e}(e,t.replaceHistoryEntry)}async function Fe(e,t,n,r=void 0,o=!1){if(Be(),function(e){const t=e.indexOf("#");return t>-1&&location.href.replace(location.hash,"")===e.substring(0,t)}(e))return void function(e,t,n){Me(e,t,n);const r=e.indexOf("#");r!==e.length-1&&Le(e.substring(r+1))}(e,n,r);const a=Ue();(o||!(null==a?void 0:a.hasLocationChangingEventListeners)||await je(e,r,t,a))&&(ge=!0,Me(e,n,r),await He(t))}function Me(e,t,n=void 0){t?history.replaceState({userState:n,_index:Ne},"",e):(Ne++,history.pushState({userState:n,_index:Ne},"",e))}function Pe(e){return new Promise((t=>{const n=Te;Te=()=>{Te=n,t()},history.go(e)}))}function Be(){_e&&(_e(!1),_e=null)}function je(e,t,n,r){return new Promise((o=>{Be(),ke++,_e=o,r.locationChanging(ke,e,t,n)}))}async function He(e,t){const n=null!=t?t:location.href;await Promise.all(Array.from(Re,(async([t,r])=>{var o,a;a=t,S.has(a)&&await r.locationChanged(n,null===(o=history.state)||void 0===o?void 0:o.userState,e)})))}async function Je(e){var t,n;Te&&ze()&&await Te(e),Ne=null!==(n=null===(t=history.state)||void 0===t?void 0:t._index)&&void 0!==n?n:0}function Ue(){const e=De();if(void 0!==e)return Re.get(e)}function ze(){return Ce()||!we()}const $e={focus:function(e,t){if(e instanceof HTMLElement)e.focus({preventScroll:t});else{if(!(e instanceof SVGElement))throw new Error("Unable to focus an invalid element.");if(!e.hasAttribute("tabindex"))throw new Error("Unable to focus an SVG element that does not have a tabindex.");e.focus({preventScroll:t})}},focusBySelector:function(e,t){const n=document.querySelector(e);n&&(n.hasAttribute("tabindex")||(n.tabIndex=-1),n.focus({preventScroll:!0}))}},We={init:function(e,t,n,r=50){const o=Ve(t);(o||document.documentElement).style.overflowAnchor="none";const a=document.createRange();h(n.parentElement)&&(t.style.display="table-row",n.style.display="table-row");const i=new IntersectionObserver((function(r){r.forEach((r=>{var o;if(!r.isIntersecting)return;a.setStartAfter(t),a.setEndBefore(n);const i=a.getBoundingClientRect().height,s=null===(o=r.rootBounds)||void 0===o?void 0:o.height;r.target===t?e.invokeMethodAsync("OnSpacerBeforeVisible",r.intersectionRect.top-r.boundingClientRect.top,i,s):r.target===n&&n.offsetHeight>0&&e.invokeMethodAsync("OnSpacerAfterVisible",r.boundingClientRect.bottom-r.intersectionRect.bottom,i,s)}))}),{root:o,rootMargin:`${r}px`});i.observe(t),i.observe(n);const s=d(t),c=d(n),{observersByDotNetObjectId:l,id:u}=Xe(e);function d(e){const t={attributes:!0},n=new MutationObserver(((n,r)=>{h(e.parentElement)&&(r.disconnect(),e.style.display="table-row",r.observe(e,t)),i.unobserve(e),i.observe(e)}));return n.observe(e,t),n}function h(e){return null!==e&&(e instanceof HTMLTableElement&&""===e.style.display||"table"===e.style.display||e instanceof HTMLTableSectionElement&&""===e.style.display||"table-row-group"===e.style.display)}l[u]={intersectionObserver:i,mutationObserverBefore:s,mutationObserverAfter:c}},dispose:function(e){const{observersByDotNetObjectId:t,id:n}=Xe(e),r=t[n];r&&(r.intersectionObserver.disconnect(),r.mutationObserverBefore.disconnect(),r.mutationObserverAfter.disconnect(),e.dispose(),delete t[n])}},Ke=Symbol();function Ve(e){return e&&e!==document.body&&e!==document.documentElement?"visible"!==getComputedStyle(e).overflowY?e:Ve(e.parentElement):null}function Xe(e){var t;const n=e._callDispatcher,r=e._id;return null!==(t=n[Ke])&&void 0!==t||(n[Ke]={}),{observersByDotNetObjectId:n[Ke],id:r}}const Ye={getAndRemoveExistingTitle:function(){var e;const t=document.head?document.head.getElementsByTagName("title"):[];if(0===t.length)return null;let n=null;for(let r=t.length-1;r>=0;r--){const o=t[r],a=o.previousSibling;a instanceof Comment&&null!==U(a)||(null===n&&(n=o.textContent),null===(e=o.parentNode)||void 0===e||e.removeChild(o))}return n}},Ge={init:function(e,t){t._blazorInputFileNextFileId=0,t.addEventListener("click",(function(){t.value=""})),t.addEventListener("change",(function(){t._blazorFilesById={};const n=Array.prototype.map.call(t.files,(function(e){const n={id:++t._blazorInputFileNextFileId,lastModified:new Date(e.lastModified).toISOString(),name:e.name,size:e.size,contentType:e.type,readPromise:void 0,arrayBuffer:void 0,blob:e};return t._blazorFilesById[n.id]=n,n}));e.invokeMethodAsync("NotifyChange",n)}))},toImageFile:async function(e,t,n,r,o){const a=qe(e,t),i=await new Promise((function(e){const t=new Image;t.onload=function(){URL.revokeObjectURL(t.src),e(t)},t.onerror=function(){t.onerror=null,URL.revokeObjectURL(t.src)},t.src=URL.createObjectURL(a.blob)})),s=await new Promise((function(e){var t;const a=Math.min(1,r/i.width),s=Math.min(1,o/i.height),c=Math.min(a,s),l=document.createElement("canvas");l.width=Math.round(i.width*c),l.height=Math.round(i.height*c),null===(t=l.getContext("2d"))||void 0===t||t.drawImage(i,0,0,l.width,l.height),l.toBlob(e,n)})),c={id:++e._blazorInputFileNextFileId,lastModified:a.lastModified,name:a.name,size:(null==s?void 0:s.size)||0,contentType:n,blob:s||a.blob};return e._blazorFilesById[c.id]=c,c},readFileData:async function(e,t){return qe(e,t).blob}};function qe(e,t){const n=e._blazorFilesById[t];if(!n)throw new Error(`There is no file with ID ${t}. The file list may have changed. See https://aka.ms/aspnet/blazor-input-file-multiple-selections.`);return n}const Ze=new Set,Qe={enableNavigationPrompt:function(e){0===Ze.size&&window.addEventListener("beforeunload",et),Ze.add(e)},disableNavigationPrompt:function(e){Ze.delete(e),0===Ze.size&&window.removeEventListener("beforeunload",et)}};function et(e){e.preventDefault(),e.returnValue=!0}const tt=new Map,nt={navigateTo:function(e,t,n=!1){xe(e,t instanceof Object?t:{forceLoad:t,replaceHistoryEntry:n})},registerCustomEventType:function(e,t){if(!t)throw new Error("The options parameter is required.");if(a.has(e))throw new Error(`The event '${e}' is already registered.`);if(t.browserEventName){const n=i.get(t.browserEventName);n?n.push(e):i.set(t.browserEventName,[e]),s.forEach((n=>n(e,t.browserEventName)))}a.set(e,t)},rootComponents:g,runtime:{},_internal:{navigationManager:Oe,domWrapper:$e,Virtualize:We,PageTitle:Ye,InputFile:Ge,NavigationLock:Qe,getJSDataStreamChunk:async function(e,t,n){return e instanceof Blob?await async function(e,t,n){const r=e.slice(t,t+n),o=await r.arrayBuffer();return new Uint8Array(o)}(e,t,n):function(e,t,n){return new Uint8Array(e.buffer,e.byteOffset+t,n)}(e,t,n)},attachWebRendererInterop:function(t,n,r,o){var a,i;if(S.has(t))throw new Error(`Interop methods are already registered for renderer ${t}`);S.set(t,n),r&&o&&Object.keys(r).length>0&&function(t,n,r){if(p)throw new Error("Dynamic root components have already been enabled.");p=t,b=n;for(const[t,o]of Object.entries(r)){const r=e.findJSFunction(t,0);for(const e of o)r(e,n[e])}}(A(t),r,o),null===(i=null===(a=C.get(t))||void 0===a?void 0:a[0])||void 0===i||i.call(a),function(e){for(const t of I)t(e)}(t)}}};window.Blazor=nt;let rt=!1;const ot="function"==typeof TextDecoder?new TextDecoder("utf-8"):null,at=ot?ot.decode.bind(ot):function(e){let t=0;const n=e.length,r=[],o=[];for(;t65535&&(o-=65536,r.push(o>>>10&1023|55296),o=56320|1023&o),r.push(o)}r.length>1024&&(o.push(String.fromCharCode.apply(null,r)),r.length=0)}return o.push(String.fromCharCode.apply(null,r)),o.join("")},it=Math.pow(2,32),st=Math.pow(2,21)-1;function ct(e,t){return e[t]|e[t+1]<<8|e[t+2]<<16|e[t+3]<<24}function lt(e,t){return e[t]+(e[t+1]<<8)+(e[t+2]<<16)+(e[t+3]<<24>>>0)}function ut(e,t){const n=lt(e,t+4);if(n>st)throw new Error(`Cannot read uint64 with high order part ${n}, because the result would exceed Number.MAX_SAFE_INTEGER.`);return n*it+lt(e,t)}class dt{constructor(e){this.batchData=e;const t=new pt(e);this.arrayRangeReader=new bt(e),this.arrayBuilderSegmentReader=new vt(e),this.diffReader=new ht(e),this.editReader=new ft(e,t),this.frameReader=new mt(e,t)}updatedComponents(){return ct(this.batchData,this.batchData.length-20)}referenceFrames(){return ct(this.batchData,this.batchData.length-16)}disposedComponentIds(){return ct(this.batchData,this.batchData.length-12)}disposedEventHandlerIds(){return ct(this.batchData,this.batchData.length-8)}updatedComponentsEntry(e,t){const n=e+4*t;return ct(this.batchData,n)}referenceFramesEntry(e,t){return e+20*t}disposedComponentIdsEntry(e,t){const n=e+4*t;return ct(this.batchData,n)}disposedEventHandlerIdsEntry(e,t){const n=e+8*t;return ut(this.batchData,n)}}class ht{constructor(e){this.batchDataUint8=e}componentId(e){return ct(this.batchDataUint8,e)}edits(e){return e+4}editsEntry(e,t){return e+16*t}}class ft{constructor(e,t){this.batchDataUint8=e,this.stringReader=t}editType(e){return ct(this.batchDataUint8,e)}siblingIndex(e){return ct(this.batchDataUint8,e+4)}newTreeIndex(e){return ct(this.batchDataUint8,e+8)}moveToSiblingIndex(e){return ct(this.batchDataUint8,e+8)}removedAttributeName(e){const t=ct(this.batchDataUint8,e+12);return this.stringReader.readString(t)}}class mt{constructor(e,t){this.batchDataUint8=e,this.stringReader=t}frameType(e){return ct(this.batchDataUint8,e)}subtreeLength(e){return ct(this.batchDataUint8,e+4)}elementReferenceCaptureId(e){const t=ct(this.batchDataUint8,e+4);return this.stringReader.readString(t)}componentId(e){return ct(this.batchDataUint8,e+8)}elementName(e){const t=ct(this.batchDataUint8,e+8);return this.stringReader.readString(t)}textContent(e){const t=ct(this.batchDataUint8,e+4);return this.stringReader.readString(t)}markupContent(e){const t=ct(this.batchDataUint8,e+4);return this.stringReader.readString(t)}attributeName(e){const t=ct(this.batchDataUint8,e+4);return this.stringReader.readString(t)}attributeValue(e){const t=ct(this.batchDataUint8,e+8);return this.stringReader.readString(t)}attributeEventHandlerId(e){return ut(this.batchDataUint8,e+12)}}class pt{constructor(e){this.batchDataUint8=e,this.stringTableStartIndex=ct(e,e.length-4)}readString(e){if(-1===e)return null;{const n=ct(this.batchDataUint8,this.stringTableStartIndex+4*e),r=function(e,t){let n=0,r=0;for(let o=0;o<4;o++){const a=e[t+o];if(n|=(127&a)<async function(e,n){const r=function(e){const t=document.baseURI;return t.endsWith("/")?`${t}${e}`:`${t}/${e}`}(n),o=await import(r);if(void 0!==o){if(e.singleRuntime){const{beforeStart:n,afterStarted:r,beforeWebAssemblyStart:i,afterWebAssemblyStarted:s,beforeServerStart:c,afterServerStarted:l}=o;let u=n;e.webRendererId===Nt.Server&&c&&(u=c),e.webRendererId===Nt.WebAssembly&&i&&(u=i);let d=r;return e.webRendererId===Nt.Server&&l&&(d=l),e.webRendererId===Nt.WebAssembly&&s&&(d=s),a(e,u,d,t)}return function(e,t,n){var o;const i=n[0],{beforeStart:s,afterStarted:c,beforeWebStart:l,afterWebStarted:u,beforeWebAssemblyStart:d,afterWebAssemblyStarted:h,beforeServerStart:f,afterServerStarted:m}=t,p=!(l||u||d||h||f||m||!s&&!c),b=p&&i.enableClassicInitializers;if(p&&!i.enableClassicInitializers)null===(o=e.logger)||void 0===o||o.log(kt.Warning,`Initializer '${r}' will be ignored because multiple runtimes are available. use 'before(web|webAssembly|server)Start' and 'after(web|webAssembly|server)Started?' instead.)`);else if(b)return a(e,s,c,n);if(function(e){e.webAssembly?e.webAssembly.initializers||(e.webAssembly.initializers={beforeStart:[],afterStarted:[]}):e.webAssembly={initializers:{beforeStart:[],afterStarted:[]}},e.circuit?e.circuit.initializers||(e.circuit.initializers={beforeStart:[],afterStarted:[]}):e.circuit={initializers:{beforeStart:[],afterStarted:[]}}}(i),d&&i.webAssembly.initializers.beforeStart.push(d),h&&i.webAssembly.initializers.afterStarted.push(h),f&&i.circuit.initializers.beforeStart.push(f),m&&i.circuit.initializers.afterStarted.push(m),u&&e.afterStartedCallbacks.push(u),l)return l(i)}(e,o,t)}function a(e,t,n,r){if(n&&e.afterStartedCallbacks.push(n),t)return t(...r)}}(this,e))))}async invokeAfterStartedCallbacks(e){const t=(n=this.webRendererId,null===(r=C.get(n))||void 0===r?void 0:r[1]);var n,r;t&&await t,await Promise.all(this.afterStartedCallbacks.map((t=>t(e))))}}let Ot,Lt=!1;async function xt(){if(Lt)throw new Error("Blazor has already started.");Lt=!0,Ot=e.attachDispatcher({beginInvokeDotNetFromJS:Et,endInvokeJSFromDotNet:St,sendByteArray:It});const t=await async function(){const e=await fetch("http://github.com/_framework/blazor.modules.json",{method:"GET",credentials:"include",cache:"no-cache"}),t=await e.json(),n=new _t;return await n.importInitializersAsync(t,[]),n}();(function(){const e={AttachToDocument:(e,t)=>{!function(e,t,n){const r="::before";let o=!1;if(e.endsWith("::after"))e=e.slice(0,-7),o=!0;else if(e.endsWith(r))throw new Error(`The '${r}' selector is not supported.`);const a=function(e){const t=m.get(e);if(t)return m.delete(e),t}(e)||document.querySelector(e);if(!a)throw new Error(`Could not find any element matching selector '${e}'.`);!function(e,t,n,r){let o=fe[e];o||(o=new le(e),fe[e]=o),o.attachRootComponentToLogicalElement(n,t,r)}(n,P(a,!0),t,o)}(t,e,Nt.WebView)},RenderBatch:(e,t)=>{try{const n=Tt(t);(function(e,t){const n=fe[e];if(!n)throw new Error(`There is no browser renderer with ID ${e}.`);const r=t.arrayRangeReader,o=t.updatedComponents(),a=r.values(o),i=r.count(o),s=t.referenceFrames(),c=r.values(s),l=t.diffReader;for(let e=0;e{yt=!0,console.error(`${e}\n${t}`),function(){const e=document.querySelector("#blazor-error-ui");e&&(e.style.display="block"),rt||(rt=!0,document.querySelectorAll("#blazor-error-ui .reload").forEach((e=>{e.onclick=function(e){location.reload(),e.preventDefault()}})),document.querySelectorAll("#blazor-error-ui .dismiss").forEach((e=>{e.onclick=function(e){const t=document.querySelector("#blazor-error-ui");t&&(t.style.display="none"),e.preventDefault()}})))}()},BeginInvokeJS:Ot.beginInvokeJSFromDotNet.bind(Ot),EndInvokeDotNet:Ot.endInvokeDotNetFromJS.bind(Ot),SendByteArrayToJS:Rt,Navigate:Oe.navigateTo,Refresh:Oe.refresh,SetHasLocationChangingListeners:e=>{Oe.setHasLocationChangingListeners(Nt.WebView,e)},EndLocationChanging:Oe.endLocationChanging};window.external.receiveMessage((t=>{const n=function(e){if(yt||!e||!e.startsWith(gt))return null;const t=e.substring(gt.length),[n,...r]=JSON.parse(t);return{messageType:n,args:r}}(t);if(n){if(!Object.prototype.hasOwnProperty.call(e,n.messageType))throw new Error(`Unsupported IPC message type '${n.messageType}'`);e[n.messageType].apply(null,n.args)}}))})(),nt._internal.receiveWebViewDotNetDataStream=Ft,Oe.enableNavigationInterception(Nt.WebView),Oe.listenForNavigationEvents(Nt.WebView,Ct,Dt),At("AttachPage",Oe.getBaseURI(),Oe.getLocationHref()),await t.invokeAfterStartedCallbacks(nt)}function Ft(e,t,n,r){!function(e,t,n,r,o){let a=tt.get(t);if(!a){const n=new ReadableStream({start(e){tt.set(t,e),a=e}});e.supplyDotNetStream(t,n)}o?(a.error(o),tt.delete(t)):0===r?(a.close(),tt.delete(t)):a.enqueue(n.length===r?n:n.subarray(0,r))}(Ot,e,t,n,r)}nt.start=xt,window.DotNet=e,document&&document.currentScript&&"false"!==document.currentScript.getAttribute("autostart")&&xt()})(); \ No newline at end of file +(()=>{"use strict";var e,t,n,r={d:(e,t)=>{for(var n in t)r.o(t,n)&&!r.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t)};r.d({},{e:()=>Ot}),function(e){const t=[],n="__jsObjectId",r="__dotNetObject",o="__byte[]",a="__dotNetStream",i="__jsStreamReferenceLength";let s,c;class l{constructor(e){this._jsObject=e,this._cachedFunctions=new Map}findFunction(e){const t=this._cachedFunctions.get(e);if(t)return t;let n,r=this._jsObject;if(e.split(".").forEach((t=>{if(!(t in r))throw new Error(`Could not find '${e}' ('${t}' was undefined).`);n=r,r=r[t]})),r instanceof Function)return r=r.bind(n),this._cachedFunctions.set(e,r),r;throw new Error(`The value '${e}' is not a function.`)}getWrappedObject(){return this._jsObject}}const u={0:new l(window)};u[0]._cachedFunctions.set("import",(e=>("string"==typeof e&&e.startsWith("./")&&(e=new URL(e.substr(2),document.baseURI).toString()),import(e))));let d,h=1;function f(e){t.push(e)}function m(e){if(e&&"object"==typeof e){u[h]=new l(e);const t={[n]:h};return h++,t}throw new Error(`Cannot create a JSObjectReference from the value '${e}'.`)}function p(e){let t=-1;if(e instanceof ArrayBuffer&&(e=new Uint8Array(e)),e instanceof Blob)t=e.size;else{if(!(e.buffer instanceof ArrayBuffer))throw new Error("Supplied value is not a typed array or blob.");if(void 0===e.byteLength)throw new Error(`Cannot create a JSStreamReference from the value '${e}' as it doesn't have a byteLength.`);t=e.byteLength}const r={[i]:t};try{const t=m(e);r[n]=t[n]}catch(t){throw new Error(`Cannot create a JSStreamReference from the value '${e}'.`)}return r}function b(e,n){c=e;const r=n?JSON.parse(n,((e,n)=>t.reduce(((t,n)=>n(e,t)),n))):null;return c=void 0,r}function v(){if(void 0===s)throw new Error("No call dispatcher has been set.");if(null===s)throw new Error("There are multiple .NET runtimes present, so a default dispatcher could not be resolved. Use DotNetObject to invoke .NET instance methods.");return s}e.attachDispatcher=function(e){const t=new g(e);return void 0===s?s=t:s&&(s=null),t},e.attachReviver=f,e.invokeMethod=function(e,t,...n){return v().invokeDotNetStaticMethod(e,t,...n)},e.invokeMethodAsync=function(e,t,...n){return v().invokeDotNetStaticMethodAsync(e,t,...n)},e.createJSObjectReference=m,e.createJSStreamReference=p,e.disposeJSObjectReference=function(e){const t=e&&e[n];"number"==typeof t&&E(t)},function(e){e[e.Default=0]="Default",e[e.JSObjectReference=1]="JSObjectReference",e[e.JSStreamReference=2]="JSStreamReference",e[e.JSVoidResult=3]="JSVoidResult"}(d=e.JSCallResultType||(e.JSCallResultType={}));class g{constructor(e){this._dotNetCallDispatcher=e,this._byteArraysToBeRevived=new Map,this._pendingDotNetToJSStreams=new Map,this._pendingAsyncCalls={},this._nextAsyncCallId=1}getDotNetCallDispatcher(){return this._dotNetCallDispatcher}invokeJSFromDotNet(e,t,n,r){const o=b(this,t),a=D(w(e,r)(...o||[]),n);return null==a?null:N(this,a)}beginInvokeJSFromDotNet(e,t,n,r,o){const a=new Promise((e=>{const r=b(this,n);e(w(t,o)(...r||[]))}));e&&a.then((t=>N(this,[e,!0,D(t,r)]))).then((t=>this._dotNetCallDispatcher.endInvokeJSFromDotNet(e,!0,t)),(t=>this._dotNetCallDispatcher.endInvokeJSFromDotNet(e,!1,JSON.stringify([e,!1,y(t)]))))}endInvokeDotNetFromJS(e,t,n){const r=t?b(this,n):new Error(n);this.completePendingCall(parseInt(e,10),t,r)}invokeDotNetStaticMethod(e,t,...n){return this.invokeDotNetMethod(e,t,null,n)}invokeDotNetStaticMethodAsync(e,t,...n){return this.invokeDotNetMethodAsync(e,t,null,n)}invokeDotNetMethod(e,t,n,r){if(this._dotNetCallDispatcher.invokeDotNetFromJS){const o=N(this,r),a=this._dotNetCallDispatcher.invokeDotNetFromJS(e,t,n,o);return a?b(this,a):null}throw new Error("The current dispatcher does not support synchronous calls from JS to .NET. Use invokeDotNetMethodAsync instead.")}invokeDotNetMethodAsync(e,t,n,r){if(e&&n)throw new Error(`For instance method calls, assemblyName should be null. Received '${e}'.`);const o=this._nextAsyncCallId++,a=new Promise(((e,t)=>{this._pendingAsyncCalls[o]={resolve:e,reject:t}}));try{const a=N(this,r);this._dotNetCallDispatcher.beginInvokeDotNetFromJS(o,e,t,n,a)}catch(e){this.completePendingCall(o,!1,e)}return a}receiveByteArray(e,t){this._byteArraysToBeRevived.set(e,t)}processByteArray(e){const t=this._byteArraysToBeRevived.get(e);return t?(this._byteArraysToBeRevived.delete(e),t):null}supplyDotNetStream(e,t){if(this._pendingDotNetToJSStreams.has(e)){const n=this._pendingDotNetToJSStreams.get(e);this._pendingDotNetToJSStreams.delete(e),n.resolve(t)}else{const n=new C;n.resolve(t),this._pendingDotNetToJSStreams.set(e,n)}}getDotNetStreamPromise(e){let t;if(this._pendingDotNetToJSStreams.has(e))t=this._pendingDotNetToJSStreams.get(e).streamPromise,this._pendingDotNetToJSStreams.delete(e);else{const n=new C;this._pendingDotNetToJSStreams.set(e,n),t=n.streamPromise}return t}completePendingCall(e,t,n){if(!this._pendingAsyncCalls.hasOwnProperty(e))throw new Error(`There is no pending async call with ID ${e}.`);const r=this._pendingAsyncCalls[e];delete this._pendingAsyncCalls[e],t?r.resolve(n):r.reject(n)}}function y(e){return e instanceof Error?`${e.message}\n${e.stack}`:e?e.toString():"null"}function w(e,t){const n=u[t];if(n)return n.findFunction(e);throw new Error(`JS object instance with ID ${t} does not exist (has it been disposed?).`)}function E(e){delete u[e]}e.findJSFunction=w,e.disposeJSObjectReferenceById=E;class S{constructor(e,t){this._id=e,this._callDispatcher=t}invokeMethod(e,...t){return this._callDispatcher.invokeDotNetMethod(null,e,this._id,t)}invokeMethodAsync(e,...t){return this._callDispatcher.invokeDotNetMethodAsync(null,e,this._id,t)}dispose(){this._callDispatcher.invokeDotNetMethodAsync(null,"__Dispose",this._id,null).catch((e=>console.error(e)))}serializeAsArg(){return{[r]:this._id}}}e.DotNetObject=S,f((function(e,t){if(t&&"object"==typeof t){if(t.hasOwnProperty(r))return new S(t[r],c);if(t.hasOwnProperty(n)){const e=t[n],r=u[e];if(r)return r.getWrappedObject();throw new Error(`JS object instance with Id '${e}' does not exist. It may have been disposed.`)}if(t.hasOwnProperty(o)){const e=t[o],n=c.processByteArray(e);if(void 0===n)throw new Error(`Byte array index '${e}' does not exist.`);return n}if(t.hasOwnProperty(a)){const e=t[a],n=c.getDotNetStreamPromise(e);return new I(n)}}return t}));class I{constructor(e){this._streamPromise=e}stream(){return this._streamPromise}async arrayBuffer(){return new Response(await this.stream()).arrayBuffer()}}class C{constructor(){this.streamPromise=new Promise(((e,t)=>{this.resolve=e,this.reject=t}))}}function D(e,t){switch(t){case d.Default:return e;case d.JSObjectReference:return m(e);case d.JSStreamReference:return p(e);case d.JSVoidResult:return null;default:throw new Error(`Invalid JS call result type '${t}'.`)}}let A=0;function N(e,t){A=0,c=e;const n=JSON.stringify(t,k);return c=void 0,n}function k(e,t){if(t instanceof S)return t.serializeAsArg();if(t instanceof Uint8Array){c.getDotNetCallDispatcher().sendByteArray(A,t);const e={[o]:A};return A++,e}return t}}(e||(e={})),function(e){e[e.prependFrame=1]="prependFrame",e[e.removeFrame=2]="removeFrame",e[e.setAttribute=3]="setAttribute",e[e.removeAttribute=4]="removeAttribute",e[e.updateText=5]="updateText",e[e.stepIn=6]="stepIn",e[e.stepOut=7]="stepOut",e[e.updateMarkup=8]="updateMarkup",e[e.permutationListEntry=9]="permutationListEntry",e[e.permutationListEnd=10]="permutationListEnd"}(t||(t={})),function(e){e[e.element=1]="element",e[e.text=2]="text",e[e.attribute=3]="attribute",e[e.component=4]="component",e[e.region=5]="region",e[e.elementReferenceCapture=6]="elementReferenceCapture",e[e.markup=8]="markup",e[e.namedEvent=10]="namedEvent"}(n||(n={}));class o{constructor(e,t){this.componentId=e,this.fieldValue=t}static fromEvent(e,t){const n=t.target;if(n instanceof Element){const t=function(e){return e instanceof HTMLInputElement?e.type&&"checkbox"===e.type.toLowerCase()?{value:e.checked}:{value:e.value}:e instanceof HTMLSelectElement||e instanceof HTMLTextAreaElement?{value:e.value}:null}(n);if(t)return new o(e,t.value)}return null}}const a=new Map,i=new Map,s=[];function c(e){return a.get(e)}function l(e){const t=a.get(e);return(null==t?void 0:t.browserEventName)||e}function u(e,t){e.forEach((e=>a.set(e,t)))}function d(e){const t=[];for(let n=0;ne.selected)).map((e=>e.value))}}{const e=function(e){return!!e&&"INPUT"===e.tagName&&"checkbox"===e.getAttribute("type")}(t);return{value:e?!!t.checked:t.value}}}}),u(["copy","cut","paste"],{createEventArgs:e=>({type:e.type})}),u(["drag","dragend","dragenter","dragleave","dragover","dragstart","drop"],{createEventArgs:e=>{return{...h(t=e),dataTransfer:t.dataTransfer?{dropEffect:t.dataTransfer.dropEffect,effectAllowed:t.dataTransfer.effectAllowed,files:Array.from(t.dataTransfer.files).map((e=>e.name)),items:Array.from(t.dataTransfer.items).map((e=>({kind:e.kind,type:e.type}))),types:t.dataTransfer.types}:null};var t}}),u(["focus","blur","focusin","focusout"],{createEventArgs:e=>({type:e.type})}),u(["keydown","keyup","keypress"],{createEventArgs:e=>{return{key:(t=e).key,code:t.code,location:t.location,repeat:t.repeat,ctrlKey:t.ctrlKey,shiftKey:t.shiftKey,altKey:t.altKey,metaKey:t.metaKey,type:t.type};var t}}),u(["contextmenu","click","mouseover","mouseout","mousemove","mousedown","mouseup","mouseleave","mouseenter","dblclick"],{createEventArgs:e=>h(e)}),u(["error"],{createEventArgs:e=>{return{message:(t=e).message,filename:t.filename,lineno:t.lineno,colno:t.colno,type:t.type};var t}}),u(["loadstart","timeout","abort","load","loadend","progress"],{createEventArgs:e=>{return{lengthComputable:(t=e).lengthComputable,loaded:t.loaded,total:t.total,type:t.type};var t}}),u(["touchcancel","touchend","touchmove","touchenter","touchleave","touchstart"],{createEventArgs:e=>{return{detail:(t=e).detail,touches:d(t.touches),targetTouches:d(t.targetTouches),changedTouches:d(t.changedTouches),ctrlKey:t.ctrlKey,shiftKey:t.shiftKey,altKey:t.altKey,metaKey:t.metaKey,type:t.type};var t}}),u(["gotpointercapture","lostpointercapture","pointercancel","pointerdown","pointerenter","pointerleave","pointermove","pointerout","pointerover","pointerup"],{createEventArgs:e=>{return{...h(t=e),pointerId:t.pointerId,width:t.width,height:t.height,pressure:t.pressure,tiltX:t.tiltX,tiltY:t.tiltY,pointerType:t.pointerType,isPrimary:t.isPrimary};var t}}),u(["wheel","mousewheel"],{createEventArgs:e=>{return{...h(t=e),deltaX:t.deltaX,deltaY:t.deltaY,deltaZ:t.deltaZ,deltaMode:t.deltaMode};var t}}),u(["cancel","close","toggle"],{createEventArgs:()=>({})});const f=["date","datetime-local","month","time","week"],m=new Map;let p,b,v=0;const g={async add(e,t,n){if(!n)throw new Error("initialParameters must be an object, even if empty.");const r="__bl-dynamic-root:"+(++v).toString();m.set(r,e);const o=await E().invokeMethodAsync("AddRootComponent",t,r),a=new w(o,b[t]);return await a.setParameters(n),a}};class y{invoke(e){return this._callback(e)}setCallback(t){this._selfJSObjectReference||(this._selfJSObjectReference=e.createJSObjectReference(this)),this._callback=t}getJSObjectReference(){return this._selfJSObjectReference}dispose(){this._selfJSObjectReference&&e.disposeJSObjectReference(this._selfJSObjectReference)}}class w{constructor(e,t){this._jsEventCallbackWrappers=new Map,this._componentId=e;for(const e of t)"eventcallback"===e.type&&this._jsEventCallbackWrappers.set(e.name.toLowerCase(),new y)}setParameters(e){const t={},n=Object.entries(e||{}),r=n.length;for(const[e,r]of n){const n=this._jsEventCallbackWrappers.get(e.toLowerCase());n&&r?(n.setCallback(r),t[e]=n.getJSObjectReference()):t[e]=r}return E().invokeMethodAsync("SetRootComponentParameters",this._componentId,r,t)}async dispose(){if(null!==this._componentId){await E().invokeMethodAsync("RemoveRootComponent",this._componentId),this._componentId=null;for(const e of this._jsEventCallbackWrappers.values())e.dispose()}}}function E(){if(!p)throw new Error("Dynamic root components have not been enabled in this application.");return p}const S=new Map,I=[],C=new Map;function D(e,t,n){return N(e,t.eventHandlerId,(()=>A(e).invokeMethodAsync("DispatchEventAsync",t,n)))}function A(e){const t=S.get(e);if(!t)throw new Error(`No interop methods are registered for renderer ${e}`);return t}let N=(e,t,n)=>n();const k=x(["abort","blur","cancel","canplay","canplaythrough","change","close","cuechange","durationchange","emptied","ended","error","focus","load","loadeddata","loadedmetadata","loadend","loadstart","mouseenter","mouseleave","pointerenter","pointerleave","pause","play","playing","progress","ratechange","reset","scroll","seeked","seeking","stalled","submit","suspend","timeupdate","toggle","unload","volumechange","waiting","DOMNodeInsertedIntoDocument","DOMNodeRemovedFromDocument"]),R={submit:!0},T=x(["click","dblclick","mousedown","mousemove","mouseup"]);class _{constructor(e){this.browserRendererId=e,this.afterClickCallbacks=[];const t=++_.nextEventDelegatorId;this.eventsCollectionKey=`_blazorEvents_${t}`,this.eventInfoStore=new O(this.onGlobalEvent.bind(this))}setListener(e,t,n,r){const o=this.getEventHandlerInfosForElement(e,!0),a=o.getHandler(t);if(a)this.eventInfoStore.update(a.eventHandlerId,n);else{const a={element:e,eventName:t,eventHandlerId:n,renderingComponentId:r};this.eventInfoStore.add(a),o.setHandler(t,a)}}getHandler(e){return this.eventInfoStore.get(e)}removeListener(e){const t=this.eventInfoStore.remove(e);if(t){const e=t.element,n=this.getEventHandlerInfosForElement(e,!1);n&&n.removeHandler(t.eventName)}}notifyAfterClick(e){this.afterClickCallbacks.push(e),this.eventInfoStore.addGlobalListener("click")}setStopPropagation(e,t,n){this.getEventHandlerInfosForElement(e,!0).stopPropagation(t,n)}setPreventDefault(e,t,n){this.getEventHandlerInfosForElement(e,!0).preventDefault(t,n)}onGlobalEvent(e){if(!(e.target instanceof Element))return;this.dispatchGlobalEventToAllElements(e.type,e);const t=(n=e.type,i.get(n));var n;t&&t.forEach((t=>this.dispatchGlobalEventToAllElements(t,e))),"click"===e.type&&this.afterClickCallbacks.forEach((t=>t(e)))}dispatchGlobalEventToAllElements(e,t){const n=t.composedPath();let r=n.shift(),a=null,i=!1;const s=Object.prototype.hasOwnProperty.call(k,e);let l=!1;for(;r;){const h=r,f=this.getEventHandlerInfosForElement(h,!1);if(f){const n=f.getHandler(e);if(n&&(u=h,d=t.type,!((u instanceof HTMLButtonElement||u instanceof HTMLInputElement||u instanceof HTMLTextAreaElement||u instanceof HTMLSelectElement)&&Object.prototype.hasOwnProperty.call(T,d)&&u.disabled))){if(!i){const n=c(e);a=(null==n?void 0:n.createEventArgs)?n.createEventArgs(t):{},i=!0}Object.prototype.hasOwnProperty.call(R,t.type)&&t.preventDefault(),D(this.browserRendererId,{eventHandlerId:n.eventHandlerId,eventName:e,eventFieldInfo:o.fromEvent(n.renderingComponentId,t)},a)}f.stopPropagation(e)&&(l=!0),f.preventDefault(e)&&t.preventDefault()}r=s||l?void 0:n.shift()}var u,d}getEventHandlerInfosForElement(e,t){return Object.prototype.hasOwnProperty.call(e,this.eventsCollectionKey)?e[this.eventsCollectionKey]:t?e[this.eventsCollectionKey]=new L:null}}_.nextEventDelegatorId=0;class O{constructor(e){this.globalListener=e,this.infosByEventHandlerId={},this.countByEventName={},s.push(this.handleEventNameAliasAdded.bind(this))}add(e){if(this.infosByEventHandlerId[e.eventHandlerId])throw new Error(`Event ${e.eventHandlerId} is already tracked`);this.infosByEventHandlerId[e.eventHandlerId]=e,this.addGlobalListener(e.eventName)}get(e){return this.infosByEventHandlerId[e]}addGlobalListener(e){if(e=l(e),Object.prototype.hasOwnProperty.call(this.countByEventName,e))this.countByEventName[e]++;else{this.countByEventName[e]=1;const t=Object.prototype.hasOwnProperty.call(k,e);document.addEventListener(e,this.globalListener,t)}}update(e,t){if(Object.prototype.hasOwnProperty.call(this.infosByEventHandlerId,t))throw new Error(`Event ${t} is already tracked`);const n=this.infosByEventHandlerId[e];delete this.infosByEventHandlerId[e],n.eventHandlerId=t,this.infosByEventHandlerId[t]=n}remove(e){const t=this.infosByEventHandlerId[e];if(t){delete this.infosByEventHandlerId[e];const n=l(t.eventName);0==--this.countByEventName[n]&&(delete this.countByEventName[n],document.removeEventListener(n,this.globalListener))}return t}handleEventNameAliasAdded(e,t){if(Object.prototype.hasOwnProperty.call(this.countByEventName,e)){const n=this.countByEventName[e];delete this.countByEventName[e],document.removeEventListener(e,this.globalListener),this.addGlobalListener(t),this.countByEventName[t]+=n-1}}}class L{constructor(){this.handlers={},this.preventDefaultFlags=null,this.stopPropagationFlags=null}getHandler(e){return Object.prototype.hasOwnProperty.call(this.handlers,e)?this.handlers[e]:null}setHandler(e,t){this.handlers[e]=t}removeHandler(e){delete this.handlers[e]}preventDefault(e,t){return void 0!==t&&(this.preventDefaultFlags=this.preventDefaultFlags||{},this.preventDefaultFlags[e]=t),!!this.preventDefaultFlags&&this.preventDefaultFlags[e]}stopPropagation(e,t){return void 0!==t&&(this.stopPropagationFlags=this.stopPropagationFlags||{},this.stopPropagationFlags[e]=t),!!this.stopPropagationFlags&&this.stopPropagationFlags[e]}}function x(e){const t={};return e.forEach((e=>{t[e]=!0})),t}const F=Symbol(),M=Symbol();function P(e,t){if(F in e)return e;const n=[];if(e.childNodes.length>0){if(!t)throw new Error("New logical elements must start empty, or allowExistingContents must be true");e.childNodes.forEach((t=>{const r=P(t,!0);r[M]=e,n.push(r)}))}return e[F]=n,e}function B(e){const t=W(e);for(;t.length;)J(e,0)}function j(e,t){const n=document.createComment("!");return H(n,e,t),n}function H(e,t,n){const r=e;let o=e;if(F in e){const t=G(r);if(t!==e){const n=new Range;n.setStartBefore(e),n.setEndAfter(t),o=n.extractContents()}}const a=U(r);if(a){const e=W(a),t=Array.prototype.indexOf.call(e,r);e.splice(t,1),delete r[M]}const i=W(t);if(n0;)J(n,0)}const r=n;r.parentNode.removeChild(r)}function U(e){return e[M]||null}function z(e,t){return W(e)[t]}function $(e){const t=X(e);return"http://www.w3.org/2000/svg"===t.namespaceURI&&"foreignObject"!==t.tagName}function W(e){return e[F]}function K(e){const t=W(U(e));return t[Array.prototype.indexOf.call(t,e)+1]||null}function V(e,t){const n=W(e);t.forEach((e=>{e.moveRangeStart=n[e.fromSiblingIndex],e.moveRangeEnd=G(e.moveRangeStart)})),t.forEach((t=>{const r=document.createComment("marker");t.moveToBeforeMarker=r;const o=n[t.toSiblingIndex+1];o?o.parentNode.insertBefore(r,o):Y(r,e)})),t.forEach((e=>{const t=e.moveToBeforeMarker,n=t.parentNode,r=e.moveRangeStart,o=e.moveRangeEnd;let a=r;for(;a;){const e=a.nextSibling;if(n.insertBefore(a,t),a===o)break;a=e}n.removeChild(t)})),t.forEach((e=>{n[e.toSiblingIndex]=e.moveRangeStart}))}function X(e){if(e instanceof Element||e instanceof DocumentFragment)return e;if(e instanceof Comment)return e.parentNode;throw new Error("Not a valid logical element")}function Y(e,t){if(t instanceof Element||t instanceof DocumentFragment)t.appendChild(e);else{if(!(t instanceof Comment))throw new Error(`Cannot append node because the parent is not a valid logical element. Parent: ${t}`);{const n=K(t);n?n.parentNode.insertBefore(e,n):Y(e,U(t))}}}function G(e){if(e instanceof Element||e instanceof DocumentFragment)return e;const t=K(e);if(t)return t.previousSibling;{const t=U(e);return t instanceof Element||t instanceof DocumentFragment?t.lastChild:G(t)}}function q(e){return`_bl_${e}`}Symbol();const Z="__internalId";e.attachReviver(((e,t)=>t&&"object"==typeof t&&Object.prototype.hasOwnProperty.call(t,Z)&&"string"==typeof t[Z]?function(e){const t=`[${q(e)}]`;return document.querySelector(t)}(t[Z]):t));const Q="_blazorDeferredValue";function ee(e){return"select-multiple"===e.type}function te(e,t){e.value=t||""}function ne(e,t){e instanceof HTMLSelectElement?ee(e)?function(e,t){t||(t=[]);for(let n=0;n{Ce()&&function(e,t){if(0!==e.button||function(e){return e.ctrlKey||e.shiftKey||e.altKey||e.metaKey}(e))return;if(e.defaultPrevented)return;const n=function(e){const t=!window._blazorDisableComposedPath&&e.composedPath&&e.composedPath();if(t){for(let e=0;e{const t=document.createElement("script");t.textContent=e.textContent,e.getAttributeNames().forEach((n=>{t.setAttribute(n,e.getAttribute(n))})),e.parentNode.replaceChild(t,e)})),oe.content));var i;let s=0;for(;a.firstChild;)H(a.firstChild,o,s++)}applyAttribute(e,t,n,r){const o=e.frameReader,a=o.attributeName(r),i=o.attributeEventHandlerId(r);if(i){const e=he(a);return void this.eventDelegator.setListener(n,e,i,t)}const s=o.attributeValue(r);this.setOrRemoveAttributeOrProperty(n,a,s)}insertFrameRange(e,t,n,r,o,a,i){const s=r;for(let s=a;s{He(t,e)})},enableNavigationInterception:function(e){if(void 0!==me&&me!==e)throw new Error("Only one interactive runtime may enable navigation interception at a time.");me=e},setHasLocationChangingListeners:function(e,t){const n=Re.get(e);if(!n)throw new Error(`Renderer with ID '${e}' is not listening for navigation events`);n.hasLocationChangingEventListeners=t},endLocationChanging:function(e,t){_e&&e===ke&&(_e(t),_e=null)},navigateTo:function(e,t){xe(e,t,!0)},refresh:function(e){!e&&we()?Ee(location.href,!0):location.reload()},getBaseURI:()=>document.baseURI,getLocationHref:()=>location.href,scrollToElement:Le};function Le(e){const t=document.getElementById(e);return!!t&&(t.scrollIntoView(),!0)}function xe(e,t,n=!1){const r=Se(e);!t.forceLoad&&ye(r)?ze()?Fe(r,!1,t.replaceHistoryEntry,t.historyEntryState,n):Ee(r,t.replaceHistoryEntry):function(e,t){if(location.href===e){const t=e+"?";history.replaceState(null,"",t),location.replace(e)}else t?location.replace(e):location.href=e}(e,t.replaceHistoryEntry)}async function Fe(e,t,n,r=void 0,o=!1){if(Be(),function(e){const t=e.indexOf("#");return t>-1&&location.href.replace(location.hash,"")===e.substring(0,t)}(e))return void function(e,t,n){Me(e,t,n);const r=e.indexOf("#");r!==e.length-1&&Le(e.substring(r+1))}(e,n,r);const a=Ue();(o||!(null==a?void 0:a.hasLocationChangingEventListeners)||await je(e,r,t,a))&&(ge=!0,Me(e,n,r),await He(t))}function Me(e,t,n=void 0){t?history.replaceState({userState:n,_index:Ne},"",e):(Ne++,history.pushState({userState:n,_index:Ne},"",e))}function Pe(e){return new Promise((t=>{const n=Te;Te=()=>{Te=n,t()},history.go(e)}))}function Be(){_e&&(_e(!1),_e=null)}function je(e,t,n,r){return new Promise((o=>{Be(),ke++,_e=o,r.locationChanging(ke,e,t,n)}))}async function He(e,t){const n=null!=t?t:location.href;await Promise.all(Array.from(Re,(async([t,r])=>{var o,a;a=t,S.has(a)&&await r.locationChanged(n,null===(o=history.state)||void 0===o?void 0:o.userState,e)})))}async function Je(e){var t,n;Te&&ze()&&await Te(e),Ne=null!==(n=null===(t=history.state)||void 0===t?void 0:t._index)&&void 0!==n?n:0}function Ue(){const e=De();if(void 0!==e)return Re.get(e)}function ze(){return Ce()||!we()}const $e={focus:function(e,t){if(e instanceof HTMLElement)e.focus({preventScroll:t});else{if(!(e instanceof SVGElement))throw new Error("Unable to focus an invalid element.");if(!e.hasAttribute("tabindex"))throw new Error("Unable to focus an SVG element that does not have a tabindex.");e.focus({preventScroll:t})}},focusBySelector:function(e,t){const n=document.querySelector(e);n&&(n.hasAttribute("tabindex")||(n.tabIndex=-1),n.focus({preventScroll:!0}))}},We={init:function(e,t,n,r=50){const o=Ve(t);(o||document.documentElement).style.overflowAnchor="none";const a=document.createRange();h(n.parentElement)&&(t.style.display="table-row",n.style.display="table-row");const i=new IntersectionObserver((function(r){r.forEach((r=>{var o;if(!r.isIntersecting)return;a.setStartAfter(t),a.setEndBefore(n);const i=a.getBoundingClientRect().height,s=null===(o=r.rootBounds)||void 0===o?void 0:o.height;r.target===t?e.invokeMethodAsync("OnSpacerBeforeVisible",r.intersectionRect.top-r.boundingClientRect.top,i,s):r.target===n&&n.offsetHeight>0&&e.invokeMethodAsync("OnSpacerAfterVisible",r.boundingClientRect.bottom-r.intersectionRect.bottom,i,s)}))}),{root:o,rootMargin:`${r}px`});i.observe(t),i.observe(n);const s=d(t),c=d(n),{observersByDotNetObjectId:l,id:u}=Xe(e);function d(e){const t={attributes:!0},n=new MutationObserver(((n,r)=>{h(e.parentElement)&&(r.disconnect(),e.style.display="table-row",r.observe(e,t)),i.unobserve(e),i.observe(e)}));return n.observe(e,t),n}function h(e){return null!==e&&(e instanceof HTMLTableElement&&""===e.style.display||"table"===e.style.display||e instanceof HTMLTableSectionElement&&""===e.style.display||"table-row-group"===e.style.display)}l[u]={intersectionObserver:i,mutationObserverBefore:s,mutationObserverAfter:c}},dispose:function(e){const{observersByDotNetObjectId:t,id:n}=Xe(e),r=t[n];r&&(r.intersectionObserver.disconnect(),r.mutationObserverBefore.disconnect(),r.mutationObserverAfter.disconnect(),e.dispose(),delete t[n])}},Ke=Symbol();function Ve(e){return e&&e!==document.body&&e!==document.documentElement?"visible"!==getComputedStyle(e).overflowY?e:Ve(e.parentElement):null}function Xe(e){var t;const n=e._callDispatcher,r=e._id;return null!==(t=n[Ke])&&void 0!==t||(n[Ke]={}),{observersByDotNetObjectId:n[Ke],id:r}}const Ye={getAndRemoveExistingTitle:function(){var e;const t=document.head?document.head.getElementsByTagName("title"):[];if(0===t.length)return null;let n=null;for(let r=t.length-1;r>=0;r--){const o=t[r],a=o.previousSibling;a instanceof Comment&&null!==U(a)||(null===n&&(n=o.textContent),null===(e=o.parentNode)||void 0===e||e.removeChild(o))}return n}},Ge={init:function(e,t){t._blazorInputFileNextFileId=0,t.addEventListener("click",(function(){t.value=""})),t.addEventListener("change",(function(){t._blazorFilesById={};const n=Array.prototype.map.call(t.files,(function(e){const n={id:++t._blazorInputFileNextFileId,lastModified:new Date(e.lastModified).toISOString(),name:e.name,size:e.size,contentType:e.type,readPromise:void 0,arrayBuffer:void 0,blob:e};return t._blazorFilesById[n.id]=n,n}));e.invokeMethodAsync("NotifyChange",n)}))},toImageFile:async function(e,t,n,r,o){const a=qe(e,t),i=await new Promise((function(e){const t=new Image;t.onload=function(){URL.revokeObjectURL(t.src),e(t)},t.onerror=function(){t.onerror=null,URL.revokeObjectURL(t.src)},t.src=URL.createObjectURL(a.blob)})),s=await new Promise((function(e){var t;const a=Math.min(1,r/i.width),s=Math.min(1,o/i.height),c=Math.min(a,s),l=document.createElement("canvas");l.width=Math.round(i.width*c),l.height=Math.round(i.height*c),null===(t=l.getContext("2d"))||void 0===t||t.drawImage(i,0,0,l.width,l.height),l.toBlob(e,n)})),c={id:++e._blazorInputFileNextFileId,lastModified:a.lastModified,name:a.name,size:(null==s?void 0:s.size)||0,contentType:n,blob:s||a.blob};return e._blazorFilesById[c.id]=c,c},readFileData:async function(e,t){return qe(e,t).blob}};function qe(e,t){const n=e._blazorFilesById[t];if(!n)throw new Error(`There is no file with ID ${t}. The file list may have changed. See https://aka.ms/aspnet/blazor-input-file-multiple-selections.`);return n}const Ze=new Set,Qe={enableNavigationPrompt:function(e){0===Ze.size&&window.addEventListener("beforeunload",et),Ze.add(e)},disableNavigationPrompt:function(e){Ze.delete(e),0===Ze.size&&window.removeEventListener("beforeunload",et)}};function et(e){e.preventDefault(),e.returnValue=!0}const tt=new Map,nt={navigateTo:function(e,t,n=!1){xe(e,t instanceof Object?t:{forceLoad:t,replaceHistoryEntry:n})},registerCustomEventType:function(e,t){if(!t)throw new Error("The options parameter is required.");if(a.has(e))throw new Error(`The event '${e}' is already registered.`);if(t.browserEventName){const n=i.get(t.browserEventName);n?n.push(e):i.set(t.browserEventName,[e]),s.forEach((n=>n(e,t.browserEventName)))}a.set(e,t)},rootComponents:g,runtime:{},_internal:{navigationManager:Oe,domWrapper:$e,Virtualize:We,PageTitle:Ye,InputFile:Ge,NavigationLock:Qe,getJSDataStreamChunk:async function(e,t,n){return e instanceof Blob?await async function(e,t,n){const r=e.slice(t,t+n),o=await r.arrayBuffer();return new Uint8Array(o)}(e,t,n):function(e,t,n){return new Uint8Array(e.buffer,e.byteOffset+t,n)}(e,t,n)},attachWebRendererInterop:function(t,n,r,o){var a,i;if(S.has(t))throw new Error(`Interop methods are already registered for renderer ${t}`);S.set(t,n),r&&o&&Object.keys(r).length>0&&function(t,n,r){if(p)throw new Error("Dynamic root components have already been enabled.");p=t,b=n;for(const[t,o]of Object.entries(r)){const r=e.findJSFunction(t,0);for(const e of o)r(e,n[e])}}(A(t),r,o),null===(i=null===(a=C.get(t))||void 0===a?void 0:a[0])||void 0===i||i.call(a),function(e){for(const t of I)t(e)}(t)}}};window.Blazor=nt;let rt=!1;const ot="function"==typeof TextDecoder?new TextDecoder("utf-8"):null,at=ot?ot.decode.bind(ot):function(e){let t=0;const n=e.length,r=[],o=[];for(;t65535&&(o-=65536,r.push(o>>>10&1023|55296),o=56320|1023&o),r.push(o)}r.length>1024&&(o.push(String.fromCharCode.apply(null,r)),r.length=0)}return o.push(String.fromCharCode.apply(null,r)),o.join("")},it=Math.pow(2,32),st=Math.pow(2,21)-1;function ct(e,t){return e[t]|e[t+1]<<8|e[t+2]<<16|e[t+3]<<24}function lt(e,t){return e[t]+(e[t+1]<<8)+(e[t+2]<<16)+(e[t+3]<<24>>>0)}function ut(e,t){const n=lt(e,t+4);if(n>st)throw new Error(`Cannot read uint64 with high order part ${n}, because the result would exceed Number.MAX_SAFE_INTEGER.`);return n*it+lt(e,t)}class dt{constructor(e){this.batchData=e;const t=new pt(e);this.arrayRangeReader=new bt(e),this.arrayBuilderSegmentReader=new vt(e),this.diffReader=new ht(e),this.editReader=new ft(e,t),this.frameReader=new mt(e,t)}updatedComponents(){return ct(this.batchData,this.batchData.length-20)}referenceFrames(){return ct(this.batchData,this.batchData.length-16)}disposedComponentIds(){return ct(this.batchData,this.batchData.length-12)}disposedEventHandlerIds(){return ct(this.batchData,this.batchData.length-8)}updatedComponentsEntry(e,t){const n=e+4*t;return ct(this.batchData,n)}referenceFramesEntry(e,t){return e+20*t}disposedComponentIdsEntry(e,t){const n=e+4*t;return ct(this.batchData,n)}disposedEventHandlerIdsEntry(e,t){const n=e+8*t;return ut(this.batchData,n)}}class ht{constructor(e){this.batchDataUint8=e}componentId(e){return ct(this.batchDataUint8,e)}edits(e){return e+4}editsEntry(e,t){return e+16*t}}class ft{constructor(e,t){this.batchDataUint8=e,this.stringReader=t}editType(e){return ct(this.batchDataUint8,e)}siblingIndex(e){return ct(this.batchDataUint8,e+4)}newTreeIndex(e){return ct(this.batchDataUint8,e+8)}moveToSiblingIndex(e){return ct(this.batchDataUint8,e+8)}removedAttributeName(e){const t=ct(this.batchDataUint8,e+12);return this.stringReader.readString(t)}}class mt{constructor(e,t){this.batchDataUint8=e,this.stringReader=t}frameType(e){return ct(this.batchDataUint8,e)}subtreeLength(e){return ct(this.batchDataUint8,e+4)}elementReferenceCaptureId(e){const t=ct(this.batchDataUint8,e+4);return this.stringReader.readString(t)}componentId(e){return ct(this.batchDataUint8,e+8)}elementName(e){const t=ct(this.batchDataUint8,e+8);return this.stringReader.readString(t)}textContent(e){const t=ct(this.batchDataUint8,e+4);return this.stringReader.readString(t)}markupContent(e){const t=ct(this.batchDataUint8,e+4);return this.stringReader.readString(t)}attributeName(e){const t=ct(this.batchDataUint8,e+4);return this.stringReader.readString(t)}attributeValue(e){const t=ct(this.batchDataUint8,e+8);return this.stringReader.readString(t)}attributeEventHandlerId(e){return ut(this.batchDataUint8,e+12)}}class pt{constructor(e){this.batchDataUint8=e,this.stringTableStartIndex=ct(e,e.length-4)}readString(e){if(-1===e)return null;{const n=ct(this.batchDataUint8,this.stringTableStartIndex+4*e),r=function(e,t){let n=0,r=0;for(let o=0;o<4;o++){const a=e[t+o];if(n|=(127&a)<async function(e,n){const r=function(e){const t=document.baseURI;return t.endsWith("/")?`${t}${e}`:`${t}/${e}`}(n),o=await import(r);if(void 0!==o){if(e.singleRuntime){const{beforeStart:n,afterStarted:r,beforeWebAssemblyStart:i,afterWebAssemblyStarted:s,beforeServerStart:c,afterServerStarted:l}=o;let u=n;e.webRendererId===Nt.Server&&c&&(u=c),e.webRendererId===Nt.WebAssembly&&i&&(u=i);let d=r;return e.webRendererId===Nt.Server&&l&&(d=l),e.webRendererId===Nt.WebAssembly&&s&&(d=s),a(e,u,d,t)}return function(e,t,n){var o;const i=n[0],{beforeStart:s,afterStarted:c,beforeWebStart:l,afterWebStarted:u,beforeWebAssemblyStart:d,afterWebAssemblyStarted:h,beforeServerStart:f,afterServerStarted:m}=t,p=!(l||u||d||h||f||m||!s&&!c),b=p&&i.enableClassicInitializers;if(p&&!i.enableClassicInitializers)null===(o=e.logger)||void 0===o||o.log(kt.Warning,`Initializer '${r}' will be ignored because multiple runtimes are available. use 'before(web|webAssembly|server)Start' and 'after(web|webAssembly|server)Started?' instead.)`);else if(b)return a(e,s,c,n);if(function(e){e.webAssembly?e.webAssembly.initializers||(e.webAssembly.initializers={beforeStart:[],afterStarted:[]}):e.webAssembly={initializers:{beforeStart:[],afterStarted:[]}},e.circuit?e.circuit.initializers||(e.circuit.initializers={beforeStart:[],afterStarted:[]}):e.circuit={initializers:{beforeStart:[],afterStarted:[]}}}(i),d&&i.webAssembly.initializers.beforeStart.push(d),h&&i.webAssembly.initializers.afterStarted.push(h),f&&i.circuit.initializers.beforeStart.push(f),m&&i.circuit.initializers.afterStarted.push(m),u&&e.afterStartedCallbacks.push(u),l)return l(i)}(e,o,t)}function a(e,t,n,r){if(n&&e.afterStartedCallbacks.push(n),t)return t(...r)}}(this,e))))}async invokeAfterStartedCallbacks(e){const t=(n=this.webRendererId,null===(r=C.get(n))||void 0===r?void 0:r[1]);var n,r;t&&await t,await Promise.all(this.afterStartedCallbacks.map((t=>t(e))))}}let Ot,Lt=!1;async function xt(){if(Lt)throw new Error("Blazor has already started.");Lt=!0,Ot=e.attachDispatcher({beginInvokeDotNetFromJS:Et,endInvokeJSFromDotNet:St,sendByteArray:It});const t=await async function(){const e=await fetch("http://github.com/_framework/blazor.modules.json",{method:"GET",credentials:"include",cache:"no-cache"}),t=await e.json(),n=new _t;return await n.importInitializersAsync(t,[]),n}();(function(){const e={AttachToDocument:(e,t)=>{!function(e,t,n){const r="::before";let o=!1;if(e.endsWith("::after"))e=e.slice(0,-7),o=!0;else if(e.endsWith(r))throw new Error(`The '${r}' selector is not supported.`);const a=function(e){const t=m.get(e);if(t)return m.delete(e),t}(e)||document.querySelector(e);if(!a)throw new Error(`Could not find any element matching selector '${e}'.`);!function(e,t,n,r){let o=fe[e];o||(o=new le(e),fe[e]=o),o.attachRootComponentToLogicalElement(n,t,r)}(n,P(a,!0),t,o)}(t,e,Nt.WebView)},RenderBatch:(e,t)=>{try{const n=Tt(t);(function(e,t){const n=fe[e];if(!n)throw new Error(`There is no browser renderer with ID ${e}.`);const r=t.arrayRangeReader,o=t.updatedComponents(),a=r.values(o),i=r.count(o),s=t.referenceFrames(),c=r.values(s),l=t.diffReader;for(let e=0;e{yt=!0,console.error(`${e}\n${t}`),function(){const e=document.querySelector("#blazor-error-ui");e&&(e.style.display="block"),rt||(rt=!0,document.querySelectorAll("#blazor-error-ui .reload").forEach((e=>{e.onclick=function(e){location.reload(),e.preventDefault()}})),document.querySelectorAll("#blazor-error-ui .dismiss").forEach((e=>{e.onclick=function(e){const t=document.querySelector("#blazor-error-ui");t&&(t.style.display="none"),e.preventDefault()}})))}()},BeginInvokeJS:Ot.beginInvokeJSFromDotNet.bind(Ot),EndInvokeDotNet:Ot.endInvokeDotNetFromJS.bind(Ot),SendByteArrayToJS:Rt,Navigate:Oe.navigateTo,Refresh:Oe.refresh,SetHasLocationChangingListeners:e=>{Oe.setHasLocationChangingListeners(Nt.WebView,e)},EndLocationChanging:Oe.endLocationChanging};window.external.receiveMessage((t=>{const n=function(e){if(yt||!e||!e.startsWith(gt))return null;const t=e.substring(gt.length),[n,...r]=JSON.parse(t);return{messageType:n,args:r}}(t);if(n){if(!Object.prototype.hasOwnProperty.call(e,n.messageType))throw new Error(`Unsupported IPC message type '${n.messageType}'`);e[n.messageType].apply(null,n.args)}}))})(),nt._internal.receiveWebViewDotNetDataStream=Ft,Oe.enableNavigationInterception(Nt.WebView),Oe.listenForNavigationEvents(Nt.WebView,Ct,Dt),At("AttachPage",Oe.getBaseURI(),Oe.getLocationHref()),await t.invokeAfterStartedCallbacks(nt)}function Ft(e,t,n,r){!function(e,t,n,r,o){let a=tt.get(t);if(!a){const n=new ReadableStream({start(e){tt.set(t,e),a=e}});e.supplyDotNetStream(t,n)}o?(a.error(o),tt.delete(t)):0===r?(a.close(),tt.delete(t)):a.enqueue(n.length===r?n:n.subarray(0,r))}(Ot,e,t,n,r)}nt.start=xt,window.DotNet=e,document&&document.currentScript&&"false"!==document.currentScript.getAttribute("autostart")&&xt()})(); \ No newline at end of file diff --git a/src/Components/Web.JS/src/Rendering/BrowserRenderer.ts b/src/Components/Web.JS/src/Rendering/BrowserRenderer.ts index 8e4ab0da9c32..7496dd552286 100644 --- a/src/Components/Web.JS/src/Rendering/BrowserRenderer.ts +++ b/src/Components/Web.JS/src/Rendering/BrowserRenderer.ts @@ -3,7 +3,7 @@ import { RenderBatch, ArrayBuilderSegment, RenderTreeEdit, RenderTreeFrame, EditType, FrameType, ArrayValues } from './RenderBatch/RenderBatch'; import { EventDelegator } from './Events/EventDelegator'; -import { LogicalElement, PermutationListEntry, toLogicalElement, insertLogicalChild, removeLogicalChild, getLogicalParent, getLogicalChild, createAndInsertLogicalContainer, isSvgElement, permuteLogicalChildren, getClosestDomElement, emptyLogicalElement } from './LogicalElements'; +import { LogicalElement, PermutationListEntry, toLogicalElement, insertLogicalChild, removeLogicalChild, getLogicalParent, getLogicalChild, createAndInsertLogicalContainer, isSvgElement, permuteLogicalChildren, getClosestDomElement, emptyLogicalElement, getLogicalChildrenArray } from './LogicalElements'; import { applyCaptureIdToElement } from './ElementReferenceCapture'; import { attachToEventDelegator as attachNavigationManagerToEventDelegator } from '../Services/NavigationManager'; import { applyAnyDeferredValue, tryApplySpecialProperty } from './DomSpecialPropertyUtil'; @@ -41,15 +41,18 @@ export class BrowserRenderer { throw new Error(`Root component '${componentId}' could not be attached because its target element is already associated with a root component`); } + // If we want to append content to the end of the element, we create a new logical child container + // at the end of the element and treat that as the new parent. + if (appendContent) { + const indexAfterLastChild = getLogicalChildrenArray(element).length; + element = createAndInsertLogicalContainer(element, indexAfterLastChild); + } + markAsInteractiveRootComponentElement(element, true); this.attachComponentToElement(componentId, element); this.rootComponentIds.add(componentId); - // If we want to preserve existing HTML content of the root element, we don't apply the mechanism for - // clearing existing children. Rendered content will then append rather than replace the existing HTML content. - if (!appendContent) { - elementsToClearOnRootComponentRender.add(element); - } + elementsToClearOnRootComponentRender.add(element); } public updateComponent(batch: RenderBatch, componentId: number, edits: ArrayBuilderSegment, referenceFrames: ArrayValues): void { diff --git a/src/Components/test/E2ETest/Tests/HeadModificationTest.cs b/src/Components/test/E2ETest/Tests/HeadModificationTest.cs index 94bc59039040..97f601a82750 100644 --- a/src/Components/test/E2ETest/Tests/HeadModificationTest.cs +++ b/src/Components/test/E2ETest/Tests/HeadModificationTest.cs @@ -110,4 +110,17 @@ public void CanFallBackToDefaultTitle() // Assert the title is now the default Browser.Equal("Basic test app", () => Browser.Title); } + + [Fact] + public void HeadContentGetsAppendedToEndOfHead() + { + Browser.MountTestComponent(); + + // Assert that the element is the last in the + Browser.True(() => + { + var metaDescriptionElement = Browser.FindElement(By.Id("meta-description")); + return (bool)((IJavaScriptExecutor)Browser).ExecuteScript("return document.head.lastChild === arguments[0];", metaDescriptionElement); + }); + } } From 296daaddab709104f84d9af7771138b8fbe056f5 Mon Sep 17 00:00:00 2001 From: James Newton-King Date: Sat, 18 Nov 2023 00:49:43 +0800 Subject: [PATCH 025/391] Fix ambiguous route analyzer false positive with action replacement (#51880) (#52034) --- .../Mvc/DetectAmbiguousActionRoutes.cs | 57 +++- .../src/Analyzers/Mvc/MvcAnalyzer.cs | 15 +- .../Mvc/DetectAmbiguousActionRoutesTest.cs | 278 ++++++++++++++++++ 3 files changed, 342 insertions(+), 8 deletions(-) diff --git a/src/Framework/AspNetCoreAnalyzers/src/Analyzers/Mvc/DetectAmbiguousActionRoutes.cs b/src/Framework/AspNetCoreAnalyzers/src/Analyzers/Mvc/DetectAmbiguousActionRoutes.cs index 37916d9514c2..3bb454473cce 100644 --- a/src/Framework/AspNetCoreAnalyzers/src/Analyzers/Mvc/DetectAmbiguousActionRoutes.cs +++ b/src/Framework/AspNetCoreAnalyzers/src/Analyzers/Mvc/DetectAmbiguousActionRoutes.cs @@ -18,8 +18,10 @@ namespace Microsoft.AspNetCore.Analyzers.Mvc; public partial class MvcAnalyzer { - private static void DetectAmbiguousActionRoutes(SymbolAnalysisContext context, WellKnownTypes wellKnownTypes, List actionRoutes) + private static void DetectAmbiguousActionRoutes(SymbolAnalysisContext context, WellKnownTypes wellKnownTypes, RoutePatternTree? controllerRoutePattern, List actionRoutes) { + var controllerHasActionReplacement = controllerRoutePattern != null ? HasActionReplacementToken(controllerRoutePattern) : false; + // Ambiguous action route detection is conservative in what it detects to avoid false positives. // // Successfully matched action routes must: @@ -31,19 +33,45 @@ private static void DetectAmbiguousActionRoutes(SymbolAnalysisContext context, W { // Group action routes together. When multiple match in a group, then report action routes to diagnostics. var groupedByParent = actionRoutes - .GroupBy(ar => new ActionRouteGroupKey(ar.ActionSymbol, ar.RouteUsageModel.RoutePattern, ar.HttpMethods, wellKnownTypes)); + .GroupBy(ar => new ActionRouteGroupKey(ar.ActionSymbol, ar.RouteUsageModel.RoutePattern, ar.HttpMethods, controllerHasActionReplacement, wellKnownTypes)); - foreach (var ambigiousGroup in groupedByParent.Where(g => g.Count() >= 2)) + foreach (var ambiguousGroup in groupedByParent.Where(g => g.Count() >= 2)) { - foreach (var ambigiousActionRoute in ambigiousGroup) + foreach (var ambiguousActionRoute in ambiguousGroup) { context.ReportDiagnostic(Diagnostic.Create( DiagnosticDescriptors.AmbiguousActionRoute, - ambigiousActionRoute.RouteUsageModel.UsageContext.RouteToken.GetLocation(), - ambigiousActionRoute.RouteUsageModel.RoutePattern.Root.ToString())); + ambiguousActionRoute.RouteUsageModel.UsageContext.RouteToken.GetLocation(), + ambiguousActionRoute.RouteUsageModel.RoutePattern.Root.ToString())); + } + } + } + } + + private static bool HasActionReplacementToken(RoutePatternTree routePattern) + { + for (var i = 0; i < routePattern.Root.Parts.Length; i++) + { + if (routePattern.Root.Parts[i] is RoutePatternSegmentNode segment) + { + for (var j = 0; j < segment.Children.Length; j++) + { + if (segment.Children[j] is RoutePatternReplacementNode replacementNode) + { + if (!replacementNode.TextToken.IsMissing) + { + var name = replacementNode.TextToken.Value!.ToString(); + if (string.Equals(name, "action", StringComparison.OrdinalIgnoreCase)) + { + return true; + } + } + } } } } + + return false; } private readonly struct ActionRouteGroupKey : IEquatable @@ -51,9 +79,11 @@ private static void DetectAmbiguousActionRoutes(SymbolAnalysisContext context, W public IMethodSymbol ActionSymbol { get; } public RoutePatternTree RoutePattern { get; } public ImmutableArray HttpMethods { get; } + public string ActionName { get; } + public bool HasActionReplacement { get; } private readonly WellKnownTypes _wellKnownTypes; - public ActionRouteGroupKey(IMethodSymbol actionSymbol, RoutePatternTree routePattern, ImmutableArray httpMethods, WellKnownTypes wellKnownTypes) + public ActionRouteGroupKey(IMethodSymbol actionSymbol, RoutePatternTree routePattern, ImmutableArray httpMethods, bool controllerHasActionReplacement, WellKnownTypes wellKnownTypes) { Debug.Assert(!httpMethods.IsDefault); @@ -61,6 +91,18 @@ public ActionRouteGroupKey(IMethodSymbol actionSymbol, RoutePatternTree routePat RoutePattern = routePattern; HttpMethods = httpMethods; _wellKnownTypes = wellKnownTypes; + ActionName = GetActionName(ActionSymbol, _wellKnownTypes); + HasActionReplacement = controllerHasActionReplacement || HasActionReplacementToken(RoutePattern); + } + + private static string GetActionName(IMethodSymbol actionSymbol, WellKnownTypes wellKnownTypes) + { + var actionNameAttribute = actionSymbol.GetAttributes(wellKnownTypes.Get(WellKnownType.Microsoft_AspNetCore_Mvc_ActionNameAttribute), inherit: true).FirstOrDefault(); + if (actionNameAttribute != null && actionNameAttribute.ConstructorArguments.Length > 0 && actionNameAttribute.ConstructorArguments[0].Value is string name) + { + return name; + } + return actionSymbol.Name; } public override bool Equals(object obj) @@ -76,6 +118,7 @@ public bool Equals(ActionRouteGroupKey other) { return AmbiguousRoutePatternComparer.Instance.Equals(RoutePattern, other.RoutePattern) && + (!HasActionReplacement || string.Equals(ActionName, other.ActionName, StringComparison.OrdinalIgnoreCase)) && HasMatchingHttpMethods(HttpMethods, other.HttpMethods) && CanMatchActions(_wellKnownTypes, ActionSymbol, other.ActionSymbol); } diff --git a/src/Framework/AspNetCoreAnalyzers/src/Analyzers/Mvc/MvcAnalyzer.cs b/src/Framework/AspNetCoreAnalyzers/src/Analyzers/Mvc/MvcAnalyzer.cs index 88652688bb64..aadb9ffe6356 100644 --- a/src/Framework/AspNetCoreAnalyzers/src/Analyzers/Mvc/MvcAnalyzer.cs +++ b/src/Framework/AspNetCoreAnalyzers/src/Analyzers/Mvc/MvcAnalyzer.cs @@ -5,7 +5,9 @@ using System.Collections.Concurrent; using System.Collections.Generic; using System.Collections.Immutable; +using System.Linq; using System.Threading; +using Microsoft.AspNetCore.Analyzers.Infrastructure.RoutePattern; using Microsoft.AspNetCore.Analyzers.RouteEmbeddedLanguage.Infrastructure; using Microsoft.AspNetCore.App.Analyzers.Infrastructure; using Microsoft.CodeAnalysis; @@ -47,9 +49,20 @@ public override void Initialize(AnalysisContext context) actionRoutes = new List(); } + RoutePatternTree? controllerRoutePattern = null; + var controllerRouteAttribute = namedTypeSymbol.GetAttributes(wellKnownTypes.Get(WellKnownType.Microsoft_AspNetCore_Mvc_RouteAttribute), inherit: true).FirstOrDefault(); + if (controllerRouteAttribute != null) + { + var routeUsage = GetRouteUsageModel(controllerRouteAttribute, routeUsageCache, context.CancellationToken); + if (routeUsage != null) + { + controllerRoutePattern = routeUsage.RoutePattern; + } + } + PopulateActionRoutes(context, wellKnownTypes, routeUsageCache, namedTypeSymbol, actionRoutes); - DetectAmbiguousActionRoutes(context, wellKnownTypes, actionRoutes); + DetectAmbiguousActionRoutes(context, wellKnownTypes, controllerRoutePattern, actionRoutes); // Return to the pool. actionRoutes.Clear(); diff --git a/src/Framework/AspNetCoreAnalyzers/test/Mvc/DetectAmbiguousActionRoutesTest.cs b/src/Framework/AspNetCoreAnalyzers/test/Mvc/DetectAmbiguousActionRoutesTest.cs index 9cadb599f879..285ff95c36ee 100644 --- a/src/Framework/AspNetCoreAnalyzers/test/Mvc/DetectAmbiguousActionRoutesTest.cs +++ b/src/Framework/AspNetCoreAnalyzers/test/Mvc/DetectAmbiguousActionRoutesTest.cs @@ -40,6 +40,284 @@ static void Main(string[] args) await VerifyCS.VerifyAnalyzerAsync(source, expectedDiagnostics); } + [Fact] + public async Task ActionReplacementToken_DifferentActionNames_NoDiagnostics() + { + // Arrange + var source = @" +using Microsoft.AspNetCore.Builder; +using Microsoft.AspNetCore.Mvc; +public class WeatherForecastController : ControllerBase +{ + [Route(""[action]"")] + public object Get() => new object(); + + [Route(""[action]"")] + public object Get1() => new object(); +} +internal class Program +{ + static void Main(string[] args) + { + } +} +"; + + // Act & Assert + await VerifyCS.VerifyAnalyzerAsync(source); + } + + [Fact] + public async Task ActionReplacementToken_SameActionName_HasDiagnostics() + { + // Arrange + var source = @" +using Microsoft.AspNetCore.Builder; +using Microsoft.AspNetCore.Mvc; +public class WeatherForecastController : ControllerBase +{ + [Route({|#0:""[action]""|})] + public object Get() => new object(); + + [Route({|#1:""[action]""|})] + public object Get(int i) => new object(); +} +internal class Program +{ + static void Main(string[] args) + { + } +} +"; + + var expectedDiagnostics = new[] { + new DiagnosticResult(DiagnosticDescriptors.AmbiguousActionRoute).WithArguments("[action]").WithLocation(0), + new DiagnosticResult(DiagnosticDescriptors.AmbiguousActionRoute).WithArguments("[action]").WithLocation(1) + }; + + // Act & Assert + await VerifyCS.VerifyAnalyzerAsync(source, expectedDiagnostics); + } + + [Fact] + public async Task ActionReplacementToken_ActionNameAttribute_HasDiagnostics() + { + // Arrange + var source = @" +using Microsoft.AspNetCore.Builder; +using Microsoft.AspNetCore.Mvc; +public class WeatherForecastController : ControllerBase +{ + [Route({|#0:""[action]""|})] + public object Get() => new object(); + + [Route({|#1:""[action]""|})] + [ActionName(""get"")] + public object Get1(int i) => new object(); +} +internal class Program +{ + static void Main(string[] args) + { + } +} +"; + + var expectedDiagnostics = new[] { + new DiagnosticResult(DiagnosticDescriptors.AmbiguousActionRoute).WithArguments("[action]").WithLocation(0), + new DiagnosticResult(DiagnosticDescriptors.AmbiguousActionRoute).WithArguments("[action]").WithLocation(1) + }; + + // Act & Assert + await VerifyCS.VerifyAnalyzerAsync(source, expectedDiagnostics); + } + + [Fact] + public async Task ActionReplacementToken_ActionNameAttributeNullValue_NoDiagnostics() + { + // Arrange + var source = @" +using Microsoft.AspNetCore.Builder; +using Microsoft.AspNetCore.Mvc; +public class WeatherForecastController : ControllerBase +{ + [Route({|#0:""[action]""|})] + public object Get() => new object(); + + [Route({|#1:""[action]""|})] + [ActionName(null)] + public object Get1(int i) => new object(); +} +internal class Program +{ + static void Main(string[] args) + { + } +} +"; + + // Act & Assert + await VerifyCS.VerifyAnalyzerAsync(source); + } + + [Fact] + public async Task ActionReplacementToken_OnController_NoDiagnostics() + { + // Arrange + var source = @" +using Microsoft.AspNetCore.Builder; +using Microsoft.AspNetCore.Mvc; +[Route(""[controller]/[action]"")] +public class WeatherForecastController : ControllerBase +{ + [Route(""{i}"")] + public object Get(int i) => new object(); + + [Route(""{i}"")] + public object Get1(int i) => new object(); +} +internal class Program +{ + static void Main(string[] args) + { + } +} +"; + + // Act & Assert + await VerifyCS.VerifyAnalyzerAsync(source); + } + + [Fact] + public async Task ActionReplacementToken_OnBaseController_NoDiagnostics() + { + // Arrange + var source = @" +using Microsoft.AspNetCore.Builder; +using Microsoft.AspNetCore.Mvc; +[Route(""[controller]/[action]"")] +public class MyControllerBase : ControllerBase +{ +} +public class WeatherForecastController : MyControllerBase +{ + [Route(""{i}"")] + public object Get(int i) => new object(); + + [Route(""{i}"")] + public object Get1(int i) => new object(); +} +internal class Program +{ + static void Main(string[] args) + { + } +} +"; + + // Act & Assert + await VerifyCS.VerifyAnalyzerAsync(source); + } + + [Fact] + public async Task ActionReplacementToken_OnBaseControllerButOverridden_HasDiagnostics() + { + // Arrange + var source = @" +using Microsoft.AspNetCore.Builder; +using Microsoft.AspNetCore.Mvc; +[Route(""[controller]/[action]"")] +public class MyControllerBase : ControllerBase +{ +} +[Route(""api"")] +public class WeatherForecastController : MyControllerBase +{ + [Route({|#0:""{i}""|})] + public object Get(int i) => new object(); + + [Route({|#1:""{i}""|})] + public object Get1(int i) => new object(); +} +internal class Program +{ + static void Main(string[] args) + { + } +} +"; + + var expectedDiagnostics = new[] { + new DiagnosticResult(DiagnosticDescriptors.AmbiguousActionRoute).WithArguments("{i}").WithLocation(0), + new DiagnosticResult(DiagnosticDescriptors.AmbiguousActionRoute).WithArguments("{i}").WithLocation(1) + }; + + // Act & Assert + await VerifyCS.VerifyAnalyzerAsync(source, expectedDiagnostics); + } + + [Fact] + public async Task ActionReplacementToken_OnController_ActionName_NoDiagnostics() + { + // Arrange + var source = @" +using Microsoft.AspNetCore.Builder; +using Microsoft.AspNetCore.Mvc; +[Route(""[controller]/[action]"")] +public class WeatherForecastController : ControllerBase +{ + [Route(""{i}"")] + public object Get(int i) => new object(); + + [Route(""{s}"")] + [ActionName(name: ""getWithString"")] + public object Get(string s) => new object(); +} +internal class Program +{ + static void Main(string[] args) + { + } +} +"; + + // Act & Assert + await VerifyCS.VerifyAnalyzerAsync(source); + } + + [Fact] + public async Task ActionReplacementToken_OnController_ActionNameOnBase_NoDiagnostics() + { + // Arrange + var source = @" +using Microsoft.AspNetCore.Builder; +using Microsoft.AspNetCore.Mvc; +public abstract class MyControllerBase : ControllerBase +{ + [ActionName(name: ""getWithString"")] + public abstract object Get(string s); +} +[Route(""[controller]/[action]"")] +public class WeatherForecastController : MyControllerBase +{ + [Route(""{i}"")] + public object Get(int i) => new object(); + + [Route(""{s}"")] + public override object Get(string s) => new object(); +} +internal class Program +{ + static void Main(string[] args) + { + } +} +"; + + // Act & Assert + await VerifyCS.VerifyAnalyzerAsync(source); + } + [Fact] public async Task MixedRoutes_DifferentAction_HasDiagnostics() { From 526417ee2be43995df9103ea3b2738ef766cd766 Mon Sep 17 00:00:00 2001 From: James Newton-King Date: Sat, 18 Nov 2023 00:50:00 +0800 Subject: [PATCH 026/391] Fix ambiguous route analyzer false positive with switch (#51881) (#52035) --- .../RouteHandlers/DetectAmbiguousRoutes.cs | 13 +-- .../DetectAmbiguousMappedRoutesTest.cs | 97 +++++++++++++++++++ 2 files changed, 104 insertions(+), 6 deletions(-) diff --git a/src/Framework/AspNetCoreAnalyzers/src/Analyzers/RouteHandlers/DetectAmbiguousRoutes.cs b/src/Framework/AspNetCoreAnalyzers/src/Analyzers/RouteHandlers/DetectAmbiguousRoutes.cs index bbab616e7f7e..18ccea7deacc 100644 --- a/src/Framework/AspNetCoreAnalyzers/src/Analyzers/RouteHandlers/DetectAmbiguousRoutes.cs +++ b/src/Framework/AspNetCoreAnalyzers/src/Analyzers/RouteHandlers/DetectAmbiguousRoutes.cs @@ -31,11 +31,11 @@ private static void DetectAmbiguousRoutes(in OperationBlockAnalysisContext conte .Where(u => u.ResolvedOperation != null && !u.MapOperation.RouteUsageModel.UsageContext.HttpMethods.IsDefault) .GroupBy(u => new MapOperationGroupKey(u.MapOperation.Builder, u.ResolvedOperation!, u.MapOperation.RouteUsageModel.RoutePattern, u.MapOperation.RouteUsageModel.UsageContext.HttpMethods)); - foreach (var ambigiousGroup in groupedByParent.Where(g => g.Count() >= 2)) + foreach (var ambiguousGroup in groupedByParent.Where(g => g.Count() >= 2)) { - foreach (var ambigiousMapOperation in ambigiousGroup) + foreach (var ambiguousMapOperation in ambiguousGroup) { - var model = ambigiousMapOperation.MapOperation.RouteUsageModel; + var model = ambiguousMapOperation.MapOperation.RouteUsageModel; context.ReportDiagnostic(Diagnostic.Create( DiagnosticDescriptors.AmbiguousRouteHandlerRoute, @@ -67,15 +67,16 @@ private static void DetectAmbiguousRoutes(in OperationBlockAnalysisContext conte while (current != null) { - if (current.Parent is IBlockOperation blockOperation) + if (current.Parent is IBlockOperation or ISwitchCaseOperation) { - return blockOperation; + return current.Parent; } else if (current.Parent is IConditionalOperation or ICoalesceOperation or IAssignmentOperation or IArgumentOperation or - IInvocationOperation) + IInvocationOperation or + ISwitchExpressionArmOperation) { return current; } diff --git a/src/Framework/AspNetCoreAnalyzers/test/RouteHandlers/DetectAmbiguousMappedRoutesTest.cs b/src/Framework/AspNetCoreAnalyzers/test/RouteHandlers/DetectAmbiguousMappedRoutesTest.cs index 79e45d504b5c..e6e76831f757 100644 --- a/src/Framework/AspNetCoreAnalyzers/test/RouteHandlers/DetectAmbiguousMappedRoutesTest.cs +++ b/src/Framework/AspNetCoreAnalyzers/test/RouteHandlers/DetectAmbiguousMappedRoutesTest.cs @@ -97,6 +97,79 @@ void Hello() { } await VerifyCS.VerifyAnalyzerAsync(source); } + [Fact] + public async Task DuplicateRoutes_SwitchStatement_NoDiagnostics() + { + // Arrange + var source = @" +using System; +using Microsoft.AspNetCore.Builder; +var app = WebApplication.Create(); +switch (Random.Shared.Next()) +{ + case 0: + app.MapGet(""/"", () => Hello()); + return; + case 1: + app.MapGet(""/"", () => Hello()); + return; +} +void Hello() { } +"; + + // Act & Assert + await VerifyCS.VerifyAnalyzerAsync(source); + } + + [Fact] + public async Task DuplicateRoutes_InsideSwitchStatement_HasDiagnostics() + { + // Arrange + var source = @" +using System; +using Microsoft.AspNetCore.Builder; +var app = WebApplication.Create(); +switch (Random.Shared.Next()) +{ + case 0: + app.MapGet({|#0:""/""|}, () => Hello()); + app.MapGet({|#1:""/""|}, () => Hello()); + return; + +} +void Hello() { } +"; + + var expectedDiagnostics = new[] { + new DiagnosticResult(DiagnosticDescriptors.AmbiguousRouteHandlerRoute).WithArguments("/").WithLocation(0), + new DiagnosticResult(DiagnosticDescriptors.AmbiguousRouteHandlerRoute).WithArguments("/").WithLocation(1) + }; + + // Act & Assert + await VerifyCS.VerifyAnalyzerAsync(source, expectedDiagnostics); + } + + [Fact] + public async Task DuplicateRoutes_SwitchExpression_NoDiagnostics() + { + // Arrange + var source = @" +using System; +using Microsoft.AspNetCore.Builder; +var app = WebApplication.Create(); +_ = Random.Shared.Next() switch +{ + 0 => app.MapGet(""/"", () => Hello()), + 1 => app.MapGet(""/"", () => Hello()), + _ => throw new Exception() +}; +void Hello() { } +"; + + // Act & Assert + await VerifyCS.VerifyAnalyzerAsync(source); + } + [Fact] public async Task DuplicateRoutes_NullCoalescing_NoDiagnostics() { @@ -166,6 +239,30 @@ void Hello() { } await VerifyCS.VerifyAnalyzerAsync(source); } + [Fact] + public async Task DuplicateMapGetRoutes_DuplicatesInsideConditional_NoDiagnostics() + { + // Arrange + var source = @" +using Microsoft.AspNetCore.Builder; +var app = WebApplication.Create(); +if (true) +{ + app.MapGet({|#0:""/""|}, () => Hello()); + app.MapGet({|#1:""/""|}, () => Hello()); +} +void Hello() { } +"; + + var expectedDiagnostics = new[] { + new DiagnosticResult(DiagnosticDescriptors.AmbiguousRouteHandlerRoute).WithArguments("/").WithLocation(0), + new DiagnosticResult(DiagnosticDescriptors.AmbiguousRouteHandlerRoute).WithArguments("/").WithLocation(1) + }; + + // Act & Assert + await VerifyCS.VerifyAnalyzerAsync(source, expectedDiagnostics); + } + [Fact] public async Task DuplicateRoutes_UnknownUsageOfEndConventionBuilderExtension_NoDiagnostics() { From d507a1110e81ceacbeea40a97ce8f103da6bee7a Mon Sep 17 00:00:00 2001 From: DotNet Bot Date: Fri, 17 Nov 2023 23:40:45 +0000 Subject: [PATCH 027/391] [internal/release/8.0] Update dependencies from dnceng/internal/dotnet-runtime --- NuGet.config | 2 ++ eng/Version.Details.xml | 40 ++++++++++++++++++++-------------------- eng/Versions.props | 20 ++++++++++---------- 3 files changed, 32 insertions(+), 30 deletions(-) diff --git a/NuGet.config b/NuGet.config index 1c2f27eb90ce..b224ed19e9df 100644 --- a/NuGet.config +++ b/NuGet.config @@ -8,6 +8,7 @@ + @@ -30,6 +31,7 @@ + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 14ec886656bf..6d796ca6df28 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -53,9 +53,9 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime 5535e31a712343a63f5d7d796cd874e563e5ac14 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 5535e31a712343a63f5d7d796cd874e563e5ac14 + 9736c9e876f2bd8409184ce0d239432d9ef4880e https://dev.azure.com/dnceng/internal/_git/dotnet-runtime @@ -177,17 +177,17 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime 5535e31a712343a63f5d7d796cd874e563e5ac14 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 5535e31a712343a63f5d7d796cd874e563e5ac14 + 9736c9e876f2bd8409184ce0d239432d9ef4880e https://dev.azure.com/dnceng/internal/_git/dotnet-runtime 5535e31a712343a63f5d7d796cd874e563e5ac14 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 5535e31a712343a63f5d7d796cd874e563e5ac14 + 9736c9e876f2bd8409184ce0d239432d9ef4880e https://github.com/dotnet/source-build-externals @@ -275,17 +275,17 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime 5535e31a712343a63f5d7d796cd874e563e5ac14 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 5535e31a712343a63f5d7d796cd874e563e5ac14 + 9736c9e876f2bd8409184ce0d239432d9ef4880e - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 5535e31a712343a63f5d7d796cd874e563e5ac14 + 9736c9e876f2bd8409184ce0d239432d9ef4880e - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 5535e31a712343a63f5d7d796cd874e563e5ac14 + 9736c9e876f2bd8409184ce0d239432d9ef4880e https://dev.azure.com/dnceng/internal/_git/dotnet-runtime @@ -316,22 +316,22 @@ Win-x64 is used here because we have picked an arbitrary runtime identifier to flow the version of the latest NETCore.App runtime. All Runtime.$rid packages should have the same version. --> - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 5535e31a712343a63f5d7d796cd874e563e5ac14 + 9736c9e876f2bd8409184ce0d239432d9ef4880e - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 5535e31a712343a63f5d7d796cd874e563e5ac14 + 9736c9e876f2bd8409184ce0d239432d9ef4880e - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 5535e31a712343a63f5d7d796cd874e563e5ac14 + 9736c9e876f2bd8409184ce0d239432d9ef4880e - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 5535e31a712343a63f5d7d796cd874e563e5ac14 + 9736c9e876f2bd8409184ce0d239432d9ef4880e https://github.com/dotnet/xdt diff --git a/eng/Versions.props b/eng/Versions.props index a64a8953c48d..56ee27a9cbfb 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -66,16 +66,16 @@ 8.0.0 - 8.0.0 - 8.0.0 - 8.0.0 - 8.0.0 - 8.0.0 - 8.0.0-rtm.23531.3 + 8.0.1 + 8.0.1 + 8.0.1 + 8.0.1 + 8.0.1 + 8.0.1-servicing.23567.5 8.0.0 8.0.0 8.0.0 - 8.0.0 + 8.0.1 8.0.0 8.0.0 8.0.0 @@ -106,9 +106,9 @@ 8.0.0 8.0.0 8.0.0 - 8.0.0 + 8.0.1 8.0.0 - 8.0.0-rtm.23531.3 + 8.0.1-servicing.23567.5 8.0.0 8.0.0 8.0.0 @@ -128,7 +128,7 @@ 8.0.0 8.0.0 8.0.0 - 8.0.0-rtm.23531.3 + 8.0.1-servicing.23567.5 8.0.0-rtm.23531.3 8.0.0 From 9883767a166f54214c9aa9e91d8892e581ca2dae Mon Sep 17 00:00:00 2001 From: DotNet Bot Date: Sat, 18 Nov 2023 01:29:35 +0000 Subject: [PATCH 028/391] Merged PR 35315: [internal/release/8.0] Update dependencies from dnceng/internal/dotnet-efcore This pull request updates the following dependencies [marker]: <> (Begin:e179a2a7-bc5d-4498-2467-08dbd53ba9ce) ## From https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - **Subscription**: e179a2a7-bc5d-4498-2467-08dbd53ba9ce - **Build**: 20231117.7 - **Date Produced**: November 17, 2023 11:57:10 PM UTC - **Commit**: b98a43b80ff78c58fb0eb627415aa6ff964a4d78 - **Branch**: refs/heads/internal/release/8.0 [DependencyUpdate]: <> (Begin) - **Updates**: - **dotnet-ef**: [from 8.0.0 to 8.0.1][2] - **Microsoft.EntityFrameworkCore**: [from 8.0.0 to 8.0.1][2] - **Microsoft.EntityFrameworkCore.Design**: [from 8.0.0 to 8.0.1][2] - **Microsoft.EntityFrameworkCore.InMemory**: [from 8.0.0 to 8.0.1][2] - **Microsoft.EntityFrameworkCore.Relational**: [from 8.0.0 to 8.0.1][2] - **Microsoft.EntityFrameworkCore.Sqlite**: [from 8.0.0 to 8.0.1][2] - **Microsoft.EntityFrameworkCore.SqlServer**: [from 8.0.0 to 8.0.1][2] - **Microsoft.EntityFrameworkCore.Tools**: [from 8.0.0 to 8.0.1][2] [2]: https://dev.azure.com/dnceng/internal/_git/dotnet-efcore/branches?baseVersion=GCe017dc125b&targetVersion=GCb98a43b80f&_a=files [DependencyUpdate]: <> (End) [marker]: <> (End:e179a2a7-bc5d-4498-2467-08dbd53ba9ce) --- NuGet.config | 2 ++ eng/Version.Details.xml | 32 ++++++++++++++++---------------- eng/Versions.props | 16 ++++++++-------- 3 files changed, 26 insertions(+), 24 deletions(-) diff --git a/NuGet.config b/NuGet.config index b224ed19e9df..be139305e843 100644 --- a/NuGet.config +++ b/NuGet.config @@ -6,6 +6,7 @@ + @@ -29,6 +30,7 @@ + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 6d796ca6df28..547308f28233 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -9,37 +9,37 @@ --> - + https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - e017dc125bef2f604f85befd8ff27544a5a67c38 + b98a43b80ff78c58fb0eb627415aa6ff964a4d78 - + https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - e017dc125bef2f604f85befd8ff27544a5a67c38 + b98a43b80ff78c58fb0eb627415aa6ff964a4d78 - + https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - e017dc125bef2f604f85befd8ff27544a5a67c38 + b98a43b80ff78c58fb0eb627415aa6ff964a4d78 - + https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - e017dc125bef2f604f85befd8ff27544a5a67c38 + b98a43b80ff78c58fb0eb627415aa6ff964a4d78 - + https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - e017dc125bef2f604f85befd8ff27544a5a67c38 + b98a43b80ff78c58fb0eb627415aa6ff964a4d78 - + https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - e017dc125bef2f604f85befd8ff27544a5a67c38 + b98a43b80ff78c58fb0eb627415aa6ff964a4d78 - + https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - e017dc125bef2f604f85befd8ff27544a5a67c38 + b98a43b80ff78c58fb0eb627415aa6ff964a4d78 - + https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - e017dc125bef2f604f85befd8ff27544a5a67c38 + b98a43b80ff78c58fb0eb627415aa6ff964a4d78 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime diff --git a/eng/Versions.props b/eng/Versions.props index 56ee27a9cbfb..c6e7c8e04298 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -142,14 +142,14 @@ 8.1.0-preview.23565.2 8.1.0-preview.23565.2 - 8.0.0 - 8.0.0 - 8.0.0 - 8.0.0 - 8.0.0 - 8.0.0 - 8.0.0 - 8.0.0 + 8.0.1 + 8.0.1 + 8.0.1 + 8.0.1 + 8.0.1 + 8.0.1 + 8.0.1 + 8.0.1 4.8.0-3.23518.7 4.8.0-3.23518.7 From 7cd557f45b76b0b6a9e3d1037614c20985cf2168 Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" <42748379+dotnet-maestro[bot]@users.noreply.github.com> Date: Sun, 19 Nov 2023 15:28:12 +0000 Subject: [PATCH 029/391] Update dependencies from https://github.com/dotnet/extensions build 20231118.1 (#52194) [release/8.0] Update dependencies from dotnet/extensions --- eng/Version.Details.xml | 8 ++++---- eng/Versions.props | 4 ++-- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 14ec886656bf..8bb18d78d15f 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -397,13 +397,13 @@ https://github.com/dotnet/arcade 0aaeafef60933f87b0b50350313bb2fd77defb5d - + https://github.com/dotnet/extensions - 0bf528b889cb1195e9a123d6794801fbc7b961e1 + 0daa893bc100f5aebfde28f086e65b846133cf00 - + https://github.com/dotnet/extensions - 0bf528b889cb1195e9a123d6794801fbc7b961e1 + 0daa893bc100f5aebfde28f086e65b846133cf00 https://github.com/nuget/nuget.client diff --git a/eng/Versions.props b/eng/Versions.props index a64a8953c48d..52886c0f8cf4 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -139,8 +139,8 @@ 8.0.0 8.0.0 - 8.1.0-preview.23565.2 - 8.1.0-preview.23565.2 + 8.1.0-preview.23568.1 + 8.1.0-preview.23568.1 8.0.0 8.0.0 From 07f4f46f7a51151bc15def0bd628d4af4ea9d634 Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" <42748379+dotnet-maestro[bot]@users.noreply.github.com> Date: Mon, 20 Nov 2023 15:06:41 +0000 Subject: [PATCH 030/391] Update dependencies from https://github.com/dotnet/extensions build 20231119.1 (#52211) [release/8.0] Update dependencies from dotnet/extensions --- eng/Version.Details.xml | 8 ++++---- eng/Versions.props | 4 ++-- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 8bb18d78d15f..2ab9af0829e4 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -397,13 +397,13 @@ https://github.com/dotnet/arcade 0aaeafef60933f87b0b50350313bb2fd77defb5d - + https://github.com/dotnet/extensions - 0daa893bc100f5aebfde28f086e65b846133cf00 + f34d120d2654057a31dc96d7f86dc42629044472 - + https://github.com/dotnet/extensions - 0daa893bc100f5aebfde28f086e65b846133cf00 + f34d120d2654057a31dc96d7f86dc42629044472 https://github.com/nuget/nuget.client diff --git a/eng/Versions.props b/eng/Versions.props index 52886c0f8cf4..b28f80d4ac8d 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -139,8 +139,8 @@ 8.0.0 8.0.0 - 8.1.0-preview.23568.1 - 8.1.0-preview.23568.1 + 8.1.0-preview.23569.1 + 8.1.0-preview.23569.1 8.0.0 8.0.0 From d8acc61aa53bbc5ed18749677d2afa6bd38fcc31 Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" <42748379+dotnet-maestro[bot]@users.noreply.github.com> Date: Mon, 20 Nov 2023 15:52:31 +0000 Subject: [PATCH 031/391] [release/8.0] Update dependencies from dotnet/source-build-externals (#52139) [release/8.0] Update dependencies from dotnet/source-build-externals --- eng/Version.Details.xml | 4 ++-- eng/Versions.props | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 2ab9af0829e4..8cc8ceab4987 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -189,9 +189,9 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime 5535e31a712343a63f5d7d796cd874e563e5ac14 - + https://github.com/dotnet/source-build-externals - 3dc05150cf234f76f6936dcb2853d31a0da1f60e + e844aa02a05b90d8cbe499676ec6ee0f19ec4980 diff --git a/eng/Versions.props b/eng/Versions.props index b28f80d4ac8d..a454517bf90e 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -165,7 +165,7 @@ 8.0.0-beta.23564.4 8.0.0-beta.23564.4 - 8.0.0-alpha.1.23518.1 + 8.0.0-alpha.1.23570.1 8.0.0-alpha.1.23565.1 From 84383f20d4eb7d0875756fabd4fe2bf79c8c709c Mon Sep 17 00:00:00 2001 From: DotNet Bot Date: Mon, 20 Nov 2023 16:21:04 +0000 Subject: [PATCH 032/391] [internal/release/8.0] Update dependencies from dnceng/internal/dotnet-runtime --- NuGet.config | 4 ++-- eng/Version.Details.xml | 26 +++++++++++++------------- eng/Versions.props | 6 +++--- 3 files changed, 18 insertions(+), 18 deletions(-) diff --git a/NuGet.config b/NuGet.config index be139305e843..eed1cce47ba9 100644 --- a/NuGet.config +++ b/NuGet.config @@ -9,7 +9,7 @@ - + @@ -33,7 +33,7 @@ - + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 0012e4b538da..610bbba89420 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -55,7 +55,7 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 9736c9e876f2bd8409184ce0d239432d9ef4880e + 2e7d8110d489b55521dde67a3b6a2194fcef90db https://dev.azure.com/dnceng/internal/_git/dotnet-runtime @@ -179,15 +179,15 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 9736c9e876f2bd8409184ce0d239432d9ef4880e + 2e7d8110d489b55521dde67a3b6a2194fcef90db https://dev.azure.com/dnceng/internal/_git/dotnet-runtime 5535e31a712343a63f5d7d796cd874e563e5ac14 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 9736c9e876f2bd8409184ce0d239432d9ef4880e + 2e7d8110d489b55521dde67a3b6a2194fcef90db https://github.com/dotnet/source-build-externals @@ -277,15 +277,15 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 9736c9e876f2bd8409184ce0d239432d9ef4880e + 2e7d8110d489b55521dde67a3b6a2194fcef90db https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 9736c9e876f2bd8409184ce0d239432d9ef4880e + 2e7d8110d489b55521dde67a3b6a2194fcef90db https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 9736c9e876f2bd8409184ce0d239432d9ef4880e + 2e7d8110d489b55521dde67a3b6a2194fcef90db https://dev.azure.com/dnceng/internal/_git/dotnet-runtime @@ -318,20 +318,20 @@ --> https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 9736c9e876f2bd8409184ce0d239432d9ef4880e + 2e7d8110d489b55521dde67a3b6a2194fcef90db - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 9736c9e876f2bd8409184ce0d239432d9ef4880e + 2e7d8110d489b55521dde67a3b6a2194fcef90db https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 9736c9e876f2bd8409184ce0d239432d9ef4880e + 2e7d8110d489b55521dde67a3b6a2194fcef90db - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 9736c9e876f2bd8409184ce0d239432d9ef4880e + 2e7d8110d489b55521dde67a3b6a2194fcef90db https://github.com/dotnet/xdt diff --git a/eng/Versions.props b/eng/Versions.props index 7da5cfb49a57..e67db75ecf2c 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -71,7 +71,7 @@ 8.0.1 8.0.1 8.0.1 - 8.0.1-servicing.23567.5 + 8.0.1-servicing.23570.3 8.0.0 8.0.0 8.0.0 @@ -108,7 +108,7 @@ 8.0.0 8.0.1 8.0.0 - 8.0.1-servicing.23567.5 + 8.0.1-servicing.23570.3 8.0.0 8.0.0 8.0.0 @@ -128,7 +128,7 @@ 8.0.0 8.0.0 8.0.0 - 8.0.1-servicing.23567.5 + 8.0.1-servicing.23570.3 8.0.0-rtm.23531.3 8.0.0 From 19e8f5e7897734284f92e0a96e8a658d5db5caf5 Mon Sep 17 00:00:00 2001 From: DotNet Bot Date: Mon, 20 Nov 2023 17:56:29 +0000 Subject: [PATCH 033/391] [internal/release/8.0] Update dependencies from dnceng/internal/dotnet-efcore --- NuGet.config | 4 ++-- eng/Version.Details.xml | 16 ++++++++-------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/NuGet.config b/NuGet.config index eed1cce47ba9..162a965c8fbc 100644 --- a/NuGet.config +++ b/NuGet.config @@ -6,7 +6,7 @@ - + @@ -30,7 +30,7 @@ - + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 610bbba89420..3fb664be9fb9 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -11,35 +11,35 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - b98a43b80ff78c58fb0eb627415aa6ff964a4d78 + d140c93be8937746adaf59b594b432491858e5ec https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - b98a43b80ff78c58fb0eb627415aa6ff964a4d78 + d140c93be8937746adaf59b594b432491858e5ec https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - b98a43b80ff78c58fb0eb627415aa6ff964a4d78 + d140c93be8937746adaf59b594b432491858e5ec https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - b98a43b80ff78c58fb0eb627415aa6ff964a4d78 + d140c93be8937746adaf59b594b432491858e5ec https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - b98a43b80ff78c58fb0eb627415aa6ff964a4d78 + d140c93be8937746adaf59b594b432491858e5ec https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - b98a43b80ff78c58fb0eb627415aa6ff964a4d78 + d140c93be8937746adaf59b594b432491858e5ec https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - b98a43b80ff78c58fb0eb627415aa6ff964a4d78 + d140c93be8937746adaf59b594b432491858e5ec https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - b98a43b80ff78c58fb0eb627415aa6ff964a4d78 + d140c93be8937746adaf59b594b432491858e5ec https://dev.azure.com/dnceng/internal/_git/dotnet-runtime From 6f3114fd9c67c64ce1d35ddbdc8450fa465e216d Mon Sep 17 00:00:00 2001 From: DotNet Bot Date: Tue, 21 Nov 2023 10:12:42 +0000 Subject: [PATCH 034/391] [internal/release/8.0] Update dependencies from dnceng/internal/dotnet-runtime dnceng/internal/dotnet-efcore --- NuGet.config | 8 ++++---- eng/Version.Details.xml | 42 ++++++++++++++++++++--------------------- eng/Versions.props | 6 +++--- 3 files changed, 28 insertions(+), 28 deletions(-) diff --git a/NuGet.config b/NuGet.config index 162a965c8fbc..feb139cd01dd 100644 --- a/NuGet.config +++ b/NuGet.config @@ -6,10 +6,10 @@ - + - + @@ -30,10 +30,10 @@ - + - + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 3fb664be9fb9..84b61277087e 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -11,35 +11,35 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - d140c93be8937746adaf59b594b432491858e5ec + d10efd625ca7cad72ec6b81b3dd8295f94ef127a https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - d140c93be8937746adaf59b594b432491858e5ec + d10efd625ca7cad72ec6b81b3dd8295f94ef127a https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - d140c93be8937746adaf59b594b432491858e5ec + d10efd625ca7cad72ec6b81b3dd8295f94ef127a https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - d140c93be8937746adaf59b594b432491858e5ec + d10efd625ca7cad72ec6b81b3dd8295f94ef127a https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - d140c93be8937746adaf59b594b432491858e5ec + d10efd625ca7cad72ec6b81b3dd8295f94ef127a https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - d140c93be8937746adaf59b594b432491858e5ec + d10efd625ca7cad72ec6b81b3dd8295f94ef127a https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - d140c93be8937746adaf59b594b432491858e5ec + d10efd625ca7cad72ec6b81b3dd8295f94ef127a https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - d140c93be8937746adaf59b594b432491858e5ec + d10efd625ca7cad72ec6b81b3dd8295f94ef127a https://dev.azure.com/dnceng/internal/_git/dotnet-runtime @@ -55,7 +55,7 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 2e7d8110d489b55521dde67a3b6a2194fcef90db + f83afe4ed0000ee202b2528bc5803a94130a0f4c https://dev.azure.com/dnceng/internal/_git/dotnet-runtime @@ -179,15 +179,15 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 2e7d8110d489b55521dde67a3b6a2194fcef90db + f83afe4ed0000ee202b2528bc5803a94130a0f4c https://dev.azure.com/dnceng/internal/_git/dotnet-runtime 5535e31a712343a63f5d7d796cd874e563e5ac14 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 2e7d8110d489b55521dde67a3b6a2194fcef90db + f83afe4ed0000ee202b2528bc5803a94130a0f4c https://github.com/dotnet/source-build-externals @@ -277,15 +277,15 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 2e7d8110d489b55521dde67a3b6a2194fcef90db + f83afe4ed0000ee202b2528bc5803a94130a0f4c https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 2e7d8110d489b55521dde67a3b6a2194fcef90db + f83afe4ed0000ee202b2528bc5803a94130a0f4c https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 2e7d8110d489b55521dde67a3b6a2194fcef90db + f83afe4ed0000ee202b2528bc5803a94130a0f4c https://dev.azure.com/dnceng/internal/_git/dotnet-runtime @@ -318,20 +318,20 @@ --> https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 2e7d8110d489b55521dde67a3b6a2194fcef90db + f83afe4ed0000ee202b2528bc5803a94130a0f4c - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 2e7d8110d489b55521dde67a3b6a2194fcef90db + f83afe4ed0000ee202b2528bc5803a94130a0f4c https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 2e7d8110d489b55521dde67a3b6a2194fcef90db + f83afe4ed0000ee202b2528bc5803a94130a0f4c - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 2e7d8110d489b55521dde67a3b6a2194fcef90db + f83afe4ed0000ee202b2528bc5803a94130a0f4c https://github.com/dotnet/xdt diff --git a/eng/Versions.props b/eng/Versions.props index e67db75ecf2c..6452ad6d069a 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -71,7 +71,7 @@ 8.0.1 8.0.1 8.0.1 - 8.0.1-servicing.23570.3 + 8.0.1-servicing.23570.18 8.0.0 8.0.0 8.0.0 @@ -108,7 +108,7 @@ 8.0.0 8.0.1 8.0.0 - 8.0.1-servicing.23570.3 + 8.0.1-servicing.23570.18 8.0.0 8.0.0 8.0.0 @@ -128,7 +128,7 @@ 8.0.0 8.0.0 8.0.0 - 8.0.1-servicing.23570.3 + 8.0.1-servicing.23570.18 8.0.0-rtm.23531.3 8.0.0 From c0e37472624ed90997ebbe8d7b56e3524c5c0a5a Mon Sep 17 00:00:00 2001 From: Surayya Huseyn Zada <114938397+surayya-MS@users.noreply.github.com> Date: Tue, 21 Nov 2023 19:29:21 +0100 Subject: [PATCH 035/391] [release/8.0] Fix "Blazor enhanced form handling doesn't honor button formaction attribute" (#52220) # [release 8.0] Fix "Blazor enhanced form handling doesn't honor button formaction attribute" Manual backport of https://github.com/dotnet/aspnetcore/pull/51895 ## Description This PR fixes Blazor enhanced form honoring submit button's `formaction` attribute ```html
``` Workaround is to remove `data-enhance` attribute. Fixes #51734 ## Customer Impact Without this change customers will have bad experience using enhanced form that has a button with `formaction` attribute. The attribute will not be honored. ## Regression? - [ ] Yes - [x] No [If yes, specify the version the behavior has regressed from] ## Risk - [ ] High - [ ] Medium - [x] Low This is a minor change. There are unit and e2e tests for this change. ## Verification - [x] Manual (required) - [x] Automated ## Packaging changes reviewed? - [ ] Yes - [ ] No - [x] N/A ---- ## When servicing release/2.1 - [ ] Make necessary changes in eng/PatchConfig.props --- src/Components/Web.JS/dist/Release/blazor.web.js | 2 +- .../Web.JS/src/Services/NavigationEnhancement.ts | 16 +++++++++++----- .../FormWithParentBindingContextTest.cs | 11 +++++++++++ .../RazorComponentEndpointsStartup.cs | 2 ++ .../Forms/FormSubmitButtonWithFormaction.razor | 6 ++++++ 5 files changed, 31 insertions(+), 6 deletions(-) create mode 100644 src/Components/test/testassets/Components.TestServer/RazorComponents/Pages/Forms/FormSubmitButtonWithFormaction.razor diff --git a/src/Components/Web.JS/dist/Release/blazor.web.js b/src/Components/Web.JS/dist/Release/blazor.web.js index 71d85f7aad38..1de4a4b532ce 100644 --- a/src/Components/Web.JS/dist/Release/blazor.web.js +++ b/src/Components/Web.JS/dist/Release/blazor.web.js @@ -1 +1 @@ -(()=>{var e={778:()=>{},77:()=>{},203:()=>{},200:()=>{},628:()=>{},321:()=>{}},t={};function n(o){var r=t[o];if(void 0!==r)return r.exports;var i=t[o]={exports:{}};return e[o](i,i.exports,n),i.exports}n.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),(()=>{"use strict";var e,t,o;!function(e){const t=[],n="__jsObjectId",o="__dotNetObject",r="__byte[]",i="__dotNetStream",s="__jsStreamReferenceLength";let a,c;class l{constructor(e){this._jsObject=e,this._cachedFunctions=new Map}findFunction(e){const t=this._cachedFunctions.get(e);if(t)return t;let n,o=this._jsObject;if(e.split(".").forEach((t=>{if(!(t in o))throw new Error(`Could not find '${e}' ('${t}' was undefined).`);n=o,o=o[t]})),o instanceof Function)return o=o.bind(n),this._cachedFunctions.set(e,o),o;throw new Error(`The value '${e}' is not a function.`)}getWrappedObject(){return this._jsObject}}const h={0:new l(window)};h[0]._cachedFunctions.set("import",(e=>("string"==typeof e&&e.startsWith("./")&&(e=new URL(e.substr(2),document.baseURI).toString()),import(e))));let d,u=1;function p(e){t.push(e)}function f(e){if(e&&"object"==typeof e){h[u]=new l(e);const t={[n]:u};return u++,t}throw new Error(`Cannot create a JSObjectReference from the value '${e}'.`)}function g(e){let t=-1;if(e instanceof ArrayBuffer&&(e=new Uint8Array(e)),e instanceof Blob)t=e.size;else{if(!(e.buffer instanceof ArrayBuffer))throw new Error("Supplied value is not a typed array or blob.");if(void 0===e.byteLength)throw new Error(`Cannot create a JSStreamReference from the value '${e}' as it doesn't have a byteLength.`);t=e.byteLength}const o={[s]:t};try{const t=f(e);o[n]=t[n]}catch(t){throw new Error(`Cannot create a JSStreamReference from the value '${e}'.`)}return o}function m(e,n){c=e;const o=n?JSON.parse(n,((e,n)=>t.reduce(((t,n)=>n(e,t)),n))):null;return c=void 0,o}function v(){if(void 0===a)throw new Error("No call dispatcher has been set.");if(null===a)throw new Error("There are multiple .NET runtimes present, so a default dispatcher could not be resolved. Use DotNetObject to invoke .NET instance methods.");return a}e.attachDispatcher=function(e){const t=new y(e);return void 0===a?a=t:a&&(a=null),t},e.attachReviver=p,e.invokeMethod=function(e,t,...n){return v().invokeDotNetStaticMethod(e,t,...n)},e.invokeMethodAsync=function(e,t,...n){return v().invokeDotNetStaticMethodAsync(e,t,...n)},e.createJSObjectReference=f,e.createJSStreamReference=g,e.disposeJSObjectReference=function(e){const t=e&&e[n];"number"==typeof t&&_(t)},function(e){e[e.Default=0]="Default",e[e.JSObjectReference=1]="JSObjectReference",e[e.JSStreamReference=2]="JSStreamReference",e[e.JSVoidResult=3]="JSVoidResult"}(d=e.JSCallResultType||(e.JSCallResultType={}));class y{constructor(e){this._dotNetCallDispatcher=e,this._byteArraysToBeRevived=new Map,this._pendingDotNetToJSStreams=new Map,this._pendingAsyncCalls={},this._nextAsyncCallId=1}getDotNetCallDispatcher(){return this._dotNetCallDispatcher}invokeJSFromDotNet(e,t,n,o){const r=m(this,t),i=I(b(e,o)(...r||[]),n);return null==i?null:T(this,i)}beginInvokeJSFromDotNet(e,t,n,o,r){const i=new Promise((e=>{const o=m(this,n);e(b(t,r)(...o||[]))}));e&&i.then((t=>T(this,[e,!0,I(t,o)]))).then((t=>this._dotNetCallDispatcher.endInvokeJSFromDotNet(e,!0,t)),(t=>this._dotNetCallDispatcher.endInvokeJSFromDotNet(e,!1,JSON.stringify([e,!1,w(t)]))))}endInvokeDotNetFromJS(e,t,n){const o=t?m(this,n):new Error(n);this.completePendingCall(parseInt(e,10),t,o)}invokeDotNetStaticMethod(e,t,...n){return this.invokeDotNetMethod(e,t,null,n)}invokeDotNetStaticMethodAsync(e,t,...n){return this.invokeDotNetMethodAsync(e,t,null,n)}invokeDotNetMethod(e,t,n,o){if(this._dotNetCallDispatcher.invokeDotNetFromJS){const r=T(this,o),i=this._dotNetCallDispatcher.invokeDotNetFromJS(e,t,n,r);return i?m(this,i):null}throw new Error("The current dispatcher does not support synchronous calls from JS to .NET. Use invokeDotNetMethodAsync instead.")}invokeDotNetMethodAsync(e,t,n,o){if(e&&n)throw new Error(`For instance method calls, assemblyName should be null. Received '${e}'.`);const r=this._nextAsyncCallId++,i=new Promise(((e,t)=>{this._pendingAsyncCalls[r]={resolve:e,reject:t}}));try{const i=T(this,o);this._dotNetCallDispatcher.beginInvokeDotNetFromJS(r,e,t,n,i)}catch(e){this.completePendingCall(r,!1,e)}return i}receiveByteArray(e,t){this._byteArraysToBeRevived.set(e,t)}processByteArray(e){const t=this._byteArraysToBeRevived.get(e);return t?(this._byteArraysToBeRevived.delete(e),t):null}supplyDotNetStream(e,t){if(this._pendingDotNetToJSStreams.has(e)){const n=this._pendingDotNetToJSStreams.get(e);this._pendingDotNetToJSStreams.delete(e),n.resolve(t)}else{const n=new E;n.resolve(t),this._pendingDotNetToJSStreams.set(e,n)}}getDotNetStreamPromise(e){let t;if(this._pendingDotNetToJSStreams.has(e))t=this._pendingDotNetToJSStreams.get(e).streamPromise,this._pendingDotNetToJSStreams.delete(e);else{const n=new E;this._pendingDotNetToJSStreams.set(e,n),t=n.streamPromise}return t}completePendingCall(e,t,n){if(!this._pendingAsyncCalls.hasOwnProperty(e))throw new Error(`There is no pending async call with ID ${e}.`);const o=this._pendingAsyncCalls[e];delete this._pendingAsyncCalls[e],t?o.resolve(n):o.reject(n)}}function w(e){return e instanceof Error?`${e.message}\n${e.stack}`:e?e.toString():"null"}function b(e,t){const n=h[t];if(n)return n.findFunction(e);throw new Error(`JS object instance with ID ${t} does not exist (has it been disposed?).`)}function _(e){delete h[e]}e.findJSFunction=b,e.disposeJSObjectReferenceById=_;class S{constructor(e,t){this._id=e,this._callDispatcher=t}invokeMethod(e,...t){return this._callDispatcher.invokeDotNetMethod(null,e,this._id,t)}invokeMethodAsync(e,...t){return this._callDispatcher.invokeDotNetMethodAsync(null,e,this._id,t)}dispose(){this._callDispatcher.invokeDotNetMethodAsync(null,"__Dispose",this._id,null).catch((e=>console.error(e)))}serializeAsArg(){return{[o]:this._id}}}e.DotNetObject=S,p((function(e,t){if(t&&"object"==typeof t){if(t.hasOwnProperty(o))return new S(t[o],c);if(t.hasOwnProperty(n)){const e=t[n],o=h[e];if(o)return o.getWrappedObject();throw new Error(`JS object instance with Id '${e}' does not exist. It may have been disposed.`)}if(t.hasOwnProperty(r)){const e=t[r],n=c.processByteArray(e);if(void 0===n)throw new Error(`Byte array index '${e}' does not exist.`);return n}if(t.hasOwnProperty(i)){const e=t[i],n=c.getDotNetStreamPromise(e);return new C(n)}}return t}));class C{constructor(e){this._streamPromise=e}stream(){return this._streamPromise}async arrayBuffer(){return new Response(await this.stream()).arrayBuffer()}}class E{constructor(){this.streamPromise=new Promise(((e,t)=>{this.resolve=e,this.reject=t}))}}function I(e,t){switch(t){case d.Default:return e;case d.JSObjectReference:return f(e);case d.JSStreamReference:return g(e);case d.JSVoidResult:return null;default:throw new Error(`Invalid JS call result type '${t}'.`)}}let k=0;function T(e,t){k=0,c=e;const n=JSON.stringify(t,R);return c=void 0,n}function R(e,t){if(t instanceof S)return t.serializeAsArg();if(t instanceof Uint8Array){c.getDotNetCallDispatcher().sendByteArray(k,t);const e={[r]:k};return k++,e}return t}}(e||(e={})),function(e){e[e.prependFrame=1]="prependFrame",e[e.removeFrame=2]="removeFrame",e[e.setAttribute=3]="setAttribute",e[e.removeAttribute=4]="removeAttribute",e[e.updateText=5]="updateText",e[e.stepIn=6]="stepIn",e[e.stepOut=7]="stepOut",e[e.updateMarkup=8]="updateMarkup",e[e.permutationListEntry=9]="permutationListEntry",e[e.permutationListEnd=10]="permutationListEnd"}(t||(t={})),function(e){e[e.element=1]="element",e[e.text=2]="text",e[e.attribute=3]="attribute",e[e.component=4]="component",e[e.region=5]="region",e[e.elementReferenceCapture=6]="elementReferenceCapture",e[e.markup=8]="markup",e[e.namedEvent=10]="namedEvent"}(o||(o={}));class r{constructor(e,t){this.componentId=e,this.fieldValue=t}static fromEvent(e,t){const n=t.target;if(n instanceof Element){const t=function(e){return e instanceof HTMLInputElement?e.type&&"checkbox"===e.type.toLowerCase()?{value:e.checked}:{value:e.value}:e instanceof HTMLSelectElement||e instanceof HTMLTextAreaElement?{value:e.value}:null}(n);if(t)return new r(e,t.value)}return null}}const i=new Map,s=new Map,a=[];function c(e){return i.get(e)}function l(e){const t=i.get(e);return(null==t?void 0:t.browserEventName)||e}function h(e,t){e.forEach((e=>i.set(e,t)))}function d(e){const t=[];for(let n=0;ne.selected)).map((e=>e.value))}}{const e=function(e){return!!e&&"INPUT"===e.tagName&&"checkbox"===e.getAttribute("type")}(t);return{value:e?!!t.checked:t.value}}}}),h(["copy","cut","paste"],{createEventArgs:e=>({type:e.type})}),h(["drag","dragend","dragenter","dragleave","dragover","dragstart","drop"],{createEventArgs:e=>{return{...u(t=e),dataTransfer:t.dataTransfer?{dropEffect:t.dataTransfer.dropEffect,effectAllowed:t.dataTransfer.effectAllowed,files:Array.from(t.dataTransfer.files).map((e=>e.name)),items:Array.from(t.dataTransfer.items).map((e=>({kind:e.kind,type:e.type}))),types:t.dataTransfer.types}:null};var t}}),h(["focus","blur","focusin","focusout"],{createEventArgs:e=>({type:e.type})}),h(["keydown","keyup","keypress"],{createEventArgs:e=>{return{key:(t=e).key,code:t.code,location:t.location,repeat:t.repeat,ctrlKey:t.ctrlKey,shiftKey:t.shiftKey,altKey:t.altKey,metaKey:t.metaKey,type:t.type};var t}}),h(["contextmenu","click","mouseover","mouseout","mousemove","mousedown","mouseup","mouseleave","mouseenter","dblclick"],{createEventArgs:e=>u(e)}),h(["error"],{createEventArgs:e=>{return{message:(t=e).message,filename:t.filename,lineno:t.lineno,colno:t.colno,type:t.type};var t}}),h(["loadstart","timeout","abort","load","loadend","progress"],{createEventArgs:e=>{return{lengthComputable:(t=e).lengthComputable,loaded:t.loaded,total:t.total,type:t.type};var t}}),h(["touchcancel","touchend","touchmove","touchenter","touchleave","touchstart"],{createEventArgs:e=>{return{detail:(t=e).detail,touches:d(t.touches),targetTouches:d(t.targetTouches),changedTouches:d(t.changedTouches),ctrlKey:t.ctrlKey,shiftKey:t.shiftKey,altKey:t.altKey,metaKey:t.metaKey,type:t.type};var t}}),h(["gotpointercapture","lostpointercapture","pointercancel","pointerdown","pointerenter","pointerleave","pointermove","pointerout","pointerover","pointerup"],{createEventArgs:e=>{return{...u(t=e),pointerId:t.pointerId,width:t.width,height:t.height,pressure:t.pressure,tiltX:t.tiltX,tiltY:t.tiltY,pointerType:t.pointerType,isPrimary:t.isPrimary};var t}}),h(["wheel","mousewheel"],{createEventArgs:e=>{return{...u(t=e),deltaX:t.deltaX,deltaY:t.deltaY,deltaZ:t.deltaZ,deltaMode:t.deltaMode};var t}}),h(["cancel","close","toggle"],{createEventArgs:()=>({})});const p=["date","datetime-local","month","time","week"],f=new Map;let g,m,v=0;const y={async add(e,t,n){if(!n)throw new Error("initialParameters must be an object, even if empty.");const o="__bl-dynamic-root:"+(++v).toString();f.set(o,e);const r=await S().invokeMethodAsync("AddRootComponent",t,o),i=new _(r,m[t]);return await i.setParameters(n),i}};function w(e){const t=f.get(e);if(t)return f.delete(e),t}class b{invoke(e){return this._callback(e)}setCallback(t){this._selfJSObjectReference||(this._selfJSObjectReference=e.createJSObjectReference(this)),this._callback=t}getJSObjectReference(){return this._selfJSObjectReference}dispose(){this._selfJSObjectReference&&e.disposeJSObjectReference(this._selfJSObjectReference)}}class _{constructor(e,t){this._jsEventCallbackWrappers=new Map,this._componentId=e;for(const e of t)"eventcallback"===e.type&&this._jsEventCallbackWrappers.set(e.name.toLowerCase(),new b)}setParameters(e){const t={},n=Object.entries(e||{}),o=n.length;for(const[e,o]of n){const n=this._jsEventCallbackWrappers.get(e.toLowerCase());n&&o?(n.setCallback(o),t[e]=n.getJSObjectReference()):t[e]=o}return S().invokeMethodAsync("SetRootComponentParameters",this._componentId,o,t)}async dispose(){if(null!==this._componentId){await S().invokeMethodAsync("RemoveRootComponent",this._componentId),this._componentId=null;for(const e of this._jsEventCallbackWrappers.values())e.dispose()}}}function S(){if(!g)throw new Error("Dynamic root components have not been enabled in this application.");return g}const C=new Map,E=[],I=new Map;function k(t,n,o,r){var i,s;if(C.has(t))throw new Error(`Interop methods are already registered for renderer ${t}`);C.set(t,n),o&&r&&Object.keys(o).length>0&&function(t,n,o){if(g)throw new Error("Dynamic root components have already been enabled.");g=t,m=n;for(const[t,r]of Object.entries(o)){const o=e.findJSFunction(t,0);for(const e of r)o(e,n[e])}}(D(t),o,r),null===(s=null===(i=I.get(t))||void 0===i?void 0:i[0])||void 0===s||s.call(i),function(e){for(const t of E)t(e)}(t)}function T(e){return C.has(e)}function R(e,t,n){return A(e,t.eventHandlerId,(()=>D(e).invokeMethodAsync("DispatchEventAsync",t,n)))}function D(e){const t=C.get(e);if(!t)throw new Error(`No interop methods are registered for renderer ${e}`);return t}let A=(e,t,n)=>n();const x=B(["abort","blur","cancel","canplay","canplaythrough","change","close","cuechange","durationchange","emptied","ended","error","focus","load","loadeddata","loadedmetadata","loadend","loadstart","mouseenter","mouseleave","pointerenter","pointerleave","pause","play","playing","progress","ratechange","reset","scroll","seeked","seeking","stalled","submit","suspend","timeupdate","toggle","unload","volumechange","waiting","DOMNodeInsertedIntoDocument","DOMNodeRemovedFromDocument"]),N={submit:!0},P=B(["click","dblclick","mousedown","mousemove","mouseup"]);class M{constructor(e){this.browserRendererId=e,this.afterClickCallbacks=[];const t=++M.nextEventDelegatorId;this.eventsCollectionKey=`_blazorEvents_${t}`,this.eventInfoStore=new U(this.onGlobalEvent.bind(this))}setListener(e,t,n,o){const r=this.getEventHandlerInfosForElement(e,!0),i=r.getHandler(t);if(i)this.eventInfoStore.update(i.eventHandlerId,n);else{const i={element:e,eventName:t,eventHandlerId:n,renderingComponentId:o};this.eventInfoStore.add(i),r.setHandler(t,i)}}getHandler(e){return this.eventInfoStore.get(e)}removeListener(e){const t=this.eventInfoStore.remove(e);if(t){const e=t.element,n=this.getEventHandlerInfosForElement(e,!1);n&&n.removeHandler(t.eventName)}}notifyAfterClick(e){this.afterClickCallbacks.push(e),this.eventInfoStore.addGlobalListener("click")}setStopPropagation(e,t,n){this.getEventHandlerInfosForElement(e,!0).stopPropagation(t,n)}setPreventDefault(e,t,n){this.getEventHandlerInfosForElement(e,!0).preventDefault(t,n)}onGlobalEvent(e){if(!(e.target instanceof Element))return;this.dispatchGlobalEventToAllElements(e.type,e);const t=(n=e.type,s.get(n));var n;t&&t.forEach((t=>this.dispatchGlobalEventToAllElements(t,e))),"click"===e.type&&this.afterClickCallbacks.forEach((t=>t(e)))}dispatchGlobalEventToAllElements(e,t){const n=t.composedPath();let o=n.shift(),i=null,s=!1;const a=Object.prototype.hasOwnProperty.call(x,e);let l=!1;for(;o;){const u=o,p=this.getEventHandlerInfosForElement(u,!1);if(p){const n=p.getHandler(e);if(n&&(h=u,d=t.type,!((h instanceof HTMLButtonElement||h instanceof HTMLInputElement||h instanceof HTMLTextAreaElement||h instanceof HTMLSelectElement)&&Object.prototype.hasOwnProperty.call(P,d)&&h.disabled))){if(!s){const n=c(e);i=(null==n?void 0:n.createEventArgs)?n.createEventArgs(t):{},s=!0}Object.prototype.hasOwnProperty.call(N,t.type)&&t.preventDefault(),R(this.browserRendererId,{eventHandlerId:n.eventHandlerId,eventName:e,eventFieldInfo:r.fromEvent(n.renderingComponentId,t)},i)}p.stopPropagation(e)&&(l=!0),p.preventDefault(e)&&t.preventDefault()}o=a||l?void 0:n.shift()}var h,d}getEventHandlerInfosForElement(e,t){return Object.prototype.hasOwnProperty.call(e,this.eventsCollectionKey)?e[this.eventsCollectionKey]:t?e[this.eventsCollectionKey]=new L:null}}M.nextEventDelegatorId=0;class U{constructor(e){this.globalListener=e,this.infosByEventHandlerId={},this.countByEventName={},a.push(this.handleEventNameAliasAdded.bind(this))}add(e){if(this.infosByEventHandlerId[e.eventHandlerId])throw new Error(`Event ${e.eventHandlerId} is already tracked`);this.infosByEventHandlerId[e.eventHandlerId]=e,this.addGlobalListener(e.eventName)}get(e){return this.infosByEventHandlerId[e]}addGlobalListener(e){if(e=l(e),Object.prototype.hasOwnProperty.call(this.countByEventName,e))this.countByEventName[e]++;else{this.countByEventName[e]=1;const t=Object.prototype.hasOwnProperty.call(x,e);document.addEventListener(e,this.globalListener,t)}}update(e,t){if(Object.prototype.hasOwnProperty.call(this.infosByEventHandlerId,t))throw new Error(`Event ${t} is already tracked`);const n=this.infosByEventHandlerId[e];delete this.infosByEventHandlerId[e],n.eventHandlerId=t,this.infosByEventHandlerId[t]=n}remove(e){const t=this.infosByEventHandlerId[e];if(t){delete this.infosByEventHandlerId[e];const n=l(t.eventName);0==--this.countByEventName[n]&&(delete this.countByEventName[n],document.removeEventListener(n,this.globalListener))}return t}handleEventNameAliasAdded(e,t){if(Object.prototype.hasOwnProperty.call(this.countByEventName,e)){const n=this.countByEventName[e];delete this.countByEventName[e],document.removeEventListener(e,this.globalListener),this.addGlobalListener(t),this.countByEventName[t]+=n-1}}}class L{constructor(){this.handlers={},this.preventDefaultFlags=null,this.stopPropagationFlags=null}getHandler(e){return Object.prototype.hasOwnProperty.call(this.handlers,e)?this.handlers[e]:null}setHandler(e,t){this.handlers[e]=t}removeHandler(e){delete this.handlers[e]}preventDefault(e,t){return void 0!==t&&(this.preventDefaultFlags=this.preventDefaultFlags||{},this.preventDefaultFlags[e]=t),!!this.preventDefaultFlags&&this.preventDefaultFlags[e]}stopPropagation(e,t){return void 0!==t&&(this.stopPropagationFlags=this.stopPropagationFlags||{},this.stopPropagationFlags[e]=t),!!this.stopPropagationFlags&&this.stopPropagationFlags[e]}}function B(e){const t={};return e.forEach((e=>{t[e]=!0})),t}const O=Symbol(),F=Symbol(),$=Symbol();function H(e){const{start:t,end:n}=e,o=t[$];if(o){if(o!==e)throw new Error("The start component comment was already associated with another component descriptor.");return t}const r=t.parentNode;if(!r)throw new Error(`Comment not connected to the DOM ${t.textContent}`);const i=W(r,!0),s=Y(i);t[F]=i,t[$]=e;const a=W(t);if(n){const e=Y(a),o=Array.prototype.indexOf.call(s,a)+1;let r=null;for(;r!==n;){const n=s.splice(o,1)[0];if(!n)throw new Error("Could not find the end component comment in the parent logical node list");n[F]=t,e.push(n),r=n}}return a}function W(e,t){if(O in e)return e;const n=[];if(e.childNodes.length>0){if(!t)throw new Error("New logical elements must start empty, or allowExistingContents must be true");e.childNodes.forEach((t=>{const o=W(t,!0);o[F]=e,n.push(o)}))}return e[O]=n,e}function j(e){const t=Y(e);for(;t.length;)J(e,0)}function z(e,t){const n=document.createComment("!");return q(n,e,t),n}function q(e,t,n){const o=e;let r=e;if(Z(e)){const t=oe(o);if(t!==e){const n=new Range;n.setStartBefore(e),n.setEndAfter(t),r=n.extractContents()}}const i=K(o);if(i){const e=Y(i),t=Array.prototype.indexOf.call(e,o);e.splice(t,1),delete o[F]}const s=Y(t);if(n0;)J(n,0)}const o=n;o.parentNode.removeChild(o)}function K(e){return e[F]||null}function V(e,t){return Y(e)[t]}function X(e){return e[$]||null}function G(e){const t=te(e);return"http://www.w3.org/2000/svg"===t.namespaceURI&&"foreignObject"!==t.tagName}function Y(e){return e[O]}function Q(e){const t=Y(K(e));return t[Array.prototype.indexOf.call(t,e)+1]||null}function Z(e){return O in e}function ee(e,t){const n=Y(e);t.forEach((e=>{e.moveRangeStart=n[e.fromSiblingIndex],e.moveRangeEnd=oe(e.moveRangeStart)})),t.forEach((t=>{const o=document.createComment("marker");t.moveToBeforeMarker=o;const r=n[t.toSiblingIndex+1];r?r.parentNode.insertBefore(o,r):ne(o,e)})),t.forEach((e=>{const t=e.moveToBeforeMarker,n=t.parentNode,o=e.moveRangeStart,r=e.moveRangeEnd;let i=o;for(;i;){const e=i.nextSibling;if(n.insertBefore(i,t),i===r)break;i=e}n.removeChild(t)})),t.forEach((e=>{n[e.toSiblingIndex]=e.moveRangeStart}))}function te(e){if(e instanceof Element||e instanceof DocumentFragment)return e;if(e instanceof Comment)return e.parentNode;throw new Error("Not a valid logical element")}function ne(e,t){if(t instanceof Element||t instanceof DocumentFragment)t.appendChild(e);else{if(!(t instanceof Comment))throw new Error(`Cannot append node because the parent is not a valid logical element. Parent: ${t}`);{const n=Q(t);n?n.parentNode.insertBefore(e,n):ne(e,K(t))}}}function oe(e){if(e instanceof Element||e instanceof DocumentFragment)return e;const t=Q(e);if(t)return t.previousSibling;{const t=K(e);return t instanceof Element||t instanceof DocumentFragment?t.lastChild:oe(t)}}function re(e){return`_bl_${e}`}const ie="__internalId";e.attachReviver(((e,t)=>t&&"object"==typeof t&&Object.prototype.hasOwnProperty.call(t,ie)&&"string"==typeof t[ie]?function(e){const t=`[${re(e)}]`;return document.querySelector(t)}(t[ie]):t));const se="_blazorDeferredValue";function ae(e){e instanceof HTMLOptionElement?de(e):se in e&&he(e,e[se])}function ce(e){return"select-multiple"===e.type}function le(e,t){e.value=t||""}function he(e,t){e instanceof HTMLSelectElement?ce(e)?function(e,t){t||(t=[]);for(let n=0;n{Oe()&&Ne(e,(e=>{Xe(e,!0,!1)}))}))}getRootComponentCount(){return this.rootComponentIds.size}attachRootComponentToLogicalElement(e,t,n){if(we(t))throw new Error(`Root component '${e}' could not be attached because its target element is already associated with a root component`);n&&(t=z(t,Y(t).length)),ye(t,!0),this.attachComponentToElement(e,t),this.rootComponentIds.add(e),fe.add(t)}updateComponent(e,t,n,o){var r;const i=this.childComponentLocations[t];if(!i)throw new Error(`No element is currently associated with component ${t}`);fe.delete(i)&&(j(i),i instanceof Comment&&(i.textContent="!"));const s=null===(r=te(i))||void 0===r?void 0:r.getRootNode(),a=s&&s.activeElement;this.applyEdits(e,t,i,0,n,o),a instanceof HTMLElement&&s&&s.activeElement!==a&&a.focus()}disposeComponent(e){if(this.rootComponentIds.delete(e)){const t=this.childComponentLocations[e];ye(t,!1),!0===t[me]?fe.add(t):j(t)}delete this.childComponentLocations[e]}disposeEventHandler(e){this.eventDelegator.removeListener(e)}attachComponentToElement(e,t){this.childComponentLocations[e]=t}applyEdits(e,n,o,r,i,s){let a,c=0,l=r;const h=e.arrayBuilderSegmentReader,d=e.editReader,u=e.frameReader,p=h.values(i),f=h.offset(i),g=f+h.count(i);for(let i=f;i{const t=document.createElement("script");t.textContent=e.textContent,e.getAttributeNames().forEach((n=>{t.setAttribute(n,e.getAttribute(n))})),e.parentNode.replaceChild(t,e)})),ue.content));var s;let a=0;for(;i.firstChild;)q(i.firstChild,r,a++)}applyAttribute(e,t,n,o){const r=e.frameReader,i=r.attributeName(o),s=r.attributeEventHandlerId(o);if(s){const e=Se(i);return void this.eventDelegator.setListener(n,e,s,t)}const a=r.attributeValue(o);this.setOrRemoveAttributeOrProperty(n,i,a)}insertFrameRange(e,t,n,o,r,i,s){const a=o;for(let a=i;a{et(t,e)})},enableNavigationInterception:function(e){if(void 0!==Ee&&Ee!==e)throw new Error("Only one interactive runtime may enable navigation interception at a time.");Ee=e},setHasLocationChangingListeners:function(e,t){const n=je.get(e);if(!n)throw new Error(`Renderer with ID '${e}' is not listening for navigation events`);n.hasLocationChangingEventListeners=t},endLocationChanging:function(e,t){qe&&e===We&&(qe(t),qe=null)},navigateTo:function(e,t){Ve(e,t,!0)},refresh:function(e){!e&&Me()?Ue(location.href,!0):location.reload()},getBaseURI:()=>document.baseURI,getLocationHref:()=>location.href,scrollToElement:Ke};function Ke(e){const t=document.getElementById(e);return!!t&&(t.scrollIntoView(),!0)}function Ve(e,t,n=!1){const o=Le(e);!t.forceLoad&&Pe(o)?ot()?Xe(o,!1,t.replaceHistoryEntry,t.historyEntryState,n):Ue(o,t.replaceHistoryEntry):function(e,t){if(location.href===e){const t=e+"?";history.replaceState(null,"",t),location.replace(e)}else t?location.replace(e):location.href=e}(e,t.replaceHistoryEntry)}async function Xe(e,t,n,o=void 0,r=!1){if(Qe(),function(e){const t=e.indexOf("#");return t>-1&&location.href.replace(location.hash,"")===e.substring(0,t)}(e))return void function(e,t,n){Ge(e,t,n);const o=e.indexOf("#");o!==e.length-1&&Ke(e.substring(o+1))}(e,n,o);const i=nt();(r||!(null==i?void 0:i.hasLocationChangingEventListeners)||await Ze(e,o,t,i))&&(Re=!0,Ge(e,n,o),await et(t))}function Ge(e,t,n=void 0){t?history.replaceState({userState:n,_index:He},"",e):(He++,history.pushState({userState:n,_index:He},"",e))}function Ye(e){return new Promise((t=>{const n=ze;ze=()=>{ze=n,t()},history.go(e)}))}function Qe(){qe&&(qe(!1),qe=null)}function Ze(e,t,n,o){return new Promise((r=>{Qe(),We++,qe=r,o.locationChanging(We,e,t,n)}))}async function et(e,t){const n=null!=t?t:location.href;await Promise.all(Array.from(je,(async([t,o])=>{var r;T(t)&&await o.locationChanged(n,null===(r=history.state)||void 0===r?void 0:r.userState,e)})))}async function tt(e){var t,n;ze&&ot()&&await ze(e),He=null!==(n=null===(t=history.state)||void 0===t?void 0:t._index)&&void 0!==n?n:0}function nt(){const e=Fe();if(void 0!==e)return je.get(e)}function ot(){return Oe()||!Me()}const rt={focus:function(e,t){if(e instanceof HTMLElement)e.focus({preventScroll:t});else{if(!(e instanceof SVGElement))throw new Error("Unable to focus an invalid element.");if(!e.hasAttribute("tabindex"))throw new Error("Unable to focus an SVG element that does not have a tabindex.");e.focus({preventScroll:t})}},focusBySelector:function(e,t){const n=document.querySelector(e);n&&(n.hasAttribute("tabindex")||(n.tabIndex=-1),n.focus({preventScroll:!0}))}},it={init:function(e,t,n,o=50){const r=at(t);(r||document.documentElement).style.overflowAnchor="none";const i=document.createRange();u(n.parentElement)&&(t.style.display="table-row",n.style.display="table-row");const s=new IntersectionObserver((function(o){o.forEach((o=>{var r;if(!o.isIntersecting)return;i.setStartAfter(t),i.setEndBefore(n);const s=i.getBoundingClientRect().height,a=null===(r=o.rootBounds)||void 0===r?void 0:r.height;o.target===t?e.invokeMethodAsync("OnSpacerBeforeVisible",o.intersectionRect.top-o.boundingClientRect.top,s,a):o.target===n&&n.offsetHeight>0&&e.invokeMethodAsync("OnSpacerAfterVisible",o.boundingClientRect.bottom-o.intersectionRect.bottom,s,a)}))}),{root:r,rootMargin:`${o}px`});s.observe(t),s.observe(n);const a=d(t),c=d(n),{observersByDotNetObjectId:l,id:h}=ct(e);function d(e){const t={attributes:!0},n=new MutationObserver(((n,o)=>{u(e.parentElement)&&(o.disconnect(),e.style.display="table-row",o.observe(e,t)),s.unobserve(e),s.observe(e)}));return n.observe(e,t),n}function u(e){return null!==e&&(e instanceof HTMLTableElement&&""===e.style.display||"table"===e.style.display||e instanceof HTMLTableSectionElement&&""===e.style.display||"table-row-group"===e.style.display)}l[h]={intersectionObserver:s,mutationObserverBefore:a,mutationObserverAfter:c}},dispose:function(e){const{observersByDotNetObjectId:t,id:n}=ct(e),o=t[n];o&&(o.intersectionObserver.disconnect(),o.mutationObserverBefore.disconnect(),o.mutationObserverAfter.disconnect(),e.dispose(),delete t[n])}},st=Symbol();function at(e){return e&&e!==document.body&&e!==document.documentElement?"visible"!==getComputedStyle(e).overflowY?e:at(e.parentElement):null}function ct(e){var t;const n=e._callDispatcher,o=e._id;return null!==(t=n[st])&&void 0!==t||(n[st]={}),{observersByDotNetObjectId:n[st],id:o}}const lt={getAndRemoveExistingTitle:function(){var e;const t=document.head?document.head.getElementsByTagName("title"):[];if(0===t.length)return null;let n=null;for(let o=t.length-1;o>=0;o--){const r=t[o],i=r.previousSibling;i instanceof Comment&&null!==K(i)||(null===n&&(n=r.textContent),null===(e=r.parentNode)||void 0===e||e.removeChild(r))}return n}},ht={init:function(e,t){t._blazorInputFileNextFileId=0,t.addEventListener("click",(function(){t.value=""})),t.addEventListener("change",(function(){t._blazorFilesById={};const n=Array.prototype.map.call(t.files,(function(e){const n={id:++t._blazorInputFileNextFileId,lastModified:new Date(e.lastModified).toISOString(),name:e.name,size:e.size,contentType:e.type,readPromise:void 0,arrayBuffer:void 0,blob:e};return t._blazorFilesById[n.id]=n,n}));e.invokeMethodAsync("NotifyChange",n)}))},toImageFile:async function(e,t,n,o,r){const i=dt(e,t),s=await new Promise((function(e){const t=new Image;t.onload=function(){URL.revokeObjectURL(t.src),e(t)},t.onerror=function(){t.onerror=null,URL.revokeObjectURL(t.src)},t.src=URL.createObjectURL(i.blob)})),a=await new Promise((function(e){var t;const i=Math.min(1,o/s.width),a=Math.min(1,r/s.height),c=Math.min(i,a),l=document.createElement("canvas");l.width=Math.round(s.width*c),l.height=Math.round(s.height*c),null===(t=l.getContext("2d"))||void 0===t||t.drawImage(s,0,0,l.width,l.height),l.toBlob(e,n)})),c={id:++e._blazorInputFileNextFileId,lastModified:i.lastModified,name:i.name,size:(null==a?void 0:a.size)||0,contentType:n,blob:a||i.blob};return e._blazorFilesById[c.id]=c,c},readFileData:async function(e,t){return dt(e,t).blob}};function dt(e,t){const n=e._blazorFilesById[t];if(!n)throw new Error(`There is no file with ID ${t}. The file list may have changed. See https://aka.ms/aspnet/blazor-input-file-multiple-selections.`);return n}const ut=new Set,pt={enableNavigationPrompt:function(e){0===ut.size&&window.addEventListener("beforeunload",ft),ut.add(e)},disableNavigationPrompt:function(e){ut.delete(e),0===ut.size&&window.removeEventListener("beforeunload",ft)}};function ft(e){e.preventDefault(),e.returnValue=!0}async function gt(e,t,n){return e instanceof Blob?await async function(e,t,n){const o=e.slice(t,t+n),r=await o.arrayBuffer();return new Uint8Array(r)}(e,t,n):function(e,t,n){return new Uint8Array(e.buffer,e.byteOffset+t,n)}(e,t,n)}const mt=new Map,vt={navigateTo:function(e,t,n=!1){Ve(e,t instanceof Object?t:{forceLoad:t,replaceHistoryEntry:n})},registerCustomEventType:function(e,t){if(!t)throw new Error("The options parameter is required.");if(i.has(e))throw new Error(`The event '${e}' is already registered.`);if(t.browserEventName){const n=s.get(t.browserEventName);n?n.push(e):s.set(t.browserEventName,[e]),a.forEach((n=>n(e,t.browserEventName)))}i.set(e,t)},rootComponents:y,runtime:{},_internal:{navigationManager:Je,domWrapper:rt,Virtualize:it,PageTitle:lt,InputFile:ht,NavigationLock:pt,getJSDataStreamChunk:gt,attachWebRendererInterop:k}};var yt;window.Blazor=vt,function(e){e[e.Trace=0]="Trace",e[e.Debug=1]="Debug",e[e.Information=2]="Information",e[e.Warning=3]="Warning",e[e.Error=4]="Error",e[e.Critical=5]="Critical",e[e.None=6]="None"}(yt||(yt={}));class wt{log(e,t){}}wt.instance=new wt;class bt{constructor(e){this.minLevel=e}log(e,t){if(e>=this.minLevel){const n=`[${(new Date).toISOString()}] ${yt[e]}: ${t}`;switch(e){case yt.Critical:case yt.Error:console.error(n);break;case yt.Warning:console.warn(n);break;case yt.Information:console.info(n);break;default:console.log(n)}}}}function _t(e,t){switch(t){case"webassembly":return Tt(e,"webassembly");case"server":return function(e){return Tt(e,"server").sort(((e,t)=>e.sequence-t.sequence))}(e);case"auto":return Tt(e,"auto")}}const St=/^\s*Blazor-Server-Component-State:(?[a-zA-Z0-9+/=]+)$/,Ct=/^\s*Blazor-WebAssembly-Component-State:(?[a-zA-Z0-9+/=]+)$/,Et=/^\s*Blazor-Web-Initializers:(?[a-zA-Z0-9+/=]+)$/;function It(e){return kt(e,St)}function kt(e,t,n="state"){var o;if(e.nodeType===Node.COMMENT_NODE){const r=e.textContent||"",i=t.exec(r),s=i&&i.groups&&i.groups[n];return s&&(null===(o=e.parentNode)||void 0===o||o.removeChild(e)),s}if(!e.hasChildNodes())return;const r=e.childNodes;for(let e=0;e.*)$/);function Dt(e,t){const n=e.currentElement;var o,r,i;if(n&&n.nodeType===Node.COMMENT_NODE&&n.textContent){const s=Rt.exec(n.textContent),a=s&&s.groups&&s.groups.descriptor;if(!a)return;!function(e){if(e.parentNode instanceof Document)throw new Error("Root components cannot be marked as interactive. The element must be rendered statically so that scripts are not evaluated multiple times.")}(n);try{const s=function(e){const t=JSON.parse(e),{type:n}=t;if("server"!==n&&"webassembly"!==n&&"auto"!==n)throw new Error(`Invalid component type '${n}'.`);return t}(a),c=function(e,t,n){const{prerenderId:o}=e;if(o){for(;n.next()&&n.currentElement;){const e=n.currentElement;if(e.nodeType!==Node.COMMENT_NODE)continue;if(!e.textContent)continue;const t=Rt.exec(e.textContent),r=t&&t[1];if(r)return Pt(r,o),e}throw new Error(`Could not find an end component comment for '${t}'.`)}}(s,n,e);if(t!==s.type)return;switch(s.type){case"webassembly":return r=n,i=c,Nt(o=s),{...o,uniqueId:At++,start:r,end:i};case"server":return function(e,t,n){return xt(e),{...e,uniqueId:At++,start:t,end:n}}(s,n,c);case"auto":return function(e,t,n){return xt(e),Nt(e),{...e,uniqueId:At++,start:t,end:n}}(s,n,c)}}catch(e){throw new Error(`Found malformed component comment at ${n.textContent}`)}}}let At=0;function xt(e){const{descriptor:t,sequence:n}=e;if(!t)throw new Error("descriptor must be defined when using a descriptor.");if(void 0===n)throw new Error("sequence must be defined when using a descriptor.");if(!Number.isInteger(n))throw new Error(`Error parsing the sequence '${n}' for component '${JSON.stringify(e)}'`)}function Nt(e){const{assembly:t,typeName:n}=e;if(!t)throw new Error("assembly must be defined when using a descriptor.");if(!n)throw new Error("typeName must be defined when using a descriptor.");e.parameterDefinitions=e.parameterDefinitions&&atob(e.parameterDefinitions),e.parameterValues=e.parameterValues&&atob(e.parameterValues)}function Pt(e,t){const n=JSON.parse(e);if(1!==Object.keys(n).length)throw new Error(`Invalid end of component comment: '${e}'`);const o=n.prerenderId;if(!o)throw new Error(`End of component comment must have a value for the prerendered property: '${e}'`);if(o!==t)throw new Error(`End of component comment prerendered property must match the start comment prerender id: '${t}', '${o}'`)}class Mt{constructor(e){this.childNodes=e,this.currentIndex=-1,this.length=e.length}next(){return this.currentIndex++,this.currentIndex{n+=`0x${e<16?"0":""}${e.toString(16)} `})),n.substr(0,n.length-1)}(e)}'`)):"string"==typeof e&&(n=`String data of length ${e.length}`,t&&(n+=`. Content: '${e}'`)),n}function zt(e){return e&&"undefined"!=typeof ArrayBuffer&&(e instanceof ArrayBuffer||e.constructor&&"ArrayBuffer"===e.constructor.name)}async function qt(e,t,n,o,r,i){const s={},[a,c]=Vt();s[a]=c,e.log(Ot.Trace,`(${t} transport) sending data. ${jt(r,i.logMessageContent)}.`);const l=zt(r)?"arraybuffer":"text",h=await n.post(o,{content:r,headers:{...s,...i.headers},responseType:l,timeout:i.timeout,withCredentials:i.withCredentials});e.log(Ot.Trace,`(${t} transport) request complete. Response status: ${h.statusCode}.`)}class Jt{constructor(e,t){this._subject=e,this._observer=t}dispose(){const e=this._subject.observers.indexOf(this._observer);e>-1&&this._subject.observers.splice(e,1),0===this._subject.observers.length&&this._subject.cancelCallback&&this._subject.cancelCallback().catch((e=>{}))}}class Kt{constructor(e){this._minLevel=e,this.out=console}log(e,t){if(e>=this._minLevel){const n=`[${(new Date).toISOString()}] ${Ot[e]}: ${t}`;switch(e){case Ot.Critical:case Ot.Error:this.out.error(n);break;case Ot.Warning:this.out.warn(n);break;case Ot.Information:this.out.info(n);break;default:this.out.log(n)}}}}function Vt(){let e="X-SignalR-User-Agent";return Wt.isNode&&(e="User-Agent"),[e,Xt($t,Gt(),Wt.isNode?"NodeJS":"Browser",Yt())]}function Xt(e,t,n,o){let r="Microsoft SignalR/";const i=e.split(".");return r+=`${i[0]}.${i[1]}`,r+=` (${e}; `,r+=t&&""!==t?`${t}; `:"Unknown OS; ",r+=`${n}`,r+=o?`; ${o}`:"; Unknown Runtime Version",r+=")",r}function Gt(){if(!Wt.isNode)return"";switch(process.platform){case"win32":return"Windows NT";case"darwin":return"macOS";case"linux":return"Linux";default:return process.platform}}function Yt(){if(Wt.isNode)return process.versions.node}function Qt(e){return e.stack?e.stack:e.message?e.message:`${e}`}class Zt{writeHandshakeRequest(e){return Bt.write(JSON.stringify(e))}parseHandshakeResponse(e){let t,n;if(zt(e)){const o=new Uint8Array(e),r=o.indexOf(Bt.RecordSeparatorCode);if(-1===r)throw new Error("Message is incomplete.");const i=r+1;t=String.fromCharCode.apply(null,Array.prototype.slice.call(o.slice(0,i))),n=o.byteLength>i?o.slice(i).buffer:null}else{const o=e,r=o.indexOf(Bt.RecordSeparator);if(-1===r)throw new Error("Message is incomplete.");const i=r+1;t=o.substring(0,i),n=o.length>i?o.substring(i):null}const o=Bt.parse(t),r=JSON.parse(o[0]);if(r.type)throw new Error("Expected a handshake response from the server.");return[n,r]}}class en extends Error{constructor(e,t){const n=new.target.prototype;super(`${e}: Status code '${t}'`),this.statusCode=t,this.__proto__=n}}class tn extends Error{constructor(e="A timeout occurred."){const t=new.target.prototype;super(e),this.__proto__=t}}class nn extends Error{constructor(e="An abort occurred."){const t=new.target.prototype;super(e),this.__proto__=t}}class on extends Error{constructor(e,t){const n=new.target.prototype;super(e),this.transport=t,this.errorType="UnsupportedTransportError",this.__proto__=n}}class rn extends Error{constructor(e,t){const n=new.target.prototype;super(e),this.transport=t,this.errorType="DisabledTransportError",this.__proto__=n}}class sn extends Error{constructor(e,t){const n=new.target.prototype;super(e),this.transport=t,this.errorType="FailedToStartTransportError",this.__proto__=n}}class an extends Error{constructor(e){const t=new.target.prototype;super(e),this.errorType="FailedToNegotiateWithServerError",this.__proto__=t}}class cn extends Error{constructor(e,t){const n=new.target.prototype;super(e),this.innerErrors=t,this.__proto__=n}}var ln,hn;!function(e){e[e.Invocation=1]="Invocation",e[e.StreamItem=2]="StreamItem",e[e.Completion=3]="Completion",e[e.StreamInvocation=4]="StreamInvocation",e[e.CancelInvocation=5]="CancelInvocation",e[e.Ping=6]="Ping",e[e.Close=7]="Close",e[e.Ack=8]="Ack",e[e.Sequence=9]="Sequence"}(ln||(ln={}));class dn{constructor(){this.observers=[]}next(e){for(const t of this.observers)t.next(e)}error(e){for(const t of this.observers)t.error&&t.error(e)}complete(){for(const e of this.observers)e.complete&&e.complete()}subscribe(e){return this.observers.push(e),new Jt(this,e)}}class un{constructor(e,t,n){this._bufferSize=1e5,this._messages=[],this._totalMessageCount=0,this._waitForSequenceMessage=!1,this._nextReceivingSequenceId=1,this._latestReceivedSequenceId=0,this._bufferedByteCount=0,this._reconnectInProgress=!1,this._protocol=e,this._connection=t,this._bufferSize=n}async _send(e){const t=this._protocol.writeMessage(e);let n=Promise.resolve();if(this._isInvocationMessage(e)){this._totalMessageCount++;let e=()=>{},o=()=>{};zt(t)?this._bufferedByteCount+=t.byteLength:this._bufferedByteCount+=t.length,this._bufferedByteCount>=this._bufferSize&&(n=new Promise(((t,n)=>{e=t,o=n}))),this._messages.push(new pn(t,this._totalMessageCount,e,o))}try{this._reconnectInProgress||await this._connection.send(t)}catch{this._disconnected()}await n}_ack(e){let t=-1;for(let n=0;nthis._nextReceivingSequenceId?this._connection.stop(new Error("Sequence ID greater than amount of messages we've received.")):this._nextReceivingSequenceId=e.sequenceId}_disconnected(){this._reconnectInProgress=!0,this._waitForSequenceMessage=!0}async _resend(){const e=0!==this._messages.length?this._messages[0]._id:this._totalMessageCount+1;await this._connection.send(this._protocol.writeMessage({type:ln.Sequence,sequenceId:e}));const t=this._messages;for(const e of t)await this._connection.send(e._message);this._reconnectInProgress=!1}_dispose(e){null!=e||(e=new Error("Unable to reconnect to server."));for(const t of this._messages)t._rejector(e)}_isInvocationMessage(e){switch(e.type){case ln.Invocation:case ln.StreamItem:case ln.Completion:case ln.StreamInvocation:case ln.CancelInvocation:return!0;case ln.Close:case ln.Sequence:case ln.Ping:case ln.Ack:return!1}}_ackTimer(){void 0===this._ackTimerHandle&&(this._ackTimerHandle=setTimeout((async()=>{try{this._reconnectInProgress||await this._connection.send(this._protocol.writeMessage({type:ln.Ack,sequenceId:this._latestReceivedSequenceId}))}catch{}clearTimeout(this._ackTimerHandle),this._ackTimerHandle=void 0}),1e3))}}class pn{constructor(e,t,n,o){this._message=e,this._id=t,this._resolver=n,this._rejector=o}}!function(e){e.Disconnected="Disconnected",e.Connecting="Connecting",e.Connected="Connected",e.Disconnecting="Disconnecting",e.Reconnecting="Reconnecting"}(hn||(hn={}));class fn{static create(e,t,n,o,r,i,s){return new fn(e,t,n,o,r,i,s)}constructor(e,t,n,o,r,i,s){this._nextKeepAlive=0,this._freezeEventListener=()=>{this._logger.log(Ot.Warning,"The page is being frozen, this will likely lead to the connection being closed and messages being lost. For more information see the docs at https://learn.microsoft.com/aspnet/core/signalr/javascript-client#bsleep")},Ht.isRequired(e,"connection"),Ht.isRequired(t,"logger"),Ht.isRequired(n,"protocol"),this.serverTimeoutInMilliseconds=null!=r?r:3e4,this.keepAliveIntervalInMilliseconds=null!=i?i:15e3,this._statefulReconnectBufferSize=null!=s?s:1e5,this._logger=t,this._protocol=n,this.connection=e,this._reconnectPolicy=o,this._handshakeProtocol=new Zt,this.connection.onreceive=e=>this._processIncomingData(e),this.connection.onclose=e=>this._connectionClosed(e),this._callbacks={},this._methods={},this._closedCallbacks=[],this._reconnectingCallbacks=[],this._reconnectedCallbacks=[],this._invocationId=0,this._receivedHandshakeResponse=!1,this._connectionState=hn.Disconnected,this._connectionStarted=!1,this._cachedPingMessage=this._protocol.writeMessage({type:ln.Ping})}get state(){return this._connectionState}get connectionId(){return this.connection&&this.connection.connectionId||null}get baseUrl(){return this.connection.baseUrl||""}set baseUrl(e){if(this._connectionState!==hn.Disconnected&&this._connectionState!==hn.Reconnecting)throw new Error("The HubConnection must be in the Disconnected or Reconnecting state to change the url.");if(!e)throw new Error("The HubConnection url must be a valid url.");this.connection.baseUrl=e}start(){return this._startPromise=this._startWithStateTransitions(),this._startPromise}async _startWithStateTransitions(){if(this._connectionState!==hn.Disconnected)return Promise.reject(new Error("Cannot start a HubConnection that is not in the 'Disconnected' state."));this._connectionState=hn.Connecting,this._logger.log(Ot.Debug,"Starting HubConnection.");try{await this._startInternal(),Wt.isBrowser&&window.document.addEventListener("freeze",this._freezeEventListener),this._connectionState=hn.Connected,this._connectionStarted=!0,this._logger.log(Ot.Debug,"HubConnection connected successfully.")}catch(e){return this._connectionState=hn.Disconnected,this._logger.log(Ot.Debug,`HubConnection failed to start successfully because of error '${e}'.`),Promise.reject(e)}}async _startInternal(){this._stopDuringStartError=void 0,this._receivedHandshakeResponse=!1;const e=new Promise(((e,t)=>{this._handshakeResolver=e,this._handshakeRejecter=t}));await this.connection.start(this._protocol.transferFormat);try{let t=this._protocol.version;this.connection.features.reconnect||(t=1);const n={protocol:this._protocol.name,version:t};if(this._logger.log(Ot.Debug,"Sending handshake request."),await this._sendMessage(this._handshakeProtocol.writeHandshakeRequest(n)),this._logger.log(Ot.Information,`Using HubProtocol '${this._protocol.name}'.`),this._cleanupTimeout(),this._resetTimeoutPeriod(),this._resetKeepAliveInterval(),await e,this._stopDuringStartError)throw this._stopDuringStartError;!!this.connection.features.reconnect&&(this._messageBuffer=new un(this._protocol,this.connection,this._statefulReconnectBufferSize),this.connection.features.disconnected=this._messageBuffer._disconnected.bind(this._messageBuffer),this.connection.features.resend=()=>{if(this._messageBuffer)return this._messageBuffer._resend()}),this.connection.features.inherentKeepAlive||await this._sendMessage(this._cachedPingMessage)}catch(e){throw this._logger.log(Ot.Debug,`Hub handshake failed with error '${e}' during start(). Stopping HubConnection.`),this._cleanupTimeout(),this._cleanupPingTimer(),await this.connection.stop(e),e}}async stop(){const e=this._startPromise;this.connection.features.reconnect=!1,this._stopPromise=this._stopInternal(),await this._stopPromise;try{await e}catch(e){}}_stopInternal(e){if(this._connectionState===hn.Disconnected)return this._logger.log(Ot.Debug,`Call to HubConnection.stop(${e}) ignored because it is already in the disconnected state.`),Promise.resolve();if(this._connectionState===hn.Disconnecting)return this._logger.log(Ot.Debug,`Call to HttpConnection.stop(${e}) ignored because the connection is already in the disconnecting state.`),this._stopPromise;const t=this._connectionState;return this._connectionState=hn.Disconnecting,this._logger.log(Ot.Debug,"Stopping HubConnection."),this._reconnectDelayHandle?(this._logger.log(Ot.Debug,"Connection stopped during reconnect delay. Done reconnecting."),clearTimeout(this._reconnectDelayHandle),this._reconnectDelayHandle=void 0,this._completeClose(),Promise.resolve()):(t===hn.Connected&&this._sendCloseMessage(),this._cleanupTimeout(),this._cleanupPingTimer(),this._stopDuringStartError=e||new nn("The connection was stopped before the hub handshake could complete."),this.connection.stop(e))}async _sendCloseMessage(){try{await this._sendWithProtocol(this._createCloseMessage())}catch{}}stream(e,...t){const[n,o]=this._replaceStreamingParams(t),r=this._createStreamInvocation(e,t,o);let i;const s=new dn;return s.cancelCallback=()=>{const e=this._createCancelInvocation(r.invocationId);return delete this._callbacks[r.invocationId],i.then((()=>this._sendWithProtocol(e)))},this._callbacks[r.invocationId]=(e,t)=>{t?s.error(t):e&&(e.type===ln.Completion?e.error?s.error(new Error(e.error)):s.complete():s.next(e.item))},i=this._sendWithProtocol(r).catch((e=>{s.error(e),delete this._callbacks[r.invocationId]})),this._launchStreams(n,i),s}_sendMessage(e){return this._resetKeepAliveInterval(),this.connection.send(e)}_sendWithProtocol(e){return this._messageBuffer?this._messageBuffer._send(e):this._sendMessage(this._protocol.writeMessage(e))}send(e,...t){const[n,o]=this._replaceStreamingParams(t),r=this._sendWithProtocol(this._createInvocation(e,t,!0,o));return this._launchStreams(n,r),r}invoke(e,...t){const[n,o]=this._replaceStreamingParams(t),r=this._createInvocation(e,t,!1,o);return new Promise(((e,t)=>{this._callbacks[r.invocationId]=(n,o)=>{o?t(o):n&&(n.type===ln.Completion?n.error?t(new Error(n.error)):e(n.result):t(new Error(`Unexpected message type: ${n.type}`)))};const o=this._sendWithProtocol(r).catch((e=>{t(e),delete this._callbacks[r.invocationId]}));this._launchStreams(n,o)}))}on(e,t){e&&t&&(e=e.toLowerCase(),this._methods[e]||(this._methods[e]=[]),-1===this._methods[e].indexOf(t)&&this._methods[e].push(t))}off(e,t){if(!e)return;e=e.toLowerCase();const n=this._methods[e];if(n)if(t){const o=n.indexOf(t);-1!==o&&(n.splice(o,1),0===n.length&&delete this._methods[e])}else delete this._methods[e]}onclose(e){e&&this._closedCallbacks.push(e)}onreconnecting(e){e&&this._reconnectingCallbacks.push(e)}onreconnected(e){e&&this._reconnectedCallbacks.push(e)}_processIncomingData(e){if(this._cleanupTimeout(),this._receivedHandshakeResponse||(e=this._processHandshakeResponse(e),this._receivedHandshakeResponse=!0),e){const t=this._protocol.parseMessages(e,this._logger);for(const e of t)if(!this._messageBuffer||this._messageBuffer._shouldProcessMessage(e))switch(e.type){case ln.Invocation:this._invokeClientMethod(e);break;case ln.StreamItem:case ln.Completion:{const t=this._callbacks[e.invocationId];if(t){e.type===ln.Completion&&delete this._callbacks[e.invocationId];try{t(e)}catch(e){this._logger.log(Ot.Error,`Stream callback threw error: ${Qt(e)}`)}}break}case ln.Ping:break;case ln.Close:{this._logger.log(Ot.Information,"Close message received from server.");const t=e.error?new Error("Server returned an error on close: "+e.error):void 0;!0===e.allowReconnect?this.connection.stop(t):this._stopPromise=this._stopInternal(t);break}case ln.Ack:this._messageBuffer&&this._messageBuffer._ack(e);break;case ln.Sequence:this._messageBuffer&&this._messageBuffer._resetSequence(e);break;default:this._logger.log(Ot.Warning,`Invalid message type: ${e.type}.`)}}this._resetTimeoutPeriod()}_processHandshakeResponse(e){let t,n;try{[n,t]=this._handshakeProtocol.parseHandshakeResponse(e)}catch(e){const t="Error parsing handshake response: "+e;this._logger.log(Ot.Error,t);const n=new Error(t);throw this._handshakeRejecter(n),n}if(t.error){const e="Server returned handshake error: "+t.error;this._logger.log(Ot.Error,e);const n=new Error(e);throw this._handshakeRejecter(n),n}return this._logger.log(Ot.Debug,"Server handshake complete."),this._handshakeResolver(),n}_resetKeepAliveInterval(){this.connection.features.inherentKeepAlive||(this._nextKeepAlive=(new Date).getTime()+this.keepAliveIntervalInMilliseconds,this._cleanupPingTimer())}_resetTimeoutPeriod(){if(!(this.connection.features&&this.connection.features.inherentKeepAlive||(this._timeoutHandle=setTimeout((()=>this.serverTimeout()),this.serverTimeoutInMilliseconds),void 0!==this._pingServerHandle))){let e=this._nextKeepAlive-(new Date).getTime();e<0&&(e=0),this._pingServerHandle=setTimeout((async()=>{if(this._connectionState===hn.Connected)try{await this._sendMessage(this._cachedPingMessage)}catch{this._cleanupPingTimer()}}),e)}}serverTimeout(){this.connection.stop(new Error("Server timeout elapsed without receiving a message from the server."))}async _invokeClientMethod(e){const t=e.target.toLowerCase(),n=this._methods[t];if(!n)return this._logger.log(Ot.Warning,`No client method with the name '${t}' found.`),void(e.invocationId&&(this._logger.log(Ot.Warning,`No result given for '${t}' method and invocation ID '${e.invocationId}'.`),await this._sendWithProtocol(this._createCompletionMessage(e.invocationId,"Client didn't provide a result.",null))));const o=n.slice(),r=!!e.invocationId;let i,s,a;for(const n of o)try{const o=i;i=await n.apply(this,e.arguments),r&&i&&o&&(this._logger.log(Ot.Error,`Multiple results provided for '${t}'. Sending error to server.`),a=this._createCompletionMessage(e.invocationId,"Client provided multiple results.",null)),s=void 0}catch(e){s=e,this._logger.log(Ot.Error,`A callback for the method '${t}' threw error '${e}'.`)}a?await this._sendWithProtocol(a):r?(s?a=this._createCompletionMessage(e.invocationId,`${s}`,null):void 0!==i?a=this._createCompletionMessage(e.invocationId,null,i):(this._logger.log(Ot.Warning,`No result given for '${t}' method and invocation ID '${e.invocationId}'.`),a=this._createCompletionMessage(e.invocationId,"Client didn't provide a result.",null)),await this._sendWithProtocol(a)):i&&this._logger.log(Ot.Error,`Result given for '${t}' method but server is not expecting a result.`)}_connectionClosed(e){this._logger.log(Ot.Debug,`HubConnection.connectionClosed(${e}) called while in state ${this._connectionState}.`),this._stopDuringStartError=this._stopDuringStartError||e||new nn("The underlying connection was closed before the hub handshake could complete."),this._handshakeResolver&&this._handshakeResolver(),this._cancelCallbacksWithError(e||new Error("Invocation canceled due to the underlying connection being closed.")),this._cleanupTimeout(),this._cleanupPingTimer(),this._connectionState===hn.Disconnecting?this._completeClose(e):this._connectionState===hn.Connected&&this._reconnectPolicy?this._reconnect(e):this._connectionState===hn.Connected&&this._completeClose(e)}_completeClose(e){if(this._connectionStarted){this._connectionState=hn.Disconnected,this._connectionStarted=!1,this._messageBuffer&&(this._messageBuffer._dispose(null!=e?e:new Error("Connection closed.")),this._messageBuffer=void 0),Wt.isBrowser&&window.document.removeEventListener("freeze",this._freezeEventListener);try{this._closedCallbacks.forEach((t=>t.apply(this,[e])))}catch(t){this._logger.log(Ot.Error,`An onclose callback called with error '${e}' threw error '${t}'.`)}}}async _reconnect(e){const t=Date.now();let n=0,o=void 0!==e?e:new Error("Attempting to reconnect due to a unknown error."),r=this._getNextRetryDelay(n++,0,o);if(null===r)return this._logger.log(Ot.Debug,"Connection not reconnecting because the IRetryPolicy returned null on the first reconnect attempt."),void this._completeClose(e);if(this._connectionState=hn.Reconnecting,e?this._logger.log(Ot.Information,`Connection reconnecting because of error '${e}'.`):this._logger.log(Ot.Information,"Connection reconnecting."),0!==this._reconnectingCallbacks.length){try{this._reconnectingCallbacks.forEach((t=>t.apply(this,[e])))}catch(t){this._logger.log(Ot.Error,`An onreconnecting callback called with error '${e}' threw error '${t}'.`)}if(this._connectionState!==hn.Reconnecting)return void this._logger.log(Ot.Debug,"Connection left the reconnecting state in onreconnecting callback. Done reconnecting.")}for(;null!==r;){if(this._logger.log(Ot.Information,`Reconnect attempt number ${n} will start in ${r} ms.`),await new Promise((e=>{this._reconnectDelayHandle=setTimeout(e,r)})),this._reconnectDelayHandle=void 0,this._connectionState!==hn.Reconnecting)return void this._logger.log(Ot.Debug,"Connection left the reconnecting state during reconnect delay. Done reconnecting.");try{if(await this._startInternal(),this._connectionState=hn.Connected,this._logger.log(Ot.Information,"HubConnection reconnected successfully."),0!==this._reconnectedCallbacks.length)try{this._reconnectedCallbacks.forEach((e=>e.apply(this,[this.connection.connectionId])))}catch(e){this._logger.log(Ot.Error,`An onreconnected callback called with connectionId '${this.connection.connectionId}; threw error '${e}'.`)}return}catch(e){if(this._logger.log(Ot.Information,`Reconnect attempt failed because of error '${e}'.`),this._connectionState!==hn.Reconnecting)return this._logger.log(Ot.Debug,`Connection moved to the '${this._connectionState}' from the reconnecting state during reconnect attempt. Done reconnecting.`),void(this._connectionState===hn.Disconnecting&&this._completeClose());o=e instanceof Error?e:new Error(e.toString()),r=this._getNextRetryDelay(n++,Date.now()-t,o)}}this._logger.log(Ot.Information,`Reconnect retries have been exhausted after ${Date.now()-t} ms and ${n} failed attempts. Connection disconnecting.`),this._completeClose()}_getNextRetryDelay(e,t,n){try{return this._reconnectPolicy.nextRetryDelayInMilliseconds({elapsedMilliseconds:t,previousRetryCount:e,retryReason:n})}catch(n){return this._logger.log(Ot.Error,`IRetryPolicy.nextRetryDelayInMilliseconds(${e}, ${t}) threw error '${n}'.`),null}}_cancelCallbacksWithError(e){const t=this._callbacks;this._callbacks={},Object.keys(t).forEach((n=>{const o=t[n];try{o(null,e)}catch(t){this._logger.log(Ot.Error,`Stream 'error' callback called with '${e}' threw error: ${Qt(t)}`)}}))}_cleanupPingTimer(){this._pingServerHandle&&(clearTimeout(this._pingServerHandle),this._pingServerHandle=void 0)}_cleanupTimeout(){this._timeoutHandle&&clearTimeout(this._timeoutHandle)}_createInvocation(e,t,n,o){if(n)return 0!==o.length?{arguments:t,streamIds:o,target:e,type:ln.Invocation}:{arguments:t,target:e,type:ln.Invocation};{const n=this._invocationId;return this._invocationId++,0!==o.length?{arguments:t,invocationId:n.toString(),streamIds:o,target:e,type:ln.Invocation}:{arguments:t,invocationId:n.toString(),target:e,type:ln.Invocation}}}_launchStreams(e,t){if(0!==e.length){t||(t=Promise.resolve());for(const n in e)e[n].subscribe({complete:()=>{t=t.then((()=>this._sendWithProtocol(this._createCompletionMessage(n))))},error:e=>{let o;o=e instanceof Error?e.message:e&&e.toString?e.toString():"Unknown error",t=t.then((()=>this._sendWithProtocol(this._createCompletionMessage(n,o))))},next:e=>{t=t.then((()=>this._sendWithProtocol(this._createStreamItemMessage(n,e))))}})}}_replaceStreamingParams(e){const t=[],n=[];for(let o=0;o0)&&(t=!1,this._accessToken=await this._accessTokenFactory()),this._setAuthorizationHeader(e);const n=await this._innerClient.send(e);return t&&401===n.statusCode&&this._accessTokenFactory?(this._accessToken=await this._accessTokenFactory(),this._setAuthorizationHeader(e),await this._innerClient.send(e)):n}_setAuthorizationHeader(e){e.headers||(e.headers={}),this._accessToken?e.headers[vn.Authorization]=`Bearer ${this._accessToken}`:this._accessTokenFactory&&e.headers[vn.Authorization]&&delete e.headers[vn.Authorization]}getCookieString(e){return this._innerClient.getCookieString(e)}}class _n extends wn{constructor(e){super(),this._logger=e;const t={_fetchType:void 0,_jar:void 0};var o;o=t,"undefined"==typeof fetch&&(o._jar=new(n(628).CookieJar),"undefined"==typeof fetch?o._fetchType=n(200):o._fetchType=fetch,o._fetchType=n(203)(o._fetchType,o._jar),1)?(this._fetchType=t._fetchType,this._jar=t._jar):this._fetchType=fetch.bind(function(){if("undefined"!=typeof globalThis)return globalThis;if("undefined"!=typeof self)return self;if("undefined"!=typeof window)return window;if(void 0!==n.g)return n.g;throw new Error("could not find global")}()),this._abortControllerType=AbortController;const r={_abortControllerType:this._abortControllerType};(function(e){return"undefined"==typeof AbortController&&(e._abortControllerType=n(778),!0)})(r)&&(this._abortControllerType=r._abortControllerType)}async send(e){if(e.abortSignal&&e.abortSignal.aborted)throw new nn;if(!e.method)throw new Error("No method defined.");if(!e.url)throw new Error("No url defined.");const t=new this._abortControllerType;let n;e.abortSignal&&(e.abortSignal.onabort=()=>{t.abort(),n=new nn});let o,r=null;if(e.timeout){const o=e.timeout;r=setTimeout((()=>{t.abort(),this._logger.log(Ot.Warning,"Timeout from HTTP request."),n=new tn}),o)}""===e.content&&(e.content=void 0),e.content&&(e.headers=e.headers||{},zt(e.content)?e.headers["Content-Type"]="application/octet-stream":e.headers["Content-Type"]="text/plain;charset=UTF-8");try{o=await this._fetchType(e.url,{body:e.content,cache:"no-cache",credentials:!0===e.withCredentials?"include":"same-origin",headers:{"X-Requested-With":"XMLHttpRequest",...e.headers},method:e.method,mode:"cors",redirect:"follow",signal:t.signal})}catch(e){if(n)throw n;throw this._logger.log(Ot.Warning,`Error from HTTP request. ${e}.`),e}finally{r&&clearTimeout(r),e.abortSignal&&(e.abortSignal.onabort=null)}if(!o.ok){const e=await Sn(o,"text");throw new en(e||o.statusText,o.status)}const i=Sn(o,e.responseType),s=await i;return new yn(o.status,o.statusText,s)}getCookieString(e){return""}}function Sn(e,t){let n;switch(t){case"arraybuffer":n=e.arrayBuffer();break;case"text":default:n=e.text();break;case"blob":case"document":case"json":throw new Error(`${t} is not supported.`)}return n}class Cn extends wn{constructor(e){super(),this._logger=e}send(e){return e.abortSignal&&e.abortSignal.aborted?Promise.reject(new nn):e.method?e.url?new Promise(((t,n)=>{const o=new XMLHttpRequest;o.open(e.method,e.url,!0),o.withCredentials=void 0===e.withCredentials||e.withCredentials,o.setRequestHeader("X-Requested-With","XMLHttpRequest"),""===e.content&&(e.content=void 0),e.content&&(zt(e.content)?o.setRequestHeader("Content-Type","application/octet-stream"):o.setRequestHeader("Content-Type","text/plain;charset=UTF-8"));const r=e.headers;r&&Object.keys(r).forEach((e=>{o.setRequestHeader(e,r[e])})),e.responseType&&(o.responseType=e.responseType),e.abortSignal&&(e.abortSignal.onabort=()=>{o.abort(),n(new nn)}),e.timeout&&(o.timeout=e.timeout),o.onload=()=>{e.abortSignal&&(e.abortSignal.onabort=null),o.status>=200&&o.status<300?t(new yn(o.status,o.statusText,o.response||o.responseText)):n(new en(o.response||o.responseText||o.statusText,o.status))},o.onerror=()=>{this._logger.log(Ot.Warning,`Error from HTTP request. ${o.status}: ${o.statusText}.`),n(new en(o.statusText,o.status))},o.ontimeout=()=>{this._logger.log(Ot.Warning,"Timeout from HTTP request."),n(new tn)},o.send(e.content)})):Promise.reject(new Error("No url defined.")):Promise.reject(new Error("No method defined."))}}class En extends wn{constructor(e){if(super(),"undefined"!=typeof fetch)this._httpClient=new _n(e);else{if("undefined"==typeof XMLHttpRequest)throw new Error("No usable HttpClient found.");this._httpClient=new Cn(e)}}send(e){return e.abortSignal&&e.abortSignal.aborted?Promise.reject(new nn):e.method?e.url?this._httpClient.send(e):Promise.reject(new Error("No url defined.")):Promise.reject(new Error("No method defined."))}getCookieString(e){return this._httpClient.getCookieString(e)}}var In,kn;!function(e){e[e.None=0]="None",e[e.WebSockets=1]="WebSockets",e[e.ServerSentEvents=2]="ServerSentEvents",e[e.LongPolling=4]="LongPolling"}(In||(In={})),function(e){e[e.Text=1]="Text",e[e.Binary=2]="Binary"}(kn||(kn={}));class Tn{constructor(){this._isAborted=!1,this.onabort=null}abort(){this._isAborted||(this._isAborted=!0,this.onabort&&this.onabort())}get signal(){return this}get aborted(){return this._isAborted}}class Rn{get pollAborted(){return this._pollAbort.aborted}constructor(e,t,n){this._httpClient=e,this._logger=t,this._pollAbort=new Tn,this._options=n,this._running=!1,this.onreceive=null,this.onclose=null}async connect(e,t){if(Ht.isRequired(e,"url"),Ht.isRequired(t,"transferFormat"),Ht.isIn(t,kn,"transferFormat"),this._url=e,this._logger.log(Ot.Trace,"(LongPolling transport) Connecting."),t===kn.Binary&&"undefined"!=typeof XMLHttpRequest&&"string"!=typeof(new XMLHttpRequest).responseType)throw new Error("Binary protocols over XmlHttpRequest not implementing advanced features are not supported.");const[n,o]=Vt(),r={[n]:o,...this._options.headers},i={abortSignal:this._pollAbort.signal,headers:r,timeout:1e5,withCredentials:this._options.withCredentials};t===kn.Binary&&(i.responseType="arraybuffer");const s=`${e}&_=${Date.now()}`;this._logger.log(Ot.Trace,`(LongPolling transport) polling: ${s}.`);const a=await this._httpClient.get(s,i);200!==a.statusCode?(this._logger.log(Ot.Error,`(LongPolling transport) Unexpected response code: ${a.statusCode}.`),this._closeError=new en(a.statusText||"",a.statusCode),this._running=!1):this._running=!0,this._receiving=this._poll(this._url,i)}async _poll(e,t){try{for(;this._running;)try{const n=`${e}&_=${Date.now()}`;this._logger.log(Ot.Trace,`(LongPolling transport) polling: ${n}.`);const o=await this._httpClient.get(n,t);204===o.statusCode?(this._logger.log(Ot.Information,"(LongPolling transport) Poll terminated by server."),this._running=!1):200!==o.statusCode?(this._logger.log(Ot.Error,`(LongPolling transport) Unexpected response code: ${o.statusCode}.`),this._closeError=new en(o.statusText||"",o.statusCode),this._running=!1):o.content?(this._logger.log(Ot.Trace,`(LongPolling transport) data received. ${jt(o.content,this._options.logMessageContent)}.`),this.onreceive&&this.onreceive(o.content)):this._logger.log(Ot.Trace,"(LongPolling transport) Poll timed out, reissuing.")}catch(e){this._running?e instanceof tn?this._logger.log(Ot.Trace,"(LongPolling transport) Poll timed out, reissuing."):(this._closeError=e,this._running=!1):this._logger.log(Ot.Trace,`(LongPolling transport) Poll errored after shutdown: ${e.message}`)}}finally{this._logger.log(Ot.Trace,"(LongPolling transport) Polling complete."),this.pollAborted||this._raiseOnClose()}}async send(e){return this._running?qt(this._logger,"LongPolling",this._httpClient,this._url,e,this._options):Promise.reject(new Error("Cannot send until the transport is connected"))}async stop(){this._logger.log(Ot.Trace,"(LongPolling transport) Stopping polling."),this._running=!1,this._pollAbort.abort();try{await this._receiving,this._logger.log(Ot.Trace,`(LongPolling transport) sending DELETE request to ${this._url}.`);const e={},[t,n]=Vt();e[t]=n;const o={headers:{...e,...this._options.headers},timeout:this._options.timeout,withCredentials:this._options.withCredentials};let r;try{await this._httpClient.delete(this._url,o)}catch(e){r=e}r?r instanceof en&&(404===r.statusCode?this._logger.log(Ot.Trace,"(LongPolling transport) A 404 response was returned from sending a DELETE request."):this._logger.log(Ot.Trace,`(LongPolling transport) Error sending a DELETE request: ${r}`)):this._logger.log(Ot.Trace,"(LongPolling transport) DELETE request accepted.")}finally{this._logger.log(Ot.Trace,"(LongPolling transport) Stop finished."),this._raiseOnClose()}}_raiseOnClose(){if(this.onclose){let e="(LongPolling transport) Firing onclose event.";this._closeError&&(e+=" Error: "+this._closeError),this._logger.log(Ot.Trace,e),this.onclose(this._closeError)}}}class Dn{constructor(e,t,n,o){this._httpClient=e,this._accessToken=t,this._logger=n,this._options=o,this.onreceive=null,this.onclose=null}async connect(e,t){return Ht.isRequired(e,"url"),Ht.isRequired(t,"transferFormat"),Ht.isIn(t,kn,"transferFormat"),this._logger.log(Ot.Trace,"(SSE transport) Connecting."),this._url=e,this._accessToken&&(e+=(e.indexOf("?")<0?"?":"&")+`access_token=${encodeURIComponent(this._accessToken)}`),new Promise(((n,o)=>{let r,i=!1;if(t===kn.Text){if(Wt.isBrowser||Wt.isWebWorker)r=new this._options.EventSource(e,{withCredentials:this._options.withCredentials});else{const t=this._httpClient.getCookieString(e),n={};n.Cookie=t;const[o,i]=Vt();n[o]=i,r=new this._options.EventSource(e,{withCredentials:this._options.withCredentials,headers:{...n,...this._options.headers}})}try{r.onmessage=e=>{if(this.onreceive)try{this._logger.log(Ot.Trace,`(SSE transport) data received. ${jt(e.data,this._options.logMessageContent)}.`),this.onreceive(e.data)}catch(e){return void this._close(e)}},r.onerror=e=>{i?this._close():o(new Error("EventSource failed to connect. The connection could not be found on the server, either the connection ID is not present on the server, or a proxy is refusing/buffering the connection. If you have multiple servers check that sticky sessions are enabled."))},r.onopen=()=>{this._logger.log(Ot.Information,`SSE connected to ${this._url}`),this._eventSource=r,i=!0,n()}}catch(e){return void o(e)}}else o(new Error("The Server-Sent Events transport only supports the 'Text' transfer format"))}))}async send(e){return this._eventSource?qt(this._logger,"SSE",this._httpClient,this._url,e,this._options):Promise.reject(new Error("Cannot send until the transport is connected"))}stop(){return this._close(),Promise.resolve()}_close(e){this._eventSource&&(this._eventSource.close(),this._eventSource=void 0,this.onclose&&this.onclose(e))}}class An{constructor(e,t,n,o,r,i){this._logger=n,this._accessTokenFactory=t,this._logMessageContent=o,this._webSocketConstructor=r,this._httpClient=e,this.onreceive=null,this.onclose=null,this._headers=i}async connect(e,t){let n;return Ht.isRequired(e,"url"),Ht.isRequired(t,"transferFormat"),Ht.isIn(t,kn,"transferFormat"),this._logger.log(Ot.Trace,"(WebSockets transport) Connecting."),this._accessTokenFactory&&(n=await this._accessTokenFactory()),new Promise(((o,r)=>{let i;e=e.replace(/^http/,"ws");const s=this._httpClient.getCookieString(e);let a=!1;if(Wt.isReactNative){const t={},[o,r]=Vt();t[o]=r,n&&(t[vn.Authorization]=`Bearer ${n}`),s&&(t[vn.Cookie]=s),i=new this._webSocketConstructor(e,void 0,{headers:{...t,...this._headers}})}else n&&(e+=(e.indexOf("?")<0?"?":"&")+`access_token=${encodeURIComponent(n)}`);i||(i=new this._webSocketConstructor(e)),t===kn.Binary&&(i.binaryType="arraybuffer"),i.onopen=t=>{this._logger.log(Ot.Information,`WebSocket connected to ${e}.`),this._webSocket=i,a=!0,o()},i.onerror=e=>{let t=null;t="undefined"!=typeof ErrorEvent&&e instanceof ErrorEvent?e.error:"There was an error with the transport",this._logger.log(Ot.Information,`(WebSockets transport) ${t}.`)},i.onmessage=e=>{if(this._logger.log(Ot.Trace,`(WebSockets transport) data received. ${jt(e.data,this._logMessageContent)}.`),this.onreceive)try{this.onreceive(e.data)}catch(e){return void this._close(e)}},i.onclose=e=>{if(a)this._close(e);else{let t=null;t="undefined"!=typeof ErrorEvent&&e instanceof ErrorEvent?e.error:"WebSocket failed to connect. The connection could not be found on the server, either the endpoint may not be a SignalR endpoint, the connection ID is not present on the server, or there is a proxy blocking WebSockets. If you have multiple servers check that sticky sessions are enabled.",r(new Error(t))}}}))}send(e){return this._webSocket&&this._webSocket.readyState===this._webSocketConstructor.OPEN?(this._logger.log(Ot.Trace,`(WebSockets transport) sending data. ${jt(e,this._logMessageContent)}.`),this._webSocket.send(e),Promise.resolve()):Promise.reject("WebSocket is not in the OPEN state")}stop(){return this._webSocket&&this._close(void 0),Promise.resolve()}_close(e){this._webSocket&&(this._webSocket.onclose=()=>{},this._webSocket.onmessage=()=>{},this._webSocket.onerror=()=>{},this._webSocket.close(),this._webSocket=void 0),this._logger.log(Ot.Trace,"(WebSockets transport) socket closed."),this.onclose&&(!this._isCloseEvent(e)||!1!==e.wasClean&&1e3===e.code?e instanceof Error?this.onclose(e):this.onclose():this.onclose(new Error(`WebSocket closed with status code: ${e.code} (${e.reason||"no reason given"}).`)))}_isCloseEvent(e){return e&&"boolean"==typeof e.wasClean&&"number"==typeof e.code}}class xn{constructor(e,t={}){if(this._stopPromiseResolver=()=>{},this.features={},this._negotiateVersion=1,Ht.isRequired(e,"url"),this._logger=function(e){return void 0===e?new Kt(Ot.Information):null===e?Ft.instance:void 0!==e.log?e:new Kt(e)}(t.logger),this.baseUrl=this._resolveUrl(e),(t=t||{}).logMessageContent=void 0!==t.logMessageContent&&t.logMessageContent,"boolean"!=typeof t.withCredentials&&void 0!==t.withCredentials)throw new Error("withCredentials option was not a 'boolean' or 'undefined' value");t.withCredentials=void 0===t.withCredentials||t.withCredentials,t.timeout=void 0===t.timeout?1e5:t.timeout,"undefined"==typeof WebSocket||t.WebSocket||(t.WebSocket=WebSocket),"undefined"==typeof EventSource||t.EventSource||(t.EventSource=EventSource),this._httpClient=new bn(t.httpClient||new En(this._logger),t.accessTokenFactory),this._connectionState="Disconnected",this._connectionStarted=!1,this._options=t,this.onreceive=null,this.onclose=null}async start(e){if(e=e||kn.Binary,Ht.isIn(e,kn,"transferFormat"),this._logger.log(Ot.Debug,`Starting connection with transfer format '${kn[e]}'.`),"Disconnected"!==this._connectionState)return Promise.reject(new Error("Cannot start an HttpConnection that is not in the 'Disconnected' state."));if(this._connectionState="Connecting",this._startInternalPromise=this._startInternal(e),await this._startInternalPromise,"Disconnecting"===this._connectionState){const e="Failed to start the HttpConnection before stop() was called.";return this._logger.log(Ot.Error,e),await this._stopPromise,Promise.reject(new nn(e))}if("Connected"!==this._connectionState){const e="HttpConnection.startInternal completed gracefully but didn't enter the connection into the connected state!";return this._logger.log(Ot.Error,e),Promise.reject(new nn(e))}this._connectionStarted=!0}send(e){return"Connected"!==this._connectionState?Promise.reject(new Error("Cannot send data if the connection is not in the 'Connected' State.")):(this._sendQueue||(this._sendQueue=new Nn(this.transport)),this._sendQueue.send(e))}async stop(e){return"Disconnected"===this._connectionState?(this._logger.log(Ot.Debug,`Call to HttpConnection.stop(${e}) ignored because the connection is already in the disconnected state.`),Promise.resolve()):"Disconnecting"===this._connectionState?(this._logger.log(Ot.Debug,`Call to HttpConnection.stop(${e}) ignored because the connection is already in the disconnecting state.`),this._stopPromise):(this._connectionState="Disconnecting",this._stopPromise=new Promise((e=>{this._stopPromiseResolver=e})),await this._stopInternal(e),void await this._stopPromise)}async _stopInternal(e){this._stopError=e;try{await this._startInternalPromise}catch(e){}if(this.transport){try{await this.transport.stop()}catch(e){this._logger.log(Ot.Error,`HttpConnection.transport.stop() threw error '${e}'.`),this._stopConnection()}this.transport=void 0}else this._logger.log(Ot.Debug,"HttpConnection.transport is undefined in HttpConnection.stop() because start() failed.")}async _startInternal(e){let t=this.baseUrl;this._accessTokenFactory=this._options.accessTokenFactory,this._httpClient._accessTokenFactory=this._accessTokenFactory;try{if(this._options.skipNegotiation){if(this._options.transport!==In.WebSockets)throw new Error("Negotiation can only be skipped when using the WebSocket transport directly.");this.transport=this._constructTransport(In.WebSockets),await this._startTransport(t,e)}else{let n=null,o=0;do{if(n=await this._getNegotiationResponse(t),"Disconnecting"===this._connectionState||"Disconnected"===this._connectionState)throw new nn("The connection was stopped during negotiation.");if(n.error)throw new Error(n.error);if(n.ProtocolVersion)throw new Error("Detected a connection attempt to an ASP.NET SignalR Server. This client only supports connecting to an ASP.NET Core SignalR Server. See https://aka.ms/signalr-core-differences for details.");if(n.url&&(t=n.url),n.accessToken){const e=n.accessToken;this._accessTokenFactory=()=>e,this._httpClient._accessToken=e,this._httpClient._accessTokenFactory=void 0}o++}while(n.url&&o<100);if(100===o&&n.url)throw new Error("Negotiate redirection limit exceeded.");await this._createTransport(t,this._options.transport,n,e)}this.transport instanceof Rn&&(this.features.inherentKeepAlive=!0),"Connecting"===this._connectionState&&(this._logger.log(Ot.Debug,"The HttpConnection connected successfully."),this._connectionState="Connected")}catch(e){return this._logger.log(Ot.Error,"Failed to start the connection: "+e),this._connectionState="Disconnected",this.transport=void 0,this._stopPromiseResolver(),Promise.reject(e)}}async _getNegotiationResponse(e){const t={},[n,o]=Vt();t[n]=o;const r=this._resolveNegotiateUrl(e);this._logger.log(Ot.Debug,`Sending negotiation request: ${r}.`);try{const e=await this._httpClient.post(r,{content:"",headers:{...t,...this._options.headers},timeout:this._options.timeout,withCredentials:this._options.withCredentials});if(200!==e.statusCode)return Promise.reject(new Error(`Unexpected status code returned from negotiate '${e.statusCode}'`));const n=JSON.parse(e.content);return(!n.negotiateVersion||n.negotiateVersion<1)&&(n.connectionToken=n.connectionId),n.useStatefulReconnect&&!0!==this._options._useStatefulReconnect?Promise.reject(new an("Client didn't negotiate Stateful Reconnect but the server did.")):n}catch(e){let t="Failed to complete negotiation with the server: "+e;return e instanceof en&&404===e.statusCode&&(t+=" Either this is not a SignalR endpoint or there is a proxy blocking the connection."),this._logger.log(Ot.Error,t),Promise.reject(new an(t))}}_createConnectUrl(e,t){return t?e+(-1===e.indexOf("?")?"?":"&")+`id=${t}`:e}async _createTransport(e,t,n,o){let r=this._createConnectUrl(e,n.connectionToken);if(this._isITransport(t))return this._logger.log(Ot.Debug,"Connection was provided an instance of ITransport, using that directly."),this.transport=t,await this._startTransport(r,o),void(this.connectionId=n.connectionId);const i=[],s=n.availableTransports||[];let a=n;for(const n of s){const s=this._resolveTransportOrError(n,t,o,!0===(null==a?void 0:a.useStatefulReconnect));if(s instanceof Error)i.push(`${n.transport} failed:`),i.push(s);else if(this._isITransport(s)){if(this.transport=s,!a){try{a=await this._getNegotiationResponse(e)}catch(e){return Promise.reject(e)}r=this._createConnectUrl(e,a.connectionToken)}try{return await this._startTransport(r,o),void(this.connectionId=a.connectionId)}catch(e){if(this._logger.log(Ot.Error,`Failed to start the transport '${n.transport}': ${e}`),a=void 0,i.push(new sn(`${n.transport} failed: ${e}`,In[n.transport])),"Connecting"!==this._connectionState){const e="Failed to select transport before stop() was called.";return this._logger.log(Ot.Debug,e),Promise.reject(new nn(e))}}}}return i.length>0?Promise.reject(new cn(`Unable to connect to the server with any of the available transports. ${i.join(" ")}`,i)):Promise.reject(new Error("None of the transports supported by the client are supported by the server."))}_constructTransport(e){switch(e){case In.WebSockets:if(!this._options.WebSocket)throw new Error("'WebSocket' is not supported in your environment.");return new An(this._httpClient,this._accessTokenFactory,this._logger,this._options.logMessageContent,this._options.WebSocket,this._options.headers||{});case In.ServerSentEvents:if(!this._options.EventSource)throw new Error("'EventSource' is not supported in your environment.");return new Dn(this._httpClient,this._httpClient._accessToken,this._logger,this._options);case In.LongPolling:return new Rn(this._httpClient,this._logger,this._options);default:throw new Error(`Unknown transport: ${e}.`)}}_startTransport(e,t){return this.transport.onreceive=this.onreceive,this.features.reconnect?this.transport.onclose=async n=>{let o=!1;if(this.features.reconnect){try{this.features.disconnected(),await this.transport.connect(e,t),await this.features.resend()}catch{o=!0}o&&this._stopConnection(n)}else this._stopConnection(n)}:this.transport.onclose=e=>this._stopConnection(e),this.transport.connect(e,t)}_resolveTransportOrError(e,t,n,o){const r=In[e.transport];if(null==r)return this._logger.log(Ot.Debug,`Skipping transport '${e.transport}' because it is not supported by this client.`),new Error(`Skipping transport '${e.transport}' because it is not supported by this client.`);if(!function(e,t){return!e||0!=(t&e)}(t,r))return this._logger.log(Ot.Debug,`Skipping transport '${In[r]}' because it was disabled by the client.`),new rn(`'${In[r]}' is disabled by the client.`,r);if(!(e.transferFormats.map((e=>kn[e])).indexOf(n)>=0))return this._logger.log(Ot.Debug,`Skipping transport '${In[r]}' because it does not support the requested transfer format '${kn[n]}'.`),new Error(`'${In[r]}' does not support ${kn[n]}.`);if(r===In.WebSockets&&!this._options.WebSocket||r===In.ServerSentEvents&&!this._options.EventSource)return this._logger.log(Ot.Debug,`Skipping transport '${In[r]}' because it is not supported in your environment.'`),new on(`'${In[r]}' is not supported in your environment.`,r);this._logger.log(Ot.Debug,`Selecting transport '${In[r]}'.`);try{return this.features.reconnect=r===In.WebSockets?o:void 0,this._constructTransport(r)}catch(e){return e}}_isITransport(e){return e&&"object"==typeof e&&"connect"in e}_stopConnection(e){if(this._logger.log(Ot.Debug,`HttpConnection.stopConnection(${e}) called while in state ${this._connectionState}.`),this.transport=void 0,e=this._stopError||e,this._stopError=void 0,"Disconnected"!==this._connectionState){if("Connecting"===this._connectionState)throw this._logger.log(Ot.Warning,`Call to HttpConnection.stopConnection(${e}) was ignored because the connection is still in the connecting state.`),new Error(`HttpConnection.stopConnection(${e}) was called while the connection is still in the connecting state.`);if("Disconnecting"===this._connectionState&&this._stopPromiseResolver(),e?this._logger.log(Ot.Error,`Connection disconnected with error '${e}'.`):this._logger.log(Ot.Information,"Connection disconnected."),this._sendQueue&&(this._sendQueue.stop().catch((e=>{this._logger.log(Ot.Error,`TransportSendQueue.stop() threw error '${e}'.`)})),this._sendQueue=void 0),this.connectionId=void 0,this._connectionState="Disconnected",this._connectionStarted){this._connectionStarted=!1;try{this.onclose&&this.onclose(e)}catch(t){this._logger.log(Ot.Error,`HttpConnection.onclose(${e}) threw error '${t}'.`)}}}else this._logger.log(Ot.Debug,`Call to HttpConnection.stopConnection(${e}) was ignored because the connection is already in the disconnected state.`)}_resolveUrl(e){if(0===e.lastIndexOf("https://",0)||0===e.lastIndexOf("http://",0))return e;if(!Wt.isBrowser)throw new Error(`Cannot resolve '${e}'.`);const t=window.document.createElement("a");return t.href=e,this._logger.log(Ot.Information,`Normalizing '${e}' to '${t.href}'.`),t.href}_resolveNegotiateUrl(e){const t=new URL(e);t.pathname.endsWith("/")?t.pathname+="negotiate":t.pathname+="/negotiate";const n=new URLSearchParams(t.searchParams);return n.has("negotiateVersion")||n.append("negotiateVersion",this._negotiateVersion.toString()),n.has("useStatefulReconnect")?"true"===n.get("useStatefulReconnect")&&(this._options._useStatefulReconnect=!0):!0===this._options._useStatefulReconnect&&n.append("useStatefulReconnect","true"),t.search=n.toString(),t.toString()}}class Nn{constructor(e){this._transport=e,this._buffer=[],this._executing=!0,this._sendBufferedData=new Pn,this._transportResult=new Pn,this._sendLoopPromise=this._sendLoop()}send(e){return this._bufferData(e),this._transportResult||(this._transportResult=new Pn),this._transportResult.promise}stop(){return this._executing=!1,this._sendBufferedData.resolve(),this._sendLoopPromise}_bufferData(e){if(this._buffer.length&&typeof this._buffer[0]!=typeof e)throw new Error(`Expected data to be of type ${typeof this._buffer} but was of type ${typeof e}`);this._buffer.push(e),this._sendBufferedData.resolve()}async _sendLoop(){for(;;){if(await this._sendBufferedData.promise,!this._executing){this._transportResult&&this._transportResult.reject("Connection stopped.");break}this._sendBufferedData=new Pn;const e=this._transportResult;this._transportResult=void 0;const t="string"==typeof this._buffer[0]?this._buffer.join(""):Nn._concatBuffers(this._buffer);this._buffer.length=0;try{await this._transport.send(t),e.resolve()}catch(t){e.reject(t)}}}static _concatBuffers(e){const t=e.map((e=>e.byteLength)).reduce(((e,t)=>e+t)),n=new Uint8Array(t);let o=0;for(const t of e)n.set(new Uint8Array(t),o),o+=t.byteLength;return n.buffer}}class Pn{constructor(){this.promise=new Promise(((e,t)=>[this._resolver,this._rejecter]=[e,t]))}resolve(){this._resolver()}reject(e){this._rejecter(e)}}class Mn{constructor(){this.name="json",this.version=2,this.transferFormat=kn.Text}parseMessages(e,t){if("string"!=typeof e)throw new Error("Invalid input for JSON hub protocol. Expected a string.");if(!e)return[];null===t&&(t=Ft.instance);const n=Bt.parse(e),o=[];for(const e of n){const n=JSON.parse(e);if("number"!=typeof n.type)throw new Error("Invalid payload.");switch(n.type){case ln.Invocation:this._isInvocationMessage(n);break;case ln.StreamItem:this._isStreamItemMessage(n);break;case ln.Completion:this._isCompletionMessage(n);break;case ln.Ping:case ln.Close:break;case ln.Ack:this._isAckMessage(n);break;case ln.Sequence:this._isSequenceMessage(n);break;default:t.log(Ot.Information,"Unknown message type '"+n.type+"' ignored.");continue}o.push(n)}return o}writeMessage(e){return Bt.write(JSON.stringify(e))}_isInvocationMessage(e){this._assertNotEmptyString(e.target,"Invalid payload for Invocation message."),void 0!==e.invocationId&&this._assertNotEmptyString(e.invocationId,"Invalid payload for Invocation message.")}_isStreamItemMessage(e){if(this._assertNotEmptyString(e.invocationId,"Invalid payload for StreamItem message."),void 0===e.item)throw new Error("Invalid payload for StreamItem message.")}_isCompletionMessage(e){if(e.result&&e.error)throw new Error("Invalid payload for Completion message.");!e.result&&e.error&&this._assertNotEmptyString(e.error,"Invalid payload for Completion message."),this._assertNotEmptyString(e.invocationId,"Invalid payload for Completion message.")}_isAckMessage(e){if("number"!=typeof e.sequenceId)throw new Error("Invalid SequenceId for Ack message.")}_isSequenceMessage(e){if("number"!=typeof e.sequenceId)throw new Error("Invalid SequenceId for Sequence message.")}_assertNotEmptyString(e,t){if("string"!=typeof e||""===e)throw new Error(t)}}const Un={trace:Ot.Trace,debug:Ot.Debug,info:Ot.Information,information:Ot.Information,warn:Ot.Warning,warning:Ot.Warning,error:Ot.Error,critical:Ot.Critical,none:Ot.None};class Ln{configureLogging(e){if(Ht.isRequired(e,"logging"),function(e){return void 0!==e.log}(e))this.logger=e;else if("string"==typeof e){const t=function(e){const t=Un[e.toLowerCase()];if(void 0!==t)return t;throw new Error(`Unknown log level: ${e}`)}(e);this.logger=new Kt(t)}else this.logger=new Kt(e);return this}withUrl(e,t){return Ht.isRequired(e,"url"),Ht.isNotEmpty(e,"url"),this.url=e,this.httpConnectionOptions="object"==typeof t?{...this.httpConnectionOptions,...t}:{...this.httpConnectionOptions,transport:t},this}withHubProtocol(e){return Ht.isRequired(e,"protocol"),this.protocol=e,this}withAutomaticReconnect(e){if(this.reconnectPolicy)throw new Error("A reconnectPolicy has already been set.");return e?Array.isArray(e)?this.reconnectPolicy=new mn(e):this.reconnectPolicy=e:this.reconnectPolicy=new mn,this}withServerTimeout(e){return Ht.isRequired(e,"milliseconds"),this._serverTimeoutInMilliseconds=e,this}withKeepAliveInterval(e){return Ht.isRequired(e,"milliseconds"),this._keepAliveIntervalInMilliseconds=e,this}withStatefulReconnect(e){return void 0===this.httpConnectionOptions&&(this.httpConnectionOptions={}),this.httpConnectionOptions._useStatefulReconnect=!0,this._statefulReconnectBufferSize=null==e?void 0:e.bufferSize,this}build(){const e=this.httpConnectionOptions||{};if(void 0===e.logger&&(e.logger=this.logger),!this.url)throw new Error("The 'HubConnectionBuilder.withUrl' method must be called before building the connection.");const t=new xn(this.url,e);return fn.create(t,this.logger||Ft.instance,this.protocol||new Mn,this.reconnectPolicy,this._serverTimeoutInMilliseconds,this._keepAliveIntervalInMilliseconds,this._statefulReconnectBufferSize)}}var Bn;!function(e){e[e.Default=0]="Default",e[e.Server=1]="Server",e[e.WebAssembly=2]="WebAssembly",e[e.WebView=3]="WebView"}(Bn||(Bn={}));var On,Fn,$n,Hn=4294967295;function Wn(e,t,n){var o=Math.floor(n/4294967296),r=n;e.setUint32(t,o),e.setUint32(t+4,r)}function jn(e,t){return 4294967296*e.getInt32(t)+e.getUint32(t+4)}var zn=("undefined"==typeof process||"never"!==(null===(On=null===process||void 0===process?void 0:process.env)||void 0===On?void 0:On.TEXT_ENCODING))&&"undefined"!=typeof TextEncoder&&"undefined"!=typeof TextDecoder;function qn(e){for(var t=e.length,n=0,o=0;o=55296&&r<=56319&&o65535&&(h-=65536,i.push(h>>>10&1023|55296),h=56320|1023&h),i.push(h)}else i.push(a);i.length>=4096&&(s+=String.fromCharCode.apply(String,i),i.length=0)}return i.length>0&&(s+=String.fromCharCode.apply(String,i)),s}var Gn,Yn=zn?new TextDecoder:null,Qn=zn?"undefined"!=typeof process&&"force"!==(null===($n=null===process||void 0===process?void 0:process.env)||void 0===$n?void 0:$n.TEXT_DECODER)?200:0:Hn,Zn=function(e,t){this.type=e,this.data=t},eo=(Gn=function(e,t){return Gn=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},Gn(e,t)},function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function n(){this.constructor=e}Gn(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}),to=function(e){function t(n){var o=e.call(this,n)||this,r=Object.create(t.prototype);return Object.setPrototypeOf(o,r),Object.defineProperty(o,"name",{configurable:!0,enumerable:!1,value:t.name}),o}return eo(t,e),t}(Error),no={type:-1,encode:function(e){var t,n,o,r;return e instanceof Date?function(e){var t,n=e.sec,o=e.nsec;if(n>=0&&o>=0&&n<=17179869183){if(0===o&&n<=4294967295){var r=new Uint8Array(4);return(t=new DataView(r.buffer)).setUint32(0,n),r}var i=n/4294967296,s=4294967295&n;return r=new Uint8Array(8),(t=new DataView(r.buffer)).setUint32(0,o<<2|3&i),t.setUint32(4,s),r}return r=new Uint8Array(12),(t=new DataView(r.buffer)).setUint32(0,o),Wn(t,4,n),r}((o=1e6*((t=e.getTime())-1e3*(n=Math.floor(t/1e3))),{sec:n+(r=Math.floor(o/1e9)),nsec:o-1e9*r})):null},decode:function(e){var t=function(e){var t=new DataView(e.buffer,e.byteOffset,e.byteLength);switch(e.byteLength){case 4:return{sec:t.getUint32(0),nsec:0};case 8:var n=t.getUint32(0);return{sec:4294967296*(3&n)+t.getUint32(4),nsec:n>>>2};case 12:return{sec:jn(t,4),nsec:t.getUint32(0)};default:throw new to("Unrecognized data size for timestamp (expected 4, 8, or 12): ".concat(e.length))}}(e);return new Date(1e3*t.sec+t.nsec/1e6)}},oo=function(){function e(){this.builtInEncoders=[],this.builtInDecoders=[],this.encoders=[],this.decoders=[],this.register(no)}return e.prototype.register=function(e){var t=e.type,n=e.encode,o=e.decode;if(t>=0)this.encoders[t]=n,this.decoders[t]=o;else{var r=1+t;this.builtInEncoders[r]=n,this.builtInDecoders[r]=o}},e.prototype.tryToEncode=function(e,t){for(var n=0;nthis.maxDepth)throw new Error("Too deep objects in depth ".concat(t));null==e?this.encodeNil():"boolean"==typeof e?this.encodeBoolean(e):"number"==typeof e?this.encodeNumber(e):"string"==typeof e?this.encodeString(e):this.encodeObject(e,t)},e.prototype.ensureBufferSizeToWrite=function(e){var t=this.pos+e;this.view.byteLength=0?e<128?this.writeU8(e):e<256?(this.writeU8(204),this.writeU8(e)):e<65536?(this.writeU8(205),this.writeU16(e)):e<4294967296?(this.writeU8(206),this.writeU32(e)):(this.writeU8(207),this.writeU64(e)):e>=-32?this.writeU8(224|e+32):e>=-128?(this.writeU8(208),this.writeI8(e)):e>=-32768?(this.writeU8(209),this.writeI16(e)):e>=-2147483648?(this.writeU8(210),this.writeI32(e)):(this.writeU8(211),this.writeI64(e)):this.forceFloat32?(this.writeU8(202),this.writeF32(e)):(this.writeU8(203),this.writeF64(e))},e.prototype.writeStringHeader=function(e){if(e<32)this.writeU8(160+e);else if(e<256)this.writeU8(217),this.writeU8(e);else if(e<65536)this.writeU8(218),this.writeU16(e);else{if(!(e<4294967296))throw new Error("Too long string: ".concat(e," bytes in UTF-8"));this.writeU8(219),this.writeU32(e)}},e.prototype.encodeString=function(e){if(e.length>Kn){var t=qn(e);this.ensureBufferSizeToWrite(5+t),this.writeStringHeader(t),Vn(e,this.bytes,this.pos),this.pos+=t}else t=qn(e),this.ensureBufferSizeToWrite(5+t),this.writeStringHeader(t),function(e,t,n){for(var o=e.length,r=n,i=0;i>6&31|192;else{if(s>=55296&&s<=56319&&i>12&15|224,t[r++]=s>>6&63|128):(t[r++]=s>>18&7|240,t[r++]=s>>12&63|128,t[r++]=s>>6&63|128)}t[r++]=63&s|128}else t[r++]=s}}(e,this.bytes,this.pos),this.pos+=t},e.prototype.encodeObject=function(e,t){var n=this.extensionCodec.tryToEncode(e,this.context);if(null!=n)this.encodeExtension(n);else if(Array.isArray(e))this.encodeArray(e,t);else if(ArrayBuffer.isView(e))this.encodeBinary(e);else{if("object"!=typeof e)throw new Error("Unrecognized object: ".concat(Object.prototype.toString.apply(e)));this.encodeMap(e,t)}},e.prototype.encodeBinary=function(e){var t=e.byteLength;if(t<256)this.writeU8(196),this.writeU8(t);else if(t<65536)this.writeU8(197),this.writeU16(t);else{if(!(t<4294967296))throw new Error("Too large binary: ".concat(t));this.writeU8(198),this.writeU32(t)}var n=ro(e);this.writeU8a(n)},e.prototype.encodeArray=function(e,t){var n=e.length;if(n<16)this.writeU8(144+n);else if(n<65536)this.writeU8(220),this.writeU16(n);else{if(!(n<4294967296))throw new Error("Too large array: ".concat(n));this.writeU8(221),this.writeU32(n)}for(var o=0,r=e;o0&&e<=this.maxKeyLength},e.prototype.find=function(e,t,n){e:for(var o=0,r=this.caches[n-1];o=this.maxLengthPerKey?n[Math.random()*n.length|0]=o:n.push(o)},e.prototype.decode=function(e,t,n){var o=this.find(e,t,n);if(null!=o)return this.hit++,o;this.miss++;var r=Xn(e,t,n),i=Uint8Array.prototype.slice.call(e,t,t+n);return this.store(i,r),r},e}(),co=function(e,t){var n,o,r,i,s={label:0,sent:function(){if(1&r[0])throw r[1];return r[1]},trys:[],ops:[]};return i={next:a(0),throw:a(1),return:a(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function a(i){return function(a){return function(i){if(n)throw new TypeError("Generator is already executing.");for(;s;)try{if(n=1,o&&(r=2&i[0]?o.return:i[0]?o.throw||((r=o.return)&&r.call(o),0):o.next)&&!(r=r.call(o,i[1])).done)return r;switch(o=0,r&&(i=[2&i[0],r.value]),i[0]){case 0:case 1:r=i;break;case 4:return s.label++,{value:i[1],done:!1};case 5:s.label++,o=i[1],i=[0];continue;case 7:i=s.ops.pop(),s.trys.pop();continue;default:if(!((r=(r=s.trys).length>0&&r[r.length-1])||6!==i[0]&&2!==i[0])){s=0;continue}if(3===i[0]&&(!r||i[1]>r[0]&&i[1]=e},e.prototype.createExtraByteError=function(e){var t=this.view,n=this.pos;return new RangeError("Extra ".concat(t.byteLength-n," of ").concat(t.byteLength," byte(s) found at buffer[").concat(e,"]"))},e.prototype.decode=function(e){this.reinitializeState(),this.setBuffer(e);var t=this.doDecodeSync();if(this.hasRemaining(1))throw this.createExtraByteError(this.pos);return t},e.prototype.decodeMulti=function(e){return co(this,(function(t){switch(t.label){case 0:this.reinitializeState(),this.setBuffer(e),t.label=1;case 1:return this.hasRemaining(1)?[4,this.doDecodeSync()]:[3,3];case 2:return t.sent(),[3,1];case 3:return[2]}}))},e.prototype.decodeAsync=function(e){var t,n,o,r,i,s,a;return i=this,void 0,a=function(){var i,s,a,c,l,h,d,u;return co(this,(function(p){switch(p.label){case 0:i=!1,p.label=1;case 1:p.trys.push([1,6,7,12]),t=lo(e),p.label=2;case 2:return[4,t.next()];case 3:if((n=p.sent()).done)return[3,5];if(a=n.value,i)throw this.createExtraByteError(this.totalPos);this.appendBuffer(a);try{s=this.doDecodeSync(),i=!0}catch(e){if(!(e instanceof fo))throw e}this.totalPos+=this.pos,p.label=4;case 4:return[3,2];case 5:return[3,12];case 6:return c=p.sent(),o={error:c},[3,12];case 7:return p.trys.push([7,,10,11]),n&&!n.done&&(r=t.return)?[4,r.call(t)]:[3,9];case 8:p.sent(),p.label=9;case 9:return[3,11];case 10:if(o)throw o.error;return[7];case 11:return[7];case 12:if(i){if(this.hasRemaining(1))throw this.createExtraByteError(this.totalPos);return[2,s]}throw h=(l=this).headByte,d=l.pos,u=l.totalPos,new RangeError("Insufficient data in parsing ".concat(so(h)," at ").concat(u," (").concat(d," in the current buffer)"))}}))},new((s=void 0)||(s=Promise))((function(e,t){function n(e){try{r(a.next(e))}catch(e){t(e)}}function o(e){try{r(a.throw(e))}catch(e){t(e)}}function r(t){var r;t.done?e(t.value):(r=t.value,r instanceof s?r:new s((function(e){e(r)}))).then(n,o)}r((a=a.apply(i,[])).next())}))},e.prototype.decodeArrayStream=function(e){return this.decodeMultiAsync(e,!0)},e.prototype.decodeStream=function(e){return this.decodeMultiAsync(e,!1)},e.prototype.decodeMultiAsync=function(e,t){return function(n,o,r){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var i,s=function(){var n,o,r,i,s,a,c,l,h;return co(this,(function(d){switch(d.label){case 0:n=t,o=-1,d.label=1;case 1:d.trys.push([1,13,14,19]),r=lo(e),d.label=2;case 2:return[4,ho(r.next())];case 3:if((i=d.sent()).done)return[3,12];if(s=i.value,t&&0===o)throw this.createExtraByteError(this.totalPos);this.appendBuffer(s),n&&(o=this.readArraySize(),n=!1,this.complete()),d.label=4;case 4:d.trys.push([4,9,,10]),d.label=5;case 5:return[4,ho(this.doDecodeSync())];case 6:return[4,d.sent()];case 7:return d.sent(),0==--o?[3,8]:[3,5];case 8:return[3,10];case 9:if(!((a=d.sent())instanceof fo))throw a;return[3,10];case 10:this.totalPos+=this.pos,d.label=11;case 11:return[3,2];case 12:return[3,19];case 13:return c=d.sent(),l={error:c},[3,19];case 14:return d.trys.push([14,,17,18]),i&&!i.done&&(h=r.return)?[4,ho(h.call(r))]:[3,16];case 15:d.sent(),d.label=16;case 16:return[3,18];case 17:if(l)throw l.error;return[7];case 18:return[7];case 19:return[2]}}))}.apply(n,o||[]),a=[];return i={},c("next"),c("throw"),c("return"),i[Symbol.asyncIterator]=function(){return this},i;function c(e){s[e]&&(i[e]=function(t){return new Promise((function(n,o){a.push([e,t,n,o])>1||l(e,t)}))})}function l(e,t){try{(n=s[e](t)).value instanceof ho?Promise.resolve(n.value.v).then(h,d):u(a[0][2],n)}catch(e){u(a[0][3],e)}var n}function h(e){l("next",e)}function d(e){l("throw",e)}function u(e,t){e(t),a.shift(),a.length&&l(a[0][0],a[0][1])}}(this,arguments)},e.prototype.doDecodeSync=function(){e:for(;;){var e=this.readHeadByte(),t=void 0;if(e>=224)t=e-256;else if(e<192)if(e<128)t=e;else if(e<144){if(0!=(o=e-128)){this.pushMapState(o),this.complete();continue e}t={}}else if(e<160){if(0!=(o=e-144)){this.pushArrayState(o),this.complete();continue e}t=[]}else{var n=e-160;t=this.decodeUtf8String(n,0)}else if(192===e)t=null;else if(194===e)t=!1;else if(195===e)t=!0;else if(202===e)t=this.readF32();else if(203===e)t=this.readF64();else if(204===e)t=this.readU8();else if(205===e)t=this.readU16();else if(206===e)t=this.readU32();else if(207===e)t=this.readU64();else if(208===e)t=this.readI8();else if(209===e)t=this.readI16();else if(210===e)t=this.readI32();else if(211===e)t=this.readI64();else if(217===e)n=this.lookU8(),t=this.decodeUtf8String(n,1);else if(218===e)n=this.lookU16(),t=this.decodeUtf8String(n,2);else if(219===e)n=this.lookU32(),t=this.decodeUtf8String(n,4);else if(220===e){if(0!==(o=this.readU16())){this.pushArrayState(o),this.complete();continue e}t=[]}else if(221===e){if(0!==(o=this.readU32())){this.pushArrayState(o),this.complete();continue e}t=[]}else if(222===e){if(0!==(o=this.readU16())){this.pushMapState(o),this.complete();continue e}t={}}else if(223===e){if(0!==(o=this.readU32())){this.pushMapState(o),this.complete();continue e}t={}}else if(196===e){var o=this.lookU8();t=this.decodeBinary(o,1)}else if(197===e)o=this.lookU16(),t=this.decodeBinary(o,2);else if(198===e)o=this.lookU32(),t=this.decodeBinary(o,4);else if(212===e)t=this.decodeExtension(1,0);else if(213===e)t=this.decodeExtension(2,0);else if(214===e)t=this.decodeExtension(4,0);else if(215===e)t=this.decodeExtension(8,0);else if(216===e)t=this.decodeExtension(16,0);else if(199===e)o=this.lookU8(),t=this.decodeExtension(o,1);else if(200===e)o=this.lookU16(),t=this.decodeExtension(o,2);else{if(201!==e)throw new to("Unrecognized type byte: ".concat(so(e)));o=this.lookU32(),t=this.decodeExtension(o,4)}this.complete();for(var r=this.stack;r.length>0;){var i=r[r.length-1];if(0===i.type){if(i.array[i.position]=t,i.position++,i.position!==i.size)continue e;r.pop(),t=i.array}else{if(1===i.type){if("string"!=(s=typeof t)&&"number"!==s)throw new to("The type of key must be string or number but "+typeof t);if("__proto__"===t)throw new to("The key __proto__ is not allowed");i.key=t,i.type=2;continue e}if(i.map[i.key]=t,i.readCount++,i.readCount!==i.size){i.key=null,i.type=1;continue e}r.pop(),t=i.map}}return t}var s},e.prototype.readHeadByte=function(){return-1===this.headByte&&(this.headByte=this.readU8()),this.headByte},e.prototype.complete=function(){this.headByte=-1},e.prototype.readArraySize=function(){var e=this.readHeadByte();switch(e){case 220:return this.readU16();case 221:return this.readU32();default:if(e<160)return e-144;throw new to("Unrecognized array type byte: ".concat(so(e)))}},e.prototype.pushMapState=function(e){if(e>this.maxMapLength)throw new to("Max length exceeded: map length (".concat(e,") > maxMapLengthLength (").concat(this.maxMapLength,")"));this.stack.push({type:1,size:e,key:null,readCount:0,map:{}})},e.prototype.pushArrayState=function(e){if(e>this.maxArrayLength)throw new to("Max length exceeded: array length (".concat(e,") > maxArrayLength (").concat(this.maxArrayLength,")"));this.stack.push({type:0,size:e,array:new Array(e),position:0})},e.prototype.decodeUtf8String=function(e,t){var n;if(e>this.maxStrLength)throw new to("Max length exceeded: UTF-8 byte length (".concat(e,") > maxStrLength (").concat(this.maxStrLength,")"));if(this.bytes.byteLengthQn?function(e,t,n){var o=e.subarray(t,t+n);return Yn.decode(o)}(this.bytes,r,e):Xn(this.bytes,r,e),this.pos+=t+e,o},e.prototype.stateIsMapKey=function(){return this.stack.length>0&&1===this.stack[this.stack.length-1].type},e.prototype.decodeBinary=function(e,t){if(e>this.maxBinLength)throw new to("Max length exceeded: bin length (".concat(e,") > maxBinLength (").concat(this.maxBinLength,")"));if(!this.hasRemaining(e+t))throw go;var n=this.pos+t,o=this.bytes.subarray(n,n+e);return this.pos+=t+e,o},e.prototype.decodeExtension=function(e,t){if(e>this.maxExtLength)throw new to("Max length exceeded: ext length (".concat(e,") > maxExtLength (").concat(this.maxExtLength,")"));var n=this.view.getInt8(this.pos+t),o=this.decodeBinary(e,t+1);return this.extensionCodec.decode(o,n,this.context)},e.prototype.lookU8=function(){return this.view.getUint8(this.pos)},e.prototype.lookU16=function(){return this.view.getUint16(this.pos)},e.prototype.lookU32=function(){return this.view.getUint32(this.pos)},e.prototype.readU8=function(){var e=this.view.getUint8(this.pos);return this.pos++,e},e.prototype.readI8=function(){var e=this.view.getInt8(this.pos);return this.pos++,e},e.prototype.readU16=function(){var e=this.view.getUint16(this.pos);return this.pos+=2,e},e.prototype.readI16=function(){var e=this.view.getInt16(this.pos);return this.pos+=2,e},e.prototype.readU32=function(){var e=this.view.getUint32(this.pos);return this.pos+=4,e},e.prototype.readI32=function(){var e=this.view.getInt32(this.pos);return this.pos+=4,e},e.prototype.readU64=function(){var e,t,n=(e=this.view,t=this.pos,4294967296*e.getUint32(t)+e.getUint32(t+4));return this.pos+=8,n},e.prototype.readI64=function(){var e=jn(this.view,this.pos);return this.pos+=8,e},e.prototype.readF32=function(){var e=this.view.getFloat32(this.pos);return this.pos+=4,e},e.prototype.readF64=function(){var e=this.view.getFloat64(this.pos);return this.pos+=8,e},e}();class yo{static write(e){let t=e.byteLength||e.length;const n=[];do{let e=127&t;t>>=7,t>0&&(e|=128),n.push(e)}while(t>0);t=e.byteLength||e.length;const o=new Uint8Array(n.length+t);return o.set(n,0),o.set(e,n.length),o.buffer}static parse(e){const t=[],n=new Uint8Array(e),o=[0,7,14,21,28];for(let r=0;r7)throw new Error("Messages bigger than 2GB are not supported.");if(!(n.byteLength>=r+s+a))throw new Error("Incomplete message.");t.push(n.slice?n.slice(r+s,r+s+a):n.subarray(r+s,r+s+a)),r=r+s+a}return t}}const wo=new Uint8Array([145,ln.Ping]);class bo{constructor(e){this.name="messagepack",this.version=2,this.transferFormat=kn.Binary,this._errorResult=1,this._voidResult=2,this._nonVoidResult=3,e=e||{},this._encoder=new io(e.extensionCodec,e.context,e.maxDepth,e.initialBufferSize,e.sortKeys,e.forceFloat32,e.ignoreUndefined,e.forceIntegerToFloat),this._decoder=new vo(e.extensionCodec,e.context,e.maxStrLength,e.maxBinLength,e.maxArrayLength,e.maxMapLength,e.maxExtLength)}parseMessages(e,t){if(!(n=e)||"undefined"==typeof ArrayBuffer||!(n instanceof ArrayBuffer||n.constructor&&"ArrayBuffer"===n.constructor.name))throw new Error("Invalid input for MessagePack hub protocol. Expected an ArrayBuffer.");var n;null===t&&(t=Ft.instance);const o=yo.parse(e),r=[];for(const e of o){const n=this._parseMessage(e,t);n&&r.push(n)}return r}writeMessage(e){switch(e.type){case ln.Invocation:return this._writeInvocation(e);case ln.StreamInvocation:return this._writeStreamInvocation(e);case ln.StreamItem:return this._writeStreamItem(e);case ln.Completion:return this._writeCompletion(e);case ln.Ping:return yo.write(wo);case ln.CancelInvocation:return this._writeCancelInvocation(e);case ln.Close:return this._writeClose();case ln.Ack:return this._writeAck(e);case ln.Sequence:return this._writeSequence(e);default:throw new Error("Invalid message type.")}}_parseMessage(e,t){if(0===e.length)throw new Error("Invalid payload.");const n=this._decoder.decode(e);if(0===n.length||!(n instanceof Array))throw new Error("Invalid payload.");const o=n[0];switch(o){case ln.Invocation:return this._createInvocationMessage(this._readHeaders(n),n);case ln.StreamItem:return this._createStreamItemMessage(this._readHeaders(n),n);case ln.Completion:return this._createCompletionMessage(this._readHeaders(n),n);case ln.Ping:return this._createPingMessage(n);case ln.Close:return this._createCloseMessage(n);case ln.Ack:return this._createAckMessage(n);case ln.Sequence:return this._createSequenceMessage(n);default:return t.log(Ot.Information,"Unknown message type '"+o+"' ignored."),null}}_createCloseMessage(e){if(e.length<2)throw new Error("Invalid payload for Close message.");return{allowReconnect:e.length>=3?e[2]:void 0,error:e[1],type:ln.Close}}_createPingMessage(e){if(e.length<1)throw new Error("Invalid payload for Ping message.");return{type:ln.Ping}}_createInvocationMessage(e,t){if(t.length<5)throw new Error("Invalid payload for Invocation message.");const n=t[2];return n?{arguments:t[4],headers:e,invocationId:n,streamIds:[],target:t[3],type:ln.Invocation}:{arguments:t[4],headers:e,streamIds:[],target:t[3],type:ln.Invocation}}_createStreamItemMessage(e,t){if(t.length<4)throw new Error("Invalid payload for StreamItem message.");return{headers:e,invocationId:t[2],item:t[3],type:ln.StreamItem}}_createCompletionMessage(e,t){if(t.length<4)throw new Error("Invalid payload for Completion message.");const n=t[3];if(n!==this._voidResult&&t.length<5)throw new Error("Invalid payload for Completion message.");let o,r;switch(n){case this._errorResult:o=t[4];break;case this._nonVoidResult:r=t[4]}return{error:o,headers:e,invocationId:t[2],result:r,type:ln.Completion}}_createAckMessage(e){if(e.length<1)throw new Error("Invalid payload for Ack message.");return{sequenceId:e[1],type:ln.Ack}}_createSequenceMessage(e){if(e.length<1)throw new Error("Invalid payload for Sequence message.");return{sequenceId:e[1],type:ln.Sequence}}_writeInvocation(e){let t;return t=e.streamIds?this._encoder.encode([ln.Invocation,e.headers||{},e.invocationId||null,e.target,e.arguments,e.streamIds]):this._encoder.encode([ln.Invocation,e.headers||{},e.invocationId||null,e.target,e.arguments]),yo.write(t.slice())}_writeStreamInvocation(e){let t;return t=e.streamIds?this._encoder.encode([ln.StreamInvocation,e.headers||{},e.invocationId,e.target,e.arguments,e.streamIds]):this._encoder.encode([ln.StreamInvocation,e.headers||{},e.invocationId,e.target,e.arguments]),yo.write(t.slice())}_writeStreamItem(e){const t=this._encoder.encode([ln.StreamItem,e.headers||{},e.invocationId,e.item]);return yo.write(t.slice())}_writeCompletion(e){const t=e.error?this._errorResult:void 0!==e.result?this._nonVoidResult:this._voidResult;let n;switch(t){case this._errorResult:n=this._encoder.encode([ln.Completion,e.headers||{},e.invocationId,t,e.error]);break;case this._voidResult:n=this._encoder.encode([ln.Completion,e.headers||{},e.invocationId,t]);break;case this._nonVoidResult:n=this._encoder.encode([ln.Completion,e.headers||{},e.invocationId,t,e.result])}return yo.write(n.slice())}_writeCancelInvocation(e){const t=this._encoder.encode([ln.CancelInvocation,e.headers||{},e.invocationId]);return yo.write(t.slice())}_writeClose(){const e=this._encoder.encode([ln.Close,null]);return yo.write(e.slice())}_writeAck(e){const t=this._encoder.encode([ln.Ack,e.sequenceId]);return yo.write(t.slice())}_writeSequence(e){const t=this._encoder.encode([ln.Sequence,e.sequenceId]);return yo.write(t.slice())}_readHeaders(e){const t=e[1];if("object"!=typeof t)throw new Error("Invalid headers.");return t}}const _o="function"==typeof TextDecoder?new TextDecoder("utf-8"):null,So=_o?_o.decode.bind(_o):function(e){let t=0;const n=e.length,o=[],r=[];for(;t65535&&(r-=65536,o.push(r>>>10&1023|55296),r=56320|1023&r),o.push(r)}o.length>1024&&(r.push(String.fromCharCode.apply(null,o)),o.length=0)}return r.push(String.fromCharCode.apply(null,o)),r.join("")},Co=Math.pow(2,32),Eo=Math.pow(2,21)-1;function Io(e,t){return e[t]|e[t+1]<<8|e[t+2]<<16|e[t+3]<<24}function ko(e,t){return e[t]+(e[t+1]<<8)+(e[t+2]<<16)+(e[t+3]<<24>>>0)}function To(e,t){const n=ko(e,t+4);if(n>Eo)throw new Error(`Cannot read uint64 with high order part ${n}, because the result would exceed Number.MAX_SAFE_INTEGER.`);return n*Co+ko(e,t)}class Ro{constructor(e){this.batchData=e;const t=new No(e);this.arrayRangeReader=new Po(e),this.arrayBuilderSegmentReader=new Mo(e),this.diffReader=new Do(e),this.editReader=new Ao(e,t),this.frameReader=new xo(e,t)}updatedComponents(){return Io(this.batchData,this.batchData.length-20)}referenceFrames(){return Io(this.batchData,this.batchData.length-16)}disposedComponentIds(){return Io(this.batchData,this.batchData.length-12)}disposedEventHandlerIds(){return Io(this.batchData,this.batchData.length-8)}updatedComponentsEntry(e,t){const n=e+4*t;return Io(this.batchData,n)}referenceFramesEntry(e,t){return e+20*t}disposedComponentIdsEntry(e,t){const n=e+4*t;return Io(this.batchData,n)}disposedEventHandlerIdsEntry(e,t){const n=e+8*t;return To(this.batchData,n)}}class Do{constructor(e){this.batchDataUint8=e}componentId(e){return Io(this.batchDataUint8,e)}edits(e){return e+4}editsEntry(e,t){return e+16*t}}class Ao{constructor(e,t){this.batchDataUint8=e,this.stringReader=t}editType(e){return Io(this.batchDataUint8,e)}siblingIndex(e){return Io(this.batchDataUint8,e+4)}newTreeIndex(e){return Io(this.batchDataUint8,e+8)}moveToSiblingIndex(e){return Io(this.batchDataUint8,e+8)}removedAttributeName(e){const t=Io(this.batchDataUint8,e+12);return this.stringReader.readString(t)}}class xo{constructor(e,t){this.batchDataUint8=e,this.stringReader=t}frameType(e){return Io(this.batchDataUint8,e)}subtreeLength(e){return Io(this.batchDataUint8,e+4)}elementReferenceCaptureId(e){const t=Io(this.batchDataUint8,e+4);return this.stringReader.readString(t)}componentId(e){return Io(this.batchDataUint8,e+8)}elementName(e){const t=Io(this.batchDataUint8,e+8);return this.stringReader.readString(t)}textContent(e){const t=Io(this.batchDataUint8,e+4);return this.stringReader.readString(t)}markupContent(e){const t=Io(this.batchDataUint8,e+4);return this.stringReader.readString(t)}attributeName(e){const t=Io(this.batchDataUint8,e+4);return this.stringReader.readString(t)}attributeValue(e){const t=Io(this.batchDataUint8,e+8);return this.stringReader.readString(t)}attributeEventHandlerId(e){return To(this.batchDataUint8,e+12)}}class No{constructor(e){this.batchDataUint8=e,this.stringTableStartIndex=Io(e,e.length-4)}readString(e){if(-1===e)return null;{const n=Io(this.batchDataUint8,this.stringTableStartIndex+4*e),o=function(e,t){let n=0,o=0;for(let r=0;r<4;r++){const i=e[t+r];if(n|=(127&i)<this.nextBatchId)return this.fatalError?(this.logger.log(yt.Debug,`Received a new batch ${e} but errored out on a previous batch ${this.nextBatchId-1}`),void await n.send("OnRenderCompleted",this.nextBatchId-1,this.fatalError.toString())):void this.logger.log(yt.Debug,`Waiting for batch ${this.nextBatchId}. Batch ${e} not processed.`);try{this.nextBatchId++,this.logger.log(yt.Debug,`Applying batch ${e}.`),xe(Bn.Server,new Ro(t)),await this.completeBatch(n,e)}catch(t){throw this.fatalError=t.toString(),this.logger.log(yt.Error,`There was an error applying batch ${e}.`),n.send("OnRenderCompleted",e,t.toString()),t}}getLastBatchid(){return this.nextBatchId-1}async completeBatch(e,t){try{await e.send("OnRenderCompleted",t,null)}catch{this.logger.log(yt.Warning,`Failed to deliver completion notification for render '${t}'.`)}}}let Lo=!1;function Bo(){const e=document.querySelector("#blazor-error-ui");e&&(e.style.display="block"),Lo||(Lo=!0,document.querySelectorAll("#blazor-error-ui .reload").forEach((e=>{e.onclick=function(e){location.reload(),e.preventDefault()}})),document.querySelectorAll("#blazor-error-ui .dismiss").forEach((e=>{e.onclick=function(e){const t=document.querySelector("#blazor-error-ui");t&&(t.style.display="none"),e.preventDefault()}})))}class Oo{constructor(t,n,o,r){this._firstUpdate=!0,this._renderingFailed=!1,this._disposed=!1,this._circuitId=void 0,this._applicationState=n,this._componentManager=t,this._options=o,this._logger=r,this._renderQueue=new Uo(this._logger),this._dispatcher=e.attachDispatcher(this)}start(){if(this.isDisposedOrDisposing())throw new Error("Cannot start a disposed circuit.");return this._startPromise||(this._startPromise=this.startCore()),this._startPromise}updateRootComponents(e){var t,n;return this._firstUpdate?(this._firstUpdate=!1,null===(t=this._connection)||void 0===t?void 0:t.send("UpdateRootComponents",e,this._applicationState)):null===(n=this._connection)||void 0===n?void 0:n.send("UpdateRootComponents",e,"")}async startCore(){if(this._connection=await this.startConnection(),this._connection.state!==hn.Connected)return!1;const e=JSON.stringify(this._componentManager.initialComponents.map((e=>Ut(e))));if(this._circuitId=await this._connection.invoke("StartCircuit",Je.getBaseURI(),Je.getLocationHref(),e,this._applicationState||""),!this._circuitId)return!1;for(const e of this._options.circuitHandlers)e.onCircuitOpened&&e.onCircuitOpened();return!0}async startConnection(){var e,t;const n=new bo;n.name="blazorpack";const o=(new Ln).withUrl("_blazor").withHubProtocol(n);this._options.configureSignalR(o);const r=o.build();r.on("JS.AttachComponent",((e,t)=>De(Bn.Server,this.resolveElement(t),e,!1))),r.on("JS.BeginInvokeJS",this._dispatcher.beginInvokeJSFromDotNet.bind(this._dispatcher)),r.on("JS.EndInvokeDotNet",this._dispatcher.endInvokeDotNetFromJS.bind(this._dispatcher)),r.on("JS.ReceiveByteArray",this._dispatcher.receiveByteArray.bind(this._dispatcher)),r.on("JS.BeginTransmitStream",(e=>{const t=new ReadableStream({start:t=>{r.stream("SendDotNetStreamToJS",e).subscribe({next:e=>t.enqueue(e),complete:()=>t.close(),error:e=>t.error(e)})}});this._dispatcher.supplyDotNetStream(e,t)})),r.on("JS.RenderBatch",(async(e,t)=>{var n,o;this._logger.log(Ot.Debug,`Received render batch with id ${e} and ${t.byteLength} bytes.`),await this._renderQueue.processBatch(e,t,this._connection),null===(o=(n=this._componentManager).onAfterRenderBatch)||void 0===o||o.call(n,Bn.Server)})),r.on("JS.EndUpdateRootComponents",(e=>{var t,n;null===(n=(t=this._componentManager).onAfterUpdateRootComponents)||void 0===n||n.call(t,e)})),r.on("JS.EndLocationChanging",vt._internal.navigationManager.endLocationChanging),r.onclose((e=>{this._interopMethodsForReconnection=function(e){const t=C.get(e);if(!t)throw new Error(`Interop methods are not registered for renderer ${e}`);return C.delete(e),t}(Bn.Server),this._disposed||this._renderingFailed||this._options.reconnectionHandler.onConnectionDown(this._options.reconnectionOptions,e)})),r.on("JS.Error",(e=>{this._renderingFailed=!0,this.unhandledError(e),Bo()}));try{await r.start()}catch(e){if(this.unhandledError(e),"FailedToNegotiateWithServerError"===e.errorType)throw e;Bo(),e.innerErrors&&(e.innerErrors.some((e=>"UnsupportedTransportError"===e.errorType&&e.transport===In.WebSockets))?this._logger.log(Ot.Error,"Unable to connect, please ensure you are using an updated browser that supports WebSockets."):e.innerErrors.some((e=>"FailedToStartTransportError"===e.errorType&&e.transport===In.WebSockets))?this._logger.log(Ot.Error,"Unable to connect, please ensure WebSockets are available. A VPN or proxy may be blocking the connection."):e.innerErrors.some((e=>"DisabledTransportError"===e.errorType&&e.transport===In.LongPolling))&&this._logger.log(Ot.Error,"Unable to initiate a SignalR connection to the server. This might be because the server is not configured to support WebSockets. For additional details, visit https://aka.ms/blazor-server-websockets-error."))}return(null===(t=null===(e=r.connection)||void 0===e?void 0:e.features)||void 0===t?void 0:t.inherentKeepAlive)&&this._logger.log(Ot.Warning,"Failed to connect via WebSockets, using the Long Polling fallback transport. This may be due to a VPN or proxy blocking the connection. To troubleshoot this, visit https://aka.ms/blazor-server-using-fallback-long-polling."),r}async disconnect(){var e;await(null===(e=this._connection)||void 0===e?void 0:e.stop())}async reconnect(){if(!this._circuitId)throw new Error("Circuit host not initialized.");return this._connection.state===hn.Connected||(this._connection=await this.startConnection(),this._interopMethodsForReconnection&&(k(Bn.Server,this._interopMethodsForReconnection),this._interopMethodsForReconnection=void 0),!!await this._connection.invoke("ConnectCircuit",this._circuitId)&&(this._options.reconnectionHandler.onConnectionUp(),!0))}beginInvokeDotNetFromJS(e,t,n,o,r){this.throwIfDispatchingWhenDisposed(),this._connection.send("BeginInvokeDotNetFromJS",e?e.toString():null,t,n,o||0,r)}endInvokeJSFromDotNet(e,t,n){this.throwIfDispatchingWhenDisposed(),this._connection.send("EndInvokeJSFromDotNet",e,t,n)}sendByteArray(e,t){this.throwIfDispatchingWhenDisposed(),this._connection.send("ReceiveByteArray",e,t)}throwIfDispatchingWhenDisposed(){if(this._disposed)throw new Error("The circuit associated with this dispatcher is no longer available.")}sendLocationChanged(e,t,n){return this._connection.send("OnLocationChanged",e,t,n)}sendLocationChanging(e,t,n,o){return this._connection.send("OnLocationChanging",e,t,n,o)}sendJsDataStream(e,t,n){return function(e,t,n,o){setTimeout((async()=>{let r=5,i=(new Date).valueOf();try{const s=t instanceof Blob?t.size:t.byteLength;let a=0,c=0;for(;a1)await e.send("ReceiveJSDataChunk",n,c,h,null);else{if(!await e.invoke("ReceiveJSDataChunk",n,c,h,null))break;const t=(new Date).valueOf(),o=t-i;i=t,r=Math.max(1,Math.round(500/Math.max(1,o)))}a+=l,c++}}catch(t){await e.send("ReceiveJSDataChunk",n,-1,null,t.toString())}}),0)}(this._connection,e,t,n)}resolveElement(e){const t=w(e);if(t)return W(t,!0);const n=Number.parseInt(e);if(!Number.isNaN(n))return H(this._componentManager.resolveRootComponent(n));throw new Error(`Invalid sequence number or identifier '${e}'.`)}getRootComponentManager(){return this._componentManager}unhandledError(e){this._logger.log(Ot.Error,e),this.disconnect()}getDisconnectFormData(){const e=new FormData,t=this._circuitId;return e.append("circuitId",t),e}didRenderingFail(){return this._renderingFailed}isDisposedOrDisposing(){return void 0!==this._disposePromise}sendDisconnectBeacon(){if(this._disposed)return;const e=this.getDisconnectFormData();this._disposed=navigator.sendBeacon("_blazor/disconnect",e)}dispose(){return this._disposePromise||(this._disposePromise=this.disposeCore()),this._disposePromise}async disposeCore(){var e;if(!this._startPromise)return void(this._disposed=!0);await this._startPromise,this._disposed=!0,null===(e=this._connection)||void 0===e||e.stop();const t=this.getDisconnectFormData();fetch("http://github.com/_blazor/disconnect",{method:"POST",body:t});for(const e of this._options.circuitHandlers)e.onCircuitClosed&&e.onCircuitClosed()}}function Fo(e){const t={...$o,...e};return e&&e.reconnectionOptions&&(t.reconnectionOptions={...$o.reconnectionOptions,...e.reconnectionOptions}),t}const $o={configureSignalR:e=>{},logLevel:yt.Warning,initializers:void 0,circuitHandlers:[],reconnectionOptions:{maxRetries:8,retryIntervalMilliseconds:2e4,dialogId:"components-reconnect-modal"}};class Ho{constructor(e,t,n,o){this.maxRetries=t,this.document=n,this.logger=o,this.modal=this.document.createElement("div"),this.modal.id=e,this.maxRetries=t,this.modal.style.cssText=["position: fixed","top: 0","right: 0","bottom: 0","left: 0","z-index: 1050","display: none","overflow: hidden","background-color: #fff","opacity: 0.8","text-align: center","font-weight: bold","transition: visibility 0s linear 500ms"].join(";"),this.message=this.document.createElement("h5"),this.message.style.cssText="margin-top: 20px",this.button=this.document.createElement("button"),this.button.style.cssText="margin:5px auto 5px",this.button.textContent="Retry";const r=this.document.createElement("a");r.addEventListener("click",(()=>location.reload())),r.textContent="reload",this.reloadParagraph=this.document.createElement("p"),this.reloadParagraph.textContent="Alternatively, ",this.reloadParagraph.appendChild(r),this.modal.appendChild(this.message),this.modal.appendChild(this.button),this.modal.appendChild(this.reloadParagraph),this.loader=this.getLoader(),this.message.after(this.loader),this.button.addEventListener("click",(async()=>{this.show();try{await vt.reconnect()||this.rejected()}catch(e){this.logger.log(yt.Error,e),this.failed()}}))}show(){this.document.contains(this.modal)||this.document.body.appendChild(this.modal),this.modal.style.display="block",this.loader.style.display="inline-block",this.button.style.display="none",this.reloadParagraph.style.display="none",this.message.textContent="Attempting to reconnect to the server...",this.modal.style.visibility="hidden",setTimeout((()=>{this.modal.style.visibility="visible"}),0)}update(e){this.message.textContent=`Attempting to reconnect to the server: ${e} of ${this.maxRetries}`}hide(){this.modal.style.display="none"}failed(){this.button.style.display="block",this.reloadParagraph.style.display="none",this.loader.style.display="none";const e=this.document.createTextNode("Reconnection failed. Try "),t=this.document.createElement("a");t.textContent="reloading",t.setAttribute("href",""),t.addEventListener("click",(()=>location.reload()));const n=this.document.createTextNode(" the page if you're unable to reconnect.");this.message.replaceChildren(e,t,n)}rejected(){this.button.style.display="none",this.reloadParagraph.style.display="none",this.loader.style.display="none";const e=this.document.createTextNode("Could not reconnect to the server. "),t=this.document.createElement("a");t.textContent="Reload",t.setAttribute("href",""),t.addEventListener("click",(()=>location.reload()));const n=this.document.createTextNode(" the page to restore functionality.");this.message.replaceChildren(e,t,n)}getLoader(){const e=this.document.createElement("div");return e.style.cssText=["border: 0.3em solid #f3f3f3","border-top: 0.3em solid #3498db","border-radius: 50%","width: 2em","height: 2em","display: inline-block"].join(";"),e.animate([{transform:"rotate(0deg)"},{transform:"rotate(360deg)"}],{duration:2e3,iterations:1/0}),e}}class Wo{constructor(e,t,n){this.dialog=e,this.maxRetries=t,this.document=n,this.document=n;const o=this.document.getElementById(Wo.MaxRetriesId);o&&(o.innerText=this.maxRetries.toString())}show(){this.removeClasses(),this.dialog.classList.add(Wo.ShowClassName)}update(e){const t=this.document.getElementById(Wo.CurrentAttemptId);t&&(t.innerText=e.toString())}hide(){this.removeClasses(),this.dialog.classList.add(Wo.HideClassName)}failed(){this.removeClasses(),this.dialog.classList.add(Wo.FailedClassName)}rejected(){this.removeClasses(),this.dialog.classList.add(Wo.RejectedClassName)}removeClasses(){this.dialog.classList.remove(Wo.ShowClassName,Wo.HideClassName,Wo.FailedClassName,Wo.RejectedClassName)}}Wo.ShowClassName="components-reconnect-show",Wo.HideClassName="components-reconnect-hide",Wo.FailedClassName="components-reconnect-failed",Wo.RejectedClassName="components-reconnect-rejected",Wo.MaxRetriesId="components-reconnect-max-retries",Wo.CurrentAttemptId="components-reconnect-current-attempt";class jo{constructor(e,t,n){this._currentReconnectionProcess=null,this._logger=e,this._reconnectionDisplay=t,this._reconnectCallback=n||vt.reconnect}onConnectionDown(e,t){if(!this._reconnectionDisplay){const t=document.getElementById(e.dialogId);this._reconnectionDisplay=t?new Wo(t,e.maxRetries,document):new Ho(e.dialogId,e.maxRetries,document,this._logger)}this._currentReconnectionProcess||(this._currentReconnectionProcess=new zo(e,this._logger,this._reconnectCallback,this._reconnectionDisplay))}onConnectionUp(){this._currentReconnectionProcess&&(this._currentReconnectionProcess.dispose(),this._currentReconnectionProcess=null)}}class zo{constructor(e,t,n,o){this.logger=t,this.reconnectCallback=n,this.isDisposed=!1,this.reconnectDisplay=o,this.reconnectDisplay.show(),this.attemptPeriodicReconnection(e)}dispose(){this.isDisposed=!0,this.reconnectDisplay.hide()}async attemptPeriodicReconnection(e){for(let t=0;tzo.MaximumFirstRetryInterval?zo.MaximumFirstRetryInterval:e.retryIntervalMilliseconds;if(await this.delay(n),this.isDisposed)break;try{return await this.reconnectCallback()?void 0:void this.reconnectDisplay.rejected()}catch(e){this.logger.log(yt.Error,e)}}this.reconnectDisplay.failed()}delay(e){return new Promise((t=>setTimeout(t,e)))}}zo.MaximumFirstRetryInterval=3e3;class qo{constructor(e=!0,t,n,o=0){this.singleRuntime=e,this.logger=t,this.webRendererId=o,this.afterStartedCallbacks=[],n&&this.afterStartedCallbacks.push(...n)}async importInitializersAsync(e,t){await Promise.all(e.map((e=>async function(e,n){const o=function(e){const t=document.baseURI;return t.endsWith("/")?`${t}${e}`:`${t}/${e}`}(n),r=await import(o);if(void 0!==r){if(e.singleRuntime){const{beforeStart:n,afterStarted:o,beforeWebAssemblyStart:s,afterWebAssemblyStarted:a,beforeServerStart:c,afterServerStarted:l}=r;let h=n;e.webRendererId===Bn.Server&&c&&(h=c),e.webRendererId===Bn.WebAssembly&&s&&(h=s);let d=o;return e.webRendererId===Bn.Server&&l&&(d=l),e.webRendererId===Bn.WebAssembly&&a&&(d=a),i(e,h,d,t)}return function(e,t,n){var r;const s=n[0],{beforeStart:a,afterStarted:c,beforeWebStart:l,afterWebStarted:h,beforeWebAssemblyStart:d,afterWebAssemblyStarted:u,beforeServerStart:p,afterServerStarted:f}=t,g=!(l||h||d||u||p||f||!a&&!c),m=g&&s.enableClassicInitializers;if(g&&!s.enableClassicInitializers)null===(r=e.logger)||void 0===r||r.log(yt.Warning,`Initializer '${o}' will be ignored because multiple runtimes are available. use 'before(web|webAssembly|server)Start' and 'after(web|webAssembly|server)Started?' instead.)`);else if(m)return i(e,a,c,n);if(function(e){e.webAssembly?e.webAssembly.initializers||(e.webAssembly.initializers={beforeStart:[],afterStarted:[]}):e.webAssembly={initializers:{beforeStart:[],afterStarted:[]}},e.circuit?e.circuit.initializers||(e.circuit.initializers={beforeStart:[],afterStarted:[]}):e.circuit={initializers:{beforeStart:[],afterStarted:[]}}}(s),d&&s.webAssembly.initializers.beforeStart.push(d),u&&s.webAssembly.initializers.afterStarted.push(u),p&&s.circuit.initializers.beforeStart.push(p),f&&s.circuit.initializers.afterStarted.push(f),h&&e.afterStartedCallbacks.push(h),l)return l(s)}(e,r,t)}function i(e,t,n,o){if(n&&e.afterStartedCallbacks.push(n),t)return t(...o)}}(this,e))))}async invokeAfterStartedCallbacks(e){const t=function(e){var t;return null===(t=I.get(e))||void 0===t?void 0:t[1]}(this.webRendererId);t&&await t,await Promise.all(this.afterStartedCallbacks.map((t=>t(e))))}}let Jo,Ko,Vo,Xo,Go,Yo,Qo,Zo;function er(e){if(Xo)throw new Error("Circuit options have already been configured.");if(Xo)throw new Error("WebAssembly options have already been configured.");Jo=async function(e){const t=await e;Xo=Fo(t)}(e)}function tr(e){if(void 0!==Yo)throw new Error("Blazor Server has already started.");return Yo=new Promise(nr.bind(null,e)),Yo}async function nr(e,t,n){await Jo;const o=await async function(e){if(e.initializers)return await Promise.all(e.initializers.beforeStart.map((t=>t(e)))),new qo(!1,void 0,e.initializers.afterStarted,Bn.Server);const t=await fetch("http://github.com/_blazor/initializers",{method:"GET",credentials:"include",cache:"no-cache"}),n=await t.json(),o=new qo(!0,void 0,void 0,Bn.Server);return await o.importInitializersAsync(n,[e]),o}(Xo);if(Ko=It(document)||"",Go=new bt(Xo.logLevel),Vo=new Oo(e,Ko,Xo,Go),Go.log(yt.Information,"Starting up Blazor server-side application."),vt.reconnect=async()=>!(Vo.didRenderingFail()||!await Vo.reconnect()&&(Go.log(yt.Information,"Reconnection attempt to the circuit was rejected by the server. This may indicate that the associated state is no longer available on the server."),1)),vt.defaultReconnectionHandler=new jo(Go),Xo.reconnectionHandler=Xo.reconnectionHandler||vt.defaultReconnectionHandler,vt._internal.navigationManager.listenForNavigationEvents(Bn.Server,((e,t,n)=>Vo.sendLocationChanged(e,t,n)),((e,t,n,o)=>Vo.sendLocationChanging(e,t,n,o))),vt._internal.forceCloseConnection=()=>Vo.disconnect(),vt._internal.sendJSDataStream=(e,t,n)=>Vo.sendJsDataStream(e,t,n),!await Vo.start())return Go.log(yt.Error,"Failed to start the circuit."),void t();const r=()=>{Vo.sendDisconnectBeacon()};vt.disconnect=r,window.addEventListener("unload",r,{capture:!1,once:!0}),Go.log(yt.Information,"Blazor server-side application started."),o.invokeAfterStartedCallbacks(vt),t()}async function or(){if(!Yo)throw new Error("Cannot start the circuit until Blazor Server has started.");return!(!Vo||Vo.isDisposedOrDisposing())||(Qo?await Qo:(await Yo,(!Vo||!Vo.didRenderingFail())&&(Vo&&Vo.isDisposedOrDisposing()&&(Ko=It(document)||"",Vo=new Oo(Vo.getRootComponentManager(),Ko,Xo,Go)),Qo=Vo.start(),async function(e){await e,Qo===e&&(Qo=void 0)}(Qo),Qo)))}function rr(e){if(Vo&&!Vo.isDisposedOrDisposing())return Vo.updateRootComponents(e);!async function(e){await Yo,await or()&&Vo.updateRootComponents(e)}(e)}function ir(e){return Zo=e,Zo}var sr,ar;const cr=navigator,lr=cr.userAgentData&&cr.userAgentData.brands,hr=lr&&lr.length>0?lr.some((e=>"Google Chrome"===e.brand||"Microsoft Edge"===e.brand||"Chromium"===e.brand)):window.chrome,dr=null!==(ar=null===(sr=cr.userAgentData)||void 0===sr?void 0:sr.platform)&&void 0!==ar?ar:navigator.platform;function ur(e){return 0!==e.debugLevel&&(hr||navigator.userAgent.includes("Firefox"))}let pr,fr,gr,mr,vr,yr,wr;const br=Math.pow(2,32),_r=Math.pow(2,21)-1;let Sr=null;function Cr(e){return fr.getI32(e)}const Er={load:function(e,t){return async function(e,t){const{dotnet:n}=await async function(e){if("undefined"==typeof WebAssembly||!WebAssembly.validate)throw new Error("This browser does not support WebAssembly.");let t="_framework/dotnet.js";if(e.loadBootResource){const n="dotnetjs",o=e.loadBootResource(n,"dotnet.js",t,"","js-module-dotnet");if("string"==typeof o)t=o;else if(o)throw new Error(`For a ${n} resource, custom loaders must supply a URI string.`)}const n=new URL(t,document.baseURI).toString();return await import(n)}(e),o=function(e,t){const n={maxParallelDownloads:1e6,enableDownloadRetry:!1,applicationEnvironment:e.environment},o={...window.Module||{},onConfigLoaded:async n=>{n.environmentVariables||(n.environmentVariables={}),"sharded"===n.globalizationMode&&(n.environmentVariables.__BLAZOR_SHARDED_ICU="1"),vt._internal.getApplicationEnvironment=()=>n.applicationEnvironment,null==t||t(n),wr=await async function(e,t){var n,o,r;if(e.initializers)return await Promise.all(e.initializers.beforeStart.map((t=>t(e)))),new qo(!1,void 0,e.initializers.afterStarted,Bn.WebAssembly);{const i=[e,null!==(o=null===(n=t.resources)||void 0===n?void 0:n.extensions)&&void 0!==o?o:{}],s=new qo(!0,void 0,void 0,Bn.WebAssembly),a=Object.keys((null===(r=null==t?void 0:t.resources)||void 0===r?void 0:r.libraryInitializers)||{});return await s.importInitializersAsync(a,i),s}}(e,n)},onDownloadResourceProgress:Ir,config:n,disableDotnet6Compatibility:!1,out:Tr,err:Rr};return o}(e,t);e.applicationCulture&&n.withApplicationCulture(e.applicationCulture),e.environment&&n.withApplicationEnvironment(e.environment),e.loadBootResource&&n.withResourceLoader(e.loadBootResource),n.withModuleConfig(o),e.configureRuntime&&e.configureRuntime(n),yr=await n.create()}(e,t)},start:function(){return async function(){if(!yr)throw new Error("The runtime must be loaded it gets configured.");const{MONO:t,BINDING:n,Module:o,setModuleImports:r,INTERNAL:i,getConfig:s,invokeLibraryInitializers:a}=yr;gr=o,pr=n,fr=t,vr=i,function(e){const t=dr.match(/^Mac/i)?"Cmd":"Alt";ur(e)&&console.info(`Debugging hotkey: Shift+${t}+D (when application has focus)`),document.addEventListener("keydown",(t=>{t.shiftKey&&(t.metaKey||t.altKey)&&"KeyD"===t.code&&(ur(e)?navigator.userAgent.includes("Firefox")?async function(){const e=await fetch(`_framework/debug?url=${encodeURIComponent(location.href)}&isFirefox=true`);200!==e.status&&console.warn(await e.text())}():hr?function(){const e=document.createElement("a");e.href=`_framework/debug?url=${encodeURIComponent(location.href)}`,e.target="_blank",e.rel="noopener noreferrer",e.click()}():console.error("Currently, only Microsoft Edge (80+), Google Chrome, or Chromium, are supported for debugging."):console.error("Cannot start debugging, because the application was not compiled with debugging enabled."))}))}(s()),vt.runtime=yr,vt._internal.dotNetCriticalError=Rr,r("blazor-internal",{Blazor:{_internal:vt._internal}});const c=await yr.getAssemblyExports("Microsoft.AspNetCore.Components.WebAssembly");return Object.assign(vt._internal,{dotNetExports:{...c.Microsoft.AspNetCore.Components.WebAssembly.Services.DefaultWebAssemblyJSRuntime}}),mr=e.attachDispatcher({beginInvokeDotNetFromJS:(e,t,n,o,r)=>{if(Ar(),!o&&!t)throw new Error("Either assemblyName or dotNetObjectId must have a non null value.");const i=o?o.toString():t;vt._internal.dotNetExports.BeginInvokeDotNet(e?e.toString():null,i,n,r)},endInvokeJSFromDotNet:(e,t,n)=>{vt._internal.dotNetExports.EndInvokeJS(n)},sendByteArray:(e,t)=>{vt._internal.dotNetExports.ReceiveByteArrayFromJS(e,t)},invokeDotNetFromJS:(e,t,n,o)=>(Ar(),vt._internal.dotNetExports.InvokeDotNet(e||null,t,null!=n?n:0,o))}),{invokeLibraryInitializers:a}}()},callEntryPoint:async function(){try{await yr.runMain(yr.getConfig().mainAssemblyName,[])}catch(e){console.error(e),Bo()}},toUint8Array:function(e){const t=Dr(e),n=Cr(t),o=new Uint8Array(n);return o.set(gr.HEAPU8.subarray(t+4,t+4+n)),o},getArrayLength:function(e){return Cr(Dr(e))},getArrayEntryPtr:function(e,t,n){return Dr(e)+4+t*n},getObjectFieldsBaseAddress:function(e){return e+8},readInt16Field:function(e,t){return n=e+(t||0),fr.getI16(n);var n},readInt32Field:function(e,t){return Cr(e+(t||0))},readUint64Field:function(e,t){return function(e){const t=e>>2,n=gr.HEAPU32[t+1];if(n>_r)throw new Error(`Cannot read uint64 with high order part ${n}, because the result would exceed Number.MAX_SAFE_INTEGER.`);return n*br+gr.HEAPU32[t]}(e+(t||0))},readFloatField:function(e,t){return n=e+(t||0),fr.getF32(n);var n},readObjectField:function(e,t){return Cr(e+(t||0))},readStringField:function(e,t,n){const o=Cr(e+(t||0));if(0===o)return null;if(n){const e=pr.unbox_mono_obj(o);return"boolean"==typeof e?e?"":null:e}return pr.conv_string(o)},readStructField:function(e,t){return e+(t||0)},beginHeapLock:function(){return Ar(),Sr=xr.create(),Sr},invokeWhenHeapUnlocked:function(e){Sr?Sr.enqueuePostReleaseAction(e):e()}};function Ir(e,t){const n=e/t*100;document.documentElement.style.setProperty("--blazor-load-percentage",`${n}%`),document.documentElement.style.setProperty("--blazor-load-percentage-text",`"${Math.floor(n)}%"`)}const kr=["DEBUGGING ENABLED"],Tr=e=>kr.indexOf(e)<0&&console.log(e),Rr=e=>{console.error(e||"(null)"),Bo()};function Dr(e){return e+12}function Ar(){if(Sr)throw new Error("Assertion failed - heap is currently locked")}class xr{enqueuePostReleaseAction(e){this.postReleaseActions||(this.postReleaseActions=[]),this.postReleaseActions.push(e)}release(){var e;if(Sr!==this)throw new Error("Trying to release a lock which isn't current");for(vr.mono_wasm_gc_unlock(),Sr=null;null===(e=this.postReleaseActions)||void 0===e?void 0:e.length;)this.postReleaseActions.shift()(),Ar()}static create(){return vr.mono_wasm_gc_lock(),new xr}}class Nr{constructor(e){this.batchAddress=e,this.arrayRangeReader=Pr,this.arrayBuilderSegmentReader=Mr,this.diffReader=Ur,this.editReader=Lr,this.frameReader=Br}updatedComponents(){return Zo.readStructField(this.batchAddress,0)}referenceFrames(){return Zo.readStructField(this.batchAddress,Pr.structLength)}disposedComponentIds(){return Zo.readStructField(this.batchAddress,2*Pr.structLength)}disposedEventHandlerIds(){return Zo.readStructField(this.batchAddress,3*Pr.structLength)}updatedComponentsEntry(e,t){return Or(e,t,Ur.structLength)}referenceFramesEntry(e,t){return Or(e,t,Br.structLength)}disposedComponentIdsEntry(e,t){const n=Or(e,t,4);return Zo.readInt32Field(n)}disposedEventHandlerIdsEntry(e,t){const n=Or(e,t,8);return Zo.readUint64Field(n)}}const Pr={structLength:8,values:e=>Zo.readObjectField(e,0),count:e=>Zo.readInt32Field(e,4)},Mr={structLength:12,values:e=>{const t=Zo.readObjectField(e,0),n=Zo.getObjectFieldsBaseAddress(t);return Zo.readObjectField(n,0)},offset:e=>Zo.readInt32Field(e,4),count:e=>Zo.readInt32Field(e,8)},Ur={structLength:4+Mr.structLength,componentId:e=>Zo.readInt32Field(e,0),edits:e=>Zo.readStructField(e,4),editsEntry:(e,t)=>Or(e,t,Lr.structLength)},Lr={structLength:20,editType:e=>Zo.readInt32Field(e,0),siblingIndex:e=>Zo.readInt32Field(e,4),newTreeIndex:e=>Zo.readInt32Field(e,8),moveToSiblingIndex:e=>Zo.readInt32Field(e,8),removedAttributeName:e=>Zo.readStringField(e,16)},Br={structLength:36,frameType:e=>Zo.readInt16Field(e,4),subtreeLength:e=>Zo.readInt32Field(e,8),elementReferenceCaptureId:e=>Zo.readStringField(e,16),componentId:e=>Zo.readInt32Field(e,12),elementName:e=>Zo.readStringField(e,16),textContent:e=>Zo.readStringField(e,16),markupContent:e=>Zo.readStringField(e,16),attributeName:e=>Zo.readStringField(e,16),attributeValue:e=>Zo.readStringField(e,24,!0),attributeEventHandlerId:e=>Zo.readUint64Field(e,8)};function Or(e,t,n){return Zo.getArrayEntryPtr(e,t,n)}class Fr{constructor(e){this.componentManager=e}resolveRegisteredElement(e){const t=Number.parseInt(e);if(!Number.isNaN(t))return H(this.componentManager.resolveRootComponent(t))}getParameterValues(e){return this.componentManager.initialComponents[e].parameterValues}getParameterDefinitions(e){return this.componentManager.initialComponents[e].parameterDefinitions}getTypeName(e){return this.componentManager.initialComponents[e].typeName}getAssembly(e){return this.componentManager.initialComponents[e].assembly}getCount(){return this.componentManager.initialComponents.length}}let $r,Hr,Wr,jr,zr,qr=!1,Jr=!1,Kr=!0,Vr=!1;const Xr=new Promise((e=>{zr=e}));let Gr;const Yr=new Promise((e=>{Gr=e}));let Qr;function Zr(e){if(void 0!==jr)throw new Error("Blazor WebAssembly has already started.");return jr=new Promise(ei.bind(null,e)),jr}async function ei(e,t,n){(function(){if(window.parent!==window&&!window.opener&&window.frameElement){const e=window.sessionStorage&&window.sessionStorage["Microsoft.AspNetCore.Components.WebAssembly.Authentication.CachedAuthSettings"],t=e&&JSON.parse(e);return t&&t.redirect_uri&&location.href.startsWith(t.redirect_uri)}return!1})()&&await new Promise((()=>{}));const o=ti();!function(e){const t=A;A=(e,n,o)=>{((e,t,n)=>{const o=Ae(e);(null==o?void 0:o.eventDelegator.getHandler(t))&&Er.invokeWhenHeapUnlocked(n)})(e,n,(()=>t(e,n,o)))}}(),vt._internal.applyHotReload=(e,t,n,o)=>{mr.invokeDotNetStaticMethod("Microsoft.AspNetCore.Components.WebAssembly","ApplyHotReloadDelta",e,t,n,o)},vt._internal.getApplyUpdateCapabilities=()=>mr.invokeDotNetStaticMethod("Microsoft.AspNetCore.Components.WebAssembly","GetApplyUpdateCapabilities"),vt._internal.invokeJSFromDotNet=oi,vt._internal.invokeJSJson=ri,vt._internal.endInvokeDotNetFromJS=ii,vt._internal.receiveWebAssemblyDotNetDataStream=si,vt._internal.receiveByteArray=ai;const r=ir(Er);vt.platform=r,vt._internal.renderBatch=(e,t)=>{const n=Er.beginHeapLock();try{xe(e,new Nr(t))}finally{n.release()}},vt._internal.navigationManager.listenForNavigationEvents(Bn.WebAssembly,(async(e,t,n)=>{await mr.invokeDotNetStaticMethodAsync("Microsoft.AspNetCore.Components.WebAssembly","NotifyLocationChanged",e,t,n)}),(async(e,t,n,o)=>{const r=await mr.invokeDotNetStaticMethodAsync("Microsoft.AspNetCore.Components.WebAssembly","NotifyLocationChangingAsync",t,n,o);vt._internal.navigationManager.endLocationChanging(e,r)}));const i=new Fr(e);let s;vt._internal.registeredComponents={getRegisteredComponentsCount:()=>i.getCount(),getAssembly:e=>i.getAssembly(e),getTypeName:e=>i.getTypeName(e),getParameterDefinitions:e=>i.getParameterDefinitions(e)||"",getParameterValues:e=>i.getParameterValues(e)||""},vt._internal.getPersistedState=()=>kt(document,Ct)||"",vt._internal.getInitialComponentsUpdate=()=>Yr,vt._internal.updateRootComponents=e=>{var t;return null===(t=vt._internal.dotNetExports)||void 0===t?void 0:t.UpdateRootComponentsCore(e)},vt._internal.endUpdateRootComponents=t=>{var n;return null===(n=e.onAfterUpdateRootComponents)||void 0===n?void 0:n.call(e,t)},vt._internal.attachRootComponentToElement=(e,t,n)=>{const o=i.resolveRegisteredElement(e);o?De(n,o,t,!1):function(e,t,n){const o="::before";let r=!1;if(e.endsWith("::after"))e=e.slice(0,-7),r=!0;else if(e.endsWith(o))throw new Error(`The '${o}' selector is not supported.`);const i=w(e)||document.querySelector(e);if(!i)throw new Error(`Could not find any element matching selector '${e}'.`);De(n,W(i,!0),t,r)}(e,t,n)};try{await o,s=await r.start()}catch(e){throw new Error(`Failed to start platform. Reason: ${e}`)}r.callEntryPoint(),wr.invokeAfterStartedCallbacks(vt),Jr=!0,t()}function ti(){return null!=Wr||(Wr=(async()=>{await Hr;const e=null!=$r?$r:{},t=null==$r?void 0:$r.configureRuntime;e.configureRuntime=e=>{null==t||t(e),Vr&&e.withEnvironmentVariable("__BLAZOR_WEBASSEMBLY_WAIT_FOR_ROOT_COMPONENTS","true")},await Er.load(e,zr),qr=!0})()),Wr}function ni(){return qr}function oi(t,n,o,r){const i=Er.readStringField(t,0),s=Er.readInt32Field(t,4),a=Er.readStringField(t,8),c=Er.readUint64Field(t,20);if(null!==a){const e=Er.readUint64Field(t,12);if(0!==e)return mr.beginInvokeJSFromDotNet(e,i,a,s,c),0;{const e=mr.invokeJSFromDotNet(i,a,s,c);return null===e?0:pr.js_string_to_mono_string(e)}}{const t=e.findJSFunction(i,c).call(null,n,o,r);switch(s){case e.JSCallResultType.Default:return t;case e.JSCallResultType.JSObjectReference:return e.createJSObjectReference(t).__jsObjectId;case e.JSCallResultType.JSStreamReference:{const n=e.createJSStreamReference(t),o=JSON.stringify(n);return pr.js_string_to_mono_string(o)}case e.JSCallResultType.JSVoidResult:return null;default:throw new Error(`Invalid JS call result type '${s}'.`)}}}function ri(e,t,n,o,r){return 0!==r?(mr.beginInvokeJSFromDotNet(r,e,o,n,t),null):mr.invokeJSFromDotNet(e,o,n,t)}function ii(e,t,n){mr.endInvokeDotNetFromJS(e,t,n)}function si(e,t,n,o){!function(e,t,n,o,r){let i=mt.get(t);if(!i){const n=new ReadableStream({start(e){mt.set(t,e),i=e}});e.supplyDotNetStream(t,n)}r?(i.error(r),mt.delete(t)):0===o?(i.close(),mt.delete(t)):i.enqueue(n.length===o?n:n.subarray(0,o))}(mr,e,t,n,o)}function ai(e,t){mr.receiveByteArray(e,t)}function ci(e,t){t.namespaceURI?e.setAttributeNS(t.namespaceURI,t.name,t.value):e.setAttribute(t.name,t.value)}Hr=new Promise((e=>{Qr=e}));const li="data-permanent";var hi,di;!function(e){e[e.None=0]="None",e[e.Some=1]="Some",e[e.Infinite=2]="Infinite"}(hi||(hi={})),function(e){e.Keep="keep",e.Update="update",e.Insert="insert",e.Delete="delete"}(di||(di={}));class ui{static create(e,t,n){return 0===t&&n===e.length?e:new ui(e,t,n)}constructor(e,t,n){this.source=e,this.startIndex=t,this.length=n}item(e){return this.source.item(e+this.startIndex)}forEach(e,t){for(let t=0;t=n&&s>=o&&r(e.item(i),t.item(s))===hi.None;)i--,s--,a++;return a}(e,t,o,o,n),i=function(e){var t;const n=[];let o=e.length-1,r=(null===(t=e[o])||void 0===t?void 0:t.length)-1;for(;o>0||r>0;){const t=0===o?di.Insert:0===r?di.Delete:e[o][r];switch(n.unshift(t),t){case di.Keep:case di.Update:o--,r--;break;case di.Insert:r--;break;case di.Delete:o--}}return n}(function(e,t,n){const o=[],r=[],i=e.length,s=t.length;if(0===i&&0===s)return[];for(let e=0;e<=i;e++)(o[e]=Array(s+1))[0]=e,r[e]=Array(s+1);const a=o[0];for(let e=1;e<=s;e++)a[e]=e;for(let a=1;a<=i;a++)for(let i=1;i<=s;i++){const s=n(e.item(a-1),t.item(i-1)),c=o[a-1][i]+1,l=o[a][i-1]+1;let h;switch(s){case hi.None:h=o[a-1][i-1];break;case hi.Some:h=o[a-1][i-1]+1;break;case hi.Infinite:h=Number.MAX_VALUE}h{history.pushState(null,"",e),Mi(e,!0)}))}function Ni(e){Oe()||Mi(location.href,!1)}function Pi(e){if(Oe()||e.defaultPrevented)return;const t=e.target;if(t instanceof HTMLFormElement){if(!function(e){const t=e.getAttribute("data-enhance");return"string"==typeof t&&""===t||"true"===(null==t?void 0:t.toLowerCase())}(t))return;e.preventDefault();const n=new URL(t.action),o={method:t.method},r=new FormData(t),i=e.submitter;i&&i.name&&r.append(i.name,i.value),"get"===o.method?(n.search=new URLSearchParams(r).toString(),history.pushState(null,"",n.toString())):o.body=r,Mi(n.toString(),!1,o)}}async function Mi(e,t,n){gi=!0,null==pi||pi.abort(),function(e,t){null==ke||ke(e,t)}(e,t),pi=new AbortController;const o=pi.signal,r=fetch(e,Object.assign({signal:o,mode:"no-cors",headers:{accept:"text/html; blazor-enhanced-nav=on"}},n));let i=null;if(await async function(e,t,n,o){let r;try{if(r=await e,!r.body)return void n(r,"");const t=r.headers.get("ssr-framing");if(!t){const e=await r.text();return void n(r,e)}let o=!0;await r.body.pipeThrough(new TextDecoderStream).pipeThrough(function(e){let t="";return new TransformStream({transform(n,o){if(t+=n,t.indexOf(e,t.length-n.length-e.length)>=0){const n=t.split(e);n.slice(0,-1).forEach((e=>o.enqueue(e))),t=n[n.length-1]}},flush(e){e.enqueue(t)}})}(`\x3c!--${t}--\x3e`)).pipeTo(new WritableStream({write(e){o?(o=!1,n(r,e)):(e=>{const t=document.createRange().createContextualFragment(e);for(;t.firstChild;)document.body.appendChild(t.firstChild)})(e)}}))}catch(e){if("AbortError"===e.name&&t.aborted)return;throw e}}(r,o,((t,o)=>{const r=!(null==n?void 0:n.method)||"get"===n.method,s=t.status>=200&&t.status<300;if("opaque"===t.type){if(r)return void Li(e);throw new Error("Enhanced navigation does not support making a non-GET request to an endpoint that redirects to an external origin. Avoid enabling enhanced navigation for form posts that may perform external redirections.")}if(s&&"allow"!==t.headers.get("blazor-enhanced-nav")){if(r)return void Li(e);throw new Error("Enhanced navigation does not support making a non-GET request to a non-Blazor endpoint. Avoid enabling enhanced navigation for forms that post to a non-Blazor endpoint.")}t.redirected&&(r?history.replaceState(null,"",t.url):history.pushState(null,"",t.url),e=t.url);const a=t.headers.get("blazor-enhanced-nav-redirect-location");if(a)return void location.replace(a);t.redirected||r||!s||(function(e){const t=new URL(e.url),n=new URL(Ri);return t.protocol===n.protocol&&t.host===n.host&&t.port===n.port&&t.pathname===n.pathname}(t)?location.href!==Ri&&history.pushState(null,"",Ri):i=`Cannot perform enhanced form submission that changes the URL (except via a redirection), because then back/forward would not work. Either remove this form's 'action' attribute, or change its method to 'get', or do not mark it as enhanced.\nOld URL: ${location.href}\nNew URL: ${t.url}`),Ri=t.url;const c=t.headers.get("content-type");if((null==c?void 0:c.startsWith("text/html"))&&o){const e=(new DOMParser).parseFromString(o,"text/html");vi(document,e),fi.documentUpdated()}else(null==c?void 0:c.startsWith("text/"))&&o?Ui(o):s||o?r?Li(e):Ui(`Error: ${n.method} request to ${e} returned non-HTML content of type ${c||"unspecified"}.`):Ui(`Error: ${t.status} ${t.statusText}`)})),!o.aborted){const t=e.indexOf("#");if(t>=0){const n=e.substring(t+1),o=document.getElementById(n);null==o||o.scrollIntoView()}if(gi=!1,fi.enhancedNavigationCompleted(),i)throw new Error(i)}}function Ui(e){document.documentElement.textContent=e;const t=document.documentElement.style;t.fontFamily="consolas, monospace",t.whiteSpace="pre-wrap",t.padding="1rem"}function Li(e){history.replaceState(null,"",e+"?"),location.replace(e)}let Bi,Oi=!0;class Fi extends HTMLElement{connectedCallback(){var e;const t=this.parentNode;null===(e=t.parentNode)||void 0===e||e.removeChild(t),t.childNodes.forEach((e=>{if(e instanceof HTMLTemplateElement){const t=e.getAttribute("blazor-component-id");if(t)"true"!==e.getAttribute("enhanced-nav")&&pi||function(e,t){const n=function(e){const t=`bl:${e}`,n=document.createNodeIterator(document,NodeFilter.SHOW_COMMENT);let o=null;for(;(o=n.nextNode())&&o.textContent!==t;);if(!o)return null;const r=`/bl:${e}`;let i=null;for(;(i=n.nextNode())&&i.textContent!==r;);return i?{startMarker:o,endMarker:i}:null}(e);if(n){const{startMarker:e,endMarker:o}=n;if(Oi)vi({startExclusive:e,endExclusive:o},t);else{const n=o.parentNode,r=new Range;for(r.setStart(e,e.textContent.length),r.setEnd(o,0),r.deleteContents();t.childNodes[0];)n.insertBefore(t.childNodes[0],o)}Bi.documentUpdated()}}(t,e.content);else switch(e.getAttribute("type")){case"redirection":const t=Le(e.content.textContent),n="form-post"===e.getAttribute("from");"true"===e.getAttribute("enhanced")&&Pe(t)?(n?history.pushState(null,"",t):history.replaceState(null,"",t),Mi(t,!1)):n?location.assign(t):location.replace(t);break;case"error":Ui(e.content.textContent||"Error")}}}))}}class $i{constructor(e){var t;this._circuitInactivityTimeoutMs=e,this._rootComponentsBySsrComponentId=new Map,this._seenDescriptors=new Set,this._pendingOperationBatches={},this._nextOperationBatchId=1,this._nextSsrComponentId=1,this._didWebAssemblyFailToLoadQuickly=!1,this._isComponentRefreshPending=!1,this.initialComponents=[],t=()=>{this.rootComponentsMayRequireRefresh()},E.push(t)}onAfterRenderBatch(e){e===Bn.Server&&this.circuitMayHaveNoRootComponents()}onDocumentUpdated(){this.rootComponentsMayRequireRefresh()}onEnhancedNavigationCompleted(){this.rootComponentsMayRequireRefresh()}registerComponent(e){if(this._seenDescriptors.has(e))return;"auto"!==e.type&&"webassembly"!==e.type||this.startLoadingWebAssemblyIfNotStarted();const t=this._nextSsrComponentId++;this._seenDescriptors.add(e),this._rootComponentsBySsrComponentId.set(t,{descriptor:e,ssrComponentId:t})}unregisterComponent(e){this._seenDescriptors.delete(e.descriptor),this._rootComponentsBySsrComponentId.delete(e.ssrComponentId),this.circuitMayHaveNoRootComponents()}async startLoadingWebAssemblyIfNotStarted(){if(void 0!==Wr)return;Vr=!0;const e=ti();setTimeout((()=>{ni()||this.onWebAssemblyFailedToLoadQuickly()}),vt._internal.loadWebAssemblyQuicklyTimeout);const t=await Xr;(function(e){if(!e.cacheBootResources)return!1;const t=Hi(e);if(!t)return!1;const n=window.localStorage.getItem(t.key);return t.value===n})(t)||this.onWebAssemblyFailedToLoadQuickly(),await e,function(e){const t=Hi(e);t&&window.localStorage.setItem(t.key,t.value)}(t),this.rootComponentsMayRequireRefresh()}onWebAssemblyFailedToLoadQuickly(){this._didWebAssemblyFailToLoadQuickly||(this._didWebAssemblyFailToLoadQuickly=!0,this.rootComponentsMayRequireRefresh())}startCircutIfNotStarted(){return void 0===Yo?tr(this):!Vo||Vo.isDisposedOrDisposing()?or():void 0}async startWebAssemblyIfNotStarted(){this.startLoadingWebAssemblyIfNotStarted(),void 0===jr&&await Zr(this)}rootComponentsMayRequireRefresh(){this._isComponentRefreshPending||(this._isComponentRefreshPending=!0,setTimeout((()=>{this._isComponentRefreshPending=!1,this.refreshRootComponents(this._rootComponentsBySsrComponentId.values())}),0))}circuitMayHaveNoRootComponents(){if(this.rendererHasExistingOrPendingComponents(Bn.Server,"server","auto"))return clearTimeout(this._circuitInactivityTimeoutId),void(this._circuitInactivityTimeoutId=void 0);void 0===this._circuitInactivityTimeoutId&&(this._circuitInactivityTimeoutId=setTimeout((()=>{this.rendererHasExistingOrPendingComponents(Bn.Server,"server","auto")||(async function(){await(null==Vo?void 0:Vo.dispose())}(),this._circuitInactivityTimeoutId=void 0)}),this._circuitInactivityTimeoutMs))}rendererHasComponents(e){const t=Ae(e);return void 0!==t&&t.getRootComponentCount()>0}rendererHasExistingOrPendingComponents(e,...t){if(this.rendererHasComponents(e))return!0;for(const{descriptor:{type:n},assignedRendererId:o}of this._rootComponentsBySsrComponentId.values()){if(o===e)return!0;if(void 0===o&&-1!==t.indexOf(n))return!0}return!1}refreshRootComponents(e){const t=new Map;for(const n of e){const e=this.determinePendingOperation(n);if(!e)continue;const o=n.assignedRendererId;if(!o)throw new Error("Descriptors must be assigned a renderer ID before getting used as root components");let r=t.get(o);r||(r=[],t.set(o,r)),r.push(e)}for(const[e,n]of t){const t={batchId:this._nextOperationBatchId++,operations:n};this._pendingOperationBatches[t.batchId]=t;const o=JSON.stringify(t);e===Bn.Server?rr(o):this.updateWebAssemblyRootComponents(o)}}updateWebAssemblyRootComponents(e){Kr?(Gr(e),Kr=!1):function(e){if(!jr)throw new Error("Blazor WebAssembly has not started.");if(!vt._internal.updateRootComponents)throw new Error("Blazor WebAssembly has not initialized.");Jr?vt._internal.updateRootComponents(e):async function(e){if(await jr,!vt._internal.updateRootComponents)throw new Error("Blazor WebAssembly has not initialized.");vt._internal.updateRootComponents(e)}(e)}(e)}resolveRendererIdForDescriptor(e){switch("auto"===e.type?this.getAutoRenderMode():e.type){case"server":return this.startCircutIfNotStarted(),Bn.Server;case"webassembly":return this.startWebAssemblyIfNotStarted(),Bn.WebAssembly;case null:return null}}getAutoRenderMode(){return this.rendererHasExistingOrPendingComponents(Bn.WebAssembly,"webassembly")?"webassembly":this.rendererHasExistingOrPendingComponents(Bn.Server,"server")?"server":ni()?"webassembly":this._didWebAssemblyFailToLoadQuickly?"server":null}determinePendingOperation(e){if(t=e.descriptor,document.contains(t.start)){if(void 0===e.assignedRendererId){if(gi||"loading"===document.readyState)return null;const t=this.resolveRendererIdForDescriptor(e.descriptor);return null===t?null:T(t)?(be(e.descriptor.start,!0),e.assignedRendererId=t,e.uniqueIdAtLastUpdate=e.descriptor.uniqueId,{type:"add",ssrComponentId:e.ssrComponentId,marker:Ut(e.descriptor)}):null}return T(e.assignedRendererId)?e.uniqueIdAtLastUpdate===e.descriptor.uniqueId?null:(e.uniqueIdAtLastUpdate=e.descriptor.uniqueId,{type:"update",ssrComponentId:e.ssrComponentId,marker:Ut(e.descriptor)}):null}return e.hasPendingRemoveOperation?null:void 0===e.assignedRendererId?(this.unregisterComponent(e),null):T(e.assignedRendererId)?(be(e.descriptor.start,!1),e.hasPendingRemoveOperation=!0,{type:"remove",ssrComponentId:e.ssrComponentId}):null;var t}resolveRootComponent(e){const t=this._rootComponentsBySsrComponentId.get(e);if(!t)throw new Error(`Could not resolve a root component with SSR component ID '${e}'.`);return t.descriptor}onAfterUpdateRootComponents(e){const t=this._pendingOperationBatches[e];delete this._pendingOperationBatches[e];for(const e of t.operations)switch(e.type){case"remove":{const t=this._rootComponentsBySsrComponentId.get(e.ssrComponentId);t&&this.unregisterComponent(t);break}}}}function Hi(e){var t;const n=null===(t=e.resources)||void 0===t?void 0:t.hash,o=e.mainAssemblyName;return n&&o?{key:`blazor-resource-hash:${o}`,value:n}:null}class Wi{constructor(){this._eventListeners=new Map}static create(e){const t=new Wi;return e.addEventListener=t.addEventListener.bind(t),e.removeEventListener=t.removeEventListener.bind(t),t}addEventListener(e,t){let n=this._eventListeners.get(e);n||(n=new Set,this._eventListeners.set(e,n)),n.add(t)}removeEventListener(e,t){var n;null===(n=this._eventListeners.get(e))||void 0===n||n.delete(t)}dispatchEvent(e,t){const n=this._eventListeners.get(e);if(!n)return;const o={...t,type:e};for(const e of n)e(o)}}let ji,zi=!1;function qi(e){var t,n,o,r;if(zi)throw new Error("Blazor has already started.");zi=!0,null!==(t=(e=e||{}).logLevel)&&void 0!==t||(e.logLevel=yt.Error),vt._internal.loadWebAssemblyQuicklyTimeout=3e3,vt._internal.hotReloadApplied=()=>{Me()&&Ue(location.href,!0)},ji=new $i(null!==(o=null===(n=null==e?void 0:e.ssr)||void 0===n?void 0:n.circuitInactivityTimeoutMs)&&void 0!==o?o:2e3);const i=Wi.create(vt),s={documentUpdated:()=>{ji.onDocumentUpdated(),i.dispatchEvent("enhancedload",{})},enhancedNavigationCompleted(){ji.onEnhancedNavigationCompleted()}};return mi=ji,function(e,t){Bi=t,(null==e?void 0:e.disableDomPreservation)&&(Oi=!1),customElements.define("blazor-ssr-end",Fi)}(null==e?void 0:e.ssr,s),(null===(r=null==e?void 0:e.ssr)||void 0===r?void 0:r.disableDomPreservation)||Di(s),"loading"===document.readyState?document.addEventListener("DOMContentLoaded",Ji.bind(null,e)):Ji(e),Promise.resolve()}function Ji(e){const t=Fo((null==e?void 0:e.circuit)||{});e.circuit=t;const n=async function(e,t){var n;const o=kt(document,Et,"initializers");if(!o)return new qo(!1,t);const r=null!==(n=JSON.parse(atob(o)))&&void 0!==n?n:[],i=new qo(!1,t);return await i.importInitializersAsync(r,[e]),i}(e,new bt(t.logLevel));er(Ki(n,t)),function(e){if($r)throw new Error("WebAssembly options have already been configured.");!async function(e){const t=await e;$r=t,Qr()}(e)}(Ki(n,(null==e?void 0:e.webAssembly)||{})),function(e){const t=Ci(document);for(const e of t)null==mi||mi.registerComponent(e)}(),ji.onDocumentUpdated(),async function(e){const t=await e;await t.invokeAfterStartedCallbacks(vt)}(n)}async function Ki(e,t){return await e,t}vt.start=qi,window.DotNet=e,document&&document.currentScript&&"false"!==document.currentScript.getAttribute("autostart")&&qi()})()})(); \ No newline at end of file +(()=>{var e={778:()=>{},77:()=>{},203:()=>{},200:()=>{},628:()=>{},321:()=>{}},t={};function n(o){var r=t[o];if(void 0!==r)return r.exports;var i=t[o]={exports:{}};return e[o](i,i.exports,n),i.exports}n.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),(()=>{"use strict";var e,t,o;!function(e){const t=[],n="__jsObjectId",o="__dotNetObject",r="__byte[]",i="__dotNetStream",s="__jsStreamReferenceLength";let a,c;class l{constructor(e){this._jsObject=e,this._cachedFunctions=new Map}findFunction(e){const t=this._cachedFunctions.get(e);if(t)return t;let n,o=this._jsObject;if(e.split(".").forEach((t=>{if(!(t in o))throw new Error(`Could not find '${e}' ('${t}' was undefined).`);n=o,o=o[t]})),o instanceof Function)return o=o.bind(n),this._cachedFunctions.set(e,o),o;throw new Error(`The value '${e}' is not a function.`)}getWrappedObject(){return this._jsObject}}const h={0:new l(window)};h[0]._cachedFunctions.set("import",(e=>("string"==typeof e&&e.startsWith("./")&&(e=new URL(e.substr(2),document.baseURI).toString()),import(e))));let d,u=1;function p(e){t.push(e)}function f(e){if(e&&"object"==typeof e){h[u]=new l(e);const t={[n]:u};return u++,t}throw new Error(`Cannot create a JSObjectReference from the value '${e}'.`)}function g(e){let t=-1;if(e instanceof ArrayBuffer&&(e=new Uint8Array(e)),e instanceof Blob)t=e.size;else{if(!(e.buffer instanceof ArrayBuffer))throw new Error("Supplied value is not a typed array or blob.");if(void 0===e.byteLength)throw new Error(`Cannot create a JSStreamReference from the value '${e}' as it doesn't have a byteLength.`);t=e.byteLength}const o={[s]:t};try{const t=f(e);o[n]=t[n]}catch(t){throw new Error(`Cannot create a JSStreamReference from the value '${e}'.`)}return o}function m(e,n){c=e;const o=n?JSON.parse(n,((e,n)=>t.reduce(((t,n)=>n(e,t)),n))):null;return c=void 0,o}function v(){if(void 0===a)throw new Error("No call dispatcher has been set.");if(null===a)throw new Error("There are multiple .NET runtimes present, so a default dispatcher could not be resolved. Use DotNetObject to invoke .NET instance methods.");return a}e.attachDispatcher=function(e){const t=new y(e);return void 0===a?a=t:a&&(a=null),t},e.attachReviver=p,e.invokeMethod=function(e,t,...n){return v().invokeDotNetStaticMethod(e,t,...n)},e.invokeMethodAsync=function(e,t,...n){return v().invokeDotNetStaticMethodAsync(e,t,...n)},e.createJSObjectReference=f,e.createJSStreamReference=g,e.disposeJSObjectReference=function(e){const t=e&&e[n];"number"==typeof t&&_(t)},function(e){e[e.Default=0]="Default",e[e.JSObjectReference=1]="JSObjectReference",e[e.JSStreamReference=2]="JSStreamReference",e[e.JSVoidResult=3]="JSVoidResult"}(d=e.JSCallResultType||(e.JSCallResultType={}));class y{constructor(e){this._dotNetCallDispatcher=e,this._byteArraysToBeRevived=new Map,this._pendingDotNetToJSStreams=new Map,this._pendingAsyncCalls={},this._nextAsyncCallId=1}getDotNetCallDispatcher(){return this._dotNetCallDispatcher}invokeJSFromDotNet(e,t,n,o){const r=m(this,t),i=I(b(e,o)(...r||[]),n);return null==i?null:T(this,i)}beginInvokeJSFromDotNet(e,t,n,o,r){const i=new Promise((e=>{const o=m(this,n);e(b(t,r)(...o||[]))}));e&&i.then((t=>T(this,[e,!0,I(t,o)]))).then((t=>this._dotNetCallDispatcher.endInvokeJSFromDotNet(e,!0,t)),(t=>this._dotNetCallDispatcher.endInvokeJSFromDotNet(e,!1,JSON.stringify([e,!1,w(t)]))))}endInvokeDotNetFromJS(e,t,n){const o=t?m(this,n):new Error(n);this.completePendingCall(parseInt(e,10),t,o)}invokeDotNetStaticMethod(e,t,...n){return this.invokeDotNetMethod(e,t,null,n)}invokeDotNetStaticMethodAsync(e,t,...n){return this.invokeDotNetMethodAsync(e,t,null,n)}invokeDotNetMethod(e,t,n,o){if(this._dotNetCallDispatcher.invokeDotNetFromJS){const r=T(this,o),i=this._dotNetCallDispatcher.invokeDotNetFromJS(e,t,n,r);return i?m(this,i):null}throw new Error("The current dispatcher does not support synchronous calls from JS to .NET. Use invokeDotNetMethodAsync instead.")}invokeDotNetMethodAsync(e,t,n,o){if(e&&n)throw new Error(`For instance method calls, assemblyName should be null. Received '${e}'.`);const r=this._nextAsyncCallId++,i=new Promise(((e,t)=>{this._pendingAsyncCalls[r]={resolve:e,reject:t}}));try{const i=T(this,o);this._dotNetCallDispatcher.beginInvokeDotNetFromJS(r,e,t,n,i)}catch(e){this.completePendingCall(r,!1,e)}return i}receiveByteArray(e,t){this._byteArraysToBeRevived.set(e,t)}processByteArray(e){const t=this._byteArraysToBeRevived.get(e);return t?(this._byteArraysToBeRevived.delete(e),t):null}supplyDotNetStream(e,t){if(this._pendingDotNetToJSStreams.has(e)){const n=this._pendingDotNetToJSStreams.get(e);this._pendingDotNetToJSStreams.delete(e),n.resolve(t)}else{const n=new E;n.resolve(t),this._pendingDotNetToJSStreams.set(e,n)}}getDotNetStreamPromise(e){let t;if(this._pendingDotNetToJSStreams.has(e))t=this._pendingDotNetToJSStreams.get(e).streamPromise,this._pendingDotNetToJSStreams.delete(e);else{const n=new E;this._pendingDotNetToJSStreams.set(e,n),t=n.streamPromise}return t}completePendingCall(e,t,n){if(!this._pendingAsyncCalls.hasOwnProperty(e))throw new Error(`There is no pending async call with ID ${e}.`);const o=this._pendingAsyncCalls[e];delete this._pendingAsyncCalls[e],t?o.resolve(n):o.reject(n)}}function w(e){return e instanceof Error?`${e.message}\n${e.stack}`:e?e.toString():"null"}function b(e,t){const n=h[t];if(n)return n.findFunction(e);throw new Error(`JS object instance with ID ${t} does not exist (has it been disposed?).`)}function _(e){delete h[e]}e.findJSFunction=b,e.disposeJSObjectReferenceById=_;class S{constructor(e,t){this._id=e,this._callDispatcher=t}invokeMethod(e,...t){return this._callDispatcher.invokeDotNetMethod(null,e,this._id,t)}invokeMethodAsync(e,...t){return this._callDispatcher.invokeDotNetMethodAsync(null,e,this._id,t)}dispose(){this._callDispatcher.invokeDotNetMethodAsync(null,"__Dispose",this._id,null).catch((e=>console.error(e)))}serializeAsArg(){return{[o]:this._id}}}e.DotNetObject=S,p((function(e,t){if(t&&"object"==typeof t){if(t.hasOwnProperty(o))return new S(t[o],c);if(t.hasOwnProperty(n)){const e=t[n],o=h[e];if(o)return o.getWrappedObject();throw new Error(`JS object instance with Id '${e}' does not exist. It may have been disposed.`)}if(t.hasOwnProperty(r)){const e=t[r],n=c.processByteArray(e);if(void 0===n)throw new Error(`Byte array index '${e}' does not exist.`);return n}if(t.hasOwnProperty(i)){const e=t[i],n=c.getDotNetStreamPromise(e);return new C(n)}}return t}));class C{constructor(e){this._streamPromise=e}stream(){return this._streamPromise}async arrayBuffer(){return new Response(await this.stream()).arrayBuffer()}}class E{constructor(){this.streamPromise=new Promise(((e,t)=>{this.resolve=e,this.reject=t}))}}function I(e,t){switch(t){case d.Default:return e;case d.JSObjectReference:return f(e);case d.JSStreamReference:return g(e);case d.JSVoidResult:return null;default:throw new Error(`Invalid JS call result type '${t}'.`)}}let k=0;function T(e,t){k=0,c=e;const n=JSON.stringify(t,R);return c=void 0,n}function R(e,t){if(t instanceof S)return t.serializeAsArg();if(t instanceof Uint8Array){c.getDotNetCallDispatcher().sendByteArray(k,t);const e={[r]:k};return k++,e}return t}}(e||(e={})),function(e){e[e.prependFrame=1]="prependFrame",e[e.removeFrame=2]="removeFrame",e[e.setAttribute=3]="setAttribute",e[e.removeAttribute=4]="removeAttribute",e[e.updateText=5]="updateText",e[e.stepIn=6]="stepIn",e[e.stepOut=7]="stepOut",e[e.updateMarkup=8]="updateMarkup",e[e.permutationListEntry=9]="permutationListEntry",e[e.permutationListEnd=10]="permutationListEnd"}(t||(t={})),function(e){e[e.element=1]="element",e[e.text=2]="text",e[e.attribute=3]="attribute",e[e.component=4]="component",e[e.region=5]="region",e[e.elementReferenceCapture=6]="elementReferenceCapture",e[e.markup=8]="markup",e[e.namedEvent=10]="namedEvent"}(o||(o={}));class r{constructor(e,t){this.componentId=e,this.fieldValue=t}static fromEvent(e,t){const n=t.target;if(n instanceof Element){const t=function(e){return e instanceof HTMLInputElement?e.type&&"checkbox"===e.type.toLowerCase()?{value:e.checked}:{value:e.value}:e instanceof HTMLSelectElement||e instanceof HTMLTextAreaElement?{value:e.value}:null}(n);if(t)return new r(e,t.value)}return null}}const i=new Map,s=new Map,a=[];function c(e){return i.get(e)}function l(e){const t=i.get(e);return(null==t?void 0:t.browserEventName)||e}function h(e,t){e.forEach((e=>i.set(e,t)))}function d(e){const t=[];for(let n=0;ne.selected)).map((e=>e.value))}}{const e=function(e){return!!e&&"INPUT"===e.tagName&&"checkbox"===e.getAttribute("type")}(t);return{value:e?!!t.checked:t.value}}}}),h(["copy","cut","paste"],{createEventArgs:e=>({type:e.type})}),h(["drag","dragend","dragenter","dragleave","dragover","dragstart","drop"],{createEventArgs:e=>{return{...u(t=e),dataTransfer:t.dataTransfer?{dropEffect:t.dataTransfer.dropEffect,effectAllowed:t.dataTransfer.effectAllowed,files:Array.from(t.dataTransfer.files).map((e=>e.name)),items:Array.from(t.dataTransfer.items).map((e=>({kind:e.kind,type:e.type}))),types:t.dataTransfer.types}:null};var t}}),h(["focus","blur","focusin","focusout"],{createEventArgs:e=>({type:e.type})}),h(["keydown","keyup","keypress"],{createEventArgs:e=>{return{key:(t=e).key,code:t.code,location:t.location,repeat:t.repeat,ctrlKey:t.ctrlKey,shiftKey:t.shiftKey,altKey:t.altKey,metaKey:t.metaKey,type:t.type};var t}}),h(["contextmenu","click","mouseover","mouseout","mousemove","mousedown","mouseup","mouseleave","mouseenter","dblclick"],{createEventArgs:e=>u(e)}),h(["error"],{createEventArgs:e=>{return{message:(t=e).message,filename:t.filename,lineno:t.lineno,colno:t.colno,type:t.type};var t}}),h(["loadstart","timeout","abort","load","loadend","progress"],{createEventArgs:e=>{return{lengthComputable:(t=e).lengthComputable,loaded:t.loaded,total:t.total,type:t.type};var t}}),h(["touchcancel","touchend","touchmove","touchenter","touchleave","touchstart"],{createEventArgs:e=>{return{detail:(t=e).detail,touches:d(t.touches),targetTouches:d(t.targetTouches),changedTouches:d(t.changedTouches),ctrlKey:t.ctrlKey,shiftKey:t.shiftKey,altKey:t.altKey,metaKey:t.metaKey,type:t.type};var t}}),h(["gotpointercapture","lostpointercapture","pointercancel","pointerdown","pointerenter","pointerleave","pointermove","pointerout","pointerover","pointerup"],{createEventArgs:e=>{return{...u(t=e),pointerId:t.pointerId,width:t.width,height:t.height,pressure:t.pressure,tiltX:t.tiltX,tiltY:t.tiltY,pointerType:t.pointerType,isPrimary:t.isPrimary};var t}}),h(["wheel","mousewheel"],{createEventArgs:e=>{return{...u(t=e),deltaX:t.deltaX,deltaY:t.deltaY,deltaZ:t.deltaZ,deltaMode:t.deltaMode};var t}}),h(["cancel","close","toggle"],{createEventArgs:()=>({})});const p=["date","datetime-local","month","time","week"],f=new Map;let g,m,v=0;const y={async add(e,t,n){if(!n)throw new Error("initialParameters must be an object, even if empty.");const o="__bl-dynamic-root:"+(++v).toString();f.set(o,e);const r=await S().invokeMethodAsync("AddRootComponent",t,o),i=new _(r,m[t]);return await i.setParameters(n),i}};function w(e){const t=f.get(e);if(t)return f.delete(e),t}class b{invoke(e){return this._callback(e)}setCallback(t){this._selfJSObjectReference||(this._selfJSObjectReference=e.createJSObjectReference(this)),this._callback=t}getJSObjectReference(){return this._selfJSObjectReference}dispose(){this._selfJSObjectReference&&e.disposeJSObjectReference(this._selfJSObjectReference)}}class _{constructor(e,t){this._jsEventCallbackWrappers=new Map,this._componentId=e;for(const e of t)"eventcallback"===e.type&&this._jsEventCallbackWrappers.set(e.name.toLowerCase(),new b)}setParameters(e){const t={},n=Object.entries(e||{}),o=n.length;for(const[e,o]of n){const n=this._jsEventCallbackWrappers.get(e.toLowerCase());n&&o?(n.setCallback(o),t[e]=n.getJSObjectReference()):t[e]=o}return S().invokeMethodAsync("SetRootComponentParameters",this._componentId,o,t)}async dispose(){if(null!==this._componentId){await S().invokeMethodAsync("RemoveRootComponent",this._componentId),this._componentId=null;for(const e of this._jsEventCallbackWrappers.values())e.dispose()}}}function S(){if(!g)throw new Error("Dynamic root components have not been enabled in this application.");return g}const C=new Map,E=[],I=new Map;function k(t,n,o,r){var i,s;if(C.has(t))throw new Error(`Interop methods are already registered for renderer ${t}`);C.set(t,n),o&&r&&Object.keys(o).length>0&&function(t,n,o){if(g)throw new Error("Dynamic root components have already been enabled.");g=t,m=n;for(const[t,r]of Object.entries(o)){const o=e.findJSFunction(t,0);for(const e of r)o(e,n[e])}}(D(t),o,r),null===(s=null===(i=I.get(t))||void 0===i?void 0:i[0])||void 0===s||s.call(i),function(e){for(const t of E)t(e)}(t)}function T(e){return C.has(e)}function R(e,t,n){return A(e,t.eventHandlerId,(()=>D(e).invokeMethodAsync("DispatchEventAsync",t,n)))}function D(e){const t=C.get(e);if(!t)throw new Error(`No interop methods are registered for renderer ${e}`);return t}let A=(e,t,n)=>n();const x=B(["abort","blur","cancel","canplay","canplaythrough","change","close","cuechange","durationchange","emptied","ended","error","focus","load","loadeddata","loadedmetadata","loadend","loadstart","mouseenter","mouseleave","pointerenter","pointerleave","pause","play","playing","progress","ratechange","reset","scroll","seeked","seeking","stalled","submit","suspend","timeupdate","toggle","unload","volumechange","waiting","DOMNodeInsertedIntoDocument","DOMNodeRemovedFromDocument"]),N={submit:!0},P=B(["click","dblclick","mousedown","mousemove","mouseup"]);class M{constructor(e){this.browserRendererId=e,this.afterClickCallbacks=[];const t=++M.nextEventDelegatorId;this.eventsCollectionKey=`_blazorEvents_${t}`,this.eventInfoStore=new U(this.onGlobalEvent.bind(this))}setListener(e,t,n,o){const r=this.getEventHandlerInfosForElement(e,!0),i=r.getHandler(t);if(i)this.eventInfoStore.update(i.eventHandlerId,n);else{const i={element:e,eventName:t,eventHandlerId:n,renderingComponentId:o};this.eventInfoStore.add(i),r.setHandler(t,i)}}getHandler(e){return this.eventInfoStore.get(e)}removeListener(e){const t=this.eventInfoStore.remove(e);if(t){const e=t.element,n=this.getEventHandlerInfosForElement(e,!1);n&&n.removeHandler(t.eventName)}}notifyAfterClick(e){this.afterClickCallbacks.push(e),this.eventInfoStore.addGlobalListener("click")}setStopPropagation(e,t,n){this.getEventHandlerInfosForElement(e,!0).stopPropagation(t,n)}setPreventDefault(e,t,n){this.getEventHandlerInfosForElement(e,!0).preventDefault(t,n)}onGlobalEvent(e){if(!(e.target instanceof Element))return;this.dispatchGlobalEventToAllElements(e.type,e);const t=(n=e.type,s.get(n));var n;t&&t.forEach((t=>this.dispatchGlobalEventToAllElements(t,e))),"click"===e.type&&this.afterClickCallbacks.forEach((t=>t(e)))}dispatchGlobalEventToAllElements(e,t){const n=t.composedPath();let o=n.shift(),i=null,s=!1;const a=Object.prototype.hasOwnProperty.call(x,e);let l=!1;for(;o;){const u=o,p=this.getEventHandlerInfosForElement(u,!1);if(p){const n=p.getHandler(e);if(n&&(h=u,d=t.type,!((h instanceof HTMLButtonElement||h instanceof HTMLInputElement||h instanceof HTMLTextAreaElement||h instanceof HTMLSelectElement)&&Object.prototype.hasOwnProperty.call(P,d)&&h.disabled))){if(!s){const n=c(e);i=(null==n?void 0:n.createEventArgs)?n.createEventArgs(t):{},s=!0}Object.prototype.hasOwnProperty.call(N,t.type)&&t.preventDefault(),R(this.browserRendererId,{eventHandlerId:n.eventHandlerId,eventName:e,eventFieldInfo:r.fromEvent(n.renderingComponentId,t)},i)}p.stopPropagation(e)&&(l=!0),p.preventDefault(e)&&t.preventDefault()}o=a||l?void 0:n.shift()}var h,d}getEventHandlerInfosForElement(e,t){return Object.prototype.hasOwnProperty.call(e,this.eventsCollectionKey)?e[this.eventsCollectionKey]:t?e[this.eventsCollectionKey]=new L:null}}M.nextEventDelegatorId=0;class U{constructor(e){this.globalListener=e,this.infosByEventHandlerId={},this.countByEventName={},a.push(this.handleEventNameAliasAdded.bind(this))}add(e){if(this.infosByEventHandlerId[e.eventHandlerId])throw new Error(`Event ${e.eventHandlerId} is already tracked`);this.infosByEventHandlerId[e.eventHandlerId]=e,this.addGlobalListener(e.eventName)}get(e){return this.infosByEventHandlerId[e]}addGlobalListener(e){if(e=l(e),Object.prototype.hasOwnProperty.call(this.countByEventName,e))this.countByEventName[e]++;else{this.countByEventName[e]=1;const t=Object.prototype.hasOwnProperty.call(x,e);document.addEventListener(e,this.globalListener,t)}}update(e,t){if(Object.prototype.hasOwnProperty.call(this.infosByEventHandlerId,t))throw new Error(`Event ${t} is already tracked`);const n=this.infosByEventHandlerId[e];delete this.infosByEventHandlerId[e],n.eventHandlerId=t,this.infosByEventHandlerId[t]=n}remove(e){const t=this.infosByEventHandlerId[e];if(t){delete this.infosByEventHandlerId[e];const n=l(t.eventName);0==--this.countByEventName[n]&&(delete this.countByEventName[n],document.removeEventListener(n,this.globalListener))}return t}handleEventNameAliasAdded(e,t){if(Object.prototype.hasOwnProperty.call(this.countByEventName,e)){const n=this.countByEventName[e];delete this.countByEventName[e],document.removeEventListener(e,this.globalListener),this.addGlobalListener(t),this.countByEventName[t]+=n-1}}}class L{constructor(){this.handlers={},this.preventDefaultFlags=null,this.stopPropagationFlags=null}getHandler(e){return Object.prototype.hasOwnProperty.call(this.handlers,e)?this.handlers[e]:null}setHandler(e,t){this.handlers[e]=t}removeHandler(e){delete this.handlers[e]}preventDefault(e,t){return void 0!==t&&(this.preventDefaultFlags=this.preventDefaultFlags||{},this.preventDefaultFlags[e]=t),!!this.preventDefaultFlags&&this.preventDefaultFlags[e]}stopPropagation(e,t){return void 0!==t&&(this.stopPropagationFlags=this.stopPropagationFlags||{},this.stopPropagationFlags[e]=t),!!this.stopPropagationFlags&&this.stopPropagationFlags[e]}}function B(e){const t={};return e.forEach((e=>{t[e]=!0})),t}const O=Symbol(),F=Symbol(),$=Symbol();function H(e){const{start:t,end:n}=e,o=t[$];if(o){if(o!==e)throw new Error("The start component comment was already associated with another component descriptor.");return t}const r=t.parentNode;if(!r)throw new Error(`Comment not connected to the DOM ${t.textContent}`);const i=W(r,!0),s=Y(i);t[F]=i,t[$]=e;const a=W(t);if(n){const e=Y(a),o=Array.prototype.indexOf.call(s,a)+1;let r=null;for(;r!==n;){const n=s.splice(o,1)[0];if(!n)throw new Error("Could not find the end component comment in the parent logical node list");n[F]=t,e.push(n),r=n}}return a}function W(e,t){if(O in e)return e;const n=[];if(e.childNodes.length>0){if(!t)throw new Error("New logical elements must start empty, or allowExistingContents must be true");e.childNodes.forEach((t=>{const o=W(t,!0);o[F]=e,n.push(o)}))}return e[O]=n,e}function j(e){const t=Y(e);for(;t.length;)J(e,0)}function z(e,t){const n=document.createComment("!");return q(n,e,t),n}function q(e,t,n){const o=e;let r=e;if(Z(e)){const t=oe(o);if(t!==e){const n=new Range;n.setStartBefore(e),n.setEndAfter(t),r=n.extractContents()}}const i=K(o);if(i){const e=Y(i),t=Array.prototype.indexOf.call(e,o);e.splice(t,1),delete o[F]}const s=Y(t);if(n0;)J(n,0)}const o=n;o.parentNode.removeChild(o)}function K(e){return e[F]||null}function V(e,t){return Y(e)[t]}function X(e){return e[$]||null}function G(e){const t=te(e);return"http://www.w3.org/2000/svg"===t.namespaceURI&&"foreignObject"!==t.tagName}function Y(e){return e[O]}function Q(e){const t=Y(K(e));return t[Array.prototype.indexOf.call(t,e)+1]||null}function Z(e){return O in e}function ee(e,t){const n=Y(e);t.forEach((e=>{e.moveRangeStart=n[e.fromSiblingIndex],e.moveRangeEnd=oe(e.moveRangeStart)})),t.forEach((t=>{const o=document.createComment("marker");t.moveToBeforeMarker=o;const r=n[t.toSiblingIndex+1];r?r.parentNode.insertBefore(o,r):ne(o,e)})),t.forEach((e=>{const t=e.moveToBeforeMarker,n=t.parentNode,o=e.moveRangeStart,r=e.moveRangeEnd;let i=o;for(;i;){const e=i.nextSibling;if(n.insertBefore(i,t),i===r)break;i=e}n.removeChild(t)})),t.forEach((e=>{n[e.toSiblingIndex]=e.moveRangeStart}))}function te(e){if(e instanceof Element||e instanceof DocumentFragment)return e;if(e instanceof Comment)return e.parentNode;throw new Error("Not a valid logical element")}function ne(e,t){if(t instanceof Element||t instanceof DocumentFragment)t.appendChild(e);else{if(!(t instanceof Comment))throw new Error(`Cannot append node because the parent is not a valid logical element. Parent: ${t}`);{const n=Q(t);n?n.parentNode.insertBefore(e,n):ne(e,K(t))}}}function oe(e){if(e instanceof Element||e instanceof DocumentFragment)return e;const t=Q(e);if(t)return t.previousSibling;{const t=K(e);return t instanceof Element||t instanceof DocumentFragment?t.lastChild:oe(t)}}function re(e){return`_bl_${e}`}const ie="__internalId";e.attachReviver(((e,t)=>t&&"object"==typeof t&&Object.prototype.hasOwnProperty.call(t,ie)&&"string"==typeof t[ie]?function(e){const t=`[${re(e)}]`;return document.querySelector(t)}(t[ie]):t));const se="_blazorDeferredValue";function ae(e){e instanceof HTMLOptionElement?de(e):se in e&&he(e,e[se])}function ce(e){return"select-multiple"===e.type}function le(e,t){e.value=t||""}function he(e,t){e instanceof HTMLSelectElement?ce(e)?function(e,t){t||(t=[]);for(let n=0;n{Oe()&&Ne(e,(e=>{Xe(e,!0,!1)}))}))}getRootComponentCount(){return this.rootComponentIds.size}attachRootComponentToLogicalElement(e,t,n){if(we(t))throw new Error(`Root component '${e}' could not be attached because its target element is already associated with a root component`);n&&(t=z(t,Y(t).length)),ye(t,!0),this.attachComponentToElement(e,t),this.rootComponentIds.add(e),fe.add(t)}updateComponent(e,t,n,o){var r;const i=this.childComponentLocations[t];if(!i)throw new Error(`No element is currently associated with component ${t}`);fe.delete(i)&&(j(i),i instanceof Comment&&(i.textContent="!"));const s=null===(r=te(i))||void 0===r?void 0:r.getRootNode(),a=s&&s.activeElement;this.applyEdits(e,t,i,0,n,o),a instanceof HTMLElement&&s&&s.activeElement!==a&&a.focus()}disposeComponent(e){if(this.rootComponentIds.delete(e)){const t=this.childComponentLocations[e];ye(t,!1),!0===t[me]?fe.add(t):j(t)}delete this.childComponentLocations[e]}disposeEventHandler(e){this.eventDelegator.removeListener(e)}attachComponentToElement(e,t){this.childComponentLocations[e]=t}applyEdits(e,n,o,r,i,s){let a,c=0,l=r;const h=e.arrayBuilderSegmentReader,d=e.editReader,u=e.frameReader,p=h.values(i),f=h.offset(i),g=f+h.count(i);for(let i=f;i{const t=document.createElement("script");t.textContent=e.textContent,e.getAttributeNames().forEach((n=>{t.setAttribute(n,e.getAttribute(n))})),e.parentNode.replaceChild(t,e)})),ue.content));var s;let a=0;for(;i.firstChild;)q(i.firstChild,r,a++)}applyAttribute(e,t,n,o){const r=e.frameReader,i=r.attributeName(o),s=r.attributeEventHandlerId(o);if(s){const e=Se(i);return void this.eventDelegator.setListener(n,e,s,t)}const a=r.attributeValue(o);this.setOrRemoveAttributeOrProperty(n,i,a)}insertFrameRange(e,t,n,o,r,i,s){const a=o;for(let a=i;a{et(t,e)})},enableNavigationInterception:function(e){if(void 0!==Ee&&Ee!==e)throw new Error("Only one interactive runtime may enable navigation interception at a time.");Ee=e},setHasLocationChangingListeners:function(e,t){const n=je.get(e);if(!n)throw new Error(`Renderer with ID '${e}' is not listening for navigation events`);n.hasLocationChangingEventListeners=t},endLocationChanging:function(e,t){qe&&e===We&&(qe(t),qe=null)},navigateTo:function(e,t){Ve(e,t,!0)},refresh:function(e){!e&&Me()?Ue(location.href,!0):location.reload()},getBaseURI:()=>document.baseURI,getLocationHref:()=>location.href,scrollToElement:Ke};function Ke(e){const t=document.getElementById(e);return!!t&&(t.scrollIntoView(),!0)}function Ve(e,t,n=!1){const o=Le(e);!t.forceLoad&&Pe(o)?ot()?Xe(o,!1,t.replaceHistoryEntry,t.historyEntryState,n):Ue(o,t.replaceHistoryEntry):function(e,t){if(location.href===e){const t=e+"?";history.replaceState(null,"",t),location.replace(e)}else t?location.replace(e):location.href=e}(e,t.replaceHistoryEntry)}async function Xe(e,t,n,o=void 0,r=!1){if(Qe(),function(e){const t=e.indexOf("#");return t>-1&&location.href.replace(location.hash,"")===e.substring(0,t)}(e))return void function(e,t,n){Ge(e,t,n);const o=e.indexOf("#");o!==e.length-1&&Ke(e.substring(o+1))}(e,n,o);const i=nt();(r||!(null==i?void 0:i.hasLocationChangingEventListeners)||await Ze(e,o,t,i))&&(Re=!0,Ge(e,n,o),await et(t))}function Ge(e,t,n=void 0){t?history.replaceState({userState:n,_index:He},"",e):(He++,history.pushState({userState:n,_index:He},"",e))}function Ye(e){return new Promise((t=>{const n=ze;ze=()=>{ze=n,t()},history.go(e)}))}function Qe(){qe&&(qe(!1),qe=null)}function Ze(e,t,n,o){return new Promise((r=>{Qe(),We++,qe=r,o.locationChanging(We,e,t,n)}))}async function et(e,t){const n=null!=t?t:location.href;await Promise.all(Array.from(je,(async([t,o])=>{var r;T(t)&&await o.locationChanged(n,null===(r=history.state)||void 0===r?void 0:r.userState,e)})))}async function tt(e){var t,n;ze&&ot()&&await ze(e),He=null!==(n=null===(t=history.state)||void 0===t?void 0:t._index)&&void 0!==n?n:0}function nt(){const e=Fe();if(void 0!==e)return je.get(e)}function ot(){return Oe()||!Me()}const rt={focus:function(e,t){if(e instanceof HTMLElement)e.focus({preventScroll:t});else{if(!(e instanceof SVGElement))throw new Error("Unable to focus an invalid element.");if(!e.hasAttribute("tabindex"))throw new Error("Unable to focus an SVG element that does not have a tabindex.");e.focus({preventScroll:t})}},focusBySelector:function(e,t){const n=document.querySelector(e);n&&(n.hasAttribute("tabindex")||(n.tabIndex=-1),n.focus({preventScroll:!0}))}},it={init:function(e,t,n,o=50){const r=at(t);(r||document.documentElement).style.overflowAnchor="none";const i=document.createRange();u(n.parentElement)&&(t.style.display="table-row",n.style.display="table-row");const s=new IntersectionObserver((function(o){o.forEach((o=>{var r;if(!o.isIntersecting)return;i.setStartAfter(t),i.setEndBefore(n);const s=i.getBoundingClientRect().height,a=null===(r=o.rootBounds)||void 0===r?void 0:r.height;o.target===t?e.invokeMethodAsync("OnSpacerBeforeVisible",o.intersectionRect.top-o.boundingClientRect.top,s,a):o.target===n&&n.offsetHeight>0&&e.invokeMethodAsync("OnSpacerAfterVisible",o.boundingClientRect.bottom-o.intersectionRect.bottom,s,a)}))}),{root:r,rootMargin:`${o}px`});s.observe(t),s.observe(n);const a=d(t),c=d(n),{observersByDotNetObjectId:l,id:h}=ct(e);function d(e){const t={attributes:!0},n=new MutationObserver(((n,o)=>{u(e.parentElement)&&(o.disconnect(),e.style.display="table-row",o.observe(e,t)),s.unobserve(e),s.observe(e)}));return n.observe(e,t),n}function u(e){return null!==e&&(e instanceof HTMLTableElement&&""===e.style.display||"table"===e.style.display||e instanceof HTMLTableSectionElement&&""===e.style.display||"table-row-group"===e.style.display)}l[h]={intersectionObserver:s,mutationObserverBefore:a,mutationObserverAfter:c}},dispose:function(e){const{observersByDotNetObjectId:t,id:n}=ct(e),o=t[n];o&&(o.intersectionObserver.disconnect(),o.mutationObserverBefore.disconnect(),o.mutationObserverAfter.disconnect(),e.dispose(),delete t[n])}},st=Symbol();function at(e){return e&&e!==document.body&&e!==document.documentElement?"visible"!==getComputedStyle(e).overflowY?e:at(e.parentElement):null}function ct(e){var t;const n=e._callDispatcher,o=e._id;return null!==(t=n[st])&&void 0!==t||(n[st]={}),{observersByDotNetObjectId:n[st],id:o}}const lt={getAndRemoveExistingTitle:function(){var e;const t=document.head?document.head.getElementsByTagName("title"):[];if(0===t.length)return null;let n=null;for(let o=t.length-1;o>=0;o--){const r=t[o],i=r.previousSibling;i instanceof Comment&&null!==K(i)||(null===n&&(n=r.textContent),null===(e=r.parentNode)||void 0===e||e.removeChild(r))}return n}},ht={init:function(e,t){t._blazorInputFileNextFileId=0,t.addEventListener("click",(function(){t.value=""})),t.addEventListener("change",(function(){t._blazorFilesById={};const n=Array.prototype.map.call(t.files,(function(e){const n={id:++t._blazorInputFileNextFileId,lastModified:new Date(e.lastModified).toISOString(),name:e.name,size:e.size,contentType:e.type,readPromise:void 0,arrayBuffer:void 0,blob:e};return t._blazorFilesById[n.id]=n,n}));e.invokeMethodAsync("NotifyChange",n)}))},toImageFile:async function(e,t,n,o,r){const i=dt(e,t),s=await new Promise((function(e){const t=new Image;t.onload=function(){URL.revokeObjectURL(t.src),e(t)},t.onerror=function(){t.onerror=null,URL.revokeObjectURL(t.src)},t.src=URL.createObjectURL(i.blob)})),a=await new Promise((function(e){var t;const i=Math.min(1,o/s.width),a=Math.min(1,r/s.height),c=Math.min(i,a),l=document.createElement("canvas");l.width=Math.round(s.width*c),l.height=Math.round(s.height*c),null===(t=l.getContext("2d"))||void 0===t||t.drawImage(s,0,0,l.width,l.height),l.toBlob(e,n)})),c={id:++e._blazorInputFileNextFileId,lastModified:i.lastModified,name:i.name,size:(null==a?void 0:a.size)||0,contentType:n,blob:a||i.blob};return e._blazorFilesById[c.id]=c,c},readFileData:async function(e,t){return dt(e,t).blob}};function dt(e,t){const n=e._blazorFilesById[t];if(!n)throw new Error(`There is no file with ID ${t}. The file list may have changed. See https://aka.ms/aspnet/blazor-input-file-multiple-selections.`);return n}const ut=new Set,pt={enableNavigationPrompt:function(e){0===ut.size&&window.addEventListener("beforeunload",ft),ut.add(e)},disableNavigationPrompt:function(e){ut.delete(e),0===ut.size&&window.removeEventListener("beforeunload",ft)}};function ft(e){e.preventDefault(),e.returnValue=!0}async function gt(e,t,n){return e instanceof Blob?await async function(e,t,n){const o=e.slice(t,t+n),r=await o.arrayBuffer();return new Uint8Array(r)}(e,t,n):function(e,t,n){return new Uint8Array(e.buffer,e.byteOffset+t,n)}(e,t,n)}const mt=new Map,vt={navigateTo:function(e,t,n=!1){Ve(e,t instanceof Object?t:{forceLoad:t,replaceHistoryEntry:n})},registerCustomEventType:function(e,t){if(!t)throw new Error("The options parameter is required.");if(i.has(e))throw new Error(`The event '${e}' is already registered.`);if(t.browserEventName){const n=s.get(t.browserEventName);n?n.push(e):s.set(t.browserEventName,[e]),a.forEach((n=>n(e,t.browserEventName)))}i.set(e,t)},rootComponents:y,runtime:{},_internal:{navigationManager:Je,domWrapper:rt,Virtualize:it,PageTitle:lt,InputFile:ht,NavigationLock:pt,getJSDataStreamChunk:gt,attachWebRendererInterop:k}};var yt;window.Blazor=vt,function(e){e[e.Trace=0]="Trace",e[e.Debug=1]="Debug",e[e.Information=2]="Information",e[e.Warning=3]="Warning",e[e.Error=4]="Error",e[e.Critical=5]="Critical",e[e.None=6]="None"}(yt||(yt={}));class wt{log(e,t){}}wt.instance=new wt;class bt{constructor(e){this.minLevel=e}log(e,t){if(e>=this.minLevel){const n=`[${(new Date).toISOString()}] ${yt[e]}: ${t}`;switch(e){case yt.Critical:case yt.Error:console.error(n);break;case yt.Warning:console.warn(n);break;case yt.Information:console.info(n);break;default:console.log(n)}}}}function _t(e,t){switch(t){case"webassembly":return Tt(e,"webassembly");case"server":return function(e){return Tt(e,"server").sort(((e,t)=>e.sequence-t.sequence))}(e);case"auto":return Tt(e,"auto")}}const St=/^\s*Blazor-Server-Component-State:(?[a-zA-Z0-9+/=]+)$/,Ct=/^\s*Blazor-WebAssembly-Component-State:(?[a-zA-Z0-9+/=]+)$/,Et=/^\s*Blazor-Web-Initializers:(?[a-zA-Z0-9+/=]+)$/;function It(e){return kt(e,St)}function kt(e,t,n="state"){var o;if(e.nodeType===Node.COMMENT_NODE){const r=e.textContent||"",i=t.exec(r),s=i&&i.groups&&i.groups[n];return s&&(null===(o=e.parentNode)||void 0===o||o.removeChild(e)),s}if(!e.hasChildNodes())return;const r=e.childNodes;for(let e=0;e.*)$/);function Dt(e,t){const n=e.currentElement;var o,r,i;if(n&&n.nodeType===Node.COMMENT_NODE&&n.textContent){const s=Rt.exec(n.textContent),a=s&&s.groups&&s.groups.descriptor;if(!a)return;!function(e){if(e.parentNode instanceof Document)throw new Error("Root components cannot be marked as interactive. The element must be rendered statically so that scripts are not evaluated multiple times.")}(n);try{const s=function(e){const t=JSON.parse(e),{type:n}=t;if("server"!==n&&"webassembly"!==n&&"auto"!==n)throw new Error(`Invalid component type '${n}'.`);return t}(a),c=function(e,t,n){const{prerenderId:o}=e;if(o){for(;n.next()&&n.currentElement;){const e=n.currentElement;if(e.nodeType!==Node.COMMENT_NODE)continue;if(!e.textContent)continue;const t=Rt.exec(e.textContent),r=t&&t[1];if(r)return Pt(r,o),e}throw new Error(`Could not find an end component comment for '${t}'.`)}}(s,n,e);if(t!==s.type)return;switch(s.type){case"webassembly":return r=n,i=c,Nt(o=s),{...o,uniqueId:At++,start:r,end:i};case"server":return function(e,t,n){return xt(e),{...e,uniqueId:At++,start:t,end:n}}(s,n,c);case"auto":return function(e,t,n){return xt(e),Nt(e),{...e,uniqueId:At++,start:t,end:n}}(s,n,c)}}catch(e){throw new Error(`Found malformed component comment at ${n.textContent}`)}}}let At=0;function xt(e){const{descriptor:t,sequence:n}=e;if(!t)throw new Error("descriptor must be defined when using a descriptor.");if(void 0===n)throw new Error("sequence must be defined when using a descriptor.");if(!Number.isInteger(n))throw new Error(`Error parsing the sequence '${n}' for component '${JSON.stringify(e)}'`)}function Nt(e){const{assembly:t,typeName:n}=e;if(!t)throw new Error("assembly must be defined when using a descriptor.");if(!n)throw new Error("typeName must be defined when using a descriptor.");e.parameterDefinitions=e.parameterDefinitions&&atob(e.parameterDefinitions),e.parameterValues=e.parameterValues&&atob(e.parameterValues)}function Pt(e,t){const n=JSON.parse(e);if(1!==Object.keys(n).length)throw new Error(`Invalid end of component comment: '${e}'`);const o=n.prerenderId;if(!o)throw new Error(`End of component comment must have a value for the prerendered property: '${e}'`);if(o!==t)throw new Error(`End of component comment prerendered property must match the start comment prerender id: '${t}', '${o}'`)}class Mt{constructor(e){this.childNodes=e,this.currentIndex=-1,this.length=e.length}next(){return this.currentIndex++,this.currentIndex{n+=`0x${e<16?"0":""}${e.toString(16)} `})),n.substr(0,n.length-1)}(e)}'`)):"string"==typeof e&&(n=`String data of length ${e.length}`,t&&(n+=`. Content: '${e}'`)),n}function zt(e){return e&&"undefined"!=typeof ArrayBuffer&&(e instanceof ArrayBuffer||e.constructor&&"ArrayBuffer"===e.constructor.name)}async function qt(e,t,n,o,r,i){const s={},[a,c]=Vt();s[a]=c,e.log(Ot.Trace,`(${t} transport) sending data. ${jt(r,i.logMessageContent)}.`);const l=zt(r)?"arraybuffer":"text",h=await n.post(o,{content:r,headers:{...s,...i.headers},responseType:l,timeout:i.timeout,withCredentials:i.withCredentials});e.log(Ot.Trace,`(${t} transport) request complete. Response status: ${h.statusCode}.`)}class Jt{constructor(e,t){this._subject=e,this._observer=t}dispose(){const e=this._subject.observers.indexOf(this._observer);e>-1&&this._subject.observers.splice(e,1),0===this._subject.observers.length&&this._subject.cancelCallback&&this._subject.cancelCallback().catch((e=>{}))}}class Kt{constructor(e){this._minLevel=e,this.out=console}log(e,t){if(e>=this._minLevel){const n=`[${(new Date).toISOString()}] ${Ot[e]}: ${t}`;switch(e){case Ot.Critical:case Ot.Error:this.out.error(n);break;case Ot.Warning:this.out.warn(n);break;case Ot.Information:this.out.info(n);break;default:this.out.log(n)}}}}function Vt(){let e="X-SignalR-User-Agent";return Wt.isNode&&(e="User-Agent"),[e,Xt($t,Gt(),Wt.isNode?"NodeJS":"Browser",Yt())]}function Xt(e,t,n,o){let r="Microsoft SignalR/";const i=e.split(".");return r+=`${i[0]}.${i[1]}`,r+=` (${e}; `,r+=t&&""!==t?`${t}; `:"Unknown OS; ",r+=`${n}`,r+=o?`; ${o}`:"; Unknown Runtime Version",r+=")",r}function Gt(){if(!Wt.isNode)return"";switch(process.platform){case"win32":return"Windows NT";case"darwin":return"macOS";case"linux":return"Linux";default:return process.platform}}function Yt(){if(Wt.isNode)return process.versions.node}function Qt(e){return e.stack?e.stack:e.message?e.message:`${e}`}class Zt{writeHandshakeRequest(e){return Bt.write(JSON.stringify(e))}parseHandshakeResponse(e){let t,n;if(zt(e)){const o=new Uint8Array(e),r=o.indexOf(Bt.RecordSeparatorCode);if(-1===r)throw new Error("Message is incomplete.");const i=r+1;t=String.fromCharCode.apply(null,Array.prototype.slice.call(o.slice(0,i))),n=o.byteLength>i?o.slice(i).buffer:null}else{const o=e,r=o.indexOf(Bt.RecordSeparator);if(-1===r)throw new Error("Message is incomplete.");const i=r+1;t=o.substring(0,i),n=o.length>i?o.substring(i):null}const o=Bt.parse(t),r=JSON.parse(o[0]);if(r.type)throw new Error("Expected a handshake response from the server.");return[n,r]}}class en extends Error{constructor(e,t){const n=new.target.prototype;super(`${e}: Status code '${t}'`),this.statusCode=t,this.__proto__=n}}class tn extends Error{constructor(e="A timeout occurred."){const t=new.target.prototype;super(e),this.__proto__=t}}class nn extends Error{constructor(e="An abort occurred."){const t=new.target.prototype;super(e),this.__proto__=t}}class on extends Error{constructor(e,t){const n=new.target.prototype;super(e),this.transport=t,this.errorType="UnsupportedTransportError",this.__proto__=n}}class rn extends Error{constructor(e,t){const n=new.target.prototype;super(e),this.transport=t,this.errorType="DisabledTransportError",this.__proto__=n}}class sn extends Error{constructor(e,t){const n=new.target.prototype;super(e),this.transport=t,this.errorType="FailedToStartTransportError",this.__proto__=n}}class an extends Error{constructor(e){const t=new.target.prototype;super(e),this.errorType="FailedToNegotiateWithServerError",this.__proto__=t}}class cn extends Error{constructor(e,t){const n=new.target.prototype;super(e),this.innerErrors=t,this.__proto__=n}}var ln,hn;!function(e){e[e.Invocation=1]="Invocation",e[e.StreamItem=2]="StreamItem",e[e.Completion=3]="Completion",e[e.StreamInvocation=4]="StreamInvocation",e[e.CancelInvocation=5]="CancelInvocation",e[e.Ping=6]="Ping",e[e.Close=7]="Close",e[e.Ack=8]="Ack",e[e.Sequence=9]="Sequence"}(ln||(ln={}));class dn{constructor(){this.observers=[]}next(e){for(const t of this.observers)t.next(e)}error(e){for(const t of this.observers)t.error&&t.error(e)}complete(){for(const e of this.observers)e.complete&&e.complete()}subscribe(e){return this.observers.push(e),new Jt(this,e)}}class un{constructor(e,t,n){this._bufferSize=1e5,this._messages=[],this._totalMessageCount=0,this._waitForSequenceMessage=!1,this._nextReceivingSequenceId=1,this._latestReceivedSequenceId=0,this._bufferedByteCount=0,this._reconnectInProgress=!1,this._protocol=e,this._connection=t,this._bufferSize=n}async _send(e){const t=this._protocol.writeMessage(e);let n=Promise.resolve();if(this._isInvocationMessage(e)){this._totalMessageCount++;let e=()=>{},o=()=>{};zt(t)?this._bufferedByteCount+=t.byteLength:this._bufferedByteCount+=t.length,this._bufferedByteCount>=this._bufferSize&&(n=new Promise(((t,n)=>{e=t,o=n}))),this._messages.push(new pn(t,this._totalMessageCount,e,o))}try{this._reconnectInProgress||await this._connection.send(t)}catch{this._disconnected()}await n}_ack(e){let t=-1;for(let n=0;nthis._nextReceivingSequenceId?this._connection.stop(new Error("Sequence ID greater than amount of messages we've received.")):this._nextReceivingSequenceId=e.sequenceId}_disconnected(){this._reconnectInProgress=!0,this._waitForSequenceMessage=!0}async _resend(){const e=0!==this._messages.length?this._messages[0]._id:this._totalMessageCount+1;await this._connection.send(this._protocol.writeMessage({type:ln.Sequence,sequenceId:e}));const t=this._messages;for(const e of t)await this._connection.send(e._message);this._reconnectInProgress=!1}_dispose(e){null!=e||(e=new Error("Unable to reconnect to server."));for(const t of this._messages)t._rejector(e)}_isInvocationMessage(e){switch(e.type){case ln.Invocation:case ln.StreamItem:case ln.Completion:case ln.StreamInvocation:case ln.CancelInvocation:return!0;case ln.Close:case ln.Sequence:case ln.Ping:case ln.Ack:return!1}}_ackTimer(){void 0===this._ackTimerHandle&&(this._ackTimerHandle=setTimeout((async()=>{try{this._reconnectInProgress||await this._connection.send(this._protocol.writeMessage({type:ln.Ack,sequenceId:this._latestReceivedSequenceId}))}catch{}clearTimeout(this._ackTimerHandle),this._ackTimerHandle=void 0}),1e3))}}class pn{constructor(e,t,n,o){this._message=e,this._id=t,this._resolver=n,this._rejector=o}}!function(e){e.Disconnected="Disconnected",e.Connecting="Connecting",e.Connected="Connected",e.Disconnecting="Disconnecting",e.Reconnecting="Reconnecting"}(hn||(hn={}));class fn{static create(e,t,n,o,r,i,s){return new fn(e,t,n,o,r,i,s)}constructor(e,t,n,o,r,i,s){this._nextKeepAlive=0,this._freezeEventListener=()=>{this._logger.log(Ot.Warning,"The page is being frozen, this will likely lead to the connection being closed and messages being lost. For more information see the docs at https://learn.microsoft.com/aspnet/core/signalr/javascript-client#bsleep")},Ht.isRequired(e,"connection"),Ht.isRequired(t,"logger"),Ht.isRequired(n,"protocol"),this.serverTimeoutInMilliseconds=null!=r?r:3e4,this.keepAliveIntervalInMilliseconds=null!=i?i:15e3,this._statefulReconnectBufferSize=null!=s?s:1e5,this._logger=t,this._protocol=n,this.connection=e,this._reconnectPolicy=o,this._handshakeProtocol=new Zt,this.connection.onreceive=e=>this._processIncomingData(e),this.connection.onclose=e=>this._connectionClosed(e),this._callbacks={},this._methods={},this._closedCallbacks=[],this._reconnectingCallbacks=[],this._reconnectedCallbacks=[],this._invocationId=0,this._receivedHandshakeResponse=!1,this._connectionState=hn.Disconnected,this._connectionStarted=!1,this._cachedPingMessage=this._protocol.writeMessage({type:ln.Ping})}get state(){return this._connectionState}get connectionId(){return this.connection&&this.connection.connectionId||null}get baseUrl(){return this.connection.baseUrl||""}set baseUrl(e){if(this._connectionState!==hn.Disconnected&&this._connectionState!==hn.Reconnecting)throw new Error("The HubConnection must be in the Disconnected or Reconnecting state to change the url.");if(!e)throw new Error("The HubConnection url must be a valid url.");this.connection.baseUrl=e}start(){return this._startPromise=this._startWithStateTransitions(),this._startPromise}async _startWithStateTransitions(){if(this._connectionState!==hn.Disconnected)return Promise.reject(new Error("Cannot start a HubConnection that is not in the 'Disconnected' state."));this._connectionState=hn.Connecting,this._logger.log(Ot.Debug,"Starting HubConnection.");try{await this._startInternal(),Wt.isBrowser&&window.document.addEventListener("freeze",this._freezeEventListener),this._connectionState=hn.Connected,this._connectionStarted=!0,this._logger.log(Ot.Debug,"HubConnection connected successfully.")}catch(e){return this._connectionState=hn.Disconnected,this._logger.log(Ot.Debug,`HubConnection failed to start successfully because of error '${e}'.`),Promise.reject(e)}}async _startInternal(){this._stopDuringStartError=void 0,this._receivedHandshakeResponse=!1;const e=new Promise(((e,t)=>{this._handshakeResolver=e,this._handshakeRejecter=t}));await this.connection.start(this._protocol.transferFormat);try{let t=this._protocol.version;this.connection.features.reconnect||(t=1);const n={protocol:this._protocol.name,version:t};if(this._logger.log(Ot.Debug,"Sending handshake request."),await this._sendMessage(this._handshakeProtocol.writeHandshakeRequest(n)),this._logger.log(Ot.Information,`Using HubProtocol '${this._protocol.name}'.`),this._cleanupTimeout(),this._resetTimeoutPeriod(),this._resetKeepAliveInterval(),await e,this._stopDuringStartError)throw this._stopDuringStartError;!!this.connection.features.reconnect&&(this._messageBuffer=new un(this._protocol,this.connection,this._statefulReconnectBufferSize),this.connection.features.disconnected=this._messageBuffer._disconnected.bind(this._messageBuffer),this.connection.features.resend=()=>{if(this._messageBuffer)return this._messageBuffer._resend()}),this.connection.features.inherentKeepAlive||await this._sendMessage(this._cachedPingMessage)}catch(e){throw this._logger.log(Ot.Debug,`Hub handshake failed with error '${e}' during start(). Stopping HubConnection.`),this._cleanupTimeout(),this._cleanupPingTimer(),await this.connection.stop(e),e}}async stop(){const e=this._startPromise;this.connection.features.reconnect=!1,this._stopPromise=this._stopInternal(),await this._stopPromise;try{await e}catch(e){}}_stopInternal(e){if(this._connectionState===hn.Disconnected)return this._logger.log(Ot.Debug,`Call to HubConnection.stop(${e}) ignored because it is already in the disconnected state.`),Promise.resolve();if(this._connectionState===hn.Disconnecting)return this._logger.log(Ot.Debug,`Call to HttpConnection.stop(${e}) ignored because the connection is already in the disconnecting state.`),this._stopPromise;const t=this._connectionState;return this._connectionState=hn.Disconnecting,this._logger.log(Ot.Debug,"Stopping HubConnection."),this._reconnectDelayHandle?(this._logger.log(Ot.Debug,"Connection stopped during reconnect delay. Done reconnecting."),clearTimeout(this._reconnectDelayHandle),this._reconnectDelayHandle=void 0,this._completeClose(),Promise.resolve()):(t===hn.Connected&&this._sendCloseMessage(),this._cleanupTimeout(),this._cleanupPingTimer(),this._stopDuringStartError=e||new nn("The connection was stopped before the hub handshake could complete."),this.connection.stop(e))}async _sendCloseMessage(){try{await this._sendWithProtocol(this._createCloseMessage())}catch{}}stream(e,...t){const[n,o]=this._replaceStreamingParams(t),r=this._createStreamInvocation(e,t,o);let i;const s=new dn;return s.cancelCallback=()=>{const e=this._createCancelInvocation(r.invocationId);return delete this._callbacks[r.invocationId],i.then((()=>this._sendWithProtocol(e)))},this._callbacks[r.invocationId]=(e,t)=>{t?s.error(t):e&&(e.type===ln.Completion?e.error?s.error(new Error(e.error)):s.complete():s.next(e.item))},i=this._sendWithProtocol(r).catch((e=>{s.error(e),delete this._callbacks[r.invocationId]})),this._launchStreams(n,i),s}_sendMessage(e){return this._resetKeepAliveInterval(),this.connection.send(e)}_sendWithProtocol(e){return this._messageBuffer?this._messageBuffer._send(e):this._sendMessage(this._protocol.writeMessage(e))}send(e,...t){const[n,o]=this._replaceStreamingParams(t),r=this._sendWithProtocol(this._createInvocation(e,t,!0,o));return this._launchStreams(n,r),r}invoke(e,...t){const[n,o]=this._replaceStreamingParams(t),r=this._createInvocation(e,t,!1,o);return new Promise(((e,t)=>{this._callbacks[r.invocationId]=(n,o)=>{o?t(o):n&&(n.type===ln.Completion?n.error?t(new Error(n.error)):e(n.result):t(new Error(`Unexpected message type: ${n.type}`)))};const o=this._sendWithProtocol(r).catch((e=>{t(e),delete this._callbacks[r.invocationId]}));this._launchStreams(n,o)}))}on(e,t){e&&t&&(e=e.toLowerCase(),this._methods[e]||(this._methods[e]=[]),-1===this._methods[e].indexOf(t)&&this._methods[e].push(t))}off(e,t){if(!e)return;e=e.toLowerCase();const n=this._methods[e];if(n)if(t){const o=n.indexOf(t);-1!==o&&(n.splice(o,1),0===n.length&&delete this._methods[e])}else delete this._methods[e]}onclose(e){e&&this._closedCallbacks.push(e)}onreconnecting(e){e&&this._reconnectingCallbacks.push(e)}onreconnected(e){e&&this._reconnectedCallbacks.push(e)}_processIncomingData(e){if(this._cleanupTimeout(),this._receivedHandshakeResponse||(e=this._processHandshakeResponse(e),this._receivedHandshakeResponse=!0),e){const t=this._protocol.parseMessages(e,this._logger);for(const e of t)if(!this._messageBuffer||this._messageBuffer._shouldProcessMessage(e))switch(e.type){case ln.Invocation:this._invokeClientMethod(e);break;case ln.StreamItem:case ln.Completion:{const t=this._callbacks[e.invocationId];if(t){e.type===ln.Completion&&delete this._callbacks[e.invocationId];try{t(e)}catch(e){this._logger.log(Ot.Error,`Stream callback threw error: ${Qt(e)}`)}}break}case ln.Ping:break;case ln.Close:{this._logger.log(Ot.Information,"Close message received from server.");const t=e.error?new Error("Server returned an error on close: "+e.error):void 0;!0===e.allowReconnect?this.connection.stop(t):this._stopPromise=this._stopInternal(t);break}case ln.Ack:this._messageBuffer&&this._messageBuffer._ack(e);break;case ln.Sequence:this._messageBuffer&&this._messageBuffer._resetSequence(e);break;default:this._logger.log(Ot.Warning,`Invalid message type: ${e.type}.`)}}this._resetTimeoutPeriod()}_processHandshakeResponse(e){let t,n;try{[n,t]=this._handshakeProtocol.parseHandshakeResponse(e)}catch(e){const t="Error parsing handshake response: "+e;this._logger.log(Ot.Error,t);const n=new Error(t);throw this._handshakeRejecter(n),n}if(t.error){const e="Server returned handshake error: "+t.error;this._logger.log(Ot.Error,e);const n=new Error(e);throw this._handshakeRejecter(n),n}return this._logger.log(Ot.Debug,"Server handshake complete."),this._handshakeResolver(),n}_resetKeepAliveInterval(){this.connection.features.inherentKeepAlive||(this._nextKeepAlive=(new Date).getTime()+this.keepAliveIntervalInMilliseconds,this._cleanupPingTimer())}_resetTimeoutPeriod(){if(!(this.connection.features&&this.connection.features.inherentKeepAlive||(this._timeoutHandle=setTimeout((()=>this.serverTimeout()),this.serverTimeoutInMilliseconds),void 0!==this._pingServerHandle))){let e=this._nextKeepAlive-(new Date).getTime();e<0&&(e=0),this._pingServerHandle=setTimeout((async()=>{if(this._connectionState===hn.Connected)try{await this._sendMessage(this._cachedPingMessage)}catch{this._cleanupPingTimer()}}),e)}}serverTimeout(){this.connection.stop(new Error("Server timeout elapsed without receiving a message from the server."))}async _invokeClientMethod(e){const t=e.target.toLowerCase(),n=this._methods[t];if(!n)return this._logger.log(Ot.Warning,`No client method with the name '${t}' found.`),void(e.invocationId&&(this._logger.log(Ot.Warning,`No result given for '${t}' method and invocation ID '${e.invocationId}'.`),await this._sendWithProtocol(this._createCompletionMessage(e.invocationId,"Client didn't provide a result.",null))));const o=n.slice(),r=!!e.invocationId;let i,s,a;for(const n of o)try{const o=i;i=await n.apply(this,e.arguments),r&&i&&o&&(this._logger.log(Ot.Error,`Multiple results provided for '${t}'. Sending error to server.`),a=this._createCompletionMessage(e.invocationId,"Client provided multiple results.",null)),s=void 0}catch(e){s=e,this._logger.log(Ot.Error,`A callback for the method '${t}' threw error '${e}'.`)}a?await this._sendWithProtocol(a):r?(s?a=this._createCompletionMessage(e.invocationId,`${s}`,null):void 0!==i?a=this._createCompletionMessage(e.invocationId,null,i):(this._logger.log(Ot.Warning,`No result given for '${t}' method and invocation ID '${e.invocationId}'.`),a=this._createCompletionMessage(e.invocationId,"Client didn't provide a result.",null)),await this._sendWithProtocol(a)):i&&this._logger.log(Ot.Error,`Result given for '${t}' method but server is not expecting a result.`)}_connectionClosed(e){this._logger.log(Ot.Debug,`HubConnection.connectionClosed(${e}) called while in state ${this._connectionState}.`),this._stopDuringStartError=this._stopDuringStartError||e||new nn("The underlying connection was closed before the hub handshake could complete."),this._handshakeResolver&&this._handshakeResolver(),this._cancelCallbacksWithError(e||new Error("Invocation canceled due to the underlying connection being closed.")),this._cleanupTimeout(),this._cleanupPingTimer(),this._connectionState===hn.Disconnecting?this._completeClose(e):this._connectionState===hn.Connected&&this._reconnectPolicy?this._reconnect(e):this._connectionState===hn.Connected&&this._completeClose(e)}_completeClose(e){if(this._connectionStarted){this._connectionState=hn.Disconnected,this._connectionStarted=!1,this._messageBuffer&&(this._messageBuffer._dispose(null!=e?e:new Error("Connection closed.")),this._messageBuffer=void 0),Wt.isBrowser&&window.document.removeEventListener("freeze",this._freezeEventListener);try{this._closedCallbacks.forEach((t=>t.apply(this,[e])))}catch(t){this._logger.log(Ot.Error,`An onclose callback called with error '${e}' threw error '${t}'.`)}}}async _reconnect(e){const t=Date.now();let n=0,o=void 0!==e?e:new Error("Attempting to reconnect due to a unknown error."),r=this._getNextRetryDelay(n++,0,o);if(null===r)return this._logger.log(Ot.Debug,"Connection not reconnecting because the IRetryPolicy returned null on the first reconnect attempt."),void this._completeClose(e);if(this._connectionState=hn.Reconnecting,e?this._logger.log(Ot.Information,`Connection reconnecting because of error '${e}'.`):this._logger.log(Ot.Information,"Connection reconnecting."),0!==this._reconnectingCallbacks.length){try{this._reconnectingCallbacks.forEach((t=>t.apply(this,[e])))}catch(t){this._logger.log(Ot.Error,`An onreconnecting callback called with error '${e}' threw error '${t}'.`)}if(this._connectionState!==hn.Reconnecting)return void this._logger.log(Ot.Debug,"Connection left the reconnecting state in onreconnecting callback. Done reconnecting.")}for(;null!==r;){if(this._logger.log(Ot.Information,`Reconnect attempt number ${n} will start in ${r} ms.`),await new Promise((e=>{this._reconnectDelayHandle=setTimeout(e,r)})),this._reconnectDelayHandle=void 0,this._connectionState!==hn.Reconnecting)return void this._logger.log(Ot.Debug,"Connection left the reconnecting state during reconnect delay. Done reconnecting.");try{if(await this._startInternal(),this._connectionState=hn.Connected,this._logger.log(Ot.Information,"HubConnection reconnected successfully."),0!==this._reconnectedCallbacks.length)try{this._reconnectedCallbacks.forEach((e=>e.apply(this,[this.connection.connectionId])))}catch(e){this._logger.log(Ot.Error,`An onreconnected callback called with connectionId '${this.connection.connectionId}; threw error '${e}'.`)}return}catch(e){if(this._logger.log(Ot.Information,`Reconnect attempt failed because of error '${e}'.`),this._connectionState!==hn.Reconnecting)return this._logger.log(Ot.Debug,`Connection moved to the '${this._connectionState}' from the reconnecting state during reconnect attempt. Done reconnecting.`),void(this._connectionState===hn.Disconnecting&&this._completeClose());o=e instanceof Error?e:new Error(e.toString()),r=this._getNextRetryDelay(n++,Date.now()-t,o)}}this._logger.log(Ot.Information,`Reconnect retries have been exhausted after ${Date.now()-t} ms and ${n} failed attempts. Connection disconnecting.`),this._completeClose()}_getNextRetryDelay(e,t,n){try{return this._reconnectPolicy.nextRetryDelayInMilliseconds({elapsedMilliseconds:t,previousRetryCount:e,retryReason:n})}catch(n){return this._logger.log(Ot.Error,`IRetryPolicy.nextRetryDelayInMilliseconds(${e}, ${t}) threw error '${n}'.`),null}}_cancelCallbacksWithError(e){const t=this._callbacks;this._callbacks={},Object.keys(t).forEach((n=>{const o=t[n];try{o(null,e)}catch(t){this._logger.log(Ot.Error,`Stream 'error' callback called with '${e}' threw error: ${Qt(t)}`)}}))}_cleanupPingTimer(){this._pingServerHandle&&(clearTimeout(this._pingServerHandle),this._pingServerHandle=void 0)}_cleanupTimeout(){this._timeoutHandle&&clearTimeout(this._timeoutHandle)}_createInvocation(e,t,n,o){if(n)return 0!==o.length?{arguments:t,streamIds:o,target:e,type:ln.Invocation}:{arguments:t,target:e,type:ln.Invocation};{const n=this._invocationId;return this._invocationId++,0!==o.length?{arguments:t,invocationId:n.toString(),streamIds:o,target:e,type:ln.Invocation}:{arguments:t,invocationId:n.toString(),target:e,type:ln.Invocation}}}_launchStreams(e,t){if(0!==e.length){t||(t=Promise.resolve());for(const n in e)e[n].subscribe({complete:()=>{t=t.then((()=>this._sendWithProtocol(this._createCompletionMessage(n))))},error:e=>{let o;o=e instanceof Error?e.message:e&&e.toString?e.toString():"Unknown error",t=t.then((()=>this._sendWithProtocol(this._createCompletionMessage(n,o))))},next:e=>{t=t.then((()=>this._sendWithProtocol(this._createStreamItemMessage(n,e))))}})}}_replaceStreamingParams(e){const t=[],n=[];for(let o=0;o0)&&(t=!1,this._accessToken=await this._accessTokenFactory()),this._setAuthorizationHeader(e);const n=await this._innerClient.send(e);return t&&401===n.statusCode&&this._accessTokenFactory?(this._accessToken=await this._accessTokenFactory(),this._setAuthorizationHeader(e),await this._innerClient.send(e)):n}_setAuthorizationHeader(e){e.headers||(e.headers={}),this._accessToken?e.headers[vn.Authorization]=`Bearer ${this._accessToken}`:this._accessTokenFactory&&e.headers[vn.Authorization]&&delete e.headers[vn.Authorization]}getCookieString(e){return this._innerClient.getCookieString(e)}}class _n extends wn{constructor(e){super(),this._logger=e;const t={_fetchType:void 0,_jar:void 0};var o;o=t,"undefined"==typeof fetch&&(o._jar=new(n(628).CookieJar),"undefined"==typeof fetch?o._fetchType=n(200):o._fetchType=fetch,o._fetchType=n(203)(o._fetchType,o._jar),1)?(this._fetchType=t._fetchType,this._jar=t._jar):this._fetchType=fetch.bind(function(){if("undefined"!=typeof globalThis)return globalThis;if("undefined"!=typeof self)return self;if("undefined"!=typeof window)return window;if(void 0!==n.g)return n.g;throw new Error("could not find global")}()),this._abortControllerType=AbortController;const r={_abortControllerType:this._abortControllerType};(function(e){return"undefined"==typeof AbortController&&(e._abortControllerType=n(778),!0)})(r)&&(this._abortControllerType=r._abortControllerType)}async send(e){if(e.abortSignal&&e.abortSignal.aborted)throw new nn;if(!e.method)throw new Error("No method defined.");if(!e.url)throw new Error("No url defined.");const t=new this._abortControllerType;let n;e.abortSignal&&(e.abortSignal.onabort=()=>{t.abort(),n=new nn});let o,r=null;if(e.timeout){const o=e.timeout;r=setTimeout((()=>{t.abort(),this._logger.log(Ot.Warning,"Timeout from HTTP request."),n=new tn}),o)}""===e.content&&(e.content=void 0),e.content&&(e.headers=e.headers||{},zt(e.content)?e.headers["Content-Type"]="application/octet-stream":e.headers["Content-Type"]="text/plain;charset=UTF-8");try{o=await this._fetchType(e.url,{body:e.content,cache:"no-cache",credentials:!0===e.withCredentials?"include":"same-origin",headers:{"X-Requested-With":"XMLHttpRequest",...e.headers},method:e.method,mode:"cors",redirect:"follow",signal:t.signal})}catch(e){if(n)throw n;throw this._logger.log(Ot.Warning,`Error from HTTP request. ${e}.`),e}finally{r&&clearTimeout(r),e.abortSignal&&(e.abortSignal.onabort=null)}if(!o.ok){const e=await Sn(o,"text");throw new en(e||o.statusText,o.status)}const i=Sn(o,e.responseType),s=await i;return new yn(o.status,o.statusText,s)}getCookieString(e){return""}}function Sn(e,t){let n;switch(t){case"arraybuffer":n=e.arrayBuffer();break;case"text":default:n=e.text();break;case"blob":case"document":case"json":throw new Error(`${t} is not supported.`)}return n}class Cn extends wn{constructor(e){super(),this._logger=e}send(e){return e.abortSignal&&e.abortSignal.aborted?Promise.reject(new nn):e.method?e.url?new Promise(((t,n)=>{const o=new XMLHttpRequest;o.open(e.method,e.url,!0),o.withCredentials=void 0===e.withCredentials||e.withCredentials,o.setRequestHeader("X-Requested-With","XMLHttpRequest"),""===e.content&&(e.content=void 0),e.content&&(zt(e.content)?o.setRequestHeader("Content-Type","application/octet-stream"):o.setRequestHeader("Content-Type","text/plain;charset=UTF-8"));const r=e.headers;r&&Object.keys(r).forEach((e=>{o.setRequestHeader(e,r[e])})),e.responseType&&(o.responseType=e.responseType),e.abortSignal&&(e.abortSignal.onabort=()=>{o.abort(),n(new nn)}),e.timeout&&(o.timeout=e.timeout),o.onload=()=>{e.abortSignal&&(e.abortSignal.onabort=null),o.status>=200&&o.status<300?t(new yn(o.status,o.statusText,o.response||o.responseText)):n(new en(o.response||o.responseText||o.statusText,o.status))},o.onerror=()=>{this._logger.log(Ot.Warning,`Error from HTTP request. ${o.status}: ${o.statusText}.`),n(new en(o.statusText,o.status))},o.ontimeout=()=>{this._logger.log(Ot.Warning,"Timeout from HTTP request."),n(new tn)},o.send(e.content)})):Promise.reject(new Error("No url defined.")):Promise.reject(new Error("No method defined."))}}class En extends wn{constructor(e){if(super(),"undefined"!=typeof fetch)this._httpClient=new _n(e);else{if("undefined"==typeof XMLHttpRequest)throw new Error("No usable HttpClient found.");this._httpClient=new Cn(e)}}send(e){return e.abortSignal&&e.abortSignal.aborted?Promise.reject(new nn):e.method?e.url?this._httpClient.send(e):Promise.reject(new Error("No url defined.")):Promise.reject(new Error("No method defined."))}getCookieString(e){return this._httpClient.getCookieString(e)}}var In,kn;!function(e){e[e.None=0]="None",e[e.WebSockets=1]="WebSockets",e[e.ServerSentEvents=2]="ServerSentEvents",e[e.LongPolling=4]="LongPolling"}(In||(In={})),function(e){e[e.Text=1]="Text",e[e.Binary=2]="Binary"}(kn||(kn={}));class Tn{constructor(){this._isAborted=!1,this.onabort=null}abort(){this._isAborted||(this._isAborted=!0,this.onabort&&this.onabort())}get signal(){return this}get aborted(){return this._isAborted}}class Rn{get pollAborted(){return this._pollAbort.aborted}constructor(e,t,n){this._httpClient=e,this._logger=t,this._pollAbort=new Tn,this._options=n,this._running=!1,this.onreceive=null,this.onclose=null}async connect(e,t){if(Ht.isRequired(e,"url"),Ht.isRequired(t,"transferFormat"),Ht.isIn(t,kn,"transferFormat"),this._url=e,this._logger.log(Ot.Trace,"(LongPolling transport) Connecting."),t===kn.Binary&&"undefined"!=typeof XMLHttpRequest&&"string"!=typeof(new XMLHttpRequest).responseType)throw new Error("Binary protocols over XmlHttpRequest not implementing advanced features are not supported.");const[n,o]=Vt(),r={[n]:o,...this._options.headers},i={abortSignal:this._pollAbort.signal,headers:r,timeout:1e5,withCredentials:this._options.withCredentials};t===kn.Binary&&(i.responseType="arraybuffer");const s=`${e}&_=${Date.now()}`;this._logger.log(Ot.Trace,`(LongPolling transport) polling: ${s}.`);const a=await this._httpClient.get(s,i);200!==a.statusCode?(this._logger.log(Ot.Error,`(LongPolling transport) Unexpected response code: ${a.statusCode}.`),this._closeError=new en(a.statusText||"",a.statusCode),this._running=!1):this._running=!0,this._receiving=this._poll(this._url,i)}async _poll(e,t){try{for(;this._running;)try{const n=`${e}&_=${Date.now()}`;this._logger.log(Ot.Trace,`(LongPolling transport) polling: ${n}.`);const o=await this._httpClient.get(n,t);204===o.statusCode?(this._logger.log(Ot.Information,"(LongPolling transport) Poll terminated by server."),this._running=!1):200!==o.statusCode?(this._logger.log(Ot.Error,`(LongPolling transport) Unexpected response code: ${o.statusCode}.`),this._closeError=new en(o.statusText||"",o.statusCode),this._running=!1):o.content?(this._logger.log(Ot.Trace,`(LongPolling transport) data received. ${jt(o.content,this._options.logMessageContent)}.`),this.onreceive&&this.onreceive(o.content)):this._logger.log(Ot.Trace,"(LongPolling transport) Poll timed out, reissuing.")}catch(e){this._running?e instanceof tn?this._logger.log(Ot.Trace,"(LongPolling transport) Poll timed out, reissuing."):(this._closeError=e,this._running=!1):this._logger.log(Ot.Trace,`(LongPolling transport) Poll errored after shutdown: ${e.message}`)}}finally{this._logger.log(Ot.Trace,"(LongPolling transport) Polling complete."),this.pollAborted||this._raiseOnClose()}}async send(e){return this._running?qt(this._logger,"LongPolling",this._httpClient,this._url,e,this._options):Promise.reject(new Error("Cannot send until the transport is connected"))}async stop(){this._logger.log(Ot.Trace,"(LongPolling transport) Stopping polling."),this._running=!1,this._pollAbort.abort();try{await this._receiving,this._logger.log(Ot.Trace,`(LongPolling transport) sending DELETE request to ${this._url}.`);const e={},[t,n]=Vt();e[t]=n;const o={headers:{...e,...this._options.headers},timeout:this._options.timeout,withCredentials:this._options.withCredentials};let r;try{await this._httpClient.delete(this._url,o)}catch(e){r=e}r?r instanceof en&&(404===r.statusCode?this._logger.log(Ot.Trace,"(LongPolling transport) A 404 response was returned from sending a DELETE request."):this._logger.log(Ot.Trace,`(LongPolling transport) Error sending a DELETE request: ${r}`)):this._logger.log(Ot.Trace,"(LongPolling transport) DELETE request accepted.")}finally{this._logger.log(Ot.Trace,"(LongPolling transport) Stop finished."),this._raiseOnClose()}}_raiseOnClose(){if(this.onclose){let e="(LongPolling transport) Firing onclose event.";this._closeError&&(e+=" Error: "+this._closeError),this._logger.log(Ot.Trace,e),this.onclose(this._closeError)}}}class Dn{constructor(e,t,n,o){this._httpClient=e,this._accessToken=t,this._logger=n,this._options=o,this.onreceive=null,this.onclose=null}async connect(e,t){return Ht.isRequired(e,"url"),Ht.isRequired(t,"transferFormat"),Ht.isIn(t,kn,"transferFormat"),this._logger.log(Ot.Trace,"(SSE transport) Connecting."),this._url=e,this._accessToken&&(e+=(e.indexOf("?")<0?"?":"&")+`access_token=${encodeURIComponent(this._accessToken)}`),new Promise(((n,o)=>{let r,i=!1;if(t===kn.Text){if(Wt.isBrowser||Wt.isWebWorker)r=new this._options.EventSource(e,{withCredentials:this._options.withCredentials});else{const t=this._httpClient.getCookieString(e),n={};n.Cookie=t;const[o,i]=Vt();n[o]=i,r=new this._options.EventSource(e,{withCredentials:this._options.withCredentials,headers:{...n,...this._options.headers}})}try{r.onmessage=e=>{if(this.onreceive)try{this._logger.log(Ot.Trace,`(SSE transport) data received. ${jt(e.data,this._options.logMessageContent)}.`),this.onreceive(e.data)}catch(e){return void this._close(e)}},r.onerror=e=>{i?this._close():o(new Error("EventSource failed to connect. The connection could not be found on the server, either the connection ID is not present on the server, or a proxy is refusing/buffering the connection. If you have multiple servers check that sticky sessions are enabled."))},r.onopen=()=>{this._logger.log(Ot.Information,`SSE connected to ${this._url}`),this._eventSource=r,i=!0,n()}}catch(e){return void o(e)}}else o(new Error("The Server-Sent Events transport only supports the 'Text' transfer format"))}))}async send(e){return this._eventSource?qt(this._logger,"SSE",this._httpClient,this._url,e,this._options):Promise.reject(new Error("Cannot send until the transport is connected"))}stop(){return this._close(),Promise.resolve()}_close(e){this._eventSource&&(this._eventSource.close(),this._eventSource=void 0,this.onclose&&this.onclose(e))}}class An{constructor(e,t,n,o,r,i){this._logger=n,this._accessTokenFactory=t,this._logMessageContent=o,this._webSocketConstructor=r,this._httpClient=e,this.onreceive=null,this.onclose=null,this._headers=i}async connect(e,t){let n;return Ht.isRequired(e,"url"),Ht.isRequired(t,"transferFormat"),Ht.isIn(t,kn,"transferFormat"),this._logger.log(Ot.Trace,"(WebSockets transport) Connecting."),this._accessTokenFactory&&(n=await this._accessTokenFactory()),new Promise(((o,r)=>{let i;e=e.replace(/^http/,"ws");const s=this._httpClient.getCookieString(e);let a=!1;if(Wt.isReactNative){const t={},[o,r]=Vt();t[o]=r,n&&(t[vn.Authorization]=`Bearer ${n}`),s&&(t[vn.Cookie]=s),i=new this._webSocketConstructor(e,void 0,{headers:{...t,...this._headers}})}else n&&(e+=(e.indexOf("?")<0?"?":"&")+`access_token=${encodeURIComponent(n)}`);i||(i=new this._webSocketConstructor(e)),t===kn.Binary&&(i.binaryType="arraybuffer"),i.onopen=t=>{this._logger.log(Ot.Information,`WebSocket connected to ${e}.`),this._webSocket=i,a=!0,o()},i.onerror=e=>{let t=null;t="undefined"!=typeof ErrorEvent&&e instanceof ErrorEvent?e.error:"There was an error with the transport",this._logger.log(Ot.Information,`(WebSockets transport) ${t}.`)},i.onmessage=e=>{if(this._logger.log(Ot.Trace,`(WebSockets transport) data received. ${jt(e.data,this._logMessageContent)}.`),this.onreceive)try{this.onreceive(e.data)}catch(e){return void this._close(e)}},i.onclose=e=>{if(a)this._close(e);else{let t=null;t="undefined"!=typeof ErrorEvent&&e instanceof ErrorEvent?e.error:"WebSocket failed to connect. The connection could not be found on the server, either the endpoint may not be a SignalR endpoint, the connection ID is not present on the server, or there is a proxy blocking WebSockets. If you have multiple servers check that sticky sessions are enabled.",r(new Error(t))}}}))}send(e){return this._webSocket&&this._webSocket.readyState===this._webSocketConstructor.OPEN?(this._logger.log(Ot.Trace,`(WebSockets transport) sending data. ${jt(e,this._logMessageContent)}.`),this._webSocket.send(e),Promise.resolve()):Promise.reject("WebSocket is not in the OPEN state")}stop(){return this._webSocket&&this._close(void 0),Promise.resolve()}_close(e){this._webSocket&&(this._webSocket.onclose=()=>{},this._webSocket.onmessage=()=>{},this._webSocket.onerror=()=>{},this._webSocket.close(),this._webSocket=void 0),this._logger.log(Ot.Trace,"(WebSockets transport) socket closed."),this.onclose&&(!this._isCloseEvent(e)||!1!==e.wasClean&&1e3===e.code?e instanceof Error?this.onclose(e):this.onclose():this.onclose(new Error(`WebSocket closed with status code: ${e.code} (${e.reason||"no reason given"}).`)))}_isCloseEvent(e){return e&&"boolean"==typeof e.wasClean&&"number"==typeof e.code}}class xn{constructor(e,t={}){if(this._stopPromiseResolver=()=>{},this.features={},this._negotiateVersion=1,Ht.isRequired(e,"url"),this._logger=function(e){return void 0===e?new Kt(Ot.Information):null===e?Ft.instance:void 0!==e.log?e:new Kt(e)}(t.logger),this.baseUrl=this._resolveUrl(e),(t=t||{}).logMessageContent=void 0!==t.logMessageContent&&t.logMessageContent,"boolean"!=typeof t.withCredentials&&void 0!==t.withCredentials)throw new Error("withCredentials option was not a 'boolean' or 'undefined' value");t.withCredentials=void 0===t.withCredentials||t.withCredentials,t.timeout=void 0===t.timeout?1e5:t.timeout,"undefined"==typeof WebSocket||t.WebSocket||(t.WebSocket=WebSocket),"undefined"==typeof EventSource||t.EventSource||(t.EventSource=EventSource),this._httpClient=new bn(t.httpClient||new En(this._logger),t.accessTokenFactory),this._connectionState="Disconnected",this._connectionStarted=!1,this._options=t,this.onreceive=null,this.onclose=null}async start(e){if(e=e||kn.Binary,Ht.isIn(e,kn,"transferFormat"),this._logger.log(Ot.Debug,`Starting connection with transfer format '${kn[e]}'.`),"Disconnected"!==this._connectionState)return Promise.reject(new Error("Cannot start an HttpConnection that is not in the 'Disconnected' state."));if(this._connectionState="Connecting",this._startInternalPromise=this._startInternal(e),await this._startInternalPromise,"Disconnecting"===this._connectionState){const e="Failed to start the HttpConnection before stop() was called.";return this._logger.log(Ot.Error,e),await this._stopPromise,Promise.reject(new nn(e))}if("Connected"!==this._connectionState){const e="HttpConnection.startInternal completed gracefully but didn't enter the connection into the connected state!";return this._logger.log(Ot.Error,e),Promise.reject(new nn(e))}this._connectionStarted=!0}send(e){return"Connected"!==this._connectionState?Promise.reject(new Error("Cannot send data if the connection is not in the 'Connected' State.")):(this._sendQueue||(this._sendQueue=new Nn(this.transport)),this._sendQueue.send(e))}async stop(e){return"Disconnected"===this._connectionState?(this._logger.log(Ot.Debug,`Call to HttpConnection.stop(${e}) ignored because the connection is already in the disconnected state.`),Promise.resolve()):"Disconnecting"===this._connectionState?(this._logger.log(Ot.Debug,`Call to HttpConnection.stop(${e}) ignored because the connection is already in the disconnecting state.`),this._stopPromise):(this._connectionState="Disconnecting",this._stopPromise=new Promise((e=>{this._stopPromiseResolver=e})),await this._stopInternal(e),void await this._stopPromise)}async _stopInternal(e){this._stopError=e;try{await this._startInternalPromise}catch(e){}if(this.transport){try{await this.transport.stop()}catch(e){this._logger.log(Ot.Error,`HttpConnection.transport.stop() threw error '${e}'.`),this._stopConnection()}this.transport=void 0}else this._logger.log(Ot.Debug,"HttpConnection.transport is undefined in HttpConnection.stop() because start() failed.")}async _startInternal(e){let t=this.baseUrl;this._accessTokenFactory=this._options.accessTokenFactory,this._httpClient._accessTokenFactory=this._accessTokenFactory;try{if(this._options.skipNegotiation){if(this._options.transport!==In.WebSockets)throw new Error("Negotiation can only be skipped when using the WebSocket transport directly.");this.transport=this._constructTransport(In.WebSockets),await this._startTransport(t,e)}else{let n=null,o=0;do{if(n=await this._getNegotiationResponse(t),"Disconnecting"===this._connectionState||"Disconnected"===this._connectionState)throw new nn("The connection was stopped during negotiation.");if(n.error)throw new Error(n.error);if(n.ProtocolVersion)throw new Error("Detected a connection attempt to an ASP.NET SignalR Server. This client only supports connecting to an ASP.NET Core SignalR Server. See https://aka.ms/signalr-core-differences for details.");if(n.url&&(t=n.url),n.accessToken){const e=n.accessToken;this._accessTokenFactory=()=>e,this._httpClient._accessToken=e,this._httpClient._accessTokenFactory=void 0}o++}while(n.url&&o<100);if(100===o&&n.url)throw new Error("Negotiate redirection limit exceeded.");await this._createTransport(t,this._options.transport,n,e)}this.transport instanceof Rn&&(this.features.inherentKeepAlive=!0),"Connecting"===this._connectionState&&(this._logger.log(Ot.Debug,"The HttpConnection connected successfully."),this._connectionState="Connected")}catch(e){return this._logger.log(Ot.Error,"Failed to start the connection: "+e),this._connectionState="Disconnected",this.transport=void 0,this._stopPromiseResolver(),Promise.reject(e)}}async _getNegotiationResponse(e){const t={},[n,o]=Vt();t[n]=o;const r=this._resolveNegotiateUrl(e);this._logger.log(Ot.Debug,`Sending negotiation request: ${r}.`);try{const e=await this._httpClient.post(r,{content:"",headers:{...t,...this._options.headers},timeout:this._options.timeout,withCredentials:this._options.withCredentials});if(200!==e.statusCode)return Promise.reject(new Error(`Unexpected status code returned from negotiate '${e.statusCode}'`));const n=JSON.parse(e.content);return(!n.negotiateVersion||n.negotiateVersion<1)&&(n.connectionToken=n.connectionId),n.useStatefulReconnect&&!0!==this._options._useStatefulReconnect?Promise.reject(new an("Client didn't negotiate Stateful Reconnect but the server did.")):n}catch(e){let t="Failed to complete negotiation with the server: "+e;return e instanceof en&&404===e.statusCode&&(t+=" Either this is not a SignalR endpoint or there is a proxy blocking the connection."),this._logger.log(Ot.Error,t),Promise.reject(new an(t))}}_createConnectUrl(e,t){return t?e+(-1===e.indexOf("?")?"?":"&")+`id=${t}`:e}async _createTransport(e,t,n,o){let r=this._createConnectUrl(e,n.connectionToken);if(this._isITransport(t))return this._logger.log(Ot.Debug,"Connection was provided an instance of ITransport, using that directly."),this.transport=t,await this._startTransport(r,o),void(this.connectionId=n.connectionId);const i=[],s=n.availableTransports||[];let a=n;for(const n of s){const s=this._resolveTransportOrError(n,t,o,!0===(null==a?void 0:a.useStatefulReconnect));if(s instanceof Error)i.push(`${n.transport} failed:`),i.push(s);else if(this._isITransport(s)){if(this.transport=s,!a){try{a=await this._getNegotiationResponse(e)}catch(e){return Promise.reject(e)}r=this._createConnectUrl(e,a.connectionToken)}try{return await this._startTransport(r,o),void(this.connectionId=a.connectionId)}catch(e){if(this._logger.log(Ot.Error,`Failed to start the transport '${n.transport}': ${e}`),a=void 0,i.push(new sn(`${n.transport} failed: ${e}`,In[n.transport])),"Connecting"!==this._connectionState){const e="Failed to select transport before stop() was called.";return this._logger.log(Ot.Debug,e),Promise.reject(new nn(e))}}}}return i.length>0?Promise.reject(new cn(`Unable to connect to the server with any of the available transports. ${i.join(" ")}`,i)):Promise.reject(new Error("None of the transports supported by the client are supported by the server."))}_constructTransport(e){switch(e){case In.WebSockets:if(!this._options.WebSocket)throw new Error("'WebSocket' is not supported in your environment.");return new An(this._httpClient,this._accessTokenFactory,this._logger,this._options.logMessageContent,this._options.WebSocket,this._options.headers||{});case In.ServerSentEvents:if(!this._options.EventSource)throw new Error("'EventSource' is not supported in your environment.");return new Dn(this._httpClient,this._httpClient._accessToken,this._logger,this._options);case In.LongPolling:return new Rn(this._httpClient,this._logger,this._options);default:throw new Error(`Unknown transport: ${e}.`)}}_startTransport(e,t){return this.transport.onreceive=this.onreceive,this.features.reconnect?this.transport.onclose=async n=>{let o=!1;if(this.features.reconnect){try{this.features.disconnected(),await this.transport.connect(e,t),await this.features.resend()}catch{o=!0}o&&this._stopConnection(n)}else this._stopConnection(n)}:this.transport.onclose=e=>this._stopConnection(e),this.transport.connect(e,t)}_resolveTransportOrError(e,t,n,o){const r=In[e.transport];if(null==r)return this._logger.log(Ot.Debug,`Skipping transport '${e.transport}' because it is not supported by this client.`),new Error(`Skipping transport '${e.transport}' because it is not supported by this client.`);if(!function(e,t){return!e||0!=(t&e)}(t,r))return this._logger.log(Ot.Debug,`Skipping transport '${In[r]}' because it was disabled by the client.`),new rn(`'${In[r]}' is disabled by the client.`,r);if(!(e.transferFormats.map((e=>kn[e])).indexOf(n)>=0))return this._logger.log(Ot.Debug,`Skipping transport '${In[r]}' because it does not support the requested transfer format '${kn[n]}'.`),new Error(`'${In[r]}' does not support ${kn[n]}.`);if(r===In.WebSockets&&!this._options.WebSocket||r===In.ServerSentEvents&&!this._options.EventSource)return this._logger.log(Ot.Debug,`Skipping transport '${In[r]}' because it is not supported in your environment.'`),new on(`'${In[r]}' is not supported in your environment.`,r);this._logger.log(Ot.Debug,`Selecting transport '${In[r]}'.`);try{return this.features.reconnect=r===In.WebSockets?o:void 0,this._constructTransport(r)}catch(e){return e}}_isITransport(e){return e&&"object"==typeof e&&"connect"in e}_stopConnection(e){if(this._logger.log(Ot.Debug,`HttpConnection.stopConnection(${e}) called while in state ${this._connectionState}.`),this.transport=void 0,e=this._stopError||e,this._stopError=void 0,"Disconnected"!==this._connectionState){if("Connecting"===this._connectionState)throw this._logger.log(Ot.Warning,`Call to HttpConnection.stopConnection(${e}) was ignored because the connection is still in the connecting state.`),new Error(`HttpConnection.stopConnection(${e}) was called while the connection is still in the connecting state.`);if("Disconnecting"===this._connectionState&&this._stopPromiseResolver(),e?this._logger.log(Ot.Error,`Connection disconnected with error '${e}'.`):this._logger.log(Ot.Information,"Connection disconnected."),this._sendQueue&&(this._sendQueue.stop().catch((e=>{this._logger.log(Ot.Error,`TransportSendQueue.stop() threw error '${e}'.`)})),this._sendQueue=void 0),this.connectionId=void 0,this._connectionState="Disconnected",this._connectionStarted){this._connectionStarted=!1;try{this.onclose&&this.onclose(e)}catch(t){this._logger.log(Ot.Error,`HttpConnection.onclose(${e}) threw error '${t}'.`)}}}else this._logger.log(Ot.Debug,`Call to HttpConnection.stopConnection(${e}) was ignored because the connection is already in the disconnected state.`)}_resolveUrl(e){if(0===e.lastIndexOf("https://",0)||0===e.lastIndexOf("http://",0))return e;if(!Wt.isBrowser)throw new Error(`Cannot resolve '${e}'.`);const t=window.document.createElement("a");return t.href=e,this._logger.log(Ot.Information,`Normalizing '${e}' to '${t.href}'.`),t.href}_resolveNegotiateUrl(e){const t=new URL(e);t.pathname.endsWith("/")?t.pathname+="negotiate":t.pathname+="/negotiate";const n=new URLSearchParams(t.searchParams);return n.has("negotiateVersion")||n.append("negotiateVersion",this._negotiateVersion.toString()),n.has("useStatefulReconnect")?"true"===n.get("useStatefulReconnect")&&(this._options._useStatefulReconnect=!0):!0===this._options._useStatefulReconnect&&n.append("useStatefulReconnect","true"),t.search=n.toString(),t.toString()}}class Nn{constructor(e){this._transport=e,this._buffer=[],this._executing=!0,this._sendBufferedData=new Pn,this._transportResult=new Pn,this._sendLoopPromise=this._sendLoop()}send(e){return this._bufferData(e),this._transportResult||(this._transportResult=new Pn),this._transportResult.promise}stop(){return this._executing=!1,this._sendBufferedData.resolve(),this._sendLoopPromise}_bufferData(e){if(this._buffer.length&&typeof this._buffer[0]!=typeof e)throw new Error(`Expected data to be of type ${typeof this._buffer} but was of type ${typeof e}`);this._buffer.push(e),this._sendBufferedData.resolve()}async _sendLoop(){for(;;){if(await this._sendBufferedData.promise,!this._executing){this._transportResult&&this._transportResult.reject("Connection stopped.");break}this._sendBufferedData=new Pn;const e=this._transportResult;this._transportResult=void 0;const t="string"==typeof this._buffer[0]?this._buffer.join(""):Nn._concatBuffers(this._buffer);this._buffer.length=0;try{await this._transport.send(t),e.resolve()}catch(t){e.reject(t)}}}static _concatBuffers(e){const t=e.map((e=>e.byteLength)).reduce(((e,t)=>e+t)),n=new Uint8Array(t);let o=0;for(const t of e)n.set(new Uint8Array(t),o),o+=t.byteLength;return n.buffer}}class Pn{constructor(){this.promise=new Promise(((e,t)=>[this._resolver,this._rejecter]=[e,t]))}resolve(){this._resolver()}reject(e){this._rejecter(e)}}class Mn{constructor(){this.name="json",this.version=2,this.transferFormat=kn.Text}parseMessages(e,t){if("string"!=typeof e)throw new Error("Invalid input for JSON hub protocol. Expected a string.");if(!e)return[];null===t&&(t=Ft.instance);const n=Bt.parse(e),o=[];for(const e of n){const n=JSON.parse(e);if("number"!=typeof n.type)throw new Error("Invalid payload.");switch(n.type){case ln.Invocation:this._isInvocationMessage(n);break;case ln.StreamItem:this._isStreamItemMessage(n);break;case ln.Completion:this._isCompletionMessage(n);break;case ln.Ping:case ln.Close:break;case ln.Ack:this._isAckMessage(n);break;case ln.Sequence:this._isSequenceMessage(n);break;default:t.log(Ot.Information,"Unknown message type '"+n.type+"' ignored.");continue}o.push(n)}return o}writeMessage(e){return Bt.write(JSON.stringify(e))}_isInvocationMessage(e){this._assertNotEmptyString(e.target,"Invalid payload for Invocation message."),void 0!==e.invocationId&&this._assertNotEmptyString(e.invocationId,"Invalid payload for Invocation message.")}_isStreamItemMessage(e){if(this._assertNotEmptyString(e.invocationId,"Invalid payload for StreamItem message."),void 0===e.item)throw new Error("Invalid payload for StreamItem message.")}_isCompletionMessage(e){if(e.result&&e.error)throw new Error("Invalid payload for Completion message.");!e.result&&e.error&&this._assertNotEmptyString(e.error,"Invalid payload for Completion message."),this._assertNotEmptyString(e.invocationId,"Invalid payload for Completion message.")}_isAckMessage(e){if("number"!=typeof e.sequenceId)throw new Error("Invalid SequenceId for Ack message.")}_isSequenceMessage(e){if("number"!=typeof e.sequenceId)throw new Error("Invalid SequenceId for Sequence message.")}_assertNotEmptyString(e,t){if("string"!=typeof e||""===e)throw new Error(t)}}const Un={trace:Ot.Trace,debug:Ot.Debug,info:Ot.Information,information:Ot.Information,warn:Ot.Warning,warning:Ot.Warning,error:Ot.Error,critical:Ot.Critical,none:Ot.None};class Ln{configureLogging(e){if(Ht.isRequired(e,"logging"),function(e){return void 0!==e.log}(e))this.logger=e;else if("string"==typeof e){const t=function(e){const t=Un[e.toLowerCase()];if(void 0!==t)return t;throw new Error(`Unknown log level: ${e}`)}(e);this.logger=new Kt(t)}else this.logger=new Kt(e);return this}withUrl(e,t){return Ht.isRequired(e,"url"),Ht.isNotEmpty(e,"url"),this.url=e,this.httpConnectionOptions="object"==typeof t?{...this.httpConnectionOptions,...t}:{...this.httpConnectionOptions,transport:t},this}withHubProtocol(e){return Ht.isRequired(e,"protocol"),this.protocol=e,this}withAutomaticReconnect(e){if(this.reconnectPolicy)throw new Error("A reconnectPolicy has already been set.");return e?Array.isArray(e)?this.reconnectPolicy=new mn(e):this.reconnectPolicy=e:this.reconnectPolicy=new mn,this}withServerTimeout(e){return Ht.isRequired(e,"milliseconds"),this._serverTimeoutInMilliseconds=e,this}withKeepAliveInterval(e){return Ht.isRequired(e,"milliseconds"),this._keepAliveIntervalInMilliseconds=e,this}withStatefulReconnect(e){return void 0===this.httpConnectionOptions&&(this.httpConnectionOptions={}),this.httpConnectionOptions._useStatefulReconnect=!0,this._statefulReconnectBufferSize=null==e?void 0:e.bufferSize,this}build(){const e=this.httpConnectionOptions||{};if(void 0===e.logger&&(e.logger=this.logger),!this.url)throw new Error("The 'HubConnectionBuilder.withUrl' method must be called before building the connection.");const t=new xn(this.url,e);return fn.create(t,this.logger||Ft.instance,this.protocol||new Mn,this.reconnectPolicy,this._serverTimeoutInMilliseconds,this._keepAliveIntervalInMilliseconds,this._statefulReconnectBufferSize)}}var Bn;!function(e){e[e.Default=0]="Default",e[e.Server=1]="Server",e[e.WebAssembly=2]="WebAssembly",e[e.WebView=3]="WebView"}(Bn||(Bn={}));var On,Fn,$n,Hn=4294967295;function Wn(e,t,n){var o=Math.floor(n/4294967296),r=n;e.setUint32(t,o),e.setUint32(t+4,r)}function jn(e,t){return 4294967296*e.getInt32(t)+e.getUint32(t+4)}var zn=("undefined"==typeof process||"never"!==(null===(On=null===process||void 0===process?void 0:process.env)||void 0===On?void 0:On.TEXT_ENCODING))&&"undefined"!=typeof TextEncoder&&"undefined"!=typeof TextDecoder;function qn(e){for(var t=e.length,n=0,o=0;o=55296&&r<=56319&&o65535&&(h-=65536,i.push(h>>>10&1023|55296),h=56320|1023&h),i.push(h)}else i.push(a);i.length>=4096&&(s+=String.fromCharCode.apply(String,i),i.length=0)}return i.length>0&&(s+=String.fromCharCode.apply(String,i)),s}var Gn,Yn=zn?new TextDecoder:null,Qn=zn?"undefined"!=typeof process&&"force"!==(null===($n=null===process||void 0===process?void 0:process.env)||void 0===$n?void 0:$n.TEXT_DECODER)?200:0:Hn,Zn=function(e,t){this.type=e,this.data=t},eo=(Gn=function(e,t){return Gn=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},Gn(e,t)},function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function n(){this.constructor=e}Gn(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}),to=function(e){function t(n){var o=e.call(this,n)||this,r=Object.create(t.prototype);return Object.setPrototypeOf(o,r),Object.defineProperty(o,"name",{configurable:!0,enumerable:!1,value:t.name}),o}return eo(t,e),t}(Error),no={type:-1,encode:function(e){var t,n,o,r;return e instanceof Date?function(e){var t,n=e.sec,o=e.nsec;if(n>=0&&o>=0&&n<=17179869183){if(0===o&&n<=4294967295){var r=new Uint8Array(4);return(t=new DataView(r.buffer)).setUint32(0,n),r}var i=n/4294967296,s=4294967295&n;return r=new Uint8Array(8),(t=new DataView(r.buffer)).setUint32(0,o<<2|3&i),t.setUint32(4,s),r}return r=new Uint8Array(12),(t=new DataView(r.buffer)).setUint32(0,o),Wn(t,4,n),r}((o=1e6*((t=e.getTime())-1e3*(n=Math.floor(t/1e3))),{sec:n+(r=Math.floor(o/1e9)),nsec:o-1e9*r})):null},decode:function(e){var t=function(e){var t=new DataView(e.buffer,e.byteOffset,e.byteLength);switch(e.byteLength){case 4:return{sec:t.getUint32(0),nsec:0};case 8:var n=t.getUint32(0);return{sec:4294967296*(3&n)+t.getUint32(4),nsec:n>>>2};case 12:return{sec:jn(t,4),nsec:t.getUint32(0)};default:throw new to("Unrecognized data size for timestamp (expected 4, 8, or 12): ".concat(e.length))}}(e);return new Date(1e3*t.sec+t.nsec/1e6)}},oo=function(){function e(){this.builtInEncoders=[],this.builtInDecoders=[],this.encoders=[],this.decoders=[],this.register(no)}return e.prototype.register=function(e){var t=e.type,n=e.encode,o=e.decode;if(t>=0)this.encoders[t]=n,this.decoders[t]=o;else{var r=1+t;this.builtInEncoders[r]=n,this.builtInDecoders[r]=o}},e.prototype.tryToEncode=function(e,t){for(var n=0;nthis.maxDepth)throw new Error("Too deep objects in depth ".concat(t));null==e?this.encodeNil():"boolean"==typeof e?this.encodeBoolean(e):"number"==typeof e?this.encodeNumber(e):"string"==typeof e?this.encodeString(e):this.encodeObject(e,t)},e.prototype.ensureBufferSizeToWrite=function(e){var t=this.pos+e;this.view.byteLength=0?e<128?this.writeU8(e):e<256?(this.writeU8(204),this.writeU8(e)):e<65536?(this.writeU8(205),this.writeU16(e)):e<4294967296?(this.writeU8(206),this.writeU32(e)):(this.writeU8(207),this.writeU64(e)):e>=-32?this.writeU8(224|e+32):e>=-128?(this.writeU8(208),this.writeI8(e)):e>=-32768?(this.writeU8(209),this.writeI16(e)):e>=-2147483648?(this.writeU8(210),this.writeI32(e)):(this.writeU8(211),this.writeI64(e)):this.forceFloat32?(this.writeU8(202),this.writeF32(e)):(this.writeU8(203),this.writeF64(e))},e.prototype.writeStringHeader=function(e){if(e<32)this.writeU8(160+e);else if(e<256)this.writeU8(217),this.writeU8(e);else if(e<65536)this.writeU8(218),this.writeU16(e);else{if(!(e<4294967296))throw new Error("Too long string: ".concat(e," bytes in UTF-8"));this.writeU8(219),this.writeU32(e)}},e.prototype.encodeString=function(e){if(e.length>Kn){var t=qn(e);this.ensureBufferSizeToWrite(5+t),this.writeStringHeader(t),Vn(e,this.bytes,this.pos),this.pos+=t}else t=qn(e),this.ensureBufferSizeToWrite(5+t),this.writeStringHeader(t),function(e,t,n){for(var o=e.length,r=n,i=0;i>6&31|192;else{if(s>=55296&&s<=56319&&i>12&15|224,t[r++]=s>>6&63|128):(t[r++]=s>>18&7|240,t[r++]=s>>12&63|128,t[r++]=s>>6&63|128)}t[r++]=63&s|128}else t[r++]=s}}(e,this.bytes,this.pos),this.pos+=t},e.prototype.encodeObject=function(e,t){var n=this.extensionCodec.tryToEncode(e,this.context);if(null!=n)this.encodeExtension(n);else if(Array.isArray(e))this.encodeArray(e,t);else if(ArrayBuffer.isView(e))this.encodeBinary(e);else{if("object"!=typeof e)throw new Error("Unrecognized object: ".concat(Object.prototype.toString.apply(e)));this.encodeMap(e,t)}},e.prototype.encodeBinary=function(e){var t=e.byteLength;if(t<256)this.writeU8(196),this.writeU8(t);else if(t<65536)this.writeU8(197),this.writeU16(t);else{if(!(t<4294967296))throw new Error("Too large binary: ".concat(t));this.writeU8(198),this.writeU32(t)}var n=ro(e);this.writeU8a(n)},e.prototype.encodeArray=function(e,t){var n=e.length;if(n<16)this.writeU8(144+n);else if(n<65536)this.writeU8(220),this.writeU16(n);else{if(!(n<4294967296))throw new Error("Too large array: ".concat(n));this.writeU8(221),this.writeU32(n)}for(var o=0,r=e;o0&&e<=this.maxKeyLength},e.prototype.find=function(e,t,n){e:for(var o=0,r=this.caches[n-1];o=this.maxLengthPerKey?n[Math.random()*n.length|0]=o:n.push(o)},e.prototype.decode=function(e,t,n){var o=this.find(e,t,n);if(null!=o)return this.hit++,o;this.miss++;var r=Xn(e,t,n),i=Uint8Array.prototype.slice.call(e,t,t+n);return this.store(i,r),r},e}(),co=function(e,t){var n,o,r,i,s={label:0,sent:function(){if(1&r[0])throw r[1];return r[1]},trys:[],ops:[]};return i={next:a(0),throw:a(1),return:a(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function a(i){return function(a){return function(i){if(n)throw new TypeError("Generator is already executing.");for(;s;)try{if(n=1,o&&(r=2&i[0]?o.return:i[0]?o.throw||((r=o.return)&&r.call(o),0):o.next)&&!(r=r.call(o,i[1])).done)return r;switch(o=0,r&&(i=[2&i[0],r.value]),i[0]){case 0:case 1:r=i;break;case 4:return s.label++,{value:i[1],done:!1};case 5:s.label++,o=i[1],i=[0];continue;case 7:i=s.ops.pop(),s.trys.pop();continue;default:if(!((r=(r=s.trys).length>0&&r[r.length-1])||6!==i[0]&&2!==i[0])){s=0;continue}if(3===i[0]&&(!r||i[1]>r[0]&&i[1]=e},e.prototype.createExtraByteError=function(e){var t=this.view,n=this.pos;return new RangeError("Extra ".concat(t.byteLength-n," of ").concat(t.byteLength," byte(s) found at buffer[").concat(e,"]"))},e.prototype.decode=function(e){this.reinitializeState(),this.setBuffer(e);var t=this.doDecodeSync();if(this.hasRemaining(1))throw this.createExtraByteError(this.pos);return t},e.prototype.decodeMulti=function(e){return co(this,(function(t){switch(t.label){case 0:this.reinitializeState(),this.setBuffer(e),t.label=1;case 1:return this.hasRemaining(1)?[4,this.doDecodeSync()]:[3,3];case 2:return t.sent(),[3,1];case 3:return[2]}}))},e.prototype.decodeAsync=function(e){var t,n,o,r,i,s,a;return i=this,void 0,a=function(){var i,s,a,c,l,h,d,u;return co(this,(function(p){switch(p.label){case 0:i=!1,p.label=1;case 1:p.trys.push([1,6,7,12]),t=lo(e),p.label=2;case 2:return[4,t.next()];case 3:if((n=p.sent()).done)return[3,5];if(a=n.value,i)throw this.createExtraByteError(this.totalPos);this.appendBuffer(a);try{s=this.doDecodeSync(),i=!0}catch(e){if(!(e instanceof fo))throw e}this.totalPos+=this.pos,p.label=4;case 4:return[3,2];case 5:return[3,12];case 6:return c=p.sent(),o={error:c},[3,12];case 7:return p.trys.push([7,,10,11]),n&&!n.done&&(r=t.return)?[4,r.call(t)]:[3,9];case 8:p.sent(),p.label=9;case 9:return[3,11];case 10:if(o)throw o.error;return[7];case 11:return[7];case 12:if(i){if(this.hasRemaining(1))throw this.createExtraByteError(this.totalPos);return[2,s]}throw h=(l=this).headByte,d=l.pos,u=l.totalPos,new RangeError("Insufficient data in parsing ".concat(so(h)," at ").concat(u," (").concat(d," in the current buffer)"))}}))},new((s=void 0)||(s=Promise))((function(e,t){function n(e){try{r(a.next(e))}catch(e){t(e)}}function o(e){try{r(a.throw(e))}catch(e){t(e)}}function r(t){var r;t.done?e(t.value):(r=t.value,r instanceof s?r:new s((function(e){e(r)}))).then(n,o)}r((a=a.apply(i,[])).next())}))},e.prototype.decodeArrayStream=function(e){return this.decodeMultiAsync(e,!0)},e.prototype.decodeStream=function(e){return this.decodeMultiAsync(e,!1)},e.prototype.decodeMultiAsync=function(e,t){return function(n,o,r){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var i,s=function(){var n,o,r,i,s,a,c,l,h;return co(this,(function(d){switch(d.label){case 0:n=t,o=-1,d.label=1;case 1:d.trys.push([1,13,14,19]),r=lo(e),d.label=2;case 2:return[4,ho(r.next())];case 3:if((i=d.sent()).done)return[3,12];if(s=i.value,t&&0===o)throw this.createExtraByteError(this.totalPos);this.appendBuffer(s),n&&(o=this.readArraySize(),n=!1,this.complete()),d.label=4;case 4:d.trys.push([4,9,,10]),d.label=5;case 5:return[4,ho(this.doDecodeSync())];case 6:return[4,d.sent()];case 7:return d.sent(),0==--o?[3,8]:[3,5];case 8:return[3,10];case 9:if(!((a=d.sent())instanceof fo))throw a;return[3,10];case 10:this.totalPos+=this.pos,d.label=11;case 11:return[3,2];case 12:return[3,19];case 13:return c=d.sent(),l={error:c},[3,19];case 14:return d.trys.push([14,,17,18]),i&&!i.done&&(h=r.return)?[4,ho(h.call(r))]:[3,16];case 15:d.sent(),d.label=16;case 16:return[3,18];case 17:if(l)throw l.error;return[7];case 18:return[7];case 19:return[2]}}))}.apply(n,o||[]),a=[];return i={},c("next"),c("throw"),c("return"),i[Symbol.asyncIterator]=function(){return this},i;function c(e){s[e]&&(i[e]=function(t){return new Promise((function(n,o){a.push([e,t,n,o])>1||l(e,t)}))})}function l(e,t){try{(n=s[e](t)).value instanceof ho?Promise.resolve(n.value.v).then(h,d):u(a[0][2],n)}catch(e){u(a[0][3],e)}var n}function h(e){l("next",e)}function d(e){l("throw",e)}function u(e,t){e(t),a.shift(),a.length&&l(a[0][0],a[0][1])}}(this,arguments)},e.prototype.doDecodeSync=function(){e:for(;;){var e=this.readHeadByte(),t=void 0;if(e>=224)t=e-256;else if(e<192)if(e<128)t=e;else if(e<144){if(0!=(o=e-128)){this.pushMapState(o),this.complete();continue e}t={}}else if(e<160){if(0!=(o=e-144)){this.pushArrayState(o),this.complete();continue e}t=[]}else{var n=e-160;t=this.decodeUtf8String(n,0)}else if(192===e)t=null;else if(194===e)t=!1;else if(195===e)t=!0;else if(202===e)t=this.readF32();else if(203===e)t=this.readF64();else if(204===e)t=this.readU8();else if(205===e)t=this.readU16();else if(206===e)t=this.readU32();else if(207===e)t=this.readU64();else if(208===e)t=this.readI8();else if(209===e)t=this.readI16();else if(210===e)t=this.readI32();else if(211===e)t=this.readI64();else if(217===e)n=this.lookU8(),t=this.decodeUtf8String(n,1);else if(218===e)n=this.lookU16(),t=this.decodeUtf8String(n,2);else if(219===e)n=this.lookU32(),t=this.decodeUtf8String(n,4);else if(220===e){if(0!==(o=this.readU16())){this.pushArrayState(o),this.complete();continue e}t=[]}else if(221===e){if(0!==(o=this.readU32())){this.pushArrayState(o),this.complete();continue e}t=[]}else if(222===e){if(0!==(o=this.readU16())){this.pushMapState(o),this.complete();continue e}t={}}else if(223===e){if(0!==(o=this.readU32())){this.pushMapState(o),this.complete();continue e}t={}}else if(196===e){var o=this.lookU8();t=this.decodeBinary(o,1)}else if(197===e)o=this.lookU16(),t=this.decodeBinary(o,2);else if(198===e)o=this.lookU32(),t=this.decodeBinary(o,4);else if(212===e)t=this.decodeExtension(1,0);else if(213===e)t=this.decodeExtension(2,0);else if(214===e)t=this.decodeExtension(4,0);else if(215===e)t=this.decodeExtension(8,0);else if(216===e)t=this.decodeExtension(16,0);else if(199===e)o=this.lookU8(),t=this.decodeExtension(o,1);else if(200===e)o=this.lookU16(),t=this.decodeExtension(o,2);else{if(201!==e)throw new to("Unrecognized type byte: ".concat(so(e)));o=this.lookU32(),t=this.decodeExtension(o,4)}this.complete();for(var r=this.stack;r.length>0;){var i=r[r.length-1];if(0===i.type){if(i.array[i.position]=t,i.position++,i.position!==i.size)continue e;r.pop(),t=i.array}else{if(1===i.type){if("string"!=(s=typeof t)&&"number"!==s)throw new to("The type of key must be string or number but "+typeof t);if("__proto__"===t)throw new to("The key __proto__ is not allowed");i.key=t,i.type=2;continue e}if(i.map[i.key]=t,i.readCount++,i.readCount!==i.size){i.key=null,i.type=1;continue e}r.pop(),t=i.map}}return t}var s},e.prototype.readHeadByte=function(){return-1===this.headByte&&(this.headByte=this.readU8()),this.headByte},e.prototype.complete=function(){this.headByte=-1},e.prototype.readArraySize=function(){var e=this.readHeadByte();switch(e){case 220:return this.readU16();case 221:return this.readU32();default:if(e<160)return e-144;throw new to("Unrecognized array type byte: ".concat(so(e)))}},e.prototype.pushMapState=function(e){if(e>this.maxMapLength)throw new to("Max length exceeded: map length (".concat(e,") > maxMapLengthLength (").concat(this.maxMapLength,")"));this.stack.push({type:1,size:e,key:null,readCount:0,map:{}})},e.prototype.pushArrayState=function(e){if(e>this.maxArrayLength)throw new to("Max length exceeded: array length (".concat(e,") > maxArrayLength (").concat(this.maxArrayLength,")"));this.stack.push({type:0,size:e,array:new Array(e),position:0})},e.prototype.decodeUtf8String=function(e,t){var n;if(e>this.maxStrLength)throw new to("Max length exceeded: UTF-8 byte length (".concat(e,") > maxStrLength (").concat(this.maxStrLength,")"));if(this.bytes.byteLengthQn?function(e,t,n){var o=e.subarray(t,t+n);return Yn.decode(o)}(this.bytes,r,e):Xn(this.bytes,r,e),this.pos+=t+e,o},e.prototype.stateIsMapKey=function(){return this.stack.length>0&&1===this.stack[this.stack.length-1].type},e.prototype.decodeBinary=function(e,t){if(e>this.maxBinLength)throw new to("Max length exceeded: bin length (".concat(e,") > maxBinLength (").concat(this.maxBinLength,")"));if(!this.hasRemaining(e+t))throw go;var n=this.pos+t,o=this.bytes.subarray(n,n+e);return this.pos+=t+e,o},e.prototype.decodeExtension=function(e,t){if(e>this.maxExtLength)throw new to("Max length exceeded: ext length (".concat(e,") > maxExtLength (").concat(this.maxExtLength,")"));var n=this.view.getInt8(this.pos+t),o=this.decodeBinary(e,t+1);return this.extensionCodec.decode(o,n,this.context)},e.prototype.lookU8=function(){return this.view.getUint8(this.pos)},e.prototype.lookU16=function(){return this.view.getUint16(this.pos)},e.prototype.lookU32=function(){return this.view.getUint32(this.pos)},e.prototype.readU8=function(){var e=this.view.getUint8(this.pos);return this.pos++,e},e.prototype.readI8=function(){var e=this.view.getInt8(this.pos);return this.pos++,e},e.prototype.readU16=function(){var e=this.view.getUint16(this.pos);return this.pos+=2,e},e.prototype.readI16=function(){var e=this.view.getInt16(this.pos);return this.pos+=2,e},e.prototype.readU32=function(){var e=this.view.getUint32(this.pos);return this.pos+=4,e},e.prototype.readI32=function(){var e=this.view.getInt32(this.pos);return this.pos+=4,e},e.prototype.readU64=function(){var e,t,n=(e=this.view,t=this.pos,4294967296*e.getUint32(t)+e.getUint32(t+4));return this.pos+=8,n},e.prototype.readI64=function(){var e=jn(this.view,this.pos);return this.pos+=8,e},e.prototype.readF32=function(){var e=this.view.getFloat32(this.pos);return this.pos+=4,e},e.prototype.readF64=function(){var e=this.view.getFloat64(this.pos);return this.pos+=8,e},e}();class yo{static write(e){let t=e.byteLength||e.length;const n=[];do{let e=127&t;t>>=7,t>0&&(e|=128),n.push(e)}while(t>0);t=e.byteLength||e.length;const o=new Uint8Array(n.length+t);return o.set(n,0),o.set(e,n.length),o.buffer}static parse(e){const t=[],n=new Uint8Array(e),o=[0,7,14,21,28];for(let r=0;r7)throw new Error("Messages bigger than 2GB are not supported.");if(!(n.byteLength>=r+s+a))throw new Error("Incomplete message.");t.push(n.slice?n.slice(r+s,r+s+a):n.subarray(r+s,r+s+a)),r=r+s+a}return t}}const wo=new Uint8Array([145,ln.Ping]);class bo{constructor(e){this.name="messagepack",this.version=2,this.transferFormat=kn.Binary,this._errorResult=1,this._voidResult=2,this._nonVoidResult=3,e=e||{},this._encoder=new io(e.extensionCodec,e.context,e.maxDepth,e.initialBufferSize,e.sortKeys,e.forceFloat32,e.ignoreUndefined,e.forceIntegerToFloat),this._decoder=new vo(e.extensionCodec,e.context,e.maxStrLength,e.maxBinLength,e.maxArrayLength,e.maxMapLength,e.maxExtLength)}parseMessages(e,t){if(!(n=e)||"undefined"==typeof ArrayBuffer||!(n instanceof ArrayBuffer||n.constructor&&"ArrayBuffer"===n.constructor.name))throw new Error("Invalid input for MessagePack hub protocol. Expected an ArrayBuffer.");var n;null===t&&(t=Ft.instance);const o=yo.parse(e),r=[];for(const e of o){const n=this._parseMessage(e,t);n&&r.push(n)}return r}writeMessage(e){switch(e.type){case ln.Invocation:return this._writeInvocation(e);case ln.StreamInvocation:return this._writeStreamInvocation(e);case ln.StreamItem:return this._writeStreamItem(e);case ln.Completion:return this._writeCompletion(e);case ln.Ping:return yo.write(wo);case ln.CancelInvocation:return this._writeCancelInvocation(e);case ln.Close:return this._writeClose();case ln.Ack:return this._writeAck(e);case ln.Sequence:return this._writeSequence(e);default:throw new Error("Invalid message type.")}}_parseMessage(e,t){if(0===e.length)throw new Error("Invalid payload.");const n=this._decoder.decode(e);if(0===n.length||!(n instanceof Array))throw new Error("Invalid payload.");const o=n[0];switch(o){case ln.Invocation:return this._createInvocationMessage(this._readHeaders(n),n);case ln.StreamItem:return this._createStreamItemMessage(this._readHeaders(n),n);case ln.Completion:return this._createCompletionMessage(this._readHeaders(n),n);case ln.Ping:return this._createPingMessage(n);case ln.Close:return this._createCloseMessage(n);case ln.Ack:return this._createAckMessage(n);case ln.Sequence:return this._createSequenceMessage(n);default:return t.log(Ot.Information,"Unknown message type '"+o+"' ignored."),null}}_createCloseMessage(e){if(e.length<2)throw new Error("Invalid payload for Close message.");return{allowReconnect:e.length>=3?e[2]:void 0,error:e[1],type:ln.Close}}_createPingMessage(e){if(e.length<1)throw new Error("Invalid payload for Ping message.");return{type:ln.Ping}}_createInvocationMessage(e,t){if(t.length<5)throw new Error("Invalid payload for Invocation message.");const n=t[2];return n?{arguments:t[4],headers:e,invocationId:n,streamIds:[],target:t[3],type:ln.Invocation}:{arguments:t[4],headers:e,streamIds:[],target:t[3],type:ln.Invocation}}_createStreamItemMessage(e,t){if(t.length<4)throw new Error("Invalid payload for StreamItem message.");return{headers:e,invocationId:t[2],item:t[3],type:ln.StreamItem}}_createCompletionMessage(e,t){if(t.length<4)throw new Error("Invalid payload for Completion message.");const n=t[3];if(n!==this._voidResult&&t.length<5)throw new Error("Invalid payload for Completion message.");let o,r;switch(n){case this._errorResult:o=t[4];break;case this._nonVoidResult:r=t[4]}return{error:o,headers:e,invocationId:t[2],result:r,type:ln.Completion}}_createAckMessage(e){if(e.length<1)throw new Error("Invalid payload for Ack message.");return{sequenceId:e[1],type:ln.Ack}}_createSequenceMessage(e){if(e.length<1)throw new Error("Invalid payload for Sequence message.");return{sequenceId:e[1],type:ln.Sequence}}_writeInvocation(e){let t;return t=e.streamIds?this._encoder.encode([ln.Invocation,e.headers||{},e.invocationId||null,e.target,e.arguments,e.streamIds]):this._encoder.encode([ln.Invocation,e.headers||{},e.invocationId||null,e.target,e.arguments]),yo.write(t.slice())}_writeStreamInvocation(e){let t;return t=e.streamIds?this._encoder.encode([ln.StreamInvocation,e.headers||{},e.invocationId,e.target,e.arguments,e.streamIds]):this._encoder.encode([ln.StreamInvocation,e.headers||{},e.invocationId,e.target,e.arguments]),yo.write(t.slice())}_writeStreamItem(e){const t=this._encoder.encode([ln.StreamItem,e.headers||{},e.invocationId,e.item]);return yo.write(t.slice())}_writeCompletion(e){const t=e.error?this._errorResult:void 0!==e.result?this._nonVoidResult:this._voidResult;let n;switch(t){case this._errorResult:n=this._encoder.encode([ln.Completion,e.headers||{},e.invocationId,t,e.error]);break;case this._voidResult:n=this._encoder.encode([ln.Completion,e.headers||{},e.invocationId,t]);break;case this._nonVoidResult:n=this._encoder.encode([ln.Completion,e.headers||{},e.invocationId,t,e.result])}return yo.write(n.slice())}_writeCancelInvocation(e){const t=this._encoder.encode([ln.CancelInvocation,e.headers||{},e.invocationId]);return yo.write(t.slice())}_writeClose(){const e=this._encoder.encode([ln.Close,null]);return yo.write(e.slice())}_writeAck(e){const t=this._encoder.encode([ln.Ack,e.sequenceId]);return yo.write(t.slice())}_writeSequence(e){const t=this._encoder.encode([ln.Sequence,e.sequenceId]);return yo.write(t.slice())}_readHeaders(e){const t=e[1];if("object"!=typeof t)throw new Error("Invalid headers.");return t}}const _o="function"==typeof TextDecoder?new TextDecoder("utf-8"):null,So=_o?_o.decode.bind(_o):function(e){let t=0;const n=e.length,o=[],r=[];for(;t65535&&(r-=65536,o.push(r>>>10&1023|55296),r=56320|1023&r),o.push(r)}o.length>1024&&(r.push(String.fromCharCode.apply(null,o)),o.length=0)}return r.push(String.fromCharCode.apply(null,o)),r.join("")},Co=Math.pow(2,32),Eo=Math.pow(2,21)-1;function Io(e,t){return e[t]|e[t+1]<<8|e[t+2]<<16|e[t+3]<<24}function ko(e,t){return e[t]+(e[t+1]<<8)+(e[t+2]<<16)+(e[t+3]<<24>>>0)}function To(e,t){const n=ko(e,t+4);if(n>Eo)throw new Error(`Cannot read uint64 with high order part ${n}, because the result would exceed Number.MAX_SAFE_INTEGER.`);return n*Co+ko(e,t)}class Ro{constructor(e){this.batchData=e;const t=new No(e);this.arrayRangeReader=new Po(e),this.arrayBuilderSegmentReader=new Mo(e),this.diffReader=new Do(e),this.editReader=new Ao(e,t),this.frameReader=new xo(e,t)}updatedComponents(){return Io(this.batchData,this.batchData.length-20)}referenceFrames(){return Io(this.batchData,this.batchData.length-16)}disposedComponentIds(){return Io(this.batchData,this.batchData.length-12)}disposedEventHandlerIds(){return Io(this.batchData,this.batchData.length-8)}updatedComponentsEntry(e,t){const n=e+4*t;return Io(this.batchData,n)}referenceFramesEntry(e,t){return e+20*t}disposedComponentIdsEntry(e,t){const n=e+4*t;return Io(this.batchData,n)}disposedEventHandlerIdsEntry(e,t){const n=e+8*t;return To(this.batchData,n)}}class Do{constructor(e){this.batchDataUint8=e}componentId(e){return Io(this.batchDataUint8,e)}edits(e){return e+4}editsEntry(e,t){return e+16*t}}class Ao{constructor(e,t){this.batchDataUint8=e,this.stringReader=t}editType(e){return Io(this.batchDataUint8,e)}siblingIndex(e){return Io(this.batchDataUint8,e+4)}newTreeIndex(e){return Io(this.batchDataUint8,e+8)}moveToSiblingIndex(e){return Io(this.batchDataUint8,e+8)}removedAttributeName(e){const t=Io(this.batchDataUint8,e+12);return this.stringReader.readString(t)}}class xo{constructor(e,t){this.batchDataUint8=e,this.stringReader=t}frameType(e){return Io(this.batchDataUint8,e)}subtreeLength(e){return Io(this.batchDataUint8,e+4)}elementReferenceCaptureId(e){const t=Io(this.batchDataUint8,e+4);return this.stringReader.readString(t)}componentId(e){return Io(this.batchDataUint8,e+8)}elementName(e){const t=Io(this.batchDataUint8,e+8);return this.stringReader.readString(t)}textContent(e){const t=Io(this.batchDataUint8,e+4);return this.stringReader.readString(t)}markupContent(e){const t=Io(this.batchDataUint8,e+4);return this.stringReader.readString(t)}attributeName(e){const t=Io(this.batchDataUint8,e+4);return this.stringReader.readString(t)}attributeValue(e){const t=Io(this.batchDataUint8,e+8);return this.stringReader.readString(t)}attributeEventHandlerId(e){return To(this.batchDataUint8,e+12)}}class No{constructor(e){this.batchDataUint8=e,this.stringTableStartIndex=Io(e,e.length-4)}readString(e){if(-1===e)return null;{const n=Io(this.batchDataUint8,this.stringTableStartIndex+4*e),o=function(e,t){let n=0,o=0;for(let r=0;r<4;r++){const i=e[t+r];if(n|=(127&i)<this.nextBatchId)return this.fatalError?(this.logger.log(yt.Debug,`Received a new batch ${e} but errored out on a previous batch ${this.nextBatchId-1}`),void await n.send("OnRenderCompleted",this.nextBatchId-1,this.fatalError.toString())):void this.logger.log(yt.Debug,`Waiting for batch ${this.nextBatchId}. Batch ${e} not processed.`);try{this.nextBatchId++,this.logger.log(yt.Debug,`Applying batch ${e}.`),xe(Bn.Server,new Ro(t)),await this.completeBatch(n,e)}catch(t){throw this.fatalError=t.toString(),this.logger.log(yt.Error,`There was an error applying batch ${e}.`),n.send("OnRenderCompleted",e,t.toString()),t}}getLastBatchid(){return this.nextBatchId-1}async completeBatch(e,t){try{await e.send("OnRenderCompleted",t,null)}catch{this.logger.log(yt.Warning,`Failed to deliver completion notification for render '${t}'.`)}}}let Lo=!1;function Bo(){const e=document.querySelector("#blazor-error-ui");e&&(e.style.display="block"),Lo||(Lo=!0,document.querySelectorAll("#blazor-error-ui .reload").forEach((e=>{e.onclick=function(e){location.reload(),e.preventDefault()}})),document.querySelectorAll("#blazor-error-ui .dismiss").forEach((e=>{e.onclick=function(e){const t=document.querySelector("#blazor-error-ui");t&&(t.style.display="none"),e.preventDefault()}})))}class Oo{constructor(t,n,o,r){this._firstUpdate=!0,this._renderingFailed=!1,this._disposed=!1,this._circuitId=void 0,this._applicationState=n,this._componentManager=t,this._options=o,this._logger=r,this._renderQueue=new Uo(this._logger),this._dispatcher=e.attachDispatcher(this)}start(){if(this.isDisposedOrDisposing())throw new Error("Cannot start a disposed circuit.");return this._startPromise||(this._startPromise=this.startCore()),this._startPromise}updateRootComponents(e){var t,n;return this._firstUpdate?(this._firstUpdate=!1,null===(t=this._connection)||void 0===t?void 0:t.send("UpdateRootComponents",e,this._applicationState)):null===(n=this._connection)||void 0===n?void 0:n.send("UpdateRootComponents",e,"")}async startCore(){if(this._connection=await this.startConnection(),this._connection.state!==hn.Connected)return!1;const e=JSON.stringify(this._componentManager.initialComponents.map((e=>Ut(e))));if(this._circuitId=await this._connection.invoke("StartCircuit",Je.getBaseURI(),Je.getLocationHref(),e,this._applicationState||""),!this._circuitId)return!1;for(const e of this._options.circuitHandlers)e.onCircuitOpened&&e.onCircuitOpened();return!0}async startConnection(){var e,t;const n=new bo;n.name="blazorpack";const o=(new Ln).withUrl("_blazor").withHubProtocol(n);this._options.configureSignalR(o);const r=o.build();r.on("JS.AttachComponent",((e,t)=>De(Bn.Server,this.resolveElement(t),e,!1))),r.on("JS.BeginInvokeJS",this._dispatcher.beginInvokeJSFromDotNet.bind(this._dispatcher)),r.on("JS.EndInvokeDotNet",this._dispatcher.endInvokeDotNetFromJS.bind(this._dispatcher)),r.on("JS.ReceiveByteArray",this._dispatcher.receiveByteArray.bind(this._dispatcher)),r.on("JS.BeginTransmitStream",(e=>{const t=new ReadableStream({start:t=>{r.stream("SendDotNetStreamToJS",e).subscribe({next:e=>t.enqueue(e),complete:()=>t.close(),error:e=>t.error(e)})}});this._dispatcher.supplyDotNetStream(e,t)})),r.on("JS.RenderBatch",(async(e,t)=>{var n,o;this._logger.log(Ot.Debug,`Received render batch with id ${e} and ${t.byteLength} bytes.`),await this._renderQueue.processBatch(e,t,this._connection),null===(o=(n=this._componentManager).onAfterRenderBatch)||void 0===o||o.call(n,Bn.Server)})),r.on("JS.EndUpdateRootComponents",(e=>{var t,n;null===(n=(t=this._componentManager).onAfterUpdateRootComponents)||void 0===n||n.call(t,e)})),r.on("JS.EndLocationChanging",vt._internal.navigationManager.endLocationChanging),r.onclose((e=>{this._interopMethodsForReconnection=function(e){const t=C.get(e);if(!t)throw new Error(`Interop methods are not registered for renderer ${e}`);return C.delete(e),t}(Bn.Server),this._disposed||this._renderingFailed||this._options.reconnectionHandler.onConnectionDown(this._options.reconnectionOptions,e)})),r.on("JS.Error",(e=>{this._renderingFailed=!0,this.unhandledError(e),Bo()}));try{await r.start()}catch(e){if(this.unhandledError(e),"FailedToNegotiateWithServerError"===e.errorType)throw e;Bo(),e.innerErrors&&(e.innerErrors.some((e=>"UnsupportedTransportError"===e.errorType&&e.transport===In.WebSockets))?this._logger.log(Ot.Error,"Unable to connect, please ensure you are using an updated browser that supports WebSockets."):e.innerErrors.some((e=>"FailedToStartTransportError"===e.errorType&&e.transport===In.WebSockets))?this._logger.log(Ot.Error,"Unable to connect, please ensure WebSockets are available. A VPN or proxy may be blocking the connection."):e.innerErrors.some((e=>"DisabledTransportError"===e.errorType&&e.transport===In.LongPolling))&&this._logger.log(Ot.Error,"Unable to initiate a SignalR connection to the server. This might be because the server is not configured to support WebSockets. For additional details, visit https://aka.ms/blazor-server-websockets-error."))}return(null===(t=null===(e=r.connection)||void 0===e?void 0:e.features)||void 0===t?void 0:t.inherentKeepAlive)&&this._logger.log(Ot.Warning,"Failed to connect via WebSockets, using the Long Polling fallback transport. This may be due to a VPN or proxy blocking the connection. To troubleshoot this, visit https://aka.ms/blazor-server-using-fallback-long-polling."),r}async disconnect(){var e;await(null===(e=this._connection)||void 0===e?void 0:e.stop())}async reconnect(){if(!this._circuitId)throw new Error("Circuit host not initialized.");return this._connection.state===hn.Connected||(this._connection=await this.startConnection(),this._interopMethodsForReconnection&&(k(Bn.Server,this._interopMethodsForReconnection),this._interopMethodsForReconnection=void 0),!!await this._connection.invoke("ConnectCircuit",this._circuitId)&&(this._options.reconnectionHandler.onConnectionUp(),!0))}beginInvokeDotNetFromJS(e,t,n,o,r){this.throwIfDispatchingWhenDisposed(),this._connection.send("BeginInvokeDotNetFromJS",e?e.toString():null,t,n,o||0,r)}endInvokeJSFromDotNet(e,t,n){this.throwIfDispatchingWhenDisposed(),this._connection.send("EndInvokeJSFromDotNet",e,t,n)}sendByteArray(e,t){this.throwIfDispatchingWhenDisposed(),this._connection.send("ReceiveByteArray",e,t)}throwIfDispatchingWhenDisposed(){if(this._disposed)throw new Error("The circuit associated with this dispatcher is no longer available.")}sendLocationChanged(e,t,n){return this._connection.send("OnLocationChanged",e,t,n)}sendLocationChanging(e,t,n,o){return this._connection.send("OnLocationChanging",e,t,n,o)}sendJsDataStream(e,t,n){return function(e,t,n,o){setTimeout((async()=>{let r=5,i=(new Date).valueOf();try{const s=t instanceof Blob?t.size:t.byteLength;let a=0,c=0;for(;a1)await e.send("ReceiveJSDataChunk",n,c,h,null);else{if(!await e.invoke("ReceiveJSDataChunk",n,c,h,null))break;const t=(new Date).valueOf(),o=t-i;i=t,r=Math.max(1,Math.round(500/Math.max(1,o)))}a+=l,c++}}catch(t){await e.send("ReceiveJSDataChunk",n,-1,null,t.toString())}}),0)}(this._connection,e,t,n)}resolveElement(e){const t=w(e);if(t)return W(t,!0);const n=Number.parseInt(e);if(!Number.isNaN(n))return H(this._componentManager.resolveRootComponent(n));throw new Error(`Invalid sequence number or identifier '${e}'.`)}getRootComponentManager(){return this._componentManager}unhandledError(e){this._logger.log(Ot.Error,e),this.disconnect()}getDisconnectFormData(){const e=new FormData,t=this._circuitId;return e.append("circuitId",t),e}didRenderingFail(){return this._renderingFailed}isDisposedOrDisposing(){return void 0!==this._disposePromise}sendDisconnectBeacon(){if(this._disposed)return;const e=this.getDisconnectFormData();this._disposed=navigator.sendBeacon("_blazor/disconnect",e)}dispose(){return this._disposePromise||(this._disposePromise=this.disposeCore()),this._disposePromise}async disposeCore(){var e;if(!this._startPromise)return void(this._disposed=!0);await this._startPromise,this._disposed=!0,null===(e=this._connection)||void 0===e||e.stop();const t=this.getDisconnectFormData();fetch("http://github.com/_blazor/disconnect",{method:"POST",body:t});for(const e of this._options.circuitHandlers)e.onCircuitClosed&&e.onCircuitClosed()}}function Fo(e){const t={...$o,...e};return e&&e.reconnectionOptions&&(t.reconnectionOptions={...$o.reconnectionOptions,...e.reconnectionOptions}),t}const $o={configureSignalR:e=>{},logLevel:yt.Warning,initializers:void 0,circuitHandlers:[],reconnectionOptions:{maxRetries:8,retryIntervalMilliseconds:2e4,dialogId:"components-reconnect-modal"}};class Ho{constructor(e,t,n,o){this.maxRetries=t,this.document=n,this.logger=o,this.modal=this.document.createElement("div"),this.modal.id=e,this.maxRetries=t,this.modal.style.cssText=["position: fixed","top: 0","right: 0","bottom: 0","left: 0","z-index: 1050","display: none","overflow: hidden","background-color: #fff","opacity: 0.8","text-align: center","font-weight: bold","transition: visibility 0s linear 500ms"].join(";"),this.message=this.document.createElement("h5"),this.message.style.cssText="margin-top: 20px",this.button=this.document.createElement("button"),this.button.style.cssText="margin:5px auto 5px",this.button.textContent="Retry";const r=this.document.createElement("a");r.addEventListener("click",(()=>location.reload())),r.textContent="reload",this.reloadParagraph=this.document.createElement("p"),this.reloadParagraph.textContent="Alternatively, ",this.reloadParagraph.appendChild(r),this.modal.appendChild(this.message),this.modal.appendChild(this.button),this.modal.appendChild(this.reloadParagraph),this.loader=this.getLoader(),this.message.after(this.loader),this.button.addEventListener("click",(async()=>{this.show();try{await vt.reconnect()||this.rejected()}catch(e){this.logger.log(yt.Error,e),this.failed()}}))}show(){this.document.contains(this.modal)||this.document.body.appendChild(this.modal),this.modal.style.display="block",this.loader.style.display="inline-block",this.button.style.display="none",this.reloadParagraph.style.display="none",this.message.textContent="Attempting to reconnect to the server...",this.modal.style.visibility="hidden",setTimeout((()=>{this.modal.style.visibility="visible"}),0)}update(e){this.message.textContent=`Attempting to reconnect to the server: ${e} of ${this.maxRetries}`}hide(){this.modal.style.display="none"}failed(){this.button.style.display="block",this.reloadParagraph.style.display="none",this.loader.style.display="none";const e=this.document.createTextNode("Reconnection failed. Try "),t=this.document.createElement("a");t.textContent="reloading",t.setAttribute("href",""),t.addEventListener("click",(()=>location.reload()));const n=this.document.createTextNode(" the page if you're unable to reconnect.");this.message.replaceChildren(e,t,n)}rejected(){this.button.style.display="none",this.reloadParagraph.style.display="none",this.loader.style.display="none";const e=this.document.createTextNode("Could not reconnect to the server. "),t=this.document.createElement("a");t.textContent="Reload",t.setAttribute("href",""),t.addEventListener("click",(()=>location.reload()));const n=this.document.createTextNode(" the page to restore functionality.");this.message.replaceChildren(e,t,n)}getLoader(){const e=this.document.createElement("div");return e.style.cssText=["border: 0.3em solid #f3f3f3","border-top: 0.3em solid #3498db","border-radius: 50%","width: 2em","height: 2em","display: inline-block"].join(";"),e.animate([{transform:"rotate(0deg)"},{transform:"rotate(360deg)"}],{duration:2e3,iterations:1/0}),e}}class Wo{constructor(e,t,n){this.dialog=e,this.maxRetries=t,this.document=n,this.document=n;const o=this.document.getElementById(Wo.MaxRetriesId);o&&(o.innerText=this.maxRetries.toString())}show(){this.removeClasses(),this.dialog.classList.add(Wo.ShowClassName)}update(e){const t=this.document.getElementById(Wo.CurrentAttemptId);t&&(t.innerText=e.toString())}hide(){this.removeClasses(),this.dialog.classList.add(Wo.HideClassName)}failed(){this.removeClasses(),this.dialog.classList.add(Wo.FailedClassName)}rejected(){this.removeClasses(),this.dialog.classList.add(Wo.RejectedClassName)}removeClasses(){this.dialog.classList.remove(Wo.ShowClassName,Wo.HideClassName,Wo.FailedClassName,Wo.RejectedClassName)}}Wo.ShowClassName="components-reconnect-show",Wo.HideClassName="components-reconnect-hide",Wo.FailedClassName="components-reconnect-failed",Wo.RejectedClassName="components-reconnect-rejected",Wo.MaxRetriesId="components-reconnect-max-retries",Wo.CurrentAttemptId="components-reconnect-current-attempt";class jo{constructor(e,t,n){this._currentReconnectionProcess=null,this._logger=e,this._reconnectionDisplay=t,this._reconnectCallback=n||vt.reconnect}onConnectionDown(e,t){if(!this._reconnectionDisplay){const t=document.getElementById(e.dialogId);this._reconnectionDisplay=t?new Wo(t,e.maxRetries,document):new Ho(e.dialogId,e.maxRetries,document,this._logger)}this._currentReconnectionProcess||(this._currentReconnectionProcess=new zo(e,this._logger,this._reconnectCallback,this._reconnectionDisplay))}onConnectionUp(){this._currentReconnectionProcess&&(this._currentReconnectionProcess.dispose(),this._currentReconnectionProcess=null)}}class zo{constructor(e,t,n,o){this.logger=t,this.reconnectCallback=n,this.isDisposed=!1,this.reconnectDisplay=o,this.reconnectDisplay.show(),this.attemptPeriodicReconnection(e)}dispose(){this.isDisposed=!0,this.reconnectDisplay.hide()}async attemptPeriodicReconnection(e){for(let t=0;tzo.MaximumFirstRetryInterval?zo.MaximumFirstRetryInterval:e.retryIntervalMilliseconds;if(await this.delay(n),this.isDisposed)break;try{return await this.reconnectCallback()?void 0:void this.reconnectDisplay.rejected()}catch(e){this.logger.log(yt.Error,e)}}this.reconnectDisplay.failed()}delay(e){return new Promise((t=>setTimeout(t,e)))}}zo.MaximumFirstRetryInterval=3e3;class qo{constructor(e=!0,t,n,o=0){this.singleRuntime=e,this.logger=t,this.webRendererId=o,this.afterStartedCallbacks=[],n&&this.afterStartedCallbacks.push(...n)}async importInitializersAsync(e,t){await Promise.all(e.map((e=>async function(e,n){const o=function(e){const t=document.baseURI;return t.endsWith("/")?`${t}${e}`:`${t}/${e}`}(n),r=await import(o);if(void 0!==r){if(e.singleRuntime){const{beforeStart:n,afterStarted:o,beforeWebAssemblyStart:s,afterWebAssemblyStarted:a,beforeServerStart:c,afterServerStarted:l}=r;let h=n;e.webRendererId===Bn.Server&&c&&(h=c),e.webRendererId===Bn.WebAssembly&&s&&(h=s);let d=o;return e.webRendererId===Bn.Server&&l&&(d=l),e.webRendererId===Bn.WebAssembly&&a&&(d=a),i(e,h,d,t)}return function(e,t,n){var r;const s=n[0],{beforeStart:a,afterStarted:c,beforeWebStart:l,afterWebStarted:h,beforeWebAssemblyStart:d,afterWebAssemblyStarted:u,beforeServerStart:p,afterServerStarted:f}=t,g=!(l||h||d||u||p||f||!a&&!c),m=g&&s.enableClassicInitializers;if(g&&!s.enableClassicInitializers)null===(r=e.logger)||void 0===r||r.log(yt.Warning,`Initializer '${o}' will be ignored because multiple runtimes are available. use 'before(web|webAssembly|server)Start' and 'after(web|webAssembly|server)Started?' instead.)`);else if(m)return i(e,a,c,n);if(function(e){e.webAssembly?e.webAssembly.initializers||(e.webAssembly.initializers={beforeStart:[],afterStarted:[]}):e.webAssembly={initializers:{beforeStart:[],afterStarted:[]}},e.circuit?e.circuit.initializers||(e.circuit.initializers={beforeStart:[],afterStarted:[]}):e.circuit={initializers:{beforeStart:[],afterStarted:[]}}}(s),d&&s.webAssembly.initializers.beforeStart.push(d),u&&s.webAssembly.initializers.afterStarted.push(u),p&&s.circuit.initializers.beforeStart.push(p),f&&s.circuit.initializers.afterStarted.push(f),h&&e.afterStartedCallbacks.push(h),l)return l(s)}(e,r,t)}function i(e,t,n,o){if(n&&e.afterStartedCallbacks.push(n),t)return t(...o)}}(this,e))))}async invokeAfterStartedCallbacks(e){const t=function(e){var t;return null===(t=I.get(e))||void 0===t?void 0:t[1]}(this.webRendererId);t&&await t,await Promise.all(this.afterStartedCallbacks.map((t=>t(e))))}}let Jo,Ko,Vo,Xo,Go,Yo,Qo,Zo;function er(e){if(Xo)throw new Error("Circuit options have already been configured.");if(Xo)throw new Error("WebAssembly options have already been configured.");Jo=async function(e){const t=await e;Xo=Fo(t)}(e)}function tr(e){if(void 0!==Yo)throw new Error("Blazor Server has already started.");return Yo=new Promise(nr.bind(null,e)),Yo}async function nr(e,t,n){await Jo;const o=await async function(e){if(e.initializers)return await Promise.all(e.initializers.beforeStart.map((t=>t(e)))),new qo(!1,void 0,e.initializers.afterStarted,Bn.Server);const t=await fetch("http://github.com/_blazor/initializers",{method:"GET",credentials:"include",cache:"no-cache"}),n=await t.json(),o=new qo(!0,void 0,void 0,Bn.Server);return await o.importInitializersAsync(n,[e]),o}(Xo);if(Ko=It(document)||"",Go=new bt(Xo.logLevel),Vo=new Oo(e,Ko,Xo,Go),Go.log(yt.Information,"Starting up Blazor server-side application."),vt.reconnect=async()=>!(Vo.didRenderingFail()||!await Vo.reconnect()&&(Go.log(yt.Information,"Reconnection attempt to the circuit was rejected by the server. This may indicate that the associated state is no longer available on the server."),1)),vt.defaultReconnectionHandler=new jo(Go),Xo.reconnectionHandler=Xo.reconnectionHandler||vt.defaultReconnectionHandler,vt._internal.navigationManager.listenForNavigationEvents(Bn.Server,((e,t,n)=>Vo.sendLocationChanged(e,t,n)),((e,t,n,o)=>Vo.sendLocationChanging(e,t,n,o))),vt._internal.forceCloseConnection=()=>Vo.disconnect(),vt._internal.sendJSDataStream=(e,t,n)=>Vo.sendJsDataStream(e,t,n),!await Vo.start())return Go.log(yt.Error,"Failed to start the circuit."),void t();const r=()=>{Vo.sendDisconnectBeacon()};vt.disconnect=r,window.addEventListener("unload",r,{capture:!1,once:!0}),Go.log(yt.Information,"Blazor server-side application started."),o.invokeAfterStartedCallbacks(vt),t()}async function or(){if(!Yo)throw new Error("Cannot start the circuit until Blazor Server has started.");return!(!Vo||Vo.isDisposedOrDisposing())||(Qo?await Qo:(await Yo,(!Vo||!Vo.didRenderingFail())&&(Vo&&Vo.isDisposedOrDisposing()&&(Ko=It(document)||"",Vo=new Oo(Vo.getRootComponentManager(),Ko,Xo,Go)),Qo=Vo.start(),async function(e){await e,Qo===e&&(Qo=void 0)}(Qo),Qo)))}function rr(e){if(Vo&&!Vo.isDisposedOrDisposing())return Vo.updateRootComponents(e);!async function(e){await Yo,await or()&&Vo.updateRootComponents(e)}(e)}function ir(e){return Zo=e,Zo}var sr,ar;const cr=navigator,lr=cr.userAgentData&&cr.userAgentData.brands,hr=lr&&lr.length>0?lr.some((e=>"Google Chrome"===e.brand||"Microsoft Edge"===e.brand||"Chromium"===e.brand)):window.chrome,dr=null!==(ar=null===(sr=cr.userAgentData)||void 0===sr?void 0:sr.platform)&&void 0!==ar?ar:navigator.platform;function ur(e){return 0!==e.debugLevel&&(hr||navigator.userAgent.includes("Firefox"))}let pr,fr,gr,mr,vr,yr,wr;const br=Math.pow(2,32),_r=Math.pow(2,21)-1;let Sr=null;function Cr(e){return fr.getI32(e)}const Er={load:function(e,t){return async function(e,t){const{dotnet:n}=await async function(e){if("undefined"==typeof WebAssembly||!WebAssembly.validate)throw new Error("This browser does not support WebAssembly.");let t="_framework/dotnet.js";if(e.loadBootResource){const n="dotnetjs",o=e.loadBootResource(n,"dotnet.js",t,"","js-module-dotnet");if("string"==typeof o)t=o;else if(o)throw new Error(`For a ${n} resource, custom loaders must supply a URI string.`)}const n=new URL(t,document.baseURI).toString();return await import(n)}(e),o=function(e,t){const n={maxParallelDownloads:1e6,enableDownloadRetry:!1,applicationEnvironment:e.environment},o={...window.Module||{},onConfigLoaded:async n=>{n.environmentVariables||(n.environmentVariables={}),"sharded"===n.globalizationMode&&(n.environmentVariables.__BLAZOR_SHARDED_ICU="1"),vt._internal.getApplicationEnvironment=()=>n.applicationEnvironment,null==t||t(n),wr=await async function(e,t){var n,o,r;if(e.initializers)return await Promise.all(e.initializers.beforeStart.map((t=>t(e)))),new qo(!1,void 0,e.initializers.afterStarted,Bn.WebAssembly);{const i=[e,null!==(o=null===(n=t.resources)||void 0===n?void 0:n.extensions)&&void 0!==o?o:{}],s=new qo(!0,void 0,void 0,Bn.WebAssembly),a=Object.keys((null===(r=null==t?void 0:t.resources)||void 0===r?void 0:r.libraryInitializers)||{});return await s.importInitializersAsync(a,i),s}}(e,n)},onDownloadResourceProgress:Ir,config:n,disableDotnet6Compatibility:!1,out:Tr,err:Rr};return o}(e,t);e.applicationCulture&&n.withApplicationCulture(e.applicationCulture),e.environment&&n.withApplicationEnvironment(e.environment),e.loadBootResource&&n.withResourceLoader(e.loadBootResource),n.withModuleConfig(o),e.configureRuntime&&e.configureRuntime(n),yr=await n.create()}(e,t)},start:function(){return async function(){if(!yr)throw new Error("The runtime must be loaded it gets configured.");const{MONO:t,BINDING:n,Module:o,setModuleImports:r,INTERNAL:i,getConfig:s,invokeLibraryInitializers:a}=yr;gr=o,pr=n,fr=t,vr=i,function(e){const t=dr.match(/^Mac/i)?"Cmd":"Alt";ur(e)&&console.info(`Debugging hotkey: Shift+${t}+D (when application has focus)`),document.addEventListener("keydown",(t=>{t.shiftKey&&(t.metaKey||t.altKey)&&"KeyD"===t.code&&(ur(e)?navigator.userAgent.includes("Firefox")?async function(){const e=await fetch(`_framework/debug?url=${encodeURIComponent(location.href)}&isFirefox=true`);200!==e.status&&console.warn(await e.text())}():hr?function(){const e=document.createElement("a");e.href=`_framework/debug?url=${encodeURIComponent(location.href)}`,e.target="_blank",e.rel="noopener noreferrer",e.click()}():console.error("Currently, only Microsoft Edge (80+), Google Chrome, or Chromium, are supported for debugging."):console.error("Cannot start debugging, because the application was not compiled with debugging enabled."))}))}(s()),vt.runtime=yr,vt._internal.dotNetCriticalError=Rr,r("blazor-internal",{Blazor:{_internal:vt._internal}});const c=await yr.getAssemblyExports("Microsoft.AspNetCore.Components.WebAssembly");return Object.assign(vt._internal,{dotNetExports:{...c.Microsoft.AspNetCore.Components.WebAssembly.Services.DefaultWebAssemblyJSRuntime}}),mr=e.attachDispatcher({beginInvokeDotNetFromJS:(e,t,n,o,r)=>{if(Ar(),!o&&!t)throw new Error("Either assemblyName or dotNetObjectId must have a non null value.");const i=o?o.toString():t;vt._internal.dotNetExports.BeginInvokeDotNet(e?e.toString():null,i,n,r)},endInvokeJSFromDotNet:(e,t,n)=>{vt._internal.dotNetExports.EndInvokeJS(n)},sendByteArray:(e,t)=>{vt._internal.dotNetExports.ReceiveByteArrayFromJS(e,t)},invokeDotNetFromJS:(e,t,n,o)=>(Ar(),vt._internal.dotNetExports.InvokeDotNet(e||null,t,null!=n?n:0,o))}),{invokeLibraryInitializers:a}}()},callEntryPoint:async function(){try{await yr.runMain(yr.getConfig().mainAssemblyName,[])}catch(e){console.error(e),Bo()}},toUint8Array:function(e){const t=Dr(e),n=Cr(t),o=new Uint8Array(n);return o.set(gr.HEAPU8.subarray(t+4,t+4+n)),o},getArrayLength:function(e){return Cr(Dr(e))},getArrayEntryPtr:function(e,t,n){return Dr(e)+4+t*n},getObjectFieldsBaseAddress:function(e){return e+8},readInt16Field:function(e,t){return n=e+(t||0),fr.getI16(n);var n},readInt32Field:function(e,t){return Cr(e+(t||0))},readUint64Field:function(e,t){return function(e){const t=e>>2,n=gr.HEAPU32[t+1];if(n>_r)throw new Error(`Cannot read uint64 with high order part ${n}, because the result would exceed Number.MAX_SAFE_INTEGER.`);return n*br+gr.HEAPU32[t]}(e+(t||0))},readFloatField:function(e,t){return n=e+(t||0),fr.getF32(n);var n},readObjectField:function(e,t){return Cr(e+(t||0))},readStringField:function(e,t,n){const o=Cr(e+(t||0));if(0===o)return null;if(n){const e=pr.unbox_mono_obj(o);return"boolean"==typeof e?e?"":null:e}return pr.conv_string(o)},readStructField:function(e,t){return e+(t||0)},beginHeapLock:function(){return Ar(),Sr=xr.create(),Sr},invokeWhenHeapUnlocked:function(e){Sr?Sr.enqueuePostReleaseAction(e):e()}};function Ir(e,t){const n=e/t*100;document.documentElement.style.setProperty("--blazor-load-percentage",`${n}%`),document.documentElement.style.setProperty("--blazor-load-percentage-text",`"${Math.floor(n)}%"`)}const kr=["DEBUGGING ENABLED"],Tr=e=>kr.indexOf(e)<0&&console.log(e),Rr=e=>{console.error(e||"(null)"),Bo()};function Dr(e){return e+12}function Ar(){if(Sr)throw new Error("Assertion failed - heap is currently locked")}class xr{enqueuePostReleaseAction(e){this.postReleaseActions||(this.postReleaseActions=[]),this.postReleaseActions.push(e)}release(){var e;if(Sr!==this)throw new Error("Trying to release a lock which isn't current");for(vr.mono_wasm_gc_unlock(),Sr=null;null===(e=this.postReleaseActions)||void 0===e?void 0:e.length;)this.postReleaseActions.shift()(),Ar()}static create(){return vr.mono_wasm_gc_lock(),new xr}}class Nr{constructor(e){this.batchAddress=e,this.arrayRangeReader=Pr,this.arrayBuilderSegmentReader=Mr,this.diffReader=Ur,this.editReader=Lr,this.frameReader=Br}updatedComponents(){return Zo.readStructField(this.batchAddress,0)}referenceFrames(){return Zo.readStructField(this.batchAddress,Pr.structLength)}disposedComponentIds(){return Zo.readStructField(this.batchAddress,2*Pr.structLength)}disposedEventHandlerIds(){return Zo.readStructField(this.batchAddress,3*Pr.structLength)}updatedComponentsEntry(e,t){return Or(e,t,Ur.structLength)}referenceFramesEntry(e,t){return Or(e,t,Br.structLength)}disposedComponentIdsEntry(e,t){const n=Or(e,t,4);return Zo.readInt32Field(n)}disposedEventHandlerIdsEntry(e,t){const n=Or(e,t,8);return Zo.readUint64Field(n)}}const Pr={structLength:8,values:e=>Zo.readObjectField(e,0),count:e=>Zo.readInt32Field(e,4)},Mr={structLength:12,values:e=>{const t=Zo.readObjectField(e,0),n=Zo.getObjectFieldsBaseAddress(t);return Zo.readObjectField(n,0)},offset:e=>Zo.readInt32Field(e,4),count:e=>Zo.readInt32Field(e,8)},Ur={structLength:4+Mr.structLength,componentId:e=>Zo.readInt32Field(e,0),edits:e=>Zo.readStructField(e,4),editsEntry:(e,t)=>Or(e,t,Lr.structLength)},Lr={structLength:20,editType:e=>Zo.readInt32Field(e,0),siblingIndex:e=>Zo.readInt32Field(e,4),newTreeIndex:e=>Zo.readInt32Field(e,8),moveToSiblingIndex:e=>Zo.readInt32Field(e,8),removedAttributeName:e=>Zo.readStringField(e,16)},Br={structLength:36,frameType:e=>Zo.readInt16Field(e,4),subtreeLength:e=>Zo.readInt32Field(e,8),elementReferenceCaptureId:e=>Zo.readStringField(e,16),componentId:e=>Zo.readInt32Field(e,12),elementName:e=>Zo.readStringField(e,16),textContent:e=>Zo.readStringField(e,16),markupContent:e=>Zo.readStringField(e,16),attributeName:e=>Zo.readStringField(e,16),attributeValue:e=>Zo.readStringField(e,24,!0),attributeEventHandlerId:e=>Zo.readUint64Field(e,8)};function Or(e,t,n){return Zo.getArrayEntryPtr(e,t,n)}class Fr{constructor(e){this.componentManager=e}resolveRegisteredElement(e){const t=Number.parseInt(e);if(!Number.isNaN(t))return H(this.componentManager.resolveRootComponent(t))}getParameterValues(e){return this.componentManager.initialComponents[e].parameterValues}getParameterDefinitions(e){return this.componentManager.initialComponents[e].parameterDefinitions}getTypeName(e){return this.componentManager.initialComponents[e].typeName}getAssembly(e){return this.componentManager.initialComponents[e].assembly}getCount(){return this.componentManager.initialComponents.length}}let $r,Hr,Wr,jr,zr,qr=!1,Jr=!1,Kr=!0,Vr=!1;const Xr=new Promise((e=>{zr=e}));let Gr;const Yr=new Promise((e=>{Gr=e}));let Qr;function Zr(e){if(void 0!==jr)throw new Error("Blazor WebAssembly has already started.");return jr=new Promise(ei.bind(null,e)),jr}async function ei(e,t,n){(function(){if(window.parent!==window&&!window.opener&&window.frameElement){const e=window.sessionStorage&&window.sessionStorage["Microsoft.AspNetCore.Components.WebAssembly.Authentication.CachedAuthSettings"],t=e&&JSON.parse(e);return t&&t.redirect_uri&&location.href.startsWith(t.redirect_uri)}return!1})()&&await new Promise((()=>{}));const o=ti();!function(e){const t=A;A=(e,n,o)=>{((e,t,n)=>{const o=Ae(e);(null==o?void 0:o.eventDelegator.getHandler(t))&&Er.invokeWhenHeapUnlocked(n)})(e,n,(()=>t(e,n,o)))}}(),vt._internal.applyHotReload=(e,t,n,o)=>{mr.invokeDotNetStaticMethod("Microsoft.AspNetCore.Components.WebAssembly","ApplyHotReloadDelta",e,t,n,o)},vt._internal.getApplyUpdateCapabilities=()=>mr.invokeDotNetStaticMethod("Microsoft.AspNetCore.Components.WebAssembly","GetApplyUpdateCapabilities"),vt._internal.invokeJSFromDotNet=oi,vt._internal.invokeJSJson=ri,vt._internal.endInvokeDotNetFromJS=ii,vt._internal.receiveWebAssemblyDotNetDataStream=si,vt._internal.receiveByteArray=ai;const r=ir(Er);vt.platform=r,vt._internal.renderBatch=(e,t)=>{const n=Er.beginHeapLock();try{xe(e,new Nr(t))}finally{n.release()}},vt._internal.navigationManager.listenForNavigationEvents(Bn.WebAssembly,(async(e,t,n)=>{await mr.invokeDotNetStaticMethodAsync("Microsoft.AspNetCore.Components.WebAssembly","NotifyLocationChanged",e,t,n)}),(async(e,t,n,o)=>{const r=await mr.invokeDotNetStaticMethodAsync("Microsoft.AspNetCore.Components.WebAssembly","NotifyLocationChangingAsync",t,n,o);vt._internal.navigationManager.endLocationChanging(e,r)}));const i=new Fr(e);let s;vt._internal.registeredComponents={getRegisteredComponentsCount:()=>i.getCount(),getAssembly:e=>i.getAssembly(e),getTypeName:e=>i.getTypeName(e),getParameterDefinitions:e=>i.getParameterDefinitions(e)||"",getParameterValues:e=>i.getParameterValues(e)||""},vt._internal.getPersistedState=()=>kt(document,Ct)||"",vt._internal.getInitialComponentsUpdate=()=>Yr,vt._internal.updateRootComponents=e=>{var t;return null===(t=vt._internal.dotNetExports)||void 0===t?void 0:t.UpdateRootComponentsCore(e)},vt._internal.endUpdateRootComponents=t=>{var n;return null===(n=e.onAfterUpdateRootComponents)||void 0===n?void 0:n.call(e,t)},vt._internal.attachRootComponentToElement=(e,t,n)=>{const o=i.resolveRegisteredElement(e);o?De(n,o,t,!1):function(e,t,n){const o="::before";let r=!1;if(e.endsWith("::after"))e=e.slice(0,-7),r=!0;else if(e.endsWith(o))throw new Error(`The '${o}' selector is not supported.`);const i=w(e)||document.querySelector(e);if(!i)throw new Error(`Could not find any element matching selector '${e}'.`);De(n,W(i,!0),t,r)}(e,t,n)};try{await o,s=await r.start()}catch(e){throw new Error(`Failed to start platform. Reason: ${e}`)}r.callEntryPoint(),wr.invokeAfterStartedCallbacks(vt),Jr=!0,t()}function ti(){return null!=Wr||(Wr=(async()=>{await Hr;const e=null!=$r?$r:{},t=null==$r?void 0:$r.configureRuntime;e.configureRuntime=e=>{null==t||t(e),Vr&&e.withEnvironmentVariable("__BLAZOR_WEBASSEMBLY_WAIT_FOR_ROOT_COMPONENTS","true")},await Er.load(e,zr),qr=!0})()),Wr}function ni(){return qr}function oi(t,n,o,r){const i=Er.readStringField(t,0),s=Er.readInt32Field(t,4),a=Er.readStringField(t,8),c=Er.readUint64Field(t,20);if(null!==a){const e=Er.readUint64Field(t,12);if(0!==e)return mr.beginInvokeJSFromDotNet(e,i,a,s,c),0;{const e=mr.invokeJSFromDotNet(i,a,s,c);return null===e?0:pr.js_string_to_mono_string(e)}}{const t=e.findJSFunction(i,c).call(null,n,o,r);switch(s){case e.JSCallResultType.Default:return t;case e.JSCallResultType.JSObjectReference:return e.createJSObjectReference(t).__jsObjectId;case e.JSCallResultType.JSStreamReference:{const n=e.createJSStreamReference(t),o=JSON.stringify(n);return pr.js_string_to_mono_string(o)}case e.JSCallResultType.JSVoidResult:return null;default:throw new Error(`Invalid JS call result type '${s}'.`)}}}function ri(e,t,n,o,r){return 0!==r?(mr.beginInvokeJSFromDotNet(r,e,o,n,t),null):mr.invokeJSFromDotNet(e,o,n,t)}function ii(e,t,n){mr.endInvokeDotNetFromJS(e,t,n)}function si(e,t,n,o){!function(e,t,n,o,r){let i=mt.get(t);if(!i){const n=new ReadableStream({start(e){mt.set(t,e),i=e}});e.supplyDotNetStream(t,n)}r?(i.error(r),mt.delete(t)):0===o?(i.close(),mt.delete(t)):i.enqueue(n.length===o?n:n.subarray(0,o))}(mr,e,t,n,o)}function ai(e,t){mr.receiveByteArray(e,t)}function ci(e,t){t.namespaceURI?e.setAttributeNS(t.namespaceURI,t.name,t.value):e.setAttribute(t.name,t.value)}Hr=new Promise((e=>{Qr=e}));const li="data-permanent";var hi,di;!function(e){e[e.None=0]="None",e[e.Some=1]="Some",e[e.Infinite=2]="Infinite"}(hi||(hi={})),function(e){e.Keep="keep",e.Update="update",e.Insert="insert",e.Delete="delete"}(di||(di={}));class ui{static create(e,t,n){return 0===t&&n===e.length?e:new ui(e,t,n)}constructor(e,t,n){this.source=e,this.startIndex=t,this.length=n}item(e){return this.source.item(e+this.startIndex)}forEach(e,t){for(let t=0;t=n&&s>=o&&r(e.item(i),t.item(s))===hi.None;)i--,s--,a++;return a}(e,t,o,o,n),i=function(e){var t;const n=[];let o=e.length-1,r=(null===(t=e[o])||void 0===t?void 0:t.length)-1;for(;o>0||r>0;){const t=0===o?di.Insert:0===r?di.Delete:e[o][r];switch(n.unshift(t),t){case di.Keep:case di.Update:o--,r--;break;case di.Insert:r--;break;case di.Delete:o--}}return n}(function(e,t,n){const o=[],r=[],i=e.length,s=t.length;if(0===i&&0===s)return[];for(let e=0;e<=i;e++)(o[e]=Array(s+1))[0]=e,r[e]=Array(s+1);const a=o[0];for(let e=1;e<=s;e++)a[e]=e;for(let a=1;a<=i;a++)for(let i=1;i<=s;i++){const s=n(e.item(a-1),t.item(i-1)),c=o[a-1][i]+1,l=o[a][i-1]+1;let h;switch(s){case hi.None:h=o[a-1][i-1];break;case hi.Some:h=o[a-1][i-1]+1;break;case hi.Infinite:h=Number.MAX_VALUE}h{history.pushState(null,"",e),Mi(e,!0)}))}function Ni(e){Oe()||Mi(location.href,!1)}function Pi(e){if(Oe()||e.defaultPrevented)return;const t=e.target;if(t instanceof HTMLFormElement){if(!function(e){const t=e.getAttribute("data-enhance");return"string"==typeof t&&""===t||"true"===(null==t?void 0:t.toLowerCase())}(t))return;e.preventDefault();let n=new URL(t.action);const o={method:t.method},r=new FormData(t),i=e.submitter;i&&(i.name&&r.append(i.name,i.value),null!==i.getAttribute("formaction")&&(n=new URL(i.formAction))),"get"===o.method?(n.search=new URLSearchParams(r).toString(),history.pushState(null,"",n.toString())):o.body=r,Mi(n.toString(),!1,o)}}async function Mi(e,t,n){gi=!0,null==pi||pi.abort(),function(e,t){null==ke||ke(e,t)}(e,t),pi=new AbortController;const o=pi.signal,r=fetch(e,Object.assign({signal:o,mode:"no-cors",headers:{accept:"text/html; blazor-enhanced-nav=on"}},n));let i=null;if(await async function(e,t,n,o){let r;try{if(r=await e,!r.body)return void n(r,"");const t=r.headers.get("ssr-framing");if(!t){const e=await r.text();return void n(r,e)}let o=!0;await r.body.pipeThrough(new TextDecoderStream).pipeThrough(function(e){let t="";return new TransformStream({transform(n,o){if(t+=n,t.indexOf(e,t.length-n.length-e.length)>=0){const n=t.split(e);n.slice(0,-1).forEach((e=>o.enqueue(e))),t=n[n.length-1]}},flush(e){e.enqueue(t)}})}(`\x3c!--${t}--\x3e`)).pipeTo(new WritableStream({write(e){o?(o=!1,n(r,e)):(e=>{const t=document.createRange().createContextualFragment(e);for(;t.firstChild;)document.body.appendChild(t.firstChild)})(e)}}))}catch(e){if("AbortError"===e.name&&t.aborted)return;throw e}}(r,o,((t,o)=>{const r=!(null==n?void 0:n.method)||"get"===n.method,s=t.status>=200&&t.status<300;if("opaque"===t.type){if(r)return void Li(e);throw new Error("Enhanced navigation does not support making a non-GET request to an endpoint that redirects to an external origin. Avoid enabling enhanced navigation for form posts that may perform external redirections.")}if(s&&"allow"!==t.headers.get("blazor-enhanced-nav")){if(r)return void Li(e);throw new Error("Enhanced navigation does not support making a non-GET request to a non-Blazor endpoint. Avoid enabling enhanced navigation for forms that post to a non-Blazor endpoint.")}t.redirected&&(r?history.replaceState(null,"",t.url):history.pushState(null,"",t.url),e=t.url);const a=t.headers.get("blazor-enhanced-nav-redirect-location");if(a)return void location.replace(a);t.redirected||r||!s||(function(e){const t=new URL(e.url),n=new URL(Ri);return t.protocol===n.protocol&&t.host===n.host&&t.port===n.port&&t.pathname===n.pathname}(t)?location.href!==Ri&&history.pushState(null,"",Ri):i=`Cannot perform enhanced form submission that changes the URL (except via a redirection), because then back/forward would not work. Either remove this form's 'action' attribute, or change its method to 'get', or do not mark it as enhanced.\nOld URL: ${location.href}\nNew URL: ${t.url}`),Ri=t.url;const c=t.headers.get("content-type");if((null==c?void 0:c.startsWith("text/html"))&&o){const e=(new DOMParser).parseFromString(o,"text/html");vi(document,e),fi.documentUpdated()}else(null==c?void 0:c.startsWith("text/"))&&o?Ui(o):s||o?r?Li(e):Ui(`Error: ${n.method} request to ${e} returned non-HTML content of type ${c||"unspecified"}.`):Ui(`Error: ${t.status} ${t.statusText}`)})),!o.aborted){const t=e.indexOf("#");if(t>=0){const n=e.substring(t+1),o=document.getElementById(n);null==o||o.scrollIntoView()}if(gi=!1,fi.enhancedNavigationCompleted(),i)throw new Error(i)}}function Ui(e){document.documentElement.textContent=e;const t=document.documentElement.style;t.fontFamily="consolas, monospace",t.whiteSpace="pre-wrap",t.padding="1rem"}function Li(e){history.replaceState(null,"",e+"?"),location.replace(e)}let Bi,Oi=!0;class Fi extends HTMLElement{connectedCallback(){var e;const t=this.parentNode;null===(e=t.parentNode)||void 0===e||e.removeChild(t),t.childNodes.forEach((e=>{if(e instanceof HTMLTemplateElement){const t=e.getAttribute("blazor-component-id");if(t)"true"!==e.getAttribute("enhanced-nav")&&pi||function(e,t){const n=function(e){const t=`bl:${e}`,n=document.createNodeIterator(document,NodeFilter.SHOW_COMMENT);let o=null;for(;(o=n.nextNode())&&o.textContent!==t;);if(!o)return null;const r=`/bl:${e}`;let i=null;for(;(i=n.nextNode())&&i.textContent!==r;);return i?{startMarker:o,endMarker:i}:null}(e);if(n){const{startMarker:e,endMarker:o}=n;if(Oi)vi({startExclusive:e,endExclusive:o},t);else{const n=o.parentNode,r=new Range;for(r.setStart(e,e.textContent.length),r.setEnd(o,0),r.deleteContents();t.childNodes[0];)n.insertBefore(t.childNodes[0],o)}Bi.documentUpdated()}}(t,e.content);else switch(e.getAttribute("type")){case"redirection":const t=Le(e.content.textContent),n="form-post"===e.getAttribute("from");"true"===e.getAttribute("enhanced")&&Pe(t)?(n?history.pushState(null,"",t):history.replaceState(null,"",t),Mi(t,!1)):n?location.assign(t):location.replace(t);break;case"error":Ui(e.content.textContent||"Error")}}}))}}class $i{constructor(e){var t;this._circuitInactivityTimeoutMs=e,this._rootComponentsBySsrComponentId=new Map,this._seenDescriptors=new Set,this._pendingOperationBatches={},this._nextOperationBatchId=1,this._nextSsrComponentId=1,this._didWebAssemblyFailToLoadQuickly=!1,this._isComponentRefreshPending=!1,this.initialComponents=[],t=()=>{this.rootComponentsMayRequireRefresh()},E.push(t)}onAfterRenderBatch(e){e===Bn.Server&&this.circuitMayHaveNoRootComponents()}onDocumentUpdated(){this.rootComponentsMayRequireRefresh()}onEnhancedNavigationCompleted(){this.rootComponentsMayRequireRefresh()}registerComponent(e){if(this._seenDescriptors.has(e))return;"auto"!==e.type&&"webassembly"!==e.type||this.startLoadingWebAssemblyIfNotStarted();const t=this._nextSsrComponentId++;this._seenDescriptors.add(e),this._rootComponentsBySsrComponentId.set(t,{descriptor:e,ssrComponentId:t})}unregisterComponent(e){this._seenDescriptors.delete(e.descriptor),this._rootComponentsBySsrComponentId.delete(e.ssrComponentId),this.circuitMayHaveNoRootComponents()}async startLoadingWebAssemblyIfNotStarted(){if(void 0!==Wr)return;Vr=!0;const e=ti();setTimeout((()=>{ni()||this.onWebAssemblyFailedToLoadQuickly()}),vt._internal.loadWebAssemblyQuicklyTimeout);const t=await Xr;(function(e){if(!e.cacheBootResources)return!1;const t=Hi(e);if(!t)return!1;const n=window.localStorage.getItem(t.key);return t.value===n})(t)||this.onWebAssemblyFailedToLoadQuickly(),await e,function(e){const t=Hi(e);t&&window.localStorage.setItem(t.key,t.value)}(t),this.rootComponentsMayRequireRefresh()}onWebAssemblyFailedToLoadQuickly(){this._didWebAssemblyFailToLoadQuickly||(this._didWebAssemblyFailToLoadQuickly=!0,this.rootComponentsMayRequireRefresh())}startCircutIfNotStarted(){return void 0===Yo?tr(this):!Vo||Vo.isDisposedOrDisposing()?or():void 0}async startWebAssemblyIfNotStarted(){this.startLoadingWebAssemblyIfNotStarted(),void 0===jr&&await Zr(this)}rootComponentsMayRequireRefresh(){this._isComponentRefreshPending||(this._isComponentRefreshPending=!0,setTimeout((()=>{this._isComponentRefreshPending=!1,this.refreshRootComponents(this._rootComponentsBySsrComponentId.values())}),0))}circuitMayHaveNoRootComponents(){if(this.rendererHasExistingOrPendingComponents(Bn.Server,"server","auto"))return clearTimeout(this._circuitInactivityTimeoutId),void(this._circuitInactivityTimeoutId=void 0);void 0===this._circuitInactivityTimeoutId&&(this._circuitInactivityTimeoutId=setTimeout((()=>{this.rendererHasExistingOrPendingComponents(Bn.Server,"server","auto")||(async function(){await(null==Vo?void 0:Vo.dispose())}(),this._circuitInactivityTimeoutId=void 0)}),this._circuitInactivityTimeoutMs))}rendererHasComponents(e){const t=Ae(e);return void 0!==t&&t.getRootComponentCount()>0}rendererHasExistingOrPendingComponents(e,...t){if(this.rendererHasComponents(e))return!0;for(const{descriptor:{type:n},assignedRendererId:o}of this._rootComponentsBySsrComponentId.values()){if(o===e)return!0;if(void 0===o&&-1!==t.indexOf(n))return!0}return!1}refreshRootComponents(e){const t=new Map;for(const n of e){const e=this.determinePendingOperation(n);if(!e)continue;const o=n.assignedRendererId;if(!o)throw new Error("Descriptors must be assigned a renderer ID before getting used as root components");let r=t.get(o);r||(r=[],t.set(o,r)),r.push(e)}for(const[e,n]of t){const t={batchId:this._nextOperationBatchId++,operations:n};this._pendingOperationBatches[t.batchId]=t;const o=JSON.stringify(t);e===Bn.Server?rr(o):this.updateWebAssemblyRootComponents(o)}}updateWebAssemblyRootComponents(e){Kr?(Gr(e),Kr=!1):function(e){if(!jr)throw new Error("Blazor WebAssembly has not started.");if(!vt._internal.updateRootComponents)throw new Error("Blazor WebAssembly has not initialized.");Jr?vt._internal.updateRootComponents(e):async function(e){if(await jr,!vt._internal.updateRootComponents)throw new Error("Blazor WebAssembly has not initialized.");vt._internal.updateRootComponents(e)}(e)}(e)}resolveRendererIdForDescriptor(e){switch("auto"===e.type?this.getAutoRenderMode():e.type){case"server":return this.startCircutIfNotStarted(),Bn.Server;case"webassembly":return this.startWebAssemblyIfNotStarted(),Bn.WebAssembly;case null:return null}}getAutoRenderMode(){return this.rendererHasExistingOrPendingComponents(Bn.WebAssembly,"webassembly")?"webassembly":this.rendererHasExistingOrPendingComponents(Bn.Server,"server")?"server":ni()?"webassembly":this._didWebAssemblyFailToLoadQuickly?"server":null}determinePendingOperation(e){if(t=e.descriptor,document.contains(t.start)){if(void 0===e.assignedRendererId){if(gi||"loading"===document.readyState)return null;const t=this.resolveRendererIdForDescriptor(e.descriptor);return null===t?null:T(t)?(be(e.descriptor.start,!0),e.assignedRendererId=t,e.uniqueIdAtLastUpdate=e.descriptor.uniqueId,{type:"add",ssrComponentId:e.ssrComponentId,marker:Ut(e.descriptor)}):null}return T(e.assignedRendererId)?e.uniqueIdAtLastUpdate===e.descriptor.uniqueId?null:(e.uniqueIdAtLastUpdate=e.descriptor.uniqueId,{type:"update",ssrComponentId:e.ssrComponentId,marker:Ut(e.descriptor)}):null}return e.hasPendingRemoveOperation?null:void 0===e.assignedRendererId?(this.unregisterComponent(e),null):T(e.assignedRendererId)?(be(e.descriptor.start,!1),e.hasPendingRemoveOperation=!0,{type:"remove",ssrComponentId:e.ssrComponentId}):null;var t}resolveRootComponent(e){const t=this._rootComponentsBySsrComponentId.get(e);if(!t)throw new Error(`Could not resolve a root component with SSR component ID '${e}'.`);return t.descriptor}onAfterUpdateRootComponents(e){const t=this._pendingOperationBatches[e];delete this._pendingOperationBatches[e];for(const e of t.operations)switch(e.type){case"remove":{const t=this._rootComponentsBySsrComponentId.get(e.ssrComponentId);t&&this.unregisterComponent(t);break}}}}function Hi(e){var t;const n=null===(t=e.resources)||void 0===t?void 0:t.hash,o=e.mainAssemblyName;return n&&o?{key:`blazor-resource-hash:${o}`,value:n}:null}class Wi{constructor(){this._eventListeners=new Map}static create(e){const t=new Wi;return e.addEventListener=t.addEventListener.bind(t),e.removeEventListener=t.removeEventListener.bind(t),t}addEventListener(e,t){let n=this._eventListeners.get(e);n||(n=new Set,this._eventListeners.set(e,n)),n.add(t)}removeEventListener(e,t){var n;null===(n=this._eventListeners.get(e))||void 0===n||n.delete(t)}dispatchEvent(e,t){const n=this._eventListeners.get(e);if(!n)return;const o={...t,type:e};for(const e of n)e(o)}}let ji,zi=!1;function qi(e){var t,n,o,r;if(zi)throw new Error("Blazor has already started.");zi=!0,null!==(t=(e=e||{}).logLevel)&&void 0!==t||(e.logLevel=yt.Error),vt._internal.loadWebAssemblyQuicklyTimeout=3e3,vt._internal.hotReloadApplied=()=>{Me()&&Ue(location.href,!0)},ji=new $i(null!==(o=null===(n=null==e?void 0:e.ssr)||void 0===n?void 0:n.circuitInactivityTimeoutMs)&&void 0!==o?o:2e3);const i=Wi.create(vt),s={documentUpdated:()=>{ji.onDocumentUpdated(),i.dispatchEvent("enhancedload",{})},enhancedNavigationCompleted(){ji.onEnhancedNavigationCompleted()}};return mi=ji,function(e,t){Bi=t,(null==e?void 0:e.disableDomPreservation)&&(Oi=!1),customElements.define("blazor-ssr-end",Fi)}(null==e?void 0:e.ssr,s),(null===(r=null==e?void 0:e.ssr)||void 0===r?void 0:r.disableDomPreservation)||Di(s),"loading"===document.readyState?document.addEventListener("DOMContentLoaded",Ji.bind(null,e)):Ji(e),Promise.resolve()}function Ji(e){const t=Fo((null==e?void 0:e.circuit)||{});e.circuit=t;const n=async function(e,t){var n;const o=kt(document,Et,"initializers");if(!o)return new qo(!1,t);const r=null!==(n=JSON.parse(atob(o)))&&void 0!==n?n:[],i=new qo(!1,t);return await i.importInitializersAsync(r,[e]),i}(e,new bt(t.logLevel));er(Ki(n,t)),function(e){if($r)throw new Error("WebAssembly options have already been configured.");!async function(e){const t=await e;$r=t,Qr()}(e)}(Ki(n,(null==e?void 0:e.webAssembly)||{})),function(e){const t=Ci(document);for(const e of t)null==mi||mi.registerComponent(e)}(),ji.onDocumentUpdated(),async function(e){const t=await e;await t.invokeAfterStartedCallbacks(vt)}(n)}async function Ki(e,t){return await e,t}vt.start=qi,window.DotNet=e,document&&document.currentScript&&"false"!==document.currentScript.getAttribute("autostart")&&qi()})()})(); \ No newline at end of file diff --git a/src/Components/Web.JS/src/Services/NavigationEnhancement.ts b/src/Components/Web.JS/src/Services/NavigationEnhancement.ts index 6793dfcd1157..a567dc024b8e 100644 --- a/src/Components/Web.JS/src/Services/NavigationEnhancement.ts +++ b/src/Components/Web.JS/src/Services/NavigationEnhancement.ts @@ -118,14 +118,20 @@ function onDocumentSubmit(event: SubmitEvent) { event.preventDefault(); - const url = new URL(formElem.action); + let url = new URL(formElem.action); const fetchOptions: RequestInit = { method: formElem.method }; const formData = new FormData(formElem); - - // Replicate the normal behavior of appending the submitter name/value to the form data + const submitter = event.submitter as HTMLButtonElement; - if (submitter && submitter.name) { - formData.append(submitter.name, submitter.value); + if (submitter) { + if (submitter.name) { + // Replicate the normal behavior of appending the submitter name/value to the form data + formData.append(submitter.name, submitter.value); + } + if (submitter.getAttribute("formaction") !== null) { + // Replicate the normal behavior of overriding action attribute of form element + url = new URL(submitter.formAction); + } } if (fetchOptions.method === 'get') { // method is always returned as lowercase diff --git a/src/Components/test/E2ETest/ServerRenderingTests/FormHandlingTests/FormWithParentBindingContextTest.cs b/src/Components/test/E2ETest/ServerRenderingTests/FormHandlingTests/FormWithParentBindingContextTest.cs index e6c5480e1a39..c74d0adc80e1 100644 --- a/src/Components/test/E2ETest/ServerRenderingTests/FormHandlingTests/FormWithParentBindingContextTest.cs +++ b/src/Components/test/E2ETest/ServerRenderingTests/FormHandlingTests/FormWithParentBindingContextTest.cs @@ -1337,6 +1337,17 @@ void AssertUiState(string expectedStringValue, bool expectedBoolValue) } } + [Fact] + public void SubmitButtonFormactionAttributeOverridesEnhancedFormAction() + { + GoTo("forms/form-submit-button-with-formaction"); + + Browser.Exists(By.Id("submit-button")).Click(); + + Assert.EndsWith("/test-formaction", Browser.Url); + Browser.Equal("Formaction url", () => Browser.Exists(By.TagName("html")).Text); + } + // Can't just use GetAttribute or GetDomAttribute because they both auto-resolve it // to an absolute URL. We want to be able to assert about the attribute's literal value. private string ReadFormActionAttribute(IWebElement form) diff --git a/src/Components/test/testassets/Components.TestServer/RazorComponentEndpointsStartup.cs b/src/Components/test/testassets/Components.TestServer/RazorComponentEndpointsStartup.cs index a718b124677f..dead36b67e18 100644 --- a/src/Components/test/testassets/Components.TestServer/RazorComponentEndpointsStartup.cs +++ b/src/Components/test/testassets/Components.TestServer/RazorComponentEndpointsStartup.cs @@ -173,6 +173,8 @@ private static void MapEnhancedNavigationEndpoints(IEndpointRouteBuilder endpoin return Task.Delay(Timeout.Infinite, token); }); + endpoints.Map("/test-formaction", () => "Formaction url"); + static Task PerformRedirection(HttpRequest request, HttpResponse response) { response.Redirect(request.Query["external"] == "true" diff --git a/src/Components/test/testassets/Components.TestServer/RazorComponents/Pages/Forms/FormSubmitButtonWithFormaction.razor b/src/Components/test/testassets/Components.TestServer/RazorComponents/Pages/Forms/FormSubmitButtonWithFormaction.razor new file mode 100644 index 000000000000..f26838945d69 --- /dev/null +++ b/src/Components/test/testassets/Components.TestServer/RazorComponents/Pages/Forms/FormSubmitButtonWithFormaction.razor @@ -0,0 +1,6 @@ +@page "/forms/form-submit-button-with-formaction" +

Form Submit Button with formaction

+ +
+ +
From 6b336de9c5954e459df26fb40f4d6f6c10564076 Mon Sep 17 00:00:00 2001 From: DotNet Bot Date: Tue, 21 Nov 2023 22:33:44 +0000 Subject: [PATCH 036/391] [internal/release/8.0] Update dependencies from dnceng/internal/dotnet-efcore --- NuGet.config | 4 ++-- eng/Version.Details.xml | 16 ++++++++-------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/NuGet.config b/NuGet.config index feb139cd01dd..7e6e630350ba 100644 --- a/NuGet.config +++ b/NuGet.config @@ -6,7 +6,7 @@ - + @@ -30,7 +30,7 @@ - + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 84b61277087e..5da6522fc353 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -11,35 +11,35 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - d10efd625ca7cad72ec6b81b3dd8295f94ef127a + 446aaf1f1fb56a133ccfce34a1ecf3c80e91f5a9 https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - d10efd625ca7cad72ec6b81b3dd8295f94ef127a + 446aaf1f1fb56a133ccfce34a1ecf3c80e91f5a9 https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - d10efd625ca7cad72ec6b81b3dd8295f94ef127a + 446aaf1f1fb56a133ccfce34a1ecf3c80e91f5a9 https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - d10efd625ca7cad72ec6b81b3dd8295f94ef127a + 446aaf1f1fb56a133ccfce34a1ecf3c80e91f5a9 https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - d10efd625ca7cad72ec6b81b3dd8295f94ef127a + 446aaf1f1fb56a133ccfce34a1ecf3c80e91f5a9 https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - d10efd625ca7cad72ec6b81b3dd8295f94ef127a + 446aaf1f1fb56a133ccfce34a1ecf3c80e91f5a9 https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - d10efd625ca7cad72ec6b81b3dd8295f94ef127a + 446aaf1f1fb56a133ccfce34a1ecf3c80e91f5a9 https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - d10efd625ca7cad72ec6b81b3dd8295f94ef127a + 446aaf1f1fb56a133ccfce34a1ecf3c80e91f5a9 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime From 543ea47243358b2cd4b49dc0940b48101a99d20b Mon Sep 17 00:00:00 2001 From: DotNet Bot Date: Wed, 22 Nov 2023 03:30:29 +0000 Subject: [PATCH 037/391] [internal/release/8.0] Update dependencies from dnceng/internal/dotnet-runtime --- NuGet.config | 4 ++-- eng/Version.Details.xml | 26 +++++++++++++------------- eng/Versions.props | 6 +++--- 3 files changed, 18 insertions(+), 18 deletions(-) diff --git a/NuGet.config b/NuGet.config index 7e6e630350ba..c302a3d81672 100644 --- a/NuGet.config +++ b/NuGet.config @@ -9,7 +9,7 @@ - + @@ -33,7 +33,7 @@ - + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 5da6522fc353..3b84fb49b17c 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -55,7 +55,7 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - f83afe4ed0000ee202b2528bc5803a94130a0f4c + 44e7fd20f344640e7adb2e609e11febc6640b1cf https://dev.azure.com/dnceng/internal/_git/dotnet-runtime @@ -179,15 +179,15 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - f83afe4ed0000ee202b2528bc5803a94130a0f4c + 44e7fd20f344640e7adb2e609e11febc6640b1cf https://dev.azure.com/dnceng/internal/_git/dotnet-runtime 5535e31a712343a63f5d7d796cd874e563e5ac14 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - f83afe4ed0000ee202b2528bc5803a94130a0f4c + 44e7fd20f344640e7adb2e609e11febc6640b1cf https://github.com/dotnet/source-build-externals @@ -277,15 +277,15 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - f83afe4ed0000ee202b2528bc5803a94130a0f4c + 44e7fd20f344640e7adb2e609e11febc6640b1cf https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - f83afe4ed0000ee202b2528bc5803a94130a0f4c + 44e7fd20f344640e7adb2e609e11febc6640b1cf https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - f83afe4ed0000ee202b2528bc5803a94130a0f4c + 44e7fd20f344640e7adb2e609e11febc6640b1cf https://dev.azure.com/dnceng/internal/_git/dotnet-runtime @@ -318,20 +318,20 @@ --> https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - f83afe4ed0000ee202b2528bc5803a94130a0f4c + 44e7fd20f344640e7adb2e609e11febc6640b1cf - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - f83afe4ed0000ee202b2528bc5803a94130a0f4c + 44e7fd20f344640e7adb2e609e11febc6640b1cf https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - f83afe4ed0000ee202b2528bc5803a94130a0f4c + 44e7fd20f344640e7adb2e609e11febc6640b1cf - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - f83afe4ed0000ee202b2528bc5803a94130a0f4c + 44e7fd20f344640e7adb2e609e11febc6640b1cf https://github.com/dotnet/xdt diff --git a/eng/Versions.props b/eng/Versions.props index 6452ad6d069a..142054496923 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -71,7 +71,7 @@ 8.0.1 8.0.1 8.0.1 - 8.0.1-servicing.23570.18 + 8.0.1-servicing.23571.15 8.0.0 8.0.0 8.0.0 @@ -108,7 +108,7 @@ 8.0.0 8.0.1 8.0.0 - 8.0.1-servicing.23570.18 + 8.0.1-servicing.23571.15 8.0.0 8.0.0 8.0.0 @@ -128,7 +128,7 @@ 8.0.0 8.0.0 8.0.0 - 8.0.1-servicing.23570.18 + 8.0.1-servicing.23571.15 8.0.0-rtm.23531.3 8.0.0 From f33d7ae1a16b5c55bfc3b0a49158fe163cd16517 Mon Sep 17 00:00:00 2001 From: DotNet Bot Date: Wed, 22 Nov 2023 05:22:29 +0000 Subject: [PATCH 038/391] [internal/release/8.0] Update dependencies from dnceng/internal/dotnet-efcore --- NuGet.config | 4 ++-- eng/Version.Details.xml | 16 ++++++++-------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/NuGet.config b/NuGet.config index c302a3d81672..1904af60a781 100644 --- a/NuGet.config +++ b/NuGet.config @@ -6,7 +6,7 @@ - + @@ -30,7 +30,7 @@ - + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 3b84fb49b17c..8d1ce83e5904 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -11,35 +11,35 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 446aaf1f1fb56a133ccfce34a1ecf3c80e91f5a9 + 5c784d9615c7fcca71402d020997df7c3ef3cc57 https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 446aaf1f1fb56a133ccfce34a1ecf3c80e91f5a9 + 5c784d9615c7fcca71402d020997df7c3ef3cc57 https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 446aaf1f1fb56a133ccfce34a1ecf3c80e91f5a9 + 5c784d9615c7fcca71402d020997df7c3ef3cc57 https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 446aaf1f1fb56a133ccfce34a1ecf3c80e91f5a9 + 5c784d9615c7fcca71402d020997df7c3ef3cc57 https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 446aaf1f1fb56a133ccfce34a1ecf3c80e91f5a9 + 5c784d9615c7fcca71402d020997df7c3ef3cc57 https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 446aaf1f1fb56a133ccfce34a1ecf3c80e91f5a9 + 5c784d9615c7fcca71402d020997df7c3ef3cc57 https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 446aaf1f1fb56a133ccfce34a1ecf3c80e91f5a9 + 5c784d9615c7fcca71402d020997df7c3ef3cc57 https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 446aaf1f1fb56a133ccfce34a1ecf3c80e91f5a9 + 5c784d9615c7fcca71402d020997df7c3ef3cc57 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime From c4c95b318166b1bacdd02c6b55126f070cab1f75 Mon Sep 17 00:00:00 2001 From: DotNet Bot Date: Wed, 22 Nov 2023 08:08:06 +0000 Subject: [PATCH 039/391] [internal/release/8.0] Update dependencies from dnceng/internal/dotnet-runtime --- NuGet.config | 4 ++-- eng/Version.Details.xml | 26 +++++++++++++------------- eng/Versions.props | 6 +++--- 3 files changed, 18 insertions(+), 18 deletions(-) diff --git a/NuGet.config b/NuGet.config index 1904af60a781..20636b5f3b2b 100644 --- a/NuGet.config +++ b/NuGet.config @@ -9,7 +9,7 @@ - + @@ -33,7 +33,7 @@ - + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 8d1ce83e5904..54db56bba3c5 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -55,7 +55,7 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 44e7fd20f344640e7adb2e609e11febc6640b1cf + 21b90573de7d6e0c88acdd25dc116b6729fd65a7 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime @@ -179,15 +179,15 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 44e7fd20f344640e7adb2e609e11febc6640b1cf + 21b90573de7d6e0c88acdd25dc116b6729fd65a7 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime 5535e31a712343a63f5d7d796cd874e563e5ac14 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 44e7fd20f344640e7adb2e609e11febc6640b1cf + 21b90573de7d6e0c88acdd25dc116b6729fd65a7 https://github.com/dotnet/source-build-externals @@ -277,15 +277,15 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 44e7fd20f344640e7adb2e609e11febc6640b1cf + 21b90573de7d6e0c88acdd25dc116b6729fd65a7 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 44e7fd20f344640e7adb2e609e11febc6640b1cf + 21b90573de7d6e0c88acdd25dc116b6729fd65a7 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 44e7fd20f344640e7adb2e609e11febc6640b1cf + 21b90573de7d6e0c88acdd25dc116b6729fd65a7 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime @@ -318,20 +318,20 @@ --> https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 44e7fd20f344640e7adb2e609e11febc6640b1cf + 21b90573de7d6e0c88acdd25dc116b6729fd65a7 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 44e7fd20f344640e7adb2e609e11febc6640b1cf + 21b90573de7d6e0c88acdd25dc116b6729fd65a7 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 44e7fd20f344640e7adb2e609e11febc6640b1cf + 21b90573de7d6e0c88acdd25dc116b6729fd65a7 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 44e7fd20f344640e7adb2e609e11febc6640b1cf + 21b90573de7d6e0c88acdd25dc116b6729fd65a7 https://github.com/dotnet/xdt diff --git a/eng/Versions.props b/eng/Versions.props index 142054496923..e43b2d2e4f77 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -71,7 +71,7 @@ 8.0.1 8.0.1 8.0.1 - 8.0.1-servicing.23571.15 + 8.0.1-servicing.23571.29 8.0.0 8.0.0 8.0.0 @@ -108,7 +108,7 @@ 8.0.0 8.0.1 8.0.0 - 8.0.1-servicing.23571.15 + 8.0.1-servicing.23571.29 8.0.0 8.0.0 8.0.0 @@ -128,7 +128,7 @@ 8.0.0 8.0.0 8.0.0 - 8.0.1-servicing.23571.15 + 8.0.1-servicing.23571.29 8.0.0-rtm.23531.3 8.0.0 From cee191dff405c5e2337f79448d40be827a713e85 Mon Sep 17 00:00:00 2001 From: DotNet Bot Date: Wed, 22 Nov 2023 09:56:20 +0000 Subject: [PATCH 040/391] [internal/release/8.0] Update dependencies from dnceng/internal/dotnet-efcore --- NuGet.config | 4 ++-- eng/Version.Details.xml | 16 ++++++++-------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/NuGet.config b/NuGet.config index 20636b5f3b2b..3e2238114625 100644 --- a/NuGet.config +++ b/NuGet.config @@ -6,7 +6,7 @@ - + @@ -30,7 +30,7 @@ - + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 54db56bba3c5..42fffcc467c2 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -11,35 +11,35 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 5c784d9615c7fcca71402d020997df7c3ef3cc57 + ce50d5d190aa345678865894178fa04abbbacccf https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 5c784d9615c7fcca71402d020997df7c3ef3cc57 + ce50d5d190aa345678865894178fa04abbbacccf https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 5c784d9615c7fcca71402d020997df7c3ef3cc57 + ce50d5d190aa345678865894178fa04abbbacccf https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 5c784d9615c7fcca71402d020997df7c3ef3cc57 + ce50d5d190aa345678865894178fa04abbbacccf https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 5c784d9615c7fcca71402d020997df7c3ef3cc57 + ce50d5d190aa345678865894178fa04abbbacccf https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 5c784d9615c7fcca71402d020997df7c3ef3cc57 + ce50d5d190aa345678865894178fa04abbbacccf https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 5c784d9615c7fcca71402d020997df7c3ef3cc57 + ce50d5d190aa345678865894178fa04abbbacccf https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 5c784d9615c7fcca71402d020997df7c3ef3cc57 + ce50d5d190aa345678865894178fa04abbbacccf https://dev.azure.com/dnceng/internal/_git/dotnet-runtime From 1327853dc666be3a3b2b629421d47bb017627e2b Mon Sep 17 00:00:00 2001 From: DotNet Bot Date: Wed, 22 Nov 2023 15:04:30 +0000 Subject: [PATCH 041/391] [internal/release/8.0] Update dependencies from dnceng/internal/dotnet-efcore --- NuGet.config | 4 ++-- eng/Version.Details.xml | 16 ++++++++-------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/NuGet.config b/NuGet.config index 3e2238114625..d6ae811b59b3 100644 --- a/NuGet.config +++ b/NuGet.config @@ -6,7 +6,7 @@ - + @@ -30,7 +30,7 @@ - + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 42fffcc467c2..a1c9e15af3df 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -11,35 +11,35 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - ce50d5d190aa345678865894178fa04abbbacccf + 27d4f64af6fb9906a50ee5ee59e4e089bfae3d38 https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - ce50d5d190aa345678865894178fa04abbbacccf + 27d4f64af6fb9906a50ee5ee59e4e089bfae3d38 https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - ce50d5d190aa345678865894178fa04abbbacccf + 27d4f64af6fb9906a50ee5ee59e4e089bfae3d38 https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - ce50d5d190aa345678865894178fa04abbbacccf + 27d4f64af6fb9906a50ee5ee59e4e089bfae3d38 https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - ce50d5d190aa345678865894178fa04abbbacccf + 27d4f64af6fb9906a50ee5ee59e4e089bfae3d38 https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - ce50d5d190aa345678865894178fa04abbbacccf + 27d4f64af6fb9906a50ee5ee59e4e089bfae3d38 https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - ce50d5d190aa345678865894178fa04abbbacccf + 27d4f64af6fb9906a50ee5ee59e4e089bfae3d38 https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - ce50d5d190aa345678865894178fa04abbbacccf + 27d4f64af6fb9906a50ee5ee59e4e089bfae3d38 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime From b445dd624897a83854ad1c4a284706620f7defc9 Mon Sep 17 00:00:00 2001 From: Steve Sanderson Date: Thu, 23 Nov 2023 00:20:54 +0000 Subject: [PATCH 042/391] Support NavigateTo when enhanced nav is disabled (#52267) # Support NavigateTo when enhanced nav is disabled Makes the NavigateTo API work even if enhanced nav is disabled via config. ## Description By default, Blazor apps have either enhanced nav or an interactive router . In these default cases, the `NavigateTo` API works correctly. However there's also an obscure way to disable both of these via config. It's niche, but it's supported, so the rest of the system should work with that. Unfortunately `NavigateTo` assumes that either enhanced nav or an interactive router will be enabled and doesn't account for the case when neither is. Fixes #51636 ## Customer Impact Without this fix, anyone who uses the `ssr: { disableDomPreservation: true }` config option will be unable to use the `NavigateTo` API, as it will do nothing. This behavior isn't desirable. ## Regression? - [ ] Yes - [x] No No because existing code can't use `ssr: { disableDomPreservation: true }` as the option didn't exist prior to .NET 8. Someone else might argue that it's a regression in the sense that, if you're migrating existing code to use newer .NET 8 patterns (and are using `disableDomPreservation` for some reason, even though you wouldn't normally), your existing uses of `NavigateTo` could stop working. That's not how we normally define "regression" but I'm trying to give the fullest explanation. ## Risk - [ ] High - [ ] Medium - [x] Low The fix explicitly retains the old code path if you're coming from .NET 7 or earlier (i.e., if you are using `blazor.webassembly/server/webview.js`. The fixed code path is only applied in `blazor.web.js`, so it should not affect existing apps that are simply moving to the `net8.0` TFM without other code changes. ## Verification - [x] Manual (required) - [x] Automated ## Packaging changes reviewed? - [ ] Yes - [ ] No - [x] N/A --- .../Web.JS/dist/Release/blazor.server.js | 2 +- .../Web.JS/dist/Release/blazor.web.js | 2 +- .../Web.JS/dist/Release/blazor.webview.js | 2 +- src/Components/Web.JS/src/Boot.Web.ts | 1 + src/Components/Web.JS/src/GlobalExports.ts | 1 + .../Web.JS/src/Services/NavigationManager.ts | 38 ++++++++++++++----- .../EnhancedNavigationTest.cs | 12 +----- .../EnhancedNavigationTestUtil.cs | 13 +++++++ .../ServerRenderingTests/InteractivityTest.cs | 24 ++++++++++++ .../Interactivity/InteractiveNavigateTo.razor | 18 +++++++++ .../Shared/EnhancedNavLayout.razor | 4 +- 11 files changed, 92 insertions(+), 25 deletions(-) create mode 100644 src/Components/test/testassets/Components.TestServer/RazorComponents/Pages/Interactivity/InteractiveNavigateTo.razor diff --git a/src/Components/Web.JS/dist/Release/blazor.server.js b/src/Components/Web.JS/dist/Release/blazor.server.js index b59d1c4cf0f4..ba09c85d88d1 100644 --- a/src/Components/Web.JS/dist/Release/blazor.server.js +++ b/src/Components/Web.JS/dist/Release/blazor.server.js @@ -1 +1 @@ -(()=>{var e={778:()=>{},77:()=>{},203:()=>{},200:()=>{},628:()=>{},321:()=>{}},t={};function n(r){var o=t[r];if(void 0!==o)return o.exports;var s=t[r]={exports:{}};return e[r](s,s.exports,n),s.exports}n.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),(()=>{"use strict";var e,t,r;!function(e){const t=[],n="__jsObjectId",r="__dotNetObject",o="__byte[]",s="__dotNetStream",i="__jsStreamReferenceLength";let a,c;class l{constructor(e){this._jsObject=e,this._cachedFunctions=new Map}findFunction(e){const t=this._cachedFunctions.get(e);if(t)return t;let n,r=this._jsObject;if(e.split(".").forEach((t=>{if(!(t in r))throw new Error(`Could not find '${e}' ('${t}' was undefined).`);n=r,r=r[t]})),r instanceof Function)return r=r.bind(n),this._cachedFunctions.set(e,r),r;throw new Error(`The value '${e}' is not a function.`)}getWrappedObject(){return this._jsObject}}const h={0:new l(window)};h[0]._cachedFunctions.set("import",(e=>("string"==typeof e&&e.startsWith("./")&&(e=new URL(e.substr(2),document.baseURI).toString()),import(e))));let d,u=1;function p(e){t.push(e)}function f(e){if(e&&"object"==typeof e){h[u]=new l(e);const t={[n]:u};return u++,t}throw new Error(`Cannot create a JSObjectReference from the value '${e}'.`)}function g(e){let t=-1;if(e instanceof ArrayBuffer&&(e=new Uint8Array(e)),e instanceof Blob)t=e.size;else{if(!(e.buffer instanceof ArrayBuffer))throw new Error("Supplied value is not a typed array or blob.");if(void 0===e.byteLength)throw new Error(`Cannot create a JSStreamReference from the value '${e}' as it doesn't have a byteLength.`);t=e.byteLength}const r={[i]:t};try{const t=f(e);r[n]=t[n]}catch(t){throw new Error(`Cannot create a JSStreamReference from the value '${e}'.`)}return r}function m(e,n){c=e;const r=n?JSON.parse(n,((e,n)=>t.reduce(((t,n)=>n(e,t)),n))):null;return c=void 0,r}function v(){if(void 0===a)throw new Error("No call dispatcher has been set.");if(null===a)throw new Error("There are multiple .NET runtimes present, so a default dispatcher could not be resolved. Use DotNetObject to invoke .NET instance methods.");return a}e.attachDispatcher=function(e){const t=new y(e);return void 0===a?a=t:a&&(a=null),t},e.attachReviver=p,e.invokeMethod=function(e,t,...n){return v().invokeDotNetStaticMethod(e,t,...n)},e.invokeMethodAsync=function(e,t,...n){return v().invokeDotNetStaticMethodAsync(e,t,...n)},e.createJSObjectReference=f,e.createJSStreamReference=g,e.disposeJSObjectReference=function(e){const t=e&&e[n];"number"==typeof t&&b(t)},function(e){e[e.Default=0]="Default",e[e.JSObjectReference=1]="JSObjectReference",e[e.JSStreamReference=2]="JSStreamReference",e[e.JSVoidResult=3]="JSVoidResult"}(d=e.JSCallResultType||(e.JSCallResultType={}));class y{constructor(e){this._dotNetCallDispatcher=e,this._byteArraysToBeRevived=new Map,this._pendingDotNetToJSStreams=new Map,this._pendingAsyncCalls={},this._nextAsyncCallId=1}getDotNetCallDispatcher(){return this._dotNetCallDispatcher}invokeJSFromDotNet(e,t,n,r){const o=m(this,t),s=I(_(e,r)(...o||[]),n);return null==s?null:T(this,s)}beginInvokeJSFromDotNet(e,t,n,r,o){const s=new Promise((e=>{const r=m(this,n);e(_(t,o)(...r||[]))}));e&&s.then((t=>T(this,[e,!0,I(t,r)]))).then((t=>this._dotNetCallDispatcher.endInvokeJSFromDotNet(e,!0,t)),(t=>this._dotNetCallDispatcher.endInvokeJSFromDotNet(e,!1,JSON.stringify([e,!1,w(t)]))))}endInvokeDotNetFromJS(e,t,n){const r=t?m(this,n):new Error(n);this.completePendingCall(parseInt(e,10),t,r)}invokeDotNetStaticMethod(e,t,...n){return this.invokeDotNetMethod(e,t,null,n)}invokeDotNetStaticMethodAsync(e,t,...n){return this.invokeDotNetMethodAsync(e,t,null,n)}invokeDotNetMethod(e,t,n,r){if(this._dotNetCallDispatcher.invokeDotNetFromJS){const o=T(this,r),s=this._dotNetCallDispatcher.invokeDotNetFromJS(e,t,n,o);return s?m(this,s):null}throw new Error("The current dispatcher does not support synchronous calls from JS to .NET. Use invokeDotNetMethodAsync instead.")}invokeDotNetMethodAsync(e,t,n,r){if(e&&n)throw new Error(`For instance method calls, assemblyName should be null. Received '${e}'.`);const o=this._nextAsyncCallId++,s=new Promise(((e,t)=>{this._pendingAsyncCalls[o]={resolve:e,reject:t}}));try{const s=T(this,r);this._dotNetCallDispatcher.beginInvokeDotNetFromJS(o,e,t,n,s)}catch(e){this.completePendingCall(o,!1,e)}return s}receiveByteArray(e,t){this._byteArraysToBeRevived.set(e,t)}processByteArray(e){const t=this._byteArraysToBeRevived.get(e);return t?(this._byteArraysToBeRevived.delete(e),t):null}supplyDotNetStream(e,t){if(this._pendingDotNetToJSStreams.has(e)){const n=this._pendingDotNetToJSStreams.get(e);this._pendingDotNetToJSStreams.delete(e),n.resolve(t)}else{const n=new C;n.resolve(t),this._pendingDotNetToJSStreams.set(e,n)}}getDotNetStreamPromise(e){let t;if(this._pendingDotNetToJSStreams.has(e))t=this._pendingDotNetToJSStreams.get(e).streamPromise,this._pendingDotNetToJSStreams.delete(e);else{const n=new C;this._pendingDotNetToJSStreams.set(e,n),t=n.streamPromise}return t}completePendingCall(e,t,n){if(!this._pendingAsyncCalls.hasOwnProperty(e))throw new Error(`There is no pending async call with ID ${e}.`);const r=this._pendingAsyncCalls[e];delete this._pendingAsyncCalls[e],t?r.resolve(n):r.reject(n)}}function w(e){return e instanceof Error?`${e.message}\n${e.stack}`:e?e.toString():"null"}function _(e,t){const n=h[t];if(n)return n.findFunction(e);throw new Error(`JS object instance with ID ${t} does not exist (has it been disposed?).`)}function b(e){delete h[e]}e.findJSFunction=_,e.disposeJSObjectReferenceById=b;class S{constructor(e,t){this._id=e,this._callDispatcher=t}invokeMethod(e,...t){return this._callDispatcher.invokeDotNetMethod(null,e,this._id,t)}invokeMethodAsync(e,...t){return this._callDispatcher.invokeDotNetMethodAsync(null,e,this._id,t)}dispose(){this._callDispatcher.invokeDotNetMethodAsync(null,"__Dispose",this._id,null).catch((e=>console.error(e)))}serializeAsArg(){return{[r]:this._id}}}e.DotNetObject=S,p((function(e,t){if(t&&"object"==typeof t){if(t.hasOwnProperty(r))return new S(t[r],c);if(t.hasOwnProperty(n)){const e=t[n],r=h[e];if(r)return r.getWrappedObject();throw new Error(`JS object instance with Id '${e}' does not exist. It may have been disposed.`)}if(t.hasOwnProperty(o)){const e=t[o],n=c.processByteArray(e);if(void 0===n)throw new Error(`Byte array index '${e}' does not exist.`);return n}if(t.hasOwnProperty(s)){const e=t[s],n=c.getDotNetStreamPromise(e);return new E(n)}}return t}));class E{constructor(e){this._streamPromise=e}stream(){return this._streamPromise}async arrayBuffer(){return new Response(await this.stream()).arrayBuffer()}}class C{constructor(){this.streamPromise=new Promise(((e,t)=>{this.resolve=e,this.reject=t}))}}function I(e,t){switch(t){case d.Default:return e;case d.JSObjectReference:return f(e);case d.JSStreamReference:return g(e);case d.JSVoidResult:return null;default:throw new Error(`Invalid JS call result type '${t}'.`)}}let k=0;function T(e,t){k=0,c=e;const n=JSON.stringify(t,D);return c=void 0,n}function D(e,t){if(t instanceof S)return t.serializeAsArg();if(t instanceof Uint8Array){c.getDotNetCallDispatcher().sendByteArray(k,t);const e={[o]:k};return k++,e}return t}}(e||(e={})),function(e){e[e.prependFrame=1]="prependFrame",e[e.removeFrame=2]="removeFrame",e[e.setAttribute=3]="setAttribute",e[e.removeAttribute=4]="removeAttribute",e[e.updateText=5]="updateText",e[e.stepIn=6]="stepIn",e[e.stepOut=7]="stepOut",e[e.updateMarkup=8]="updateMarkup",e[e.permutationListEntry=9]="permutationListEntry",e[e.permutationListEnd=10]="permutationListEnd"}(t||(t={})),function(e){e[e.element=1]="element",e[e.text=2]="text",e[e.attribute=3]="attribute",e[e.component=4]="component",e[e.region=5]="region",e[e.elementReferenceCapture=6]="elementReferenceCapture",e[e.markup=8]="markup",e[e.namedEvent=10]="namedEvent"}(r||(r={}));class o{constructor(e,t){this.componentId=e,this.fieldValue=t}static fromEvent(e,t){const n=t.target;if(n instanceof Element){const t=function(e){return e instanceof HTMLInputElement?e.type&&"checkbox"===e.type.toLowerCase()?{value:e.checked}:{value:e.value}:e instanceof HTMLSelectElement||e instanceof HTMLTextAreaElement?{value:e.value}:null}(n);if(t)return new o(e,t.value)}return null}}const s=new Map,i=new Map,a=[];function c(e){return s.get(e)}function l(e){const t=s.get(e);return(null==t?void 0:t.browserEventName)||e}function h(e,t){e.forEach((e=>s.set(e,t)))}function d(e){const t=[];for(let n=0;ne.selected)).map((e=>e.value))}}{const e=function(e){return!!e&&"INPUT"===e.tagName&&"checkbox"===e.getAttribute("type")}(t);return{value:e?!!t.checked:t.value}}}}),h(["copy","cut","paste"],{createEventArgs:e=>({type:e.type})}),h(["drag","dragend","dragenter","dragleave","dragover","dragstart","drop"],{createEventArgs:e=>{return{...u(t=e),dataTransfer:t.dataTransfer?{dropEffect:t.dataTransfer.dropEffect,effectAllowed:t.dataTransfer.effectAllowed,files:Array.from(t.dataTransfer.files).map((e=>e.name)),items:Array.from(t.dataTransfer.items).map((e=>({kind:e.kind,type:e.type}))),types:t.dataTransfer.types}:null};var t}}),h(["focus","blur","focusin","focusout"],{createEventArgs:e=>({type:e.type})}),h(["keydown","keyup","keypress"],{createEventArgs:e=>{return{key:(t=e).key,code:t.code,location:t.location,repeat:t.repeat,ctrlKey:t.ctrlKey,shiftKey:t.shiftKey,altKey:t.altKey,metaKey:t.metaKey,type:t.type};var t}}),h(["contextmenu","click","mouseover","mouseout","mousemove","mousedown","mouseup","mouseleave","mouseenter","dblclick"],{createEventArgs:e=>u(e)}),h(["error"],{createEventArgs:e=>{return{message:(t=e).message,filename:t.filename,lineno:t.lineno,colno:t.colno,type:t.type};var t}}),h(["loadstart","timeout","abort","load","loadend","progress"],{createEventArgs:e=>{return{lengthComputable:(t=e).lengthComputable,loaded:t.loaded,total:t.total,type:t.type};var t}}),h(["touchcancel","touchend","touchmove","touchenter","touchleave","touchstart"],{createEventArgs:e=>{return{detail:(t=e).detail,touches:d(t.touches),targetTouches:d(t.targetTouches),changedTouches:d(t.changedTouches),ctrlKey:t.ctrlKey,shiftKey:t.shiftKey,altKey:t.altKey,metaKey:t.metaKey,type:t.type};var t}}),h(["gotpointercapture","lostpointercapture","pointercancel","pointerdown","pointerenter","pointerleave","pointermove","pointerout","pointerover","pointerup"],{createEventArgs:e=>{return{...u(t=e),pointerId:t.pointerId,width:t.width,height:t.height,pressure:t.pressure,tiltX:t.tiltX,tiltY:t.tiltY,pointerType:t.pointerType,isPrimary:t.isPrimary};var t}}),h(["wheel","mousewheel"],{createEventArgs:e=>{return{...u(t=e),deltaX:t.deltaX,deltaY:t.deltaY,deltaZ:t.deltaZ,deltaMode:t.deltaMode};var t}}),h(["cancel","close","toggle"],{createEventArgs:()=>({})});const p=["date","datetime-local","month","time","week"],f=new Map;let g,m,v=0;const y={async add(e,t,n){if(!n)throw new Error("initialParameters must be an object, even if empty.");const r="__bl-dynamic-root:"+(++v).toString();f.set(r,e);const o=await b().invokeMethodAsync("AddRootComponent",t,r),s=new _(o,m[t]);return await s.setParameters(n),s}};class w{invoke(e){return this._callback(e)}setCallback(t){this._selfJSObjectReference||(this._selfJSObjectReference=e.createJSObjectReference(this)),this._callback=t}getJSObjectReference(){return this._selfJSObjectReference}dispose(){this._selfJSObjectReference&&e.disposeJSObjectReference(this._selfJSObjectReference)}}class _{constructor(e,t){this._jsEventCallbackWrappers=new Map,this._componentId=e;for(const e of t)"eventcallback"===e.type&&this._jsEventCallbackWrappers.set(e.name.toLowerCase(),new w)}setParameters(e){const t={},n=Object.entries(e||{}),r=n.length;for(const[e,r]of n){const n=this._jsEventCallbackWrappers.get(e.toLowerCase());n&&r?(n.setCallback(r),t[e]=n.getJSObjectReference()):t[e]=r}return b().invokeMethodAsync("SetRootComponentParameters",this._componentId,r,t)}async dispose(){if(null!==this._componentId){await b().invokeMethodAsync("RemoveRootComponent",this._componentId),this._componentId=null;for(const e of this._jsEventCallbackWrappers.values())e.dispose()}}}function b(){if(!g)throw new Error("Dynamic root components have not been enabled in this application.");return g}const S=new Map,E=[],C=new Map;function I(t,n,r,o){var s,i;if(S.has(t))throw new Error(`Interop methods are already registered for renderer ${t}`);S.set(t,n),r&&o&&Object.keys(r).length>0&&function(t,n,r){if(g)throw new Error("Dynamic root components have already been enabled.");g=t,m=n;for(const[t,o]of Object.entries(r)){const r=e.findJSFunction(t,0);for(const e of o)r(e,n[e])}}(T(t),r,o),null===(i=null===(s=C.get(t))||void 0===s?void 0:s[0])||void 0===i||i.call(s),function(e){for(const t of E)t(e)}(t)}function k(e,t,n){return D(e,t.eventHandlerId,(()=>T(e).invokeMethodAsync("DispatchEventAsync",t,n)))}function T(e){const t=S.get(e);if(!t)throw new Error(`No interop methods are registered for renderer ${e}`);return t}let D=(e,t,n)=>n();const R=M(["abort","blur","cancel","canplay","canplaythrough","change","close","cuechange","durationchange","emptied","ended","error","focus","load","loadeddata","loadedmetadata","loadend","loadstart","mouseenter","mouseleave","pointerenter","pointerleave","pause","play","playing","progress","ratechange","reset","scroll","seeked","seeking","stalled","submit","suspend","timeupdate","toggle","unload","volumechange","waiting","DOMNodeInsertedIntoDocument","DOMNodeRemovedFromDocument"]),x={submit:!0},A=M(["click","dblclick","mousedown","mousemove","mouseup"]);class P{constructor(e){this.browserRendererId=e,this.afterClickCallbacks=[];const t=++P.nextEventDelegatorId;this.eventsCollectionKey=`_blazorEvents_${t}`,this.eventInfoStore=new N(this.onGlobalEvent.bind(this))}setListener(e,t,n,r){const o=this.getEventHandlerInfosForElement(e,!0),s=o.getHandler(t);if(s)this.eventInfoStore.update(s.eventHandlerId,n);else{const s={element:e,eventName:t,eventHandlerId:n,renderingComponentId:r};this.eventInfoStore.add(s),o.setHandler(t,s)}}getHandler(e){return this.eventInfoStore.get(e)}removeListener(e){const t=this.eventInfoStore.remove(e);if(t){const e=t.element,n=this.getEventHandlerInfosForElement(e,!1);n&&n.removeHandler(t.eventName)}}notifyAfterClick(e){this.afterClickCallbacks.push(e),this.eventInfoStore.addGlobalListener("click")}setStopPropagation(e,t,n){this.getEventHandlerInfosForElement(e,!0).stopPropagation(t,n)}setPreventDefault(e,t,n){this.getEventHandlerInfosForElement(e,!0).preventDefault(t,n)}onGlobalEvent(e){if(!(e.target instanceof Element))return;this.dispatchGlobalEventToAllElements(e.type,e);const t=(n=e.type,i.get(n));var n;t&&t.forEach((t=>this.dispatchGlobalEventToAllElements(t,e))),"click"===e.type&&this.afterClickCallbacks.forEach((t=>t(e)))}dispatchGlobalEventToAllElements(e,t){const n=t.composedPath();let r=n.shift(),s=null,i=!1;const a=Object.prototype.hasOwnProperty.call(R,e);let l=!1;for(;r;){const u=r,p=this.getEventHandlerInfosForElement(u,!1);if(p){const n=p.getHandler(e);if(n&&(h=u,d=t.type,!((h instanceof HTMLButtonElement||h instanceof HTMLInputElement||h instanceof HTMLTextAreaElement||h instanceof HTMLSelectElement)&&Object.prototype.hasOwnProperty.call(A,d)&&h.disabled))){if(!i){const n=c(e);s=(null==n?void 0:n.createEventArgs)?n.createEventArgs(t):{},i=!0}Object.prototype.hasOwnProperty.call(x,t.type)&&t.preventDefault(),k(this.browserRendererId,{eventHandlerId:n.eventHandlerId,eventName:e,eventFieldInfo:o.fromEvent(n.renderingComponentId,t)},s)}p.stopPropagation(e)&&(l=!0),p.preventDefault(e)&&t.preventDefault()}r=a||l?void 0:n.shift()}var h,d}getEventHandlerInfosForElement(e,t){return Object.prototype.hasOwnProperty.call(e,this.eventsCollectionKey)?e[this.eventsCollectionKey]:t?e[this.eventsCollectionKey]=new U:null}}P.nextEventDelegatorId=0;class N{constructor(e){this.globalListener=e,this.infosByEventHandlerId={},this.countByEventName={},a.push(this.handleEventNameAliasAdded.bind(this))}add(e){if(this.infosByEventHandlerId[e.eventHandlerId])throw new Error(`Event ${e.eventHandlerId} is already tracked`);this.infosByEventHandlerId[e.eventHandlerId]=e,this.addGlobalListener(e.eventName)}get(e){return this.infosByEventHandlerId[e]}addGlobalListener(e){if(e=l(e),Object.prototype.hasOwnProperty.call(this.countByEventName,e))this.countByEventName[e]++;else{this.countByEventName[e]=1;const t=Object.prototype.hasOwnProperty.call(R,e);document.addEventListener(e,this.globalListener,t)}}update(e,t){if(Object.prototype.hasOwnProperty.call(this.infosByEventHandlerId,t))throw new Error(`Event ${t} is already tracked`);const n=this.infosByEventHandlerId[e];delete this.infosByEventHandlerId[e],n.eventHandlerId=t,this.infosByEventHandlerId[t]=n}remove(e){const t=this.infosByEventHandlerId[e];if(t){delete this.infosByEventHandlerId[e];const n=l(t.eventName);0==--this.countByEventName[n]&&(delete this.countByEventName[n],document.removeEventListener(n,this.globalListener))}return t}handleEventNameAliasAdded(e,t){if(Object.prototype.hasOwnProperty.call(this.countByEventName,e)){const n=this.countByEventName[e];delete this.countByEventName[e],document.removeEventListener(e,this.globalListener),this.addGlobalListener(t),this.countByEventName[t]+=n-1}}}class U{constructor(){this.handlers={},this.preventDefaultFlags=null,this.stopPropagationFlags=null}getHandler(e){return Object.prototype.hasOwnProperty.call(this.handlers,e)?this.handlers[e]:null}setHandler(e,t){this.handlers[e]=t}removeHandler(e){delete this.handlers[e]}preventDefault(e,t){return void 0!==t&&(this.preventDefaultFlags=this.preventDefaultFlags||{},this.preventDefaultFlags[e]=t),!!this.preventDefaultFlags&&this.preventDefaultFlags[e]}stopPropagation(e,t){return void 0!==t&&(this.stopPropagationFlags=this.stopPropagationFlags||{},this.stopPropagationFlags[e]=t),!!this.stopPropagationFlags&&this.stopPropagationFlags[e]}}function M(e){const t={};return e.forEach((e=>{t[e]=!0})),t}const B=Symbol(),L=Symbol(),$=Symbol();function O(e,t){if(B in e)return e;const n=[];if(e.childNodes.length>0){if(!t)throw new Error("New logical elements must start empty, or allowExistingContents must be true");e.childNodes.forEach((t=>{const r=O(t,!0);r[L]=e,n.push(r)}))}return e[B]=n,e}function F(e){const t=K(e);for(;t.length;)W(e,0)}function H(e,t){const n=document.createComment("!");return j(n,e,t),n}function j(e,t,n){const r=e;let o=e;if(B in e){const t=Q(r);if(t!==e){const n=new Range;n.setStartBefore(e),n.setEndAfter(t),o=n.extractContents()}}const s=z(r);if(s){const e=K(s),t=Array.prototype.indexOf.call(e,r);e.splice(t,1),delete r[L]}const i=K(t);if(n0;)W(n,0)}const r=n;r.parentNode.removeChild(r)}function z(e){return e[L]||null}function q(e,t){return K(e)[t]}function J(e){const t=Y(e);return"http://www.w3.org/2000/svg"===t.namespaceURI&&"foreignObject"!==t.tagName}function K(e){return e[B]}function V(e){const t=K(z(e));return t[Array.prototype.indexOf.call(t,e)+1]||null}function X(e,t){const n=K(e);t.forEach((e=>{e.moveRangeStart=n[e.fromSiblingIndex],e.moveRangeEnd=Q(e.moveRangeStart)})),t.forEach((t=>{const r=document.createComment("marker");t.moveToBeforeMarker=r;const o=n[t.toSiblingIndex+1];o?o.parentNode.insertBefore(r,o):G(r,e)})),t.forEach((e=>{const t=e.moveToBeforeMarker,n=t.parentNode,r=e.moveRangeStart,o=e.moveRangeEnd;let s=r;for(;s;){const e=s.nextSibling;if(n.insertBefore(s,t),s===o)break;s=e}n.removeChild(t)})),t.forEach((e=>{n[e.toSiblingIndex]=e.moveRangeStart}))}function Y(e){if(e instanceof Element||e instanceof DocumentFragment)return e;if(e instanceof Comment)return e.parentNode;throw new Error("Not a valid logical element")}function G(e,t){if(t instanceof Element||t instanceof DocumentFragment)t.appendChild(e);else{if(!(t instanceof Comment))throw new Error(`Cannot append node because the parent is not a valid logical element. Parent: ${t}`);{const n=V(t);n?n.parentNode.insertBefore(e,n):G(e,z(t))}}}function Q(e){if(e instanceof Element||e instanceof DocumentFragment)return e;const t=V(e);if(t)return t.previousSibling;{const t=z(e);return t instanceof Element||t instanceof DocumentFragment?t.lastChild:Q(t)}}function Z(e){return`_bl_${e}`}const ee="__internalId";e.attachReviver(((e,t)=>t&&"object"==typeof t&&Object.prototype.hasOwnProperty.call(t,ee)&&"string"==typeof t[ee]?function(e){const t=`[${Z(e)}]`;return document.querySelector(t)}(t[ee]):t));const te="_blazorDeferredValue";function ne(e){return"select-multiple"===e.type}function re(e,t){e.value=t||""}function oe(e,t){e instanceof HTMLSelectElement?ne(e)?function(e,t){t||(t=[]);for(let n=0;n{ke()&&function(e,t){if(0!==e.button||function(e){return e.ctrlKey||e.shiftKey||e.altKey||e.metaKey}(e))return;if(e.defaultPrevented)return;const n=function(e){const t=!window._blazorDisableComposedPath&&e.composedPath&&e.composedPath();if(t){for(let e=0;e{const t=document.createElement("script");t.textContent=e.textContent,e.getAttributeNames().forEach((n=>{t.setAttribute(n,e.getAttribute(n))})),e.parentNode.replaceChild(t,e)})),ie.content));var i;let a=0;for(;s.firstChild;)j(s.firstChild,o,a++)}applyAttribute(e,t,n,r){const o=e.frameReader,s=o.attributeName(r),i=o.attributeEventHandlerId(r);if(i){const e=fe(s);return void this.eventDelegator.setListener(n,e,i,t)}const a=o.attributeValue(r);this.setOrRemoveAttributeOrProperty(n,s,a)}insertFrameRange(e,t,n,r,o,s,i){const a=r;for(let a=s;a{je(t,e)})},enableNavigationInterception:function(e){if(void 0!==me&&me!==e)throw new Error("Only one interactive runtime may enable navigation interception at a time.");me=e},setHasLocationChangingListeners:function(e,t){const n=Ae.get(e);if(!n)throw new Error(`Renderer with ID '${e}' is not listening for navigation events`);n.hasLocationChangingEventListeners=t},endLocationChanging:function(e,t){Ne&&e===xe&&(Ne(t),Ne=null)},navigateTo:function(e,t){Be(e,t,!0)},refresh:function(e){!e&&Se()?Ee(location.href,!0):location.reload()},getBaseURI:()=>document.baseURI,getLocationHref:()=>location.href,scrollToElement:Me};function Me(e){const t=document.getElementById(e);return!!t&&(t.scrollIntoView(),!0)}function Be(e,t,n=!1){const r=Ce(e);!t.forceLoad&&be(r)?qe()?Le(r,!1,t.replaceHistoryEntry,t.historyEntryState,n):Ee(r,t.replaceHistoryEntry):function(e,t){if(location.href===e){const t=e+"?";history.replaceState(null,"",t),location.replace(e)}else t?location.replace(e):location.href=e}(e,t.replaceHistoryEntry)}async function Le(e,t,n,r=void 0,o=!1){if(Fe(),function(e){const t=e.indexOf("#");return t>-1&&location.href.replace(location.hash,"")===e.substring(0,t)}(e))return void function(e,t,n){$e(e,t,n);const r=e.indexOf("#");r!==e.length-1&&Me(e.substring(r+1))}(e,n,r);const s=ze();(o||!(null==s?void 0:s.hasLocationChangingEventListeners)||await He(e,r,t,s))&&(_e=!0,$e(e,n,r),await je(t))}function $e(e,t,n=void 0){t?history.replaceState({userState:n,_index:Re},"",e):(Re++,history.pushState({userState:n,_index:Re},"",e))}function Oe(e){return new Promise((t=>{const n=Pe;Pe=()=>{Pe=n,t()},history.go(e)}))}function Fe(){Ne&&(Ne(!1),Ne=null)}function He(e,t,n,r){return new Promise((o=>{Fe(),xe++,Ne=o,r.locationChanging(xe,e,t,n)}))}async function je(e,t){const n=null!=t?t:location.href;await Promise.all(Array.from(Ae,(async([t,r])=>{var o,s;s=t,S.has(s)&&await r.locationChanged(n,null===(o=history.state)||void 0===o?void 0:o.userState,e)})))}async function We(e){var t,n;Pe&&qe()&&await Pe(e),Re=null!==(n=null===(t=history.state)||void 0===t?void 0:t._index)&&void 0!==n?n:0}function ze(){const e=Te();if(void 0!==e)return Ae.get(e)}function qe(){return ke()||!Se()}const Je={focus:function(e,t){if(e instanceof HTMLElement)e.focus({preventScroll:t});else{if(!(e instanceof SVGElement))throw new Error("Unable to focus an invalid element.");if(!e.hasAttribute("tabindex"))throw new Error("Unable to focus an SVG element that does not have a tabindex.");e.focus({preventScroll:t})}},focusBySelector:function(e,t){const n=document.querySelector(e);n&&(n.hasAttribute("tabindex")||(n.tabIndex=-1),n.focus({preventScroll:!0}))}},Ke={init:function(e,t,n,r=50){const o=Xe(t);(o||document.documentElement).style.overflowAnchor="none";const s=document.createRange();u(n.parentElement)&&(t.style.display="table-row",n.style.display="table-row");const i=new IntersectionObserver((function(r){r.forEach((r=>{var o;if(!r.isIntersecting)return;s.setStartAfter(t),s.setEndBefore(n);const i=s.getBoundingClientRect().height,a=null===(o=r.rootBounds)||void 0===o?void 0:o.height;r.target===t?e.invokeMethodAsync("OnSpacerBeforeVisible",r.intersectionRect.top-r.boundingClientRect.top,i,a):r.target===n&&n.offsetHeight>0&&e.invokeMethodAsync("OnSpacerAfterVisible",r.boundingClientRect.bottom-r.intersectionRect.bottom,i,a)}))}),{root:o,rootMargin:`${r}px`});i.observe(t),i.observe(n);const a=d(t),c=d(n),{observersByDotNetObjectId:l,id:h}=Ye(e);function d(e){const t={attributes:!0},n=new MutationObserver(((n,r)=>{u(e.parentElement)&&(r.disconnect(),e.style.display="table-row",r.observe(e,t)),i.unobserve(e),i.observe(e)}));return n.observe(e,t),n}function u(e){return null!==e&&(e instanceof HTMLTableElement&&""===e.style.display||"table"===e.style.display||e instanceof HTMLTableSectionElement&&""===e.style.display||"table-row-group"===e.style.display)}l[h]={intersectionObserver:i,mutationObserverBefore:a,mutationObserverAfter:c}},dispose:function(e){const{observersByDotNetObjectId:t,id:n}=Ye(e),r=t[n];r&&(r.intersectionObserver.disconnect(),r.mutationObserverBefore.disconnect(),r.mutationObserverAfter.disconnect(),e.dispose(),delete t[n])}},Ve=Symbol();function Xe(e){return e&&e!==document.body&&e!==document.documentElement?"visible"!==getComputedStyle(e).overflowY?e:Xe(e.parentElement):null}function Ye(e){var t;const n=e._callDispatcher,r=e._id;return null!==(t=n[Ve])&&void 0!==t||(n[Ve]={}),{observersByDotNetObjectId:n[Ve],id:r}}const Ge={getAndRemoveExistingTitle:function(){var e;const t=document.head?document.head.getElementsByTagName("title"):[];if(0===t.length)return null;let n=null;for(let r=t.length-1;r>=0;r--){const o=t[r],s=o.previousSibling;s instanceof Comment&&null!==z(s)||(null===n&&(n=o.textContent),null===(e=o.parentNode)||void 0===e||e.removeChild(o))}return n}},Qe={init:function(e,t){t._blazorInputFileNextFileId=0,t.addEventListener("click",(function(){t.value=""})),t.addEventListener("change",(function(){t._blazorFilesById={};const n=Array.prototype.map.call(t.files,(function(e){const n={id:++t._blazorInputFileNextFileId,lastModified:new Date(e.lastModified).toISOString(),name:e.name,size:e.size,contentType:e.type,readPromise:void 0,arrayBuffer:void 0,blob:e};return t._blazorFilesById[n.id]=n,n}));e.invokeMethodAsync("NotifyChange",n)}))},toImageFile:async function(e,t,n,r,o){const s=Ze(e,t),i=await new Promise((function(e){const t=new Image;t.onload=function(){URL.revokeObjectURL(t.src),e(t)},t.onerror=function(){t.onerror=null,URL.revokeObjectURL(t.src)},t.src=URL.createObjectURL(s.blob)})),a=await new Promise((function(e){var t;const s=Math.min(1,r/i.width),a=Math.min(1,o/i.height),c=Math.min(s,a),l=document.createElement("canvas");l.width=Math.round(i.width*c),l.height=Math.round(i.height*c),null===(t=l.getContext("2d"))||void 0===t||t.drawImage(i,0,0,l.width,l.height),l.toBlob(e,n)})),c={id:++e._blazorInputFileNextFileId,lastModified:s.lastModified,name:s.name,size:(null==a?void 0:a.size)||0,contentType:n,blob:a||s.blob};return e._blazorFilesById[c.id]=c,c},readFileData:async function(e,t){return Ze(e,t).blob}};function Ze(e,t){const n=e._blazorFilesById[t];if(!n)throw new Error(`There is no file with ID ${t}. The file list may have changed. See https://aka.ms/aspnet/blazor-input-file-multiple-selections.`);return n}const et=new Set,tt={enableNavigationPrompt:function(e){0===et.size&&window.addEventListener("beforeunload",nt),et.add(e)},disableNavigationPrompt:function(e){et.delete(e),0===et.size&&window.removeEventListener("beforeunload",nt)}};function nt(e){e.preventDefault(),e.returnValue=!0}async function rt(e,t,n){return e instanceof Blob?await async function(e,t,n){const r=e.slice(t,t+n),o=await r.arrayBuffer();return new Uint8Array(o)}(e,t,n):function(e,t,n){return new Uint8Array(e.buffer,e.byteOffset+t,n)}(e,t,n)}new Map;const ot={navigateTo:function(e,t,n=!1){Be(e,t instanceof Object?t:{forceLoad:t,replaceHistoryEntry:n})},registerCustomEventType:function(e,t){if(!t)throw new Error("The options parameter is required.");if(s.has(e))throw new Error(`The event '${e}' is already registered.`);if(t.browserEventName){const n=i.get(t.browserEventName);n?n.push(e):i.set(t.browserEventName,[e]),a.forEach((n=>n(e,t.browserEventName)))}s.set(e,t)},rootComponents:y,runtime:{},_internal:{navigationManager:Ue,domWrapper:Je,Virtualize:Ke,PageTitle:Ge,InputFile:Qe,NavigationLock:tt,getJSDataStreamChunk:rt,attachWebRendererInterop:I}};var st;function it(e){const t={...at,...e};return e&&e.reconnectionOptions&&(t.reconnectionOptions={...at.reconnectionOptions,...e.reconnectionOptions}),t}window.Blazor=ot,function(e){e[e.Trace=0]="Trace",e[e.Debug=1]="Debug",e[e.Information=2]="Information",e[e.Warning=3]="Warning",e[e.Error=4]="Error",e[e.Critical=5]="Critical",e[e.None=6]="None"}(st||(st={}));const at={configureSignalR:e=>{},logLevel:st.Warning,initializers:void 0,circuitHandlers:[],reconnectionOptions:{maxRetries:8,retryIntervalMilliseconds:2e4,dialogId:"components-reconnect-modal"}};class ct{log(e,t){}}ct.instance=new ct;class lt{constructor(e){this.minLevel=e}log(e,t){if(e>=this.minLevel){const n=`[${(new Date).toISOString()}] ${st[e]}: ${t}`;switch(e){case st.Critical:case st.Error:console.error(n);break;case st.Warning:console.warn(n);break;case st.Information:console.info(n);break;default:console.log(n)}}}}const ht=/^\s*Blazor-Server-Component-State:(?[a-zA-Z0-9+/=]+)$/;function dt(e,t,n="state"){var r;if(e.nodeType===Node.COMMENT_NODE){const o=e.textContent||"",s=t.exec(o),i=s&&s.groups&&s.groups[n];return i&&(null===(r=e.parentNode)||void 0===r||r.removeChild(e)),i}if(!e.hasChildNodes())return;const o=e.childNodes;for(let e=0;e.*)$/);function ft(e,t){const n=e.currentElement;var r,o,s;if(n&&n.nodeType===Node.COMMENT_NODE&&n.textContent){const i=pt.exec(n.textContent),a=i&&i.groups&&i.groups.descriptor;if(!a)return;!function(e){if(e.parentNode instanceof Document)throw new Error("Root components cannot be marked as interactive. The element must be rendered statically so that scripts are not evaluated multiple times.")}(n);try{const i=function(e){const t=JSON.parse(e),{type:n}=t;if("server"!==n&&"webassembly"!==n&&"auto"!==n)throw new Error(`Invalid component type '${n}'.`);return t}(a),c=function(e,t,n){const{prerenderId:r}=e;if(r){for(;n.next()&&n.currentElement;){const e=n.currentElement;if(e.nodeType!==Node.COMMENT_NODE)continue;if(!e.textContent)continue;const t=pt.exec(e.textContent),o=t&&t[1];if(o)return yt(o,r),e}throw new Error(`Could not find an end component comment for '${t}'.`)}}(i,n,e);if(t!==i.type)return;switch(i.type){case"webassembly":return o=n,s=c,vt(r=i),{...r,uniqueId:gt++,start:o,end:s};case"server":return function(e,t,n){return mt(e),{...e,uniqueId:gt++,start:t,end:n}}(i,n,c);case"auto":return function(e,t,n){return mt(e),vt(e),{...e,uniqueId:gt++,start:t,end:n}}(i,n,c)}}catch(e){throw new Error(`Found malformed component comment at ${n.textContent}`)}}}let gt=0;function mt(e){const{descriptor:t,sequence:n}=e;if(!t)throw new Error("descriptor must be defined when using a descriptor.");if(void 0===n)throw new Error("sequence must be defined when using a descriptor.");if(!Number.isInteger(n))throw new Error(`Error parsing the sequence '${n}' for component '${JSON.stringify(e)}'`)}function vt(e){const{assembly:t,typeName:n}=e;if(!t)throw new Error("assembly must be defined when using a descriptor.");if(!n)throw new Error("typeName must be defined when using a descriptor.");e.parameterDefinitions=e.parameterDefinitions&&atob(e.parameterDefinitions),e.parameterValues=e.parameterValues&&atob(e.parameterValues)}function yt(e,t){const n=JSON.parse(e);if(1!==Object.keys(n).length)throw new Error(`Invalid end of component comment: '${e}'`);const r=n.prerenderId;if(!r)throw new Error(`End of component comment must have a value for the prerendered property: '${e}'`);if(r!==t)throw new Error(`End of component comment prerendered property must match the start comment prerender id: '${t}', '${r}'`)}class wt{constructor(e){this.childNodes=e,this.currentIndex=-1,this.length=e.length}next(){return this.currentIndex++,this.currentIndex{n+=`0x${e<16?"0":""}${e.toString(16)} `})),n.substr(0,n.length-1)}(e)}'`)):"string"==typeof e&&(n=`String data of length ${e.length}`,t&&(n+=`. Content: '${e}'`)),n}function Tt(e){return e&&"undefined"!=typeof ArrayBuffer&&(e instanceof ArrayBuffer||e.constructor&&"ArrayBuffer"===e.constructor.name)}async function Dt(e,t,n,r,o,s){const i={},[a,c]=At();i[a]=c,e.log(bt.Trace,`(${t} transport) sending data. ${kt(o,s.logMessageContent)}.`);const l=Tt(o)?"arraybuffer":"text",h=await n.post(r,{content:o,headers:{...i,...s.headers},responseType:l,timeout:s.timeout,withCredentials:s.withCredentials});e.log(bt.Trace,`(${t} transport) request complete. Response status: ${h.statusCode}.`)}class Rt{constructor(e,t){this._subject=e,this._observer=t}dispose(){const e=this._subject.observers.indexOf(this._observer);e>-1&&this._subject.observers.splice(e,1),0===this._subject.observers.length&&this._subject.cancelCallback&&this._subject.cancelCallback().catch((e=>{}))}}class xt{constructor(e){this._minLevel=e,this.out=console}log(e,t){if(e>=this._minLevel){const n=`[${(new Date).toISOString()}] ${bt[e]}: ${t}`;switch(e){case bt.Critical:case bt.Error:this.out.error(n);break;case bt.Warning:this.out.warn(n);break;case bt.Information:this.out.info(n);break;default:this.out.log(n)}}}}function At(){let e="X-SignalR-User-Agent";return It.isNode&&(e="User-Agent"),[e,Pt(Et,Nt(),It.isNode?"NodeJS":"Browser",Ut())]}function Pt(e,t,n,r){let o="Microsoft SignalR/";const s=e.split(".");return o+=`${s[0]}.${s[1]}`,o+=` (${e}; `,o+=t&&""!==t?`${t}; `:"Unknown OS; ",o+=`${n}`,o+=r?`; ${r}`:"; Unknown Runtime Version",o+=")",o}function Nt(){if(!It.isNode)return"";switch(process.platform){case"win32":return"Windows NT";case"darwin":return"macOS";case"linux":return"Linux";default:return process.platform}}function Ut(){if(It.isNode)return process.versions.node}function Mt(e){return e.stack?e.stack:e.message?e.message:`${e}`}class Bt{writeHandshakeRequest(e){return _t.write(JSON.stringify(e))}parseHandshakeResponse(e){let t,n;if(Tt(e)){const r=new Uint8Array(e),o=r.indexOf(_t.RecordSeparatorCode);if(-1===o)throw new Error("Message is incomplete.");const s=o+1;t=String.fromCharCode.apply(null,Array.prototype.slice.call(r.slice(0,s))),n=r.byteLength>s?r.slice(s).buffer:null}else{const r=e,o=r.indexOf(_t.RecordSeparator);if(-1===o)throw new Error("Message is incomplete.");const s=o+1;t=r.substring(0,s),n=r.length>s?r.substring(s):null}const r=_t.parse(t),o=JSON.parse(r[0]);if(o.type)throw new Error("Expected a handshake response from the server.");return[n,o]}}class Lt extends Error{constructor(e,t){const n=new.target.prototype;super(`${e}: Status code '${t}'`),this.statusCode=t,this.__proto__=n}}class $t extends Error{constructor(e="A timeout occurred."){const t=new.target.prototype;super(e),this.__proto__=t}}class Ot extends Error{constructor(e="An abort occurred."){const t=new.target.prototype;super(e),this.__proto__=t}}class Ft extends Error{constructor(e,t){const n=new.target.prototype;super(e),this.transport=t,this.errorType="UnsupportedTransportError",this.__proto__=n}}class Ht extends Error{constructor(e,t){const n=new.target.prototype;super(e),this.transport=t,this.errorType="DisabledTransportError",this.__proto__=n}}class jt extends Error{constructor(e,t){const n=new.target.prototype;super(e),this.transport=t,this.errorType="FailedToStartTransportError",this.__proto__=n}}class Wt extends Error{constructor(e){const t=new.target.prototype;super(e),this.errorType="FailedToNegotiateWithServerError",this.__proto__=t}}class zt extends Error{constructor(e,t){const n=new.target.prototype;super(e),this.innerErrors=t,this.__proto__=n}}var qt,Jt;!function(e){e[e.Invocation=1]="Invocation",e[e.StreamItem=2]="StreamItem",e[e.Completion=3]="Completion",e[e.StreamInvocation=4]="StreamInvocation",e[e.CancelInvocation=5]="CancelInvocation",e[e.Ping=6]="Ping",e[e.Close=7]="Close",e[e.Ack=8]="Ack",e[e.Sequence=9]="Sequence"}(qt||(qt={}));class Kt{constructor(){this.observers=[]}next(e){for(const t of this.observers)t.next(e)}error(e){for(const t of this.observers)t.error&&t.error(e)}complete(){for(const e of this.observers)e.complete&&e.complete()}subscribe(e){return this.observers.push(e),new Rt(this,e)}}class Vt{constructor(e,t,n){this._bufferSize=1e5,this._messages=[],this._totalMessageCount=0,this._waitForSequenceMessage=!1,this._nextReceivingSequenceId=1,this._latestReceivedSequenceId=0,this._bufferedByteCount=0,this._reconnectInProgress=!1,this._protocol=e,this._connection=t,this._bufferSize=n}async _send(e){const t=this._protocol.writeMessage(e);let n=Promise.resolve();if(this._isInvocationMessage(e)){this._totalMessageCount++;let e=()=>{},r=()=>{};Tt(t)?this._bufferedByteCount+=t.byteLength:this._bufferedByteCount+=t.length,this._bufferedByteCount>=this._bufferSize&&(n=new Promise(((t,n)=>{e=t,r=n}))),this._messages.push(new Xt(t,this._totalMessageCount,e,r))}try{this._reconnectInProgress||await this._connection.send(t)}catch{this._disconnected()}await n}_ack(e){let t=-1;for(let n=0;nthis._nextReceivingSequenceId?this._connection.stop(new Error("Sequence ID greater than amount of messages we've received.")):this._nextReceivingSequenceId=e.sequenceId}_disconnected(){this._reconnectInProgress=!0,this._waitForSequenceMessage=!0}async _resend(){const e=0!==this._messages.length?this._messages[0]._id:this._totalMessageCount+1;await this._connection.send(this._protocol.writeMessage({type:qt.Sequence,sequenceId:e}));const t=this._messages;for(const e of t)await this._connection.send(e._message);this._reconnectInProgress=!1}_dispose(e){null!=e||(e=new Error("Unable to reconnect to server."));for(const t of this._messages)t._rejector(e)}_isInvocationMessage(e){switch(e.type){case qt.Invocation:case qt.StreamItem:case qt.Completion:case qt.StreamInvocation:case qt.CancelInvocation:return!0;case qt.Close:case qt.Sequence:case qt.Ping:case qt.Ack:return!1}}_ackTimer(){void 0===this._ackTimerHandle&&(this._ackTimerHandle=setTimeout((async()=>{try{this._reconnectInProgress||await this._connection.send(this._protocol.writeMessage({type:qt.Ack,sequenceId:this._latestReceivedSequenceId}))}catch{}clearTimeout(this._ackTimerHandle),this._ackTimerHandle=void 0}),1e3))}}class Xt{constructor(e,t,n,r){this._message=e,this._id=t,this._resolver=n,this._rejector=r}}!function(e){e.Disconnected="Disconnected",e.Connecting="Connecting",e.Connected="Connected",e.Disconnecting="Disconnecting",e.Reconnecting="Reconnecting"}(Jt||(Jt={}));class Yt{static create(e,t,n,r,o,s,i){return new Yt(e,t,n,r,o,s,i)}constructor(e,t,n,r,o,s,i){this._nextKeepAlive=0,this._freezeEventListener=()=>{this._logger.log(bt.Warning,"The page is being frozen, this will likely lead to the connection being closed and messages being lost. For more information see the docs at https://learn.microsoft.com/aspnet/core/signalr/javascript-client#bsleep")},Ct.isRequired(e,"connection"),Ct.isRequired(t,"logger"),Ct.isRequired(n,"protocol"),this.serverTimeoutInMilliseconds=null!=o?o:3e4,this.keepAliveIntervalInMilliseconds=null!=s?s:15e3,this._statefulReconnectBufferSize=null!=i?i:1e5,this._logger=t,this._protocol=n,this.connection=e,this._reconnectPolicy=r,this._handshakeProtocol=new Bt,this.connection.onreceive=e=>this._processIncomingData(e),this.connection.onclose=e=>this._connectionClosed(e),this._callbacks={},this._methods={},this._closedCallbacks=[],this._reconnectingCallbacks=[],this._reconnectedCallbacks=[],this._invocationId=0,this._receivedHandshakeResponse=!1,this._connectionState=Jt.Disconnected,this._connectionStarted=!1,this._cachedPingMessage=this._protocol.writeMessage({type:qt.Ping})}get state(){return this._connectionState}get connectionId(){return this.connection&&this.connection.connectionId||null}get baseUrl(){return this.connection.baseUrl||""}set baseUrl(e){if(this._connectionState!==Jt.Disconnected&&this._connectionState!==Jt.Reconnecting)throw new Error("The HubConnection must be in the Disconnected or Reconnecting state to change the url.");if(!e)throw new Error("The HubConnection url must be a valid url.");this.connection.baseUrl=e}start(){return this._startPromise=this._startWithStateTransitions(),this._startPromise}async _startWithStateTransitions(){if(this._connectionState!==Jt.Disconnected)return Promise.reject(new Error("Cannot start a HubConnection that is not in the 'Disconnected' state."));this._connectionState=Jt.Connecting,this._logger.log(bt.Debug,"Starting HubConnection.");try{await this._startInternal(),It.isBrowser&&window.document.addEventListener("freeze",this._freezeEventListener),this._connectionState=Jt.Connected,this._connectionStarted=!0,this._logger.log(bt.Debug,"HubConnection connected successfully.")}catch(e){return this._connectionState=Jt.Disconnected,this._logger.log(bt.Debug,`HubConnection failed to start successfully because of error '${e}'.`),Promise.reject(e)}}async _startInternal(){this._stopDuringStartError=void 0,this._receivedHandshakeResponse=!1;const e=new Promise(((e,t)=>{this._handshakeResolver=e,this._handshakeRejecter=t}));await this.connection.start(this._protocol.transferFormat);try{let t=this._protocol.version;this.connection.features.reconnect||(t=1);const n={protocol:this._protocol.name,version:t};if(this._logger.log(bt.Debug,"Sending handshake request."),await this._sendMessage(this._handshakeProtocol.writeHandshakeRequest(n)),this._logger.log(bt.Information,`Using HubProtocol '${this._protocol.name}'.`),this._cleanupTimeout(),this._resetTimeoutPeriod(),this._resetKeepAliveInterval(),await e,this._stopDuringStartError)throw this._stopDuringStartError;!!this.connection.features.reconnect&&(this._messageBuffer=new Vt(this._protocol,this.connection,this._statefulReconnectBufferSize),this.connection.features.disconnected=this._messageBuffer._disconnected.bind(this._messageBuffer),this.connection.features.resend=()=>{if(this._messageBuffer)return this._messageBuffer._resend()}),this.connection.features.inherentKeepAlive||await this._sendMessage(this._cachedPingMessage)}catch(e){throw this._logger.log(bt.Debug,`Hub handshake failed with error '${e}' during start(). Stopping HubConnection.`),this._cleanupTimeout(),this._cleanupPingTimer(),await this.connection.stop(e),e}}async stop(){const e=this._startPromise;this.connection.features.reconnect=!1,this._stopPromise=this._stopInternal(),await this._stopPromise;try{await e}catch(e){}}_stopInternal(e){if(this._connectionState===Jt.Disconnected)return this._logger.log(bt.Debug,`Call to HubConnection.stop(${e}) ignored because it is already in the disconnected state.`),Promise.resolve();if(this._connectionState===Jt.Disconnecting)return this._logger.log(bt.Debug,`Call to HttpConnection.stop(${e}) ignored because the connection is already in the disconnecting state.`),this._stopPromise;const t=this._connectionState;return this._connectionState=Jt.Disconnecting,this._logger.log(bt.Debug,"Stopping HubConnection."),this._reconnectDelayHandle?(this._logger.log(bt.Debug,"Connection stopped during reconnect delay. Done reconnecting."),clearTimeout(this._reconnectDelayHandle),this._reconnectDelayHandle=void 0,this._completeClose(),Promise.resolve()):(t===Jt.Connected&&this._sendCloseMessage(),this._cleanupTimeout(),this._cleanupPingTimer(),this._stopDuringStartError=e||new Ot("The connection was stopped before the hub handshake could complete."),this.connection.stop(e))}async _sendCloseMessage(){try{await this._sendWithProtocol(this._createCloseMessage())}catch{}}stream(e,...t){const[n,r]=this._replaceStreamingParams(t),o=this._createStreamInvocation(e,t,r);let s;const i=new Kt;return i.cancelCallback=()=>{const e=this._createCancelInvocation(o.invocationId);return delete this._callbacks[o.invocationId],s.then((()=>this._sendWithProtocol(e)))},this._callbacks[o.invocationId]=(e,t)=>{t?i.error(t):e&&(e.type===qt.Completion?e.error?i.error(new Error(e.error)):i.complete():i.next(e.item))},s=this._sendWithProtocol(o).catch((e=>{i.error(e),delete this._callbacks[o.invocationId]})),this._launchStreams(n,s),i}_sendMessage(e){return this._resetKeepAliveInterval(),this.connection.send(e)}_sendWithProtocol(e){return this._messageBuffer?this._messageBuffer._send(e):this._sendMessage(this._protocol.writeMessage(e))}send(e,...t){const[n,r]=this._replaceStreamingParams(t),o=this._sendWithProtocol(this._createInvocation(e,t,!0,r));return this._launchStreams(n,o),o}invoke(e,...t){const[n,r]=this._replaceStreamingParams(t),o=this._createInvocation(e,t,!1,r);return new Promise(((e,t)=>{this._callbacks[o.invocationId]=(n,r)=>{r?t(r):n&&(n.type===qt.Completion?n.error?t(new Error(n.error)):e(n.result):t(new Error(`Unexpected message type: ${n.type}`)))};const r=this._sendWithProtocol(o).catch((e=>{t(e),delete this._callbacks[o.invocationId]}));this._launchStreams(n,r)}))}on(e,t){e&&t&&(e=e.toLowerCase(),this._methods[e]||(this._methods[e]=[]),-1===this._methods[e].indexOf(t)&&this._methods[e].push(t))}off(e,t){if(!e)return;e=e.toLowerCase();const n=this._methods[e];if(n)if(t){const r=n.indexOf(t);-1!==r&&(n.splice(r,1),0===n.length&&delete this._methods[e])}else delete this._methods[e]}onclose(e){e&&this._closedCallbacks.push(e)}onreconnecting(e){e&&this._reconnectingCallbacks.push(e)}onreconnected(e){e&&this._reconnectedCallbacks.push(e)}_processIncomingData(e){if(this._cleanupTimeout(),this._receivedHandshakeResponse||(e=this._processHandshakeResponse(e),this._receivedHandshakeResponse=!0),e){const t=this._protocol.parseMessages(e,this._logger);for(const e of t)if(!this._messageBuffer||this._messageBuffer._shouldProcessMessage(e))switch(e.type){case qt.Invocation:this._invokeClientMethod(e);break;case qt.StreamItem:case qt.Completion:{const t=this._callbacks[e.invocationId];if(t){e.type===qt.Completion&&delete this._callbacks[e.invocationId];try{t(e)}catch(e){this._logger.log(bt.Error,`Stream callback threw error: ${Mt(e)}`)}}break}case qt.Ping:break;case qt.Close:{this._logger.log(bt.Information,"Close message received from server.");const t=e.error?new Error("Server returned an error on close: "+e.error):void 0;!0===e.allowReconnect?this.connection.stop(t):this._stopPromise=this._stopInternal(t);break}case qt.Ack:this._messageBuffer&&this._messageBuffer._ack(e);break;case qt.Sequence:this._messageBuffer&&this._messageBuffer._resetSequence(e);break;default:this._logger.log(bt.Warning,`Invalid message type: ${e.type}.`)}}this._resetTimeoutPeriod()}_processHandshakeResponse(e){let t,n;try{[n,t]=this._handshakeProtocol.parseHandshakeResponse(e)}catch(e){const t="Error parsing handshake response: "+e;this._logger.log(bt.Error,t);const n=new Error(t);throw this._handshakeRejecter(n),n}if(t.error){const e="Server returned handshake error: "+t.error;this._logger.log(bt.Error,e);const n=new Error(e);throw this._handshakeRejecter(n),n}return this._logger.log(bt.Debug,"Server handshake complete."),this._handshakeResolver(),n}_resetKeepAliveInterval(){this.connection.features.inherentKeepAlive||(this._nextKeepAlive=(new Date).getTime()+this.keepAliveIntervalInMilliseconds,this._cleanupPingTimer())}_resetTimeoutPeriod(){if(!(this.connection.features&&this.connection.features.inherentKeepAlive||(this._timeoutHandle=setTimeout((()=>this.serverTimeout()),this.serverTimeoutInMilliseconds),void 0!==this._pingServerHandle))){let e=this._nextKeepAlive-(new Date).getTime();e<0&&(e=0),this._pingServerHandle=setTimeout((async()=>{if(this._connectionState===Jt.Connected)try{await this._sendMessage(this._cachedPingMessage)}catch{this._cleanupPingTimer()}}),e)}}serverTimeout(){this.connection.stop(new Error("Server timeout elapsed without receiving a message from the server."))}async _invokeClientMethod(e){const t=e.target.toLowerCase(),n=this._methods[t];if(!n)return this._logger.log(bt.Warning,`No client method with the name '${t}' found.`),void(e.invocationId&&(this._logger.log(bt.Warning,`No result given for '${t}' method and invocation ID '${e.invocationId}'.`),await this._sendWithProtocol(this._createCompletionMessage(e.invocationId,"Client didn't provide a result.",null))));const r=n.slice(),o=!!e.invocationId;let s,i,a;for(const n of r)try{const r=s;s=await n.apply(this,e.arguments),o&&s&&r&&(this._logger.log(bt.Error,`Multiple results provided for '${t}'. Sending error to server.`),a=this._createCompletionMessage(e.invocationId,"Client provided multiple results.",null)),i=void 0}catch(e){i=e,this._logger.log(bt.Error,`A callback for the method '${t}' threw error '${e}'.`)}a?await this._sendWithProtocol(a):o?(i?a=this._createCompletionMessage(e.invocationId,`${i}`,null):void 0!==s?a=this._createCompletionMessage(e.invocationId,null,s):(this._logger.log(bt.Warning,`No result given for '${t}' method and invocation ID '${e.invocationId}'.`),a=this._createCompletionMessage(e.invocationId,"Client didn't provide a result.",null)),await this._sendWithProtocol(a)):s&&this._logger.log(bt.Error,`Result given for '${t}' method but server is not expecting a result.`)}_connectionClosed(e){this._logger.log(bt.Debug,`HubConnection.connectionClosed(${e}) called while in state ${this._connectionState}.`),this._stopDuringStartError=this._stopDuringStartError||e||new Ot("The underlying connection was closed before the hub handshake could complete."),this._handshakeResolver&&this._handshakeResolver(),this._cancelCallbacksWithError(e||new Error("Invocation canceled due to the underlying connection being closed.")),this._cleanupTimeout(),this._cleanupPingTimer(),this._connectionState===Jt.Disconnecting?this._completeClose(e):this._connectionState===Jt.Connected&&this._reconnectPolicy?this._reconnect(e):this._connectionState===Jt.Connected&&this._completeClose(e)}_completeClose(e){if(this._connectionStarted){this._connectionState=Jt.Disconnected,this._connectionStarted=!1,this._messageBuffer&&(this._messageBuffer._dispose(null!=e?e:new Error("Connection closed.")),this._messageBuffer=void 0),It.isBrowser&&window.document.removeEventListener("freeze",this._freezeEventListener);try{this._closedCallbacks.forEach((t=>t.apply(this,[e])))}catch(t){this._logger.log(bt.Error,`An onclose callback called with error '${e}' threw error '${t}'.`)}}}async _reconnect(e){const t=Date.now();let n=0,r=void 0!==e?e:new Error("Attempting to reconnect due to a unknown error."),o=this._getNextRetryDelay(n++,0,r);if(null===o)return this._logger.log(bt.Debug,"Connection not reconnecting because the IRetryPolicy returned null on the first reconnect attempt."),void this._completeClose(e);if(this._connectionState=Jt.Reconnecting,e?this._logger.log(bt.Information,`Connection reconnecting because of error '${e}'.`):this._logger.log(bt.Information,"Connection reconnecting."),0!==this._reconnectingCallbacks.length){try{this._reconnectingCallbacks.forEach((t=>t.apply(this,[e])))}catch(t){this._logger.log(bt.Error,`An onreconnecting callback called with error '${e}' threw error '${t}'.`)}if(this._connectionState!==Jt.Reconnecting)return void this._logger.log(bt.Debug,"Connection left the reconnecting state in onreconnecting callback. Done reconnecting.")}for(;null!==o;){if(this._logger.log(bt.Information,`Reconnect attempt number ${n} will start in ${o} ms.`),await new Promise((e=>{this._reconnectDelayHandle=setTimeout(e,o)})),this._reconnectDelayHandle=void 0,this._connectionState!==Jt.Reconnecting)return void this._logger.log(bt.Debug,"Connection left the reconnecting state during reconnect delay. Done reconnecting.");try{if(await this._startInternal(),this._connectionState=Jt.Connected,this._logger.log(bt.Information,"HubConnection reconnected successfully."),0!==this._reconnectedCallbacks.length)try{this._reconnectedCallbacks.forEach((e=>e.apply(this,[this.connection.connectionId])))}catch(e){this._logger.log(bt.Error,`An onreconnected callback called with connectionId '${this.connection.connectionId}; threw error '${e}'.`)}return}catch(e){if(this._logger.log(bt.Information,`Reconnect attempt failed because of error '${e}'.`),this._connectionState!==Jt.Reconnecting)return this._logger.log(bt.Debug,`Connection moved to the '${this._connectionState}' from the reconnecting state during reconnect attempt. Done reconnecting.`),void(this._connectionState===Jt.Disconnecting&&this._completeClose());r=e instanceof Error?e:new Error(e.toString()),o=this._getNextRetryDelay(n++,Date.now()-t,r)}}this._logger.log(bt.Information,`Reconnect retries have been exhausted after ${Date.now()-t} ms and ${n} failed attempts. Connection disconnecting.`),this._completeClose()}_getNextRetryDelay(e,t,n){try{return this._reconnectPolicy.nextRetryDelayInMilliseconds({elapsedMilliseconds:t,previousRetryCount:e,retryReason:n})}catch(n){return this._logger.log(bt.Error,`IRetryPolicy.nextRetryDelayInMilliseconds(${e}, ${t}) threw error '${n}'.`),null}}_cancelCallbacksWithError(e){const t=this._callbacks;this._callbacks={},Object.keys(t).forEach((n=>{const r=t[n];try{r(null,e)}catch(t){this._logger.log(bt.Error,`Stream 'error' callback called with '${e}' threw error: ${Mt(t)}`)}}))}_cleanupPingTimer(){this._pingServerHandle&&(clearTimeout(this._pingServerHandle),this._pingServerHandle=void 0)}_cleanupTimeout(){this._timeoutHandle&&clearTimeout(this._timeoutHandle)}_createInvocation(e,t,n,r){if(n)return 0!==r.length?{arguments:t,streamIds:r,target:e,type:qt.Invocation}:{arguments:t,target:e,type:qt.Invocation};{const n=this._invocationId;return this._invocationId++,0!==r.length?{arguments:t,invocationId:n.toString(),streamIds:r,target:e,type:qt.Invocation}:{arguments:t,invocationId:n.toString(),target:e,type:qt.Invocation}}}_launchStreams(e,t){if(0!==e.length){t||(t=Promise.resolve());for(const n in e)e[n].subscribe({complete:()=>{t=t.then((()=>this._sendWithProtocol(this._createCompletionMessage(n))))},error:e=>{let r;r=e instanceof Error?e.message:e&&e.toString?e.toString():"Unknown error",t=t.then((()=>this._sendWithProtocol(this._createCompletionMessage(n,r))))},next:e=>{t=t.then((()=>this._sendWithProtocol(this._createStreamItemMessage(n,e))))}})}}_replaceStreamingParams(e){const t=[],n=[];for(let r=0;r0)&&(t=!1,this._accessToken=await this._accessTokenFactory()),this._setAuthorizationHeader(e);const n=await this._innerClient.send(e);return t&&401===n.statusCode&&this._accessTokenFactory?(this._accessToken=await this._accessTokenFactory(),this._setAuthorizationHeader(e),await this._innerClient.send(e)):n}_setAuthorizationHeader(e){e.headers||(e.headers={}),this._accessToken?e.headers[Zt.Authorization]=`Bearer ${this._accessToken}`:this._accessTokenFactory&&e.headers[Zt.Authorization]&&delete e.headers[Zt.Authorization]}getCookieString(e){return this._innerClient.getCookieString(e)}}class rn extends tn{constructor(e){super(),this._logger=e;const t={_fetchType:void 0,_jar:void 0};var r;r=t,"undefined"==typeof fetch&&(r._jar=new(n(628).CookieJar),"undefined"==typeof fetch?r._fetchType=n(200):r._fetchType=fetch,r._fetchType=n(203)(r._fetchType,r._jar),1)?(this._fetchType=t._fetchType,this._jar=t._jar):this._fetchType=fetch.bind(function(){if("undefined"!=typeof globalThis)return globalThis;if("undefined"!=typeof self)return self;if("undefined"!=typeof window)return window;if(void 0!==n.g)return n.g;throw new Error("could not find global")}()),this._abortControllerType=AbortController;const o={_abortControllerType:this._abortControllerType};(function(e){return"undefined"==typeof AbortController&&(e._abortControllerType=n(778),!0)})(o)&&(this._abortControllerType=o._abortControllerType)}async send(e){if(e.abortSignal&&e.abortSignal.aborted)throw new Ot;if(!e.method)throw new Error("No method defined.");if(!e.url)throw new Error("No url defined.");const t=new this._abortControllerType;let n;e.abortSignal&&(e.abortSignal.onabort=()=>{t.abort(),n=new Ot});let r,o=null;if(e.timeout){const r=e.timeout;o=setTimeout((()=>{t.abort(),this._logger.log(bt.Warning,"Timeout from HTTP request."),n=new $t}),r)}""===e.content&&(e.content=void 0),e.content&&(e.headers=e.headers||{},Tt(e.content)?e.headers["Content-Type"]="application/octet-stream":e.headers["Content-Type"]="text/plain;charset=UTF-8");try{r=await this._fetchType(e.url,{body:e.content,cache:"no-cache",credentials:!0===e.withCredentials?"include":"same-origin",headers:{"X-Requested-With":"XMLHttpRequest",...e.headers},method:e.method,mode:"cors",redirect:"follow",signal:t.signal})}catch(e){if(n)throw n;throw this._logger.log(bt.Warning,`Error from HTTP request. ${e}.`),e}finally{o&&clearTimeout(o),e.abortSignal&&(e.abortSignal.onabort=null)}if(!r.ok){const e=await on(r,"text");throw new Lt(e||r.statusText,r.status)}const s=on(r,e.responseType),i=await s;return new en(r.status,r.statusText,i)}getCookieString(e){return""}}function on(e,t){let n;switch(t){case"arraybuffer":n=e.arrayBuffer();break;case"text":default:n=e.text();break;case"blob":case"document":case"json":throw new Error(`${t} is not supported.`)}return n}class sn extends tn{constructor(e){super(),this._logger=e}send(e){return e.abortSignal&&e.abortSignal.aborted?Promise.reject(new Ot):e.method?e.url?new Promise(((t,n)=>{const r=new XMLHttpRequest;r.open(e.method,e.url,!0),r.withCredentials=void 0===e.withCredentials||e.withCredentials,r.setRequestHeader("X-Requested-With","XMLHttpRequest"),""===e.content&&(e.content=void 0),e.content&&(Tt(e.content)?r.setRequestHeader("Content-Type","application/octet-stream"):r.setRequestHeader("Content-Type","text/plain;charset=UTF-8"));const o=e.headers;o&&Object.keys(o).forEach((e=>{r.setRequestHeader(e,o[e])})),e.responseType&&(r.responseType=e.responseType),e.abortSignal&&(e.abortSignal.onabort=()=>{r.abort(),n(new Ot)}),e.timeout&&(r.timeout=e.timeout),r.onload=()=>{e.abortSignal&&(e.abortSignal.onabort=null),r.status>=200&&r.status<300?t(new en(r.status,r.statusText,r.response||r.responseText)):n(new Lt(r.response||r.responseText||r.statusText,r.status))},r.onerror=()=>{this._logger.log(bt.Warning,`Error from HTTP request. ${r.status}: ${r.statusText}.`),n(new Lt(r.statusText,r.status))},r.ontimeout=()=>{this._logger.log(bt.Warning,"Timeout from HTTP request."),n(new $t)},r.send(e.content)})):Promise.reject(new Error("No url defined.")):Promise.reject(new Error("No method defined."))}}class an extends tn{constructor(e){if(super(),"undefined"!=typeof fetch)this._httpClient=new rn(e);else{if("undefined"==typeof XMLHttpRequest)throw new Error("No usable HttpClient found.");this._httpClient=new sn(e)}}send(e){return e.abortSignal&&e.abortSignal.aborted?Promise.reject(new Ot):e.method?e.url?this._httpClient.send(e):Promise.reject(new Error("No url defined.")):Promise.reject(new Error("No method defined."))}getCookieString(e){return this._httpClient.getCookieString(e)}}var cn,ln;!function(e){e[e.None=0]="None",e[e.WebSockets=1]="WebSockets",e[e.ServerSentEvents=2]="ServerSentEvents",e[e.LongPolling=4]="LongPolling"}(cn||(cn={})),function(e){e[e.Text=1]="Text",e[e.Binary=2]="Binary"}(ln||(ln={}));class hn{constructor(){this._isAborted=!1,this.onabort=null}abort(){this._isAborted||(this._isAborted=!0,this.onabort&&this.onabort())}get signal(){return this}get aborted(){return this._isAborted}}class dn{get pollAborted(){return this._pollAbort.aborted}constructor(e,t,n){this._httpClient=e,this._logger=t,this._pollAbort=new hn,this._options=n,this._running=!1,this.onreceive=null,this.onclose=null}async connect(e,t){if(Ct.isRequired(e,"url"),Ct.isRequired(t,"transferFormat"),Ct.isIn(t,ln,"transferFormat"),this._url=e,this._logger.log(bt.Trace,"(LongPolling transport) Connecting."),t===ln.Binary&&"undefined"!=typeof XMLHttpRequest&&"string"!=typeof(new XMLHttpRequest).responseType)throw new Error("Binary protocols over XmlHttpRequest not implementing advanced features are not supported.");const[n,r]=At(),o={[n]:r,...this._options.headers},s={abortSignal:this._pollAbort.signal,headers:o,timeout:1e5,withCredentials:this._options.withCredentials};t===ln.Binary&&(s.responseType="arraybuffer");const i=`${e}&_=${Date.now()}`;this._logger.log(bt.Trace,`(LongPolling transport) polling: ${i}.`);const a=await this._httpClient.get(i,s);200!==a.statusCode?(this._logger.log(bt.Error,`(LongPolling transport) Unexpected response code: ${a.statusCode}.`),this._closeError=new Lt(a.statusText||"",a.statusCode),this._running=!1):this._running=!0,this._receiving=this._poll(this._url,s)}async _poll(e,t){try{for(;this._running;)try{const n=`${e}&_=${Date.now()}`;this._logger.log(bt.Trace,`(LongPolling transport) polling: ${n}.`);const r=await this._httpClient.get(n,t);204===r.statusCode?(this._logger.log(bt.Information,"(LongPolling transport) Poll terminated by server."),this._running=!1):200!==r.statusCode?(this._logger.log(bt.Error,`(LongPolling transport) Unexpected response code: ${r.statusCode}.`),this._closeError=new Lt(r.statusText||"",r.statusCode),this._running=!1):r.content?(this._logger.log(bt.Trace,`(LongPolling transport) data received. ${kt(r.content,this._options.logMessageContent)}.`),this.onreceive&&this.onreceive(r.content)):this._logger.log(bt.Trace,"(LongPolling transport) Poll timed out, reissuing.")}catch(e){this._running?e instanceof $t?this._logger.log(bt.Trace,"(LongPolling transport) Poll timed out, reissuing."):(this._closeError=e,this._running=!1):this._logger.log(bt.Trace,`(LongPolling transport) Poll errored after shutdown: ${e.message}`)}}finally{this._logger.log(bt.Trace,"(LongPolling transport) Polling complete."),this.pollAborted||this._raiseOnClose()}}async send(e){return this._running?Dt(this._logger,"LongPolling",this._httpClient,this._url,e,this._options):Promise.reject(new Error("Cannot send until the transport is connected"))}async stop(){this._logger.log(bt.Trace,"(LongPolling transport) Stopping polling."),this._running=!1,this._pollAbort.abort();try{await this._receiving,this._logger.log(bt.Trace,`(LongPolling transport) sending DELETE request to ${this._url}.`);const e={},[t,n]=At();e[t]=n;const r={headers:{...e,...this._options.headers},timeout:this._options.timeout,withCredentials:this._options.withCredentials};let o;try{await this._httpClient.delete(this._url,r)}catch(e){o=e}o?o instanceof Lt&&(404===o.statusCode?this._logger.log(bt.Trace,"(LongPolling transport) A 404 response was returned from sending a DELETE request."):this._logger.log(bt.Trace,`(LongPolling transport) Error sending a DELETE request: ${o}`)):this._logger.log(bt.Trace,"(LongPolling transport) DELETE request accepted.")}finally{this._logger.log(bt.Trace,"(LongPolling transport) Stop finished."),this._raiseOnClose()}}_raiseOnClose(){if(this.onclose){let e="(LongPolling transport) Firing onclose event.";this._closeError&&(e+=" Error: "+this._closeError),this._logger.log(bt.Trace,e),this.onclose(this._closeError)}}}class un{constructor(e,t,n,r){this._httpClient=e,this._accessToken=t,this._logger=n,this._options=r,this.onreceive=null,this.onclose=null}async connect(e,t){return Ct.isRequired(e,"url"),Ct.isRequired(t,"transferFormat"),Ct.isIn(t,ln,"transferFormat"),this._logger.log(bt.Trace,"(SSE transport) Connecting."),this._url=e,this._accessToken&&(e+=(e.indexOf("?")<0?"?":"&")+`access_token=${encodeURIComponent(this._accessToken)}`),new Promise(((n,r)=>{let o,s=!1;if(t===ln.Text){if(It.isBrowser||It.isWebWorker)o=new this._options.EventSource(e,{withCredentials:this._options.withCredentials});else{const t=this._httpClient.getCookieString(e),n={};n.Cookie=t;const[r,s]=At();n[r]=s,o=new this._options.EventSource(e,{withCredentials:this._options.withCredentials,headers:{...n,...this._options.headers}})}try{o.onmessage=e=>{if(this.onreceive)try{this._logger.log(bt.Trace,`(SSE transport) data received. ${kt(e.data,this._options.logMessageContent)}.`),this.onreceive(e.data)}catch(e){return void this._close(e)}},o.onerror=e=>{s?this._close():r(new Error("EventSource failed to connect. The connection could not be found on the server, either the connection ID is not present on the server, or a proxy is refusing/buffering the connection. If you have multiple servers check that sticky sessions are enabled."))},o.onopen=()=>{this._logger.log(bt.Information,`SSE connected to ${this._url}`),this._eventSource=o,s=!0,n()}}catch(e){return void r(e)}}else r(new Error("The Server-Sent Events transport only supports the 'Text' transfer format"))}))}async send(e){return this._eventSource?Dt(this._logger,"SSE",this._httpClient,this._url,e,this._options):Promise.reject(new Error("Cannot send until the transport is connected"))}stop(){return this._close(),Promise.resolve()}_close(e){this._eventSource&&(this._eventSource.close(),this._eventSource=void 0,this.onclose&&this.onclose(e))}}class pn{constructor(e,t,n,r,o,s){this._logger=n,this._accessTokenFactory=t,this._logMessageContent=r,this._webSocketConstructor=o,this._httpClient=e,this.onreceive=null,this.onclose=null,this._headers=s}async connect(e,t){let n;return Ct.isRequired(e,"url"),Ct.isRequired(t,"transferFormat"),Ct.isIn(t,ln,"transferFormat"),this._logger.log(bt.Trace,"(WebSockets transport) Connecting."),this._accessTokenFactory&&(n=await this._accessTokenFactory()),new Promise(((r,o)=>{let s;e=e.replace(/^http/,"ws");const i=this._httpClient.getCookieString(e);let a=!1;if(It.isReactNative){const t={},[r,o]=At();t[r]=o,n&&(t[Zt.Authorization]=`Bearer ${n}`),i&&(t[Zt.Cookie]=i),s=new this._webSocketConstructor(e,void 0,{headers:{...t,...this._headers}})}else n&&(e+=(e.indexOf("?")<0?"?":"&")+`access_token=${encodeURIComponent(n)}`);s||(s=new this._webSocketConstructor(e)),t===ln.Binary&&(s.binaryType="arraybuffer"),s.onopen=t=>{this._logger.log(bt.Information,`WebSocket connected to ${e}.`),this._webSocket=s,a=!0,r()},s.onerror=e=>{let t=null;t="undefined"!=typeof ErrorEvent&&e instanceof ErrorEvent?e.error:"There was an error with the transport",this._logger.log(bt.Information,`(WebSockets transport) ${t}.`)},s.onmessage=e=>{if(this._logger.log(bt.Trace,`(WebSockets transport) data received. ${kt(e.data,this._logMessageContent)}.`),this.onreceive)try{this.onreceive(e.data)}catch(e){return void this._close(e)}},s.onclose=e=>{if(a)this._close(e);else{let t=null;t="undefined"!=typeof ErrorEvent&&e instanceof ErrorEvent?e.error:"WebSocket failed to connect. The connection could not be found on the server, either the endpoint may not be a SignalR endpoint, the connection ID is not present on the server, or there is a proxy blocking WebSockets. If you have multiple servers check that sticky sessions are enabled.",o(new Error(t))}}}))}send(e){return this._webSocket&&this._webSocket.readyState===this._webSocketConstructor.OPEN?(this._logger.log(bt.Trace,`(WebSockets transport) sending data. ${kt(e,this._logMessageContent)}.`),this._webSocket.send(e),Promise.resolve()):Promise.reject("WebSocket is not in the OPEN state")}stop(){return this._webSocket&&this._close(void 0),Promise.resolve()}_close(e){this._webSocket&&(this._webSocket.onclose=()=>{},this._webSocket.onmessage=()=>{},this._webSocket.onerror=()=>{},this._webSocket.close(),this._webSocket=void 0),this._logger.log(bt.Trace,"(WebSockets transport) socket closed."),this.onclose&&(!this._isCloseEvent(e)||!1!==e.wasClean&&1e3===e.code?e instanceof Error?this.onclose(e):this.onclose():this.onclose(new Error(`WebSocket closed with status code: ${e.code} (${e.reason||"no reason given"}).`)))}_isCloseEvent(e){return e&&"boolean"==typeof e.wasClean&&"number"==typeof e.code}}class fn{constructor(e,t={}){if(this._stopPromiseResolver=()=>{},this.features={},this._negotiateVersion=1,Ct.isRequired(e,"url"),this._logger=function(e){return void 0===e?new xt(bt.Information):null===e?St.instance:void 0!==e.log?e:new xt(e)}(t.logger),this.baseUrl=this._resolveUrl(e),(t=t||{}).logMessageContent=void 0!==t.logMessageContent&&t.logMessageContent,"boolean"!=typeof t.withCredentials&&void 0!==t.withCredentials)throw new Error("withCredentials option was not a 'boolean' or 'undefined' value");t.withCredentials=void 0===t.withCredentials||t.withCredentials,t.timeout=void 0===t.timeout?1e5:t.timeout,"undefined"==typeof WebSocket||t.WebSocket||(t.WebSocket=WebSocket),"undefined"==typeof EventSource||t.EventSource||(t.EventSource=EventSource),this._httpClient=new nn(t.httpClient||new an(this._logger),t.accessTokenFactory),this._connectionState="Disconnected",this._connectionStarted=!1,this._options=t,this.onreceive=null,this.onclose=null}async start(e){if(e=e||ln.Binary,Ct.isIn(e,ln,"transferFormat"),this._logger.log(bt.Debug,`Starting connection with transfer format '${ln[e]}'.`),"Disconnected"!==this._connectionState)return Promise.reject(new Error("Cannot start an HttpConnection that is not in the 'Disconnected' state."));if(this._connectionState="Connecting",this._startInternalPromise=this._startInternal(e),await this._startInternalPromise,"Disconnecting"===this._connectionState){const e="Failed to start the HttpConnection before stop() was called.";return this._logger.log(bt.Error,e),await this._stopPromise,Promise.reject(new Ot(e))}if("Connected"!==this._connectionState){const e="HttpConnection.startInternal completed gracefully but didn't enter the connection into the connected state!";return this._logger.log(bt.Error,e),Promise.reject(new Ot(e))}this._connectionStarted=!0}send(e){return"Connected"!==this._connectionState?Promise.reject(new Error("Cannot send data if the connection is not in the 'Connected' State.")):(this._sendQueue||(this._sendQueue=new gn(this.transport)),this._sendQueue.send(e))}async stop(e){return"Disconnected"===this._connectionState?(this._logger.log(bt.Debug,`Call to HttpConnection.stop(${e}) ignored because the connection is already in the disconnected state.`),Promise.resolve()):"Disconnecting"===this._connectionState?(this._logger.log(bt.Debug,`Call to HttpConnection.stop(${e}) ignored because the connection is already in the disconnecting state.`),this._stopPromise):(this._connectionState="Disconnecting",this._stopPromise=new Promise((e=>{this._stopPromiseResolver=e})),await this._stopInternal(e),void await this._stopPromise)}async _stopInternal(e){this._stopError=e;try{await this._startInternalPromise}catch(e){}if(this.transport){try{await this.transport.stop()}catch(e){this._logger.log(bt.Error,`HttpConnection.transport.stop() threw error '${e}'.`),this._stopConnection()}this.transport=void 0}else this._logger.log(bt.Debug,"HttpConnection.transport is undefined in HttpConnection.stop() because start() failed.")}async _startInternal(e){let t=this.baseUrl;this._accessTokenFactory=this._options.accessTokenFactory,this._httpClient._accessTokenFactory=this._accessTokenFactory;try{if(this._options.skipNegotiation){if(this._options.transport!==cn.WebSockets)throw new Error("Negotiation can only be skipped when using the WebSocket transport directly.");this.transport=this._constructTransport(cn.WebSockets),await this._startTransport(t,e)}else{let n=null,r=0;do{if(n=await this._getNegotiationResponse(t),"Disconnecting"===this._connectionState||"Disconnected"===this._connectionState)throw new Ot("The connection was stopped during negotiation.");if(n.error)throw new Error(n.error);if(n.ProtocolVersion)throw new Error("Detected a connection attempt to an ASP.NET SignalR Server. This client only supports connecting to an ASP.NET Core SignalR Server. See https://aka.ms/signalr-core-differences for details.");if(n.url&&(t=n.url),n.accessToken){const e=n.accessToken;this._accessTokenFactory=()=>e,this._httpClient._accessToken=e,this._httpClient._accessTokenFactory=void 0}r++}while(n.url&&r<100);if(100===r&&n.url)throw new Error("Negotiate redirection limit exceeded.");await this._createTransport(t,this._options.transport,n,e)}this.transport instanceof dn&&(this.features.inherentKeepAlive=!0),"Connecting"===this._connectionState&&(this._logger.log(bt.Debug,"The HttpConnection connected successfully."),this._connectionState="Connected")}catch(e){return this._logger.log(bt.Error,"Failed to start the connection: "+e),this._connectionState="Disconnected",this.transport=void 0,this._stopPromiseResolver(),Promise.reject(e)}}async _getNegotiationResponse(e){const t={},[n,r]=At();t[n]=r;const o=this._resolveNegotiateUrl(e);this._logger.log(bt.Debug,`Sending negotiation request: ${o}.`);try{const e=await this._httpClient.post(o,{content:"",headers:{...t,...this._options.headers},timeout:this._options.timeout,withCredentials:this._options.withCredentials});if(200!==e.statusCode)return Promise.reject(new Error(`Unexpected status code returned from negotiate '${e.statusCode}'`));const n=JSON.parse(e.content);return(!n.negotiateVersion||n.negotiateVersion<1)&&(n.connectionToken=n.connectionId),n.useStatefulReconnect&&!0!==this._options._useStatefulReconnect?Promise.reject(new Wt("Client didn't negotiate Stateful Reconnect but the server did.")):n}catch(e){let t="Failed to complete negotiation with the server: "+e;return e instanceof Lt&&404===e.statusCode&&(t+=" Either this is not a SignalR endpoint or there is a proxy blocking the connection."),this._logger.log(bt.Error,t),Promise.reject(new Wt(t))}}_createConnectUrl(e,t){return t?e+(-1===e.indexOf("?")?"?":"&")+`id=${t}`:e}async _createTransport(e,t,n,r){let o=this._createConnectUrl(e,n.connectionToken);if(this._isITransport(t))return this._logger.log(bt.Debug,"Connection was provided an instance of ITransport, using that directly."),this.transport=t,await this._startTransport(o,r),void(this.connectionId=n.connectionId);const s=[],i=n.availableTransports||[];let a=n;for(const n of i){const i=this._resolveTransportOrError(n,t,r,!0===(null==a?void 0:a.useStatefulReconnect));if(i instanceof Error)s.push(`${n.transport} failed:`),s.push(i);else if(this._isITransport(i)){if(this.transport=i,!a){try{a=await this._getNegotiationResponse(e)}catch(e){return Promise.reject(e)}o=this._createConnectUrl(e,a.connectionToken)}try{return await this._startTransport(o,r),void(this.connectionId=a.connectionId)}catch(e){if(this._logger.log(bt.Error,`Failed to start the transport '${n.transport}': ${e}`),a=void 0,s.push(new jt(`${n.transport} failed: ${e}`,cn[n.transport])),"Connecting"!==this._connectionState){const e="Failed to select transport before stop() was called.";return this._logger.log(bt.Debug,e),Promise.reject(new Ot(e))}}}}return s.length>0?Promise.reject(new zt(`Unable to connect to the server with any of the available transports. ${s.join(" ")}`,s)):Promise.reject(new Error("None of the transports supported by the client are supported by the server."))}_constructTransport(e){switch(e){case cn.WebSockets:if(!this._options.WebSocket)throw new Error("'WebSocket' is not supported in your environment.");return new pn(this._httpClient,this._accessTokenFactory,this._logger,this._options.logMessageContent,this._options.WebSocket,this._options.headers||{});case cn.ServerSentEvents:if(!this._options.EventSource)throw new Error("'EventSource' is not supported in your environment.");return new un(this._httpClient,this._httpClient._accessToken,this._logger,this._options);case cn.LongPolling:return new dn(this._httpClient,this._logger,this._options);default:throw new Error(`Unknown transport: ${e}.`)}}_startTransport(e,t){return this.transport.onreceive=this.onreceive,this.features.reconnect?this.transport.onclose=async n=>{let r=!1;if(this.features.reconnect){try{this.features.disconnected(),await this.transport.connect(e,t),await this.features.resend()}catch{r=!0}r&&this._stopConnection(n)}else this._stopConnection(n)}:this.transport.onclose=e=>this._stopConnection(e),this.transport.connect(e,t)}_resolveTransportOrError(e,t,n,r){const o=cn[e.transport];if(null==o)return this._logger.log(bt.Debug,`Skipping transport '${e.transport}' because it is not supported by this client.`),new Error(`Skipping transport '${e.transport}' because it is not supported by this client.`);if(!function(e,t){return!e||0!=(t&e)}(t,o))return this._logger.log(bt.Debug,`Skipping transport '${cn[o]}' because it was disabled by the client.`),new Ht(`'${cn[o]}' is disabled by the client.`,o);if(!(e.transferFormats.map((e=>ln[e])).indexOf(n)>=0))return this._logger.log(bt.Debug,`Skipping transport '${cn[o]}' because it does not support the requested transfer format '${ln[n]}'.`),new Error(`'${cn[o]}' does not support ${ln[n]}.`);if(o===cn.WebSockets&&!this._options.WebSocket||o===cn.ServerSentEvents&&!this._options.EventSource)return this._logger.log(bt.Debug,`Skipping transport '${cn[o]}' because it is not supported in your environment.'`),new Ft(`'${cn[o]}' is not supported in your environment.`,o);this._logger.log(bt.Debug,`Selecting transport '${cn[o]}'.`);try{return this.features.reconnect=o===cn.WebSockets?r:void 0,this._constructTransport(o)}catch(e){return e}}_isITransport(e){return e&&"object"==typeof e&&"connect"in e}_stopConnection(e){if(this._logger.log(bt.Debug,`HttpConnection.stopConnection(${e}) called while in state ${this._connectionState}.`),this.transport=void 0,e=this._stopError||e,this._stopError=void 0,"Disconnected"!==this._connectionState){if("Connecting"===this._connectionState)throw this._logger.log(bt.Warning,`Call to HttpConnection.stopConnection(${e}) was ignored because the connection is still in the connecting state.`),new Error(`HttpConnection.stopConnection(${e}) was called while the connection is still in the connecting state.`);if("Disconnecting"===this._connectionState&&this._stopPromiseResolver(),e?this._logger.log(bt.Error,`Connection disconnected with error '${e}'.`):this._logger.log(bt.Information,"Connection disconnected."),this._sendQueue&&(this._sendQueue.stop().catch((e=>{this._logger.log(bt.Error,`TransportSendQueue.stop() threw error '${e}'.`)})),this._sendQueue=void 0),this.connectionId=void 0,this._connectionState="Disconnected",this._connectionStarted){this._connectionStarted=!1;try{this.onclose&&this.onclose(e)}catch(t){this._logger.log(bt.Error,`HttpConnection.onclose(${e}) threw error '${t}'.`)}}}else this._logger.log(bt.Debug,`Call to HttpConnection.stopConnection(${e}) was ignored because the connection is already in the disconnected state.`)}_resolveUrl(e){if(0===e.lastIndexOf("https://",0)||0===e.lastIndexOf("http://",0))return e;if(!It.isBrowser)throw new Error(`Cannot resolve '${e}'.`);const t=window.document.createElement("a");return t.href=e,this._logger.log(bt.Information,`Normalizing '${e}' to '${t.href}'.`),t.href}_resolveNegotiateUrl(e){const t=new URL(e);t.pathname.endsWith("/")?t.pathname+="negotiate":t.pathname+="/negotiate";const n=new URLSearchParams(t.searchParams);return n.has("negotiateVersion")||n.append("negotiateVersion",this._negotiateVersion.toString()),n.has("useStatefulReconnect")?"true"===n.get("useStatefulReconnect")&&(this._options._useStatefulReconnect=!0):!0===this._options._useStatefulReconnect&&n.append("useStatefulReconnect","true"),t.search=n.toString(),t.toString()}}class gn{constructor(e){this._transport=e,this._buffer=[],this._executing=!0,this._sendBufferedData=new mn,this._transportResult=new mn,this._sendLoopPromise=this._sendLoop()}send(e){return this._bufferData(e),this._transportResult||(this._transportResult=new mn),this._transportResult.promise}stop(){return this._executing=!1,this._sendBufferedData.resolve(),this._sendLoopPromise}_bufferData(e){if(this._buffer.length&&typeof this._buffer[0]!=typeof e)throw new Error(`Expected data to be of type ${typeof this._buffer} but was of type ${typeof e}`);this._buffer.push(e),this._sendBufferedData.resolve()}async _sendLoop(){for(;;){if(await this._sendBufferedData.promise,!this._executing){this._transportResult&&this._transportResult.reject("Connection stopped.");break}this._sendBufferedData=new mn;const e=this._transportResult;this._transportResult=void 0;const t="string"==typeof this._buffer[0]?this._buffer.join(""):gn._concatBuffers(this._buffer);this._buffer.length=0;try{await this._transport.send(t),e.resolve()}catch(t){e.reject(t)}}}static _concatBuffers(e){const t=e.map((e=>e.byteLength)).reduce(((e,t)=>e+t)),n=new Uint8Array(t);let r=0;for(const t of e)n.set(new Uint8Array(t),r),r+=t.byteLength;return n.buffer}}class mn{constructor(){this.promise=new Promise(((e,t)=>[this._resolver,this._rejecter]=[e,t]))}resolve(){this._resolver()}reject(e){this._rejecter(e)}}class vn{constructor(){this.name="json",this.version=2,this.transferFormat=ln.Text}parseMessages(e,t){if("string"!=typeof e)throw new Error("Invalid input for JSON hub protocol. Expected a string.");if(!e)return[];null===t&&(t=St.instance);const n=_t.parse(e),r=[];for(const e of n){const n=JSON.parse(e);if("number"!=typeof n.type)throw new Error("Invalid payload.");switch(n.type){case qt.Invocation:this._isInvocationMessage(n);break;case qt.StreamItem:this._isStreamItemMessage(n);break;case qt.Completion:this._isCompletionMessage(n);break;case qt.Ping:case qt.Close:break;case qt.Ack:this._isAckMessage(n);break;case qt.Sequence:this._isSequenceMessage(n);break;default:t.log(bt.Information,"Unknown message type '"+n.type+"' ignored.");continue}r.push(n)}return r}writeMessage(e){return _t.write(JSON.stringify(e))}_isInvocationMessage(e){this._assertNotEmptyString(e.target,"Invalid payload for Invocation message."),void 0!==e.invocationId&&this._assertNotEmptyString(e.invocationId,"Invalid payload for Invocation message.")}_isStreamItemMessage(e){if(this._assertNotEmptyString(e.invocationId,"Invalid payload for StreamItem message."),void 0===e.item)throw new Error("Invalid payload for StreamItem message.")}_isCompletionMessage(e){if(e.result&&e.error)throw new Error("Invalid payload for Completion message.");!e.result&&e.error&&this._assertNotEmptyString(e.error,"Invalid payload for Completion message."),this._assertNotEmptyString(e.invocationId,"Invalid payload for Completion message.")}_isAckMessage(e){if("number"!=typeof e.sequenceId)throw new Error("Invalid SequenceId for Ack message.")}_isSequenceMessage(e){if("number"!=typeof e.sequenceId)throw new Error("Invalid SequenceId for Sequence message.")}_assertNotEmptyString(e,t){if("string"!=typeof e||""===e)throw new Error(t)}}const yn={trace:bt.Trace,debug:bt.Debug,info:bt.Information,information:bt.Information,warn:bt.Warning,warning:bt.Warning,error:bt.Error,critical:bt.Critical,none:bt.None};class wn{configureLogging(e){if(Ct.isRequired(e,"logging"),function(e){return void 0!==e.log}(e))this.logger=e;else if("string"==typeof e){const t=function(e){const t=yn[e.toLowerCase()];if(void 0!==t)return t;throw new Error(`Unknown log level: ${e}`)}(e);this.logger=new xt(t)}else this.logger=new xt(e);return this}withUrl(e,t){return Ct.isRequired(e,"url"),Ct.isNotEmpty(e,"url"),this.url=e,this.httpConnectionOptions="object"==typeof t?{...this.httpConnectionOptions,...t}:{...this.httpConnectionOptions,transport:t},this}withHubProtocol(e){return Ct.isRequired(e,"protocol"),this.protocol=e,this}withAutomaticReconnect(e){if(this.reconnectPolicy)throw new Error("A reconnectPolicy has already been set.");return e?Array.isArray(e)?this.reconnectPolicy=new Qt(e):this.reconnectPolicy=e:this.reconnectPolicy=new Qt,this}withServerTimeout(e){return Ct.isRequired(e,"milliseconds"),this._serverTimeoutInMilliseconds=e,this}withKeepAliveInterval(e){return Ct.isRequired(e,"milliseconds"),this._keepAliveIntervalInMilliseconds=e,this}withStatefulReconnect(e){return void 0===this.httpConnectionOptions&&(this.httpConnectionOptions={}),this.httpConnectionOptions._useStatefulReconnect=!0,this._statefulReconnectBufferSize=null==e?void 0:e.bufferSize,this}build(){const e=this.httpConnectionOptions||{};if(void 0===e.logger&&(e.logger=this.logger),!this.url)throw new Error("The 'HubConnectionBuilder.withUrl' method must be called before building the connection.");const t=new fn(this.url,e);return Yt.create(t,this.logger||St.instance,this.protocol||new vn,this.reconnectPolicy,this._serverTimeoutInMilliseconds,this._keepAliveIntervalInMilliseconds,this._statefulReconnectBufferSize)}}var _n;!function(e){e[e.Default=0]="Default",e[e.Server=1]="Server",e[e.WebAssembly=2]="WebAssembly",e[e.WebView=3]="WebView"}(_n||(_n={}));var bn,Sn,En,Cn=4294967295;function In(e,t,n){var r=Math.floor(n/4294967296),o=n;e.setUint32(t,r),e.setUint32(t+4,o)}function kn(e,t){return 4294967296*e.getInt32(t)+e.getUint32(t+4)}var Tn=("undefined"==typeof process||"never"!==(null===(bn=null===process||void 0===process?void 0:process.env)||void 0===bn?void 0:bn.TEXT_ENCODING))&&"undefined"!=typeof TextEncoder&&"undefined"!=typeof TextDecoder;function Dn(e){for(var t=e.length,n=0,r=0;r=55296&&o<=56319&&r65535&&(h-=65536,s.push(h>>>10&1023|55296),h=56320|1023&h),s.push(h)}else s.push(a);s.length>=4096&&(i+=String.fromCharCode.apply(String,s),s.length=0)}return s.length>0&&(i+=String.fromCharCode.apply(String,s)),i}var Nn,Un=Tn?new TextDecoder:null,Mn=Tn?"undefined"!=typeof process&&"force"!==(null===(En=null===process||void 0===process?void 0:process.env)||void 0===En?void 0:En.TEXT_DECODER)?200:0:Cn,Bn=function(e,t){this.type=e,this.data=t},Ln=(Nn=function(e,t){return Nn=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},Nn(e,t)},function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function n(){this.constructor=e}Nn(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}),$n=function(e){function t(n){var r=e.call(this,n)||this,o=Object.create(t.prototype);return Object.setPrototypeOf(r,o),Object.defineProperty(r,"name",{configurable:!0,enumerable:!1,value:t.name}),r}return Ln(t,e),t}(Error),On={type:-1,encode:function(e){var t,n,r,o;return e instanceof Date?function(e){var t,n=e.sec,r=e.nsec;if(n>=0&&r>=0&&n<=17179869183){if(0===r&&n<=4294967295){var o=new Uint8Array(4);return(t=new DataView(o.buffer)).setUint32(0,n),o}var s=n/4294967296,i=4294967295&n;return o=new Uint8Array(8),(t=new DataView(o.buffer)).setUint32(0,r<<2|3&s),t.setUint32(4,i),o}return o=new Uint8Array(12),(t=new DataView(o.buffer)).setUint32(0,r),In(t,4,n),o}((r=1e6*((t=e.getTime())-1e3*(n=Math.floor(t/1e3))),{sec:n+(o=Math.floor(r/1e9)),nsec:r-1e9*o})):null},decode:function(e){var t=function(e){var t=new DataView(e.buffer,e.byteOffset,e.byteLength);switch(e.byteLength){case 4:return{sec:t.getUint32(0),nsec:0};case 8:var n=t.getUint32(0);return{sec:4294967296*(3&n)+t.getUint32(4),nsec:n>>>2};case 12:return{sec:kn(t,4),nsec:t.getUint32(0)};default:throw new $n("Unrecognized data size for timestamp (expected 4, 8, or 12): ".concat(e.length))}}(e);return new Date(1e3*t.sec+t.nsec/1e6)}},Fn=function(){function e(){this.builtInEncoders=[],this.builtInDecoders=[],this.encoders=[],this.decoders=[],this.register(On)}return e.prototype.register=function(e){var t=e.type,n=e.encode,r=e.decode;if(t>=0)this.encoders[t]=n,this.decoders[t]=r;else{var o=1+t;this.builtInEncoders[o]=n,this.builtInDecoders[o]=r}},e.prototype.tryToEncode=function(e,t){for(var n=0;nthis.maxDepth)throw new Error("Too deep objects in depth ".concat(t));null==e?this.encodeNil():"boolean"==typeof e?this.encodeBoolean(e):"number"==typeof e?this.encodeNumber(e):"string"==typeof e?this.encodeString(e):this.encodeObject(e,t)},e.prototype.ensureBufferSizeToWrite=function(e){var t=this.pos+e;this.view.byteLength=0?e<128?this.writeU8(e):e<256?(this.writeU8(204),this.writeU8(e)):e<65536?(this.writeU8(205),this.writeU16(e)):e<4294967296?(this.writeU8(206),this.writeU32(e)):(this.writeU8(207),this.writeU64(e)):e>=-32?this.writeU8(224|e+32):e>=-128?(this.writeU8(208),this.writeI8(e)):e>=-32768?(this.writeU8(209),this.writeI16(e)):e>=-2147483648?(this.writeU8(210),this.writeI32(e)):(this.writeU8(211),this.writeI64(e)):this.forceFloat32?(this.writeU8(202),this.writeF32(e)):(this.writeU8(203),this.writeF64(e))},e.prototype.writeStringHeader=function(e){if(e<32)this.writeU8(160+e);else if(e<256)this.writeU8(217),this.writeU8(e);else if(e<65536)this.writeU8(218),this.writeU16(e);else{if(!(e<4294967296))throw new Error("Too long string: ".concat(e," bytes in UTF-8"));this.writeU8(219),this.writeU32(e)}},e.prototype.encodeString=function(e){if(e.length>xn){var t=Dn(e);this.ensureBufferSizeToWrite(5+t),this.writeStringHeader(t),An(e,this.bytes,this.pos),this.pos+=t}else t=Dn(e),this.ensureBufferSizeToWrite(5+t),this.writeStringHeader(t),function(e,t,n){for(var r=e.length,o=n,s=0;s>6&31|192;else{if(i>=55296&&i<=56319&&s>12&15|224,t[o++]=i>>6&63|128):(t[o++]=i>>18&7|240,t[o++]=i>>12&63|128,t[o++]=i>>6&63|128)}t[o++]=63&i|128}else t[o++]=i}}(e,this.bytes,this.pos),this.pos+=t},e.prototype.encodeObject=function(e,t){var n=this.extensionCodec.tryToEncode(e,this.context);if(null!=n)this.encodeExtension(n);else if(Array.isArray(e))this.encodeArray(e,t);else if(ArrayBuffer.isView(e))this.encodeBinary(e);else{if("object"!=typeof e)throw new Error("Unrecognized object: ".concat(Object.prototype.toString.apply(e)));this.encodeMap(e,t)}},e.prototype.encodeBinary=function(e){var t=e.byteLength;if(t<256)this.writeU8(196),this.writeU8(t);else if(t<65536)this.writeU8(197),this.writeU16(t);else{if(!(t<4294967296))throw new Error("Too large binary: ".concat(t));this.writeU8(198),this.writeU32(t)}var n=Hn(e);this.writeU8a(n)},e.prototype.encodeArray=function(e,t){var n=e.length;if(n<16)this.writeU8(144+n);else if(n<65536)this.writeU8(220),this.writeU16(n);else{if(!(n<4294967296))throw new Error("Too large array: ".concat(n));this.writeU8(221),this.writeU32(n)}for(var r=0,o=e;r0&&e<=this.maxKeyLength},e.prototype.find=function(e,t,n){e:for(var r=0,o=this.caches[n-1];r=this.maxLengthPerKey?n[Math.random()*n.length|0]=r:n.push(r)},e.prototype.decode=function(e,t,n){var r=this.find(e,t,n);if(null!=r)return this.hit++,r;this.miss++;var o=Pn(e,t,n),s=Uint8Array.prototype.slice.call(e,t,t+n);return this.store(s,o),o},e}(),qn=function(e,t){var n,r,o,s,i={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return s={next:a(0),throw:a(1),return:a(2)},"function"==typeof Symbol&&(s[Symbol.iterator]=function(){return this}),s;function a(s){return function(a){return function(s){if(n)throw new TypeError("Generator is already executing.");for(;i;)try{if(n=1,r&&(o=2&s[0]?r.return:s[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,s[1])).done)return o;switch(r=0,o&&(s=[2&s[0],o.value]),s[0]){case 0:case 1:o=s;break;case 4:return i.label++,{value:s[1],done:!1};case 5:i.label++,r=s[1],s=[0];continue;case 7:s=i.ops.pop(),i.trys.pop();continue;default:if(!((o=(o=i.trys).length>0&&o[o.length-1])||6!==s[0]&&2!==s[0])){i=0;continue}if(3===s[0]&&(!o||s[1]>o[0]&&s[1]=e},e.prototype.createExtraByteError=function(e){var t=this.view,n=this.pos;return new RangeError("Extra ".concat(t.byteLength-n," of ").concat(t.byteLength," byte(s) found at buffer[").concat(e,"]"))},e.prototype.decode=function(e){this.reinitializeState(),this.setBuffer(e);var t=this.doDecodeSync();if(this.hasRemaining(1))throw this.createExtraByteError(this.pos);return t},e.prototype.decodeMulti=function(e){return qn(this,(function(t){switch(t.label){case 0:this.reinitializeState(),this.setBuffer(e),t.label=1;case 1:return this.hasRemaining(1)?[4,this.doDecodeSync()]:[3,3];case 2:return t.sent(),[3,1];case 3:return[2]}}))},e.prototype.decodeAsync=function(e){var t,n,r,o,s,i,a;return s=this,void 0,a=function(){var s,i,a,c,l,h,d,u;return qn(this,(function(p){switch(p.label){case 0:s=!1,p.label=1;case 1:p.trys.push([1,6,7,12]),t=Jn(e),p.label=2;case 2:return[4,t.next()];case 3:if((n=p.sent()).done)return[3,5];if(a=n.value,s)throw this.createExtraByteError(this.totalPos);this.appendBuffer(a);try{i=this.doDecodeSync(),s=!0}catch(e){if(!(e instanceof Yn))throw e}this.totalPos+=this.pos,p.label=4;case 4:return[3,2];case 5:return[3,12];case 6:return c=p.sent(),r={error:c},[3,12];case 7:return p.trys.push([7,,10,11]),n&&!n.done&&(o=t.return)?[4,o.call(t)]:[3,9];case 8:p.sent(),p.label=9;case 9:return[3,11];case 10:if(r)throw r.error;return[7];case 11:return[7];case 12:if(s){if(this.hasRemaining(1))throw this.createExtraByteError(this.totalPos);return[2,i]}throw h=(l=this).headByte,d=l.pos,u=l.totalPos,new RangeError("Insufficient data in parsing ".concat(Wn(h)," at ").concat(u," (").concat(d," in the current buffer)"))}}))},new((i=void 0)||(i=Promise))((function(e,t){function n(e){try{o(a.next(e))}catch(e){t(e)}}function r(e){try{o(a.throw(e))}catch(e){t(e)}}function o(t){var o;t.done?e(t.value):(o=t.value,o instanceof i?o:new i((function(e){e(o)}))).then(n,r)}o((a=a.apply(s,[])).next())}))},e.prototype.decodeArrayStream=function(e){return this.decodeMultiAsync(e,!0)},e.prototype.decodeStream=function(e){return this.decodeMultiAsync(e,!1)},e.prototype.decodeMultiAsync=function(e,t){return function(n,r,o){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var s,i=function(){var n,r,o,s,i,a,c,l,h;return qn(this,(function(d){switch(d.label){case 0:n=t,r=-1,d.label=1;case 1:d.trys.push([1,13,14,19]),o=Jn(e),d.label=2;case 2:return[4,Kn(o.next())];case 3:if((s=d.sent()).done)return[3,12];if(i=s.value,t&&0===r)throw this.createExtraByteError(this.totalPos);this.appendBuffer(i),n&&(r=this.readArraySize(),n=!1,this.complete()),d.label=4;case 4:d.trys.push([4,9,,10]),d.label=5;case 5:return[4,Kn(this.doDecodeSync())];case 6:return[4,d.sent()];case 7:return d.sent(),0==--r?[3,8]:[3,5];case 8:return[3,10];case 9:if(!((a=d.sent())instanceof Yn))throw a;return[3,10];case 10:this.totalPos+=this.pos,d.label=11;case 11:return[3,2];case 12:return[3,19];case 13:return c=d.sent(),l={error:c},[3,19];case 14:return d.trys.push([14,,17,18]),s&&!s.done&&(h=o.return)?[4,Kn(h.call(o))]:[3,16];case 15:d.sent(),d.label=16;case 16:return[3,18];case 17:if(l)throw l.error;return[7];case 18:return[7];case 19:return[2]}}))}.apply(n,r||[]),a=[];return s={},c("next"),c("throw"),c("return"),s[Symbol.asyncIterator]=function(){return this},s;function c(e){i[e]&&(s[e]=function(t){return new Promise((function(n,r){a.push([e,t,n,r])>1||l(e,t)}))})}function l(e,t){try{(n=i[e](t)).value instanceof Kn?Promise.resolve(n.value.v).then(h,d):u(a[0][2],n)}catch(e){u(a[0][3],e)}var n}function h(e){l("next",e)}function d(e){l("throw",e)}function u(e,t){e(t),a.shift(),a.length&&l(a[0][0],a[0][1])}}(this,arguments)},e.prototype.doDecodeSync=function(){e:for(;;){var e=this.readHeadByte(),t=void 0;if(e>=224)t=e-256;else if(e<192)if(e<128)t=e;else if(e<144){if(0!=(r=e-128)){this.pushMapState(r),this.complete();continue e}t={}}else if(e<160){if(0!=(r=e-144)){this.pushArrayState(r),this.complete();continue e}t=[]}else{var n=e-160;t=this.decodeUtf8String(n,0)}else if(192===e)t=null;else if(194===e)t=!1;else if(195===e)t=!0;else if(202===e)t=this.readF32();else if(203===e)t=this.readF64();else if(204===e)t=this.readU8();else if(205===e)t=this.readU16();else if(206===e)t=this.readU32();else if(207===e)t=this.readU64();else if(208===e)t=this.readI8();else if(209===e)t=this.readI16();else if(210===e)t=this.readI32();else if(211===e)t=this.readI64();else if(217===e)n=this.lookU8(),t=this.decodeUtf8String(n,1);else if(218===e)n=this.lookU16(),t=this.decodeUtf8String(n,2);else if(219===e)n=this.lookU32(),t=this.decodeUtf8String(n,4);else if(220===e){if(0!==(r=this.readU16())){this.pushArrayState(r),this.complete();continue e}t=[]}else if(221===e){if(0!==(r=this.readU32())){this.pushArrayState(r),this.complete();continue e}t=[]}else if(222===e){if(0!==(r=this.readU16())){this.pushMapState(r),this.complete();continue e}t={}}else if(223===e){if(0!==(r=this.readU32())){this.pushMapState(r),this.complete();continue e}t={}}else if(196===e){var r=this.lookU8();t=this.decodeBinary(r,1)}else if(197===e)r=this.lookU16(),t=this.decodeBinary(r,2);else if(198===e)r=this.lookU32(),t=this.decodeBinary(r,4);else if(212===e)t=this.decodeExtension(1,0);else if(213===e)t=this.decodeExtension(2,0);else if(214===e)t=this.decodeExtension(4,0);else if(215===e)t=this.decodeExtension(8,0);else if(216===e)t=this.decodeExtension(16,0);else if(199===e)r=this.lookU8(),t=this.decodeExtension(r,1);else if(200===e)r=this.lookU16(),t=this.decodeExtension(r,2);else{if(201!==e)throw new $n("Unrecognized type byte: ".concat(Wn(e)));r=this.lookU32(),t=this.decodeExtension(r,4)}this.complete();for(var o=this.stack;o.length>0;){var s=o[o.length-1];if(0===s.type){if(s.array[s.position]=t,s.position++,s.position!==s.size)continue e;o.pop(),t=s.array}else{if(1===s.type){if("string"!=(i=typeof t)&&"number"!==i)throw new $n("The type of key must be string or number but "+typeof t);if("__proto__"===t)throw new $n("The key __proto__ is not allowed");s.key=t,s.type=2;continue e}if(s.map[s.key]=t,s.readCount++,s.readCount!==s.size){s.key=null,s.type=1;continue e}o.pop(),t=s.map}}return t}var i},e.prototype.readHeadByte=function(){return-1===this.headByte&&(this.headByte=this.readU8()),this.headByte},e.prototype.complete=function(){this.headByte=-1},e.prototype.readArraySize=function(){var e=this.readHeadByte();switch(e){case 220:return this.readU16();case 221:return this.readU32();default:if(e<160)return e-144;throw new $n("Unrecognized array type byte: ".concat(Wn(e)))}},e.prototype.pushMapState=function(e){if(e>this.maxMapLength)throw new $n("Max length exceeded: map length (".concat(e,") > maxMapLengthLength (").concat(this.maxMapLength,")"));this.stack.push({type:1,size:e,key:null,readCount:0,map:{}})},e.prototype.pushArrayState=function(e){if(e>this.maxArrayLength)throw new $n("Max length exceeded: array length (".concat(e,") > maxArrayLength (").concat(this.maxArrayLength,")"));this.stack.push({type:0,size:e,array:new Array(e),position:0})},e.prototype.decodeUtf8String=function(e,t){var n;if(e>this.maxStrLength)throw new $n("Max length exceeded: UTF-8 byte length (".concat(e,") > maxStrLength (").concat(this.maxStrLength,")"));if(this.bytes.byteLengthMn?function(e,t,n){var r=e.subarray(t,t+n);return Un.decode(r)}(this.bytes,o,e):Pn(this.bytes,o,e),this.pos+=t+e,r},e.prototype.stateIsMapKey=function(){return this.stack.length>0&&1===this.stack[this.stack.length-1].type},e.prototype.decodeBinary=function(e,t){if(e>this.maxBinLength)throw new $n("Max length exceeded: bin length (".concat(e,") > maxBinLength (").concat(this.maxBinLength,")"));if(!this.hasRemaining(e+t))throw Gn;var n=this.pos+t,r=this.bytes.subarray(n,n+e);return this.pos+=t+e,r},e.prototype.decodeExtension=function(e,t){if(e>this.maxExtLength)throw new $n("Max length exceeded: ext length (".concat(e,") > maxExtLength (").concat(this.maxExtLength,")"));var n=this.view.getInt8(this.pos+t),r=this.decodeBinary(e,t+1);return this.extensionCodec.decode(r,n,this.context)},e.prototype.lookU8=function(){return this.view.getUint8(this.pos)},e.prototype.lookU16=function(){return this.view.getUint16(this.pos)},e.prototype.lookU32=function(){return this.view.getUint32(this.pos)},e.prototype.readU8=function(){var e=this.view.getUint8(this.pos);return this.pos++,e},e.prototype.readI8=function(){var e=this.view.getInt8(this.pos);return this.pos++,e},e.prototype.readU16=function(){var e=this.view.getUint16(this.pos);return this.pos+=2,e},e.prototype.readI16=function(){var e=this.view.getInt16(this.pos);return this.pos+=2,e},e.prototype.readU32=function(){var e=this.view.getUint32(this.pos);return this.pos+=4,e},e.prototype.readI32=function(){var e=this.view.getInt32(this.pos);return this.pos+=4,e},e.prototype.readU64=function(){var e,t,n=(e=this.view,t=this.pos,4294967296*e.getUint32(t)+e.getUint32(t+4));return this.pos+=8,n},e.prototype.readI64=function(){var e=kn(this.view,this.pos);return this.pos+=8,e},e.prototype.readF32=function(){var e=this.view.getFloat32(this.pos);return this.pos+=4,e},e.prototype.readF64=function(){var e=this.view.getFloat64(this.pos);return this.pos+=8,e},e}();class er{static write(e){let t=e.byteLength||e.length;const n=[];do{let e=127&t;t>>=7,t>0&&(e|=128),n.push(e)}while(t>0);t=e.byteLength||e.length;const r=new Uint8Array(n.length+t);return r.set(n,0),r.set(e,n.length),r.buffer}static parse(e){const t=[],n=new Uint8Array(e),r=[0,7,14,21,28];for(let o=0;o7)throw new Error("Messages bigger than 2GB are not supported.");if(!(n.byteLength>=o+i+a))throw new Error("Incomplete message.");t.push(n.slice?n.slice(o+i,o+i+a):n.subarray(o+i,o+i+a)),o=o+i+a}return t}}const tr=new Uint8Array([145,qt.Ping]);class nr{constructor(e){this.name="messagepack",this.version=2,this.transferFormat=ln.Binary,this._errorResult=1,this._voidResult=2,this._nonVoidResult=3,e=e||{},this._encoder=new jn(e.extensionCodec,e.context,e.maxDepth,e.initialBufferSize,e.sortKeys,e.forceFloat32,e.ignoreUndefined,e.forceIntegerToFloat),this._decoder=new Zn(e.extensionCodec,e.context,e.maxStrLength,e.maxBinLength,e.maxArrayLength,e.maxMapLength,e.maxExtLength)}parseMessages(e,t){if(!(n=e)||"undefined"==typeof ArrayBuffer||!(n instanceof ArrayBuffer||n.constructor&&"ArrayBuffer"===n.constructor.name))throw new Error("Invalid input for MessagePack hub protocol. Expected an ArrayBuffer.");var n;null===t&&(t=St.instance);const r=er.parse(e),o=[];for(const e of r){const n=this._parseMessage(e,t);n&&o.push(n)}return o}writeMessage(e){switch(e.type){case qt.Invocation:return this._writeInvocation(e);case qt.StreamInvocation:return this._writeStreamInvocation(e);case qt.StreamItem:return this._writeStreamItem(e);case qt.Completion:return this._writeCompletion(e);case qt.Ping:return er.write(tr);case qt.CancelInvocation:return this._writeCancelInvocation(e);case qt.Close:return this._writeClose();case qt.Ack:return this._writeAck(e);case qt.Sequence:return this._writeSequence(e);default:throw new Error("Invalid message type.")}}_parseMessage(e,t){if(0===e.length)throw new Error("Invalid payload.");const n=this._decoder.decode(e);if(0===n.length||!(n instanceof Array))throw new Error("Invalid payload.");const r=n[0];switch(r){case qt.Invocation:return this._createInvocationMessage(this._readHeaders(n),n);case qt.StreamItem:return this._createStreamItemMessage(this._readHeaders(n),n);case qt.Completion:return this._createCompletionMessage(this._readHeaders(n),n);case qt.Ping:return this._createPingMessage(n);case qt.Close:return this._createCloseMessage(n);case qt.Ack:return this._createAckMessage(n);case qt.Sequence:return this._createSequenceMessage(n);default:return t.log(bt.Information,"Unknown message type '"+r+"' ignored."),null}}_createCloseMessage(e){if(e.length<2)throw new Error("Invalid payload for Close message.");return{allowReconnect:e.length>=3?e[2]:void 0,error:e[1],type:qt.Close}}_createPingMessage(e){if(e.length<1)throw new Error("Invalid payload for Ping message.");return{type:qt.Ping}}_createInvocationMessage(e,t){if(t.length<5)throw new Error("Invalid payload for Invocation message.");const n=t[2];return n?{arguments:t[4],headers:e,invocationId:n,streamIds:[],target:t[3],type:qt.Invocation}:{arguments:t[4],headers:e,streamIds:[],target:t[3],type:qt.Invocation}}_createStreamItemMessage(e,t){if(t.length<4)throw new Error("Invalid payload for StreamItem message.");return{headers:e,invocationId:t[2],item:t[3],type:qt.StreamItem}}_createCompletionMessage(e,t){if(t.length<4)throw new Error("Invalid payload for Completion message.");const n=t[3];if(n!==this._voidResult&&t.length<5)throw new Error("Invalid payload for Completion message.");let r,o;switch(n){case this._errorResult:r=t[4];break;case this._nonVoidResult:o=t[4]}return{error:r,headers:e,invocationId:t[2],result:o,type:qt.Completion}}_createAckMessage(e){if(e.length<1)throw new Error("Invalid payload for Ack message.");return{sequenceId:e[1],type:qt.Ack}}_createSequenceMessage(e){if(e.length<1)throw new Error("Invalid payload for Sequence message.");return{sequenceId:e[1],type:qt.Sequence}}_writeInvocation(e){let t;return t=e.streamIds?this._encoder.encode([qt.Invocation,e.headers||{},e.invocationId||null,e.target,e.arguments,e.streamIds]):this._encoder.encode([qt.Invocation,e.headers||{},e.invocationId||null,e.target,e.arguments]),er.write(t.slice())}_writeStreamInvocation(e){let t;return t=e.streamIds?this._encoder.encode([qt.StreamInvocation,e.headers||{},e.invocationId,e.target,e.arguments,e.streamIds]):this._encoder.encode([qt.StreamInvocation,e.headers||{},e.invocationId,e.target,e.arguments]),er.write(t.slice())}_writeStreamItem(e){const t=this._encoder.encode([qt.StreamItem,e.headers||{},e.invocationId,e.item]);return er.write(t.slice())}_writeCompletion(e){const t=e.error?this._errorResult:void 0!==e.result?this._nonVoidResult:this._voidResult;let n;switch(t){case this._errorResult:n=this._encoder.encode([qt.Completion,e.headers||{},e.invocationId,t,e.error]);break;case this._voidResult:n=this._encoder.encode([qt.Completion,e.headers||{},e.invocationId,t]);break;case this._nonVoidResult:n=this._encoder.encode([qt.Completion,e.headers||{},e.invocationId,t,e.result])}return er.write(n.slice())}_writeCancelInvocation(e){const t=this._encoder.encode([qt.CancelInvocation,e.headers||{},e.invocationId]);return er.write(t.slice())}_writeClose(){const e=this._encoder.encode([qt.Close,null]);return er.write(e.slice())}_writeAck(e){const t=this._encoder.encode([qt.Ack,e.sequenceId]);return er.write(t.slice())}_writeSequence(e){const t=this._encoder.encode([qt.Sequence,e.sequenceId]);return er.write(t.slice())}_readHeaders(e){const t=e[1];if("object"!=typeof t)throw new Error("Invalid headers.");return t}}const rr="function"==typeof TextDecoder?new TextDecoder("utf-8"):null,or=rr?rr.decode.bind(rr):function(e){let t=0;const n=e.length,r=[],o=[];for(;t65535&&(o-=65536,r.push(o>>>10&1023|55296),o=56320|1023&o),r.push(o)}r.length>1024&&(o.push(String.fromCharCode.apply(null,r)),r.length=0)}return o.push(String.fromCharCode.apply(null,r)),o.join("")},sr=Math.pow(2,32),ir=Math.pow(2,21)-1;function ar(e,t){return e[t]|e[t+1]<<8|e[t+2]<<16|e[t+3]<<24}function cr(e,t){return e[t]+(e[t+1]<<8)+(e[t+2]<<16)+(e[t+3]<<24>>>0)}function lr(e,t){const n=cr(e,t+4);if(n>ir)throw new Error(`Cannot read uint64 with high order part ${n}, because the result would exceed Number.MAX_SAFE_INTEGER.`);return n*sr+cr(e,t)}class hr{constructor(e){this.batchData=e;const t=new fr(e);this.arrayRangeReader=new gr(e),this.arrayBuilderSegmentReader=new mr(e),this.diffReader=new dr(e),this.editReader=new ur(e,t),this.frameReader=new pr(e,t)}updatedComponents(){return ar(this.batchData,this.batchData.length-20)}referenceFrames(){return ar(this.batchData,this.batchData.length-16)}disposedComponentIds(){return ar(this.batchData,this.batchData.length-12)}disposedEventHandlerIds(){return ar(this.batchData,this.batchData.length-8)}updatedComponentsEntry(e,t){const n=e+4*t;return ar(this.batchData,n)}referenceFramesEntry(e,t){return e+20*t}disposedComponentIdsEntry(e,t){const n=e+4*t;return ar(this.batchData,n)}disposedEventHandlerIdsEntry(e,t){const n=e+8*t;return lr(this.batchData,n)}}class dr{constructor(e){this.batchDataUint8=e}componentId(e){return ar(this.batchDataUint8,e)}edits(e){return e+4}editsEntry(e,t){return e+16*t}}class ur{constructor(e,t){this.batchDataUint8=e,this.stringReader=t}editType(e){return ar(this.batchDataUint8,e)}siblingIndex(e){return ar(this.batchDataUint8,e+4)}newTreeIndex(e){return ar(this.batchDataUint8,e+8)}moveToSiblingIndex(e){return ar(this.batchDataUint8,e+8)}removedAttributeName(e){const t=ar(this.batchDataUint8,e+12);return this.stringReader.readString(t)}}class pr{constructor(e,t){this.batchDataUint8=e,this.stringReader=t}frameType(e){return ar(this.batchDataUint8,e)}subtreeLength(e){return ar(this.batchDataUint8,e+4)}elementReferenceCaptureId(e){const t=ar(this.batchDataUint8,e+4);return this.stringReader.readString(t)}componentId(e){return ar(this.batchDataUint8,e+8)}elementName(e){const t=ar(this.batchDataUint8,e+8);return this.stringReader.readString(t)}textContent(e){const t=ar(this.batchDataUint8,e+4);return this.stringReader.readString(t)}markupContent(e){const t=ar(this.batchDataUint8,e+4);return this.stringReader.readString(t)}attributeName(e){const t=ar(this.batchDataUint8,e+4);return this.stringReader.readString(t)}attributeValue(e){const t=ar(this.batchDataUint8,e+8);return this.stringReader.readString(t)}attributeEventHandlerId(e){return lr(this.batchDataUint8,e+12)}}class fr{constructor(e){this.batchDataUint8=e,this.stringTableStartIndex=ar(e,e.length-4)}readString(e){if(-1===e)return null;{const n=ar(this.batchDataUint8,this.stringTableStartIndex+4*e),r=function(e,t){let n=0,r=0;for(let o=0;o<4;o++){const s=e[t+o];if(n|=(127&s)<this.nextBatchId)return this.fatalError?(this.logger.log(st.Debug,`Received a new batch ${e} but errored out on a previous batch ${this.nextBatchId-1}`),void await n.send("OnRenderCompleted",this.nextBatchId-1,this.fatalError.toString())):void this.logger.log(st.Debug,`Waiting for batch ${this.nextBatchId}. Batch ${e} not processed.`);try{this.nextBatchId++,this.logger.log(st.Debug,`Applying batch ${e}.`),function(e,t){const n=ge[e];if(!n)throw new Error(`There is no browser renderer with ID ${e}.`);const r=t.arrayRangeReader,o=t.updatedComponents(),s=r.values(o),i=r.count(o),a=t.referenceFrames(),c=r.values(a),l=t.diffReader;for(let e=0;e{e.onclick=function(e){location.reload(),e.preventDefault()}})),document.querySelectorAll("#blazor-error-ui .dismiss").forEach((e=>{e.onclick=function(e){const t=document.querySelector("#blazor-error-ui");t&&(t.style.display="none"),e.preventDefault()}})))}class kr{constructor(t,n,r,o){this._firstUpdate=!0,this._renderingFailed=!1,this._disposed=!1,this._circuitId=void 0,this._applicationState=n,this._componentManager=t,this._options=r,this._logger=o,this._renderQueue=new vr(this._logger),this._dispatcher=e.attachDispatcher(this)}start(){if(this.isDisposedOrDisposing())throw new Error("Cannot start a disposed circuit.");return this._startPromise||(this._startPromise=this.startCore()),this._startPromise}updateRootComponents(e){var t,n;return this._firstUpdate?(this._firstUpdate=!1,null===(t=this._connection)||void 0===t?void 0:t.send("UpdateRootComponents",e,this._applicationState)):null===(n=this._connection)||void 0===n?void 0:n.send("UpdateRootComponents",e,"")}async startCore(){if(this._connection=await this.startConnection(),this._connection.state!==Jt.Connected)return!1;const e=JSON.stringify(this._componentManager.initialComponents.map((e=>{return t=e,{...t,start:void 0,end:void 0};var t})));if(this._circuitId=await this._connection.invoke("StartCircuit",Ue.getBaseURI(),Ue.getLocationHref(),e,this._applicationState||""),!this._circuitId)return!1;for(const e of this._options.circuitHandlers)e.onCircuitOpened&&e.onCircuitOpened();return!0}async startConnection(){var e,t;const n=new nr;n.name="blazorpack";const r=(new wn).withUrl("_blazor").withHubProtocol(n);this._options.configureSignalR(r);const o=r.build();o.on("JS.AttachComponent",((e,t)=>function(e,t,n,r){let o=ge[e];o||(o=new de(e),ge[e]=o),o.attachRootComponentToLogicalElement(n,t,!1)}(_n.Server,this.resolveElement(t),e))),o.on("JS.BeginInvokeJS",this._dispatcher.beginInvokeJSFromDotNet.bind(this._dispatcher)),o.on("JS.EndInvokeDotNet",this._dispatcher.endInvokeDotNetFromJS.bind(this._dispatcher)),o.on("JS.ReceiveByteArray",this._dispatcher.receiveByteArray.bind(this._dispatcher)),o.on("JS.BeginTransmitStream",(e=>{const t=new ReadableStream({start:t=>{o.stream("SendDotNetStreamToJS",e).subscribe({next:e=>t.enqueue(e),complete:()=>t.close(),error:e=>t.error(e)})}});this._dispatcher.supplyDotNetStream(e,t)})),o.on("JS.RenderBatch",(async(e,t)=>{var n,r;this._logger.log(bt.Debug,`Received render batch with id ${e} and ${t.byteLength} bytes.`),await this._renderQueue.processBatch(e,t,this._connection),null===(r=(n=this._componentManager).onAfterRenderBatch)||void 0===r||r.call(n,_n.Server)})),o.on("JS.EndUpdateRootComponents",(e=>{var t,n;null===(n=(t=this._componentManager).onAfterUpdateRootComponents)||void 0===n||n.call(t,e)})),o.on("JS.EndLocationChanging",ot._internal.navigationManager.endLocationChanging),o.onclose((e=>{this._interopMethodsForReconnection=function(e){const t=S.get(e);if(!t)throw new Error(`Interop methods are not registered for renderer ${e}`);return S.delete(e),t}(_n.Server),this._disposed||this._renderingFailed||this._options.reconnectionHandler.onConnectionDown(this._options.reconnectionOptions,e)})),o.on("JS.Error",(e=>{this._renderingFailed=!0,this.unhandledError(e),Ir()}));try{await o.start()}catch(e){if(this.unhandledError(e),"FailedToNegotiateWithServerError"===e.errorType)throw e;Ir(),e.innerErrors&&(e.innerErrors.some((e=>"UnsupportedTransportError"===e.errorType&&e.transport===cn.WebSockets))?this._logger.log(bt.Error,"Unable to connect, please ensure you are using an updated browser that supports WebSockets."):e.innerErrors.some((e=>"FailedToStartTransportError"===e.errorType&&e.transport===cn.WebSockets))?this._logger.log(bt.Error,"Unable to connect, please ensure WebSockets are available. A VPN or proxy may be blocking the connection."):e.innerErrors.some((e=>"DisabledTransportError"===e.errorType&&e.transport===cn.LongPolling))&&this._logger.log(bt.Error,"Unable to initiate a SignalR connection to the server. This might be because the server is not configured to support WebSockets. For additional details, visit https://aka.ms/blazor-server-websockets-error."))}return(null===(t=null===(e=o.connection)||void 0===e?void 0:e.features)||void 0===t?void 0:t.inherentKeepAlive)&&this._logger.log(bt.Warning,"Failed to connect via WebSockets, using the Long Polling fallback transport. This may be due to a VPN or proxy blocking the connection. To troubleshoot this, visit https://aka.ms/blazor-server-using-fallback-long-polling."),o}async disconnect(){var e;await(null===(e=this._connection)||void 0===e?void 0:e.stop())}async reconnect(){if(!this._circuitId)throw new Error("Circuit host not initialized.");return this._connection.state===Jt.Connected||(this._connection=await this.startConnection(),this._interopMethodsForReconnection&&(I(_n.Server,this._interopMethodsForReconnection),this._interopMethodsForReconnection=void 0),!!await this._connection.invoke("ConnectCircuit",this._circuitId)&&(this._options.reconnectionHandler.onConnectionUp(),!0))}beginInvokeDotNetFromJS(e,t,n,r,o){this.throwIfDispatchingWhenDisposed(),this._connection.send("BeginInvokeDotNetFromJS",e?e.toString():null,t,n,r||0,o)}endInvokeJSFromDotNet(e,t,n){this.throwIfDispatchingWhenDisposed(),this._connection.send("EndInvokeJSFromDotNet",e,t,n)}sendByteArray(e,t){this.throwIfDispatchingWhenDisposed(),this._connection.send("ReceiveByteArray",e,t)}throwIfDispatchingWhenDisposed(){if(this._disposed)throw new Error("The circuit associated with this dispatcher is no longer available.")}sendLocationChanged(e,t,n){return this._connection.send("OnLocationChanged",e,t,n)}sendLocationChanging(e,t,n,r){return this._connection.send("OnLocationChanging",e,t,n,r)}sendJsDataStream(e,t,n){return function(e,t,n,r){setTimeout((async()=>{let o=5,s=(new Date).valueOf();try{const i=t instanceof Blob?t.size:t.byteLength;let a=0,c=0;for(;a1)await e.send("ReceiveJSDataChunk",n,c,h,null);else{if(!await e.invoke("ReceiveJSDataChunk",n,c,h,null))break;const t=(new Date).valueOf(),r=t-s;s=t,o=Math.max(1,Math.round(500/Math.max(1,r)))}a+=l,c++}}catch(t){await e.send("ReceiveJSDataChunk",n,-1,null,t.toString())}}),0)}(this._connection,e,t,n)}resolveElement(e){const t=function(e){const t=f.get(e);if(t)return f.delete(e),t}(e);if(t)return O(t,!0);const n=Number.parseInt(e);if(!Number.isNaN(n))return function(e){const{start:t,end:n}=e,r=t[$];if(r){if(r!==e)throw new Error("The start component comment was already associated with another component descriptor.");return t}const o=t.parentNode;if(!o)throw new Error(`Comment not connected to the DOM ${t.textContent}`);const s=O(o,!0),i=K(s);t[L]=s,t[$]=e;const a=O(t);if(n){const e=K(a),r=Array.prototype.indexOf.call(i,a)+1;let o=null;for(;o!==n;){const n=i.splice(r,1)[0];if(!n)throw new Error("Could not find the end component comment in the parent logical node list");n[L]=t,e.push(n),o=n}}return a}(this._componentManager.resolveRootComponent(n));throw new Error(`Invalid sequence number or identifier '${e}'.`)}getRootComponentManager(){return this._componentManager}unhandledError(e){this._logger.log(bt.Error,e),this.disconnect()}getDisconnectFormData(){const e=new FormData,t=this._circuitId;return e.append("circuitId",t),e}didRenderingFail(){return this._renderingFailed}isDisposedOrDisposing(){return void 0!==this._disposePromise}sendDisconnectBeacon(){if(this._disposed)return;const e=this.getDisconnectFormData();this._disposed=navigator.sendBeacon("_blazor/disconnect",e)}dispose(){return this._disposePromise||(this._disposePromise=this.disposeCore()),this._disposePromise}async disposeCore(){var e;if(!this._startPromise)return void(this._disposed=!0);await this._startPromise,this._disposed=!0,null===(e=this._connection)||void 0===e||e.stop();const t=this.getDisconnectFormData();fetch("http://github.com/_blazor/disconnect",{method:"POST",body:t});for(const e of this._options.circuitHandlers)e.onCircuitClosed&&e.onCircuitClosed()}}class Tr{constructor(e,t,n,r){this.maxRetries=t,this.document=n,this.logger=r,this.modal=this.document.createElement("div"),this.modal.id=e,this.maxRetries=t,this.modal.style.cssText=["position: fixed","top: 0","right: 0","bottom: 0","left: 0","z-index: 1050","display: none","overflow: hidden","background-color: #fff","opacity: 0.8","text-align: center","font-weight: bold","transition: visibility 0s linear 500ms"].join(";"),this.message=this.document.createElement("h5"),this.message.style.cssText="margin-top: 20px",this.button=this.document.createElement("button"),this.button.style.cssText="margin:5px auto 5px",this.button.textContent="Retry";const o=this.document.createElement("a");o.addEventListener("click",(()=>location.reload())),o.textContent="reload",this.reloadParagraph=this.document.createElement("p"),this.reloadParagraph.textContent="Alternatively, ",this.reloadParagraph.appendChild(o),this.modal.appendChild(this.message),this.modal.appendChild(this.button),this.modal.appendChild(this.reloadParagraph),this.loader=this.getLoader(),this.message.after(this.loader),this.button.addEventListener("click",(async()=>{this.show();try{await ot.reconnect()||this.rejected()}catch(e){this.logger.log(st.Error,e),this.failed()}}))}show(){this.document.contains(this.modal)||this.document.body.appendChild(this.modal),this.modal.style.display="block",this.loader.style.display="inline-block",this.button.style.display="none",this.reloadParagraph.style.display="none",this.message.textContent="Attempting to reconnect to the server...",this.modal.style.visibility="hidden",setTimeout((()=>{this.modal.style.visibility="visible"}),0)}update(e){this.message.textContent=`Attempting to reconnect to the server: ${e} of ${this.maxRetries}`}hide(){this.modal.style.display="none"}failed(){this.button.style.display="block",this.reloadParagraph.style.display="none",this.loader.style.display="none";const e=this.document.createTextNode("Reconnection failed. Try "),t=this.document.createElement("a");t.textContent="reloading",t.setAttribute("href",""),t.addEventListener("click",(()=>location.reload()));const n=this.document.createTextNode(" the page if you're unable to reconnect.");this.message.replaceChildren(e,t,n)}rejected(){this.button.style.display="none",this.reloadParagraph.style.display="none",this.loader.style.display="none";const e=this.document.createTextNode("Could not reconnect to the server. "),t=this.document.createElement("a");t.textContent="Reload",t.setAttribute("href",""),t.addEventListener("click",(()=>location.reload()));const n=this.document.createTextNode(" the page to restore functionality.");this.message.replaceChildren(e,t,n)}getLoader(){const e=this.document.createElement("div");return e.style.cssText=["border: 0.3em solid #f3f3f3","border-top: 0.3em solid #3498db","border-radius: 50%","width: 2em","height: 2em","display: inline-block"].join(";"),e.animate([{transform:"rotate(0deg)"},{transform:"rotate(360deg)"}],{duration:2e3,iterations:1/0}),e}}class Dr{constructor(e,t,n){this.dialog=e,this.maxRetries=t,this.document=n,this.document=n;const r=this.document.getElementById(Dr.MaxRetriesId);r&&(r.innerText=this.maxRetries.toString())}show(){this.removeClasses(),this.dialog.classList.add(Dr.ShowClassName)}update(e){const t=this.document.getElementById(Dr.CurrentAttemptId);t&&(t.innerText=e.toString())}hide(){this.removeClasses(),this.dialog.classList.add(Dr.HideClassName)}failed(){this.removeClasses(),this.dialog.classList.add(Dr.FailedClassName)}rejected(){this.removeClasses(),this.dialog.classList.add(Dr.RejectedClassName)}removeClasses(){this.dialog.classList.remove(Dr.ShowClassName,Dr.HideClassName,Dr.FailedClassName,Dr.RejectedClassName)}}Dr.ShowClassName="components-reconnect-show",Dr.HideClassName="components-reconnect-hide",Dr.FailedClassName="components-reconnect-failed",Dr.RejectedClassName="components-reconnect-rejected",Dr.MaxRetriesId="components-reconnect-max-retries",Dr.CurrentAttemptId="components-reconnect-current-attempt";class Rr{constructor(e,t,n){this._currentReconnectionProcess=null,this._logger=e,this._reconnectionDisplay=t,this._reconnectCallback=n||ot.reconnect}onConnectionDown(e,t){if(!this._reconnectionDisplay){const t=document.getElementById(e.dialogId);this._reconnectionDisplay=t?new Dr(t,e.maxRetries,document):new Tr(e.dialogId,e.maxRetries,document,this._logger)}this._currentReconnectionProcess||(this._currentReconnectionProcess=new xr(e,this._logger,this._reconnectCallback,this._reconnectionDisplay))}onConnectionUp(){this._currentReconnectionProcess&&(this._currentReconnectionProcess.dispose(),this._currentReconnectionProcess=null)}}class xr{constructor(e,t,n,r){this.logger=t,this.reconnectCallback=n,this.isDisposed=!1,this.reconnectDisplay=r,this.reconnectDisplay.show(),this.attemptPeriodicReconnection(e)}dispose(){this.isDisposed=!0,this.reconnectDisplay.hide()}async attemptPeriodicReconnection(e){for(let t=0;txr.MaximumFirstRetryInterval?xr.MaximumFirstRetryInterval:e.retryIntervalMilliseconds;if(await this.delay(n),this.isDisposed)break;try{return await this.reconnectCallback()?void 0:void this.reconnectDisplay.rejected()}catch(e){this.logger.log(st.Error,e)}}this.reconnectDisplay.failed()}delay(e){return new Promise((t=>setTimeout(t,e)))}}xr.MaximumFirstRetryInterval=3e3;class Ar{constructor(e=!0,t,n,r=0){this.singleRuntime=e,this.logger=t,this.webRendererId=r,this.afterStartedCallbacks=[],n&&this.afterStartedCallbacks.push(...n)}async importInitializersAsync(e,t){await Promise.all(e.map((e=>async function(e,n){const r=function(e){const t=document.baseURI;return t.endsWith("/")?`${t}${e}`:`${t}/${e}`}(n),o=await import(r);if(void 0!==o){if(e.singleRuntime){const{beforeStart:n,afterStarted:r,beforeWebAssemblyStart:i,afterWebAssemblyStarted:a,beforeServerStart:c,afterServerStarted:l}=o;let h=n;e.webRendererId===_n.Server&&c&&(h=c),e.webRendererId===_n.WebAssembly&&i&&(h=i);let d=r;return e.webRendererId===_n.Server&&l&&(d=l),e.webRendererId===_n.WebAssembly&&a&&(d=a),s(e,h,d,t)}return function(e,t,n){var o;const i=n[0],{beforeStart:a,afterStarted:c,beforeWebStart:l,afterWebStarted:h,beforeWebAssemblyStart:d,afterWebAssemblyStarted:u,beforeServerStart:p,afterServerStarted:f}=t,g=!(l||h||d||u||p||f||!a&&!c),m=g&&i.enableClassicInitializers;if(g&&!i.enableClassicInitializers)null===(o=e.logger)||void 0===o||o.log(st.Warning,`Initializer '${r}' will be ignored because multiple runtimes are available. use 'before(web|webAssembly|server)Start' and 'after(web|webAssembly|server)Started?' instead.)`);else if(m)return s(e,a,c,n);if(function(e){e.webAssembly?e.webAssembly.initializers||(e.webAssembly.initializers={beforeStart:[],afterStarted:[]}):e.webAssembly={initializers:{beforeStart:[],afterStarted:[]}},e.circuit?e.circuit.initializers||(e.circuit.initializers={beforeStart:[],afterStarted:[]}):e.circuit={initializers:{beforeStart:[],afterStarted:[]}}}(i),d&&i.webAssembly.initializers.beforeStart.push(d),u&&i.webAssembly.initializers.afterStarted.push(u),p&&i.circuit.initializers.beforeStart.push(p),f&&i.circuit.initializers.afterStarted.push(f),h&&e.afterStartedCallbacks.push(h),l)return l(i)}(e,o,t)}function s(e,t,n,r){if(n&&e.afterStartedCallbacks.push(n),t)return t(...r)}}(this,e))))}async invokeAfterStartedCallbacks(e){const t=function(e){var t;return null===(t=C.get(e))||void 0===t?void 0:t[1]}(this.webRendererId);t&&await t,await Promise.all(this.afterStartedCallbacks.map((t=>t(e))))}}function Pr(e){if(void 0!==Er)throw new Error("Blazor Server has already started.");return Er=new Promise(Nr.bind(null,e)),Er}async function Nr(e,t,n){await yr;const r=await async function(e){if(e.initializers)return await Promise.all(e.initializers.beforeStart.map((t=>t(e)))),new Ar(!1,void 0,e.initializers.afterStarted,_n.Server);const t=await fetch("http://github.com/_blazor/initializers",{method:"GET",credentials:"include",cache:"no-cache"}),n=await t.json(),r=new Ar(!0,void 0,void 0,_n.Server);return await r.importInitializersAsync(n,[e]),r}(br);var o;if(o=document,wr=dt(o,ht)||"",Sr=new lt(br.logLevel),_r=new kr(e,wr,br,Sr),Sr.log(st.Information,"Starting up Blazor server-side application."),ot.reconnect=async()=>!(_r.didRenderingFail()||!await _r.reconnect()&&(Sr.log(st.Information,"Reconnection attempt to the circuit was rejected by the server. This may indicate that the associated state is no longer available on the server."),1)),ot.defaultReconnectionHandler=new Rr(Sr),br.reconnectionHandler=br.reconnectionHandler||ot.defaultReconnectionHandler,ot._internal.navigationManager.listenForNavigationEvents(_n.Server,((e,t,n)=>_r.sendLocationChanged(e,t,n)),((e,t,n,r)=>_r.sendLocationChanging(e,t,n,r))),ot._internal.forceCloseConnection=()=>_r.disconnect(),ot._internal.sendJSDataStream=(e,t,n)=>_r.sendJsDataStream(e,t,n),!await _r.start())return Sr.log(st.Error,"Failed to start the circuit."),void t();const s=()=>{_r.sendDisconnectBeacon()};ot.disconnect=s,window.addEventListener("unload",s,{capture:!1,once:!0}),Sr.log(st.Information,"Blazor server-side application started."),r.invokeAfterStartedCallbacks(ot),t()}class Ur{constructor(e){this.initialComponents=e}resolveRootComponent(e){return this.initialComponents[e]}}class Mr{constructor(){this._eventListeners=new Map}static create(e){const t=new Mr;return e.addEventListener=t.addEventListener.bind(t),e.removeEventListener=t.removeEventListener.bind(t),t}addEventListener(e,t){let n=this._eventListeners.get(e);n||(n=new Set,this._eventListeners.set(e,n)),n.add(t)}removeEventListener(e,t){var n;null===(n=this._eventListeners.get(e))||void 0===n||n.delete(t)}dispatchEvent(e,t){const n=this._eventListeners.get(e);if(!n)return;const r={...t,type:e};for(const e of n)e(r)}}let Br=!1;function Lr(e){if(Br)throw new Error("Blazor has already started.");Br=!0;const t=it(e);!function(e){if(br)throw new Error("Circuit options have already been configured.");if(br)throw new Error("WebAssembly options have already been configured.");yr=async function(e){const t=await e;br=it(t)}(e)}(Promise.resolve(t||{})),Mr.create(ot);const n=function(e){return ut(e,"server").sort(((e,t)=>e.sequence-t.sequence))}(document);return Pr(new Ur(n))}ot.start=Lr,window.DotNet=e,document&&document.currentScript&&"false"!==document.currentScript.getAttribute("autostart")&&Lr()})()})(); \ No newline at end of file +(()=>{var e={778:()=>{},77:()=>{},203:()=>{},200:()=>{},628:()=>{},321:()=>{}},t={};function n(r){var o=t[r];if(void 0!==o)return o.exports;var s=t[r]={exports:{}};return e[r](s,s.exports,n),s.exports}n.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),(()=>{"use strict";var e,t,r;!function(e){const t=[],n="__jsObjectId",r="__dotNetObject",o="__byte[]",s="__dotNetStream",i="__jsStreamReferenceLength";let a,c;class l{constructor(e){this._jsObject=e,this._cachedFunctions=new Map}findFunction(e){const t=this._cachedFunctions.get(e);if(t)return t;let n,r=this._jsObject;if(e.split(".").forEach((t=>{if(!(t in r))throw new Error(`Could not find '${e}' ('${t}' was undefined).`);n=r,r=r[t]})),r instanceof Function)return r=r.bind(n),this._cachedFunctions.set(e,r),r;throw new Error(`The value '${e}' is not a function.`)}getWrappedObject(){return this._jsObject}}const h={0:new l(window)};h[0]._cachedFunctions.set("import",(e=>("string"==typeof e&&e.startsWith("./")&&(e=new URL(e.substr(2),document.baseURI).toString()),import(e))));let d,u=1;function p(e){t.push(e)}function f(e){if(e&&"object"==typeof e){h[u]=new l(e);const t={[n]:u};return u++,t}throw new Error(`Cannot create a JSObjectReference from the value '${e}'.`)}function g(e){let t=-1;if(e instanceof ArrayBuffer&&(e=new Uint8Array(e)),e instanceof Blob)t=e.size;else{if(!(e.buffer instanceof ArrayBuffer))throw new Error("Supplied value is not a typed array or blob.");if(void 0===e.byteLength)throw new Error(`Cannot create a JSStreamReference from the value '${e}' as it doesn't have a byteLength.`);t=e.byteLength}const r={[i]:t};try{const t=f(e);r[n]=t[n]}catch(t){throw new Error(`Cannot create a JSStreamReference from the value '${e}'.`)}return r}function m(e,n){c=e;const r=n?JSON.parse(n,((e,n)=>t.reduce(((t,n)=>n(e,t)),n))):null;return c=void 0,r}function v(){if(void 0===a)throw new Error("No call dispatcher has been set.");if(null===a)throw new Error("There are multiple .NET runtimes present, so a default dispatcher could not be resolved. Use DotNetObject to invoke .NET instance methods.");return a}e.attachDispatcher=function(e){const t=new y(e);return void 0===a?a=t:a&&(a=null),t},e.attachReviver=p,e.invokeMethod=function(e,t,...n){return v().invokeDotNetStaticMethod(e,t,...n)},e.invokeMethodAsync=function(e,t,...n){return v().invokeDotNetStaticMethodAsync(e,t,...n)},e.createJSObjectReference=f,e.createJSStreamReference=g,e.disposeJSObjectReference=function(e){const t=e&&e[n];"number"==typeof t&&b(t)},function(e){e[e.Default=0]="Default",e[e.JSObjectReference=1]="JSObjectReference",e[e.JSStreamReference=2]="JSStreamReference",e[e.JSVoidResult=3]="JSVoidResult"}(d=e.JSCallResultType||(e.JSCallResultType={}));class y{constructor(e){this._dotNetCallDispatcher=e,this._byteArraysToBeRevived=new Map,this._pendingDotNetToJSStreams=new Map,this._pendingAsyncCalls={},this._nextAsyncCallId=1}getDotNetCallDispatcher(){return this._dotNetCallDispatcher}invokeJSFromDotNet(e,t,n,r){const o=m(this,t),s=I(_(e,r)(...o||[]),n);return null==s?null:T(this,s)}beginInvokeJSFromDotNet(e,t,n,r,o){const s=new Promise((e=>{const r=m(this,n);e(_(t,o)(...r||[]))}));e&&s.then((t=>T(this,[e,!0,I(t,r)]))).then((t=>this._dotNetCallDispatcher.endInvokeJSFromDotNet(e,!0,t)),(t=>this._dotNetCallDispatcher.endInvokeJSFromDotNet(e,!1,JSON.stringify([e,!1,w(t)]))))}endInvokeDotNetFromJS(e,t,n){const r=t?m(this,n):new Error(n);this.completePendingCall(parseInt(e,10),t,r)}invokeDotNetStaticMethod(e,t,...n){return this.invokeDotNetMethod(e,t,null,n)}invokeDotNetStaticMethodAsync(e,t,...n){return this.invokeDotNetMethodAsync(e,t,null,n)}invokeDotNetMethod(e,t,n,r){if(this._dotNetCallDispatcher.invokeDotNetFromJS){const o=T(this,r),s=this._dotNetCallDispatcher.invokeDotNetFromJS(e,t,n,o);return s?m(this,s):null}throw new Error("The current dispatcher does not support synchronous calls from JS to .NET. Use invokeDotNetMethodAsync instead.")}invokeDotNetMethodAsync(e,t,n,r){if(e&&n)throw new Error(`For instance method calls, assemblyName should be null. Received '${e}'.`);const o=this._nextAsyncCallId++,s=new Promise(((e,t)=>{this._pendingAsyncCalls[o]={resolve:e,reject:t}}));try{const s=T(this,r);this._dotNetCallDispatcher.beginInvokeDotNetFromJS(o,e,t,n,s)}catch(e){this.completePendingCall(o,!1,e)}return s}receiveByteArray(e,t){this._byteArraysToBeRevived.set(e,t)}processByteArray(e){const t=this._byteArraysToBeRevived.get(e);return t?(this._byteArraysToBeRevived.delete(e),t):null}supplyDotNetStream(e,t){if(this._pendingDotNetToJSStreams.has(e)){const n=this._pendingDotNetToJSStreams.get(e);this._pendingDotNetToJSStreams.delete(e),n.resolve(t)}else{const n=new C;n.resolve(t),this._pendingDotNetToJSStreams.set(e,n)}}getDotNetStreamPromise(e){let t;if(this._pendingDotNetToJSStreams.has(e))t=this._pendingDotNetToJSStreams.get(e).streamPromise,this._pendingDotNetToJSStreams.delete(e);else{const n=new C;this._pendingDotNetToJSStreams.set(e,n),t=n.streamPromise}return t}completePendingCall(e,t,n){if(!this._pendingAsyncCalls.hasOwnProperty(e))throw new Error(`There is no pending async call with ID ${e}.`);const r=this._pendingAsyncCalls[e];delete this._pendingAsyncCalls[e],t?r.resolve(n):r.reject(n)}}function w(e){return e instanceof Error?`${e.message}\n${e.stack}`:e?e.toString():"null"}function _(e,t){const n=h[t];if(n)return n.findFunction(e);throw new Error(`JS object instance with ID ${t} does not exist (has it been disposed?).`)}function b(e){delete h[e]}e.findJSFunction=_,e.disposeJSObjectReferenceById=b;class S{constructor(e,t){this._id=e,this._callDispatcher=t}invokeMethod(e,...t){return this._callDispatcher.invokeDotNetMethod(null,e,this._id,t)}invokeMethodAsync(e,...t){return this._callDispatcher.invokeDotNetMethodAsync(null,e,this._id,t)}dispose(){this._callDispatcher.invokeDotNetMethodAsync(null,"__Dispose",this._id,null).catch((e=>console.error(e)))}serializeAsArg(){return{[r]:this._id}}}e.DotNetObject=S,p((function(e,t){if(t&&"object"==typeof t){if(t.hasOwnProperty(r))return new S(t[r],c);if(t.hasOwnProperty(n)){const e=t[n],r=h[e];if(r)return r.getWrappedObject();throw new Error(`JS object instance with Id '${e}' does not exist. It may have been disposed.`)}if(t.hasOwnProperty(o)){const e=t[o],n=c.processByteArray(e);if(void 0===n)throw new Error(`Byte array index '${e}' does not exist.`);return n}if(t.hasOwnProperty(s)){const e=t[s],n=c.getDotNetStreamPromise(e);return new E(n)}}return t}));class E{constructor(e){this._streamPromise=e}stream(){return this._streamPromise}async arrayBuffer(){return new Response(await this.stream()).arrayBuffer()}}class C{constructor(){this.streamPromise=new Promise(((e,t)=>{this.resolve=e,this.reject=t}))}}function I(e,t){switch(t){case d.Default:return e;case d.JSObjectReference:return f(e);case d.JSStreamReference:return g(e);case d.JSVoidResult:return null;default:throw new Error(`Invalid JS call result type '${t}'.`)}}let k=0;function T(e,t){k=0,c=e;const n=JSON.stringify(t,D);return c=void 0,n}function D(e,t){if(t instanceof S)return t.serializeAsArg();if(t instanceof Uint8Array){c.getDotNetCallDispatcher().sendByteArray(k,t);const e={[o]:k};return k++,e}return t}}(e||(e={})),function(e){e[e.prependFrame=1]="prependFrame",e[e.removeFrame=2]="removeFrame",e[e.setAttribute=3]="setAttribute",e[e.removeAttribute=4]="removeAttribute",e[e.updateText=5]="updateText",e[e.stepIn=6]="stepIn",e[e.stepOut=7]="stepOut",e[e.updateMarkup=8]="updateMarkup",e[e.permutationListEntry=9]="permutationListEntry",e[e.permutationListEnd=10]="permutationListEnd"}(t||(t={})),function(e){e[e.element=1]="element",e[e.text=2]="text",e[e.attribute=3]="attribute",e[e.component=4]="component",e[e.region=5]="region",e[e.elementReferenceCapture=6]="elementReferenceCapture",e[e.markup=8]="markup",e[e.namedEvent=10]="namedEvent"}(r||(r={}));class o{constructor(e,t){this.componentId=e,this.fieldValue=t}static fromEvent(e,t){const n=t.target;if(n instanceof Element){const t=function(e){return e instanceof HTMLInputElement?e.type&&"checkbox"===e.type.toLowerCase()?{value:e.checked}:{value:e.value}:e instanceof HTMLSelectElement||e instanceof HTMLTextAreaElement?{value:e.value}:null}(n);if(t)return new o(e,t.value)}return null}}const s=new Map,i=new Map,a=[];function c(e){return s.get(e)}function l(e){const t=s.get(e);return(null==t?void 0:t.browserEventName)||e}function h(e,t){e.forEach((e=>s.set(e,t)))}function d(e){const t=[];for(let n=0;ne.selected)).map((e=>e.value))}}{const e=function(e){return!!e&&"INPUT"===e.tagName&&"checkbox"===e.getAttribute("type")}(t);return{value:e?!!t.checked:t.value}}}}),h(["copy","cut","paste"],{createEventArgs:e=>({type:e.type})}),h(["drag","dragend","dragenter","dragleave","dragover","dragstart","drop"],{createEventArgs:e=>{return{...u(t=e),dataTransfer:t.dataTransfer?{dropEffect:t.dataTransfer.dropEffect,effectAllowed:t.dataTransfer.effectAllowed,files:Array.from(t.dataTransfer.files).map((e=>e.name)),items:Array.from(t.dataTransfer.items).map((e=>({kind:e.kind,type:e.type}))),types:t.dataTransfer.types}:null};var t}}),h(["focus","blur","focusin","focusout"],{createEventArgs:e=>({type:e.type})}),h(["keydown","keyup","keypress"],{createEventArgs:e=>{return{key:(t=e).key,code:t.code,location:t.location,repeat:t.repeat,ctrlKey:t.ctrlKey,shiftKey:t.shiftKey,altKey:t.altKey,metaKey:t.metaKey,type:t.type};var t}}),h(["contextmenu","click","mouseover","mouseout","mousemove","mousedown","mouseup","mouseleave","mouseenter","dblclick"],{createEventArgs:e=>u(e)}),h(["error"],{createEventArgs:e=>{return{message:(t=e).message,filename:t.filename,lineno:t.lineno,colno:t.colno,type:t.type};var t}}),h(["loadstart","timeout","abort","load","loadend","progress"],{createEventArgs:e=>{return{lengthComputable:(t=e).lengthComputable,loaded:t.loaded,total:t.total,type:t.type};var t}}),h(["touchcancel","touchend","touchmove","touchenter","touchleave","touchstart"],{createEventArgs:e=>{return{detail:(t=e).detail,touches:d(t.touches),targetTouches:d(t.targetTouches),changedTouches:d(t.changedTouches),ctrlKey:t.ctrlKey,shiftKey:t.shiftKey,altKey:t.altKey,metaKey:t.metaKey,type:t.type};var t}}),h(["gotpointercapture","lostpointercapture","pointercancel","pointerdown","pointerenter","pointerleave","pointermove","pointerout","pointerover","pointerup"],{createEventArgs:e=>{return{...u(t=e),pointerId:t.pointerId,width:t.width,height:t.height,pressure:t.pressure,tiltX:t.tiltX,tiltY:t.tiltY,pointerType:t.pointerType,isPrimary:t.isPrimary};var t}}),h(["wheel","mousewheel"],{createEventArgs:e=>{return{...u(t=e),deltaX:t.deltaX,deltaY:t.deltaY,deltaZ:t.deltaZ,deltaMode:t.deltaMode};var t}}),h(["cancel","close","toggle"],{createEventArgs:()=>({})});const p=["date","datetime-local","month","time","week"],f=new Map;let g,m,v=0;const y={async add(e,t,n){if(!n)throw new Error("initialParameters must be an object, even if empty.");const r="__bl-dynamic-root:"+(++v).toString();f.set(r,e);const o=await b().invokeMethodAsync("AddRootComponent",t,r),s=new _(o,m[t]);return await s.setParameters(n),s}};class w{invoke(e){return this._callback(e)}setCallback(t){this._selfJSObjectReference||(this._selfJSObjectReference=e.createJSObjectReference(this)),this._callback=t}getJSObjectReference(){return this._selfJSObjectReference}dispose(){this._selfJSObjectReference&&e.disposeJSObjectReference(this._selfJSObjectReference)}}class _{constructor(e,t){this._jsEventCallbackWrappers=new Map,this._componentId=e;for(const e of t)"eventcallback"===e.type&&this._jsEventCallbackWrappers.set(e.name.toLowerCase(),new w)}setParameters(e){const t={},n=Object.entries(e||{}),r=n.length;for(const[e,r]of n){const n=this._jsEventCallbackWrappers.get(e.toLowerCase());n&&r?(n.setCallback(r),t[e]=n.getJSObjectReference()):t[e]=r}return b().invokeMethodAsync("SetRootComponentParameters",this._componentId,r,t)}async dispose(){if(null!==this._componentId){await b().invokeMethodAsync("RemoveRootComponent",this._componentId),this._componentId=null;for(const e of this._jsEventCallbackWrappers.values())e.dispose()}}}function b(){if(!g)throw new Error("Dynamic root components have not been enabled in this application.");return g}const S=new Map,E=[],C=new Map;function I(t,n,r,o){var s,i;if(S.has(t))throw new Error(`Interop methods are already registered for renderer ${t}`);S.set(t,n),r&&o&&Object.keys(r).length>0&&function(t,n,r){if(g)throw new Error("Dynamic root components have already been enabled.");g=t,m=n;for(const[t,o]of Object.entries(r)){const r=e.findJSFunction(t,0);for(const e of o)r(e,n[e])}}(T(t),r,o),null===(i=null===(s=C.get(t))||void 0===s?void 0:s[0])||void 0===i||i.call(s),function(e){for(const t of E)t(e)}(t)}function k(e,t,n){return D(e,t.eventHandlerId,(()=>T(e).invokeMethodAsync("DispatchEventAsync",t,n)))}function T(e){const t=S.get(e);if(!t)throw new Error(`No interop methods are registered for renderer ${e}`);return t}let D=(e,t,n)=>n();const R=M(["abort","blur","cancel","canplay","canplaythrough","change","close","cuechange","durationchange","emptied","ended","error","focus","load","loadeddata","loadedmetadata","loadend","loadstart","mouseenter","mouseleave","pointerenter","pointerleave","pause","play","playing","progress","ratechange","reset","scroll","seeked","seeking","stalled","submit","suspend","timeupdate","toggle","unload","volumechange","waiting","DOMNodeInsertedIntoDocument","DOMNodeRemovedFromDocument"]),x={submit:!0},A=M(["click","dblclick","mousedown","mousemove","mouseup"]);class P{constructor(e){this.browserRendererId=e,this.afterClickCallbacks=[];const t=++P.nextEventDelegatorId;this.eventsCollectionKey=`_blazorEvents_${t}`,this.eventInfoStore=new N(this.onGlobalEvent.bind(this))}setListener(e,t,n,r){const o=this.getEventHandlerInfosForElement(e,!0),s=o.getHandler(t);if(s)this.eventInfoStore.update(s.eventHandlerId,n);else{const s={element:e,eventName:t,eventHandlerId:n,renderingComponentId:r};this.eventInfoStore.add(s),o.setHandler(t,s)}}getHandler(e){return this.eventInfoStore.get(e)}removeListener(e){const t=this.eventInfoStore.remove(e);if(t){const e=t.element,n=this.getEventHandlerInfosForElement(e,!1);n&&n.removeHandler(t.eventName)}}notifyAfterClick(e){this.afterClickCallbacks.push(e),this.eventInfoStore.addGlobalListener("click")}setStopPropagation(e,t,n){this.getEventHandlerInfosForElement(e,!0).stopPropagation(t,n)}setPreventDefault(e,t,n){this.getEventHandlerInfosForElement(e,!0).preventDefault(t,n)}onGlobalEvent(e){if(!(e.target instanceof Element))return;this.dispatchGlobalEventToAllElements(e.type,e);const t=(n=e.type,i.get(n));var n;t&&t.forEach((t=>this.dispatchGlobalEventToAllElements(t,e))),"click"===e.type&&this.afterClickCallbacks.forEach((t=>t(e)))}dispatchGlobalEventToAllElements(e,t){const n=t.composedPath();let r=n.shift(),s=null,i=!1;const a=Object.prototype.hasOwnProperty.call(R,e);let l=!1;for(;r;){const u=r,p=this.getEventHandlerInfosForElement(u,!1);if(p){const n=p.getHandler(e);if(n&&(h=u,d=t.type,!((h instanceof HTMLButtonElement||h instanceof HTMLInputElement||h instanceof HTMLTextAreaElement||h instanceof HTMLSelectElement)&&Object.prototype.hasOwnProperty.call(A,d)&&h.disabled))){if(!i){const n=c(e);s=(null==n?void 0:n.createEventArgs)?n.createEventArgs(t):{},i=!0}Object.prototype.hasOwnProperty.call(x,t.type)&&t.preventDefault(),k(this.browserRendererId,{eventHandlerId:n.eventHandlerId,eventName:e,eventFieldInfo:o.fromEvent(n.renderingComponentId,t)},s)}p.stopPropagation(e)&&(l=!0),p.preventDefault(e)&&t.preventDefault()}r=a||l?void 0:n.shift()}var h,d}getEventHandlerInfosForElement(e,t){return Object.prototype.hasOwnProperty.call(e,this.eventsCollectionKey)?e[this.eventsCollectionKey]:t?e[this.eventsCollectionKey]=new U:null}}P.nextEventDelegatorId=0;class N{constructor(e){this.globalListener=e,this.infosByEventHandlerId={},this.countByEventName={},a.push(this.handleEventNameAliasAdded.bind(this))}add(e){if(this.infosByEventHandlerId[e.eventHandlerId])throw new Error(`Event ${e.eventHandlerId} is already tracked`);this.infosByEventHandlerId[e.eventHandlerId]=e,this.addGlobalListener(e.eventName)}get(e){return this.infosByEventHandlerId[e]}addGlobalListener(e){if(e=l(e),Object.prototype.hasOwnProperty.call(this.countByEventName,e))this.countByEventName[e]++;else{this.countByEventName[e]=1;const t=Object.prototype.hasOwnProperty.call(R,e);document.addEventListener(e,this.globalListener,t)}}update(e,t){if(Object.prototype.hasOwnProperty.call(this.infosByEventHandlerId,t))throw new Error(`Event ${t} is already tracked`);const n=this.infosByEventHandlerId[e];delete this.infosByEventHandlerId[e],n.eventHandlerId=t,this.infosByEventHandlerId[t]=n}remove(e){const t=this.infosByEventHandlerId[e];if(t){delete this.infosByEventHandlerId[e];const n=l(t.eventName);0==--this.countByEventName[n]&&(delete this.countByEventName[n],document.removeEventListener(n,this.globalListener))}return t}handleEventNameAliasAdded(e,t){if(Object.prototype.hasOwnProperty.call(this.countByEventName,e)){const n=this.countByEventName[e];delete this.countByEventName[e],document.removeEventListener(e,this.globalListener),this.addGlobalListener(t),this.countByEventName[t]+=n-1}}}class U{constructor(){this.handlers={},this.preventDefaultFlags=null,this.stopPropagationFlags=null}getHandler(e){return Object.prototype.hasOwnProperty.call(this.handlers,e)?this.handlers[e]:null}setHandler(e,t){this.handlers[e]=t}removeHandler(e){delete this.handlers[e]}preventDefault(e,t){return void 0!==t&&(this.preventDefaultFlags=this.preventDefaultFlags||{},this.preventDefaultFlags[e]=t),!!this.preventDefaultFlags&&this.preventDefaultFlags[e]}stopPropagation(e,t){return void 0!==t&&(this.stopPropagationFlags=this.stopPropagationFlags||{},this.stopPropagationFlags[e]=t),!!this.stopPropagationFlags&&this.stopPropagationFlags[e]}}function M(e){const t={};return e.forEach((e=>{t[e]=!0})),t}const B=Symbol(),L=Symbol(),$=Symbol();function O(e,t){if(B in e)return e;const n=[];if(e.childNodes.length>0){if(!t)throw new Error("New logical elements must start empty, or allowExistingContents must be true");e.childNodes.forEach((t=>{const r=O(t,!0);r[L]=e,n.push(r)}))}return e[B]=n,e}function F(e){const t=K(e);for(;t.length;)W(e,0)}function H(e,t){const n=document.createComment("!");return j(n,e,t),n}function j(e,t,n){const r=e;let o=e;if(B in e){const t=Q(r);if(t!==e){const n=new Range;n.setStartBefore(e),n.setEndAfter(t),o=n.extractContents()}}const s=z(r);if(s){const e=K(s),t=Array.prototype.indexOf.call(e,r);e.splice(t,1),delete r[L]}const i=K(t);if(n0;)W(n,0)}const r=n;r.parentNode.removeChild(r)}function z(e){return e[L]||null}function q(e,t){return K(e)[t]}function J(e){const t=Y(e);return"http://www.w3.org/2000/svg"===t.namespaceURI&&"foreignObject"!==t.tagName}function K(e){return e[B]}function V(e){const t=K(z(e));return t[Array.prototype.indexOf.call(t,e)+1]||null}function X(e,t){const n=K(e);t.forEach((e=>{e.moveRangeStart=n[e.fromSiblingIndex],e.moveRangeEnd=Q(e.moveRangeStart)})),t.forEach((t=>{const r=document.createComment("marker");t.moveToBeforeMarker=r;const o=n[t.toSiblingIndex+1];o?o.parentNode.insertBefore(r,o):G(r,e)})),t.forEach((e=>{const t=e.moveToBeforeMarker,n=t.parentNode,r=e.moveRangeStart,o=e.moveRangeEnd;let s=r;for(;s;){const e=s.nextSibling;if(n.insertBefore(s,t),s===o)break;s=e}n.removeChild(t)})),t.forEach((e=>{n[e.toSiblingIndex]=e.moveRangeStart}))}function Y(e){if(e instanceof Element||e instanceof DocumentFragment)return e;if(e instanceof Comment)return e.parentNode;throw new Error("Not a valid logical element")}function G(e,t){if(t instanceof Element||t instanceof DocumentFragment)t.appendChild(e);else{if(!(t instanceof Comment))throw new Error(`Cannot append node because the parent is not a valid logical element. Parent: ${t}`);{const n=V(t);n?n.parentNode.insertBefore(e,n):G(e,z(t))}}}function Q(e){if(e instanceof Element||e instanceof DocumentFragment)return e;const t=V(e);if(t)return t.previousSibling;{const t=z(e);return t instanceof Element||t instanceof DocumentFragment?t.lastChild:Q(t)}}function Z(e){return`_bl_${e}`}const ee="__internalId";e.attachReviver(((e,t)=>t&&"object"==typeof t&&Object.prototype.hasOwnProperty.call(t,ee)&&"string"==typeof t[ee]?function(e){const t=`[${Z(e)}]`;return document.querySelector(t)}(t[ee]):t));const te="_blazorDeferredValue";function ne(e){return"select-multiple"===e.type}function re(e,t){e.value=t||""}function oe(e,t){e instanceof HTMLSelectElement?ne(e)?function(e,t){t||(t=[]);for(let n=0;n{ke()&&function(e,t){if(0!==e.button||function(e){return e.ctrlKey||e.shiftKey||e.altKey||e.metaKey}(e))return;if(e.defaultPrevented)return;const n=function(e){const t=!window._blazorDisableComposedPath&&e.composedPath&&e.composedPath();if(t){for(let e=0;e{const t=document.createElement("script");t.textContent=e.textContent,e.getAttributeNames().forEach((n=>{t.setAttribute(n,e.getAttribute(n))})),e.parentNode.replaceChild(t,e)})),ie.content));var i;let a=0;for(;s.firstChild;)j(s.firstChild,o,a++)}applyAttribute(e,t,n,r){const o=e.frameReader,s=o.attributeName(r),i=o.attributeEventHandlerId(r);if(i){const e=fe(s);return void this.eventDelegator.setListener(n,e,i,t)}const a=o.attributeValue(r);this.setOrRemoveAttributeOrProperty(n,s,a)}insertFrameRange(e,t,n,r,o,s,i){const a=r;for(let a=s;a{je(t,e)})},enableNavigationInterception:function(e){if(void 0!==me&&me!==e)throw new Error("Only one interactive runtime may enable navigation interception at a time.");me=e},setHasLocationChangingListeners:function(e,t){const n=Ae.get(e);if(!n)throw new Error(`Renderer with ID '${e}' is not listening for navigation events`);n.hasLocationChangingEventListeners=t},endLocationChanging:function(e,t){Ne&&e===xe&&(Ne(t),Ne=null)},navigateTo:function(e,t){Be(e,t,!0)},refresh:function(e){!e&&Se()?Ee(location.href,!0):location.reload()},getBaseURI:()=>document.baseURI,getLocationHref:()=>location.href,scrollToElement:Me};function Me(e){const t=document.getElementById(e);return!!t&&(t.scrollIntoView(),!0)}function Be(e,t,n=!1){const r=Ce(e),o=qe();if(t.forceLoad||!be(r)||"serverside-fullpageload"===o)!function(e,t){if(location.href===e){const t=e+"?";history.replaceState(null,"",t),location.replace(e)}else t?location.replace(e):location.href=e}(e,t.replaceHistoryEntry);else if("clientside-router"===o)Le(r,!1,t.replaceHistoryEntry,t.historyEntryState,n);else{if("serverside-enhanced"!==o)throw new Error(`Unsupported page load mechanism: ${o}`);Ee(r,t.replaceHistoryEntry)}}async function Le(e,t,n,r=void 0,o=!1){if(Fe(),function(e){const t=e.indexOf("#");return t>-1&&location.href.replace(location.hash,"")===e.substring(0,t)}(e))return void function(e,t,n){$e(e,t,n);const r=e.indexOf("#");r!==e.length-1&&Me(e.substring(r+1))}(e,n,r);const s=ze();(o||!(null==s?void 0:s.hasLocationChangingEventListeners)||await He(e,r,t,s))&&(_e=!0,$e(e,n,r),await je(t))}function $e(e,t,n=void 0){t?history.replaceState({userState:n,_index:Re},"",e):(Re++,history.pushState({userState:n,_index:Re},"",e))}function Oe(e){return new Promise((t=>{const n=Pe;Pe=()=>{Pe=n,t()},history.go(e)}))}function Fe(){Ne&&(Ne(!1),Ne=null)}function He(e,t,n,r){return new Promise((o=>{Fe(),xe++,Ne=o,r.locationChanging(xe,e,t,n)}))}async function je(e,t){const n=null!=t?t:location.href;await Promise.all(Array.from(Ae,(async([t,r])=>{var o,s;s=t,S.has(s)&&await r.locationChanged(n,null===(o=history.state)||void 0===o?void 0:o.userState,e)})))}async function We(e){var t,n;Pe&&"serverside-enhanced"!==qe()&&await Pe(e),Re=null!==(n=null===(t=history.state)||void 0===t?void 0:t._index)&&void 0!==n?n:0}function ze(){const e=Te();if(void 0!==e)return Ae.get(e)}function qe(){return ke()?"clientside-router":Se()?"serverside-enhanced":window.Blazor._internal.isBlazorWeb?"serverside-fullpageload":"clientside-router"}const Je={focus:function(e,t){if(e instanceof HTMLElement)e.focus({preventScroll:t});else{if(!(e instanceof SVGElement))throw new Error("Unable to focus an invalid element.");if(!e.hasAttribute("tabindex"))throw new Error("Unable to focus an SVG element that does not have a tabindex.");e.focus({preventScroll:t})}},focusBySelector:function(e,t){const n=document.querySelector(e);n&&(n.hasAttribute("tabindex")||(n.tabIndex=-1),n.focus({preventScroll:!0}))}},Ke={init:function(e,t,n,r=50){const o=Xe(t);(o||document.documentElement).style.overflowAnchor="none";const s=document.createRange();u(n.parentElement)&&(t.style.display="table-row",n.style.display="table-row");const i=new IntersectionObserver((function(r){r.forEach((r=>{var o;if(!r.isIntersecting)return;s.setStartAfter(t),s.setEndBefore(n);const i=s.getBoundingClientRect().height,a=null===(o=r.rootBounds)||void 0===o?void 0:o.height;r.target===t?e.invokeMethodAsync("OnSpacerBeforeVisible",r.intersectionRect.top-r.boundingClientRect.top,i,a):r.target===n&&n.offsetHeight>0&&e.invokeMethodAsync("OnSpacerAfterVisible",r.boundingClientRect.bottom-r.intersectionRect.bottom,i,a)}))}),{root:o,rootMargin:`${r}px`});i.observe(t),i.observe(n);const a=d(t),c=d(n),{observersByDotNetObjectId:l,id:h}=Ye(e);function d(e){const t={attributes:!0},n=new MutationObserver(((n,r)=>{u(e.parentElement)&&(r.disconnect(),e.style.display="table-row",r.observe(e,t)),i.unobserve(e),i.observe(e)}));return n.observe(e,t),n}function u(e){return null!==e&&(e instanceof HTMLTableElement&&""===e.style.display||"table"===e.style.display||e instanceof HTMLTableSectionElement&&""===e.style.display||"table-row-group"===e.style.display)}l[h]={intersectionObserver:i,mutationObserverBefore:a,mutationObserverAfter:c}},dispose:function(e){const{observersByDotNetObjectId:t,id:n}=Ye(e),r=t[n];r&&(r.intersectionObserver.disconnect(),r.mutationObserverBefore.disconnect(),r.mutationObserverAfter.disconnect(),e.dispose(),delete t[n])}},Ve=Symbol();function Xe(e){return e&&e!==document.body&&e!==document.documentElement?"visible"!==getComputedStyle(e).overflowY?e:Xe(e.parentElement):null}function Ye(e){var t;const n=e._callDispatcher,r=e._id;return null!==(t=n[Ve])&&void 0!==t||(n[Ve]={}),{observersByDotNetObjectId:n[Ve],id:r}}const Ge={getAndRemoveExistingTitle:function(){var e;const t=document.head?document.head.getElementsByTagName("title"):[];if(0===t.length)return null;let n=null;for(let r=t.length-1;r>=0;r--){const o=t[r],s=o.previousSibling;s instanceof Comment&&null!==z(s)||(null===n&&(n=o.textContent),null===(e=o.parentNode)||void 0===e||e.removeChild(o))}return n}},Qe={init:function(e,t){t._blazorInputFileNextFileId=0,t.addEventListener("click",(function(){t.value=""})),t.addEventListener("change",(function(){t._blazorFilesById={};const n=Array.prototype.map.call(t.files,(function(e){const n={id:++t._blazorInputFileNextFileId,lastModified:new Date(e.lastModified).toISOString(),name:e.name,size:e.size,contentType:e.type,readPromise:void 0,arrayBuffer:void 0,blob:e};return t._blazorFilesById[n.id]=n,n}));e.invokeMethodAsync("NotifyChange",n)}))},toImageFile:async function(e,t,n,r,o){const s=Ze(e,t),i=await new Promise((function(e){const t=new Image;t.onload=function(){URL.revokeObjectURL(t.src),e(t)},t.onerror=function(){t.onerror=null,URL.revokeObjectURL(t.src)},t.src=URL.createObjectURL(s.blob)})),a=await new Promise((function(e){var t;const s=Math.min(1,r/i.width),a=Math.min(1,o/i.height),c=Math.min(s,a),l=document.createElement("canvas");l.width=Math.round(i.width*c),l.height=Math.round(i.height*c),null===(t=l.getContext("2d"))||void 0===t||t.drawImage(i,0,0,l.width,l.height),l.toBlob(e,n)})),c={id:++e._blazorInputFileNextFileId,lastModified:s.lastModified,name:s.name,size:(null==a?void 0:a.size)||0,contentType:n,blob:a||s.blob};return e._blazorFilesById[c.id]=c,c},readFileData:async function(e,t){return Ze(e,t).blob}};function Ze(e,t){const n=e._blazorFilesById[t];if(!n)throw new Error(`There is no file with ID ${t}. The file list may have changed. See https://aka.ms/aspnet/blazor-input-file-multiple-selections.`);return n}const et=new Set,tt={enableNavigationPrompt:function(e){0===et.size&&window.addEventListener("beforeunload",nt),et.add(e)},disableNavigationPrompt:function(e){et.delete(e),0===et.size&&window.removeEventListener("beforeunload",nt)}};function nt(e){e.preventDefault(),e.returnValue=!0}async function rt(e,t,n){return e instanceof Blob?await async function(e,t,n){const r=e.slice(t,t+n),o=await r.arrayBuffer();return new Uint8Array(o)}(e,t,n):function(e,t,n){return new Uint8Array(e.buffer,e.byteOffset+t,n)}(e,t,n)}new Map;const ot={navigateTo:function(e,t,n=!1){Be(e,t instanceof Object?t:{forceLoad:t,replaceHistoryEntry:n})},registerCustomEventType:function(e,t){if(!t)throw new Error("The options parameter is required.");if(s.has(e))throw new Error(`The event '${e}' is already registered.`);if(t.browserEventName){const n=i.get(t.browserEventName);n?n.push(e):i.set(t.browserEventName,[e]),a.forEach((n=>n(e,t.browserEventName)))}s.set(e,t)},rootComponents:y,runtime:{},_internal:{navigationManager:Ue,domWrapper:Je,Virtualize:Ke,PageTitle:Ge,InputFile:Qe,NavigationLock:tt,getJSDataStreamChunk:rt,attachWebRendererInterop:I}};var st;function it(e){const t={...at,...e};return e&&e.reconnectionOptions&&(t.reconnectionOptions={...at.reconnectionOptions,...e.reconnectionOptions}),t}window.Blazor=ot,function(e){e[e.Trace=0]="Trace",e[e.Debug=1]="Debug",e[e.Information=2]="Information",e[e.Warning=3]="Warning",e[e.Error=4]="Error",e[e.Critical=5]="Critical",e[e.None=6]="None"}(st||(st={}));const at={configureSignalR:e=>{},logLevel:st.Warning,initializers:void 0,circuitHandlers:[],reconnectionOptions:{maxRetries:8,retryIntervalMilliseconds:2e4,dialogId:"components-reconnect-modal"}};class ct{log(e,t){}}ct.instance=new ct;class lt{constructor(e){this.minLevel=e}log(e,t){if(e>=this.minLevel){const n=`[${(new Date).toISOString()}] ${st[e]}: ${t}`;switch(e){case st.Critical:case st.Error:console.error(n);break;case st.Warning:console.warn(n);break;case st.Information:console.info(n);break;default:console.log(n)}}}}const ht=/^\s*Blazor-Server-Component-State:(?[a-zA-Z0-9+/=]+)$/;function dt(e,t,n="state"){var r;if(e.nodeType===Node.COMMENT_NODE){const o=e.textContent||"",s=t.exec(o),i=s&&s.groups&&s.groups[n];return i&&(null===(r=e.parentNode)||void 0===r||r.removeChild(e)),i}if(!e.hasChildNodes())return;const o=e.childNodes;for(let e=0;e.*)$/);function ft(e,t){const n=e.currentElement;var r,o,s;if(n&&n.nodeType===Node.COMMENT_NODE&&n.textContent){const i=pt.exec(n.textContent),a=i&&i.groups&&i.groups.descriptor;if(!a)return;!function(e){if(e.parentNode instanceof Document)throw new Error("Root components cannot be marked as interactive. The element must be rendered statically so that scripts are not evaluated multiple times.")}(n);try{const i=function(e){const t=JSON.parse(e),{type:n}=t;if("server"!==n&&"webassembly"!==n&&"auto"!==n)throw new Error(`Invalid component type '${n}'.`);return t}(a),c=function(e,t,n){const{prerenderId:r}=e;if(r){for(;n.next()&&n.currentElement;){const e=n.currentElement;if(e.nodeType!==Node.COMMENT_NODE)continue;if(!e.textContent)continue;const t=pt.exec(e.textContent),o=t&&t[1];if(o)return yt(o,r),e}throw new Error(`Could not find an end component comment for '${t}'.`)}}(i,n,e);if(t!==i.type)return;switch(i.type){case"webassembly":return o=n,s=c,vt(r=i),{...r,uniqueId:gt++,start:o,end:s};case"server":return function(e,t,n){return mt(e),{...e,uniqueId:gt++,start:t,end:n}}(i,n,c);case"auto":return function(e,t,n){return mt(e),vt(e),{...e,uniqueId:gt++,start:t,end:n}}(i,n,c)}}catch(e){throw new Error(`Found malformed component comment at ${n.textContent}`)}}}let gt=0;function mt(e){const{descriptor:t,sequence:n}=e;if(!t)throw new Error("descriptor must be defined when using a descriptor.");if(void 0===n)throw new Error("sequence must be defined when using a descriptor.");if(!Number.isInteger(n))throw new Error(`Error parsing the sequence '${n}' for component '${JSON.stringify(e)}'`)}function vt(e){const{assembly:t,typeName:n}=e;if(!t)throw new Error("assembly must be defined when using a descriptor.");if(!n)throw new Error("typeName must be defined when using a descriptor.");e.parameterDefinitions=e.parameterDefinitions&&atob(e.parameterDefinitions),e.parameterValues=e.parameterValues&&atob(e.parameterValues)}function yt(e,t){const n=JSON.parse(e);if(1!==Object.keys(n).length)throw new Error(`Invalid end of component comment: '${e}'`);const r=n.prerenderId;if(!r)throw new Error(`End of component comment must have a value for the prerendered property: '${e}'`);if(r!==t)throw new Error(`End of component comment prerendered property must match the start comment prerender id: '${t}', '${r}'`)}class wt{constructor(e){this.childNodes=e,this.currentIndex=-1,this.length=e.length}next(){return this.currentIndex++,this.currentIndex{n+=`0x${e<16?"0":""}${e.toString(16)} `})),n.substr(0,n.length-1)}(e)}'`)):"string"==typeof e&&(n=`String data of length ${e.length}`,t&&(n+=`. Content: '${e}'`)),n}function Tt(e){return e&&"undefined"!=typeof ArrayBuffer&&(e instanceof ArrayBuffer||e.constructor&&"ArrayBuffer"===e.constructor.name)}async function Dt(e,t,n,r,o,s){const i={},[a,c]=At();i[a]=c,e.log(bt.Trace,`(${t} transport) sending data. ${kt(o,s.logMessageContent)}.`);const l=Tt(o)?"arraybuffer":"text",h=await n.post(r,{content:o,headers:{...i,...s.headers},responseType:l,timeout:s.timeout,withCredentials:s.withCredentials});e.log(bt.Trace,`(${t} transport) request complete. Response status: ${h.statusCode}.`)}class Rt{constructor(e,t){this._subject=e,this._observer=t}dispose(){const e=this._subject.observers.indexOf(this._observer);e>-1&&this._subject.observers.splice(e,1),0===this._subject.observers.length&&this._subject.cancelCallback&&this._subject.cancelCallback().catch((e=>{}))}}class xt{constructor(e){this._minLevel=e,this.out=console}log(e,t){if(e>=this._minLevel){const n=`[${(new Date).toISOString()}] ${bt[e]}: ${t}`;switch(e){case bt.Critical:case bt.Error:this.out.error(n);break;case bt.Warning:this.out.warn(n);break;case bt.Information:this.out.info(n);break;default:this.out.log(n)}}}}function At(){let e="X-SignalR-User-Agent";return It.isNode&&(e="User-Agent"),[e,Pt(Et,Nt(),It.isNode?"NodeJS":"Browser",Ut())]}function Pt(e,t,n,r){let o="Microsoft SignalR/";const s=e.split(".");return o+=`${s[0]}.${s[1]}`,o+=` (${e}; `,o+=t&&""!==t?`${t}; `:"Unknown OS; ",o+=`${n}`,o+=r?`; ${r}`:"; Unknown Runtime Version",o+=")",o}function Nt(){if(!It.isNode)return"";switch(process.platform){case"win32":return"Windows NT";case"darwin":return"macOS";case"linux":return"Linux";default:return process.platform}}function Ut(){if(It.isNode)return process.versions.node}function Mt(e){return e.stack?e.stack:e.message?e.message:`${e}`}class Bt{writeHandshakeRequest(e){return _t.write(JSON.stringify(e))}parseHandshakeResponse(e){let t,n;if(Tt(e)){const r=new Uint8Array(e),o=r.indexOf(_t.RecordSeparatorCode);if(-1===o)throw new Error("Message is incomplete.");const s=o+1;t=String.fromCharCode.apply(null,Array.prototype.slice.call(r.slice(0,s))),n=r.byteLength>s?r.slice(s).buffer:null}else{const r=e,o=r.indexOf(_t.RecordSeparator);if(-1===o)throw new Error("Message is incomplete.");const s=o+1;t=r.substring(0,s),n=r.length>s?r.substring(s):null}const r=_t.parse(t),o=JSON.parse(r[0]);if(o.type)throw new Error("Expected a handshake response from the server.");return[n,o]}}class Lt extends Error{constructor(e,t){const n=new.target.prototype;super(`${e}: Status code '${t}'`),this.statusCode=t,this.__proto__=n}}class $t extends Error{constructor(e="A timeout occurred."){const t=new.target.prototype;super(e),this.__proto__=t}}class Ot extends Error{constructor(e="An abort occurred."){const t=new.target.prototype;super(e),this.__proto__=t}}class Ft extends Error{constructor(e,t){const n=new.target.prototype;super(e),this.transport=t,this.errorType="UnsupportedTransportError",this.__proto__=n}}class Ht extends Error{constructor(e,t){const n=new.target.prototype;super(e),this.transport=t,this.errorType="DisabledTransportError",this.__proto__=n}}class jt extends Error{constructor(e,t){const n=new.target.prototype;super(e),this.transport=t,this.errorType="FailedToStartTransportError",this.__proto__=n}}class Wt extends Error{constructor(e){const t=new.target.prototype;super(e),this.errorType="FailedToNegotiateWithServerError",this.__proto__=t}}class zt extends Error{constructor(e,t){const n=new.target.prototype;super(e),this.innerErrors=t,this.__proto__=n}}var qt,Jt;!function(e){e[e.Invocation=1]="Invocation",e[e.StreamItem=2]="StreamItem",e[e.Completion=3]="Completion",e[e.StreamInvocation=4]="StreamInvocation",e[e.CancelInvocation=5]="CancelInvocation",e[e.Ping=6]="Ping",e[e.Close=7]="Close",e[e.Ack=8]="Ack",e[e.Sequence=9]="Sequence"}(qt||(qt={}));class Kt{constructor(){this.observers=[]}next(e){for(const t of this.observers)t.next(e)}error(e){for(const t of this.observers)t.error&&t.error(e)}complete(){for(const e of this.observers)e.complete&&e.complete()}subscribe(e){return this.observers.push(e),new Rt(this,e)}}class Vt{constructor(e,t,n){this._bufferSize=1e5,this._messages=[],this._totalMessageCount=0,this._waitForSequenceMessage=!1,this._nextReceivingSequenceId=1,this._latestReceivedSequenceId=0,this._bufferedByteCount=0,this._reconnectInProgress=!1,this._protocol=e,this._connection=t,this._bufferSize=n}async _send(e){const t=this._protocol.writeMessage(e);let n=Promise.resolve();if(this._isInvocationMessage(e)){this._totalMessageCount++;let e=()=>{},r=()=>{};Tt(t)?this._bufferedByteCount+=t.byteLength:this._bufferedByteCount+=t.length,this._bufferedByteCount>=this._bufferSize&&(n=new Promise(((t,n)=>{e=t,r=n}))),this._messages.push(new Xt(t,this._totalMessageCount,e,r))}try{this._reconnectInProgress||await this._connection.send(t)}catch{this._disconnected()}await n}_ack(e){let t=-1;for(let n=0;nthis._nextReceivingSequenceId?this._connection.stop(new Error("Sequence ID greater than amount of messages we've received.")):this._nextReceivingSequenceId=e.sequenceId}_disconnected(){this._reconnectInProgress=!0,this._waitForSequenceMessage=!0}async _resend(){const e=0!==this._messages.length?this._messages[0]._id:this._totalMessageCount+1;await this._connection.send(this._protocol.writeMessage({type:qt.Sequence,sequenceId:e}));const t=this._messages;for(const e of t)await this._connection.send(e._message);this._reconnectInProgress=!1}_dispose(e){null!=e||(e=new Error("Unable to reconnect to server."));for(const t of this._messages)t._rejector(e)}_isInvocationMessage(e){switch(e.type){case qt.Invocation:case qt.StreamItem:case qt.Completion:case qt.StreamInvocation:case qt.CancelInvocation:return!0;case qt.Close:case qt.Sequence:case qt.Ping:case qt.Ack:return!1}}_ackTimer(){void 0===this._ackTimerHandle&&(this._ackTimerHandle=setTimeout((async()=>{try{this._reconnectInProgress||await this._connection.send(this._protocol.writeMessage({type:qt.Ack,sequenceId:this._latestReceivedSequenceId}))}catch{}clearTimeout(this._ackTimerHandle),this._ackTimerHandle=void 0}),1e3))}}class Xt{constructor(e,t,n,r){this._message=e,this._id=t,this._resolver=n,this._rejector=r}}!function(e){e.Disconnected="Disconnected",e.Connecting="Connecting",e.Connected="Connected",e.Disconnecting="Disconnecting",e.Reconnecting="Reconnecting"}(Jt||(Jt={}));class Yt{static create(e,t,n,r,o,s,i){return new Yt(e,t,n,r,o,s,i)}constructor(e,t,n,r,o,s,i){this._nextKeepAlive=0,this._freezeEventListener=()=>{this._logger.log(bt.Warning,"The page is being frozen, this will likely lead to the connection being closed and messages being lost. For more information see the docs at https://learn.microsoft.com/aspnet/core/signalr/javascript-client#bsleep")},Ct.isRequired(e,"connection"),Ct.isRequired(t,"logger"),Ct.isRequired(n,"protocol"),this.serverTimeoutInMilliseconds=null!=o?o:3e4,this.keepAliveIntervalInMilliseconds=null!=s?s:15e3,this._statefulReconnectBufferSize=null!=i?i:1e5,this._logger=t,this._protocol=n,this.connection=e,this._reconnectPolicy=r,this._handshakeProtocol=new Bt,this.connection.onreceive=e=>this._processIncomingData(e),this.connection.onclose=e=>this._connectionClosed(e),this._callbacks={},this._methods={},this._closedCallbacks=[],this._reconnectingCallbacks=[],this._reconnectedCallbacks=[],this._invocationId=0,this._receivedHandshakeResponse=!1,this._connectionState=Jt.Disconnected,this._connectionStarted=!1,this._cachedPingMessage=this._protocol.writeMessage({type:qt.Ping})}get state(){return this._connectionState}get connectionId(){return this.connection&&this.connection.connectionId||null}get baseUrl(){return this.connection.baseUrl||""}set baseUrl(e){if(this._connectionState!==Jt.Disconnected&&this._connectionState!==Jt.Reconnecting)throw new Error("The HubConnection must be in the Disconnected or Reconnecting state to change the url.");if(!e)throw new Error("The HubConnection url must be a valid url.");this.connection.baseUrl=e}start(){return this._startPromise=this._startWithStateTransitions(),this._startPromise}async _startWithStateTransitions(){if(this._connectionState!==Jt.Disconnected)return Promise.reject(new Error("Cannot start a HubConnection that is not in the 'Disconnected' state."));this._connectionState=Jt.Connecting,this._logger.log(bt.Debug,"Starting HubConnection.");try{await this._startInternal(),It.isBrowser&&window.document.addEventListener("freeze",this._freezeEventListener),this._connectionState=Jt.Connected,this._connectionStarted=!0,this._logger.log(bt.Debug,"HubConnection connected successfully.")}catch(e){return this._connectionState=Jt.Disconnected,this._logger.log(bt.Debug,`HubConnection failed to start successfully because of error '${e}'.`),Promise.reject(e)}}async _startInternal(){this._stopDuringStartError=void 0,this._receivedHandshakeResponse=!1;const e=new Promise(((e,t)=>{this._handshakeResolver=e,this._handshakeRejecter=t}));await this.connection.start(this._protocol.transferFormat);try{let t=this._protocol.version;this.connection.features.reconnect||(t=1);const n={protocol:this._protocol.name,version:t};if(this._logger.log(bt.Debug,"Sending handshake request."),await this._sendMessage(this._handshakeProtocol.writeHandshakeRequest(n)),this._logger.log(bt.Information,`Using HubProtocol '${this._protocol.name}'.`),this._cleanupTimeout(),this._resetTimeoutPeriod(),this._resetKeepAliveInterval(),await e,this._stopDuringStartError)throw this._stopDuringStartError;!!this.connection.features.reconnect&&(this._messageBuffer=new Vt(this._protocol,this.connection,this._statefulReconnectBufferSize),this.connection.features.disconnected=this._messageBuffer._disconnected.bind(this._messageBuffer),this.connection.features.resend=()=>{if(this._messageBuffer)return this._messageBuffer._resend()}),this.connection.features.inherentKeepAlive||await this._sendMessage(this._cachedPingMessage)}catch(e){throw this._logger.log(bt.Debug,`Hub handshake failed with error '${e}' during start(). Stopping HubConnection.`),this._cleanupTimeout(),this._cleanupPingTimer(),await this.connection.stop(e),e}}async stop(){const e=this._startPromise;this.connection.features.reconnect=!1,this._stopPromise=this._stopInternal(),await this._stopPromise;try{await e}catch(e){}}_stopInternal(e){if(this._connectionState===Jt.Disconnected)return this._logger.log(bt.Debug,`Call to HubConnection.stop(${e}) ignored because it is already in the disconnected state.`),Promise.resolve();if(this._connectionState===Jt.Disconnecting)return this._logger.log(bt.Debug,`Call to HttpConnection.stop(${e}) ignored because the connection is already in the disconnecting state.`),this._stopPromise;const t=this._connectionState;return this._connectionState=Jt.Disconnecting,this._logger.log(bt.Debug,"Stopping HubConnection."),this._reconnectDelayHandle?(this._logger.log(bt.Debug,"Connection stopped during reconnect delay. Done reconnecting."),clearTimeout(this._reconnectDelayHandle),this._reconnectDelayHandle=void 0,this._completeClose(),Promise.resolve()):(t===Jt.Connected&&this._sendCloseMessage(),this._cleanupTimeout(),this._cleanupPingTimer(),this._stopDuringStartError=e||new Ot("The connection was stopped before the hub handshake could complete."),this.connection.stop(e))}async _sendCloseMessage(){try{await this._sendWithProtocol(this._createCloseMessage())}catch{}}stream(e,...t){const[n,r]=this._replaceStreamingParams(t),o=this._createStreamInvocation(e,t,r);let s;const i=new Kt;return i.cancelCallback=()=>{const e=this._createCancelInvocation(o.invocationId);return delete this._callbacks[o.invocationId],s.then((()=>this._sendWithProtocol(e)))},this._callbacks[o.invocationId]=(e,t)=>{t?i.error(t):e&&(e.type===qt.Completion?e.error?i.error(new Error(e.error)):i.complete():i.next(e.item))},s=this._sendWithProtocol(o).catch((e=>{i.error(e),delete this._callbacks[o.invocationId]})),this._launchStreams(n,s),i}_sendMessage(e){return this._resetKeepAliveInterval(),this.connection.send(e)}_sendWithProtocol(e){return this._messageBuffer?this._messageBuffer._send(e):this._sendMessage(this._protocol.writeMessage(e))}send(e,...t){const[n,r]=this._replaceStreamingParams(t),o=this._sendWithProtocol(this._createInvocation(e,t,!0,r));return this._launchStreams(n,o),o}invoke(e,...t){const[n,r]=this._replaceStreamingParams(t),o=this._createInvocation(e,t,!1,r);return new Promise(((e,t)=>{this._callbacks[o.invocationId]=(n,r)=>{r?t(r):n&&(n.type===qt.Completion?n.error?t(new Error(n.error)):e(n.result):t(new Error(`Unexpected message type: ${n.type}`)))};const r=this._sendWithProtocol(o).catch((e=>{t(e),delete this._callbacks[o.invocationId]}));this._launchStreams(n,r)}))}on(e,t){e&&t&&(e=e.toLowerCase(),this._methods[e]||(this._methods[e]=[]),-1===this._methods[e].indexOf(t)&&this._methods[e].push(t))}off(e,t){if(!e)return;e=e.toLowerCase();const n=this._methods[e];if(n)if(t){const r=n.indexOf(t);-1!==r&&(n.splice(r,1),0===n.length&&delete this._methods[e])}else delete this._methods[e]}onclose(e){e&&this._closedCallbacks.push(e)}onreconnecting(e){e&&this._reconnectingCallbacks.push(e)}onreconnected(e){e&&this._reconnectedCallbacks.push(e)}_processIncomingData(e){if(this._cleanupTimeout(),this._receivedHandshakeResponse||(e=this._processHandshakeResponse(e),this._receivedHandshakeResponse=!0),e){const t=this._protocol.parseMessages(e,this._logger);for(const e of t)if(!this._messageBuffer||this._messageBuffer._shouldProcessMessage(e))switch(e.type){case qt.Invocation:this._invokeClientMethod(e);break;case qt.StreamItem:case qt.Completion:{const t=this._callbacks[e.invocationId];if(t){e.type===qt.Completion&&delete this._callbacks[e.invocationId];try{t(e)}catch(e){this._logger.log(bt.Error,`Stream callback threw error: ${Mt(e)}`)}}break}case qt.Ping:break;case qt.Close:{this._logger.log(bt.Information,"Close message received from server.");const t=e.error?new Error("Server returned an error on close: "+e.error):void 0;!0===e.allowReconnect?this.connection.stop(t):this._stopPromise=this._stopInternal(t);break}case qt.Ack:this._messageBuffer&&this._messageBuffer._ack(e);break;case qt.Sequence:this._messageBuffer&&this._messageBuffer._resetSequence(e);break;default:this._logger.log(bt.Warning,`Invalid message type: ${e.type}.`)}}this._resetTimeoutPeriod()}_processHandshakeResponse(e){let t,n;try{[n,t]=this._handshakeProtocol.parseHandshakeResponse(e)}catch(e){const t="Error parsing handshake response: "+e;this._logger.log(bt.Error,t);const n=new Error(t);throw this._handshakeRejecter(n),n}if(t.error){const e="Server returned handshake error: "+t.error;this._logger.log(bt.Error,e);const n=new Error(e);throw this._handshakeRejecter(n),n}return this._logger.log(bt.Debug,"Server handshake complete."),this._handshakeResolver(),n}_resetKeepAliveInterval(){this.connection.features.inherentKeepAlive||(this._nextKeepAlive=(new Date).getTime()+this.keepAliveIntervalInMilliseconds,this._cleanupPingTimer())}_resetTimeoutPeriod(){if(!(this.connection.features&&this.connection.features.inherentKeepAlive||(this._timeoutHandle=setTimeout((()=>this.serverTimeout()),this.serverTimeoutInMilliseconds),void 0!==this._pingServerHandle))){let e=this._nextKeepAlive-(new Date).getTime();e<0&&(e=0),this._pingServerHandle=setTimeout((async()=>{if(this._connectionState===Jt.Connected)try{await this._sendMessage(this._cachedPingMessage)}catch{this._cleanupPingTimer()}}),e)}}serverTimeout(){this.connection.stop(new Error("Server timeout elapsed without receiving a message from the server."))}async _invokeClientMethod(e){const t=e.target.toLowerCase(),n=this._methods[t];if(!n)return this._logger.log(bt.Warning,`No client method with the name '${t}' found.`),void(e.invocationId&&(this._logger.log(bt.Warning,`No result given for '${t}' method and invocation ID '${e.invocationId}'.`),await this._sendWithProtocol(this._createCompletionMessage(e.invocationId,"Client didn't provide a result.",null))));const r=n.slice(),o=!!e.invocationId;let s,i,a;for(const n of r)try{const r=s;s=await n.apply(this,e.arguments),o&&s&&r&&(this._logger.log(bt.Error,`Multiple results provided for '${t}'. Sending error to server.`),a=this._createCompletionMessage(e.invocationId,"Client provided multiple results.",null)),i=void 0}catch(e){i=e,this._logger.log(bt.Error,`A callback for the method '${t}' threw error '${e}'.`)}a?await this._sendWithProtocol(a):o?(i?a=this._createCompletionMessage(e.invocationId,`${i}`,null):void 0!==s?a=this._createCompletionMessage(e.invocationId,null,s):(this._logger.log(bt.Warning,`No result given for '${t}' method and invocation ID '${e.invocationId}'.`),a=this._createCompletionMessage(e.invocationId,"Client didn't provide a result.",null)),await this._sendWithProtocol(a)):s&&this._logger.log(bt.Error,`Result given for '${t}' method but server is not expecting a result.`)}_connectionClosed(e){this._logger.log(bt.Debug,`HubConnection.connectionClosed(${e}) called while in state ${this._connectionState}.`),this._stopDuringStartError=this._stopDuringStartError||e||new Ot("The underlying connection was closed before the hub handshake could complete."),this._handshakeResolver&&this._handshakeResolver(),this._cancelCallbacksWithError(e||new Error("Invocation canceled due to the underlying connection being closed.")),this._cleanupTimeout(),this._cleanupPingTimer(),this._connectionState===Jt.Disconnecting?this._completeClose(e):this._connectionState===Jt.Connected&&this._reconnectPolicy?this._reconnect(e):this._connectionState===Jt.Connected&&this._completeClose(e)}_completeClose(e){if(this._connectionStarted){this._connectionState=Jt.Disconnected,this._connectionStarted=!1,this._messageBuffer&&(this._messageBuffer._dispose(null!=e?e:new Error("Connection closed.")),this._messageBuffer=void 0),It.isBrowser&&window.document.removeEventListener("freeze",this._freezeEventListener);try{this._closedCallbacks.forEach((t=>t.apply(this,[e])))}catch(t){this._logger.log(bt.Error,`An onclose callback called with error '${e}' threw error '${t}'.`)}}}async _reconnect(e){const t=Date.now();let n=0,r=void 0!==e?e:new Error("Attempting to reconnect due to a unknown error."),o=this._getNextRetryDelay(n++,0,r);if(null===o)return this._logger.log(bt.Debug,"Connection not reconnecting because the IRetryPolicy returned null on the first reconnect attempt."),void this._completeClose(e);if(this._connectionState=Jt.Reconnecting,e?this._logger.log(bt.Information,`Connection reconnecting because of error '${e}'.`):this._logger.log(bt.Information,"Connection reconnecting."),0!==this._reconnectingCallbacks.length){try{this._reconnectingCallbacks.forEach((t=>t.apply(this,[e])))}catch(t){this._logger.log(bt.Error,`An onreconnecting callback called with error '${e}' threw error '${t}'.`)}if(this._connectionState!==Jt.Reconnecting)return void this._logger.log(bt.Debug,"Connection left the reconnecting state in onreconnecting callback. Done reconnecting.")}for(;null!==o;){if(this._logger.log(bt.Information,`Reconnect attempt number ${n} will start in ${o} ms.`),await new Promise((e=>{this._reconnectDelayHandle=setTimeout(e,o)})),this._reconnectDelayHandle=void 0,this._connectionState!==Jt.Reconnecting)return void this._logger.log(bt.Debug,"Connection left the reconnecting state during reconnect delay. Done reconnecting.");try{if(await this._startInternal(),this._connectionState=Jt.Connected,this._logger.log(bt.Information,"HubConnection reconnected successfully."),0!==this._reconnectedCallbacks.length)try{this._reconnectedCallbacks.forEach((e=>e.apply(this,[this.connection.connectionId])))}catch(e){this._logger.log(bt.Error,`An onreconnected callback called with connectionId '${this.connection.connectionId}; threw error '${e}'.`)}return}catch(e){if(this._logger.log(bt.Information,`Reconnect attempt failed because of error '${e}'.`),this._connectionState!==Jt.Reconnecting)return this._logger.log(bt.Debug,`Connection moved to the '${this._connectionState}' from the reconnecting state during reconnect attempt. Done reconnecting.`),void(this._connectionState===Jt.Disconnecting&&this._completeClose());r=e instanceof Error?e:new Error(e.toString()),o=this._getNextRetryDelay(n++,Date.now()-t,r)}}this._logger.log(bt.Information,`Reconnect retries have been exhausted after ${Date.now()-t} ms and ${n} failed attempts. Connection disconnecting.`),this._completeClose()}_getNextRetryDelay(e,t,n){try{return this._reconnectPolicy.nextRetryDelayInMilliseconds({elapsedMilliseconds:t,previousRetryCount:e,retryReason:n})}catch(n){return this._logger.log(bt.Error,`IRetryPolicy.nextRetryDelayInMilliseconds(${e}, ${t}) threw error '${n}'.`),null}}_cancelCallbacksWithError(e){const t=this._callbacks;this._callbacks={},Object.keys(t).forEach((n=>{const r=t[n];try{r(null,e)}catch(t){this._logger.log(bt.Error,`Stream 'error' callback called with '${e}' threw error: ${Mt(t)}`)}}))}_cleanupPingTimer(){this._pingServerHandle&&(clearTimeout(this._pingServerHandle),this._pingServerHandle=void 0)}_cleanupTimeout(){this._timeoutHandle&&clearTimeout(this._timeoutHandle)}_createInvocation(e,t,n,r){if(n)return 0!==r.length?{arguments:t,streamIds:r,target:e,type:qt.Invocation}:{arguments:t,target:e,type:qt.Invocation};{const n=this._invocationId;return this._invocationId++,0!==r.length?{arguments:t,invocationId:n.toString(),streamIds:r,target:e,type:qt.Invocation}:{arguments:t,invocationId:n.toString(),target:e,type:qt.Invocation}}}_launchStreams(e,t){if(0!==e.length){t||(t=Promise.resolve());for(const n in e)e[n].subscribe({complete:()=>{t=t.then((()=>this._sendWithProtocol(this._createCompletionMessage(n))))},error:e=>{let r;r=e instanceof Error?e.message:e&&e.toString?e.toString():"Unknown error",t=t.then((()=>this._sendWithProtocol(this._createCompletionMessage(n,r))))},next:e=>{t=t.then((()=>this._sendWithProtocol(this._createStreamItemMessage(n,e))))}})}}_replaceStreamingParams(e){const t=[],n=[];for(let r=0;r0)&&(t=!1,this._accessToken=await this._accessTokenFactory()),this._setAuthorizationHeader(e);const n=await this._innerClient.send(e);return t&&401===n.statusCode&&this._accessTokenFactory?(this._accessToken=await this._accessTokenFactory(),this._setAuthorizationHeader(e),await this._innerClient.send(e)):n}_setAuthorizationHeader(e){e.headers||(e.headers={}),this._accessToken?e.headers[Zt.Authorization]=`Bearer ${this._accessToken}`:this._accessTokenFactory&&e.headers[Zt.Authorization]&&delete e.headers[Zt.Authorization]}getCookieString(e){return this._innerClient.getCookieString(e)}}class rn extends tn{constructor(e){super(),this._logger=e;const t={_fetchType:void 0,_jar:void 0};var r;r=t,"undefined"==typeof fetch&&(r._jar=new(n(628).CookieJar),"undefined"==typeof fetch?r._fetchType=n(200):r._fetchType=fetch,r._fetchType=n(203)(r._fetchType,r._jar),1)?(this._fetchType=t._fetchType,this._jar=t._jar):this._fetchType=fetch.bind(function(){if("undefined"!=typeof globalThis)return globalThis;if("undefined"!=typeof self)return self;if("undefined"!=typeof window)return window;if(void 0!==n.g)return n.g;throw new Error("could not find global")}()),this._abortControllerType=AbortController;const o={_abortControllerType:this._abortControllerType};(function(e){return"undefined"==typeof AbortController&&(e._abortControllerType=n(778),!0)})(o)&&(this._abortControllerType=o._abortControllerType)}async send(e){if(e.abortSignal&&e.abortSignal.aborted)throw new Ot;if(!e.method)throw new Error("No method defined.");if(!e.url)throw new Error("No url defined.");const t=new this._abortControllerType;let n;e.abortSignal&&(e.abortSignal.onabort=()=>{t.abort(),n=new Ot});let r,o=null;if(e.timeout){const r=e.timeout;o=setTimeout((()=>{t.abort(),this._logger.log(bt.Warning,"Timeout from HTTP request."),n=new $t}),r)}""===e.content&&(e.content=void 0),e.content&&(e.headers=e.headers||{},Tt(e.content)?e.headers["Content-Type"]="application/octet-stream":e.headers["Content-Type"]="text/plain;charset=UTF-8");try{r=await this._fetchType(e.url,{body:e.content,cache:"no-cache",credentials:!0===e.withCredentials?"include":"same-origin",headers:{"X-Requested-With":"XMLHttpRequest",...e.headers},method:e.method,mode:"cors",redirect:"follow",signal:t.signal})}catch(e){if(n)throw n;throw this._logger.log(bt.Warning,`Error from HTTP request. ${e}.`),e}finally{o&&clearTimeout(o),e.abortSignal&&(e.abortSignal.onabort=null)}if(!r.ok){const e=await on(r,"text");throw new Lt(e||r.statusText,r.status)}const s=on(r,e.responseType),i=await s;return new en(r.status,r.statusText,i)}getCookieString(e){return""}}function on(e,t){let n;switch(t){case"arraybuffer":n=e.arrayBuffer();break;case"text":default:n=e.text();break;case"blob":case"document":case"json":throw new Error(`${t} is not supported.`)}return n}class sn extends tn{constructor(e){super(),this._logger=e}send(e){return e.abortSignal&&e.abortSignal.aborted?Promise.reject(new Ot):e.method?e.url?new Promise(((t,n)=>{const r=new XMLHttpRequest;r.open(e.method,e.url,!0),r.withCredentials=void 0===e.withCredentials||e.withCredentials,r.setRequestHeader("X-Requested-With","XMLHttpRequest"),""===e.content&&(e.content=void 0),e.content&&(Tt(e.content)?r.setRequestHeader("Content-Type","application/octet-stream"):r.setRequestHeader("Content-Type","text/plain;charset=UTF-8"));const o=e.headers;o&&Object.keys(o).forEach((e=>{r.setRequestHeader(e,o[e])})),e.responseType&&(r.responseType=e.responseType),e.abortSignal&&(e.abortSignal.onabort=()=>{r.abort(),n(new Ot)}),e.timeout&&(r.timeout=e.timeout),r.onload=()=>{e.abortSignal&&(e.abortSignal.onabort=null),r.status>=200&&r.status<300?t(new en(r.status,r.statusText,r.response||r.responseText)):n(new Lt(r.response||r.responseText||r.statusText,r.status))},r.onerror=()=>{this._logger.log(bt.Warning,`Error from HTTP request. ${r.status}: ${r.statusText}.`),n(new Lt(r.statusText,r.status))},r.ontimeout=()=>{this._logger.log(bt.Warning,"Timeout from HTTP request."),n(new $t)},r.send(e.content)})):Promise.reject(new Error("No url defined.")):Promise.reject(new Error("No method defined."))}}class an extends tn{constructor(e){if(super(),"undefined"!=typeof fetch)this._httpClient=new rn(e);else{if("undefined"==typeof XMLHttpRequest)throw new Error("No usable HttpClient found.");this._httpClient=new sn(e)}}send(e){return e.abortSignal&&e.abortSignal.aborted?Promise.reject(new Ot):e.method?e.url?this._httpClient.send(e):Promise.reject(new Error("No url defined.")):Promise.reject(new Error("No method defined."))}getCookieString(e){return this._httpClient.getCookieString(e)}}var cn,ln;!function(e){e[e.None=0]="None",e[e.WebSockets=1]="WebSockets",e[e.ServerSentEvents=2]="ServerSentEvents",e[e.LongPolling=4]="LongPolling"}(cn||(cn={})),function(e){e[e.Text=1]="Text",e[e.Binary=2]="Binary"}(ln||(ln={}));class hn{constructor(){this._isAborted=!1,this.onabort=null}abort(){this._isAborted||(this._isAborted=!0,this.onabort&&this.onabort())}get signal(){return this}get aborted(){return this._isAborted}}class dn{get pollAborted(){return this._pollAbort.aborted}constructor(e,t,n){this._httpClient=e,this._logger=t,this._pollAbort=new hn,this._options=n,this._running=!1,this.onreceive=null,this.onclose=null}async connect(e,t){if(Ct.isRequired(e,"url"),Ct.isRequired(t,"transferFormat"),Ct.isIn(t,ln,"transferFormat"),this._url=e,this._logger.log(bt.Trace,"(LongPolling transport) Connecting."),t===ln.Binary&&"undefined"!=typeof XMLHttpRequest&&"string"!=typeof(new XMLHttpRequest).responseType)throw new Error("Binary protocols over XmlHttpRequest not implementing advanced features are not supported.");const[n,r]=At(),o={[n]:r,...this._options.headers},s={abortSignal:this._pollAbort.signal,headers:o,timeout:1e5,withCredentials:this._options.withCredentials};t===ln.Binary&&(s.responseType="arraybuffer");const i=`${e}&_=${Date.now()}`;this._logger.log(bt.Trace,`(LongPolling transport) polling: ${i}.`);const a=await this._httpClient.get(i,s);200!==a.statusCode?(this._logger.log(bt.Error,`(LongPolling transport) Unexpected response code: ${a.statusCode}.`),this._closeError=new Lt(a.statusText||"",a.statusCode),this._running=!1):this._running=!0,this._receiving=this._poll(this._url,s)}async _poll(e,t){try{for(;this._running;)try{const n=`${e}&_=${Date.now()}`;this._logger.log(bt.Trace,`(LongPolling transport) polling: ${n}.`);const r=await this._httpClient.get(n,t);204===r.statusCode?(this._logger.log(bt.Information,"(LongPolling transport) Poll terminated by server."),this._running=!1):200!==r.statusCode?(this._logger.log(bt.Error,`(LongPolling transport) Unexpected response code: ${r.statusCode}.`),this._closeError=new Lt(r.statusText||"",r.statusCode),this._running=!1):r.content?(this._logger.log(bt.Trace,`(LongPolling transport) data received. ${kt(r.content,this._options.logMessageContent)}.`),this.onreceive&&this.onreceive(r.content)):this._logger.log(bt.Trace,"(LongPolling transport) Poll timed out, reissuing.")}catch(e){this._running?e instanceof $t?this._logger.log(bt.Trace,"(LongPolling transport) Poll timed out, reissuing."):(this._closeError=e,this._running=!1):this._logger.log(bt.Trace,`(LongPolling transport) Poll errored after shutdown: ${e.message}`)}}finally{this._logger.log(bt.Trace,"(LongPolling transport) Polling complete."),this.pollAborted||this._raiseOnClose()}}async send(e){return this._running?Dt(this._logger,"LongPolling",this._httpClient,this._url,e,this._options):Promise.reject(new Error("Cannot send until the transport is connected"))}async stop(){this._logger.log(bt.Trace,"(LongPolling transport) Stopping polling."),this._running=!1,this._pollAbort.abort();try{await this._receiving,this._logger.log(bt.Trace,`(LongPolling transport) sending DELETE request to ${this._url}.`);const e={},[t,n]=At();e[t]=n;const r={headers:{...e,...this._options.headers},timeout:this._options.timeout,withCredentials:this._options.withCredentials};let o;try{await this._httpClient.delete(this._url,r)}catch(e){o=e}o?o instanceof Lt&&(404===o.statusCode?this._logger.log(bt.Trace,"(LongPolling transport) A 404 response was returned from sending a DELETE request."):this._logger.log(bt.Trace,`(LongPolling transport) Error sending a DELETE request: ${o}`)):this._logger.log(bt.Trace,"(LongPolling transport) DELETE request accepted.")}finally{this._logger.log(bt.Trace,"(LongPolling transport) Stop finished."),this._raiseOnClose()}}_raiseOnClose(){if(this.onclose){let e="(LongPolling transport) Firing onclose event.";this._closeError&&(e+=" Error: "+this._closeError),this._logger.log(bt.Trace,e),this.onclose(this._closeError)}}}class un{constructor(e,t,n,r){this._httpClient=e,this._accessToken=t,this._logger=n,this._options=r,this.onreceive=null,this.onclose=null}async connect(e,t){return Ct.isRequired(e,"url"),Ct.isRequired(t,"transferFormat"),Ct.isIn(t,ln,"transferFormat"),this._logger.log(bt.Trace,"(SSE transport) Connecting."),this._url=e,this._accessToken&&(e+=(e.indexOf("?")<0?"?":"&")+`access_token=${encodeURIComponent(this._accessToken)}`),new Promise(((n,r)=>{let o,s=!1;if(t===ln.Text){if(It.isBrowser||It.isWebWorker)o=new this._options.EventSource(e,{withCredentials:this._options.withCredentials});else{const t=this._httpClient.getCookieString(e),n={};n.Cookie=t;const[r,s]=At();n[r]=s,o=new this._options.EventSource(e,{withCredentials:this._options.withCredentials,headers:{...n,...this._options.headers}})}try{o.onmessage=e=>{if(this.onreceive)try{this._logger.log(bt.Trace,`(SSE transport) data received. ${kt(e.data,this._options.logMessageContent)}.`),this.onreceive(e.data)}catch(e){return void this._close(e)}},o.onerror=e=>{s?this._close():r(new Error("EventSource failed to connect. The connection could not be found on the server, either the connection ID is not present on the server, or a proxy is refusing/buffering the connection. If you have multiple servers check that sticky sessions are enabled."))},o.onopen=()=>{this._logger.log(bt.Information,`SSE connected to ${this._url}`),this._eventSource=o,s=!0,n()}}catch(e){return void r(e)}}else r(new Error("The Server-Sent Events transport only supports the 'Text' transfer format"))}))}async send(e){return this._eventSource?Dt(this._logger,"SSE",this._httpClient,this._url,e,this._options):Promise.reject(new Error("Cannot send until the transport is connected"))}stop(){return this._close(),Promise.resolve()}_close(e){this._eventSource&&(this._eventSource.close(),this._eventSource=void 0,this.onclose&&this.onclose(e))}}class pn{constructor(e,t,n,r,o,s){this._logger=n,this._accessTokenFactory=t,this._logMessageContent=r,this._webSocketConstructor=o,this._httpClient=e,this.onreceive=null,this.onclose=null,this._headers=s}async connect(e,t){let n;return Ct.isRequired(e,"url"),Ct.isRequired(t,"transferFormat"),Ct.isIn(t,ln,"transferFormat"),this._logger.log(bt.Trace,"(WebSockets transport) Connecting."),this._accessTokenFactory&&(n=await this._accessTokenFactory()),new Promise(((r,o)=>{let s;e=e.replace(/^http/,"ws");const i=this._httpClient.getCookieString(e);let a=!1;if(It.isReactNative){const t={},[r,o]=At();t[r]=o,n&&(t[Zt.Authorization]=`Bearer ${n}`),i&&(t[Zt.Cookie]=i),s=new this._webSocketConstructor(e,void 0,{headers:{...t,...this._headers}})}else n&&(e+=(e.indexOf("?")<0?"?":"&")+`access_token=${encodeURIComponent(n)}`);s||(s=new this._webSocketConstructor(e)),t===ln.Binary&&(s.binaryType="arraybuffer"),s.onopen=t=>{this._logger.log(bt.Information,`WebSocket connected to ${e}.`),this._webSocket=s,a=!0,r()},s.onerror=e=>{let t=null;t="undefined"!=typeof ErrorEvent&&e instanceof ErrorEvent?e.error:"There was an error with the transport",this._logger.log(bt.Information,`(WebSockets transport) ${t}.`)},s.onmessage=e=>{if(this._logger.log(bt.Trace,`(WebSockets transport) data received. ${kt(e.data,this._logMessageContent)}.`),this.onreceive)try{this.onreceive(e.data)}catch(e){return void this._close(e)}},s.onclose=e=>{if(a)this._close(e);else{let t=null;t="undefined"!=typeof ErrorEvent&&e instanceof ErrorEvent?e.error:"WebSocket failed to connect. The connection could not be found on the server, either the endpoint may not be a SignalR endpoint, the connection ID is not present on the server, or there is a proxy blocking WebSockets. If you have multiple servers check that sticky sessions are enabled.",o(new Error(t))}}}))}send(e){return this._webSocket&&this._webSocket.readyState===this._webSocketConstructor.OPEN?(this._logger.log(bt.Trace,`(WebSockets transport) sending data. ${kt(e,this._logMessageContent)}.`),this._webSocket.send(e),Promise.resolve()):Promise.reject("WebSocket is not in the OPEN state")}stop(){return this._webSocket&&this._close(void 0),Promise.resolve()}_close(e){this._webSocket&&(this._webSocket.onclose=()=>{},this._webSocket.onmessage=()=>{},this._webSocket.onerror=()=>{},this._webSocket.close(),this._webSocket=void 0),this._logger.log(bt.Trace,"(WebSockets transport) socket closed."),this.onclose&&(!this._isCloseEvent(e)||!1!==e.wasClean&&1e3===e.code?e instanceof Error?this.onclose(e):this.onclose():this.onclose(new Error(`WebSocket closed with status code: ${e.code} (${e.reason||"no reason given"}).`)))}_isCloseEvent(e){return e&&"boolean"==typeof e.wasClean&&"number"==typeof e.code}}class fn{constructor(e,t={}){if(this._stopPromiseResolver=()=>{},this.features={},this._negotiateVersion=1,Ct.isRequired(e,"url"),this._logger=function(e){return void 0===e?new xt(bt.Information):null===e?St.instance:void 0!==e.log?e:new xt(e)}(t.logger),this.baseUrl=this._resolveUrl(e),(t=t||{}).logMessageContent=void 0!==t.logMessageContent&&t.logMessageContent,"boolean"!=typeof t.withCredentials&&void 0!==t.withCredentials)throw new Error("withCredentials option was not a 'boolean' or 'undefined' value");t.withCredentials=void 0===t.withCredentials||t.withCredentials,t.timeout=void 0===t.timeout?1e5:t.timeout,"undefined"==typeof WebSocket||t.WebSocket||(t.WebSocket=WebSocket),"undefined"==typeof EventSource||t.EventSource||(t.EventSource=EventSource),this._httpClient=new nn(t.httpClient||new an(this._logger),t.accessTokenFactory),this._connectionState="Disconnected",this._connectionStarted=!1,this._options=t,this.onreceive=null,this.onclose=null}async start(e){if(e=e||ln.Binary,Ct.isIn(e,ln,"transferFormat"),this._logger.log(bt.Debug,`Starting connection with transfer format '${ln[e]}'.`),"Disconnected"!==this._connectionState)return Promise.reject(new Error("Cannot start an HttpConnection that is not in the 'Disconnected' state."));if(this._connectionState="Connecting",this._startInternalPromise=this._startInternal(e),await this._startInternalPromise,"Disconnecting"===this._connectionState){const e="Failed to start the HttpConnection before stop() was called.";return this._logger.log(bt.Error,e),await this._stopPromise,Promise.reject(new Ot(e))}if("Connected"!==this._connectionState){const e="HttpConnection.startInternal completed gracefully but didn't enter the connection into the connected state!";return this._logger.log(bt.Error,e),Promise.reject(new Ot(e))}this._connectionStarted=!0}send(e){return"Connected"!==this._connectionState?Promise.reject(new Error("Cannot send data if the connection is not in the 'Connected' State.")):(this._sendQueue||(this._sendQueue=new gn(this.transport)),this._sendQueue.send(e))}async stop(e){return"Disconnected"===this._connectionState?(this._logger.log(bt.Debug,`Call to HttpConnection.stop(${e}) ignored because the connection is already in the disconnected state.`),Promise.resolve()):"Disconnecting"===this._connectionState?(this._logger.log(bt.Debug,`Call to HttpConnection.stop(${e}) ignored because the connection is already in the disconnecting state.`),this._stopPromise):(this._connectionState="Disconnecting",this._stopPromise=new Promise((e=>{this._stopPromiseResolver=e})),await this._stopInternal(e),void await this._stopPromise)}async _stopInternal(e){this._stopError=e;try{await this._startInternalPromise}catch(e){}if(this.transport){try{await this.transport.stop()}catch(e){this._logger.log(bt.Error,`HttpConnection.transport.stop() threw error '${e}'.`),this._stopConnection()}this.transport=void 0}else this._logger.log(bt.Debug,"HttpConnection.transport is undefined in HttpConnection.stop() because start() failed.")}async _startInternal(e){let t=this.baseUrl;this._accessTokenFactory=this._options.accessTokenFactory,this._httpClient._accessTokenFactory=this._accessTokenFactory;try{if(this._options.skipNegotiation){if(this._options.transport!==cn.WebSockets)throw new Error("Negotiation can only be skipped when using the WebSocket transport directly.");this.transport=this._constructTransport(cn.WebSockets),await this._startTransport(t,e)}else{let n=null,r=0;do{if(n=await this._getNegotiationResponse(t),"Disconnecting"===this._connectionState||"Disconnected"===this._connectionState)throw new Ot("The connection was stopped during negotiation.");if(n.error)throw new Error(n.error);if(n.ProtocolVersion)throw new Error("Detected a connection attempt to an ASP.NET SignalR Server. This client only supports connecting to an ASP.NET Core SignalR Server. See https://aka.ms/signalr-core-differences for details.");if(n.url&&(t=n.url),n.accessToken){const e=n.accessToken;this._accessTokenFactory=()=>e,this._httpClient._accessToken=e,this._httpClient._accessTokenFactory=void 0}r++}while(n.url&&r<100);if(100===r&&n.url)throw new Error("Negotiate redirection limit exceeded.");await this._createTransport(t,this._options.transport,n,e)}this.transport instanceof dn&&(this.features.inherentKeepAlive=!0),"Connecting"===this._connectionState&&(this._logger.log(bt.Debug,"The HttpConnection connected successfully."),this._connectionState="Connected")}catch(e){return this._logger.log(bt.Error,"Failed to start the connection: "+e),this._connectionState="Disconnected",this.transport=void 0,this._stopPromiseResolver(),Promise.reject(e)}}async _getNegotiationResponse(e){const t={},[n,r]=At();t[n]=r;const o=this._resolveNegotiateUrl(e);this._logger.log(bt.Debug,`Sending negotiation request: ${o}.`);try{const e=await this._httpClient.post(o,{content:"",headers:{...t,...this._options.headers},timeout:this._options.timeout,withCredentials:this._options.withCredentials});if(200!==e.statusCode)return Promise.reject(new Error(`Unexpected status code returned from negotiate '${e.statusCode}'`));const n=JSON.parse(e.content);return(!n.negotiateVersion||n.negotiateVersion<1)&&(n.connectionToken=n.connectionId),n.useStatefulReconnect&&!0!==this._options._useStatefulReconnect?Promise.reject(new Wt("Client didn't negotiate Stateful Reconnect but the server did.")):n}catch(e){let t="Failed to complete negotiation with the server: "+e;return e instanceof Lt&&404===e.statusCode&&(t+=" Either this is not a SignalR endpoint or there is a proxy blocking the connection."),this._logger.log(bt.Error,t),Promise.reject(new Wt(t))}}_createConnectUrl(e,t){return t?e+(-1===e.indexOf("?")?"?":"&")+`id=${t}`:e}async _createTransport(e,t,n,r){let o=this._createConnectUrl(e,n.connectionToken);if(this._isITransport(t))return this._logger.log(bt.Debug,"Connection was provided an instance of ITransport, using that directly."),this.transport=t,await this._startTransport(o,r),void(this.connectionId=n.connectionId);const s=[],i=n.availableTransports||[];let a=n;for(const n of i){const i=this._resolveTransportOrError(n,t,r,!0===(null==a?void 0:a.useStatefulReconnect));if(i instanceof Error)s.push(`${n.transport} failed:`),s.push(i);else if(this._isITransport(i)){if(this.transport=i,!a){try{a=await this._getNegotiationResponse(e)}catch(e){return Promise.reject(e)}o=this._createConnectUrl(e,a.connectionToken)}try{return await this._startTransport(o,r),void(this.connectionId=a.connectionId)}catch(e){if(this._logger.log(bt.Error,`Failed to start the transport '${n.transport}': ${e}`),a=void 0,s.push(new jt(`${n.transport} failed: ${e}`,cn[n.transport])),"Connecting"!==this._connectionState){const e="Failed to select transport before stop() was called.";return this._logger.log(bt.Debug,e),Promise.reject(new Ot(e))}}}}return s.length>0?Promise.reject(new zt(`Unable to connect to the server with any of the available transports. ${s.join(" ")}`,s)):Promise.reject(new Error("None of the transports supported by the client are supported by the server."))}_constructTransport(e){switch(e){case cn.WebSockets:if(!this._options.WebSocket)throw new Error("'WebSocket' is not supported in your environment.");return new pn(this._httpClient,this._accessTokenFactory,this._logger,this._options.logMessageContent,this._options.WebSocket,this._options.headers||{});case cn.ServerSentEvents:if(!this._options.EventSource)throw new Error("'EventSource' is not supported in your environment.");return new un(this._httpClient,this._httpClient._accessToken,this._logger,this._options);case cn.LongPolling:return new dn(this._httpClient,this._logger,this._options);default:throw new Error(`Unknown transport: ${e}.`)}}_startTransport(e,t){return this.transport.onreceive=this.onreceive,this.features.reconnect?this.transport.onclose=async n=>{let r=!1;if(this.features.reconnect){try{this.features.disconnected(),await this.transport.connect(e,t),await this.features.resend()}catch{r=!0}r&&this._stopConnection(n)}else this._stopConnection(n)}:this.transport.onclose=e=>this._stopConnection(e),this.transport.connect(e,t)}_resolveTransportOrError(e,t,n,r){const o=cn[e.transport];if(null==o)return this._logger.log(bt.Debug,`Skipping transport '${e.transport}' because it is not supported by this client.`),new Error(`Skipping transport '${e.transport}' because it is not supported by this client.`);if(!function(e,t){return!e||0!=(t&e)}(t,o))return this._logger.log(bt.Debug,`Skipping transport '${cn[o]}' because it was disabled by the client.`),new Ht(`'${cn[o]}' is disabled by the client.`,o);if(!(e.transferFormats.map((e=>ln[e])).indexOf(n)>=0))return this._logger.log(bt.Debug,`Skipping transport '${cn[o]}' because it does not support the requested transfer format '${ln[n]}'.`),new Error(`'${cn[o]}' does not support ${ln[n]}.`);if(o===cn.WebSockets&&!this._options.WebSocket||o===cn.ServerSentEvents&&!this._options.EventSource)return this._logger.log(bt.Debug,`Skipping transport '${cn[o]}' because it is not supported in your environment.'`),new Ft(`'${cn[o]}' is not supported in your environment.`,o);this._logger.log(bt.Debug,`Selecting transport '${cn[o]}'.`);try{return this.features.reconnect=o===cn.WebSockets?r:void 0,this._constructTransport(o)}catch(e){return e}}_isITransport(e){return e&&"object"==typeof e&&"connect"in e}_stopConnection(e){if(this._logger.log(bt.Debug,`HttpConnection.stopConnection(${e}) called while in state ${this._connectionState}.`),this.transport=void 0,e=this._stopError||e,this._stopError=void 0,"Disconnected"!==this._connectionState){if("Connecting"===this._connectionState)throw this._logger.log(bt.Warning,`Call to HttpConnection.stopConnection(${e}) was ignored because the connection is still in the connecting state.`),new Error(`HttpConnection.stopConnection(${e}) was called while the connection is still in the connecting state.`);if("Disconnecting"===this._connectionState&&this._stopPromiseResolver(),e?this._logger.log(bt.Error,`Connection disconnected with error '${e}'.`):this._logger.log(bt.Information,"Connection disconnected."),this._sendQueue&&(this._sendQueue.stop().catch((e=>{this._logger.log(bt.Error,`TransportSendQueue.stop() threw error '${e}'.`)})),this._sendQueue=void 0),this.connectionId=void 0,this._connectionState="Disconnected",this._connectionStarted){this._connectionStarted=!1;try{this.onclose&&this.onclose(e)}catch(t){this._logger.log(bt.Error,`HttpConnection.onclose(${e}) threw error '${t}'.`)}}}else this._logger.log(bt.Debug,`Call to HttpConnection.stopConnection(${e}) was ignored because the connection is already in the disconnected state.`)}_resolveUrl(e){if(0===e.lastIndexOf("https://",0)||0===e.lastIndexOf("http://",0))return e;if(!It.isBrowser)throw new Error(`Cannot resolve '${e}'.`);const t=window.document.createElement("a");return t.href=e,this._logger.log(bt.Information,`Normalizing '${e}' to '${t.href}'.`),t.href}_resolveNegotiateUrl(e){const t=new URL(e);t.pathname.endsWith("/")?t.pathname+="negotiate":t.pathname+="/negotiate";const n=new URLSearchParams(t.searchParams);return n.has("negotiateVersion")||n.append("negotiateVersion",this._negotiateVersion.toString()),n.has("useStatefulReconnect")?"true"===n.get("useStatefulReconnect")&&(this._options._useStatefulReconnect=!0):!0===this._options._useStatefulReconnect&&n.append("useStatefulReconnect","true"),t.search=n.toString(),t.toString()}}class gn{constructor(e){this._transport=e,this._buffer=[],this._executing=!0,this._sendBufferedData=new mn,this._transportResult=new mn,this._sendLoopPromise=this._sendLoop()}send(e){return this._bufferData(e),this._transportResult||(this._transportResult=new mn),this._transportResult.promise}stop(){return this._executing=!1,this._sendBufferedData.resolve(),this._sendLoopPromise}_bufferData(e){if(this._buffer.length&&typeof this._buffer[0]!=typeof e)throw new Error(`Expected data to be of type ${typeof this._buffer} but was of type ${typeof e}`);this._buffer.push(e),this._sendBufferedData.resolve()}async _sendLoop(){for(;;){if(await this._sendBufferedData.promise,!this._executing){this._transportResult&&this._transportResult.reject("Connection stopped.");break}this._sendBufferedData=new mn;const e=this._transportResult;this._transportResult=void 0;const t="string"==typeof this._buffer[0]?this._buffer.join(""):gn._concatBuffers(this._buffer);this._buffer.length=0;try{await this._transport.send(t),e.resolve()}catch(t){e.reject(t)}}}static _concatBuffers(e){const t=e.map((e=>e.byteLength)).reduce(((e,t)=>e+t)),n=new Uint8Array(t);let r=0;for(const t of e)n.set(new Uint8Array(t),r),r+=t.byteLength;return n.buffer}}class mn{constructor(){this.promise=new Promise(((e,t)=>[this._resolver,this._rejecter]=[e,t]))}resolve(){this._resolver()}reject(e){this._rejecter(e)}}class vn{constructor(){this.name="json",this.version=2,this.transferFormat=ln.Text}parseMessages(e,t){if("string"!=typeof e)throw new Error("Invalid input for JSON hub protocol. Expected a string.");if(!e)return[];null===t&&(t=St.instance);const n=_t.parse(e),r=[];for(const e of n){const n=JSON.parse(e);if("number"!=typeof n.type)throw new Error("Invalid payload.");switch(n.type){case qt.Invocation:this._isInvocationMessage(n);break;case qt.StreamItem:this._isStreamItemMessage(n);break;case qt.Completion:this._isCompletionMessage(n);break;case qt.Ping:case qt.Close:break;case qt.Ack:this._isAckMessage(n);break;case qt.Sequence:this._isSequenceMessage(n);break;default:t.log(bt.Information,"Unknown message type '"+n.type+"' ignored.");continue}r.push(n)}return r}writeMessage(e){return _t.write(JSON.stringify(e))}_isInvocationMessage(e){this._assertNotEmptyString(e.target,"Invalid payload for Invocation message."),void 0!==e.invocationId&&this._assertNotEmptyString(e.invocationId,"Invalid payload for Invocation message.")}_isStreamItemMessage(e){if(this._assertNotEmptyString(e.invocationId,"Invalid payload for StreamItem message."),void 0===e.item)throw new Error("Invalid payload for StreamItem message.")}_isCompletionMessage(e){if(e.result&&e.error)throw new Error("Invalid payload for Completion message.");!e.result&&e.error&&this._assertNotEmptyString(e.error,"Invalid payload for Completion message."),this._assertNotEmptyString(e.invocationId,"Invalid payload for Completion message.")}_isAckMessage(e){if("number"!=typeof e.sequenceId)throw new Error("Invalid SequenceId for Ack message.")}_isSequenceMessage(e){if("number"!=typeof e.sequenceId)throw new Error("Invalid SequenceId for Sequence message.")}_assertNotEmptyString(e,t){if("string"!=typeof e||""===e)throw new Error(t)}}const yn={trace:bt.Trace,debug:bt.Debug,info:bt.Information,information:bt.Information,warn:bt.Warning,warning:bt.Warning,error:bt.Error,critical:bt.Critical,none:bt.None};class wn{configureLogging(e){if(Ct.isRequired(e,"logging"),function(e){return void 0!==e.log}(e))this.logger=e;else if("string"==typeof e){const t=function(e){const t=yn[e.toLowerCase()];if(void 0!==t)return t;throw new Error(`Unknown log level: ${e}`)}(e);this.logger=new xt(t)}else this.logger=new xt(e);return this}withUrl(e,t){return Ct.isRequired(e,"url"),Ct.isNotEmpty(e,"url"),this.url=e,this.httpConnectionOptions="object"==typeof t?{...this.httpConnectionOptions,...t}:{...this.httpConnectionOptions,transport:t},this}withHubProtocol(e){return Ct.isRequired(e,"protocol"),this.protocol=e,this}withAutomaticReconnect(e){if(this.reconnectPolicy)throw new Error("A reconnectPolicy has already been set.");return e?Array.isArray(e)?this.reconnectPolicy=new Qt(e):this.reconnectPolicy=e:this.reconnectPolicy=new Qt,this}withServerTimeout(e){return Ct.isRequired(e,"milliseconds"),this._serverTimeoutInMilliseconds=e,this}withKeepAliveInterval(e){return Ct.isRequired(e,"milliseconds"),this._keepAliveIntervalInMilliseconds=e,this}withStatefulReconnect(e){return void 0===this.httpConnectionOptions&&(this.httpConnectionOptions={}),this.httpConnectionOptions._useStatefulReconnect=!0,this._statefulReconnectBufferSize=null==e?void 0:e.bufferSize,this}build(){const e=this.httpConnectionOptions||{};if(void 0===e.logger&&(e.logger=this.logger),!this.url)throw new Error("The 'HubConnectionBuilder.withUrl' method must be called before building the connection.");const t=new fn(this.url,e);return Yt.create(t,this.logger||St.instance,this.protocol||new vn,this.reconnectPolicy,this._serverTimeoutInMilliseconds,this._keepAliveIntervalInMilliseconds,this._statefulReconnectBufferSize)}}var _n;!function(e){e[e.Default=0]="Default",e[e.Server=1]="Server",e[e.WebAssembly=2]="WebAssembly",e[e.WebView=3]="WebView"}(_n||(_n={}));var bn,Sn,En,Cn=4294967295;function In(e,t,n){var r=Math.floor(n/4294967296),o=n;e.setUint32(t,r),e.setUint32(t+4,o)}function kn(e,t){return 4294967296*e.getInt32(t)+e.getUint32(t+4)}var Tn=("undefined"==typeof process||"never"!==(null===(bn=null===process||void 0===process?void 0:process.env)||void 0===bn?void 0:bn.TEXT_ENCODING))&&"undefined"!=typeof TextEncoder&&"undefined"!=typeof TextDecoder;function Dn(e){for(var t=e.length,n=0,r=0;r=55296&&o<=56319&&r65535&&(h-=65536,s.push(h>>>10&1023|55296),h=56320|1023&h),s.push(h)}else s.push(a);s.length>=4096&&(i+=String.fromCharCode.apply(String,s),s.length=0)}return s.length>0&&(i+=String.fromCharCode.apply(String,s)),i}var Nn,Un=Tn?new TextDecoder:null,Mn=Tn?"undefined"!=typeof process&&"force"!==(null===(En=null===process||void 0===process?void 0:process.env)||void 0===En?void 0:En.TEXT_DECODER)?200:0:Cn,Bn=function(e,t){this.type=e,this.data=t},Ln=(Nn=function(e,t){return Nn=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},Nn(e,t)},function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function n(){this.constructor=e}Nn(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}),$n=function(e){function t(n){var r=e.call(this,n)||this,o=Object.create(t.prototype);return Object.setPrototypeOf(r,o),Object.defineProperty(r,"name",{configurable:!0,enumerable:!1,value:t.name}),r}return Ln(t,e),t}(Error),On={type:-1,encode:function(e){var t,n,r,o;return e instanceof Date?function(e){var t,n=e.sec,r=e.nsec;if(n>=0&&r>=0&&n<=17179869183){if(0===r&&n<=4294967295){var o=new Uint8Array(4);return(t=new DataView(o.buffer)).setUint32(0,n),o}var s=n/4294967296,i=4294967295&n;return o=new Uint8Array(8),(t=new DataView(o.buffer)).setUint32(0,r<<2|3&s),t.setUint32(4,i),o}return o=new Uint8Array(12),(t=new DataView(o.buffer)).setUint32(0,r),In(t,4,n),o}((r=1e6*((t=e.getTime())-1e3*(n=Math.floor(t/1e3))),{sec:n+(o=Math.floor(r/1e9)),nsec:r-1e9*o})):null},decode:function(e){var t=function(e){var t=new DataView(e.buffer,e.byteOffset,e.byteLength);switch(e.byteLength){case 4:return{sec:t.getUint32(0),nsec:0};case 8:var n=t.getUint32(0);return{sec:4294967296*(3&n)+t.getUint32(4),nsec:n>>>2};case 12:return{sec:kn(t,4),nsec:t.getUint32(0)};default:throw new $n("Unrecognized data size for timestamp (expected 4, 8, or 12): ".concat(e.length))}}(e);return new Date(1e3*t.sec+t.nsec/1e6)}},Fn=function(){function e(){this.builtInEncoders=[],this.builtInDecoders=[],this.encoders=[],this.decoders=[],this.register(On)}return e.prototype.register=function(e){var t=e.type,n=e.encode,r=e.decode;if(t>=0)this.encoders[t]=n,this.decoders[t]=r;else{var o=1+t;this.builtInEncoders[o]=n,this.builtInDecoders[o]=r}},e.prototype.tryToEncode=function(e,t){for(var n=0;nthis.maxDepth)throw new Error("Too deep objects in depth ".concat(t));null==e?this.encodeNil():"boolean"==typeof e?this.encodeBoolean(e):"number"==typeof e?this.encodeNumber(e):"string"==typeof e?this.encodeString(e):this.encodeObject(e,t)},e.prototype.ensureBufferSizeToWrite=function(e){var t=this.pos+e;this.view.byteLength=0?e<128?this.writeU8(e):e<256?(this.writeU8(204),this.writeU8(e)):e<65536?(this.writeU8(205),this.writeU16(e)):e<4294967296?(this.writeU8(206),this.writeU32(e)):(this.writeU8(207),this.writeU64(e)):e>=-32?this.writeU8(224|e+32):e>=-128?(this.writeU8(208),this.writeI8(e)):e>=-32768?(this.writeU8(209),this.writeI16(e)):e>=-2147483648?(this.writeU8(210),this.writeI32(e)):(this.writeU8(211),this.writeI64(e)):this.forceFloat32?(this.writeU8(202),this.writeF32(e)):(this.writeU8(203),this.writeF64(e))},e.prototype.writeStringHeader=function(e){if(e<32)this.writeU8(160+e);else if(e<256)this.writeU8(217),this.writeU8(e);else if(e<65536)this.writeU8(218),this.writeU16(e);else{if(!(e<4294967296))throw new Error("Too long string: ".concat(e," bytes in UTF-8"));this.writeU8(219),this.writeU32(e)}},e.prototype.encodeString=function(e){if(e.length>xn){var t=Dn(e);this.ensureBufferSizeToWrite(5+t),this.writeStringHeader(t),An(e,this.bytes,this.pos),this.pos+=t}else t=Dn(e),this.ensureBufferSizeToWrite(5+t),this.writeStringHeader(t),function(e,t,n){for(var r=e.length,o=n,s=0;s>6&31|192;else{if(i>=55296&&i<=56319&&s>12&15|224,t[o++]=i>>6&63|128):(t[o++]=i>>18&7|240,t[o++]=i>>12&63|128,t[o++]=i>>6&63|128)}t[o++]=63&i|128}else t[o++]=i}}(e,this.bytes,this.pos),this.pos+=t},e.prototype.encodeObject=function(e,t){var n=this.extensionCodec.tryToEncode(e,this.context);if(null!=n)this.encodeExtension(n);else if(Array.isArray(e))this.encodeArray(e,t);else if(ArrayBuffer.isView(e))this.encodeBinary(e);else{if("object"!=typeof e)throw new Error("Unrecognized object: ".concat(Object.prototype.toString.apply(e)));this.encodeMap(e,t)}},e.prototype.encodeBinary=function(e){var t=e.byteLength;if(t<256)this.writeU8(196),this.writeU8(t);else if(t<65536)this.writeU8(197),this.writeU16(t);else{if(!(t<4294967296))throw new Error("Too large binary: ".concat(t));this.writeU8(198),this.writeU32(t)}var n=Hn(e);this.writeU8a(n)},e.prototype.encodeArray=function(e,t){var n=e.length;if(n<16)this.writeU8(144+n);else if(n<65536)this.writeU8(220),this.writeU16(n);else{if(!(n<4294967296))throw new Error("Too large array: ".concat(n));this.writeU8(221),this.writeU32(n)}for(var r=0,o=e;r0&&e<=this.maxKeyLength},e.prototype.find=function(e,t,n){e:for(var r=0,o=this.caches[n-1];r=this.maxLengthPerKey?n[Math.random()*n.length|0]=r:n.push(r)},e.prototype.decode=function(e,t,n){var r=this.find(e,t,n);if(null!=r)return this.hit++,r;this.miss++;var o=Pn(e,t,n),s=Uint8Array.prototype.slice.call(e,t,t+n);return this.store(s,o),o},e}(),qn=function(e,t){var n,r,o,s,i={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return s={next:a(0),throw:a(1),return:a(2)},"function"==typeof Symbol&&(s[Symbol.iterator]=function(){return this}),s;function a(s){return function(a){return function(s){if(n)throw new TypeError("Generator is already executing.");for(;i;)try{if(n=1,r&&(o=2&s[0]?r.return:s[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,s[1])).done)return o;switch(r=0,o&&(s=[2&s[0],o.value]),s[0]){case 0:case 1:o=s;break;case 4:return i.label++,{value:s[1],done:!1};case 5:i.label++,r=s[1],s=[0];continue;case 7:s=i.ops.pop(),i.trys.pop();continue;default:if(!((o=(o=i.trys).length>0&&o[o.length-1])||6!==s[0]&&2!==s[0])){i=0;continue}if(3===s[0]&&(!o||s[1]>o[0]&&s[1]=e},e.prototype.createExtraByteError=function(e){var t=this.view,n=this.pos;return new RangeError("Extra ".concat(t.byteLength-n," of ").concat(t.byteLength," byte(s) found at buffer[").concat(e,"]"))},e.prototype.decode=function(e){this.reinitializeState(),this.setBuffer(e);var t=this.doDecodeSync();if(this.hasRemaining(1))throw this.createExtraByteError(this.pos);return t},e.prototype.decodeMulti=function(e){return qn(this,(function(t){switch(t.label){case 0:this.reinitializeState(),this.setBuffer(e),t.label=1;case 1:return this.hasRemaining(1)?[4,this.doDecodeSync()]:[3,3];case 2:return t.sent(),[3,1];case 3:return[2]}}))},e.prototype.decodeAsync=function(e){var t,n,r,o,s,i,a;return s=this,void 0,a=function(){var s,i,a,c,l,h,d,u;return qn(this,(function(p){switch(p.label){case 0:s=!1,p.label=1;case 1:p.trys.push([1,6,7,12]),t=Jn(e),p.label=2;case 2:return[4,t.next()];case 3:if((n=p.sent()).done)return[3,5];if(a=n.value,s)throw this.createExtraByteError(this.totalPos);this.appendBuffer(a);try{i=this.doDecodeSync(),s=!0}catch(e){if(!(e instanceof Yn))throw e}this.totalPos+=this.pos,p.label=4;case 4:return[3,2];case 5:return[3,12];case 6:return c=p.sent(),r={error:c},[3,12];case 7:return p.trys.push([7,,10,11]),n&&!n.done&&(o=t.return)?[4,o.call(t)]:[3,9];case 8:p.sent(),p.label=9;case 9:return[3,11];case 10:if(r)throw r.error;return[7];case 11:return[7];case 12:if(s){if(this.hasRemaining(1))throw this.createExtraByteError(this.totalPos);return[2,i]}throw h=(l=this).headByte,d=l.pos,u=l.totalPos,new RangeError("Insufficient data in parsing ".concat(Wn(h)," at ").concat(u," (").concat(d," in the current buffer)"))}}))},new((i=void 0)||(i=Promise))((function(e,t){function n(e){try{o(a.next(e))}catch(e){t(e)}}function r(e){try{o(a.throw(e))}catch(e){t(e)}}function o(t){var o;t.done?e(t.value):(o=t.value,o instanceof i?o:new i((function(e){e(o)}))).then(n,r)}o((a=a.apply(s,[])).next())}))},e.prototype.decodeArrayStream=function(e){return this.decodeMultiAsync(e,!0)},e.prototype.decodeStream=function(e){return this.decodeMultiAsync(e,!1)},e.prototype.decodeMultiAsync=function(e,t){return function(n,r,o){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var s,i=function(){var n,r,o,s,i,a,c,l,h;return qn(this,(function(d){switch(d.label){case 0:n=t,r=-1,d.label=1;case 1:d.trys.push([1,13,14,19]),o=Jn(e),d.label=2;case 2:return[4,Kn(o.next())];case 3:if((s=d.sent()).done)return[3,12];if(i=s.value,t&&0===r)throw this.createExtraByteError(this.totalPos);this.appendBuffer(i),n&&(r=this.readArraySize(),n=!1,this.complete()),d.label=4;case 4:d.trys.push([4,9,,10]),d.label=5;case 5:return[4,Kn(this.doDecodeSync())];case 6:return[4,d.sent()];case 7:return d.sent(),0==--r?[3,8]:[3,5];case 8:return[3,10];case 9:if(!((a=d.sent())instanceof Yn))throw a;return[3,10];case 10:this.totalPos+=this.pos,d.label=11;case 11:return[3,2];case 12:return[3,19];case 13:return c=d.sent(),l={error:c},[3,19];case 14:return d.trys.push([14,,17,18]),s&&!s.done&&(h=o.return)?[4,Kn(h.call(o))]:[3,16];case 15:d.sent(),d.label=16;case 16:return[3,18];case 17:if(l)throw l.error;return[7];case 18:return[7];case 19:return[2]}}))}.apply(n,r||[]),a=[];return s={},c("next"),c("throw"),c("return"),s[Symbol.asyncIterator]=function(){return this},s;function c(e){i[e]&&(s[e]=function(t){return new Promise((function(n,r){a.push([e,t,n,r])>1||l(e,t)}))})}function l(e,t){try{(n=i[e](t)).value instanceof Kn?Promise.resolve(n.value.v).then(h,d):u(a[0][2],n)}catch(e){u(a[0][3],e)}var n}function h(e){l("next",e)}function d(e){l("throw",e)}function u(e,t){e(t),a.shift(),a.length&&l(a[0][0],a[0][1])}}(this,arguments)},e.prototype.doDecodeSync=function(){e:for(;;){var e=this.readHeadByte(),t=void 0;if(e>=224)t=e-256;else if(e<192)if(e<128)t=e;else if(e<144){if(0!=(r=e-128)){this.pushMapState(r),this.complete();continue e}t={}}else if(e<160){if(0!=(r=e-144)){this.pushArrayState(r),this.complete();continue e}t=[]}else{var n=e-160;t=this.decodeUtf8String(n,0)}else if(192===e)t=null;else if(194===e)t=!1;else if(195===e)t=!0;else if(202===e)t=this.readF32();else if(203===e)t=this.readF64();else if(204===e)t=this.readU8();else if(205===e)t=this.readU16();else if(206===e)t=this.readU32();else if(207===e)t=this.readU64();else if(208===e)t=this.readI8();else if(209===e)t=this.readI16();else if(210===e)t=this.readI32();else if(211===e)t=this.readI64();else if(217===e)n=this.lookU8(),t=this.decodeUtf8String(n,1);else if(218===e)n=this.lookU16(),t=this.decodeUtf8String(n,2);else if(219===e)n=this.lookU32(),t=this.decodeUtf8String(n,4);else if(220===e){if(0!==(r=this.readU16())){this.pushArrayState(r),this.complete();continue e}t=[]}else if(221===e){if(0!==(r=this.readU32())){this.pushArrayState(r),this.complete();continue e}t=[]}else if(222===e){if(0!==(r=this.readU16())){this.pushMapState(r),this.complete();continue e}t={}}else if(223===e){if(0!==(r=this.readU32())){this.pushMapState(r),this.complete();continue e}t={}}else if(196===e){var r=this.lookU8();t=this.decodeBinary(r,1)}else if(197===e)r=this.lookU16(),t=this.decodeBinary(r,2);else if(198===e)r=this.lookU32(),t=this.decodeBinary(r,4);else if(212===e)t=this.decodeExtension(1,0);else if(213===e)t=this.decodeExtension(2,0);else if(214===e)t=this.decodeExtension(4,0);else if(215===e)t=this.decodeExtension(8,0);else if(216===e)t=this.decodeExtension(16,0);else if(199===e)r=this.lookU8(),t=this.decodeExtension(r,1);else if(200===e)r=this.lookU16(),t=this.decodeExtension(r,2);else{if(201!==e)throw new $n("Unrecognized type byte: ".concat(Wn(e)));r=this.lookU32(),t=this.decodeExtension(r,4)}this.complete();for(var o=this.stack;o.length>0;){var s=o[o.length-1];if(0===s.type){if(s.array[s.position]=t,s.position++,s.position!==s.size)continue e;o.pop(),t=s.array}else{if(1===s.type){if("string"!=(i=typeof t)&&"number"!==i)throw new $n("The type of key must be string or number but "+typeof t);if("__proto__"===t)throw new $n("The key __proto__ is not allowed");s.key=t,s.type=2;continue e}if(s.map[s.key]=t,s.readCount++,s.readCount!==s.size){s.key=null,s.type=1;continue e}o.pop(),t=s.map}}return t}var i},e.prototype.readHeadByte=function(){return-1===this.headByte&&(this.headByte=this.readU8()),this.headByte},e.prototype.complete=function(){this.headByte=-1},e.prototype.readArraySize=function(){var e=this.readHeadByte();switch(e){case 220:return this.readU16();case 221:return this.readU32();default:if(e<160)return e-144;throw new $n("Unrecognized array type byte: ".concat(Wn(e)))}},e.prototype.pushMapState=function(e){if(e>this.maxMapLength)throw new $n("Max length exceeded: map length (".concat(e,") > maxMapLengthLength (").concat(this.maxMapLength,")"));this.stack.push({type:1,size:e,key:null,readCount:0,map:{}})},e.prototype.pushArrayState=function(e){if(e>this.maxArrayLength)throw new $n("Max length exceeded: array length (".concat(e,") > maxArrayLength (").concat(this.maxArrayLength,")"));this.stack.push({type:0,size:e,array:new Array(e),position:0})},e.prototype.decodeUtf8String=function(e,t){var n;if(e>this.maxStrLength)throw new $n("Max length exceeded: UTF-8 byte length (".concat(e,") > maxStrLength (").concat(this.maxStrLength,")"));if(this.bytes.byteLengthMn?function(e,t,n){var r=e.subarray(t,t+n);return Un.decode(r)}(this.bytes,o,e):Pn(this.bytes,o,e),this.pos+=t+e,r},e.prototype.stateIsMapKey=function(){return this.stack.length>0&&1===this.stack[this.stack.length-1].type},e.prototype.decodeBinary=function(e,t){if(e>this.maxBinLength)throw new $n("Max length exceeded: bin length (".concat(e,") > maxBinLength (").concat(this.maxBinLength,")"));if(!this.hasRemaining(e+t))throw Gn;var n=this.pos+t,r=this.bytes.subarray(n,n+e);return this.pos+=t+e,r},e.prototype.decodeExtension=function(e,t){if(e>this.maxExtLength)throw new $n("Max length exceeded: ext length (".concat(e,") > maxExtLength (").concat(this.maxExtLength,")"));var n=this.view.getInt8(this.pos+t),r=this.decodeBinary(e,t+1);return this.extensionCodec.decode(r,n,this.context)},e.prototype.lookU8=function(){return this.view.getUint8(this.pos)},e.prototype.lookU16=function(){return this.view.getUint16(this.pos)},e.prototype.lookU32=function(){return this.view.getUint32(this.pos)},e.prototype.readU8=function(){var e=this.view.getUint8(this.pos);return this.pos++,e},e.prototype.readI8=function(){var e=this.view.getInt8(this.pos);return this.pos++,e},e.prototype.readU16=function(){var e=this.view.getUint16(this.pos);return this.pos+=2,e},e.prototype.readI16=function(){var e=this.view.getInt16(this.pos);return this.pos+=2,e},e.prototype.readU32=function(){var e=this.view.getUint32(this.pos);return this.pos+=4,e},e.prototype.readI32=function(){var e=this.view.getInt32(this.pos);return this.pos+=4,e},e.prototype.readU64=function(){var e,t,n=(e=this.view,t=this.pos,4294967296*e.getUint32(t)+e.getUint32(t+4));return this.pos+=8,n},e.prototype.readI64=function(){var e=kn(this.view,this.pos);return this.pos+=8,e},e.prototype.readF32=function(){var e=this.view.getFloat32(this.pos);return this.pos+=4,e},e.prototype.readF64=function(){var e=this.view.getFloat64(this.pos);return this.pos+=8,e},e}();class er{static write(e){let t=e.byteLength||e.length;const n=[];do{let e=127&t;t>>=7,t>0&&(e|=128),n.push(e)}while(t>0);t=e.byteLength||e.length;const r=new Uint8Array(n.length+t);return r.set(n,0),r.set(e,n.length),r.buffer}static parse(e){const t=[],n=new Uint8Array(e),r=[0,7,14,21,28];for(let o=0;o7)throw new Error("Messages bigger than 2GB are not supported.");if(!(n.byteLength>=o+i+a))throw new Error("Incomplete message.");t.push(n.slice?n.slice(o+i,o+i+a):n.subarray(o+i,o+i+a)),o=o+i+a}return t}}const tr=new Uint8Array([145,qt.Ping]);class nr{constructor(e){this.name="messagepack",this.version=2,this.transferFormat=ln.Binary,this._errorResult=1,this._voidResult=2,this._nonVoidResult=3,e=e||{},this._encoder=new jn(e.extensionCodec,e.context,e.maxDepth,e.initialBufferSize,e.sortKeys,e.forceFloat32,e.ignoreUndefined,e.forceIntegerToFloat),this._decoder=new Zn(e.extensionCodec,e.context,e.maxStrLength,e.maxBinLength,e.maxArrayLength,e.maxMapLength,e.maxExtLength)}parseMessages(e,t){if(!(n=e)||"undefined"==typeof ArrayBuffer||!(n instanceof ArrayBuffer||n.constructor&&"ArrayBuffer"===n.constructor.name))throw new Error("Invalid input for MessagePack hub protocol. Expected an ArrayBuffer.");var n;null===t&&(t=St.instance);const r=er.parse(e),o=[];for(const e of r){const n=this._parseMessage(e,t);n&&o.push(n)}return o}writeMessage(e){switch(e.type){case qt.Invocation:return this._writeInvocation(e);case qt.StreamInvocation:return this._writeStreamInvocation(e);case qt.StreamItem:return this._writeStreamItem(e);case qt.Completion:return this._writeCompletion(e);case qt.Ping:return er.write(tr);case qt.CancelInvocation:return this._writeCancelInvocation(e);case qt.Close:return this._writeClose();case qt.Ack:return this._writeAck(e);case qt.Sequence:return this._writeSequence(e);default:throw new Error("Invalid message type.")}}_parseMessage(e,t){if(0===e.length)throw new Error("Invalid payload.");const n=this._decoder.decode(e);if(0===n.length||!(n instanceof Array))throw new Error("Invalid payload.");const r=n[0];switch(r){case qt.Invocation:return this._createInvocationMessage(this._readHeaders(n),n);case qt.StreamItem:return this._createStreamItemMessage(this._readHeaders(n),n);case qt.Completion:return this._createCompletionMessage(this._readHeaders(n),n);case qt.Ping:return this._createPingMessage(n);case qt.Close:return this._createCloseMessage(n);case qt.Ack:return this._createAckMessage(n);case qt.Sequence:return this._createSequenceMessage(n);default:return t.log(bt.Information,"Unknown message type '"+r+"' ignored."),null}}_createCloseMessage(e){if(e.length<2)throw new Error("Invalid payload for Close message.");return{allowReconnect:e.length>=3?e[2]:void 0,error:e[1],type:qt.Close}}_createPingMessage(e){if(e.length<1)throw new Error("Invalid payload for Ping message.");return{type:qt.Ping}}_createInvocationMessage(e,t){if(t.length<5)throw new Error("Invalid payload for Invocation message.");const n=t[2];return n?{arguments:t[4],headers:e,invocationId:n,streamIds:[],target:t[3],type:qt.Invocation}:{arguments:t[4],headers:e,streamIds:[],target:t[3],type:qt.Invocation}}_createStreamItemMessage(e,t){if(t.length<4)throw new Error("Invalid payload for StreamItem message.");return{headers:e,invocationId:t[2],item:t[3],type:qt.StreamItem}}_createCompletionMessage(e,t){if(t.length<4)throw new Error("Invalid payload for Completion message.");const n=t[3];if(n!==this._voidResult&&t.length<5)throw new Error("Invalid payload for Completion message.");let r,o;switch(n){case this._errorResult:r=t[4];break;case this._nonVoidResult:o=t[4]}return{error:r,headers:e,invocationId:t[2],result:o,type:qt.Completion}}_createAckMessage(e){if(e.length<1)throw new Error("Invalid payload for Ack message.");return{sequenceId:e[1],type:qt.Ack}}_createSequenceMessage(e){if(e.length<1)throw new Error("Invalid payload for Sequence message.");return{sequenceId:e[1],type:qt.Sequence}}_writeInvocation(e){let t;return t=e.streamIds?this._encoder.encode([qt.Invocation,e.headers||{},e.invocationId||null,e.target,e.arguments,e.streamIds]):this._encoder.encode([qt.Invocation,e.headers||{},e.invocationId||null,e.target,e.arguments]),er.write(t.slice())}_writeStreamInvocation(e){let t;return t=e.streamIds?this._encoder.encode([qt.StreamInvocation,e.headers||{},e.invocationId,e.target,e.arguments,e.streamIds]):this._encoder.encode([qt.StreamInvocation,e.headers||{},e.invocationId,e.target,e.arguments]),er.write(t.slice())}_writeStreamItem(e){const t=this._encoder.encode([qt.StreamItem,e.headers||{},e.invocationId,e.item]);return er.write(t.slice())}_writeCompletion(e){const t=e.error?this._errorResult:void 0!==e.result?this._nonVoidResult:this._voidResult;let n;switch(t){case this._errorResult:n=this._encoder.encode([qt.Completion,e.headers||{},e.invocationId,t,e.error]);break;case this._voidResult:n=this._encoder.encode([qt.Completion,e.headers||{},e.invocationId,t]);break;case this._nonVoidResult:n=this._encoder.encode([qt.Completion,e.headers||{},e.invocationId,t,e.result])}return er.write(n.slice())}_writeCancelInvocation(e){const t=this._encoder.encode([qt.CancelInvocation,e.headers||{},e.invocationId]);return er.write(t.slice())}_writeClose(){const e=this._encoder.encode([qt.Close,null]);return er.write(e.slice())}_writeAck(e){const t=this._encoder.encode([qt.Ack,e.sequenceId]);return er.write(t.slice())}_writeSequence(e){const t=this._encoder.encode([qt.Sequence,e.sequenceId]);return er.write(t.slice())}_readHeaders(e){const t=e[1];if("object"!=typeof t)throw new Error("Invalid headers.");return t}}const rr="function"==typeof TextDecoder?new TextDecoder("utf-8"):null,or=rr?rr.decode.bind(rr):function(e){let t=0;const n=e.length,r=[],o=[];for(;t65535&&(o-=65536,r.push(o>>>10&1023|55296),o=56320|1023&o),r.push(o)}r.length>1024&&(o.push(String.fromCharCode.apply(null,r)),r.length=0)}return o.push(String.fromCharCode.apply(null,r)),o.join("")},sr=Math.pow(2,32),ir=Math.pow(2,21)-1;function ar(e,t){return e[t]|e[t+1]<<8|e[t+2]<<16|e[t+3]<<24}function cr(e,t){return e[t]+(e[t+1]<<8)+(e[t+2]<<16)+(e[t+3]<<24>>>0)}function lr(e,t){const n=cr(e,t+4);if(n>ir)throw new Error(`Cannot read uint64 with high order part ${n}, because the result would exceed Number.MAX_SAFE_INTEGER.`);return n*sr+cr(e,t)}class hr{constructor(e){this.batchData=e;const t=new fr(e);this.arrayRangeReader=new gr(e),this.arrayBuilderSegmentReader=new mr(e),this.diffReader=new dr(e),this.editReader=new ur(e,t),this.frameReader=new pr(e,t)}updatedComponents(){return ar(this.batchData,this.batchData.length-20)}referenceFrames(){return ar(this.batchData,this.batchData.length-16)}disposedComponentIds(){return ar(this.batchData,this.batchData.length-12)}disposedEventHandlerIds(){return ar(this.batchData,this.batchData.length-8)}updatedComponentsEntry(e,t){const n=e+4*t;return ar(this.batchData,n)}referenceFramesEntry(e,t){return e+20*t}disposedComponentIdsEntry(e,t){const n=e+4*t;return ar(this.batchData,n)}disposedEventHandlerIdsEntry(e,t){const n=e+8*t;return lr(this.batchData,n)}}class dr{constructor(e){this.batchDataUint8=e}componentId(e){return ar(this.batchDataUint8,e)}edits(e){return e+4}editsEntry(e,t){return e+16*t}}class ur{constructor(e,t){this.batchDataUint8=e,this.stringReader=t}editType(e){return ar(this.batchDataUint8,e)}siblingIndex(e){return ar(this.batchDataUint8,e+4)}newTreeIndex(e){return ar(this.batchDataUint8,e+8)}moveToSiblingIndex(e){return ar(this.batchDataUint8,e+8)}removedAttributeName(e){const t=ar(this.batchDataUint8,e+12);return this.stringReader.readString(t)}}class pr{constructor(e,t){this.batchDataUint8=e,this.stringReader=t}frameType(e){return ar(this.batchDataUint8,e)}subtreeLength(e){return ar(this.batchDataUint8,e+4)}elementReferenceCaptureId(e){const t=ar(this.batchDataUint8,e+4);return this.stringReader.readString(t)}componentId(e){return ar(this.batchDataUint8,e+8)}elementName(e){const t=ar(this.batchDataUint8,e+8);return this.stringReader.readString(t)}textContent(e){const t=ar(this.batchDataUint8,e+4);return this.stringReader.readString(t)}markupContent(e){const t=ar(this.batchDataUint8,e+4);return this.stringReader.readString(t)}attributeName(e){const t=ar(this.batchDataUint8,e+4);return this.stringReader.readString(t)}attributeValue(e){const t=ar(this.batchDataUint8,e+8);return this.stringReader.readString(t)}attributeEventHandlerId(e){return lr(this.batchDataUint8,e+12)}}class fr{constructor(e){this.batchDataUint8=e,this.stringTableStartIndex=ar(e,e.length-4)}readString(e){if(-1===e)return null;{const n=ar(this.batchDataUint8,this.stringTableStartIndex+4*e),r=function(e,t){let n=0,r=0;for(let o=0;o<4;o++){const s=e[t+o];if(n|=(127&s)<this.nextBatchId)return this.fatalError?(this.logger.log(st.Debug,`Received a new batch ${e} but errored out on a previous batch ${this.nextBatchId-1}`),void await n.send("OnRenderCompleted",this.nextBatchId-1,this.fatalError.toString())):void this.logger.log(st.Debug,`Waiting for batch ${this.nextBatchId}. Batch ${e} not processed.`);try{this.nextBatchId++,this.logger.log(st.Debug,`Applying batch ${e}.`),function(e,t){const n=ge[e];if(!n)throw new Error(`There is no browser renderer with ID ${e}.`);const r=t.arrayRangeReader,o=t.updatedComponents(),s=r.values(o),i=r.count(o),a=t.referenceFrames(),c=r.values(a),l=t.diffReader;for(let e=0;e{e.onclick=function(e){location.reload(),e.preventDefault()}})),document.querySelectorAll("#blazor-error-ui .dismiss").forEach((e=>{e.onclick=function(e){const t=document.querySelector("#blazor-error-ui");t&&(t.style.display="none"),e.preventDefault()}})))}class kr{constructor(t,n,r,o){this._firstUpdate=!0,this._renderingFailed=!1,this._disposed=!1,this._circuitId=void 0,this._applicationState=n,this._componentManager=t,this._options=r,this._logger=o,this._renderQueue=new vr(this._logger),this._dispatcher=e.attachDispatcher(this)}start(){if(this.isDisposedOrDisposing())throw new Error("Cannot start a disposed circuit.");return this._startPromise||(this._startPromise=this.startCore()),this._startPromise}updateRootComponents(e){var t,n;return this._firstUpdate?(this._firstUpdate=!1,null===(t=this._connection)||void 0===t?void 0:t.send("UpdateRootComponents",e,this._applicationState)):null===(n=this._connection)||void 0===n?void 0:n.send("UpdateRootComponents",e,"")}async startCore(){if(this._connection=await this.startConnection(),this._connection.state!==Jt.Connected)return!1;const e=JSON.stringify(this._componentManager.initialComponents.map((e=>{return t=e,{...t,start:void 0,end:void 0};var t})));if(this._circuitId=await this._connection.invoke("StartCircuit",Ue.getBaseURI(),Ue.getLocationHref(),e,this._applicationState||""),!this._circuitId)return!1;for(const e of this._options.circuitHandlers)e.onCircuitOpened&&e.onCircuitOpened();return!0}async startConnection(){var e,t;const n=new nr;n.name="blazorpack";const r=(new wn).withUrl("_blazor").withHubProtocol(n);this._options.configureSignalR(r);const o=r.build();o.on("JS.AttachComponent",((e,t)=>function(e,t,n,r){let o=ge[e];o||(o=new de(e),ge[e]=o),o.attachRootComponentToLogicalElement(n,t,!1)}(_n.Server,this.resolveElement(t),e))),o.on("JS.BeginInvokeJS",this._dispatcher.beginInvokeJSFromDotNet.bind(this._dispatcher)),o.on("JS.EndInvokeDotNet",this._dispatcher.endInvokeDotNetFromJS.bind(this._dispatcher)),o.on("JS.ReceiveByteArray",this._dispatcher.receiveByteArray.bind(this._dispatcher)),o.on("JS.BeginTransmitStream",(e=>{const t=new ReadableStream({start:t=>{o.stream("SendDotNetStreamToJS",e).subscribe({next:e=>t.enqueue(e),complete:()=>t.close(),error:e=>t.error(e)})}});this._dispatcher.supplyDotNetStream(e,t)})),o.on("JS.RenderBatch",(async(e,t)=>{var n,r;this._logger.log(bt.Debug,`Received render batch with id ${e} and ${t.byteLength} bytes.`),await this._renderQueue.processBatch(e,t,this._connection),null===(r=(n=this._componentManager).onAfterRenderBatch)||void 0===r||r.call(n,_n.Server)})),o.on("JS.EndUpdateRootComponents",(e=>{var t,n;null===(n=(t=this._componentManager).onAfterUpdateRootComponents)||void 0===n||n.call(t,e)})),o.on("JS.EndLocationChanging",ot._internal.navigationManager.endLocationChanging),o.onclose((e=>{this._interopMethodsForReconnection=function(e){const t=S.get(e);if(!t)throw new Error(`Interop methods are not registered for renderer ${e}`);return S.delete(e),t}(_n.Server),this._disposed||this._renderingFailed||this._options.reconnectionHandler.onConnectionDown(this._options.reconnectionOptions,e)})),o.on("JS.Error",(e=>{this._renderingFailed=!0,this.unhandledError(e),Ir()}));try{await o.start()}catch(e){if(this.unhandledError(e),"FailedToNegotiateWithServerError"===e.errorType)throw e;Ir(),e.innerErrors&&(e.innerErrors.some((e=>"UnsupportedTransportError"===e.errorType&&e.transport===cn.WebSockets))?this._logger.log(bt.Error,"Unable to connect, please ensure you are using an updated browser that supports WebSockets."):e.innerErrors.some((e=>"FailedToStartTransportError"===e.errorType&&e.transport===cn.WebSockets))?this._logger.log(bt.Error,"Unable to connect, please ensure WebSockets are available. A VPN or proxy may be blocking the connection."):e.innerErrors.some((e=>"DisabledTransportError"===e.errorType&&e.transport===cn.LongPolling))&&this._logger.log(bt.Error,"Unable to initiate a SignalR connection to the server. This might be because the server is not configured to support WebSockets. For additional details, visit https://aka.ms/blazor-server-websockets-error."))}return(null===(t=null===(e=o.connection)||void 0===e?void 0:e.features)||void 0===t?void 0:t.inherentKeepAlive)&&this._logger.log(bt.Warning,"Failed to connect via WebSockets, using the Long Polling fallback transport. This may be due to a VPN or proxy blocking the connection. To troubleshoot this, visit https://aka.ms/blazor-server-using-fallback-long-polling."),o}async disconnect(){var e;await(null===(e=this._connection)||void 0===e?void 0:e.stop())}async reconnect(){if(!this._circuitId)throw new Error("Circuit host not initialized.");return this._connection.state===Jt.Connected||(this._connection=await this.startConnection(),this._interopMethodsForReconnection&&(I(_n.Server,this._interopMethodsForReconnection),this._interopMethodsForReconnection=void 0),!!await this._connection.invoke("ConnectCircuit",this._circuitId)&&(this._options.reconnectionHandler.onConnectionUp(),!0))}beginInvokeDotNetFromJS(e,t,n,r,o){this.throwIfDispatchingWhenDisposed(),this._connection.send("BeginInvokeDotNetFromJS",e?e.toString():null,t,n,r||0,o)}endInvokeJSFromDotNet(e,t,n){this.throwIfDispatchingWhenDisposed(),this._connection.send("EndInvokeJSFromDotNet",e,t,n)}sendByteArray(e,t){this.throwIfDispatchingWhenDisposed(),this._connection.send("ReceiveByteArray",e,t)}throwIfDispatchingWhenDisposed(){if(this._disposed)throw new Error("The circuit associated with this dispatcher is no longer available.")}sendLocationChanged(e,t,n){return this._connection.send("OnLocationChanged",e,t,n)}sendLocationChanging(e,t,n,r){return this._connection.send("OnLocationChanging",e,t,n,r)}sendJsDataStream(e,t,n){return function(e,t,n,r){setTimeout((async()=>{let o=5,s=(new Date).valueOf();try{const i=t instanceof Blob?t.size:t.byteLength;let a=0,c=0;for(;a1)await e.send("ReceiveJSDataChunk",n,c,h,null);else{if(!await e.invoke("ReceiveJSDataChunk",n,c,h,null))break;const t=(new Date).valueOf(),r=t-s;s=t,o=Math.max(1,Math.round(500/Math.max(1,r)))}a+=l,c++}}catch(t){await e.send("ReceiveJSDataChunk",n,-1,null,t.toString())}}),0)}(this._connection,e,t,n)}resolveElement(e){const t=function(e){const t=f.get(e);if(t)return f.delete(e),t}(e);if(t)return O(t,!0);const n=Number.parseInt(e);if(!Number.isNaN(n))return function(e){const{start:t,end:n}=e,r=t[$];if(r){if(r!==e)throw new Error("The start component comment was already associated with another component descriptor.");return t}const o=t.parentNode;if(!o)throw new Error(`Comment not connected to the DOM ${t.textContent}`);const s=O(o,!0),i=K(s);t[L]=s,t[$]=e;const a=O(t);if(n){const e=K(a),r=Array.prototype.indexOf.call(i,a)+1;let o=null;for(;o!==n;){const n=i.splice(r,1)[0];if(!n)throw new Error("Could not find the end component comment in the parent logical node list");n[L]=t,e.push(n),o=n}}return a}(this._componentManager.resolveRootComponent(n));throw new Error(`Invalid sequence number or identifier '${e}'.`)}getRootComponentManager(){return this._componentManager}unhandledError(e){this._logger.log(bt.Error,e),this.disconnect()}getDisconnectFormData(){const e=new FormData,t=this._circuitId;return e.append("circuitId",t),e}didRenderingFail(){return this._renderingFailed}isDisposedOrDisposing(){return void 0!==this._disposePromise}sendDisconnectBeacon(){if(this._disposed)return;const e=this.getDisconnectFormData();this._disposed=navigator.sendBeacon("_blazor/disconnect",e)}dispose(){return this._disposePromise||(this._disposePromise=this.disposeCore()),this._disposePromise}async disposeCore(){var e;if(!this._startPromise)return void(this._disposed=!0);await this._startPromise,this._disposed=!0,null===(e=this._connection)||void 0===e||e.stop();const t=this.getDisconnectFormData();fetch("http://github.com/_blazor/disconnect",{method:"POST",body:t});for(const e of this._options.circuitHandlers)e.onCircuitClosed&&e.onCircuitClosed()}}class Tr{constructor(e,t,n,r){this.maxRetries=t,this.document=n,this.logger=r,this.modal=this.document.createElement("div"),this.modal.id=e,this.maxRetries=t,this.modal.style.cssText=["position: fixed","top: 0","right: 0","bottom: 0","left: 0","z-index: 1050","display: none","overflow: hidden","background-color: #fff","opacity: 0.8","text-align: center","font-weight: bold","transition: visibility 0s linear 500ms"].join(";"),this.message=this.document.createElement("h5"),this.message.style.cssText="margin-top: 20px",this.button=this.document.createElement("button"),this.button.style.cssText="margin:5px auto 5px",this.button.textContent="Retry";const o=this.document.createElement("a");o.addEventListener("click",(()=>location.reload())),o.textContent="reload",this.reloadParagraph=this.document.createElement("p"),this.reloadParagraph.textContent="Alternatively, ",this.reloadParagraph.appendChild(o),this.modal.appendChild(this.message),this.modal.appendChild(this.button),this.modal.appendChild(this.reloadParagraph),this.loader=this.getLoader(),this.message.after(this.loader),this.button.addEventListener("click",(async()=>{this.show();try{await ot.reconnect()||this.rejected()}catch(e){this.logger.log(st.Error,e),this.failed()}}))}show(){this.document.contains(this.modal)||this.document.body.appendChild(this.modal),this.modal.style.display="block",this.loader.style.display="inline-block",this.button.style.display="none",this.reloadParagraph.style.display="none",this.message.textContent="Attempting to reconnect to the server...",this.modal.style.visibility="hidden",setTimeout((()=>{this.modal.style.visibility="visible"}),0)}update(e){this.message.textContent=`Attempting to reconnect to the server: ${e} of ${this.maxRetries}`}hide(){this.modal.style.display="none"}failed(){this.button.style.display="block",this.reloadParagraph.style.display="none",this.loader.style.display="none";const e=this.document.createTextNode("Reconnection failed. Try "),t=this.document.createElement("a");t.textContent="reloading",t.setAttribute("href",""),t.addEventListener("click",(()=>location.reload()));const n=this.document.createTextNode(" the page if you're unable to reconnect.");this.message.replaceChildren(e,t,n)}rejected(){this.button.style.display="none",this.reloadParagraph.style.display="none",this.loader.style.display="none";const e=this.document.createTextNode("Could not reconnect to the server. "),t=this.document.createElement("a");t.textContent="Reload",t.setAttribute("href",""),t.addEventListener("click",(()=>location.reload()));const n=this.document.createTextNode(" the page to restore functionality.");this.message.replaceChildren(e,t,n)}getLoader(){const e=this.document.createElement("div");return e.style.cssText=["border: 0.3em solid #f3f3f3","border-top: 0.3em solid #3498db","border-radius: 50%","width: 2em","height: 2em","display: inline-block"].join(";"),e.animate([{transform:"rotate(0deg)"},{transform:"rotate(360deg)"}],{duration:2e3,iterations:1/0}),e}}class Dr{constructor(e,t,n){this.dialog=e,this.maxRetries=t,this.document=n,this.document=n;const r=this.document.getElementById(Dr.MaxRetriesId);r&&(r.innerText=this.maxRetries.toString())}show(){this.removeClasses(),this.dialog.classList.add(Dr.ShowClassName)}update(e){const t=this.document.getElementById(Dr.CurrentAttemptId);t&&(t.innerText=e.toString())}hide(){this.removeClasses(),this.dialog.classList.add(Dr.HideClassName)}failed(){this.removeClasses(),this.dialog.classList.add(Dr.FailedClassName)}rejected(){this.removeClasses(),this.dialog.classList.add(Dr.RejectedClassName)}removeClasses(){this.dialog.classList.remove(Dr.ShowClassName,Dr.HideClassName,Dr.FailedClassName,Dr.RejectedClassName)}}Dr.ShowClassName="components-reconnect-show",Dr.HideClassName="components-reconnect-hide",Dr.FailedClassName="components-reconnect-failed",Dr.RejectedClassName="components-reconnect-rejected",Dr.MaxRetriesId="components-reconnect-max-retries",Dr.CurrentAttemptId="components-reconnect-current-attempt";class Rr{constructor(e,t,n){this._currentReconnectionProcess=null,this._logger=e,this._reconnectionDisplay=t,this._reconnectCallback=n||ot.reconnect}onConnectionDown(e,t){if(!this._reconnectionDisplay){const t=document.getElementById(e.dialogId);this._reconnectionDisplay=t?new Dr(t,e.maxRetries,document):new Tr(e.dialogId,e.maxRetries,document,this._logger)}this._currentReconnectionProcess||(this._currentReconnectionProcess=new xr(e,this._logger,this._reconnectCallback,this._reconnectionDisplay))}onConnectionUp(){this._currentReconnectionProcess&&(this._currentReconnectionProcess.dispose(),this._currentReconnectionProcess=null)}}class xr{constructor(e,t,n,r){this.logger=t,this.reconnectCallback=n,this.isDisposed=!1,this.reconnectDisplay=r,this.reconnectDisplay.show(),this.attemptPeriodicReconnection(e)}dispose(){this.isDisposed=!0,this.reconnectDisplay.hide()}async attemptPeriodicReconnection(e){for(let t=0;txr.MaximumFirstRetryInterval?xr.MaximumFirstRetryInterval:e.retryIntervalMilliseconds;if(await this.delay(n),this.isDisposed)break;try{return await this.reconnectCallback()?void 0:void this.reconnectDisplay.rejected()}catch(e){this.logger.log(st.Error,e)}}this.reconnectDisplay.failed()}delay(e){return new Promise((t=>setTimeout(t,e)))}}xr.MaximumFirstRetryInterval=3e3;class Ar{constructor(e=!0,t,n,r=0){this.singleRuntime=e,this.logger=t,this.webRendererId=r,this.afterStartedCallbacks=[],n&&this.afterStartedCallbacks.push(...n)}async importInitializersAsync(e,t){await Promise.all(e.map((e=>async function(e,n){const r=function(e){const t=document.baseURI;return t.endsWith("/")?`${t}${e}`:`${t}/${e}`}(n),o=await import(r);if(void 0!==o){if(e.singleRuntime){const{beforeStart:n,afterStarted:r,beforeWebAssemblyStart:i,afterWebAssemblyStarted:a,beforeServerStart:c,afterServerStarted:l}=o;let h=n;e.webRendererId===_n.Server&&c&&(h=c),e.webRendererId===_n.WebAssembly&&i&&(h=i);let d=r;return e.webRendererId===_n.Server&&l&&(d=l),e.webRendererId===_n.WebAssembly&&a&&(d=a),s(e,h,d,t)}return function(e,t,n){var o;const i=n[0],{beforeStart:a,afterStarted:c,beforeWebStart:l,afterWebStarted:h,beforeWebAssemblyStart:d,afterWebAssemblyStarted:u,beforeServerStart:p,afterServerStarted:f}=t,g=!(l||h||d||u||p||f||!a&&!c),m=g&&i.enableClassicInitializers;if(g&&!i.enableClassicInitializers)null===(o=e.logger)||void 0===o||o.log(st.Warning,`Initializer '${r}' will be ignored because multiple runtimes are available. use 'before(web|webAssembly|server)Start' and 'after(web|webAssembly|server)Started?' instead.)`);else if(m)return s(e,a,c,n);if(function(e){e.webAssembly?e.webAssembly.initializers||(e.webAssembly.initializers={beforeStart:[],afterStarted:[]}):e.webAssembly={initializers:{beforeStart:[],afterStarted:[]}},e.circuit?e.circuit.initializers||(e.circuit.initializers={beforeStart:[],afterStarted:[]}):e.circuit={initializers:{beforeStart:[],afterStarted:[]}}}(i),d&&i.webAssembly.initializers.beforeStart.push(d),u&&i.webAssembly.initializers.afterStarted.push(u),p&&i.circuit.initializers.beforeStart.push(p),f&&i.circuit.initializers.afterStarted.push(f),h&&e.afterStartedCallbacks.push(h),l)return l(i)}(e,o,t)}function s(e,t,n,r){if(n&&e.afterStartedCallbacks.push(n),t)return t(...r)}}(this,e))))}async invokeAfterStartedCallbacks(e){const t=function(e){var t;return null===(t=C.get(e))||void 0===t?void 0:t[1]}(this.webRendererId);t&&await t,await Promise.all(this.afterStartedCallbacks.map((t=>t(e))))}}function Pr(e){if(void 0!==Er)throw new Error("Blazor Server has already started.");return Er=new Promise(Nr.bind(null,e)),Er}async function Nr(e,t,n){await yr;const r=await async function(e){if(e.initializers)return await Promise.all(e.initializers.beforeStart.map((t=>t(e)))),new Ar(!1,void 0,e.initializers.afterStarted,_n.Server);const t=await fetch("http://github.com/_blazor/initializers",{method:"GET",credentials:"include",cache:"no-cache"}),n=await t.json(),r=new Ar(!0,void 0,void 0,_n.Server);return await r.importInitializersAsync(n,[e]),r}(br);var o;if(o=document,wr=dt(o,ht)||"",Sr=new lt(br.logLevel),_r=new kr(e,wr,br,Sr),Sr.log(st.Information,"Starting up Blazor server-side application."),ot.reconnect=async()=>!(_r.didRenderingFail()||!await _r.reconnect()&&(Sr.log(st.Information,"Reconnection attempt to the circuit was rejected by the server. This may indicate that the associated state is no longer available on the server."),1)),ot.defaultReconnectionHandler=new Rr(Sr),br.reconnectionHandler=br.reconnectionHandler||ot.defaultReconnectionHandler,ot._internal.navigationManager.listenForNavigationEvents(_n.Server,((e,t,n)=>_r.sendLocationChanged(e,t,n)),((e,t,n,r)=>_r.sendLocationChanging(e,t,n,r))),ot._internal.forceCloseConnection=()=>_r.disconnect(),ot._internal.sendJSDataStream=(e,t,n)=>_r.sendJsDataStream(e,t,n),!await _r.start())return Sr.log(st.Error,"Failed to start the circuit."),void t();const s=()=>{_r.sendDisconnectBeacon()};ot.disconnect=s,window.addEventListener("unload",s,{capture:!1,once:!0}),Sr.log(st.Information,"Blazor server-side application started."),r.invokeAfterStartedCallbacks(ot),t()}class Ur{constructor(e){this.initialComponents=e}resolveRootComponent(e){return this.initialComponents[e]}}class Mr{constructor(){this._eventListeners=new Map}static create(e){const t=new Mr;return e.addEventListener=t.addEventListener.bind(t),e.removeEventListener=t.removeEventListener.bind(t),t}addEventListener(e,t){let n=this._eventListeners.get(e);n||(n=new Set,this._eventListeners.set(e,n)),n.add(t)}removeEventListener(e,t){var n;null===(n=this._eventListeners.get(e))||void 0===n||n.delete(t)}dispatchEvent(e,t){const n=this._eventListeners.get(e);if(!n)return;const r={...t,type:e};for(const e of n)e(r)}}let Br=!1;function Lr(e){if(Br)throw new Error("Blazor has already started.");Br=!0;const t=it(e);!function(e){if(br)throw new Error("Circuit options have already been configured.");if(br)throw new Error("WebAssembly options have already been configured.");yr=async function(e){const t=await e;br=it(t)}(e)}(Promise.resolve(t||{})),Mr.create(ot);const n=function(e){return ut(e,"server").sort(((e,t)=>e.sequence-t.sequence))}(document);return Pr(new Ur(n))}ot.start=Lr,window.DotNet=e,document&&document.currentScript&&"false"!==document.currentScript.getAttribute("autostart")&&Lr()})()})(); \ No newline at end of file diff --git a/src/Components/Web.JS/dist/Release/blazor.web.js b/src/Components/Web.JS/dist/Release/blazor.web.js index 1de4a4b532ce..ed790b1ee27b 100644 --- a/src/Components/Web.JS/dist/Release/blazor.web.js +++ b/src/Components/Web.JS/dist/Release/blazor.web.js @@ -1 +1 @@ -(()=>{var e={778:()=>{},77:()=>{},203:()=>{},200:()=>{},628:()=>{},321:()=>{}},t={};function n(o){var r=t[o];if(void 0!==r)return r.exports;var i=t[o]={exports:{}};return e[o](i,i.exports,n),i.exports}n.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),(()=>{"use strict";var e,t,o;!function(e){const t=[],n="__jsObjectId",o="__dotNetObject",r="__byte[]",i="__dotNetStream",s="__jsStreamReferenceLength";let a,c;class l{constructor(e){this._jsObject=e,this._cachedFunctions=new Map}findFunction(e){const t=this._cachedFunctions.get(e);if(t)return t;let n,o=this._jsObject;if(e.split(".").forEach((t=>{if(!(t in o))throw new Error(`Could not find '${e}' ('${t}' was undefined).`);n=o,o=o[t]})),o instanceof Function)return o=o.bind(n),this._cachedFunctions.set(e,o),o;throw new Error(`The value '${e}' is not a function.`)}getWrappedObject(){return this._jsObject}}const h={0:new l(window)};h[0]._cachedFunctions.set("import",(e=>("string"==typeof e&&e.startsWith("./")&&(e=new URL(e.substr(2),document.baseURI).toString()),import(e))));let d,u=1;function p(e){t.push(e)}function f(e){if(e&&"object"==typeof e){h[u]=new l(e);const t={[n]:u};return u++,t}throw new Error(`Cannot create a JSObjectReference from the value '${e}'.`)}function g(e){let t=-1;if(e instanceof ArrayBuffer&&(e=new Uint8Array(e)),e instanceof Blob)t=e.size;else{if(!(e.buffer instanceof ArrayBuffer))throw new Error("Supplied value is not a typed array or blob.");if(void 0===e.byteLength)throw new Error(`Cannot create a JSStreamReference from the value '${e}' as it doesn't have a byteLength.`);t=e.byteLength}const o={[s]:t};try{const t=f(e);o[n]=t[n]}catch(t){throw new Error(`Cannot create a JSStreamReference from the value '${e}'.`)}return o}function m(e,n){c=e;const o=n?JSON.parse(n,((e,n)=>t.reduce(((t,n)=>n(e,t)),n))):null;return c=void 0,o}function v(){if(void 0===a)throw new Error("No call dispatcher has been set.");if(null===a)throw new Error("There are multiple .NET runtimes present, so a default dispatcher could not be resolved. Use DotNetObject to invoke .NET instance methods.");return a}e.attachDispatcher=function(e){const t=new y(e);return void 0===a?a=t:a&&(a=null),t},e.attachReviver=p,e.invokeMethod=function(e,t,...n){return v().invokeDotNetStaticMethod(e,t,...n)},e.invokeMethodAsync=function(e,t,...n){return v().invokeDotNetStaticMethodAsync(e,t,...n)},e.createJSObjectReference=f,e.createJSStreamReference=g,e.disposeJSObjectReference=function(e){const t=e&&e[n];"number"==typeof t&&_(t)},function(e){e[e.Default=0]="Default",e[e.JSObjectReference=1]="JSObjectReference",e[e.JSStreamReference=2]="JSStreamReference",e[e.JSVoidResult=3]="JSVoidResult"}(d=e.JSCallResultType||(e.JSCallResultType={}));class y{constructor(e){this._dotNetCallDispatcher=e,this._byteArraysToBeRevived=new Map,this._pendingDotNetToJSStreams=new Map,this._pendingAsyncCalls={},this._nextAsyncCallId=1}getDotNetCallDispatcher(){return this._dotNetCallDispatcher}invokeJSFromDotNet(e,t,n,o){const r=m(this,t),i=I(b(e,o)(...r||[]),n);return null==i?null:T(this,i)}beginInvokeJSFromDotNet(e,t,n,o,r){const i=new Promise((e=>{const o=m(this,n);e(b(t,r)(...o||[]))}));e&&i.then((t=>T(this,[e,!0,I(t,o)]))).then((t=>this._dotNetCallDispatcher.endInvokeJSFromDotNet(e,!0,t)),(t=>this._dotNetCallDispatcher.endInvokeJSFromDotNet(e,!1,JSON.stringify([e,!1,w(t)]))))}endInvokeDotNetFromJS(e,t,n){const o=t?m(this,n):new Error(n);this.completePendingCall(parseInt(e,10),t,o)}invokeDotNetStaticMethod(e,t,...n){return this.invokeDotNetMethod(e,t,null,n)}invokeDotNetStaticMethodAsync(e,t,...n){return this.invokeDotNetMethodAsync(e,t,null,n)}invokeDotNetMethod(e,t,n,o){if(this._dotNetCallDispatcher.invokeDotNetFromJS){const r=T(this,o),i=this._dotNetCallDispatcher.invokeDotNetFromJS(e,t,n,r);return i?m(this,i):null}throw new Error("The current dispatcher does not support synchronous calls from JS to .NET. Use invokeDotNetMethodAsync instead.")}invokeDotNetMethodAsync(e,t,n,o){if(e&&n)throw new Error(`For instance method calls, assemblyName should be null. Received '${e}'.`);const r=this._nextAsyncCallId++,i=new Promise(((e,t)=>{this._pendingAsyncCalls[r]={resolve:e,reject:t}}));try{const i=T(this,o);this._dotNetCallDispatcher.beginInvokeDotNetFromJS(r,e,t,n,i)}catch(e){this.completePendingCall(r,!1,e)}return i}receiveByteArray(e,t){this._byteArraysToBeRevived.set(e,t)}processByteArray(e){const t=this._byteArraysToBeRevived.get(e);return t?(this._byteArraysToBeRevived.delete(e),t):null}supplyDotNetStream(e,t){if(this._pendingDotNetToJSStreams.has(e)){const n=this._pendingDotNetToJSStreams.get(e);this._pendingDotNetToJSStreams.delete(e),n.resolve(t)}else{const n=new E;n.resolve(t),this._pendingDotNetToJSStreams.set(e,n)}}getDotNetStreamPromise(e){let t;if(this._pendingDotNetToJSStreams.has(e))t=this._pendingDotNetToJSStreams.get(e).streamPromise,this._pendingDotNetToJSStreams.delete(e);else{const n=new E;this._pendingDotNetToJSStreams.set(e,n),t=n.streamPromise}return t}completePendingCall(e,t,n){if(!this._pendingAsyncCalls.hasOwnProperty(e))throw new Error(`There is no pending async call with ID ${e}.`);const o=this._pendingAsyncCalls[e];delete this._pendingAsyncCalls[e],t?o.resolve(n):o.reject(n)}}function w(e){return e instanceof Error?`${e.message}\n${e.stack}`:e?e.toString():"null"}function b(e,t){const n=h[t];if(n)return n.findFunction(e);throw new Error(`JS object instance with ID ${t} does not exist (has it been disposed?).`)}function _(e){delete h[e]}e.findJSFunction=b,e.disposeJSObjectReferenceById=_;class S{constructor(e,t){this._id=e,this._callDispatcher=t}invokeMethod(e,...t){return this._callDispatcher.invokeDotNetMethod(null,e,this._id,t)}invokeMethodAsync(e,...t){return this._callDispatcher.invokeDotNetMethodAsync(null,e,this._id,t)}dispose(){this._callDispatcher.invokeDotNetMethodAsync(null,"__Dispose",this._id,null).catch((e=>console.error(e)))}serializeAsArg(){return{[o]:this._id}}}e.DotNetObject=S,p((function(e,t){if(t&&"object"==typeof t){if(t.hasOwnProperty(o))return new S(t[o],c);if(t.hasOwnProperty(n)){const e=t[n],o=h[e];if(o)return o.getWrappedObject();throw new Error(`JS object instance with Id '${e}' does not exist. It may have been disposed.`)}if(t.hasOwnProperty(r)){const e=t[r],n=c.processByteArray(e);if(void 0===n)throw new Error(`Byte array index '${e}' does not exist.`);return n}if(t.hasOwnProperty(i)){const e=t[i],n=c.getDotNetStreamPromise(e);return new C(n)}}return t}));class C{constructor(e){this._streamPromise=e}stream(){return this._streamPromise}async arrayBuffer(){return new Response(await this.stream()).arrayBuffer()}}class E{constructor(){this.streamPromise=new Promise(((e,t)=>{this.resolve=e,this.reject=t}))}}function I(e,t){switch(t){case d.Default:return e;case d.JSObjectReference:return f(e);case d.JSStreamReference:return g(e);case d.JSVoidResult:return null;default:throw new Error(`Invalid JS call result type '${t}'.`)}}let k=0;function T(e,t){k=0,c=e;const n=JSON.stringify(t,R);return c=void 0,n}function R(e,t){if(t instanceof S)return t.serializeAsArg();if(t instanceof Uint8Array){c.getDotNetCallDispatcher().sendByteArray(k,t);const e={[r]:k};return k++,e}return t}}(e||(e={})),function(e){e[e.prependFrame=1]="prependFrame",e[e.removeFrame=2]="removeFrame",e[e.setAttribute=3]="setAttribute",e[e.removeAttribute=4]="removeAttribute",e[e.updateText=5]="updateText",e[e.stepIn=6]="stepIn",e[e.stepOut=7]="stepOut",e[e.updateMarkup=8]="updateMarkup",e[e.permutationListEntry=9]="permutationListEntry",e[e.permutationListEnd=10]="permutationListEnd"}(t||(t={})),function(e){e[e.element=1]="element",e[e.text=2]="text",e[e.attribute=3]="attribute",e[e.component=4]="component",e[e.region=5]="region",e[e.elementReferenceCapture=6]="elementReferenceCapture",e[e.markup=8]="markup",e[e.namedEvent=10]="namedEvent"}(o||(o={}));class r{constructor(e,t){this.componentId=e,this.fieldValue=t}static fromEvent(e,t){const n=t.target;if(n instanceof Element){const t=function(e){return e instanceof HTMLInputElement?e.type&&"checkbox"===e.type.toLowerCase()?{value:e.checked}:{value:e.value}:e instanceof HTMLSelectElement||e instanceof HTMLTextAreaElement?{value:e.value}:null}(n);if(t)return new r(e,t.value)}return null}}const i=new Map,s=new Map,a=[];function c(e){return i.get(e)}function l(e){const t=i.get(e);return(null==t?void 0:t.browserEventName)||e}function h(e,t){e.forEach((e=>i.set(e,t)))}function d(e){const t=[];for(let n=0;ne.selected)).map((e=>e.value))}}{const e=function(e){return!!e&&"INPUT"===e.tagName&&"checkbox"===e.getAttribute("type")}(t);return{value:e?!!t.checked:t.value}}}}),h(["copy","cut","paste"],{createEventArgs:e=>({type:e.type})}),h(["drag","dragend","dragenter","dragleave","dragover","dragstart","drop"],{createEventArgs:e=>{return{...u(t=e),dataTransfer:t.dataTransfer?{dropEffect:t.dataTransfer.dropEffect,effectAllowed:t.dataTransfer.effectAllowed,files:Array.from(t.dataTransfer.files).map((e=>e.name)),items:Array.from(t.dataTransfer.items).map((e=>({kind:e.kind,type:e.type}))),types:t.dataTransfer.types}:null};var t}}),h(["focus","blur","focusin","focusout"],{createEventArgs:e=>({type:e.type})}),h(["keydown","keyup","keypress"],{createEventArgs:e=>{return{key:(t=e).key,code:t.code,location:t.location,repeat:t.repeat,ctrlKey:t.ctrlKey,shiftKey:t.shiftKey,altKey:t.altKey,metaKey:t.metaKey,type:t.type};var t}}),h(["contextmenu","click","mouseover","mouseout","mousemove","mousedown","mouseup","mouseleave","mouseenter","dblclick"],{createEventArgs:e=>u(e)}),h(["error"],{createEventArgs:e=>{return{message:(t=e).message,filename:t.filename,lineno:t.lineno,colno:t.colno,type:t.type};var t}}),h(["loadstart","timeout","abort","load","loadend","progress"],{createEventArgs:e=>{return{lengthComputable:(t=e).lengthComputable,loaded:t.loaded,total:t.total,type:t.type};var t}}),h(["touchcancel","touchend","touchmove","touchenter","touchleave","touchstart"],{createEventArgs:e=>{return{detail:(t=e).detail,touches:d(t.touches),targetTouches:d(t.targetTouches),changedTouches:d(t.changedTouches),ctrlKey:t.ctrlKey,shiftKey:t.shiftKey,altKey:t.altKey,metaKey:t.metaKey,type:t.type};var t}}),h(["gotpointercapture","lostpointercapture","pointercancel","pointerdown","pointerenter","pointerleave","pointermove","pointerout","pointerover","pointerup"],{createEventArgs:e=>{return{...u(t=e),pointerId:t.pointerId,width:t.width,height:t.height,pressure:t.pressure,tiltX:t.tiltX,tiltY:t.tiltY,pointerType:t.pointerType,isPrimary:t.isPrimary};var t}}),h(["wheel","mousewheel"],{createEventArgs:e=>{return{...u(t=e),deltaX:t.deltaX,deltaY:t.deltaY,deltaZ:t.deltaZ,deltaMode:t.deltaMode};var t}}),h(["cancel","close","toggle"],{createEventArgs:()=>({})});const p=["date","datetime-local","month","time","week"],f=new Map;let g,m,v=0;const y={async add(e,t,n){if(!n)throw new Error("initialParameters must be an object, even if empty.");const o="__bl-dynamic-root:"+(++v).toString();f.set(o,e);const r=await S().invokeMethodAsync("AddRootComponent",t,o),i=new _(r,m[t]);return await i.setParameters(n),i}};function w(e){const t=f.get(e);if(t)return f.delete(e),t}class b{invoke(e){return this._callback(e)}setCallback(t){this._selfJSObjectReference||(this._selfJSObjectReference=e.createJSObjectReference(this)),this._callback=t}getJSObjectReference(){return this._selfJSObjectReference}dispose(){this._selfJSObjectReference&&e.disposeJSObjectReference(this._selfJSObjectReference)}}class _{constructor(e,t){this._jsEventCallbackWrappers=new Map,this._componentId=e;for(const e of t)"eventcallback"===e.type&&this._jsEventCallbackWrappers.set(e.name.toLowerCase(),new b)}setParameters(e){const t={},n=Object.entries(e||{}),o=n.length;for(const[e,o]of n){const n=this._jsEventCallbackWrappers.get(e.toLowerCase());n&&o?(n.setCallback(o),t[e]=n.getJSObjectReference()):t[e]=o}return S().invokeMethodAsync("SetRootComponentParameters",this._componentId,o,t)}async dispose(){if(null!==this._componentId){await S().invokeMethodAsync("RemoveRootComponent",this._componentId),this._componentId=null;for(const e of this._jsEventCallbackWrappers.values())e.dispose()}}}function S(){if(!g)throw new Error("Dynamic root components have not been enabled in this application.");return g}const C=new Map,E=[],I=new Map;function k(t,n,o,r){var i,s;if(C.has(t))throw new Error(`Interop methods are already registered for renderer ${t}`);C.set(t,n),o&&r&&Object.keys(o).length>0&&function(t,n,o){if(g)throw new Error("Dynamic root components have already been enabled.");g=t,m=n;for(const[t,r]of Object.entries(o)){const o=e.findJSFunction(t,0);for(const e of r)o(e,n[e])}}(D(t),o,r),null===(s=null===(i=I.get(t))||void 0===i?void 0:i[0])||void 0===s||s.call(i),function(e){for(const t of E)t(e)}(t)}function T(e){return C.has(e)}function R(e,t,n){return A(e,t.eventHandlerId,(()=>D(e).invokeMethodAsync("DispatchEventAsync",t,n)))}function D(e){const t=C.get(e);if(!t)throw new Error(`No interop methods are registered for renderer ${e}`);return t}let A=(e,t,n)=>n();const x=B(["abort","blur","cancel","canplay","canplaythrough","change","close","cuechange","durationchange","emptied","ended","error","focus","load","loadeddata","loadedmetadata","loadend","loadstart","mouseenter","mouseleave","pointerenter","pointerleave","pause","play","playing","progress","ratechange","reset","scroll","seeked","seeking","stalled","submit","suspend","timeupdate","toggle","unload","volumechange","waiting","DOMNodeInsertedIntoDocument","DOMNodeRemovedFromDocument"]),N={submit:!0},P=B(["click","dblclick","mousedown","mousemove","mouseup"]);class M{constructor(e){this.browserRendererId=e,this.afterClickCallbacks=[];const t=++M.nextEventDelegatorId;this.eventsCollectionKey=`_blazorEvents_${t}`,this.eventInfoStore=new U(this.onGlobalEvent.bind(this))}setListener(e,t,n,o){const r=this.getEventHandlerInfosForElement(e,!0),i=r.getHandler(t);if(i)this.eventInfoStore.update(i.eventHandlerId,n);else{const i={element:e,eventName:t,eventHandlerId:n,renderingComponentId:o};this.eventInfoStore.add(i),r.setHandler(t,i)}}getHandler(e){return this.eventInfoStore.get(e)}removeListener(e){const t=this.eventInfoStore.remove(e);if(t){const e=t.element,n=this.getEventHandlerInfosForElement(e,!1);n&&n.removeHandler(t.eventName)}}notifyAfterClick(e){this.afterClickCallbacks.push(e),this.eventInfoStore.addGlobalListener("click")}setStopPropagation(e,t,n){this.getEventHandlerInfosForElement(e,!0).stopPropagation(t,n)}setPreventDefault(e,t,n){this.getEventHandlerInfosForElement(e,!0).preventDefault(t,n)}onGlobalEvent(e){if(!(e.target instanceof Element))return;this.dispatchGlobalEventToAllElements(e.type,e);const t=(n=e.type,s.get(n));var n;t&&t.forEach((t=>this.dispatchGlobalEventToAllElements(t,e))),"click"===e.type&&this.afterClickCallbacks.forEach((t=>t(e)))}dispatchGlobalEventToAllElements(e,t){const n=t.composedPath();let o=n.shift(),i=null,s=!1;const a=Object.prototype.hasOwnProperty.call(x,e);let l=!1;for(;o;){const u=o,p=this.getEventHandlerInfosForElement(u,!1);if(p){const n=p.getHandler(e);if(n&&(h=u,d=t.type,!((h instanceof HTMLButtonElement||h instanceof HTMLInputElement||h instanceof HTMLTextAreaElement||h instanceof HTMLSelectElement)&&Object.prototype.hasOwnProperty.call(P,d)&&h.disabled))){if(!s){const n=c(e);i=(null==n?void 0:n.createEventArgs)?n.createEventArgs(t):{},s=!0}Object.prototype.hasOwnProperty.call(N,t.type)&&t.preventDefault(),R(this.browserRendererId,{eventHandlerId:n.eventHandlerId,eventName:e,eventFieldInfo:r.fromEvent(n.renderingComponentId,t)},i)}p.stopPropagation(e)&&(l=!0),p.preventDefault(e)&&t.preventDefault()}o=a||l?void 0:n.shift()}var h,d}getEventHandlerInfosForElement(e,t){return Object.prototype.hasOwnProperty.call(e,this.eventsCollectionKey)?e[this.eventsCollectionKey]:t?e[this.eventsCollectionKey]=new L:null}}M.nextEventDelegatorId=0;class U{constructor(e){this.globalListener=e,this.infosByEventHandlerId={},this.countByEventName={},a.push(this.handleEventNameAliasAdded.bind(this))}add(e){if(this.infosByEventHandlerId[e.eventHandlerId])throw new Error(`Event ${e.eventHandlerId} is already tracked`);this.infosByEventHandlerId[e.eventHandlerId]=e,this.addGlobalListener(e.eventName)}get(e){return this.infosByEventHandlerId[e]}addGlobalListener(e){if(e=l(e),Object.prototype.hasOwnProperty.call(this.countByEventName,e))this.countByEventName[e]++;else{this.countByEventName[e]=1;const t=Object.prototype.hasOwnProperty.call(x,e);document.addEventListener(e,this.globalListener,t)}}update(e,t){if(Object.prototype.hasOwnProperty.call(this.infosByEventHandlerId,t))throw new Error(`Event ${t} is already tracked`);const n=this.infosByEventHandlerId[e];delete this.infosByEventHandlerId[e],n.eventHandlerId=t,this.infosByEventHandlerId[t]=n}remove(e){const t=this.infosByEventHandlerId[e];if(t){delete this.infosByEventHandlerId[e];const n=l(t.eventName);0==--this.countByEventName[n]&&(delete this.countByEventName[n],document.removeEventListener(n,this.globalListener))}return t}handleEventNameAliasAdded(e,t){if(Object.prototype.hasOwnProperty.call(this.countByEventName,e)){const n=this.countByEventName[e];delete this.countByEventName[e],document.removeEventListener(e,this.globalListener),this.addGlobalListener(t),this.countByEventName[t]+=n-1}}}class L{constructor(){this.handlers={},this.preventDefaultFlags=null,this.stopPropagationFlags=null}getHandler(e){return Object.prototype.hasOwnProperty.call(this.handlers,e)?this.handlers[e]:null}setHandler(e,t){this.handlers[e]=t}removeHandler(e){delete this.handlers[e]}preventDefault(e,t){return void 0!==t&&(this.preventDefaultFlags=this.preventDefaultFlags||{},this.preventDefaultFlags[e]=t),!!this.preventDefaultFlags&&this.preventDefaultFlags[e]}stopPropagation(e,t){return void 0!==t&&(this.stopPropagationFlags=this.stopPropagationFlags||{},this.stopPropagationFlags[e]=t),!!this.stopPropagationFlags&&this.stopPropagationFlags[e]}}function B(e){const t={};return e.forEach((e=>{t[e]=!0})),t}const O=Symbol(),F=Symbol(),$=Symbol();function H(e){const{start:t,end:n}=e,o=t[$];if(o){if(o!==e)throw new Error("The start component comment was already associated with another component descriptor.");return t}const r=t.parentNode;if(!r)throw new Error(`Comment not connected to the DOM ${t.textContent}`);const i=W(r,!0),s=Y(i);t[F]=i,t[$]=e;const a=W(t);if(n){const e=Y(a),o=Array.prototype.indexOf.call(s,a)+1;let r=null;for(;r!==n;){const n=s.splice(o,1)[0];if(!n)throw new Error("Could not find the end component comment in the parent logical node list");n[F]=t,e.push(n),r=n}}return a}function W(e,t){if(O in e)return e;const n=[];if(e.childNodes.length>0){if(!t)throw new Error("New logical elements must start empty, or allowExistingContents must be true");e.childNodes.forEach((t=>{const o=W(t,!0);o[F]=e,n.push(o)}))}return e[O]=n,e}function j(e){const t=Y(e);for(;t.length;)J(e,0)}function z(e,t){const n=document.createComment("!");return q(n,e,t),n}function q(e,t,n){const o=e;let r=e;if(Z(e)){const t=oe(o);if(t!==e){const n=new Range;n.setStartBefore(e),n.setEndAfter(t),r=n.extractContents()}}const i=K(o);if(i){const e=Y(i),t=Array.prototype.indexOf.call(e,o);e.splice(t,1),delete o[F]}const s=Y(t);if(n0;)J(n,0)}const o=n;o.parentNode.removeChild(o)}function K(e){return e[F]||null}function V(e,t){return Y(e)[t]}function X(e){return e[$]||null}function G(e){const t=te(e);return"http://www.w3.org/2000/svg"===t.namespaceURI&&"foreignObject"!==t.tagName}function Y(e){return e[O]}function Q(e){const t=Y(K(e));return t[Array.prototype.indexOf.call(t,e)+1]||null}function Z(e){return O in e}function ee(e,t){const n=Y(e);t.forEach((e=>{e.moveRangeStart=n[e.fromSiblingIndex],e.moveRangeEnd=oe(e.moveRangeStart)})),t.forEach((t=>{const o=document.createComment("marker");t.moveToBeforeMarker=o;const r=n[t.toSiblingIndex+1];r?r.parentNode.insertBefore(o,r):ne(o,e)})),t.forEach((e=>{const t=e.moveToBeforeMarker,n=t.parentNode,o=e.moveRangeStart,r=e.moveRangeEnd;let i=o;for(;i;){const e=i.nextSibling;if(n.insertBefore(i,t),i===r)break;i=e}n.removeChild(t)})),t.forEach((e=>{n[e.toSiblingIndex]=e.moveRangeStart}))}function te(e){if(e instanceof Element||e instanceof DocumentFragment)return e;if(e instanceof Comment)return e.parentNode;throw new Error("Not a valid logical element")}function ne(e,t){if(t instanceof Element||t instanceof DocumentFragment)t.appendChild(e);else{if(!(t instanceof Comment))throw new Error(`Cannot append node because the parent is not a valid logical element. Parent: ${t}`);{const n=Q(t);n?n.parentNode.insertBefore(e,n):ne(e,K(t))}}}function oe(e){if(e instanceof Element||e instanceof DocumentFragment)return e;const t=Q(e);if(t)return t.previousSibling;{const t=K(e);return t instanceof Element||t instanceof DocumentFragment?t.lastChild:oe(t)}}function re(e){return`_bl_${e}`}const ie="__internalId";e.attachReviver(((e,t)=>t&&"object"==typeof t&&Object.prototype.hasOwnProperty.call(t,ie)&&"string"==typeof t[ie]?function(e){const t=`[${re(e)}]`;return document.querySelector(t)}(t[ie]):t));const se="_blazorDeferredValue";function ae(e){e instanceof HTMLOptionElement?de(e):se in e&&he(e,e[se])}function ce(e){return"select-multiple"===e.type}function le(e,t){e.value=t||""}function he(e,t){e instanceof HTMLSelectElement?ce(e)?function(e,t){t||(t=[]);for(let n=0;n{Oe()&&Ne(e,(e=>{Xe(e,!0,!1)}))}))}getRootComponentCount(){return this.rootComponentIds.size}attachRootComponentToLogicalElement(e,t,n){if(we(t))throw new Error(`Root component '${e}' could not be attached because its target element is already associated with a root component`);n&&(t=z(t,Y(t).length)),ye(t,!0),this.attachComponentToElement(e,t),this.rootComponentIds.add(e),fe.add(t)}updateComponent(e,t,n,o){var r;const i=this.childComponentLocations[t];if(!i)throw new Error(`No element is currently associated with component ${t}`);fe.delete(i)&&(j(i),i instanceof Comment&&(i.textContent="!"));const s=null===(r=te(i))||void 0===r?void 0:r.getRootNode(),a=s&&s.activeElement;this.applyEdits(e,t,i,0,n,o),a instanceof HTMLElement&&s&&s.activeElement!==a&&a.focus()}disposeComponent(e){if(this.rootComponentIds.delete(e)){const t=this.childComponentLocations[e];ye(t,!1),!0===t[me]?fe.add(t):j(t)}delete this.childComponentLocations[e]}disposeEventHandler(e){this.eventDelegator.removeListener(e)}attachComponentToElement(e,t){this.childComponentLocations[e]=t}applyEdits(e,n,o,r,i,s){let a,c=0,l=r;const h=e.arrayBuilderSegmentReader,d=e.editReader,u=e.frameReader,p=h.values(i),f=h.offset(i),g=f+h.count(i);for(let i=f;i{const t=document.createElement("script");t.textContent=e.textContent,e.getAttributeNames().forEach((n=>{t.setAttribute(n,e.getAttribute(n))})),e.parentNode.replaceChild(t,e)})),ue.content));var s;let a=0;for(;i.firstChild;)q(i.firstChild,r,a++)}applyAttribute(e,t,n,o){const r=e.frameReader,i=r.attributeName(o),s=r.attributeEventHandlerId(o);if(s){const e=Se(i);return void this.eventDelegator.setListener(n,e,s,t)}const a=r.attributeValue(o);this.setOrRemoveAttributeOrProperty(n,i,a)}insertFrameRange(e,t,n,o,r,i,s){const a=o;for(let a=i;a{et(t,e)})},enableNavigationInterception:function(e){if(void 0!==Ee&&Ee!==e)throw new Error("Only one interactive runtime may enable navigation interception at a time.");Ee=e},setHasLocationChangingListeners:function(e,t){const n=je.get(e);if(!n)throw new Error(`Renderer with ID '${e}' is not listening for navigation events`);n.hasLocationChangingEventListeners=t},endLocationChanging:function(e,t){qe&&e===We&&(qe(t),qe=null)},navigateTo:function(e,t){Ve(e,t,!0)},refresh:function(e){!e&&Me()?Ue(location.href,!0):location.reload()},getBaseURI:()=>document.baseURI,getLocationHref:()=>location.href,scrollToElement:Ke};function Ke(e){const t=document.getElementById(e);return!!t&&(t.scrollIntoView(),!0)}function Ve(e,t,n=!1){const o=Le(e);!t.forceLoad&&Pe(o)?ot()?Xe(o,!1,t.replaceHistoryEntry,t.historyEntryState,n):Ue(o,t.replaceHistoryEntry):function(e,t){if(location.href===e){const t=e+"?";history.replaceState(null,"",t),location.replace(e)}else t?location.replace(e):location.href=e}(e,t.replaceHistoryEntry)}async function Xe(e,t,n,o=void 0,r=!1){if(Qe(),function(e){const t=e.indexOf("#");return t>-1&&location.href.replace(location.hash,"")===e.substring(0,t)}(e))return void function(e,t,n){Ge(e,t,n);const o=e.indexOf("#");o!==e.length-1&&Ke(e.substring(o+1))}(e,n,o);const i=nt();(r||!(null==i?void 0:i.hasLocationChangingEventListeners)||await Ze(e,o,t,i))&&(Re=!0,Ge(e,n,o),await et(t))}function Ge(e,t,n=void 0){t?history.replaceState({userState:n,_index:He},"",e):(He++,history.pushState({userState:n,_index:He},"",e))}function Ye(e){return new Promise((t=>{const n=ze;ze=()=>{ze=n,t()},history.go(e)}))}function Qe(){qe&&(qe(!1),qe=null)}function Ze(e,t,n,o){return new Promise((r=>{Qe(),We++,qe=r,o.locationChanging(We,e,t,n)}))}async function et(e,t){const n=null!=t?t:location.href;await Promise.all(Array.from(je,(async([t,o])=>{var r;T(t)&&await o.locationChanged(n,null===(r=history.state)||void 0===r?void 0:r.userState,e)})))}async function tt(e){var t,n;ze&&ot()&&await ze(e),He=null!==(n=null===(t=history.state)||void 0===t?void 0:t._index)&&void 0!==n?n:0}function nt(){const e=Fe();if(void 0!==e)return je.get(e)}function ot(){return Oe()||!Me()}const rt={focus:function(e,t){if(e instanceof HTMLElement)e.focus({preventScroll:t});else{if(!(e instanceof SVGElement))throw new Error("Unable to focus an invalid element.");if(!e.hasAttribute("tabindex"))throw new Error("Unable to focus an SVG element that does not have a tabindex.");e.focus({preventScroll:t})}},focusBySelector:function(e,t){const n=document.querySelector(e);n&&(n.hasAttribute("tabindex")||(n.tabIndex=-1),n.focus({preventScroll:!0}))}},it={init:function(e,t,n,o=50){const r=at(t);(r||document.documentElement).style.overflowAnchor="none";const i=document.createRange();u(n.parentElement)&&(t.style.display="table-row",n.style.display="table-row");const s=new IntersectionObserver((function(o){o.forEach((o=>{var r;if(!o.isIntersecting)return;i.setStartAfter(t),i.setEndBefore(n);const s=i.getBoundingClientRect().height,a=null===(r=o.rootBounds)||void 0===r?void 0:r.height;o.target===t?e.invokeMethodAsync("OnSpacerBeforeVisible",o.intersectionRect.top-o.boundingClientRect.top,s,a):o.target===n&&n.offsetHeight>0&&e.invokeMethodAsync("OnSpacerAfterVisible",o.boundingClientRect.bottom-o.intersectionRect.bottom,s,a)}))}),{root:r,rootMargin:`${o}px`});s.observe(t),s.observe(n);const a=d(t),c=d(n),{observersByDotNetObjectId:l,id:h}=ct(e);function d(e){const t={attributes:!0},n=new MutationObserver(((n,o)=>{u(e.parentElement)&&(o.disconnect(),e.style.display="table-row",o.observe(e,t)),s.unobserve(e),s.observe(e)}));return n.observe(e,t),n}function u(e){return null!==e&&(e instanceof HTMLTableElement&&""===e.style.display||"table"===e.style.display||e instanceof HTMLTableSectionElement&&""===e.style.display||"table-row-group"===e.style.display)}l[h]={intersectionObserver:s,mutationObserverBefore:a,mutationObserverAfter:c}},dispose:function(e){const{observersByDotNetObjectId:t,id:n}=ct(e),o=t[n];o&&(o.intersectionObserver.disconnect(),o.mutationObserverBefore.disconnect(),o.mutationObserverAfter.disconnect(),e.dispose(),delete t[n])}},st=Symbol();function at(e){return e&&e!==document.body&&e!==document.documentElement?"visible"!==getComputedStyle(e).overflowY?e:at(e.parentElement):null}function ct(e){var t;const n=e._callDispatcher,o=e._id;return null!==(t=n[st])&&void 0!==t||(n[st]={}),{observersByDotNetObjectId:n[st],id:o}}const lt={getAndRemoveExistingTitle:function(){var e;const t=document.head?document.head.getElementsByTagName("title"):[];if(0===t.length)return null;let n=null;for(let o=t.length-1;o>=0;o--){const r=t[o],i=r.previousSibling;i instanceof Comment&&null!==K(i)||(null===n&&(n=r.textContent),null===(e=r.parentNode)||void 0===e||e.removeChild(r))}return n}},ht={init:function(e,t){t._blazorInputFileNextFileId=0,t.addEventListener("click",(function(){t.value=""})),t.addEventListener("change",(function(){t._blazorFilesById={};const n=Array.prototype.map.call(t.files,(function(e){const n={id:++t._blazorInputFileNextFileId,lastModified:new Date(e.lastModified).toISOString(),name:e.name,size:e.size,contentType:e.type,readPromise:void 0,arrayBuffer:void 0,blob:e};return t._blazorFilesById[n.id]=n,n}));e.invokeMethodAsync("NotifyChange",n)}))},toImageFile:async function(e,t,n,o,r){const i=dt(e,t),s=await new Promise((function(e){const t=new Image;t.onload=function(){URL.revokeObjectURL(t.src),e(t)},t.onerror=function(){t.onerror=null,URL.revokeObjectURL(t.src)},t.src=URL.createObjectURL(i.blob)})),a=await new Promise((function(e){var t;const i=Math.min(1,o/s.width),a=Math.min(1,r/s.height),c=Math.min(i,a),l=document.createElement("canvas");l.width=Math.round(s.width*c),l.height=Math.round(s.height*c),null===(t=l.getContext("2d"))||void 0===t||t.drawImage(s,0,0,l.width,l.height),l.toBlob(e,n)})),c={id:++e._blazorInputFileNextFileId,lastModified:i.lastModified,name:i.name,size:(null==a?void 0:a.size)||0,contentType:n,blob:a||i.blob};return e._blazorFilesById[c.id]=c,c},readFileData:async function(e,t){return dt(e,t).blob}};function dt(e,t){const n=e._blazorFilesById[t];if(!n)throw new Error(`There is no file with ID ${t}. The file list may have changed. See https://aka.ms/aspnet/blazor-input-file-multiple-selections.`);return n}const ut=new Set,pt={enableNavigationPrompt:function(e){0===ut.size&&window.addEventListener("beforeunload",ft),ut.add(e)},disableNavigationPrompt:function(e){ut.delete(e),0===ut.size&&window.removeEventListener("beforeunload",ft)}};function ft(e){e.preventDefault(),e.returnValue=!0}async function gt(e,t,n){return e instanceof Blob?await async function(e,t,n){const o=e.slice(t,t+n),r=await o.arrayBuffer();return new Uint8Array(r)}(e,t,n):function(e,t,n){return new Uint8Array(e.buffer,e.byteOffset+t,n)}(e,t,n)}const mt=new Map,vt={navigateTo:function(e,t,n=!1){Ve(e,t instanceof Object?t:{forceLoad:t,replaceHistoryEntry:n})},registerCustomEventType:function(e,t){if(!t)throw new Error("The options parameter is required.");if(i.has(e))throw new Error(`The event '${e}' is already registered.`);if(t.browserEventName){const n=s.get(t.browserEventName);n?n.push(e):s.set(t.browserEventName,[e]),a.forEach((n=>n(e,t.browserEventName)))}i.set(e,t)},rootComponents:y,runtime:{},_internal:{navigationManager:Je,domWrapper:rt,Virtualize:it,PageTitle:lt,InputFile:ht,NavigationLock:pt,getJSDataStreamChunk:gt,attachWebRendererInterop:k}};var yt;window.Blazor=vt,function(e){e[e.Trace=0]="Trace",e[e.Debug=1]="Debug",e[e.Information=2]="Information",e[e.Warning=3]="Warning",e[e.Error=4]="Error",e[e.Critical=5]="Critical",e[e.None=6]="None"}(yt||(yt={}));class wt{log(e,t){}}wt.instance=new wt;class bt{constructor(e){this.minLevel=e}log(e,t){if(e>=this.minLevel){const n=`[${(new Date).toISOString()}] ${yt[e]}: ${t}`;switch(e){case yt.Critical:case yt.Error:console.error(n);break;case yt.Warning:console.warn(n);break;case yt.Information:console.info(n);break;default:console.log(n)}}}}function _t(e,t){switch(t){case"webassembly":return Tt(e,"webassembly");case"server":return function(e){return Tt(e,"server").sort(((e,t)=>e.sequence-t.sequence))}(e);case"auto":return Tt(e,"auto")}}const St=/^\s*Blazor-Server-Component-State:(?[a-zA-Z0-9+/=]+)$/,Ct=/^\s*Blazor-WebAssembly-Component-State:(?[a-zA-Z0-9+/=]+)$/,Et=/^\s*Blazor-Web-Initializers:(?[a-zA-Z0-9+/=]+)$/;function It(e){return kt(e,St)}function kt(e,t,n="state"){var o;if(e.nodeType===Node.COMMENT_NODE){const r=e.textContent||"",i=t.exec(r),s=i&&i.groups&&i.groups[n];return s&&(null===(o=e.parentNode)||void 0===o||o.removeChild(e)),s}if(!e.hasChildNodes())return;const r=e.childNodes;for(let e=0;e.*)$/);function Dt(e,t){const n=e.currentElement;var o,r,i;if(n&&n.nodeType===Node.COMMENT_NODE&&n.textContent){const s=Rt.exec(n.textContent),a=s&&s.groups&&s.groups.descriptor;if(!a)return;!function(e){if(e.parentNode instanceof Document)throw new Error("Root components cannot be marked as interactive. The element must be rendered statically so that scripts are not evaluated multiple times.")}(n);try{const s=function(e){const t=JSON.parse(e),{type:n}=t;if("server"!==n&&"webassembly"!==n&&"auto"!==n)throw new Error(`Invalid component type '${n}'.`);return t}(a),c=function(e,t,n){const{prerenderId:o}=e;if(o){for(;n.next()&&n.currentElement;){const e=n.currentElement;if(e.nodeType!==Node.COMMENT_NODE)continue;if(!e.textContent)continue;const t=Rt.exec(e.textContent),r=t&&t[1];if(r)return Pt(r,o),e}throw new Error(`Could not find an end component comment for '${t}'.`)}}(s,n,e);if(t!==s.type)return;switch(s.type){case"webassembly":return r=n,i=c,Nt(o=s),{...o,uniqueId:At++,start:r,end:i};case"server":return function(e,t,n){return xt(e),{...e,uniqueId:At++,start:t,end:n}}(s,n,c);case"auto":return function(e,t,n){return xt(e),Nt(e),{...e,uniqueId:At++,start:t,end:n}}(s,n,c)}}catch(e){throw new Error(`Found malformed component comment at ${n.textContent}`)}}}let At=0;function xt(e){const{descriptor:t,sequence:n}=e;if(!t)throw new Error("descriptor must be defined when using a descriptor.");if(void 0===n)throw new Error("sequence must be defined when using a descriptor.");if(!Number.isInteger(n))throw new Error(`Error parsing the sequence '${n}' for component '${JSON.stringify(e)}'`)}function Nt(e){const{assembly:t,typeName:n}=e;if(!t)throw new Error("assembly must be defined when using a descriptor.");if(!n)throw new Error("typeName must be defined when using a descriptor.");e.parameterDefinitions=e.parameterDefinitions&&atob(e.parameterDefinitions),e.parameterValues=e.parameterValues&&atob(e.parameterValues)}function Pt(e,t){const n=JSON.parse(e);if(1!==Object.keys(n).length)throw new Error(`Invalid end of component comment: '${e}'`);const o=n.prerenderId;if(!o)throw new Error(`End of component comment must have a value for the prerendered property: '${e}'`);if(o!==t)throw new Error(`End of component comment prerendered property must match the start comment prerender id: '${t}', '${o}'`)}class Mt{constructor(e){this.childNodes=e,this.currentIndex=-1,this.length=e.length}next(){return this.currentIndex++,this.currentIndex{n+=`0x${e<16?"0":""}${e.toString(16)} `})),n.substr(0,n.length-1)}(e)}'`)):"string"==typeof e&&(n=`String data of length ${e.length}`,t&&(n+=`. Content: '${e}'`)),n}function zt(e){return e&&"undefined"!=typeof ArrayBuffer&&(e instanceof ArrayBuffer||e.constructor&&"ArrayBuffer"===e.constructor.name)}async function qt(e,t,n,o,r,i){const s={},[a,c]=Vt();s[a]=c,e.log(Ot.Trace,`(${t} transport) sending data. ${jt(r,i.logMessageContent)}.`);const l=zt(r)?"arraybuffer":"text",h=await n.post(o,{content:r,headers:{...s,...i.headers},responseType:l,timeout:i.timeout,withCredentials:i.withCredentials});e.log(Ot.Trace,`(${t} transport) request complete. Response status: ${h.statusCode}.`)}class Jt{constructor(e,t){this._subject=e,this._observer=t}dispose(){const e=this._subject.observers.indexOf(this._observer);e>-1&&this._subject.observers.splice(e,1),0===this._subject.observers.length&&this._subject.cancelCallback&&this._subject.cancelCallback().catch((e=>{}))}}class Kt{constructor(e){this._minLevel=e,this.out=console}log(e,t){if(e>=this._minLevel){const n=`[${(new Date).toISOString()}] ${Ot[e]}: ${t}`;switch(e){case Ot.Critical:case Ot.Error:this.out.error(n);break;case Ot.Warning:this.out.warn(n);break;case Ot.Information:this.out.info(n);break;default:this.out.log(n)}}}}function Vt(){let e="X-SignalR-User-Agent";return Wt.isNode&&(e="User-Agent"),[e,Xt($t,Gt(),Wt.isNode?"NodeJS":"Browser",Yt())]}function Xt(e,t,n,o){let r="Microsoft SignalR/";const i=e.split(".");return r+=`${i[0]}.${i[1]}`,r+=` (${e}; `,r+=t&&""!==t?`${t}; `:"Unknown OS; ",r+=`${n}`,r+=o?`; ${o}`:"; Unknown Runtime Version",r+=")",r}function Gt(){if(!Wt.isNode)return"";switch(process.platform){case"win32":return"Windows NT";case"darwin":return"macOS";case"linux":return"Linux";default:return process.platform}}function Yt(){if(Wt.isNode)return process.versions.node}function Qt(e){return e.stack?e.stack:e.message?e.message:`${e}`}class Zt{writeHandshakeRequest(e){return Bt.write(JSON.stringify(e))}parseHandshakeResponse(e){let t,n;if(zt(e)){const o=new Uint8Array(e),r=o.indexOf(Bt.RecordSeparatorCode);if(-1===r)throw new Error("Message is incomplete.");const i=r+1;t=String.fromCharCode.apply(null,Array.prototype.slice.call(o.slice(0,i))),n=o.byteLength>i?o.slice(i).buffer:null}else{const o=e,r=o.indexOf(Bt.RecordSeparator);if(-1===r)throw new Error("Message is incomplete.");const i=r+1;t=o.substring(0,i),n=o.length>i?o.substring(i):null}const o=Bt.parse(t),r=JSON.parse(o[0]);if(r.type)throw new Error("Expected a handshake response from the server.");return[n,r]}}class en extends Error{constructor(e,t){const n=new.target.prototype;super(`${e}: Status code '${t}'`),this.statusCode=t,this.__proto__=n}}class tn extends Error{constructor(e="A timeout occurred."){const t=new.target.prototype;super(e),this.__proto__=t}}class nn extends Error{constructor(e="An abort occurred."){const t=new.target.prototype;super(e),this.__proto__=t}}class on extends Error{constructor(e,t){const n=new.target.prototype;super(e),this.transport=t,this.errorType="UnsupportedTransportError",this.__proto__=n}}class rn extends Error{constructor(e,t){const n=new.target.prototype;super(e),this.transport=t,this.errorType="DisabledTransportError",this.__proto__=n}}class sn extends Error{constructor(e,t){const n=new.target.prototype;super(e),this.transport=t,this.errorType="FailedToStartTransportError",this.__proto__=n}}class an extends Error{constructor(e){const t=new.target.prototype;super(e),this.errorType="FailedToNegotiateWithServerError",this.__proto__=t}}class cn extends Error{constructor(e,t){const n=new.target.prototype;super(e),this.innerErrors=t,this.__proto__=n}}var ln,hn;!function(e){e[e.Invocation=1]="Invocation",e[e.StreamItem=2]="StreamItem",e[e.Completion=3]="Completion",e[e.StreamInvocation=4]="StreamInvocation",e[e.CancelInvocation=5]="CancelInvocation",e[e.Ping=6]="Ping",e[e.Close=7]="Close",e[e.Ack=8]="Ack",e[e.Sequence=9]="Sequence"}(ln||(ln={}));class dn{constructor(){this.observers=[]}next(e){for(const t of this.observers)t.next(e)}error(e){for(const t of this.observers)t.error&&t.error(e)}complete(){for(const e of this.observers)e.complete&&e.complete()}subscribe(e){return this.observers.push(e),new Jt(this,e)}}class un{constructor(e,t,n){this._bufferSize=1e5,this._messages=[],this._totalMessageCount=0,this._waitForSequenceMessage=!1,this._nextReceivingSequenceId=1,this._latestReceivedSequenceId=0,this._bufferedByteCount=0,this._reconnectInProgress=!1,this._protocol=e,this._connection=t,this._bufferSize=n}async _send(e){const t=this._protocol.writeMessage(e);let n=Promise.resolve();if(this._isInvocationMessage(e)){this._totalMessageCount++;let e=()=>{},o=()=>{};zt(t)?this._bufferedByteCount+=t.byteLength:this._bufferedByteCount+=t.length,this._bufferedByteCount>=this._bufferSize&&(n=new Promise(((t,n)=>{e=t,o=n}))),this._messages.push(new pn(t,this._totalMessageCount,e,o))}try{this._reconnectInProgress||await this._connection.send(t)}catch{this._disconnected()}await n}_ack(e){let t=-1;for(let n=0;nthis._nextReceivingSequenceId?this._connection.stop(new Error("Sequence ID greater than amount of messages we've received.")):this._nextReceivingSequenceId=e.sequenceId}_disconnected(){this._reconnectInProgress=!0,this._waitForSequenceMessage=!0}async _resend(){const e=0!==this._messages.length?this._messages[0]._id:this._totalMessageCount+1;await this._connection.send(this._protocol.writeMessage({type:ln.Sequence,sequenceId:e}));const t=this._messages;for(const e of t)await this._connection.send(e._message);this._reconnectInProgress=!1}_dispose(e){null!=e||(e=new Error("Unable to reconnect to server."));for(const t of this._messages)t._rejector(e)}_isInvocationMessage(e){switch(e.type){case ln.Invocation:case ln.StreamItem:case ln.Completion:case ln.StreamInvocation:case ln.CancelInvocation:return!0;case ln.Close:case ln.Sequence:case ln.Ping:case ln.Ack:return!1}}_ackTimer(){void 0===this._ackTimerHandle&&(this._ackTimerHandle=setTimeout((async()=>{try{this._reconnectInProgress||await this._connection.send(this._protocol.writeMessage({type:ln.Ack,sequenceId:this._latestReceivedSequenceId}))}catch{}clearTimeout(this._ackTimerHandle),this._ackTimerHandle=void 0}),1e3))}}class pn{constructor(e,t,n,o){this._message=e,this._id=t,this._resolver=n,this._rejector=o}}!function(e){e.Disconnected="Disconnected",e.Connecting="Connecting",e.Connected="Connected",e.Disconnecting="Disconnecting",e.Reconnecting="Reconnecting"}(hn||(hn={}));class fn{static create(e,t,n,o,r,i,s){return new fn(e,t,n,o,r,i,s)}constructor(e,t,n,o,r,i,s){this._nextKeepAlive=0,this._freezeEventListener=()=>{this._logger.log(Ot.Warning,"The page is being frozen, this will likely lead to the connection being closed and messages being lost. For more information see the docs at https://learn.microsoft.com/aspnet/core/signalr/javascript-client#bsleep")},Ht.isRequired(e,"connection"),Ht.isRequired(t,"logger"),Ht.isRequired(n,"protocol"),this.serverTimeoutInMilliseconds=null!=r?r:3e4,this.keepAliveIntervalInMilliseconds=null!=i?i:15e3,this._statefulReconnectBufferSize=null!=s?s:1e5,this._logger=t,this._protocol=n,this.connection=e,this._reconnectPolicy=o,this._handshakeProtocol=new Zt,this.connection.onreceive=e=>this._processIncomingData(e),this.connection.onclose=e=>this._connectionClosed(e),this._callbacks={},this._methods={},this._closedCallbacks=[],this._reconnectingCallbacks=[],this._reconnectedCallbacks=[],this._invocationId=0,this._receivedHandshakeResponse=!1,this._connectionState=hn.Disconnected,this._connectionStarted=!1,this._cachedPingMessage=this._protocol.writeMessage({type:ln.Ping})}get state(){return this._connectionState}get connectionId(){return this.connection&&this.connection.connectionId||null}get baseUrl(){return this.connection.baseUrl||""}set baseUrl(e){if(this._connectionState!==hn.Disconnected&&this._connectionState!==hn.Reconnecting)throw new Error("The HubConnection must be in the Disconnected or Reconnecting state to change the url.");if(!e)throw new Error("The HubConnection url must be a valid url.");this.connection.baseUrl=e}start(){return this._startPromise=this._startWithStateTransitions(),this._startPromise}async _startWithStateTransitions(){if(this._connectionState!==hn.Disconnected)return Promise.reject(new Error("Cannot start a HubConnection that is not in the 'Disconnected' state."));this._connectionState=hn.Connecting,this._logger.log(Ot.Debug,"Starting HubConnection.");try{await this._startInternal(),Wt.isBrowser&&window.document.addEventListener("freeze",this._freezeEventListener),this._connectionState=hn.Connected,this._connectionStarted=!0,this._logger.log(Ot.Debug,"HubConnection connected successfully.")}catch(e){return this._connectionState=hn.Disconnected,this._logger.log(Ot.Debug,`HubConnection failed to start successfully because of error '${e}'.`),Promise.reject(e)}}async _startInternal(){this._stopDuringStartError=void 0,this._receivedHandshakeResponse=!1;const e=new Promise(((e,t)=>{this._handshakeResolver=e,this._handshakeRejecter=t}));await this.connection.start(this._protocol.transferFormat);try{let t=this._protocol.version;this.connection.features.reconnect||(t=1);const n={protocol:this._protocol.name,version:t};if(this._logger.log(Ot.Debug,"Sending handshake request."),await this._sendMessage(this._handshakeProtocol.writeHandshakeRequest(n)),this._logger.log(Ot.Information,`Using HubProtocol '${this._protocol.name}'.`),this._cleanupTimeout(),this._resetTimeoutPeriod(),this._resetKeepAliveInterval(),await e,this._stopDuringStartError)throw this._stopDuringStartError;!!this.connection.features.reconnect&&(this._messageBuffer=new un(this._protocol,this.connection,this._statefulReconnectBufferSize),this.connection.features.disconnected=this._messageBuffer._disconnected.bind(this._messageBuffer),this.connection.features.resend=()=>{if(this._messageBuffer)return this._messageBuffer._resend()}),this.connection.features.inherentKeepAlive||await this._sendMessage(this._cachedPingMessage)}catch(e){throw this._logger.log(Ot.Debug,`Hub handshake failed with error '${e}' during start(). Stopping HubConnection.`),this._cleanupTimeout(),this._cleanupPingTimer(),await this.connection.stop(e),e}}async stop(){const e=this._startPromise;this.connection.features.reconnect=!1,this._stopPromise=this._stopInternal(),await this._stopPromise;try{await e}catch(e){}}_stopInternal(e){if(this._connectionState===hn.Disconnected)return this._logger.log(Ot.Debug,`Call to HubConnection.stop(${e}) ignored because it is already in the disconnected state.`),Promise.resolve();if(this._connectionState===hn.Disconnecting)return this._logger.log(Ot.Debug,`Call to HttpConnection.stop(${e}) ignored because the connection is already in the disconnecting state.`),this._stopPromise;const t=this._connectionState;return this._connectionState=hn.Disconnecting,this._logger.log(Ot.Debug,"Stopping HubConnection."),this._reconnectDelayHandle?(this._logger.log(Ot.Debug,"Connection stopped during reconnect delay. Done reconnecting."),clearTimeout(this._reconnectDelayHandle),this._reconnectDelayHandle=void 0,this._completeClose(),Promise.resolve()):(t===hn.Connected&&this._sendCloseMessage(),this._cleanupTimeout(),this._cleanupPingTimer(),this._stopDuringStartError=e||new nn("The connection was stopped before the hub handshake could complete."),this.connection.stop(e))}async _sendCloseMessage(){try{await this._sendWithProtocol(this._createCloseMessage())}catch{}}stream(e,...t){const[n,o]=this._replaceStreamingParams(t),r=this._createStreamInvocation(e,t,o);let i;const s=new dn;return s.cancelCallback=()=>{const e=this._createCancelInvocation(r.invocationId);return delete this._callbacks[r.invocationId],i.then((()=>this._sendWithProtocol(e)))},this._callbacks[r.invocationId]=(e,t)=>{t?s.error(t):e&&(e.type===ln.Completion?e.error?s.error(new Error(e.error)):s.complete():s.next(e.item))},i=this._sendWithProtocol(r).catch((e=>{s.error(e),delete this._callbacks[r.invocationId]})),this._launchStreams(n,i),s}_sendMessage(e){return this._resetKeepAliveInterval(),this.connection.send(e)}_sendWithProtocol(e){return this._messageBuffer?this._messageBuffer._send(e):this._sendMessage(this._protocol.writeMessage(e))}send(e,...t){const[n,o]=this._replaceStreamingParams(t),r=this._sendWithProtocol(this._createInvocation(e,t,!0,o));return this._launchStreams(n,r),r}invoke(e,...t){const[n,o]=this._replaceStreamingParams(t),r=this._createInvocation(e,t,!1,o);return new Promise(((e,t)=>{this._callbacks[r.invocationId]=(n,o)=>{o?t(o):n&&(n.type===ln.Completion?n.error?t(new Error(n.error)):e(n.result):t(new Error(`Unexpected message type: ${n.type}`)))};const o=this._sendWithProtocol(r).catch((e=>{t(e),delete this._callbacks[r.invocationId]}));this._launchStreams(n,o)}))}on(e,t){e&&t&&(e=e.toLowerCase(),this._methods[e]||(this._methods[e]=[]),-1===this._methods[e].indexOf(t)&&this._methods[e].push(t))}off(e,t){if(!e)return;e=e.toLowerCase();const n=this._methods[e];if(n)if(t){const o=n.indexOf(t);-1!==o&&(n.splice(o,1),0===n.length&&delete this._methods[e])}else delete this._methods[e]}onclose(e){e&&this._closedCallbacks.push(e)}onreconnecting(e){e&&this._reconnectingCallbacks.push(e)}onreconnected(e){e&&this._reconnectedCallbacks.push(e)}_processIncomingData(e){if(this._cleanupTimeout(),this._receivedHandshakeResponse||(e=this._processHandshakeResponse(e),this._receivedHandshakeResponse=!0),e){const t=this._protocol.parseMessages(e,this._logger);for(const e of t)if(!this._messageBuffer||this._messageBuffer._shouldProcessMessage(e))switch(e.type){case ln.Invocation:this._invokeClientMethod(e);break;case ln.StreamItem:case ln.Completion:{const t=this._callbacks[e.invocationId];if(t){e.type===ln.Completion&&delete this._callbacks[e.invocationId];try{t(e)}catch(e){this._logger.log(Ot.Error,`Stream callback threw error: ${Qt(e)}`)}}break}case ln.Ping:break;case ln.Close:{this._logger.log(Ot.Information,"Close message received from server.");const t=e.error?new Error("Server returned an error on close: "+e.error):void 0;!0===e.allowReconnect?this.connection.stop(t):this._stopPromise=this._stopInternal(t);break}case ln.Ack:this._messageBuffer&&this._messageBuffer._ack(e);break;case ln.Sequence:this._messageBuffer&&this._messageBuffer._resetSequence(e);break;default:this._logger.log(Ot.Warning,`Invalid message type: ${e.type}.`)}}this._resetTimeoutPeriod()}_processHandshakeResponse(e){let t,n;try{[n,t]=this._handshakeProtocol.parseHandshakeResponse(e)}catch(e){const t="Error parsing handshake response: "+e;this._logger.log(Ot.Error,t);const n=new Error(t);throw this._handshakeRejecter(n),n}if(t.error){const e="Server returned handshake error: "+t.error;this._logger.log(Ot.Error,e);const n=new Error(e);throw this._handshakeRejecter(n),n}return this._logger.log(Ot.Debug,"Server handshake complete."),this._handshakeResolver(),n}_resetKeepAliveInterval(){this.connection.features.inherentKeepAlive||(this._nextKeepAlive=(new Date).getTime()+this.keepAliveIntervalInMilliseconds,this._cleanupPingTimer())}_resetTimeoutPeriod(){if(!(this.connection.features&&this.connection.features.inherentKeepAlive||(this._timeoutHandle=setTimeout((()=>this.serverTimeout()),this.serverTimeoutInMilliseconds),void 0!==this._pingServerHandle))){let e=this._nextKeepAlive-(new Date).getTime();e<0&&(e=0),this._pingServerHandle=setTimeout((async()=>{if(this._connectionState===hn.Connected)try{await this._sendMessage(this._cachedPingMessage)}catch{this._cleanupPingTimer()}}),e)}}serverTimeout(){this.connection.stop(new Error("Server timeout elapsed without receiving a message from the server."))}async _invokeClientMethod(e){const t=e.target.toLowerCase(),n=this._methods[t];if(!n)return this._logger.log(Ot.Warning,`No client method with the name '${t}' found.`),void(e.invocationId&&(this._logger.log(Ot.Warning,`No result given for '${t}' method and invocation ID '${e.invocationId}'.`),await this._sendWithProtocol(this._createCompletionMessage(e.invocationId,"Client didn't provide a result.",null))));const o=n.slice(),r=!!e.invocationId;let i,s,a;for(const n of o)try{const o=i;i=await n.apply(this,e.arguments),r&&i&&o&&(this._logger.log(Ot.Error,`Multiple results provided for '${t}'. Sending error to server.`),a=this._createCompletionMessage(e.invocationId,"Client provided multiple results.",null)),s=void 0}catch(e){s=e,this._logger.log(Ot.Error,`A callback for the method '${t}' threw error '${e}'.`)}a?await this._sendWithProtocol(a):r?(s?a=this._createCompletionMessage(e.invocationId,`${s}`,null):void 0!==i?a=this._createCompletionMessage(e.invocationId,null,i):(this._logger.log(Ot.Warning,`No result given for '${t}' method and invocation ID '${e.invocationId}'.`),a=this._createCompletionMessage(e.invocationId,"Client didn't provide a result.",null)),await this._sendWithProtocol(a)):i&&this._logger.log(Ot.Error,`Result given for '${t}' method but server is not expecting a result.`)}_connectionClosed(e){this._logger.log(Ot.Debug,`HubConnection.connectionClosed(${e}) called while in state ${this._connectionState}.`),this._stopDuringStartError=this._stopDuringStartError||e||new nn("The underlying connection was closed before the hub handshake could complete."),this._handshakeResolver&&this._handshakeResolver(),this._cancelCallbacksWithError(e||new Error("Invocation canceled due to the underlying connection being closed.")),this._cleanupTimeout(),this._cleanupPingTimer(),this._connectionState===hn.Disconnecting?this._completeClose(e):this._connectionState===hn.Connected&&this._reconnectPolicy?this._reconnect(e):this._connectionState===hn.Connected&&this._completeClose(e)}_completeClose(e){if(this._connectionStarted){this._connectionState=hn.Disconnected,this._connectionStarted=!1,this._messageBuffer&&(this._messageBuffer._dispose(null!=e?e:new Error("Connection closed.")),this._messageBuffer=void 0),Wt.isBrowser&&window.document.removeEventListener("freeze",this._freezeEventListener);try{this._closedCallbacks.forEach((t=>t.apply(this,[e])))}catch(t){this._logger.log(Ot.Error,`An onclose callback called with error '${e}' threw error '${t}'.`)}}}async _reconnect(e){const t=Date.now();let n=0,o=void 0!==e?e:new Error("Attempting to reconnect due to a unknown error."),r=this._getNextRetryDelay(n++,0,o);if(null===r)return this._logger.log(Ot.Debug,"Connection not reconnecting because the IRetryPolicy returned null on the first reconnect attempt."),void this._completeClose(e);if(this._connectionState=hn.Reconnecting,e?this._logger.log(Ot.Information,`Connection reconnecting because of error '${e}'.`):this._logger.log(Ot.Information,"Connection reconnecting."),0!==this._reconnectingCallbacks.length){try{this._reconnectingCallbacks.forEach((t=>t.apply(this,[e])))}catch(t){this._logger.log(Ot.Error,`An onreconnecting callback called with error '${e}' threw error '${t}'.`)}if(this._connectionState!==hn.Reconnecting)return void this._logger.log(Ot.Debug,"Connection left the reconnecting state in onreconnecting callback. Done reconnecting.")}for(;null!==r;){if(this._logger.log(Ot.Information,`Reconnect attempt number ${n} will start in ${r} ms.`),await new Promise((e=>{this._reconnectDelayHandle=setTimeout(e,r)})),this._reconnectDelayHandle=void 0,this._connectionState!==hn.Reconnecting)return void this._logger.log(Ot.Debug,"Connection left the reconnecting state during reconnect delay. Done reconnecting.");try{if(await this._startInternal(),this._connectionState=hn.Connected,this._logger.log(Ot.Information,"HubConnection reconnected successfully."),0!==this._reconnectedCallbacks.length)try{this._reconnectedCallbacks.forEach((e=>e.apply(this,[this.connection.connectionId])))}catch(e){this._logger.log(Ot.Error,`An onreconnected callback called with connectionId '${this.connection.connectionId}; threw error '${e}'.`)}return}catch(e){if(this._logger.log(Ot.Information,`Reconnect attempt failed because of error '${e}'.`),this._connectionState!==hn.Reconnecting)return this._logger.log(Ot.Debug,`Connection moved to the '${this._connectionState}' from the reconnecting state during reconnect attempt. Done reconnecting.`),void(this._connectionState===hn.Disconnecting&&this._completeClose());o=e instanceof Error?e:new Error(e.toString()),r=this._getNextRetryDelay(n++,Date.now()-t,o)}}this._logger.log(Ot.Information,`Reconnect retries have been exhausted after ${Date.now()-t} ms and ${n} failed attempts. Connection disconnecting.`),this._completeClose()}_getNextRetryDelay(e,t,n){try{return this._reconnectPolicy.nextRetryDelayInMilliseconds({elapsedMilliseconds:t,previousRetryCount:e,retryReason:n})}catch(n){return this._logger.log(Ot.Error,`IRetryPolicy.nextRetryDelayInMilliseconds(${e}, ${t}) threw error '${n}'.`),null}}_cancelCallbacksWithError(e){const t=this._callbacks;this._callbacks={},Object.keys(t).forEach((n=>{const o=t[n];try{o(null,e)}catch(t){this._logger.log(Ot.Error,`Stream 'error' callback called with '${e}' threw error: ${Qt(t)}`)}}))}_cleanupPingTimer(){this._pingServerHandle&&(clearTimeout(this._pingServerHandle),this._pingServerHandle=void 0)}_cleanupTimeout(){this._timeoutHandle&&clearTimeout(this._timeoutHandle)}_createInvocation(e,t,n,o){if(n)return 0!==o.length?{arguments:t,streamIds:o,target:e,type:ln.Invocation}:{arguments:t,target:e,type:ln.Invocation};{const n=this._invocationId;return this._invocationId++,0!==o.length?{arguments:t,invocationId:n.toString(),streamIds:o,target:e,type:ln.Invocation}:{arguments:t,invocationId:n.toString(),target:e,type:ln.Invocation}}}_launchStreams(e,t){if(0!==e.length){t||(t=Promise.resolve());for(const n in e)e[n].subscribe({complete:()=>{t=t.then((()=>this._sendWithProtocol(this._createCompletionMessage(n))))},error:e=>{let o;o=e instanceof Error?e.message:e&&e.toString?e.toString():"Unknown error",t=t.then((()=>this._sendWithProtocol(this._createCompletionMessage(n,o))))},next:e=>{t=t.then((()=>this._sendWithProtocol(this._createStreamItemMessage(n,e))))}})}}_replaceStreamingParams(e){const t=[],n=[];for(let o=0;o0)&&(t=!1,this._accessToken=await this._accessTokenFactory()),this._setAuthorizationHeader(e);const n=await this._innerClient.send(e);return t&&401===n.statusCode&&this._accessTokenFactory?(this._accessToken=await this._accessTokenFactory(),this._setAuthorizationHeader(e),await this._innerClient.send(e)):n}_setAuthorizationHeader(e){e.headers||(e.headers={}),this._accessToken?e.headers[vn.Authorization]=`Bearer ${this._accessToken}`:this._accessTokenFactory&&e.headers[vn.Authorization]&&delete e.headers[vn.Authorization]}getCookieString(e){return this._innerClient.getCookieString(e)}}class _n extends wn{constructor(e){super(),this._logger=e;const t={_fetchType:void 0,_jar:void 0};var o;o=t,"undefined"==typeof fetch&&(o._jar=new(n(628).CookieJar),"undefined"==typeof fetch?o._fetchType=n(200):o._fetchType=fetch,o._fetchType=n(203)(o._fetchType,o._jar),1)?(this._fetchType=t._fetchType,this._jar=t._jar):this._fetchType=fetch.bind(function(){if("undefined"!=typeof globalThis)return globalThis;if("undefined"!=typeof self)return self;if("undefined"!=typeof window)return window;if(void 0!==n.g)return n.g;throw new Error("could not find global")}()),this._abortControllerType=AbortController;const r={_abortControllerType:this._abortControllerType};(function(e){return"undefined"==typeof AbortController&&(e._abortControllerType=n(778),!0)})(r)&&(this._abortControllerType=r._abortControllerType)}async send(e){if(e.abortSignal&&e.abortSignal.aborted)throw new nn;if(!e.method)throw new Error("No method defined.");if(!e.url)throw new Error("No url defined.");const t=new this._abortControllerType;let n;e.abortSignal&&(e.abortSignal.onabort=()=>{t.abort(),n=new nn});let o,r=null;if(e.timeout){const o=e.timeout;r=setTimeout((()=>{t.abort(),this._logger.log(Ot.Warning,"Timeout from HTTP request."),n=new tn}),o)}""===e.content&&(e.content=void 0),e.content&&(e.headers=e.headers||{},zt(e.content)?e.headers["Content-Type"]="application/octet-stream":e.headers["Content-Type"]="text/plain;charset=UTF-8");try{o=await this._fetchType(e.url,{body:e.content,cache:"no-cache",credentials:!0===e.withCredentials?"include":"same-origin",headers:{"X-Requested-With":"XMLHttpRequest",...e.headers},method:e.method,mode:"cors",redirect:"follow",signal:t.signal})}catch(e){if(n)throw n;throw this._logger.log(Ot.Warning,`Error from HTTP request. ${e}.`),e}finally{r&&clearTimeout(r),e.abortSignal&&(e.abortSignal.onabort=null)}if(!o.ok){const e=await Sn(o,"text");throw new en(e||o.statusText,o.status)}const i=Sn(o,e.responseType),s=await i;return new yn(o.status,o.statusText,s)}getCookieString(e){return""}}function Sn(e,t){let n;switch(t){case"arraybuffer":n=e.arrayBuffer();break;case"text":default:n=e.text();break;case"blob":case"document":case"json":throw new Error(`${t} is not supported.`)}return n}class Cn extends wn{constructor(e){super(),this._logger=e}send(e){return e.abortSignal&&e.abortSignal.aborted?Promise.reject(new nn):e.method?e.url?new Promise(((t,n)=>{const o=new XMLHttpRequest;o.open(e.method,e.url,!0),o.withCredentials=void 0===e.withCredentials||e.withCredentials,o.setRequestHeader("X-Requested-With","XMLHttpRequest"),""===e.content&&(e.content=void 0),e.content&&(zt(e.content)?o.setRequestHeader("Content-Type","application/octet-stream"):o.setRequestHeader("Content-Type","text/plain;charset=UTF-8"));const r=e.headers;r&&Object.keys(r).forEach((e=>{o.setRequestHeader(e,r[e])})),e.responseType&&(o.responseType=e.responseType),e.abortSignal&&(e.abortSignal.onabort=()=>{o.abort(),n(new nn)}),e.timeout&&(o.timeout=e.timeout),o.onload=()=>{e.abortSignal&&(e.abortSignal.onabort=null),o.status>=200&&o.status<300?t(new yn(o.status,o.statusText,o.response||o.responseText)):n(new en(o.response||o.responseText||o.statusText,o.status))},o.onerror=()=>{this._logger.log(Ot.Warning,`Error from HTTP request. ${o.status}: ${o.statusText}.`),n(new en(o.statusText,o.status))},o.ontimeout=()=>{this._logger.log(Ot.Warning,"Timeout from HTTP request."),n(new tn)},o.send(e.content)})):Promise.reject(new Error("No url defined.")):Promise.reject(new Error("No method defined."))}}class En extends wn{constructor(e){if(super(),"undefined"!=typeof fetch)this._httpClient=new _n(e);else{if("undefined"==typeof XMLHttpRequest)throw new Error("No usable HttpClient found.");this._httpClient=new Cn(e)}}send(e){return e.abortSignal&&e.abortSignal.aborted?Promise.reject(new nn):e.method?e.url?this._httpClient.send(e):Promise.reject(new Error("No url defined.")):Promise.reject(new Error("No method defined."))}getCookieString(e){return this._httpClient.getCookieString(e)}}var In,kn;!function(e){e[e.None=0]="None",e[e.WebSockets=1]="WebSockets",e[e.ServerSentEvents=2]="ServerSentEvents",e[e.LongPolling=4]="LongPolling"}(In||(In={})),function(e){e[e.Text=1]="Text",e[e.Binary=2]="Binary"}(kn||(kn={}));class Tn{constructor(){this._isAborted=!1,this.onabort=null}abort(){this._isAborted||(this._isAborted=!0,this.onabort&&this.onabort())}get signal(){return this}get aborted(){return this._isAborted}}class Rn{get pollAborted(){return this._pollAbort.aborted}constructor(e,t,n){this._httpClient=e,this._logger=t,this._pollAbort=new Tn,this._options=n,this._running=!1,this.onreceive=null,this.onclose=null}async connect(e,t){if(Ht.isRequired(e,"url"),Ht.isRequired(t,"transferFormat"),Ht.isIn(t,kn,"transferFormat"),this._url=e,this._logger.log(Ot.Trace,"(LongPolling transport) Connecting."),t===kn.Binary&&"undefined"!=typeof XMLHttpRequest&&"string"!=typeof(new XMLHttpRequest).responseType)throw new Error("Binary protocols over XmlHttpRequest not implementing advanced features are not supported.");const[n,o]=Vt(),r={[n]:o,...this._options.headers},i={abortSignal:this._pollAbort.signal,headers:r,timeout:1e5,withCredentials:this._options.withCredentials};t===kn.Binary&&(i.responseType="arraybuffer");const s=`${e}&_=${Date.now()}`;this._logger.log(Ot.Trace,`(LongPolling transport) polling: ${s}.`);const a=await this._httpClient.get(s,i);200!==a.statusCode?(this._logger.log(Ot.Error,`(LongPolling transport) Unexpected response code: ${a.statusCode}.`),this._closeError=new en(a.statusText||"",a.statusCode),this._running=!1):this._running=!0,this._receiving=this._poll(this._url,i)}async _poll(e,t){try{for(;this._running;)try{const n=`${e}&_=${Date.now()}`;this._logger.log(Ot.Trace,`(LongPolling transport) polling: ${n}.`);const o=await this._httpClient.get(n,t);204===o.statusCode?(this._logger.log(Ot.Information,"(LongPolling transport) Poll terminated by server."),this._running=!1):200!==o.statusCode?(this._logger.log(Ot.Error,`(LongPolling transport) Unexpected response code: ${o.statusCode}.`),this._closeError=new en(o.statusText||"",o.statusCode),this._running=!1):o.content?(this._logger.log(Ot.Trace,`(LongPolling transport) data received. ${jt(o.content,this._options.logMessageContent)}.`),this.onreceive&&this.onreceive(o.content)):this._logger.log(Ot.Trace,"(LongPolling transport) Poll timed out, reissuing.")}catch(e){this._running?e instanceof tn?this._logger.log(Ot.Trace,"(LongPolling transport) Poll timed out, reissuing."):(this._closeError=e,this._running=!1):this._logger.log(Ot.Trace,`(LongPolling transport) Poll errored after shutdown: ${e.message}`)}}finally{this._logger.log(Ot.Trace,"(LongPolling transport) Polling complete."),this.pollAborted||this._raiseOnClose()}}async send(e){return this._running?qt(this._logger,"LongPolling",this._httpClient,this._url,e,this._options):Promise.reject(new Error("Cannot send until the transport is connected"))}async stop(){this._logger.log(Ot.Trace,"(LongPolling transport) Stopping polling."),this._running=!1,this._pollAbort.abort();try{await this._receiving,this._logger.log(Ot.Trace,`(LongPolling transport) sending DELETE request to ${this._url}.`);const e={},[t,n]=Vt();e[t]=n;const o={headers:{...e,...this._options.headers},timeout:this._options.timeout,withCredentials:this._options.withCredentials};let r;try{await this._httpClient.delete(this._url,o)}catch(e){r=e}r?r instanceof en&&(404===r.statusCode?this._logger.log(Ot.Trace,"(LongPolling transport) A 404 response was returned from sending a DELETE request."):this._logger.log(Ot.Trace,`(LongPolling transport) Error sending a DELETE request: ${r}`)):this._logger.log(Ot.Trace,"(LongPolling transport) DELETE request accepted.")}finally{this._logger.log(Ot.Trace,"(LongPolling transport) Stop finished."),this._raiseOnClose()}}_raiseOnClose(){if(this.onclose){let e="(LongPolling transport) Firing onclose event.";this._closeError&&(e+=" Error: "+this._closeError),this._logger.log(Ot.Trace,e),this.onclose(this._closeError)}}}class Dn{constructor(e,t,n,o){this._httpClient=e,this._accessToken=t,this._logger=n,this._options=o,this.onreceive=null,this.onclose=null}async connect(e,t){return Ht.isRequired(e,"url"),Ht.isRequired(t,"transferFormat"),Ht.isIn(t,kn,"transferFormat"),this._logger.log(Ot.Trace,"(SSE transport) Connecting."),this._url=e,this._accessToken&&(e+=(e.indexOf("?")<0?"?":"&")+`access_token=${encodeURIComponent(this._accessToken)}`),new Promise(((n,o)=>{let r,i=!1;if(t===kn.Text){if(Wt.isBrowser||Wt.isWebWorker)r=new this._options.EventSource(e,{withCredentials:this._options.withCredentials});else{const t=this._httpClient.getCookieString(e),n={};n.Cookie=t;const[o,i]=Vt();n[o]=i,r=new this._options.EventSource(e,{withCredentials:this._options.withCredentials,headers:{...n,...this._options.headers}})}try{r.onmessage=e=>{if(this.onreceive)try{this._logger.log(Ot.Trace,`(SSE transport) data received. ${jt(e.data,this._options.logMessageContent)}.`),this.onreceive(e.data)}catch(e){return void this._close(e)}},r.onerror=e=>{i?this._close():o(new Error("EventSource failed to connect. The connection could not be found on the server, either the connection ID is not present on the server, or a proxy is refusing/buffering the connection. If you have multiple servers check that sticky sessions are enabled."))},r.onopen=()=>{this._logger.log(Ot.Information,`SSE connected to ${this._url}`),this._eventSource=r,i=!0,n()}}catch(e){return void o(e)}}else o(new Error("The Server-Sent Events transport only supports the 'Text' transfer format"))}))}async send(e){return this._eventSource?qt(this._logger,"SSE",this._httpClient,this._url,e,this._options):Promise.reject(new Error("Cannot send until the transport is connected"))}stop(){return this._close(),Promise.resolve()}_close(e){this._eventSource&&(this._eventSource.close(),this._eventSource=void 0,this.onclose&&this.onclose(e))}}class An{constructor(e,t,n,o,r,i){this._logger=n,this._accessTokenFactory=t,this._logMessageContent=o,this._webSocketConstructor=r,this._httpClient=e,this.onreceive=null,this.onclose=null,this._headers=i}async connect(e,t){let n;return Ht.isRequired(e,"url"),Ht.isRequired(t,"transferFormat"),Ht.isIn(t,kn,"transferFormat"),this._logger.log(Ot.Trace,"(WebSockets transport) Connecting."),this._accessTokenFactory&&(n=await this._accessTokenFactory()),new Promise(((o,r)=>{let i;e=e.replace(/^http/,"ws");const s=this._httpClient.getCookieString(e);let a=!1;if(Wt.isReactNative){const t={},[o,r]=Vt();t[o]=r,n&&(t[vn.Authorization]=`Bearer ${n}`),s&&(t[vn.Cookie]=s),i=new this._webSocketConstructor(e,void 0,{headers:{...t,...this._headers}})}else n&&(e+=(e.indexOf("?")<0?"?":"&")+`access_token=${encodeURIComponent(n)}`);i||(i=new this._webSocketConstructor(e)),t===kn.Binary&&(i.binaryType="arraybuffer"),i.onopen=t=>{this._logger.log(Ot.Information,`WebSocket connected to ${e}.`),this._webSocket=i,a=!0,o()},i.onerror=e=>{let t=null;t="undefined"!=typeof ErrorEvent&&e instanceof ErrorEvent?e.error:"There was an error with the transport",this._logger.log(Ot.Information,`(WebSockets transport) ${t}.`)},i.onmessage=e=>{if(this._logger.log(Ot.Trace,`(WebSockets transport) data received. ${jt(e.data,this._logMessageContent)}.`),this.onreceive)try{this.onreceive(e.data)}catch(e){return void this._close(e)}},i.onclose=e=>{if(a)this._close(e);else{let t=null;t="undefined"!=typeof ErrorEvent&&e instanceof ErrorEvent?e.error:"WebSocket failed to connect. The connection could not be found on the server, either the endpoint may not be a SignalR endpoint, the connection ID is not present on the server, or there is a proxy blocking WebSockets. If you have multiple servers check that sticky sessions are enabled.",r(new Error(t))}}}))}send(e){return this._webSocket&&this._webSocket.readyState===this._webSocketConstructor.OPEN?(this._logger.log(Ot.Trace,`(WebSockets transport) sending data. ${jt(e,this._logMessageContent)}.`),this._webSocket.send(e),Promise.resolve()):Promise.reject("WebSocket is not in the OPEN state")}stop(){return this._webSocket&&this._close(void 0),Promise.resolve()}_close(e){this._webSocket&&(this._webSocket.onclose=()=>{},this._webSocket.onmessage=()=>{},this._webSocket.onerror=()=>{},this._webSocket.close(),this._webSocket=void 0),this._logger.log(Ot.Trace,"(WebSockets transport) socket closed."),this.onclose&&(!this._isCloseEvent(e)||!1!==e.wasClean&&1e3===e.code?e instanceof Error?this.onclose(e):this.onclose():this.onclose(new Error(`WebSocket closed with status code: ${e.code} (${e.reason||"no reason given"}).`)))}_isCloseEvent(e){return e&&"boolean"==typeof e.wasClean&&"number"==typeof e.code}}class xn{constructor(e,t={}){if(this._stopPromiseResolver=()=>{},this.features={},this._negotiateVersion=1,Ht.isRequired(e,"url"),this._logger=function(e){return void 0===e?new Kt(Ot.Information):null===e?Ft.instance:void 0!==e.log?e:new Kt(e)}(t.logger),this.baseUrl=this._resolveUrl(e),(t=t||{}).logMessageContent=void 0!==t.logMessageContent&&t.logMessageContent,"boolean"!=typeof t.withCredentials&&void 0!==t.withCredentials)throw new Error("withCredentials option was not a 'boolean' or 'undefined' value");t.withCredentials=void 0===t.withCredentials||t.withCredentials,t.timeout=void 0===t.timeout?1e5:t.timeout,"undefined"==typeof WebSocket||t.WebSocket||(t.WebSocket=WebSocket),"undefined"==typeof EventSource||t.EventSource||(t.EventSource=EventSource),this._httpClient=new bn(t.httpClient||new En(this._logger),t.accessTokenFactory),this._connectionState="Disconnected",this._connectionStarted=!1,this._options=t,this.onreceive=null,this.onclose=null}async start(e){if(e=e||kn.Binary,Ht.isIn(e,kn,"transferFormat"),this._logger.log(Ot.Debug,`Starting connection with transfer format '${kn[e]}'.`),"Disconnected"!==this._connectionState)return Promise.reject(new Error("Cannot start an HttpConnection that is not in the 'Disconnected' state."));if(this._connectionState="Connecting",this._startInternalPromise=this._startInternal(e),await this._startInternalPromise,"Disconnecting"===this._connectionState){const e="Failed to start the HttpConnection before stop() was called.";return this._logger.log(Ot.Error,e),await this._stopPromise,Promise.reject(new nn(e))}if("Connected"!==this._connectionState){const e="HttpConnection.startInternal completed gracefully but didn't enter the connection into the connected state!";return this._logger.log(Ot.Error,e),Promise.reject(new nn(e))}this._connectionStarted=!0}send(e){return"Connected"!==this._connectionState?Promise.reject(new Error("Cannot send data if the connection is not in the 'Connected' State.")):(this._sendQueue||(this._sendQueue=new Nn(this.transport)),this._sendQueue.send(e))}async stop(e){return"Disconnected"===this._connectionState?(this._logger.log(Ot.Debug,`Call to HttpConnection.stop(${e}) ignored because the connection is already in the disconnected state.`),Promise.resolve()):"Disconnecting"===this._connectionState?(this._logger.log(Ot.Debug,`Call to HttpConnection.stop(${e}) ignored because the connection is already in the disconnecting state.`),this._stopPromise):(this._connectionState="Disconnecting",this._stopPromise=new Promise((e=>{this._stopPromiseResolver=e})),await this._stopInternal(e),void await this._stopPromise)}async _stopInternal(e){this._stopError=e;try{await this._startInternalPromise}catch(e){}if(this.transport){try{await this.transport.stop()}catch(e){this._logger.log(Ot.Error,`HttpConnection.transport.stop() threw error '${e}'.`),this._stopConnection()}this.transport=void 0}else this._logger.log(Ot.Debug,"HttpConnection.transport is undefined in HttpConnection.stop() because start() failed.")}async _startInternal(e){let t=this.baseUrl;this._accessTokenFactory=this._options.accessTokenFactory,this._httpClient._accessTokenFactory=this._accessTokenFactory;try{if(this._options.skipNegotiation){if(this._options.transport!==In.WebSockets)throw new Error("Negotiation can only be skipped when using the WebSocket transport directly.");this.transport=this._constructTransport(In.WebSockets),await this._startTransport(t,e)}else{let n=null,o=0;do{if(n=await this._getNegotiationResponse(t),"Disconnecting"===this._connectionState||"Disconnected"===this._connectionState)throw new nn("The connection was stopped during negotiation.");if(n.error)throw new Error(n.error);if(n.ProtocolVersion)throw new Error("Detected a connection attempt to an ASP.NET SignalR Server. This client only supports connecting to an ASP.NET Core SignalR Server. See https://aka.ms/signalr-core-differences for details.");if(n.url&&(t=n.url),n.accessToken){const e=n.accessToken;this._accessTokenFactory=()=>e,this._httpClient._accessToken=e,this._httpClient._accessTokenFactory=void 0}o++}while(n.url&&o<100);if(100===o&&n.url)throw new Error("Negotiate redirection limit exceeded.");await this._createTransport(t,this._options.transport,n,e)}this.transport instanceof Rn&&(this.features.inherentKeepAlive=!0),"Connecting"===this._connectionState&&(this._logger.log(Ot.Debug,"The HttpConnection connected successfully."),this._connectionState="Connected")}catch(e){return this._logger.log(Ot.Error,"Failed to start the connection: "+e),this._connectionState="Disconnected",this.transport=void 0,this._stopPromiseResolver(),Promise.reject(e)}}async _getNegotiationResponse(e){const t={},[n,o]=Vt();t[n]=o;const r=this._resolveNegotiateUrl(e);this._logger.log(Ot.Debug,`Sending negotiation request: ${r}.`);try{const e=await this._httpClient.post(r,{content:"",headers:{...t,...this._options.headers},timeout:this._options.timeout,withCredentials:this._options.withCredentials});if(200!==e.statusCode)return Promise.reject(new Error(`Unexpected status code returned from negotiate '${e.statusCode}'`));const n=JSON.parse(e.content);return(!n.negotiateVersion||n.negotiateVersion<1)&&(n.connectionToken=n.connectionId),n.useStatefulReconnect&&!0!==this._options._useStatefulReconnect?Promise.reject(new an("Client didn't negotiate Stateful Reconnect but the server did.")):n}catch(e){let t="Failed to complete negotiation with the server: "+e;return e instanceof en&&404===e.statusCode&&(t+=" Either this is not a SignalR endpoint or there is a proxy blocking the connection."),this._logger.log(Ot.Error,t),Promise.reject(new an(t))}}_createConnectUrl(e,t){return t?e+(-1===e.indexOf("?")?"?":"&")+`id=${t}`:e}async _createTransport(e,t,n,o){let r=this._createConnectUrl(e,n.connectionToken);if(this._isITransport(t))return this._logger.log(Ot.Debug,"Connection was provided an instance of ITransport, using that directly."),this.transport=t,await this._startTransport(r,o),void(this.connectionId=n.connectionId);const i=[],s=n.availableTransports||[];let a=n;for(const n of s){const s=this._resolveTransportOrError(n,t,o,!0===(null==a?void 0:a.useStatefulReconnect));if(s instanceof Error)i.push(`${n.transport} failed:`),i.push(s);else if(this._isITransport(s)){if(this.transport=s,!a){try{a=await this._getNegotiationResponse(e)}catch(e){return Promise.reject(e)}r=this._createConnectUrl(e,a.connectionToken)}try{return await this._startTransport(r,o),void(this.connectionId=a.connectionId)}catch(e){if(this._logger.log(Ot.Error,`Failed to start the transport '${n.transport}': ${e}`),a=void 0,i.push(new sn(`${n.transport} failed: ${e}`,In[n.transport])),"Connecting"!==this._connectionState){const e="Failed to select transport before stop() was called.";return this._logger.log(Ot.Debug,e),Promise.reject(new nn(e))}}}}return i.length>0?Promise.reject(new cn(`Unable to connect to the server with any of the available transports. ${i.join(" ")}`,i)):Promise.reject(new Error("None of the transports supported by the client are supported by the server."))}_constructTransport(e){switch(e){case In.WebSockets:if(!this._options.WebSocket)throw new Error("'WebSocket' is not supported in your environment.");return new An(this._httpClient,this._accessTokenFactory,this._logger,this._options.logMessageContent,this._options.WebSocket,this._options.headers||{});case In.ServerSentEvents:if(!this._options.EventSource)throw new Error("'EventSource' is not supported in your environment.");return new Dn(this._httpClient,this._httpClient._accessToken,this._logger,this._options);case In.LongPolling:return new Rn(this._httpClient,this._logger,this._options);default:throw new Error(`Unknown transport: ${e}.`)}}_startTransport(e,t){return this.transport.onreceive=this.onreceive,this.features.reconnect?this.transport.onclose=async n=>{let o=!1;if(this.features.reconnect){try{this.features.disconnected(),await this.transport.connect(e,t),await this.features.resend()}catch{o=!0}o&&this._stopConnection(n)}else this._stopConnection(n)}:this.transport.onclose=e=>this._stopConnection(e),this.transport.connect(e,t)}_resolveTransportOrError(e,t,n,o){const r=In[e.transport];if(null==r)return this._logger.log(Ot.Debug,`Skipping transport '${e.transport}' because it is not supported by this client.`),new Error(`Skipping transport '${e.transport}' because it is not supported by this client.`);if(!function(e,t){return!e||0!=(t&e)}(t,r))return this._logger.log(Ot.Debug,`Skipping transport '${In[r]}' because it was disabled by the client.`),new rn(`'${In[r]}' is disabled by the client.`,r);if(!(e.transferFormats.map((e=>kn[e])).indexOf(n)>=0))return this._logger.log(Ot.Debug,`Skipping transport '${In[r]}' because it does not support the requested transfer format '${kn[n]}'.`),new Error(`'${In[r]}' does not support ${kn[n]}.`);if(r===In.WebSockets&&!this._options.WebSocket||r===In.ServerSentEvents&&!this._options.EventSource)return this._logger.log(Ot.Debug,`Skipping transport '${In[r]}' because it is not supported in your environment.'`),new on(`'${In[r]}' is not supported in your environment.`,r);this._logger.log(Ot.Debug,`Selecting transport '${In[r]}'.`);try{return this.features.reconnect=r===In.WebSockets?o:void 0,this._constructTransport(r)}catch(e){return e}}_isITransport(e){return e&&"object"==typeof e&&"connect"in e}_stopConnection(e){if(this._logger.log(Ot.Debug,`HttpConnection.stopConnection(${e}) called while in state ${this._connectionState}.`),this.transport=void 0,e=this._stopError||e,this._stopError=void 0,"Disconnected"!==this._connectionState){if("Connecting"===this._connectionState)throw this._logger.log(Ot.Warning,`Call to HttpConnection.stopConnection(${e}) was ignored because the connection is still in the connecting state.`),new Error(`HttpConnection.stopConnection(${e}) was called while the connection is still in the connecting state.`);if("Disconnecting"===this._connectionState&&this._stopPromiseResolver(),e?this._logger.log(Ot.Error,`Connection disconnected with error '${e}'.`):this._logger.log(Ot.Information,"Connection disconnected."),this._sendQueue&&(this._sendQueue.stop().catch((e=>{this._logger.log(Ot.Error,`TransportSendQueue.stop() threw error '${e}'.`)})),this._sendQueue=void 0),this.connectionId=void 0,this._connectionState="Disconnected",this._connectionStarted){this._connectionStarted=!1;try{this.onclose&&this.onclose(e)}catch(t){this._logger.log(Ot.Error,`HttpConnection.onclose(${e}) threw error '${t}'.`)}}}else this._logger.log(Ot.Debug,`Call to HttpConnection.stopConnection(${e}) was ignored because the connection is already in the disconnected state.`)}_resolveUrl(e){if(0===e.lastIndexOf("https://",0)||0===e.lastIndexOf("http://",0))return e;if(!Wt.isBrowser)throw new Error(`Cannot resolve '${e}'.`);const t=window.document.createElement("a");return t.href=e,this._logger.log(Ot.Information,`Normalizing '${e}' to '${t.href}'.`),t.href}_resolveNegotiateUrl(e){const t=new URL(e);t.pathname.endsWith("/")?t.pathname+="negotiate":t.pathname+="/negotiate";const n=new URLSearchParams(t.searchParams);return n.has("negotiateVersion")||n.append("negotiateVersion",this._negotiateVersion.toString()),n.has("useStatefulReconnect")?"true"===n.get("useStatefulReconnect")&&(this._options._useStatefulReconnect=!0):!0===this._options._useStatefulReconnect&&n.append("useStatefulReconnect","true"),t.search=n.toString(),t.toString()}}class Nn{constructor(e){this._transport=e,this._buffer=[],this._executing=!0,this._sendBufferedData=new Pn,this._transportResult=new Pn,this._sendLoopPromise=this._sendLoop()}send(e){return this._bufferData(e),this._transportResult||(this._transportResult=new Pn),this._transportResult.promise}stop(){return this._executing=!1,this._sendBufferedData.resolve(),this._sendLoopPromise}_bufferData(e){if(this._buffer.length&&typeof this._buffer[0]!=typeof e)throw new Error(`Expected data to be of type ${typeof this._buffer} but was of type ${typeof e}`);this._buffer.push(e),this._sendBufferedData.resolve()}async _sendLoop(){for(;;){if(await this._sendBufferedData.promise,!this._executing){this._transportResult&&this._transportResult.reject("Connection stopped.");break}this._sendBufferedData=new Pn;const e=this._transportResult;this._transportResult=void 0;const t="string"==typeof this._buffer[0]?this._buffer.join(""):Nn._concatBuffers(this._buffer);this._buffer.length=0;try{await this._transport.send(t),e.resolve()}catch(t){e.reject(t)}}}static _concatBuffers(e){const t=e.map((e=>e.byteLength)).reduce(((e,t)=>e+t)),n=new Uint8Array(t);let o=0;for(const t of e)n.set(new Uint8Array(t),o),o+=t.byteLength;return n.buffer}}class Pn{constructor(){this.promise=new Promise(((e,t)=>[this._resolver,this._rejecter]=[e,t]))}resolve(){this._resolver()}reject(e){this._rejecter(e)}}class Mn{constructor(){this.name="json",this.version=2,this.transferFormat=kn.Text}parseMessages(e,t){if("string"!=typeof e)throw new Error("Invalid input for JSON hub protocol. Expected a string.");if(!e)return[];null===t&&(t=Ft.instance);const n=Bt.parse(e),o=[];for(const e of n){const n=JSON.parse(e);if("number"!=typeof n.type)throw new Error("Invalid payload.");switch(n.type){case ln.Invocation:this._isInvocationMessage(n);break;case ln.StreamItem:this._isStreamItemMessage(n);break;case ln.Completion:this._isCompletionMessage(n);break;case ln.Ping:case ln.Close:break;case ln.Ack:this._isAckMessage(n);break;case ln.Sequence:this._isSequenceMessage(n);break;default:t.log(Ot.Information,"Unknown message type '"+n.type+"' ignored.");continue}o.push(n)}return o}writeMessage(e){return Bt.write(JSON.stringify(e))}_isInvocationMessage(e){this._assertNotEmptyString(e.target,"Invalid payload for Invocation message."),void 0!==e.invocationId&&this._assertNotEmptyString(e.invocationId,"Invalid payload for Invocation message.")}_isStreamItemMessage(e){if(this._assertNotEmptyString(e.invocationId,"Invalid payload for StreamItem message."),void 0===e.item)throw new Error("Invalid payload for StreamItem message.")}_isCompletionMessage(e){if(e.result&&e.error)throw new Error("Invalid payload for Completion message.");!e.result&&e.error&&this._assertNotEmptyString(e.error,"Invalid payload for Completion message."),this._assertNotEmptyString(e.invocationId,"Invalid payload for Completion message.")}_isAckMessage(e){if("number"!=typeof e.sequenceId)throw new Error("Invalid SequenceId for Ack message.")}_isSequenceMessage(e){if("number"!=typeof e.sequenceId)throw new Error("Invalid SequenceId for Sequence message.")}_assertNotEmptyString(e,t){if("string"!=typeof e||""===e)throw new Error(t)}}const Un={trace:Ot.Trace,debug:Ot.Debug,info:Ot.Information,information:Ot.Information,warn:Ot.Warning,warning:Ot.Warning,error:Ot.Error,critical:Ot.Critical,none:Ot.None};class Ln{configureLogging(e){if(Ht.isRequired(e,"logging"),function(e){return void 0!==e.log}(e))this.logger=e;else if("string"==typeof e){const t=function(e){const t=Un[e.toLowerCase()];if(void 0!==t)return t;throw new Error(`Unknown log level: ${e}`)}(e);this.logger=new Kt(t)}else this.logger=new Kt(e);return this}withUrl(e,t){return Ht.isRequired(e,"url"),Ht.isNotEmpty(e,"url"),this.url=e,this.httpConnectionOptions="object"==typeof t?{...this.httpConnectionOptions,...t}:{...this.httpConnectionOptions,transport:t},this}withHubProtocol(e){return Ht.isRequired(e,"protocol"),this.protocol=e,this}withAutomaticReconnect(e){if(this.reconnectPolicy)throw new Error("A reconnectPolicy has already been set.");return e?Array.isArray(e)?this.reconnectPolicy=new mn(e):this.reconnectPolicy=e:this.reconnectPolicy=new mn,this}withServerTimeout(e){return Ht.isRequired(e,"milliseconds"),this._serverTimeoutInMilliseconds=e,this}withKeepAliveInterval(e){return Ht.isRequired(e,"milliseconds"),this._keepAliveIntervalInMilliseconds=e,this}withStatefulReconnect(e){return void 0===this.httpConnectionOptions&&(this.httpConnectionOptions={}),this.httpConnectionOptions._useStatefulReconnect=!0,this._statefulReconnectBufferSize=null==e?void 0:e.bufferSize,this}build(){const e=this.httpConnectionOptions||{};if(void 0===e.logger&&(e.logger=this.logger),!this.url)throw new Error("The 'HubConnectionBuilder.withUrl' method must be called before building the connection.");const t=new xn(this.url,e);return fn.create(t,this.logger||Ft.instance,this.protocol||new Mn,this.reconnectPolicy,this._serverTimeoutInMilliseconds,this._keepAliveIntervalInMilliseconds,this._statefulReconnectBufferSize)}}var Bn;!function(e){e[e.Default=0]="Default",e[e.Server=1]="Server",e[e.WebAssembly=2]="WebAssembly",e[e.WebView=3]="WebView"}(Bn||(Bn={}));var On,Fn,$n,Hn=4294967295;function Wn(e,t,n){var o=Math.floor(n/4294967296),r=n;e.setUint32(t,o),e.setUint32(t+4,r)}function jn(e,t){return 4294967296*e.getInt32(t)+e.getUint32(t+4)}var zn=("undefined"==typeof process||"never"!==(null===(On=null===process||void 0===process?void 0:process.env)||void 0===On?void 0:On.TEXT_ENCODING))&&"undefined"!=typeof TextEncoder&&"undefined"!=typeof TextDecoder;function qn(e){for(var t=e.length,n=0,o=0;o=55296&&r<=56319&&o65535&&(h-=65536,i.push(h>>>10&1023|55296),h=56320|1023&h),i.push(h)}else i.push(a);i.length>=4096&&(s+=String.fromCharCode.apply(String,i),i.length=0)}return i.length>0&&(s+=String.fromCharCode.apply(String,i)),s}var Gn,Yn=zn?new TextDecoder:null,Qn=zn?"undefined"!=typeof process&&"force"!==(null===($n=null===process||void 0===process?void 0:process.env)||void 0===$n?void 0:$n.TEXT_DECODER)?200:0:Hn,Zn=function(e,t){this.type=e,this.data=t},eo=(Gn=function(e,t){return Gn=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},Gn(e,t)},function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function n(){this.constructor=e}Gn(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}),to=function(e){function t(n){var o=e.call(this,n)||this,r=Object.create(t.prototype);return Object.setPrototypeOf(o,r),Object.defineProperty(o,"name",{configurable:!0,enumerable:!1,value:t.name}),o}return eo(t,e),t}(Error),no={type:-1,encode:function(e){var t,n,o,r;return e instanceof Date?function(e){var t,n=e.sec,o=e.nsec;if(n>=0&&o>=0&&n<=17179869183){if(0===o&&n<=4294967295){var r=new Uint8Array(4);return(t=new DataView(r.buffer)).setUint32(0,n),r}var i=n/4294967296,s=4294967295&n;return r=new Uint8Array(8),(t=new DataView(r.buffer)).setUint32(0,o<<2|3&i),t.setUint32(4,s),r}return r=new Uint8Array(12),(t=new DataView(r.buffer)).setUint32(0,o),Wn(t,4,n),r}((o=1e6*((t=e.getTime())-1e3*(n=Math.floor(t/1e3))),{sec:n+(r=Math.floor(o/1e9)),nsec:o-1e9*r})):null},decode:function(e){var t=function(e){var t=new DataView(e.buffer,e.byteOffset,e.byteLength);switch(e.byteLength){case 4:return{sec:t.getUint32(0),nsec:0};case 8:var n=t.getUint32(0);return{sec:4294967296*(3&n)+t.getUint32(4),nsec:n>>>2};case 12:return{sec:jn(t,4),nsec:t.getUint32(0)};default:throw new to("Unrecognized data size for timestamp (expected 4, 8, or 12): ".concat(e.length))}}(e);return new Date(1e3*t.sec+t.nsec/1e6)}},oo=function(){function e(){this.builtInEncoders=[],this.builtInDecoders=[],this.encoders=[],this.decoders=[],this.register(no)}return e.prototype.register=function(e){var t=e.type,n=e.encode,o=e.decode;if(t>=0)this.encoders[t]=n,this.decoders[t]=o;else{var r=1+t;this.builtInEncoders[r]=n,this.builtInDecoders[r]=o}},e.prototype.tryToEncode=function(e,t){for(var n=0;nthis.maxDepth)throw new Error("Too deep objects in depth ".concat(t));null==e?this.encodeNil():"boolean"==typeof e?this.encodeBoolean(e):"number"==typeof e?this.encodeNumber(e):"string"==typeof e?this.encodeString(e):this.encodeObject(e,t)},e.prototype.ensureBufferSizeToWrite=function(e){var t=this.pos+e;this.view.byteLength=0?e<128?this.writeU8(e):e<256?(this.writeU8(204),this.writeU8(e)):e<65536?(this.writeU8(205),this.writeU16(e)):e<4294967296?(this.writeU8(206),this.writeU32(e)):(this.writeU8(207),this.writeU64(e)):e>=-32?this.writeU8(224|e+32):e>=-128?(this.writeU8(208),this.writeI8(e)):e>=-32768?(this.writeU8(209),this.writeI16(e)):e>=-2147483648?(this.writeU8(210),this.writeI32(e)):(this.writeU8(211),this.writeI64(e)):this.forceFloat32?(this.writeU8(202),this.writeF32(e)):(this.writeU8(203),this.writeF64(e))},e.prototype.writeStringHeader=function(e){if(e<32)this.writeU8(160+e);else if(e<256)this.writeU8(217),this.writeU8(e);else if(e<65536)this.writeU8(218),this.writeU16(e);else{if(!(e<4294967296))throw new Error("Too long string: ".concat(e," bytes in UTF-8"));this.writeU8(219),this.writeU32(e)}},e.prototype.encodeString=function(e){if(e.length>Kn){var t=qn(e);this.ensureBufferSizeToWrite(5+t),this.writeStringHeader(t),Vn(e,this.bytes,this.pos),this.pos+=t}else t=qn(e),this.ensureBufferSizeToWrite(5+t),this.writeStringHeader(t),function(e,t,n){for(var o=e.length,r=n,i=0;i>6&31|192;else{if(s>=55296&&s<=56319&&i>12&15|224,t[r++]=s>>6&63|128):(t[r++]=s>>18&7|240,t[r++]=s>>12&63|128,t[r++]=s>>6&63|128)}t[r++]=63&s|128}else t[r++]=s}}(e,this.bytes,this.pos),this.pos+=t},e.prototype.encodeObject=function(e,t){var n=this.extensionCodec.tryToEncode(e,this.context);if(null!=n)this.encodeExtension(n);else if(Array.isArray(e))this.encodeArray(e,t);else if(ArrayBuffer.isView(e))this.encodeBinary(e);else{if("object"!=typeof e)throw new Error("Unrecognized object: ".concat(Object.prototype.toString.apply(e)));this.encodeMap(e,t)}},e.prototype.encodeBinary=function(e){var t=e.byteLength;if(t<256)this.writeU8(196),this.writeU8(t);else if(t<65536)this.writeU8(197),this.writeU16(t);else{if(!(t<4294967296))throw new Error("Too large binary: ".concat(t));this.writeU8(198),this.writeU32(t)}var n=ro(e);this.writeU8a(n)},e.prototype.encodeArray=function(e,t){var n=e.length;if(n<16)this.writeU8(144+n);else if(n<65536)this.writeU8(220),this.writeU16(n);else{if(!(n<4294967296))throw new Error("Too large array: ".concat(n));this.writeU8(221),this.writeU32(n)}for(var o=0,r=e;o0&&e<=this.maxKeyLength},e.prototype.find=function(e,t,n){e:for(var o=0,r=this.caches[n-1];o=this.maxLengthPerKey?n[Math.random()*n.length|0]=o:n.push(o)},e.prototype.decode=function(e,t,n){var o=this.find(e,t,n);if(null!=o)return this.hit++,o;this.miss++;var r=Xn(e,t,n),i=Uint8Array.prototype.slice.call(e,t,t+n);return this.store(i,r),r},e}(),co=function(e,t){var n,o,r,i,s={label:0,sent:function(){if(1&r[0])throw r[1];return r[1]},trys:[],ops:[]};return i={next:a(0),throw:a(1),return:a(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function a(i){return function(a){return function(i){if(n)throw new TypeError("Generator is already executing.");for(;s;)try{if(n=1,o&&(r=2&i[0]?o.return:i[0]?o.throw||((r=o.return)&&r.call(o),0):o.next)&&!(r=r.call(o,i[1])).done)return r;switch(o=0,r&&(i=[2&i[0],r.value]),i[0]){case 0:case 1:r=i;break;case 4:return s.label++,{value:i[1],done:!1};case 5:s.label++,o=i[1],i=[0];continue;case 7:i=s.ops.pop(),s.trys.pop();continue;default:if(!((r=(r=s.trys).length>0&&r[r.length-1])||6!==i[0]&&2!==i[0])){s=0;continue}if(3===i[0]&&(!r||i[1]>r[0]&&i[1]=e},e.prototype.createExtraByteError=function(e){var t=this.view,n=this.pos;return new RangeError("Extra ".concat(t.byteLength-n," of ").concat(t.byteLength," byte(s) found at buffer[").concat(e,"]"))},e.prototype.decode=function(e){this.reinitializeState(),this.setBuffer(e);var t=this.doDecodeSync();if(this.hasRemaining(1))throw this.createExtraByteError(this.pos);return t},e.prototype.decodeMulti=function(e){return co(this,(function(t){switch(t.label){case 0:this.reinitializeState(),this.setBuffer(e),t.label=1;case 1:return this.hasRemaining(1)?[4,this.doDecodeSync()]:[3,3];case 2:return t.sent(),[3,1];case 3:return[2]}}))},e.prototype.decodeAsync=function(e){var t,n,o,r,i,s,a;return i=this,void 0,a=function(){var i,s,a,c,l,h,d,u;return co(this,(function(p){switch(p.label){case 0:i=!1,p.label=1;case 1:p.trys.push([1,6,7,12]),t=lo(e),p.label=2;case 2:return[4,t.next()];case 3:if((n=p.sent()).done)return[3,5];if(a=n.value,i)throw this.createExtraByteError(this.totalPos);this.appendBuffer(a);try{s=this.doDecodeSync(),i=!0}catch(e){if(!(e instanceof fo))throw e}this.totalPos+=this.pos,p.label=4;case 4:return[3,2];case 5:return[3,12];case 6:return c=p.sent(),o={error:c},[3,12];case 7:return p.trys.push([7,,10,11]),n&&!n.done&&(r=t.return)?[4,r.call(t)]:[3,9];case 8:p.sent(),p.label=9;case 9:return[3,11];case 10:if(o)throw o.error;return[7];case 11:return[7];case 12:if(i){if(this.hasRemaining(1))throw this.createExtraByteError(this.totalPos);return[2,s]}throw h=(l=this).headByte,d=l.pos,u=l.totalPos,new RangeError("Insufficient data in parsing ".concat(so(h)," at ").concat(u," (").concat(d," in the current buffer)"))}}))},new((s=void 0)||(s=Promise))((function(e,t){function n(e){try{r(a.next(e))}catch(e){t(e)}}function o(e){try{r(a.throw(e))}catch(e){t(e)}}function r(t){var r;t.done?e(t.value):(r=t.value,r instanceof s?r:new s((function(e){e(r)}))).then(n,o)}r((a=a.apply(i,[])).next())}))},e.prototype.decodeArrayStream=function(e){return this.decodeMultiAsync(e,!0)},e.prototype.decodeStream=function(e){return this.decodeMultiAsync(e,!1)},e.prototype.decodeMultiAsync=function(e,t){return function(n,o,r){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var i,s=function(){var n,o,r,i,s,a,c,l,h;return co(this,(function(d){switch(d.label){case 0:n=t,o=-1,d.label=1;case 1:d.trys.push([1,13,14,19]),r=lo(e),d.label=2;case 2:return[4,ho(r.next())];case 3:if((i=d.sent()).done)return[3,12];if(s=i.value,t&&0===o)throw this.createExtraByteError(this.totalPos);this.appendBuffer(s),n&&(o=this.readArraySize(),n=!1,this.complete()),d.label=4;case 4:d.trys.push([4,9,,10]),d.label=5;case 5:return[4,ho(this.doDecodeSync())];case 6:return[4,d.sent()];case 7:return d.sent(),0==--o?[3,8]:[3,5];case 8:return[3,10];case 9:if(!((a=d.sent())instanceof fo))throw a;return[3,10];case 10:this.totalPos+=this.pos,d.label=11;case 11:return[3,2];case 12:return[3,19];case 13:return c=d.sent(),l={error:c},[3,19];case 14:return d.trys.push([14,,17,18]),i&&!i.done&&(h=r.return)?[4,ho(h.call(r))]:[3,16];case 15:d.sent(),d.label=16;case 16:return[3,18];case 17:if(l)throw l.error;return[7];case 18:return[7];case 19:return[2]}}))}.apply(n,o||[]),a=[];return i={},c("next"),c("throw"),c("return"),i[Symbol.asyncIterator]=function(){return this},i;function c(e){s[e]&&(i[e]=function(t){return new Promise((function(n,o){a.push([e,t,n,o])>1||l(e,t)}))})}function l(e,t){try{(n=s[e](t)).value instanceof ho?Promise.resolve(n.value.v).then(h,d):u(a[0][2],n)}catch(e){u(a[0][3],e)}var n}function h(e){l("next",e)}function d(e){l("throw",e)}function u(e,t){e(t),a.shift(),a.length&&l(a[0][0],a[0][1])}}(this,arguments)},e.prototype.doDecodeSync=function(){e:for(;;){var e=this.readHeadByte(),t=void 0;if(e>=224)t=e-256;else if(e<192)if(e<128)t=e;else if(e<144){if(0!=(o=e-128)){this.pushMapState(o),this.complete();continue e}t={}}else if(e<160){if(0!=(o=e-144)){this.pushArrayState(o),this.complete();continue e}t=[]}else{var n=e-160;t=this.decodeUtf8String(n,0)}else if(192===e)t=null;else if(194===e)t=!1;else if(195===e)t=!0;else if(202===e)t=this.readF32();else if(203===e)t=this.readF64();else if(204===e)t=this.readU8();else if(205===e)t=this.readU16();else if(206===e)t=this.readU32();else if(207===e)t=this.readU64();else if(208===e)t=this.readI8();else if(209===e)t=this.readI16();else if(210===e)t=this.readI32();else if(211===e)t=this.readI64();else if(217===e)n=this.lookU8(),t=this.decodeUtf8String(n,1);else if(218===e)n=this.lookU16(),t=this.decodeUtf8String(n,2);else if(219===e)n=this.lookU32(),t=this.decodeUtf8String(n,4);else if(220===e){if(0!==(o=this.readU16())){this.pushArrayState(o),this.complete();continue e}t=[]}else if(221===e){if(0!==(o=this.readU32())){this.pushArrayState(o),this.complete();continue e}t=[]}else if(222===e){if(0!==(o=this.readU16())){this.pushMapState(o),this.complete();continue e}t={}}else if(223===e){if(0!==(o=this.readU32())){this.pushMapState(o),this.complete();continue e}t={}}else if(196===e){var o=this.lookU8();t=this.decodeBinary(o,1)}else if(197===e)o=this.lookU16(),t=this.decodeBinary(o,2);else if(198===e)o=this.lookU32(),t=this.decodeBinary(o,4);else if(212===e)t=this.decodeExtension(1,0);else if(213===e)t=this.decodeExtension(2,0);else if(214===e)t=this.decodeExtension(4,0);else if(215===e)t=this.decodeExtension(8,0);else if(216===e)t=this.decodeExtension(16,0);else if(199===e)o=this.lookU8(),t=this.decodeExtension(o,1);else if(200===e)o=this.lookU16(),t=this.decodeExtension(o,2);else{if(201!==e)throw new to("Unrecognized type byte: ".concat(so(e)));o=this.lookU32(),t=this.decodeExtension(o,4)}this.complete();for(var r=this.stack;r.length>0;){var i=r[r.length-1];if(0===i.type){if(i.array[i.position]=t,i.position++,i.position!==i.size)continue e;r.pop(),t=i.array}else{if(1===i.type){if("string"!=(s=typeof t)&&"number"!==s)throw new to("The type of key must be string or number but "+typeof t);if("__proto__"===t)throw new to("The key __proto__ is not allowed");i.key=t,i.type=2;continue e}if(i.map[i.key]=t,i.readCount++,i.readCount!==i.size){i.key=null,i.type=1;continue e}r.pop(),t=i.map}}return t}var s},e.prototype.readHeadByte=function(){return-1===this.headByte&&(this.headByte=this.readU8()),this.headByte},e.prototype.complete=function(){this.headByte=-1},e.prototype.readArraySize=function(){var e=this.readHeadByte();switch(e){case 220:return this.readU16();case 221:return this.readU32();default:if(e<160)return e-144;throw new to("Unrecognized array type byte: ".concat(so(e)))}},e.prototype.pushMapState=function(e){if(e>this.maxMapLength)throw new to("Max length exceeded: map length (".concat(e,") > maxMapLengthLength (").concat(this.maxMapLength,")"));this.stack.push({type:1,size:e,key:null,readCount:0,map:{}})},e.prototype.pushArrayState=function(e){if(e>this.maxArrayLength)throw new to("Max length exceeded: array length (".concat(e,") > maxArrayLength (").concat(this.maxArrayLength,")"));this.stack.push({type:0,size:e,array:new Array(e),position:0})},e.prototype.decodeUtf8String=function(e,t){var n;if(e>this.maxStrLength)throw new to("Max length exceeded: UTF-8 byte length (".concat(e,") > maxStrLength (").concat(this.maxStrLength,")"));if(this.bytes.byteLengthQn?function(e,t,n){var o=e.subarray(t,t+n);return Yn.decode(o)}(this.bytes,r,e):Xn(this.bytes,r,e),this.pos+=t+e,o},e.prototype.stateIsMapKey=function(){return this.stack.length>0&&1===this.stack[this.stack.length-1].type},e.prototype.decodeBinary=function(e,t){if(e>this.maxBinLength)throw new to("Max length exceeded: bin length (".concat(e,") > maxBinLength (").concat(this.maxBinLength,")"));if(!this.hasRemaining(e+t))throw go;var n=this.pos+t,o=this.bytes.subarray(n,n+e);return this.pos+=t+e,o},e.prototype.decodeExtension=function(e,t){if(e>this.maxExtLength)throw new to("Max length exceeded: ext length (".concat(e,") > maxExtLength (").concat(this.maxExtLength,")"));var n=this.view.getInt8(this.pos+t),o=this.decodeBinary(e,t+1);return this.extensionCodec.decode(o,n,this.context)},e.prototype.lookU8=function(){return this.view.getUint8(this.pos)},e.prototype.lookU16=function(){return this.view.getUint16(this.pos)},e.prototype.lookU32=function(){return this.view.getUint32(this.pos)},e.prototype.readU8=function(){var e=this.view.getUint8(this.pos);return this.pos++,e},e.prototype.readI8=function(){var e=this.view.getInt8(this.pos);return this.pos++,e},e.prototype.readU16=function(){var e=this.view.getUint16(this.pos);return this.pos+=2,e},e.prototype.readI16=function(){var e=this.view.getInt16(this.pos);return this.pos+=2,e},e.prototype.readU32=function(){var e=this.view.getUint32(this.pos);return this.pos+=4,e},e.prototype.readI32=function(){var e=this.view.getInt32(this.pos);return this.pos+=4,e},e.prototype.readU64=function(){var e,t,n=(e=this.view,t=this.pos,4294967296*e.getUint32(t)+e.getUint32(t+4));return this.pos+=8,n},e.prototype.readI64=function(){var e=jn(this.view,this.pos);return this.pos+=8,e},e.prototype.readF32=function(){var e=this.view.getFloat32(this.pos);return this.pos+=4,e},e.prototype.readF64=function(){var e=this.view.getFloat64(this.pos);return this.pos+=8,e},e}();class yo{static write(e){let t=e.byteLength||e.length;const n=[];do{let e=127&t;t>>=7,t>0&&(e|=128),n.push(e)}while(t>0);t=e.byteLength||e.length;const o=new Uint8Array(n.length+t);return o.set(n,0),o.set(e,n.length),o.buffer}static parse(e){const t=[],n=new Uint8Array(e),o=[0,7,14,21,28];for(let r=0;r7)throw new Error("Messages bigger than 2GB are not supported.");if(!(n.byteLength>=r+s+a))throw new Error("Incomplete message.");t.push(n.slice?n.slice(r+s,r+s+a):n.subarray(r+s,r+s+a)),r=r+s+a}return t}}const wo=new Uint8Array([145,ln.Ping]);class bo{constructor(e){this.name="messagepack",this.version=2,this.transferFormat=kn.Binary,this._errorResult=1,this._voidResult=2,this._nonVoidResult=3,e=e||{},this._encoder=new io(e.extensionCodec,e.context,e.maxDepth,e.initialBufferSize,e.sortKeys,e.forceFloat32,e.ignoreUndefined,e.forceIntegerToFloat),this._decoder=new vo(e.extensionCodec,e.context,e.maxStrLength,e.maxBinLength,e.maxArrayLength,e.maxMapLength,e.maxExtLength)}parseMessages(e,t){if(!(n=e)||"undefined"==typeof ArrayBuffer||!(n instanceof ArrayBuffer||n.constructor&&"ArrayBuffer"===n.constructor.name))throw new Error("Invalid input for MessagePack hub protocol. Expected an ArrayBuffer.");var n;null===t&&(t=Ft.instance);const o=yo.parse(e),r=[];for(const e of o){const n=this._parseMessage(e,t);n&&r.push(n)}return r}writeMessage(e){switch(e.type){case ln.Invocation:return this._writeInvocation(e);case ln.StreamInvocation:return this._writeStreamInvocation(e);case ln.StreamItem:return this._writeStreamItem(e);case ln.Completion:return this._writeCompletion(e);case ln.Ping:return yo.write(wo);case ln.CancelInvocation:return this._writeCancelInvocation(e);case ln.Close:return this._writeClose();case ln.Ack:return this._writeAck(e);case ln.Sequence:return this._writeSequence(e);default:throw new Error("Invalid message type.")}}_parseMessage(e,t){if(0===e.length)throw new Error("Invalid payload.");const n=this._decoder.decode(e);if(0===n.length||!(n instanceof Array))throw new Error("Invalid payload.");const o=n[0];switch(o){case ln.Invocation:return this._createInvocationMessage(this._readHeaders(n),n);case ln.StreamItem:return this._createStreamItemMessage(this._readHeaders(n),n);case ln.Completion:return this._createCompletionMessage(this._readHeaders(n),n);case ln.Ping:return this._createPingMessage(n);case ln.Close:return this._createCloseMessage(n);case ln.Ack:return this._createAckMessage(n);case ln.Sequence:return this._createSequenceMessage(n);default:return t.log(Ot.Information,"Unknown message type '"+o+"' ignored."),null}}_createCloseMessage(e){if(e.length<2)throw new Error("Invalid payload for Close message.");return{allowReconnect:e.length>=3?e[2]:void 0,error:e[1],type:ln.Close}}_createPingMessage(e){if(e.length<1)throw new Error("Invalid payload for Ping message.");return{type:ln.Ping}}_createInvocationMessage(e,t){if(t.length<5)throw new Error("Invalid payload for Invocation message.");const n=t[2];return n?{arguments:t[4],headers:e,invocationId:n,streamIds:[],target:t[3],type:ln.Invocation}:{arguments:t[4],headers:e,streamIds:[],target:t[3],type:ln.Invocation}}_createStreamItemMessage(e,t){if(t.length<4)throw new Error("Invalid payload for StreamItem message.");return{headers:e,invocationId:t[2],item:t[3],type:ln.StreamItem}}_createCompletionMessage(e,t){if(t.length<4)throw new Error("Invalid payload for Completion message.");const n=t[3];if(n!==this._voidResult&&t.length<5)throw new Error("Invalid payload for Completion message.");let o,r;switch(n){case this._errorResult:o=t[4];break;case this._nonVoidResult:r=t[4]}return{error:o,headers:e,invocationId:t[2],result:r,type:ln.Completion}}_createAckMessage(e){if(e.length<1)throw new Error("Invalid payload for Ack message.");return{sequenceId:e[1],type:ln.Ack}}_createSequenceMessage(e){if(e.length<1)throw new Error("Invalid payload for Sequence message.");return{sequenceId:e[1],type:ln.Sequence}}_writeInvocation(e){let t;return t=e.streamIds?this._encoder.encode([ln.Invocation,e.headers||{},e.invocationId||null,e.target,e.arguments,e.streamIds]):this._encoder.encode([ln.Invocation,e.headers||{},e.invocationId||null,e.target,e.arguments]),yo.write(t.slice())}_writeStreamInvocation(e){let t;return t=e.streamIds?this._encoder.encode([ln.StreamInvocation,e.headers||{},e.invocationId,e.target,e.arguments,e.streamIds]):this._encoder.encode([ln.StreamInvocation,e.headers||{},e.invocationId,e.target,e.arguments]),yo.write(t.slice())}_writeStreamItem(e){const t=this._encoder.encode([ln.StreamItem,e.headers||{},e.invocationId,e.item]);return yo.write(t.slice())}_writeCompletion(e){const t=e.error?this._errorResult:void 0!==e.result?this._nonVoidResult:this._voidResult;let n;switch(t){case this._errorResult:n=this._encoder.encode([ln.Completion,e.headers||{},e.invocationId,t,e.error]);break;case this._voidResult:n=this._encoder.encode([ln.Completion,e.headers||{},e.invocationId,t]);break;case this._nonVoidResult:n=this._encoder.encode([ln.Completion,e.headers||{},e.invocationId,t,e.result])}return yo.write(n.slice())}_writeCancelInvocation(e){const t=this._encoder.encode([ln.CancelInvocation,e.headers||{},e.invocationId]);return yo.write(t.slice())}_writeClose(){const e=this._encoder.encode([ln.Close,null]);return yo.write(e.slice())}_writeAck(e){const t=this._encoder.encode([ln.Ack,e.sequenceId]);return yo.write(t.slice())}_writeSequence(e){const t=this._encoder.encode([ln.Sequence,e.sequenceId]);return yo.write(t.slice())}_readHeaders(e){const t=e[1];if("object"!=typeof t)throw new Error("Invalid headers.");return t}}const _o="function"==typeof TextDecoder?new TextDecoder("utf-8"):null,So=_o?_o.decode.bind(_o):function(e){let t=0;const n=e.length,o=[],r=[];for(;t65535&&(r-=65536,o.push(r>>>10&1023|55296),r=56320|1023&r),o.push(r)}o.length>1024&&(r.push(String.fromCharCode.apply(null,o)),o.length=0)}return r.push(String.fromCharCode.apply(null,o)),r.join("")},Co=Math.pow(2,32),Eo=Math.pow(2,21)-1;function Io(e,t){return e[t]|e[t+1]<<8|e[t+2]<<16|e[t+3]<<24}function ko(e,t){return e[t]+(e[t+1]<<8)+(e[t+2]<<16)+(e[t+3]<<24>>>0)}function To(e,t){const n=ko(e,t+4);if(n>Eo)throw new Error(`Cannot read uint64 with high order part ${n}, because the result would exceed Number.MAX_SAFE_INTEGER.`);return n*Co+ko(e,t)}class Ro{constructor(e){this.batchData=e;const t=new No(e);this.arrayRangeReader=new Po(e),this.arrayBuilderSegmentReader=new Mo(e),this.diffReader=new Do(e),this.editReader=new Ao(e,t),this.frameReader=new xo(e,t)}updatedComponents(){return Io(this.batchData,this.batchData.length-20)}referenceFrames(){return Io(this.batchData,this.batchData.length-16)}disposedComponentIds(){return Io(this.batchData,this.batchData.length-12)}disposedEventHandlerIds(){return Io(this.batchData,this.batchData.length-8)}updatedComponentsEntry(e,t){const n=e+4*t;return Io(this.batchData,n)}referenceFramesEntry(e,t){return e+20*t}disposedComponentIdsEntry(e,t){const n=e+4*t;return Io(this.batchData,n)}disposedEventHandlerIdsEntry(e,t){const n=e+8*t;return To(this.batchData,n)}}class Do{constructor(e){this.batchDataUint8=e}componentId(e){return Io(this.batchDataUint8,e)}edits(e){return e+4}editsEntry(e,t){return e+16*t}}class Ao{constructor(e,t){this.batchDataUint8=e,this.stringReader=t}editType(e){return Io(this.batchDataUint8,e)}siblingIndex(e){return Io(this.batchDataUint8,e+4)}newTreeIndex(e){return Io(this.batchDataUint8,e+8)}moveToSiblingIndex(e){return Io(this.batchDataUint8,e+8)}removedAttributeName(e){const t=Io(this.batchDataUint8,e+12);return this.stringReader.readString(t)}}class xo{constructor(e,t){this.batchDataUint8=e,this.stringReader=t}frameType(e){return Io(this.batchDataUint8,e)}subtreeLength(e){return Io(this.batchDataUint8,e+4)}elementReferenceCaptureId(e){const t=Io(this.batchDataUint8,e+4);return this.stringReader.readString(t)}componentId(e){return Io(this.batchDataUint8,e+8)}elementName(e){const t=Io(this.batchDataUint8,e+8);return this.stringReader.readString(t)}textContent(e){const t=Io(this.batchDataUint8,e+4);return this.stringReader.readString(t)}markupContent(e){const t=Io(this.batchDataUint8,e+4);return this.stringReader.readString(t)}attributeName(e){const t=Io(this.batchDataUint8,e+4);return this.stringReader.readString(t)}attributeValue(e){const t=Io(this.batchDataUint8,e+8);return this.stringReader.readString(t)}attributeEventHandlerId(e){return To(this.batchDataUint8,e+12)}}class No{constructor(e){this.batchDataUint8=e,this.stringTableStartIndex=Io(e,e.length-4)}readString(e){if(-1===e)return null;{const n=Io(this.batchDataUint8,this.stringTableStartIndex+4*e),o=function(e,t){let n=0,o=0;for(let r=0;r<4;r++){const i=e[t+r];if(n|=(127&i)<this.nextBatchId)return this.fatalError?(this.logger.log(yt.Debug,`Received a new batch ${e} but errored out on a previous batch ${this.nextBatchId-1}`),void await n.send("OnRenderCompleted",this.nextBatchId-1,this.fatalError.toString())):void this.logger.log(yt.Debug,`Waiting for batch ${this.nextBatchId}. Batch ${e} not processed.`);try{this.nextBatchId++,this.logger.log(yt.Debug,`Applying batch ${e}.`),xe(Bn.Server,new Ro(t)),await this.completeBatch(n,e)}catch(t){throw this.fatalError=t.toString(),this.logger.log(yt.Error,`There was an error applying batch ${e}.`),n.send("OnRenderCompleted",e,t.toString()),t}}getLastBatchid(){return this.nextBatchId-1}async completeBatch(e,t){try{await e.send("OnRenderCompleted",t,null)}catch{this.logger.log(yt.Warning,`Failed to deliver completion notification for render '${t}'.`)}}}let Lo=!1;function Bo(){const e=document.querySelector("#blazor-error-ui");e&&(e.style.display="block"),Lo||(Lo=!0,document.querySelectorAll("#blazor-error-ui .reload").forEach((e=>{e.onclick=function(e){location.reload(),e.preventDefault()}})),document.querySelectorAll("#blazor-error-ui .dismiss").forEach((e=>{e.onclick=function(e){const t=document.querySelector("#blazor-error-ui");t&&(t.style.display="none"),e.preventDefault()}})))}class Oo{constructor(t,n,o,r){this._firstUpdate=!0,this._renderingFailed=!1,this._disposed=!1,this._circuitId=void 0,this._applicationState=n,this._componentManager=t,this._options=o,this._logger=r,this._renderQueue=new Uo(this._logger),this._dispatcher=e.attachDispatcher(this)}start(){if(this.isDisposedOrDisposing())throw new Error("Cannot start a disposed circuit.");return this._startPromise||(this._startPromise=this.startCore()),this._startPromise}updateRootComponents(e){var t,n;return this._firstUpdate?(this._firstUpdate=!1,null===(t=this._connection)||void 0===t?void 0:t.send("UpdateRootComponents",e,this._applicationState)):null===(n=this._connection)||void 0===n?void 0:n.send("UpdateRootComponents",e,"")}async startCore(){if(this._connection=await this.startConnection(),this._connection.state!==hn.Connected)return!1;const e=JSON.stringify(this._componentManager.initialComponents.map((e=>Ut(e))));if(this._circuitId=await this._connection.invoke("StartCircuit",Je.getBaseURI(),Je.getLocationHref(),e,this._applicationState||""),!this._circuitId)return!1;for(const e of this._options.circuitHandlers)e.onCircuitOpened&&e.onCircuitOpened();return!0}async startConnection(){var e,t;const n=new bo;n.name="blazorpack";const o=(new Ln).withUrl("_blazor").withHubProtocol(n);this._options.configureSignalR(o);const r=o.build();r.on("JS.AttachComponent",((e,t)=>De(Bn.Server,this.resolveElement(t),e,!1))),r.on("JS.BeginInvokeJS",this._dispatcher.beginInvokeJSFromDotNet.bind(this._dispatcher)),r.on("JS.EndInvokeDotNet",this._dispatcher.endInvokeDotNetFromJS.bind(this._dispatcher)),r.on("JS.ReceiveByteArray",this._dispatcher.receiveByteArray.bind(this._dispatcher)),r.on("JS.BeginTransmitStream",(e=>{const t=new ReadableStream({start:t=>{r.stream("SendDotNetStreamToJS",e).subscribe({next:e=>t.enqueue(e),complete:()=>t.close(),error:e=>t.error(e)})}});this._dispatcher.supplyDotNetStream(e,t)})),r.on("JS.RenderBatch",(async(e,t)=>{var n,o;this._logger.log(Ot.Debug,`Received render batch with id ${e} and ${t.byteLength} bytes.`),await this._renderQueue.processBatch(e,t,this._connection),null===(o=(n=this._componentManager).onAfterRenderBatch)||void 0===o||o.call(n,Bn.Server)})),r.on("JS.EndUpdateRootComponents",(e=>{var t,n;null===(n=(t=this._componentManager).onAfterUpdateRootComponents)||void 0===n||n.call(t,e)})),r.on("JS.EndLocationChanging",vt._internal.navigationManager.endLocationChanging),r.onclose((e=>{this._interopMethodsForReconnection=function(e){const t=C.get(e);if(!t)throw new Error(`Interop methods are not registered for renderer ${e}`);return C.delete(e),t}(Bn.Server),this._disposed||this._renderingFailed||this._options.reconnectionHandler.onConnectionDown(this._options.reconnectionOptions,e)})),r.on("JS.Error",(e=>{this._renderingFailed=!0,this.unhandledError(e),Bo()}));try{await r.start()}catch(e){if(this.unhandledError(e),"FailedToNegotiateWithServerError"===e.errorType)throw e;Bo(),e.innerErrors&&(e.innerErrors.some((e=>"UnsupportedTransportError"===e.errorType&&e.transport===In.WebSockets))?this._logger.log(Ot.Error,"Unable to connect, please ensure you are using an updated browser that supports WebSockets."):e.innerErrors.some((e=>"FailedToStartTransportError"===e.errorType&&e.transport===In.WebSockets))?this._logger.log(Ot.Error,"Unable to connect, please ensure WebSockets are available. A VPN or proxy may be blocking the connection."):e.innerErrors.some((e=>"DisabledTransportError"===e.errorType&&e.transport===In.LongPolling))&&this._logger.log(Ot.Error,"Unable to initiate a SignalR connection to the server. This might be because the server is not configured to support WebSockets. For additional details, visit https://aka.ms/blazor-server-websockets-error."))}return(null===(t=null===(e=r.connection)||void 0===e?void 0:e.features)||void 0===t?void 0:t.inherentKeepAlive)&&this._logger.log(Ot.Warning,"Failed to connect via WebSockets, using the Long Polling fallback transport. This may be due to a VPN or proxy blocking the connection. To troubleshoot this, visit https://aka.ms/blazor-server-using-fallback-long-polling."),r}async disconnect(){var e;await(null===(e=this._connection)||void 0===e?void 0:e.stop())}async reconnect(){if(!this._circuitId)throw new Error("Circuit host not initialized.");return this._connection.state===hn.Connected||(this._connection=await this.startConnection(),this._interopMethodsForReconnection&&(k(Bn.Server,this._interopMethodsForReconnection),this._interopMethodsForReconnection=void 0),!!await this._connection.invoke("ConnectCircuit",this._circuitId)&&(this._options.reconnectionHandler.onConnectionUp(),!0))}beginInvokeDotNetFromJS(e,t,n,o,r){this.throwIfDispatchingWhenDisposed(),this._connection.send("BeginInvokeDotNetFromJS",e?e.toString():null,t,n,o||0,r)}endInvokeJSFromDotNet(e,t,n){this.throwIfDispatchingWhenDisposed(),this._connection.send("EndInvokeJSFromDotNet",e,t,n)}sendByteArray(e,t){this.throwIfDispatchingWhenDisposed(),this._connection.send("ReceiveByteArray",e,t)}throwIfDispatchingWhenDisposed(){if(this._disposed)throw new Error("The circuit associated with this dispatcher is no longer available.")}sendLocationChanged(e,t,n){return this._connection.send("OnLocationChanged",e,t,n)}sendLocationChanging(e,t,n,o){return this._connection.send("OnLocationChanging",e,t,n,o)}sendJsDataStream(e,t,n){return function(e,t,n,o){setTimeout((async()=>{let r=5,i=(new Date).valueOf();try{const s=t instanceof Blob?t.size:t.byteLength;let a=0,c=0;for(;a1)await e.send("ReceiveJSDataChunk",n,c,h,null);else{if(!await e.invoke("ReceiveJSDataChunk",n,c,h,null))break;const t=(new Date).valueOf(),o=t-i;i=t,r=Math.max(1,Math.round(500/Math.max(1,o)))}a+=l,c++}}catch(t){await e.send("ReceiveJSDataChunk",n,-1,null,t.toString())}}),0)}(this._connection,e,t,n)}resolveElement(e){const t=w(e);if(t)return W(t,!0);const n=Number.parseInt(e);if(!Number.isNaN(n))return H(this._componentManager.resolveRootComponent(n));throw new Error(`Invalid sequence number or identifier '${e}'.`)}getRootComponentManager(){return this._componentManager}unhandledError(e){this._logger.log(Ot.Error,e),this.disconnect()}getDisconnectFormData(){const e=new FormData,t=this._circuitId;return e.append("circuitId",t),e}didRenderingFail(){return this._renderingFailed}isDisposedOrDisposing(){return void 0!==this._disposePromise}sendDisconnectBeacon(){if(this._disposed)return;const e=this.getDisconnectFormData();this._disposed=navigator.sendBeacon("_blazor/disconnect",e)}dispose(){return this._disposePromise||(this._disposePromise=this.disposeCore()),this._disposePromise}async disposeCore(){var e;if(!this._startPromise)return void(this._disposed=!0);await this._startPromise,this._disposed=!0,null===(e=this._connection)||void 0===e||e.stop();const t=this.getDisconnectFormData();fetch("http://github.com/_blazor/disconnect",{method:"POST",body:t});for(const e of this._options.circuitHandlers)e.onCircuitClosed&&e.onCircuitClosed()}}function Fo(e){const t={...$o,...e};return e&&e.reconnectionOptions&&(t.reconnectionOptions={...$o.reconnectionOptions,...e.reconnectionOptions}),t}const $o={configureSignalR:e=>{},logLevel:yt.Warning,initializers:void 0,circuitHandlers:[],reconnectionOptions:{maxRetries:8,retryIntervalMilliseconds:2e4,dialogId:"components-reconnect-modal"}};class Ho{constructor(e,t,n,o){this.maxRetries=t,this.document=n,this.logger=o,this.modal=this.document.createElement("div"),this.modal.id=e,this.maxRetries=t,this.modal.style.cssText=["position: fixed","top: 0","right: 0","bottom: 0","left: 0","z-index: 1050","display: none","overflow: hidden","background-color: #fff","opacity: 0.8","text-align: center","font-weight: bold","transition: visibility 0s linear 500ms"].join(";"),this.message=this.document.createElement("h5"),this.message.style.cssText="margin-top: 20px",this.button=this.document.createElement("button"),this.button.style.cssText="margin:5px auto 5px",this.button.textContent="Retry";const r=this.document.createElement("a");r.addEventListener("click",(()=>location.reload())),r.textContent="reload",this.reloadParagraph=this.document.createElement("p"),this.reloadParagraph.textContent="Alternatively, ",this.reloadParagraph.appendChild(r),this.modal.appendChild(this.message),this.modal.appendChild(this.button),this.modal.appendChild(this.reloadParagraph),this.loader=this.getLoader(),this.message.after(this.loader),this.button.addEventListener("click",(async()=>{this.show();try{await vt.reconnect()||this.rejected()}catch(e){this.logger.log(yt.Error,e),this.failed()}}))}show(){this.document.contains(this.modal)||this.document.body.appendChild(this.modal),this.modal.style.display="block",this.loader.style.display="inline-block",this.button.style.display="none",this.reloadParagraph.style.display="none",this.message.textContent="Attempting to reconnect to the server...",this.modal.style.visibility="hidden",setTimeout((()=>{this.modal.style.visibility="visible"}),0)}update(e){this.message.textContent=`Attempting to reconnect to the server: ${e} of ${this.maxRetries}`}hide(){this.modal.style.display="none"}failed(){this.button.style.display="block",this.reloadParagraph.style.display="none",this.loader.style.display="none";const e=this.document.createTextNode("Reconnection failed. Try "),t=this.document.createElement("a");t.textContent="reloading",t.setAttribute("href",""),t.addEventListener("click",(()=>location.reload()));const n=this.document.createTextNode(" the page if you're unable to reconnect.");this.message.replaceChildren(e,t,n)}rejected(){this.button.style.display="none",this.reloadParagraph.style.display="none",this.loader.style.display="none";const e=this.document.createTextNode("Could not reconnect to the server. "),t=this.document.createElement("a");t.textContent="Reload",t.setAttribute("href",""),t.addEventListener("click",(()=>location.reload()));const n=this.document.createTextNode(" the page to restore functionality.");this.message.replaceChildren(e,t,n)}getLoader(){const e=this.document.createElement("div");return e.style.cssText=["border: 0.3em solid #f3f3f3","border-top: 0.3em solid #3498db","border-radius: 50%","width: 2em","height: 2em","display: inline-block"].join(";"),e.animate([{transform:"rotate(0deg)"},{transform:"rotate(360deg)"}],{duration:2e3,iterations:1/0}),e}}class Wo{constructor(e,t,n){this.dialog=e,this.maxRetries=t,this.document=n,this.document=n;const o=this.document.getElementById(Wo.MaxRetriesId);o&&(o.innerText=this.maxRetries.toString())}show(){this.removeClasses(),this.dialog.classList.add(Wo.ShowClassName)}update(e){const t=this.document.getElementById(Wo.CurrentAttemptId);t&&(t.innerText=e.toString())}hide(){this.removeClasses(),this.dialog.classList.add(Wo.HideClassName)}failed(){this.removeClasses(),this.dialog.classList.add(Wo.FailedClassName)}rejected(){this.removeClasses(),this.dialog.classList.add(Wo.RejectedClassName)}removeClasses(){this.dialog.classList.remove(Wo.ShowClassName,Wo.HideClassName,Wo.FailedClassName,Wo.RejectedClassName)}}Wo.ShowClassName="components-reconnect-show",Wo.HideClassName="components-reconnect-hide",Wo.FailedClassName="components-reconnect-failed",Wo.RejectedClassName="components-reconnect-rejected",Wo.MaxRetriesId="components-reconnect-max-retries",Wo.CurrentAttemptId="components-reconnect-current-attempt";class jo{constructor(e,t,n){this._currentReconnectionProcess=null,this._logger=e,this._reconnectionDisplay=t,this._reconnectCallback=n||vt.reconnect}onConnectionDown(e,t){if(!this._reconnectionDisplay){const t=document.getElementById(e.dialogId);this._reconnectionDisplay=t?new Wo(t,e.maxRetries,document):new Ho(e.dialogId,e.maxRetries,document,this._logger)}this._currentReconnectionProcess||(this._currentReconnectionProcess=new zo(e,this._logger,this._reconnectCallback,this._reconnectionDisplay))}onConnectionUp(){this._currentReconnectionProcess&&(this._currentReconnectionProcess.dispose(),this._currentReconnectionProcess=null)}}class zo{constructor(e,t,n,o){this.logger=t,this.reconnectCallback=n,this.isDisposed=!1,this.reconnectDisplay=o,this.reconnectDisplay.show(),this.attemptPeriodicReconnection(e)}dispose(){this.isDisposed=!0,this.reconnectDisplay.hide()}async attemptPeriodicReconnection(e){for(let t=0;tzo.MaximumFirstRetryInterval?zo.MaximumFirstRetryInterval:e.retryIntervalMilliseconds;if(await this.delay(n),this.isDisposed)break;try{return await this.reconnectCallback()?void 0:void this.reconnectDisplay.rejected()}catch(e){this.logger.log(yt.Error,e)}}this.reconnectDisplay.failed()}delay(e){return new Promise((t=>setTimeout(t,e)))}}zo.MaximumFirstRetryInterval=3e3;class qo{constructor(e=!0,t,n,o=0){this.singleRuntime=e,this.logger=t,this.webRendererId=o,this.afterStartedCallbacks=[],n&&this.afterStartedCallbacks.push(...n)}async importInitializersAsync(e,t){await Promise.all(e.map((e=>async function(e,n){const o=function(e){const t=document.baseURI;return t.endsWith("/")?`${t}${e}`:`${t}/${e}`}(n),r=await import(o);if(void 0!==r){if(e.singleRuntime){const{beforeStart:n,afterStarted:o,beforeWebAssemblyStart:s,afterWebAssemblyStarted:a,beforeServerStart:c,afterServerStarted:l}=r;let h=n;e.webRendererId===Bn.Server&&c&&(h=c),e.webRendererId===Bn.WebAssembly&&s&&(h=s);let d=o;return e.webRendererId===Bn.Server&&l&&(d=l),e.webRendererId===Bn.WebAssembly&&a&&(d=a),i(e,h,d,t)}return function(e,t,n){var r;const s=n[0],{beforeStart:a,afterStarted:c,beforeWebStart:l,afterWebStarted:h,beforeWebAssemblyStart:d,afterWebAssemblyStarted:u,beforeServerStart:p,afterServerStarted:f}=t,g=!(l||h||d||u||p||f||!a&&!c),m=g&&s.enableClassicInitializers;if(g&&!s.enableClassicInitializers)null===(r=e.logger)||void 0===r||r.log(yt.Warning,`Initializer '${o}' will be ignored because multiple runtimes are available. use 'before(web|webAssembly|server)Start' and 'after(web|webAssembly|server)Started?' instead.)`);else if(m)return i(e,a,c,n);if(function(e){e.webAssembly?e.webAssembly.initializers||(e.webAssembly.initializers={beforeStart:[],afterStarted:[]}):e.webAssembly={initializers:{beforeStart:[],afterStarted:[]}},e.circuit?e.circuit.initializers||(e.circuit.initializers={beforeStart:[],afterStarted:[]}):e.circuit={initializers:{beforeStart:[],afterStarted:[]}}}(s),d&&s.webAssembly.initializers.beforeStart.push(d),u&&s.webAssembly.initializers.afterStarted.push(u),p&&s.circuit.initializers.beforeStart.push(p),f&&s.circuit.initializers.afterStarted.push(f),h&&e.afterStartedCallbacks.push(h),l)return l(s)}(e,r,t)}function i(e,t,n,o){if(n&&e.afterStartedCallbacks.push(n),t)return t(...o)}}(this,e))))}async invokeAfterStartedCallbacks(e){const t=function(e){var t;return null===(t=I.get(e))||void 0===t?void 0:t[1]}(this.webRendererId);t&&await t,await Promise.all(this.afterStartedCallbacks.map((t=>t(e))))}}let Jo,Ko,Vo,Xo,Go,Yo,Qo,Zo;function er(e){if(Xo)throw new Error("Circuit options have already been configured.");if(Xo)throw new Error("WebAssembly options have already been configured.");Jo=async function(e){const t=await e;Xo=Fo(t)}(e)}function tr(e){if(void 0!==Yo)throw new Error("Blazor Server has already started.");return Yo=new Promise(nr.bind(null,e)),Yo}async function nr(e,t,n){await Jo;const o=await async function(e){if(e.initializers)return await Promise.all(e.initializers.beforeStart.map((t=>t(e)))),new qo(!1,void 0,e.initializers.afterStarted,Bn.Server);const t=await fetch("http://github.com/_blazor/initializers",{method:"GET",credentials:"include",cache:"no-cache"}),n=await t.json(),o=new qo(!0,void 0,void 0,Bn.Server);return await o.importInitializersAsync(n,[e]),o}(Xo);if(Ko=It(document)||"",Go=new bt(Xo.logLevel),Vo=new Oo(e,Ko,Xo,Go),Go.log(yt.Information,"Starting up Blazor server-side application."),vt.reconnect=async()=>!(Vo.didRenderingFail()||!await Vo.reconnect()&&(Go.log(yt.Information,"Reconnection attempt to the circuit was rejected by the server. This may indicate that the associated state is no longer available on the server."),1)),vt.defaultReconnectionHandler=new jo(Go),Xo.reconnectionHandler=Xo.reconnectionHandler||vt.defaultReconnectionHandler,vt._internal.navigationManager.listenForNavigationEvents(Bn.Server,((e,t,n)=>Vo.sendLocationChanged(e,t,n)),((e,t,n,o)=>Vo.sendLocationChanging(e,t,n,o))),vt._internal.forceCloseConnection=()=>Vo.disconnect(),vt._internal.sendJSDataStream=(e,t,n)=>Vo.sendJsDataStream(e,t,n),!await Vo.start())return Go.log(yt.Error,"Failed to start the circuit."),void t();const r=()=>{Vo.sendDisconnectBeacon()};vt.disconnect=r,window.addEventListener("unload",r,{capture:!1,once:!0}),Go.log(yt.Information,"Blazor server-side application started."),o.invokeAfterStartedCallbacks(vt),t()}async function or(){if(!Yo)throw new Error("Cannot start the circuit until Blazor Server has started.");return!(!Vo||Vo.isDisposedOrDisposing())||(Qo?await Qo:(await Yo,(!Vo||!Vo.didRenderingFail())&&(Vo&&Vo.isDisposedOrDisposing()&&(Ko=It(document)||"",Vo=new Oo(Vo.getRootComponentManager(),Ko,Xo,Go)),Qo=Vo.start(),async function(e){await e,Qo===e&&(Qo=void 0)}(Qo),Qo)))}function rr(e){if(Vo&&!Vo.isDisposedOrDisposing())return Vo.updateRootComponents(e);!async function(e){await Yo,await or()&&Vo.updateRootComponents(e)}(e)}function ir(e){return Zo=e,Zo}var sr,ar;const cr=navigator,lr=cr.userAgentData&&cr.userAgentData.brands,hr=lr&&lr.length>0?lr.some((e=>"Google Chrome"===e.brand||"Microsoft Edge"===e.brand||"Chromium"===e.brand)):window.chrome,dr=null!==(ar=null===(sr=cr.userAgentData)||void 0===sr?void 0:sr.platform)&&void 0!==ar?ar:navigator.platform;function ur(e){return 0!==e.debugLevel&&(hr||navigator.userAgent.includes("Firefox"))}let pr,fr,gr,mr,vr,yr,wr;const br=Math.pow(2,32),_r=Math.pow(2,21)-1;let Sr=null;function Cr(e){return fr.getI32(e)}const Er={load:function(e,t){return async function(e,t){const{dotnet:n}=await async function(e){if("undefined"==typeof WebAssembly||!WebAssembly.validate)throw new Error("This browser does not support WebAssembly.");let t="_framework/dotnet.js";if(e.loadBootResource){const n="dotnetjs",o=e.loadBootResource(n,"dotnet.js",t,"","js-module-dotnet");if("string"==typeof o)t=o;else if(o)throw new Error(`For a ${n} resource, custom loaders must supply a URI string.`)}const n=new URL(t,document.baseURI).toString();return await import(n)}(e),o=function(e,t){const n={maxParallelDownloads:1e6,enableDownloadRetry:!1,applicationEnvironment:e.environment},o={...window.Module||{},onConfigLoaded:async n=>{n.environmentVariables||(n.environmentVariables={}),"sharded"===n.globalizationMode&&(n.environmentVariables.__BLAZOR_SHARDED_ICU="1"),vt._internal.getApplicationEnvironment=()=>n.applicationEnvironment,null==t||t(n),wr=await async function(e,t){var n,o,r;if(e.initializers)return await Promise.all(e.initializers.beforeStart.map((t=>t(e)))),new qo(!1,void 0,e.initializers.afterStarted,Bn.WebAssembly);{const i=[e,null!==(o=null===(n=t.resources)||void 0===n?void 0:n.extensions)&&void 0!==o?o:{}],s=new qo(!0,void 0,void 0,Bn.WebAssembly),a=Object.keys((null===(r=null==t?void 0:t.resources)||void 0===r?void 0:r.libraryInitializers)||{});return await s.importInitializersAsync(a,i),s}}(e,n)},onDownloadResourceProgress:Ir,config:n,disableDotnet6Compatibility:!1,out:Tr,err:Rr};return o}(e,t);e.applicationCulture&&n.withApplicationCulture(e.applicationCulture),e.environment&&n.withApplicationEnvironment(e.environment),e.loadBootResource&&n.withResourceLoader(e.loadBootResource),n.withModuleConfig(o),e.configureRuntime&&e.configureRuntime(n),yr=await n.create()}(e,t)},start:function(){return async function(){if(!yr)throw new Error("The runtime must be loaded it gets configured.");const{MONO:t,BINDING:n,Module:o,setModuleImports:r,INTERNAL:i,getConfig:s,invokeLibraryInitializers:a}=yr;gr=o,pr=n,fr=t,vr=i,function(e){const t=dr.match(/^Mac/i)?"Cmd":"Alt";ur(e)&&console.info(`Debugging hotkey: Shift+${t}+D (when application has focus)`),document.addEventListener("keydown",(t=>{t.shiftKey&&(t.metaKey||t.altKey)&&"KeyD"===t.code&&(ur(e)?navigator.userAgent.includes("Firefox")?async function(){const e=await fetch(`_framework/debug?url=${encodeURIComponent(location.href)}&isFirefox=true`);200!==e.status&&console.warn(await e.text())}():hr?function(){const e=document.createElement("a");e.href=`_framework/debug?url=${encodeURIComponent(location.href)}`,e.target="_blank",e.rel="noopener noreferrer",e.click()}():console.error("Currently, only Microsoft Edge (80+), Google Chrome, or Chromium, are supported for debugging."):console.error("Cannot start debugging, because the application was not compiled with debugging enabled."))}))}(s()),vt.runtime=yr,vt._internal.dotNetCriticalError=Rr,r("blazor-internal",{Blazor:{_internal:vt._internal}});const c=await yr.getAssemblyExports("Microsoft.AspNetCore.Components.WebAssembly");return Object.assign(vt._internal,{dotNetExports:{...c.Microsoft.AspNetCore.Components.WebAssembly.Services.DefaultWebAssemblyJSRuntime}}),mr=e.attachDispatcher({beginInvokeDotNetFromJS:(e,t,n,o,r)=>{if(Ar(),!o&&!t)throw new Error("Either assemblyName or dotNetObjectId must have a non null value.");const i=o?o.toString():t;vt._internal.dotNetExports.BeginInvokeDotNet(e?e.toString():null,i,n,r)},endInvokeJSFromDotNet:(e,t,n)=>{vt._internal.dotNetExports.EndInvokeJS(n)},sendByteArray:(e,t)=>{vt._internal.dotNetExports.ReceiveByteArrayFromJS(e,t)},invokeDotNetFromJS:(e,t,n,o)=>(Ar(),vt._internal.dotNetExports.InvokeDotNet(e||null,t,null!=n?n:0,o))}),{invokeLibraryInitializers:a}}()},callEntryPoint:async function(){try{await yr.runMain(yr.getConfig().mainAssemblyName,[])}catch(e){console.error(e),Bo()}},toUint8Array:function(e){const t=Dr(e),n=Cr(t),o=new Uint8Array(n);return o.set(gr.HEAPU8.subarray(t+4,t+4+n)),o},getArrayLength:function(e){return Cr(Dr(e))},getArrayEntryPtr:function(e,t,n){return Dr(e)+4+t*n},getObjectFieldsBaseAddress:function(e){return e+8},readInt16Field:function(e,t){return n=e+(t||0),fr.getI16(n);var n},readInt32Field:function(e,t){return Cr(e+(t||0))},readUint64Field:function(e,t){return function(e){const t=e>>2,n=gr.HEAPU32[t+1];if(n>_r)throw new Error(`Cannot read uint64 with high order part ${n}, because the result would exceed Number.MAX_SAFE_INTEGER.`);return n*br+gr.HEAPU32[t]}(e+(t||0))},readFloatField:function(e,t){return n=e+(t||0),fr.getF32(n);var n},readObjectField:function(e,t){return Cr(e+(t||0))},readStringField:function(e,t,n){const o=Cr(e+(t||0));if(0===o)return null;if(n){const e=pr.unbox_mono_obj(o);return"boolean"==typeof e?e?"":null:e}return pr.conv_string(o)},readStructField:function(e,t){return e+(t||0)},beginHeapLock:function(){return Ar(),Sr=xr.create(),Sr},invokeWhenHeapUnlocked:function(e){Sr?Sr.enqueuePostReleaseAction(e):e()}};function Ir(e,t){const n=e/t*100;document.documentElement.style.setProperty("--blazor-load-percentage",`${n}%`),document.documentElement.style.setProperty("--blazor-load-percentage-text",`"${Math.floor(n)}%"`)}const kr=["DEBUGGING ENABLED"],Tr=e=>kr.indexOf(e)<0&&console.log(e),Rr=e=>{console.error(e||"(null)"),Bo()};function Dr(e){return e+12}function Ar(){if(Sr)throw new Error("Assertion failed - heap is currently locked")}class xr{enqueuePostReleaseAction(e){this.postReleaseActions||(this.postReleaseActions=[]),this.postReleaseActions.push(e)}release(){var e;if(Sr!==this)throw new Error("Trying to release a lock which isn't current");for(vr.mono_wasm_gc_unlock(),Sr=null;null===(e=this.postReleaseActions)||void 0===e?void 0:e.length;)this.postReleaseActions.shift()(),Ar()}static create(){return vr.mono_wasm_gc_lock(),new xr}}class Nr{constructor(e){this.batchAddress=e,this.arrayRangeReader=Pr,this.arrayBuilderSegmentReader=Mr,this.diffReader=Ur,this.editReader=Lr,this.frameReader=Br}updatedComponents(){return Zo.readStructField(this.batchAddress,0)}referenceFrames(){return Zo.readStructField(this.batchAddress,Pr.structLength)}disposedComponentIds(){return Zo.readStructField(this.batchAddress,2*Pr.structLength)}disposedEventHandlerIds(){return Zo.readStructField(this.batchAddress,3*Pr.structLength)}updatedComponentsEntry(e,t){return Or(e,t,Ur.structLength)}referenceFramesEntry(e,t){return Or(e,t,Br.structLength)}disposedComponentIdsEntry(e,t){const n=Or(e,t,4);return Zo.readInt32Field(n)}disposedEventHandlerIdsEntry(e,t){const n=Or(e,t,8);return Zo.readUint64Field(n)}}const Pr={structLength:8,values:e=>Zo.readObjectField(e,0),count:e=>Zo.readInt32Field(e,4)},Mr={structLength:12,values:e=>{const t=Zo.readObjectField(e,0),n=Zo.getObjectFieldsBaseAddress(t);return Zo.readObjectField(n,0)},offset:e=>Zo.readInt32Field(e,4),count:e=>Zo.readInt32Field(e,8)},Ur={structLength:4+Mr.structLength,componentId:e=>Zo.readInt32Field(e,0),edits:e=>Zo.readStructField(e,4),editsEntry:(e,t)=>Or(e,t,Lr.structLength)},Lr={structLength:20,editType:e=>Zo.readInt32Field(e,0),siblingIndex:e=>Zo.readInt32Field(e,4),newTreeIndex:e=>Zo.readInt32Field(e,8),moveToSiblingIndex:e=>Zo.readInt32Field(e,8),removedAttributeName:e=>Zo.readStringField(e,16)},Br={structLength:36,frameType:e=>Zo.readInt16Field(e,4),subtreeLength:e=>Zo.readInt32Field(e,8),elementReferenceCaptureId:e=>Zo.readStringField(e,16),componentId:e=>Zo.readInt32Field(e,12),elementName:e=>Zo.readStringField(e,16),textContent:e=>Zo.readStringField(e,16),markupContent:e=>Zo.readStringField(e,16),attributeName:e=>Zo.readStringField(e,16),attributeValue:e=>Zo.readStringField(e,24,!0),attributeEventHandlerId:e=>Zo.readUint64Field(e,8)};function Or(e,t,n){return Zo.getArrayEntryPtr(e,t,n)}class Fr{constructor(e){this.componentManager=e}resolveRegisteredElement(e){const t=Number.parseInt(e);if(!Number.isNaN(t))return H(this.componentManager.resolveRootComponent(t))}getParameterValues(e){return this.componentManager.initialComponents[e].parameterValues}getParameterDefinitions(e){return this.componentManager.initialComponents[e].parameterDefinitions}getTypeName(e){return this.componentManager.initialComponents[e].typeName}getAssembly(e){return this.componentManager.initialComponents[e].assembly}getCount(){return this.componentManager.initialComponents.length}}let $r,Hr,Wr,jr,zr,qr=!1,Jr=!1,Kr=!0,Vr=!1;const Xr=new Promise((e=>{zr=e}));let Gr;const Yr=new Promise((e=>{Gr=e}));let Qr;function Zr(e){if(void 0!==jr)throw new Error("Blazor WebAssembly has already started.");return jr=new Promise(ei.bind(null,e)),jr}async function ei(e,t,n){(function(){if(window.parent!==window&&!window.opener&&window.frameElement){const e=window.sessionStorage&&window.sessionStorage["Microsoft.AspNetCore.Components.WebAssembly.Authentication.CachedAuthSettings"],t=e&&JSON.parse(e);return t&&t.redirect_uri&&location.href.startsWith(t.redirect_uri)}return!1})()&&await new Promise((()=>{}));const o=ti();!function(e){const t=A;A=(e,n,o)=>{((e,t,n)=>{const o=Ae(e);(null==o?void 0:o.eventDelegator.getHandler(t))&&Er.invokeWhenHeapUnlocked(n)})(e,n,(()=>t(e,n,o)))}}(),vt._internal.applyHotReload=(e,t,n,o)=>{mr.invokeDotNetStaticMethod("Microsoft.AspNetCore.Components.WebAssembly","ApplyHotReloadDelta",e,t,n,o)},vt._internal.getApplyUpdateCapabilities=()=>mr.invokeDotNetStaticMethod("Microsoft.AspNetCore.Components.WebAssembly","GetApplyUpdateCapabilities"),vt._internal.invokeJSFromDotNet=oi,vt._internal.invokeJSJson=ri,vt._internal.endInvokeDotNetFromJS=ii,vt._internal.receiveWebAssemblyDotNetDataStream=si,vt._internal.receiveByteArray=ai;const r=ir(Er);vt.platform=r,vt._internal.renderBatch=(e,t)=>{const n=Er.beginHeapLock();try{xe(e,new Nr(t))}finally{n.release()}},vt._internal.navigationManager.listenForNavigationEvents(Bn.WebAssembly,(async(e,t,n)=>{await mr.invokeDotNetStaticMethodAsync("Microsoft.AspNetCore.Components.WebAssembly","NotifyLocationChanged",e,t,n)}),(async(e,t,n,o)=>{const r=await mr.invokeDotNetStaticMethodAsync("Microsoft.AspNetCore.Components.WebAssembly","NotifyLocationChangingAsync",t,n,o);vt._internal.navigationManager.endLocationChanging(e,r)}));const i=new Fr(e);let s;vt._internal.registeredComponents={getRegisteredComponentsCount:()=>i.getCount(),getAssembly:e=>i.getAssembly(e),getTypeName:e=>i.getTypeName(e),getParameterDefinitions:e=>i.getParameterDefinitions(e)||"",getParameterValues:e=>i.getParameterValues(e)||""},vt._internal.getPersistedState=()=>kt(document,Ct)||"",vt._internal.getInitialComponentsUpdate=()=>Yr,vt._internal.updateRootComponents=e=>{var t;return null===(t=vt._internal.dotNetExports)||void 0===t?void 0:t.UpdateRootComponentsCore(e)},vt._internal.endUpdateRootComponents=t=>{var n;return null===(n=e.onAfterUpdateRootComponents)||void 0===n?void 0:n.call(e,t)},vt._internal.attachRootComponentToElement=(e,t,n)=>{const o=i.resolveRegisteredElement(e);o?De(n,o,t,!1):function(e,t,n){const o="::before";let r=!1;if(e.endsWith("::after"))e=e.slice(0,-7),r=!0;else if(e.endsWith(o))throw new Error(`The '${o}' selector is not supported.`);const i=w(e)||document.querySelector(e);if(!i)throw new Error(`Could not find any element matching selector '${e}'.`);De(n,W(i,!0),t,r)}(e,t,n)};try{await o,s=await r.start()}catch(e){throw new Error(`Failed to start platform. Reason: ${e}`)}r.callEntryPoint(),wr.invokeAfterStartedCallbacks(vt),Jr=!0,t()}function ti(){return null!=Wr||(Wr=(async()=>{await Hr;const e=null!=$r?$r:{},t=null==$r?void 0:$r.configureRuntime;e.configureRuntime=e=>{null==t||t(e),Vr&&e.withEnvironmentVariable("__BLAZOR_WEBASSEMBLY_WAIT_FOR_ROOT_COMPONENTS","true")},await Er.load(e,zr),qr=!0})()),Wr}function ni(){return qr}function oi(t,n,o,r){const i=Er.readStringField(t,0),s=Er.readInt32Field(t,4),a=Er.readStringField(t,8),c=Er.readUint64Field(t,20);if(null!==a){const e=Er.readUint64Field(t,12);if(0!==e)return mr.beginInvokeJSFromDotNet(e,i,a,s,c),0;{const e=mr.invokeJSFromDotNet(i,a,s,c);return null===e?0:pr.js_string_to_mono_string(e)}}{const t=e.findJSFunction(i,c).call(null,n,o,r);switch(s){case e.JSCallResultType.Default:return t;case e.JSCallResultType.JSObjectReference:return e.createJSObjectReference(t).__jsObjectId;case e.JSCallResultType.JSStreamReference:{const n=e.createJSStreamReference(t),o=JSON.stringify(n);return pr.js_string_to_mono_string(o)}case e.JSCallResultType.JSVoidResult:return null;default:throw new Error(`Invalid JS call result type '${s}'.`)}}}function ri(e,t,n,o,r){return 0!==r?(mr.beginInvokeJSFromDotNet(r,e,o,n,t),null):mr.invokeJSFromDotNet(e,o,n,t)}function ii(e,t,n){mr.endInvokeDotNetFromJS(e,t,n)}function si(e,t,n,o){!function(e,t,n,o,r){let i=mt.get(t);if(!i){const n=new ReadableStream({start(e){mt.set(t,e),i=e}});e.supplyDotNetStream(t,n)}r?(i.error(r),mt.delete(t)):0===o?(i.close(),mt.delete(t)):i.enqueue(n.length===o?n:n.subarray(0,o))}(mr,e,t,n,o)}function ai(e,t){mr.receiveByteArray(e,t)}function ci(e,t){t.namespaceURI?e.setAttributeNS(t.namespaceURI,t.name,t.value):e.setAttribute(t.name,t.value)}Hr=new Promise((e=>{Qr=e}));const li="data-permanent";var hi,di;!function(e){e[e.None=0]="None",e[e.Some=1]="Some",e[e.Infinite=2]="Infinite"}(hi||(hi={})),function(e){e.Keep="keep",e.Update="update",e.Insert="insert",e.Delete="delete"}(di||(di={}));class ui{static create(e,t,n){return 0===t&&n===e.length?e:new ui(e,t,n)}constructor(e,t,n){this.source=e,this.startIndex=t,this.length=n}item(e){return this.source.item(e+this.startIndex)}forEach(e,t){for(let t=0;t=n&&s>=o&&r(e.item(i),t.item(s))===hi.None;)i--,s--,a++;return a}(e,t,o,o,n),i=function(e){var t;const n=[];let o=e.length-1,r=(null===(t=e[o])||void 0===t?void 0:t.length)-1;for(;o>0||r>0;){const t=0===o?di.Insert:0===r?di.Delete:e[o][r];switch(n.unshift(t),t){case di.Keep:case di.Update:o--,r--;break;case di.Insert:r--;break;case di.Delete:o--}}return n}(function(e,t,n){const o=[],r=[],i=e.length,s=t.length;if(0===i&&0===s)return[];for(let e=0;e<=i;e++)(o[e]=Array(s+1))[0]=e,r[e]=Array(s+1);const a=o[0];for(let e=1;e<=s;e++)a[e]=e;for(let a=1;a<=i;a++)for(let i=1;i<=s;i++){const s=n(e.item(a-1),t.item(i-1)),c=o[a-1][i]+1,l=o[a][i-1]+1;let h;switch(s){case hi.None:h=o[a-1][i-1];break;case hi.Some:h=o[a-1][i-1]+1;break;case hi.Infinite:h=Number.MAX_VALUE}h{history.pushState(null,"",e),Mi(e,!0)}))}function Ni(e){Oe()||Mi(location.href,!1)}function Pi(e){if(Oe()||e.defaultPrevented)return;const t=e.target;if(t instanceof HTMLFormElement){if(!function(e){const t=e.getAttribute("data-enhance");return"string"==typeof t&&""===t||"true"===(null==t?void 0:t.toLowerCase())}(t))return;e.preventDefault();let n=new URL(t.action);const o={method:t.method},r=new FormData(t),i=e.submitter;i&&(i.name&&r.append(i.name,i.value),null!==i.getAttribute("formaction")&&(n=new URL(i.formAction))),"get"===o.method?(n.search=new URLSearchParams(r).toString(),history.pushState(null,"",n.toString())):o.body=r,Mi(n.toString(),!1,o)}}async function Mi(e,t,n){gi=!0,null==pi||pi.abort(),function(e,t){null==ke||ke(e,t)}(e,t),pi=new AbortController;const o=pi.signal,r=fetch(e,Object.assign({signal:o,mode:"no-cors",headers:{accept:"text/html; blazor-enhanced-nav=on"}},n));let i=null;if(await async function(e,t,n,o){let r;try{if(r=await e,!r.body)return void n(r,"");const t=r.headers.get("ssr-framing");if(!t){const e=await r.text();return void n(r,e)}let o=!0;await r.body.pipeThrough(new TextDecoderStream).pipeThrough(function(e){let t="";return new TransformStream({transform(n,o){if(t+=n,t.indexOf(e,t.length-n.length-e.length)>=0){const n=t.split(e);n.slice(0,-1).forEach((e=>o.enqueue(e))),t=n[n.length-1]}},flush(e){e.enqueue(t)}})}(`\x3c!--${t}--\x3e`)).pipeTo(new WritableStream({write(e){o?(o=!1,n(r,e)):(e=>{const t=document.createRange().createContextualFragment(e);for(;t.firstChild;)document.body.appendChild(t.firstChild)})(e)}}))}catch(e){if("AbortError"===e.name&&t.aborted)return;throw e}}(r,o,((t,o)=>{const r=!(null==n?void 0:n.method)||"get"===n.method,s=t.status>=200&&t.status<300;if("opaque"===t.type){if(r)return void Li(e);throw new Error("Enhanced navigation does not support making a non-GET request to an endpoint that redirects to an external origin. Avoid enabling enhanced navigation for form posts that may perform external redirections.")}if(s&&"allow"!==t.headers.get("blazor-enhanced-nav")){if(r)return void Li(e);throw new Error("Enhanced navigation does not support making a non-GET request to a non-Blazor endpoint. Avoid enabling enhanced navigation for forms that post to a non-Blazor endpoint.")}t.redirected&&(r?history.replaceState(null,"",t.url):history.pushState(null,"",t.url),e=t.url);const a=t.headers.get("blazor-enhanced-nav-redirect-location");if(a)return void location.replace(a);t.redirected||r||!s||(function(e){const t=new URL(e.url),n=new URL(Ri);return t.protocol===n.protocol&&t.host===n.host&&t.port===n.port&&t.pathname===n.pathname}(t)?location.href!==Ri&&history.pushState(null,"",Ri):i=`Cannot perform enhanced form submission that changes the URL (except via a redirection), because then back/forward would not work. Either remove this form's 'action' attribute, or change its method to 'get', or do not mark it as enhanced.\nOld URL: ${location.href}\nNew URL: ${t.url}`),Ri=t.url;const c=t.headers.get("content-type");if((null==c?void 0:c.startsWith("text/html"))&&o){const e=(new DOMParser).parseFromString(o,"text/html");vi(document,e),fi.documentUpdated()}else(null==c?void 0:c.startsWith("text/"))&&o?Ui(o):s||o?r?Li(e):Ui(`Error: ${n.method} request to ${e} returned non-HTML content of type ${c||"unspecified"}.`):Ui(`Error: ${t.status} ${t.statusText}`)})),!o.aborted){const t=e.indexOf("#");if(t>=0){const n=e.substring(t+1),o=document.getElementById(n);null==o||o.scrollIntoView()}if(gi=!1,fi.enhancedNavigationCompleted(),i)throw new Error(i)}}function Ui(e){document.documentElement.textContent=e;const t=document.documentElement.style;t.fontFamily="consolas, monospace",t.whiteSpace="pre-wrap",t.padding="1rem"}function Li(e){history.replaceState(null,"",e+"?"),location.replace(e)}let Bi,Oi=!0;class Fi extends HTMLElement{connectedCallback(){var e;const t=this.parentNode;null===(e=t.parentNode)||void 0===e||e.removeChild(t),t.childNodes.forEach((e=>{if(e instanceof HTMLTemplateElement){const t=e.getAttribute("blazor-component-id");if(t)"true"!==e.getAttribute("enhanced-nav")&&pi||function(e,t){const n=function(e){const t=`bl:${e}`,n=document.createNodeIterator(document,NodeFilter.SHOW_COMMENT);let o=null;for(;(o=n.nextNode())&&o.textContent!==t;);if(!o)return null;const r=`/bl:${e}`;let i=null;for(;(i=n.nextNode())&&i.textContent!==r;);return i?{startMarker:o,endMarker:i}:null}(e);if(n){const{startMarker:e,endMarker:o}=n;if(Oi)vi({startExclusive:e,endExclusive:o},t);else{const n=o.parentNode,r=new Range;for(r.setStart(e,e.textContent.length),r.setEnd(o,0),r.deleteContents();t.childNodes[0];)n.insertBefore(t.childNodes[0],o)}Bi.documentUpdated()}}(t,e.content);else switch(e.getAttribute("type")){case"redirection":const t=Le(e.content.textContent),n="form-post"===e.getAttribute("from");"true"===e.getAttribute("enhanced")&&Pe(t)?(n?history.pushState(null,"",t):history.replaceState(null,"",t),Mi(t,!1)):n?location.assign(t):location.replace(t);break;case"error":Ui(e.content.textContent||"Error")}}}))}}class $i{constructor(e){var t;this._circuitInactivityTimeoutMs=e,this._rootComponentsBySsrComponentId=new Map,this._seenDescriptors=new Set,this._pendingOperationBatches={},this._nextOperationBatchId=1,this._nextSsrComponentId=1,this._didWebAssemblyFailToLoadQuickly=!1,this._isComponentRefreshPending=!1,this.initialComponents=[],t=()=>{this.rootComponentsMayRequireRefresh()},E.push(t)}onAfterRenderBatch(e){e===Bn.Server&&this.circuitMayHaveNoRootComponents()}onDocumentUpdated(){this.rootComponentsMayRequireRefresh()}onEnhancedNavigationCompleted(){this.rootComponentsMayRequireRefresh()}registerComponent(e){if(this._seenDescriptors.has(e))return;"auto"!==e.type&&"webassembly"!==e.type||this.startLoadingWebAssemblyIfNotStarted();const t=this._nextSsrComponentId++;this._seenDescriptors.add(e),this._rootComponentsBySsrComponentId.set(t,{descriptor:e,ssrComponentId:t})}unregisterComponent(e){this._seenDescriptors.delete(e.descriptor),this._rootComponentsBySsrComponentId.delete(e.ssrComponentId),this.circuitMayHaveNoRootComponents()}async startLoadingWebAssemblyIfNotStarted(){if(void 0!==Wr)return;Vr=!0;const e=ti();setTimeout((()=>{ni()||this.onWebAssemblyFailedToLoadQuickly()}),vt._internal.loadWebAssemblyQuicklyTimeout);const t=await Xr;(function(e){if(!e.cacheBootResources)return!1;const t=Hi(e);if(!t)return!1;const n=window.localStorage.getItem(t.key);return t.value===n})(t)||this.onWebAssemblyFailedToLoadQuickly(),await e,function(e){const t=Hi(e);t&&window.localStorage.setItem(t.key,t.value)}(t),this.rootComponentsMayRequireRefresh()}onWebAssemblyFailedToLoadQuickly(){this._didWebAssemblyFailToLoadQuickly||(this._didWebAssemblyFailToLoadQuickly=!0,this.rootComponentsMayRequireRefresh())}startCircutIfNotStarted(){return void 0===Yo?tr(this):!Vo||Vo.isDisposedOrDisposing()?or():void 0}async startWebAssemblyIfNotStarted(){this.startLoadingWebAssemblyIfNotStarted(),void 0===jr&&await Zr(this)}rootComponentsMayRequireRefresh(){this._isComponentRefreshPending||(this._isComponentRefreshPending=!0,setTimeout((()=>{this._isComponentRefreshPending=!1,this.refreshRootComponents(this._rootComponentsBySsrComponentId.values())}),0))}circuitMayHaveNoRootComponents(){if(this.rendererHasExistingOrPendingComponents(Bn.Server,"server","auto"))return clearTimeout(this._circuitInactivityTimeoutId),void(this._circuitInactivityTimeoutId=void 0);void 0===this._circuitInactivityTimeoutId&&(this._circuitInactivityTimeoutId=setTimeout((()=>{this.rendererHasExistingOrPendingComponents(Bn.Server,"server","auto")||(async function(){await(null==Vo?void 0:Vo.dispose())}(),this._circuitInactivityTimeoutId=void 0)}),this._circuitInactivityTimeoutMs))}rendererHasComponents(e){const t=Ae(e);return void 0!==t&&t.getRootComponentCount()>0}rendererHasExistingOrPendingComponents(e,...t){if(this.rendererHasComponents(e))return!0;for(const{descriptor:{type:n},assignedRendererId:o}of this._rootComponentsBySsrComponentId.values()){if(o===e)return!0;if(void 0===o&&-1!==t.indexOf(n))return!0}return!1}refreshRootComponents(e){const t=new Map;for(const n of e){const e=this.determinePendingOperation(n);if(!e)continue;const o=n.assignedRendererId;if(!o)throw new Error("Descriptors must be assigned a renderer ID before getting used as root components");let r=t.get(o);r||(r=[],t.set(o,r)),r.push(e)}for(const[e,n]of t){const t={batchId:this._nextOperationBatchId++,operations:n};this._pendingOperationBatches[t.batchId]=t;const o=JSON.stringify(t);e===Bn.Server?rr(o):this.updateWebAssemblyRootComponents(o)}}updateWebAssemblyRootComponents(e){Kr?(Gr(e),Kr=!1):function(e){if(!jr)throw new Error("Blazor WebAssembly has not started.");if(!vt._internal.updateRootComponents)throw new Error("Blazor WebAssembly has not initialized.");Jr?vt._internal.updateRootComponents(e):async function(e){if(await jr,!vt._internal.updateRootComponents)throw new Error("Blazor WebAssembly has not initialized.");vt._internal.updateRootComponents(e)}(e)}(e)}resolveRendererIdForDescriptor(e){switch("auto"===e.type?this.getAutoRenderMode():e.type){case"server":return this.startCircutIfNotStarted(),Bn.Server;case"webassembly":return this.startWebAssemblyIfNotStarted(),Bn.WebAssembly;case null:return null}}getAutoRenderMode(){return this.rendererHasExistingOrPendingComponents(Bn.WebAssembly,"webassembly")?"webassembly":this.rendererHasExistingOrPendingComponents(Bn.Server,"server")?"server":ni()?"webassembly":this._didWebAssemblyFailToLoadQuickly?"server":null}determinePendingOperation(e){if(t=e.descriptor,document.contains(t.start)){if(void 0===e.assignedRendererId){if(gi||"loading"===document.readyState)return null;const t=this.resolveRendererIdForDescriptor(e.descriptor);return null===t?null:T(t)?(be(e.descriptor.start,!0),e.assignedRendererId=t,e.uniqueIdAtLastUpdate=e.descriptor.uniqueId,{type:"add",ssrComponentId:e.ssrComponentId,marker:Ut(e.descriptor)}):null}return T(e.assignedRendererId)?e.uniqueIdAtLastUpdate===e.descriptor.uniqueId?null:(e.uniqueIdAtLastUpdate=e.descriptor.uniqueId,{type:"update",ssrComponentId:e.ssrComponentId,marker:Ut(e.descriptor)}):null}return e.hasPendingRemoveOperation?null:void 0===e.assignedRendererId?(this.unregisterComponent(e),null):T(e.assignedRendererId)?(be(e.descriptor.start,!1),e.hasPendingRemoveOperation=!0,{type:"remove",ssrComponentId:e.ssrComponentId}):null;var t}resolveRootComponent(e){const t=this._rootComponentsBySsrComponentId.get(e);if(!t)throw new Error(`Could not resolve a root component with SSR component ID '${e}'.`);return t.descriptor}onAfterUpdateRootComponents(e){const t=this._pendingOperationBatches[e];delete this._pendingOperationBatches[e];for(const e of t.operations)switch(e.type){case"remove":{const t=this._rootComponentsBySsrComponentId.get(e.ssrComponentId);t&&this.unregisterComponent(t);break}}}}function Hi(e){var t;const n=null===(t=e.resources)||void 0===t?void 0:t.hash,o=e.mainAssemblyName;return n&&o?{key:`blazor-resource-hash:${o}`,value:n}:null}class Wi{constructor(){this._eventListeners=new Map}static create(e){const t=new Wi;return e.addEventListener=t.addEventListener.bind(t),e.removeEventListener=t.removeEventListener.bind(t),t}addEventListener(e,t){let n=this._eventListeners.get(e);n||(n=new Set,this._eventListeners.set(e,n)),n.add(t)}removeEventListener(e,t){var n;null===(n=this._eventListeners.get(e))||void 0===n||n.delete(t)}dispatchEvent(e,t){const n=this._eventListeners.get(e);if(!n)return;const o={...t,type:e};for(const e of n)e(o)}}let ji,zi=!1;function qi(e){var t,n,o,r;if(zi)throw new Error("Blazor has already started.");zi=!0,null!==(t=(e=e||{}).logLevel)&&void 0!==t||(e.logLevel=yt.Error),vt._internal.loadWebAssemblyQuicklyTimeout=3e3,vt._internal.hotReloadApplied=()=>{Me()&&Ue(location.href,!0)},ji=new $i(null!==(o=null===(n=null==e?void 0:e.ssr)||void 0===n?void 0:n.circuitInactivityTimeoutMs)&&void 0!==o?o:2e3);const i=Wi.create(vt),s={documentUpdated:()=>{ji.onDocumentUpdated(),i.dispatchEvent("enhancedload",{})},enhancedNavigationCompleted(){ji.onEnhancedNavigationCompleted()}};return mi=ji,function(e,t){Bi=t,(null==e?void 0:e.disableDomPreservation)&&(Oi=!1),customElements.define("blazor-ssr-end",Fi)}(null==e?void 0:e.ssr,s),(null===(r=null==e?void 0:e.ssr)||void 0===r?void 0:r.disableDomPreservation)||Di(s),"loading"===document.readyState?document.addEventListener("DOMContentLoaded",Ji.bind(null,e)):Ji(e),Promise.resolve()}function Ji(e){const t=Fo((null==e?void 0:e.circuit)||{});e.circuit=t;const n=async function(e,t){var n;const o=kt(document,Et,"initializers");if(!o)return new qo(!1,t);const r=null!==(n=JSON.parse(atob(o)))&&void 0!==n?n:[],i=new qo(!1,t);return await i.importInitializersAsync(r,[e]),i}(e,new bt(t.logLevel));er(Ki(n,t)),function(e){if($r)throw new Error("WebAssembly options have already been configured.");!async function(e){const t=await e;$r=t,Qr()}(e)}(Ki(n,(null==e?void 0:e.webAssembly)||{})),function(e){const t=Ci(document);for(const e of t)null==mi||mi.registerComponent(e)}(),ji.onDocumentUpdated(),async function(e){const t=await e;await t.invokeAfterStartedCallbacks(vt)}(n)}async function Ki(e,t){return await e,t}vt.start=qi,window.DotNet=e,document&&document.currentScript&&"false"!==document.currentScript.getAttribute("autostart")&&qi()})()})(); \ No newline at end of file +(()=>{var e={778:()=>{},77:()=>{},203:()=>{},200:()=>{},628:()=>{},321:()=>{}},t={};function n(o){var r=t[o];if(void 0!==r)return r.exports;var i=t[o]={exports:{}};return e[o](i,i.exports,n),i.exports}n.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),(()=>{"use strict";var e,t,o;!function(e){const t=[],n="__jsObjectId",o="__dotNetObject",r="__byte[]",i="__dotNetStream",s="__jsStreamReferenceLength";let a,c;class l{constructor(e){this._jsObject=e,this._cachedFunctions=new Map}findFunction(e){const t=this._cachedFunctions.get(e);if(t)return t;let n,o=this._jsObject;if(e.split(".").forEach((t=>{if(!(t in o))throw new Error(`Could not find '${e}' ('${t}' was undefined).`);n=o,o=o[t]})),o instanceof Function)return o=o.bind(n),this._cachedFunctions.set(e,o),o;throw new Error(`The value '${e}' is not a function.`)}getWrappedObject(){return this._jsObject}}const h={0:new l(window)};h[0]._cachedFunctions.set("import",(e=>("string"==typeof e&&e.startsWith("./")&&(e=new URL(e.substr(2),document.baseURI).toString()),import(e))));let d,u=1;function p(e){t.push(e)}function f(e){if(e&&"object"==typeof e){h[u]=new l(e);const t={[n]:u};return u++,t}throw new Error(`Cannot create a JSObjectReference from the value '${e}'.`)}function g(e){let t=-1;if(e instanceof ArrayBuffer&&(e=new Uint8Array(e)),e instanceof Blob)t=e.size;else{if(!(e.buffer instanceof ArrayBuffer))throw new Error("Supplied value is not a typed array or blob.");if(void 0===e.byteLength)throw new Error(`Cannot create a JSStreamReference from the value '${e}' as it doesn't have a byteLength.`);t=e.byteLength}const o={[s]:t};try{const t=f(e);o[n]=t[n]}catch(t){throw new Error(`Cannot create a JSStreamReference from the value '${e}'.`)}return o}function m(e,n){c=e;const o=n?JSON.parse(n,((e,n)=>t.reduce(((t,n)=>n(e,t)),n))):null;return c=void 0,o}function v(){if(void 0===a)throw new Error("No call dispatcher has been set.");if(null===a)throw new Error("There are multiple .NET runtimes present, so a default dispatcher could not be resolved. Use DotNetObject to invoke .NET instance methods.");return a}e.attachDispatcher=function(e){const t=new y(e);return void 0===a?a=t:a&&(a=null),t},e.attachReviver=p,e.invokeMethod=function(e,t,...n){return v().invokeDotNetStaticMethod(e,t,...n)},e.invokeMethodAsync=function(e,t,...n){return v().invokeDotNetStaticMethodAsync(e,t,...n)},e.createJSObjectReference=f,e.createJSStreamReference=g,e.disposeJSObjectReference=function(e){const t=e&&e[n];"number"==typeof t&&_(t)},function(e){e[e.Default=0]="Default",e[e.JSObjectReference=1]="JSObjectReference",e[e.JSStreamReference=2]="JSStreamReference",e[e.JSVoidResult=3]="JSVoidResult"}(d=e.JSCallResultType||(e.JSCallResultType={}));class y{constructor(e){this._dotNetCallDispatcher=e,this._byteArraysToBeRevived=new Map,this._pendingDotNetToJSStreams=new Map,this._pendingAsyncCalls={},this._nextAsyncCallId=1}getDotNetCallDispatcher(){return this._dotNetCallDispatcher}invokeJSFromDotNet(e,t,n,o){const r=m(this,t),i=I(b(e,o)(...r||[]),n);return null==i?null:T(this,i)}beginInvokeJSFromDotNet(e,t,n,o,r){const i=new Promise((e=>{const o=m(this,n);e(b(t,r)(...o||[]))}));e&&i.then((t=>T(this,[e,!0,I(t,o)]))).then((t=>this._dotNetCallDispatcher.endInvokeJSFromDotNet(e,!0,t)),(t=>this._dotNetCallDispatcher.endInvokeJSFromDotNet(e,!1,JSON.stringify([e,!1,w(t)]))))}endInvokeDotNetFromJS(e,t,n){const o=t?m(this,n):new Error(n);this.completePendingCall(parseInt(e,10),t,o)}invokeDotNetStaticMethod(e,t,...n){return this.invokeDotNetMethod(e,t,null,n)}invokeDotNetStaticMethodAsync(e,t,...n){return this.invokeDotNetMethodAsync(e,t,null,n)}invokeDotNetMethod(e,t,n,o){if(this._dotNetCallDispatcher.invokeDotNetFromJS){const r=T(this,o),i=this._dotNetCallDispatcher.invokeDotNetFromJS(e,t,n,r);return i?m(this,i):null}throw new Error("The current dispatcher does not support synchronous calls from JS to .NET. Use invokeDotNetMethodAsync instead.")}invokeDotNetMethodAsync(e,t,n,o){if(e&&n)throw new Error(`For instance method calls, assemblyName should be null. Received '${e}'.`);const r=this._nextAsyncCallId++,i=new Promise(((e,t)=>{this._pendingAsyncCalls[r]={resolve:e,reject:t}}));try{const i=T(this,o);this._dotNetCallDispatcher.beginInvokeDotNetFromJS(r,e,t,n,i)}catch(e){this.completePendingCall(r,!1,e)}return i}receiveByteArray(e,t){this._byteArraysToBeRevived.set(e,t)}processByteArray(e){const t=this._byteArraysToBeRevived.get(e);return t?(this._byteArraysToBeRevived.delete(e),t):null}supplyDotNetStream(e,t){if(this._pendingDotNetToJSStreams.has(e)){const n=this._pendingDotNetToJSStreams.get(e);this._pendingDotNetToJSStreams.delete(e),n.resolve(t)}else{const n=new E;n.resolve(t),this._pendingDotNetToJSStreams.set(e,n)}}getDotNetStreamPromise(e){let t;if(this._pendingDotNetToJSStreams.has(e))t=this._pendingDotNetToJSStreams.get(e).streamPromise,this._pendingDotNetToJSStreams.delete(e);else{const n=new E;this._pendingDotNetToJSStreams.set(e,n),t=n.streamPromise}return t}completePendingCall(e,t,n){if(!this._pendingAsyncCalls.hasOwnProperty(e))throw new Error(`There is no pending async call with ID ${e}.`);const o=this._pendingAsyncCalls[e];delete this._pendingAsyncCalls[e],t?o.resolve(n):o.reject(n)}}function w(e){return e instanceof Error?`${e.message}\n${e.stack}`:e?e.toString():"null"}function b(e,t){const n=h[t];if(n)return n.findFunction(e);throw new Error(`JS object instance with ID ${t} does not exist (has it been disposed?).`)}function _(e){delete h[e]}e.findJSFunction=b,e.disposeJSObjectReferenceById=_;class S{constructor(e,t){this._id=e,this._callDispatcher=t}invokeMethod(e,...t){return this._callDispatcher.invokeDotNetMethod(null,e,this._id,t)}invokeMethodAsync(e,...t){return this._callDispatcher.invokeDotNetMethodAsync(null,e,this._id,t)}dispose(){this._callDispatcher.invokeDotNetMethodAsync(null,"__Dispose",this._id,null).catch((e=>console.error(e)))}serializeAsArg(){return{[o]:this._id}}}e.DotNetObject=S,p((function(e,t){if(t&&"object"==typeof t){if(t.hasOwnProperty(o))return new S(t[o],c);if(t.hasOwnProperty(n)){const e=t[n],o=h[e];if(o)return o.getWrappedObject();throw new Error(`JS object instance with Id '${e}' does not exist. It may have been disposed.`)}if(t.hasOwnProperty(r)){const e=t[r],n=c.processByteArray(e);if(void 0===n)throw new Error(`Byte array index '${e}' does not exist.`);return n}if(t.hasOwnProperty(i)){const e=t[i],n=c.getDotNetStreamPromise(e);return new C(n)}}return t}));class C{constructor(e){this._streamPromise=e}stream(){return this._streamPromise}async arrayBuffer(){return new Response(await this.stream()).arrayBuffer()}}class E{constructor(){this.streamPromise=new Promise(((e,t)=>{this.resolve=e,this.reject=t}))}}function I(e,t){switch(t){case d.Default:return e;case d.JSObjectReference:return f(e);case d.JSStreamReference:return g(e);case d.JSVoidResult:return null;default:throw new Error(`Invalid JS call result type '${t}'.`)}}let k=0;function T(e,t){k=0,c=e;const n=JSON.stringify(t,R);return c=void 0,n}function R(e,t){if(t instanceof S)return t.serializeAsArg();if(t instanceof Uint8Array){c.getDotNetCallDispatcher().sendByteArray(k,t);const e={[r]:k};return k++,e}return t}}(e||(e={})),function(e){e[e.prependFrame=1]="prependFrame",e[e.removeFrame=2]="removeFrame",e[e.setAttribute=3]="setAttribute",e[e.removeAttribute=4]="removeAttribute",e[e.updateText=5]="updateText",e[e.stepIn=6]="stepIn",e[e.stepOut=7]="stepOut",e[e.updateMarkup=8]="updateMarkup",e[e.permutationListEntry=9]="permutationListEntry",e[e.permutationListEnd=10]="permutationListEnd"}(t||(t={})),function(e){e[e.element=1]="element",e[e.text=2]="text",e[e.attribute=3]="attribute",e[e.component=4]="component",e[e.region=5]="region",e[e.elementReferenceCapture=6]="elementReferenceCapture",e[e.markup=8]="markup",e[e.namedEvent=10]="namedEvent"}(o||(o={}));class r{constructor(e,t){this.componentId=e,this.fieldValue=t}static fromEvent(e,t){const n=t.target;if(n instanceof Element){const t=function(e){return e instanceof HTMLInputElement?e.type&&"checkbox"===e.type.toLowerCase()?{value:e.checked}:{value:e.value}:e instanceof HTMLSelectElement||e instanceof HTMLTextAreaElement?{value:e.value}:null}(n);if(t)return new r(e,t.value)}return null}}const i=new Map,s=new Map,a=[];function c(e){return i.get(e)}function l(e){const t=i.get(e);return(null==t?void 0:t.browserEventName)||e}function h(e,t){e.forEach((e=>i.set(e,t)))}function d(e){const t=[];for(let n=0;ne.selected)).map((e=>e.value))}}{const e=function(e){return!!e&&"INPUT"===e.tagName&&"checkbox"===e.getAttribute("type")}(t);return{value:e?!!t.checked:t.value}}}}),h(["copy","cut","paste"],{createEventArgs:e=>({type:e.type})}),h(["drag","dragend","dragenter","dragleave","dragover","dragstart","drop"],{createEventArgs:e=>{return{...u(t=e),dataTransfer:t.dataTransfer?{dropEffect:t.dataTransfer.dropEffect,effectAllowed:t.dataTransfer.effectAllowed,files:Array.from(t.dataTransfer.files).map((e=>e.name)),items:Array.from(t.dataTransfer.items).map((e=>({kind:e.kind,type:e.type}))),types:t.dataTransfer.types}:null};var t}}),h(["focus","blur","focusin","focusout"],{createEventArgs:e=>({type:e.type})}),h(["keydown","keyup","keypress"],{createEventArgs:e=>{return{key:(t=e).key,code:t.code,location:t.location,repeat:t.repeat,ctrlKey:t.ctrlKey,shiftKey:t.shiftKey,altKey:t.altKey,metaKey:t.metaKey,type:t.type};var t}}),h(["contextmenu","click","mouseover","mouseout","mousemove","mousedown","mouseup","mouseleave","mouseenter","dblclick"],{createEventArgs:e=>u(e)}),h(["error"],{createEventArgs:e=>{return{message:(t=e).message,filename:t.filename,lineno:t.lineno,colno:t.colno,type:t.type};var t}}),h(["loadstart","timeout","abort","load","loadend","progress"],{createEventArgs:e=>{return{lengthComputable:(t=e).lengthComputable,loaded:t.loaded,total:t.total,type:t.type};var t}}),h(["touchcancel","touchend","touchmove","touchenter","touchleave","touchstart"],{createEventArgs:e=>{return{detail:(t=e).detail,touches:d(t.touches),targetTouches:d(t.targetTouches),changedTouches:d(t.changedTouches),ctrlKey:t.ctrlKey,shiftKey:t.shiftKey,altKey:t.altKey,metaKey:t.metaKey,type:t.type};var t}}),h(["gotpointercapture","lostpointercapture","pointercancel","pointerdown","pointerenter","pointerleave","pointermove","pointerout","pointerover","pointerup"],{createEventArgs:e=>{return{...u(t=e),pointerId:t.pointerId,width:t.width,height:t.height,pressure:t.pressure,tiltX:t.tiltX,tiltY:t.tiltY,pointerType:t.pointerType,isPrimary:t.isPrimary};var t}}),h(["wheel","mousewheel"],{createEventArgs:e=>{return{...u(t=e),deltaX:t.deltaX,deltaY:t.deltaY,deltaZ:t.deltaZ,deltaMode:t.deltaMode};var t}}),h(["cancel","close","toggle"],{createEventArgs:()=>({})});const p=["date","datetime-local","month","time","week"],f=new Map;let g,m,v=0;const y={async add(e,t,n){if(!n)throw new Error("initialParameters must be an object, even if empty.");const o="__bl-dynamic-root:"+(++v).toString();f.set(o,e);const r=await S().invokeMethodAsync("AddRootComponent",t,o),i=new _(r,m[t]);return await i.setParameters(n),i}};function w(e){const t=f.get(e);if(t)return f.delete(e),t}class b{invoke(e){return this._callback(e)}setCallback(t){this._selfJSObjectReference||(this._selfJSObjectReference=e.createJSObjectReference(this)),this._callback=t}getJSObjectReference(){return this._selfJSObjectReference}dispose(){this._selfJSObjectReference&&e.disposeJSObjectReference(this._selfJSObjectReference)}}class _{constructor(e,t){this._jsEventCallbackWrappers=new Map,this._componentId=e;for(const e of t)"eventcallback"===e.type&&this._jsEventCallbackWrappers.set(e.name.toLowerCase(),new b)}setParameters(e){const t={},n=Object.entries(e||{}),o=n.length;for(const[e,o]of n){const n=this._jsEventCallbackWrappers.get(e.toLowerCase());n&&o?(n.setCallback(o),t[e]=n.getJSObjectReference()):t[e]=o}return S().invokeMethodAsync("SetRootComponentParameters",this._componentId,o,t)}async dispose(){if(null!==this._componentId){await S().invokeMethodAsync("RemoveRootComponent",this._componentId),this._componentId=null;for(const e of this._jsEventCallbackWrappers.values())e.dispose()}}}function S(){if(!g)throw new Error("Dynamic root components have not been enabled in this application.");return g}const C=new Map,E=[],I=new Map;function k(t,n,o,r){var i,s;if(C.has(t))throw new Error(`Interop methods are already registered for renderer ${t}`);C.set(t,n),o&&r&&Object.keys(o).length>0&&function(t,n,o){if(g)throw new Error("Dynamic root components have already been enabled.");g=t,m=n;for(const[t,r]of Object.entries(o)){const o=e.findJSFunction(t,0);for(const e of r)o(e,n[e])}}(D(t),o,r),null===(s=null===(i=I.get(t))||void 0===i?void 0:i[0])||void 0===s||s.call(i),function(e){for(const t of E)t(e)}(t)}function T(e){return C.has(e)}function R(e,t,n){return A(e,t.eventHandlerId,(()=>D(e).invokeMethodAsync("DispatchEventAsync",t,n)))}function D(e){const t=C.get(e);if(!t)throw new Error(`No interop methods are registered for renderer ${e}`);return t}let A=(e,t,n)=>n();const x=B(["abort","blur","cancel","canplay","canplaythrough","change","close","cuechange","durationchange","emptied","ended","error","focus","load","loadeddata","loadedmetadata","loadend","loadstart","mouseenter","mouseleave","pointerenter","pointerleave","pause","play","playing","progress","ratechange","reset","scroll","seeked","seeking","stalled","submit","suspend","timeupdate","toggle","unload","volumechange","waiting","DOMNodeInsertedIntoDocument","DOMNodeRemovedFromDocument"]),N={submit:!0},P=B(["click","dblclick","mousedown","mousemove","mouseup"]);class M{constructor(e){this.browserRendererId=e,this.afterClickCallbacks=[];const t=++M.nextEventDelegatorId;this.eventsCollectionKey=`_blazorEvents_${t}`,this.eventInfoStore=new U(this.onGlobalEvent.bind(this))}setListener(e,t,n,o){const r=this.getEventHandlerInfosForElement(e,!0),i=r.getHandler(t);if(i)this.eventInfoStore.update(i.eventHandlerId,n);else{const i={element:e,eventName:t,eventHandlerId:n,renderingComponentId:o};this.eventInfoStore.add(i),r.setHandler(t,i)}}getHandler(e){return this.eventInfoStore.get(e)}removeListener(e){const t=this.eventInfoStore.remove(e);if(t){const e=t.element,n=this.getEventHandlerInfosForElement(e,!1);n&&n.removeHandler(t.eventName)}}notifyAfterClick(e){this.afterClickCallbacks.push(e),this.eventInfoStore.addGlobalListener("click")}setStopPropagation(e,t,n){this.getEventHandlerInfosForElement(e,!0).stopPropagation(t,n)}setPreventDefault(e,t,n){this.getEventHandlerInfosForElement(e,!0).preventDefault(t,n)}onGlobalEvent(e){if(!(e.target instanceof Element))return;this.dispatchGlobalEventToAllElements(e.type,e);const t=(n=e.type,s.get(n));var n;t&&t.forEach((t=>this.dispatchGlobalEventToAllElements(t,e))),"click"===e.type&&this.afterClickCallbacks.forEach((t=>t(e)))}dispatchGlobalEventToAllElements(e,t){const n=t.composedPath();let o=n.shift(),i=null,s=!1;const a=Object.prototype.hasOwnProperty.call(x,e);let l=!1;for(;o;){const u=o,p=this.getEventHandlerInfosForElement(u,!1);if(p){const n=p.getHandler(e);if(n&&(h=u,d=t.type,!((h instanceof HTMLButtonElement||h instanceof HTMLInputElement||h instanceof HTMLTextAreaElement||h instanceof HTMLSelectElement)&&Object.prototype.hasOwnProperty.call(P,d)&&h.disabled))){if(!s){const n=c(e);i=(null==n?void 0:n.createEventArgs)?n.createEventArgs(t):{},s=!0}Object.prototype.hasOwnProperty.call(N,t.type)&&t.preventDefault(),R(this.browserRendererId,{eventHandlerId:n.eventHandlerId,eventName:e,eventFieldInfo:r.fromEvent(n.renderingComponentId,t)},i)}p.stopPropagation(e)&&(l=!0),p.preventDefault(e)&&t.preventDefault()}o=a||l?void 0:n.shift()}var h,d}getEventHandlerInfosForElement(e,t){return Object.prototype.hasOwnProperty.call(e,this.eventsCollectionKey)?e[this.eventsCollectionKey]:t?e[this.eventsCollectionKey]=new L:null}}M.nextEventDelegatorId=0;class U{constructor(e){this.globalListener=e,this.infosByEventHandlerId={},this.countByEventName={},a.push(this.handleEventNameAliasAdded.bind(this))}add(e){if(this.infosByEventHandlerId[e.eventHandlerId])throw new Error(`Event ${e.eventHandlerId} is already tracked`);this.infosByEventHandlerId[e.eventHandlerId]=e,this.addGlobalListener(e.eventName)}get(e){return this.infosByEventHandlerId[e]}addGlobalListener(e){if(e=l(e),Object.prototype.hasOwnProperty.call(this.countByEventName,e))this.countByEventName[e]++;else{this.countByEventName[e]=1;const t=Object.prototype.hasOwnProperty.call(x,e);document.addEventListener(e,this.globalListener,t)}}update(e,t){if(Object.prototype.hasOwnProperty.call(this.infosByEventHandlerId,t))throw new Error(`Event ${t} is already tracked`);const n=this.infosByEventHandlerId[e];delete this.infosByEventHandlerId[e],n.eventHandlerId=t,this.infosByEventHandlerId[t]=n}remove(e){const t=this.infosByEventHandlerId[e];if(t){delete this.infosByEventHandlerId[e];const n=l(t.eventName);0==--this.countByEventName[n]&&(delete this.countByEventName[n],document.removeEventListener(n,this.globalListener))}return t}handleEventNameAliasAdded(e,t){if(Object.prototype.hasOwnProperty.call(this.countByEventName,e)){const n=this.countByEventName[e];delete this.countByEventName[e],document.removeEventListener(e,this.globalListener),this.addGlobalListener(t),this.countByEventName[t]+=n-1}}}class L{constructor(){this.handlers={},this.preventDefaultFlags=null,this.stopPropagationFlags=null}getHandler(e){return Object.prototype.hasOwnProperty.call(this.handlers,e)?this.handlers[e]:null}setHandler(e,t){this.handlers[e]=t}removeHandler(e){delete this.handlers[e]}preventDefault(e,t){return void 0!==t&&(this.preventDefaultFlags=this.preventDefaultFlags||{},this.preventDefaultFlags[e]=t),!!this.preventDefaultFlags&&this.preventDefaultFlags[e]}stopPropagation(e,t){return void 0!==t&&(this.stopPropagationFlags=this.stopPropagationFlags||{},this.stopPropagationFlags[e]=t),!!this.stopPropagationFlags&&this.stopPropagationFlags[e]}}function B(e){const t={};return e.forEach((e=>{t[e]=!0})),t}const O=Symbol(),F=Symbol(),$=Symbol();function H(e){const{start:t,end:n}=e,o=t[$];if(o){if(o!==e)throw new Error("The start component comment was already associated with another component descriptor.");return t}const r=t.parentNode;if(!r)throw new Error(`Comment not connected to the DOM ${t.textContent}`);const i=W(r,!0),s=Y(i);t[F]=i,t[$]=e;const a=W(t);if(n){const e=Y(a),o=Array.prototype.indexOf.call(s,a)+1;let r=null;for(;r!==n;){const n=s.splice(o,1)[0];if(!n)throw new Error("Could not find the end component comment in the parent logical node list");n[F]=t,e.push(n),r=n}}return a}function W(e,t){if(O in e)return e;const n=[];if(e.childNodes.length>0){if(!t)throw new Error("New logical elements must start empty, or allowExistingContents must be true");e.childNodes.forEach((t=>{const o=W(t,!0);o[F]=e,n.push(o)}))}return e[O]=n,e}function j(e){const t=Y(e);for(;t.length;)J(e,0)}function z(e,t){const n=document.createComment("!");return q(n,e,t),n}function q(e,t,n){const o=e;let r=e;if(Z(e)){const t=oe(o);if(t!==e){const n=new Range;n.setStartBefore(e),n.setEndAfter(t),r=n.extractContents()}}const i=K(o);if(i){const e=Y(i),t=Array.prototype.indexOf.call(e,o);e.splice(t,1),delete o[F]}const s=Y(t);if(n0;)J(n,0)}const o=n;o.parentNode.removeChild(o)}function K(e){return e[F]||null}function V(e,t){return Y(e)[t]}function X(e){return e[$]||null}function G(e){const t=te(e);return"http://www.w3.org/2000/svg"===t.namespaceURI&&"foreignObject"!==t.tagName}function Y(e){return e[O]}function Q(e){const t=Y(K(e));return t[Array.prototype.indexOf.call(t,e)+1]||null}function Z(e){return O in e}function ee(e,t){const n=Y(e);t.forEach((e=>{e.moveRangeStart=n[e.fromSiblingIndex],e.moveRangeEnd=oe(e.moveRangeStart)})),t.forEach((t=>{const o=document.createComment("marker");t.moveToBeforeMarker=o;const r=n[t.toSiblingIndex+1];r?r.parentNode.insertBefore(o,r):ne(o,e)})),t.forEach((e=>{const t=e.moveToBeforeMarker,n=t.parentNode,o=e.moveRangeStart,r=e.moveRangeEnd;let i=o;for(;i;){const e=i.nextSibling;if(n.insertBefore(i,t),i===r)break;i=e}n.removeChild(t)})),t.forEach((e=>{n[e.toSiblingIndex]=e.moveRangeStart}))}function te(e){if(e instanceof Element||e instanceof DocumentFragment)return e;if(e instanceof Comment)return e.parentNode;throw new Error("Not a valid logical element")}function ne(e,t){if(t instanceof Element||t instanceof DocumentFragment)t.appendChild(e);else{if(!(t instanceof Comment))throw new Error(`Cannot append node because the parent is not a valid logical element. Parent: ${t}`);{const n=Q(t);n?n.parentNode.insertBefore(e,n):ne(e,K(t))}}}function oe(e){if(e instanceof Element||e instanceof DocumentFragment)return e;const t=Q(e);if(t)return t.previousSibling;{const t=K(e);return t instanceof Element||t instanceof DocumentFragment?t.lastChild:oe(t)}}function re(e){return`_bl_${e}`}const ie="__internalId";e.attachReviver(((e,t)=>t&&"object"==typeof t&&Object.prototype.hasOwnProperty.call(t,ie)&&"string"==typeof t[ie]?function(e){const t=`[${re(e)}]`;return document.querySelector(t)}(t[ie]):t));const se="_blazorDeferredValue";function ae(e){e instanceof HTMLOptionElement?de(e):se in e&&he(e,e[se])}function ce(e){return"select-multiple"===e.type}function le(e,t){e.value=t||""}function he(e,t){e instanceof HTMLSelectElement?ce(e)?function(e,t){t||(t=[]);for(let n=0;n{Oe()&&Ne(e,(e=>{Xe(e,!0,!1)}))}))}getRootComponentCount(){return this.rootComponentIds.size}attachRootComponentToLogicalElement(e,t,n){if(we(t))throw new Error(`Root component '${e}' could not be attached because its target element is already associated with a root component`);n&&(t=z(t,Y(t).length)),ye(t,!0),this.attachComponentToElement(e,t),this.rootComponentIds.add(e),fe.add(t)}updateComponent(e,t,n,o){var r;const i=this.childComponentLocations[t];if(!i)throw new Error(`No element is currently associated with component ${t}`);fe.delete(i)&&(j(i),i instanceof Comment&&(i.textContent="!"));const s=null===(r=te(i))||void 0===r?void 0:r.getRootNode(),a=s&&s.activeElement;this.applyEdits(e,t,i,0,n,o),a instanceof HTMLElement&&s&&s.activeElement!==a&&a.focus()}disposeComponent(e){if(this.rootComponentIds.delete(e)){const t=this.childComponentLocations[e];ye(t,!1),!0===t[me]?fe.add(t):j(t)}delete this.childComponentLocations[e]}disposeEventHandler(e){this.eventDelegator.removeListener(e)}attachComponentToElement(e,t){this.childComponentLocations[e]=t}applyEdits(e,n,o,r,i,s){let a,c=0,l=r;const h=e.arrayBuilderSegmentReader,d=e.editReader,u=e.frameReader,p=h.values(i),f=h.offset(i),g=f+h.count(i);for(let i=f;i{const t=document.createElement("script");t.textContent=e.textContent,e.getAttributeNames().forEach((n=>{t.setAttribute(n,e.getAttribute(n))})),e.parentNode.replaceChild(t,e)})),ue.content));var s;let a=0;for(;i.firstChild;)q(i.firstChild,r,a++)}applyAttribute(e,t,n,o){const r=e.frameReader,i=r.attributeName(o),s=r.attributeEventHandlerId(o);if(s){const e=Se(i);return void this.eventDelegator.setListener(n,e,s,t)}const a=r.attributeValue(o);this.setOrRemoveAttributeOrProperty(n,i,a)}insertFrameRange(e,t,n,o,r,i,s){const a=o;for(let a=i;a{et(t,e)})},enableNavigationInterception:function(e){if(void 0!==Ee&&Ee!==e)throw new Error("Only one interactive runtime may enable navigation interception at a time.");Ee=e},setHasLocationChangingListeners:function(e,t){const n=je.get(e);if(!n)throw new Error(`Renderer with ID '${e}' is not listening for navigation events`);n.hasLocationChangingEventListeners=t},endLocationChanging:function(e,t){qe&&e===We&&(qe(t),qe=null)},navigateTo:function(e,t){Ve(e,t,!0)},refresh:function(e){!e&&Me()?Ue(location.href,!0):location.reload()},getBaseURI:()=>document.baseURI,getLocationHref:()=>location.href,scrollToElement:Ke};function Ke(e){const t=document.getElementById(e);return!!t&&(t.scrollIntoView(),!0)}function Ve(e,t,n=!1){const o=Le(e),r=ot();if(t.forceLoad||!Pe(o)||"serverside-fullpageload"===r)!function(e,t){if(location.href===e){const t=e+"?";history.replaceState(null,"",t),location.replace(e)}else t?location.replace(e):location.href=e}(e,t.replaceHistoryEntry);else if("clientside-router"===r)Xe(o,!1,t.replaceHistoryEntry,t.historyEntryState,n);else{if("serverside-enhanced"!==r)throw new Error(`Unsupported page load mechanism: ${r}`);Ue(o,t.replaceHistoryEntry)}}async function Xe(e,t,n,o=void 0,r=!1){if(Qe(),function(e){const t=e.indexOf("#");return t>-1&&location.href.replace(location.hash,"")===e.substring(0,t)}(e))return void function(e,t,n){Ge(e,t,n);const o=e.indexOf("#");o!==e.length-1&&Ke(e.substring(o+1))}(e,n,o);const i=nt();(r||!(null==i?void 0:i.hasLocationChangingEventListeners)||await Ze(e,o,t,i))&&(Re=!0,Ge(e,n,o),await et(t))}function Ge(e,t,n=void 0){t?history.replaceState({userState:n,_index:He},"",e):(He++,history.pushState({userState:n,_index:He},"",e))}function Ye(e){return new Promise((t=>{const n=ze;ze=()=>{ze=n,t()},history.go(e)}))}function Qe(){qe&&(qe(!1),qe=null)}function Ze(e,t,n,o){return new Promise((r=>{Qe(),We++,qe=r,o.locationChanging(We,e,t,n)}))}async function et(e,t){const n=null!=t?t:location.href;await Promise.all(Array.from(je,(async([t,o])=>{var r;T(t)&&await o.locationChanged(n,null===(r=history.state)||void 0===r?void 0:r.userState,e)})))}async function tt(e){var t,n;ze&&"serverside-enhanced"!==ot()&&await ze(e),He=null!==(n=null===(t=history.state)||void 0===t?void 0:t._index)&&void 0!==n?n:0}function nt(){const e=Fe();if(void 0!==e)return je.get(e)}function ot(){return Oe()?"clientside-router":Me()?"serverside-enhanced":window.Blazor._internal.isBlazorWeb?"serverside-fullpageload":"clientside-router"}const rt={focus:function(e,t){if(e instanceof HTMLElement)e.focus({preventScroll:t});else{if(!(e instanceof SVGElement))throw new Error("Unable to focus an invalid element.");if(!e.hasAttribute("tabindex"))throw new Error("Unable to focus an SVG element that does not have a tabindex.");e.focus({preventScroll:t})}},focusBySelector:function(e,t){const n=document.querySelector(e);n&&(n.hasAttribute("tabindex")||(n.tabIndex=-1),n.focus({preventScroll:!0}))}},it={init:function(e,t,n,o=50){const r=at(t);(r||document.documentElement).style.overflowAnchor="none";const i=document.createRange();u(n.parentElement)&&(t.style.display="table-row",n.style.display="table-row");const s=new IntersectionObserver((function(o){o.forEach((o=>{var r;if(!o.isIntersecting)return;i.setStartAfter(t),i.setEndBefore(n);const s=i.getBoundingClientRect().height,a=null===(r=o.rootBounds)||void 0===r?void 0:r.height;o.target===t?e.invokeMethodAsync("OnSpacerBeforeVisible",o.intersectionRect.top-o.boundingClientRect.top,s,a):o.target===n&&n.offsetHeight>0&&e.invokeMethodAsync("OnSpacerAfterVisible",o.boundingClientRect.bottom-o.intersectionRect.bottom,s,a)}))}),{root:r,rootMargin:`${o}px`});s.observe(t),s.observe(n);const a=d(t),c=d(n),{observersByDotNetObjectId:l,id:h}=ct(e);function d(e){const t={attributes:!0},n=new MutationObserver(((n,o)=>{u(e.parentElement)&&(o.disconnect(),e.style.display="table-row",o.observe(e,t)),s.unobserve(e),s.observe(e)}));return n.observe(e,t),n}function u(e){return null!==e&&(e instanceof HTMLTableElement&&""===e.style.display||"table"===e.style.display||e instanceof HTMLTableSectionElement&&""===e.style.display||"table-row-group"===e.style.display)}l[h]={intersectionObserver:s,mutationObserverBefore:a,mutationObserverAfter:c}},dispose:function(e){const{observersByDotNetObjectId:t,id:n}=ct(e),o=t[n];o&&(o.intersectionObserver.disconnect(),o.mutationObserverBefore.disconnect(),o.mutationObserverAfter.disconnect(),e.dispose(),delete t[n])}},st=Symbol();function at(e){return e&&e!==document.body&&e!==document.documentElement?"visible"!==getComputedStyle(e).overflowY?e:at(e.parentElement):null}function ct(e){var t;const n=e._callDispatcher,o=e._id;return null!==(t=n[st])&&void 0!==t||(n[st]={}),{observersByDotNetObjectId:n[st],id:o}}const lt={getAndRemoveExistingTitle:function(){var e;const t=document.head?document.head.getElementsByTagName("title"):[];if(0===t.length)return null;let n=null;for(let o=t.length-1;o>=0;o--){const r=t[o],i=r.previousSibling;i instanceof Comment&&null!==K(i)||(null===n&&(n=r.textContent),null===(e=r.parentNode)||void 0===e||e.removeChild(r))}return n}},ht={init:function(e,t){t._blazorInputFileNextFileId=0,t.addEventListener("click",(function(){t.value=""})),t.addEventListener("change",(function(){t._blazorFilesById={};const n=Array.prototype.map.call(t.files,(function(e){const n={id:++t._blazorInputFileNextFileId,lastModified:new Date(e.lastModified).toISOString(),name:e.name,size:e.size,contentType:e.type,readPromise:void 0,arrayBuffer:void 0,blob:e};return t._blazorFilesById[n.id]=n,n}));e.invokeMethodAsync("NotifyChange",n)}))},toImageFile:async function(e,t,n,o,r){const i=dt(e,t),s=await new Promise((function(e){const t=new Image;t.onload=function(){URL.revokeObjectURL(t.src),e(t)},t.onerror=function(){t.onerror=null,URL.revokeObjectURL(t.src)},t.src=URL.createObjectURL(i.blob)})),a=await new Promise((function(e){var t;const i=Math.min(1,o/s.width),a=Math.min(1,r/s.height),c=Math.min(i,a),l=document.createElement("canvas");l.width=Math.round(s.width*c),l.height=Math.round(s.height*c),null===(t=l.getContext("2d"))||void 0===t||t.drawImage(s,0,0,l.width,l.height),l.toBlob(e,n)})),c={id:++e._blazorInputFileNextFileId,lastModified:i.lastModified,name:i.name,size:(null==a?void 0:a.size)||0,contentType:n,blob:a||i.blob};return e._blazorFilesById[c.id]=c,c},readFileData:async function(e,t){return dt(e,t).blob}};function dt(e,t){const n=e._blazorFilesById[t];if(!n)throw new Error(`There is no file with ID ${t}. The file list may have changed. See https://aka.ms/aspnet/blazor-input-file-multiple-selections.`);return n}const ut=new Set,pt={enableNavigationPrompt:function(e){0===ut.size&&window.addEventListener("beforeunload",ft),ut.add(e)},disableNavigationPrompt:function(e){ut.delete(e),0===ut.size&&window.removeEventListener("beforeunload",ft)}};function ft(e){e.preventDefault(),e.returnValue=!0}async function gt(e,t,n){return e instanceof Blob?await async function(e,t,n){const o=e.slice(t,t+n),r=await o.arrayBuffer();return new Uint8Array(r)}(e,t,n):function(e,t,n){return new Uint8Array(e.buffer,e.byteOffset+t,n)}(e,t,n)}const mt=new Map,vt={navigateTo:function(e,t,n=!1){Ve(e,t instanceof Object?t:{forceLoad:t,replaceHistoryEntry:n})},registerCustomEventType:function(e,t){if(!t)throw new Error("The options parameter is required.");if(i.has(e))throw new Error(`The event '${e}' is already registered.`);if(t.browserEventName){const n=s.get(t.browserEventName);n?n.push(e):s.set(t.browserEventName,[e]),a.forEach((n=>n(e,t.browserEventName)))}i.set(e,t)},rootComponents:y,runtime:{},_internal:{navigationManager:Je,domWrapper:rt,Virtualize:it,PageTitle:lt,InputFile:ht,NavigationLock:pt,getJSDataStreamChunk:gt,attachWebRendererInterop:k}};var yt;window.Blazor=vt,function(e){e[e.Trace=0]="Trace",e[e.Debug=1]="Debug",e[e.Information=2]="Information",e[e.Warning=3]="Warning",e[e.Error=4]="Error",e[e.Critical=5]="Critical",e[e.None=6]="None"}(yt||(yt={}));class wt{log(e,t){}}wt.instance=new wt;class bt{constructor(e){this.minLevel=e}log(e,t){if(e>=this.minLevel){const n=`[${(new Date).toISOString()}] ${yt[e]}: ${t}`;switch(e){case yt.Critical:case yt.Error:console.error(n);break;case yt.Warning:console.warn(n);break;case yt.Information:console.info(n);break;default:console.log(n)}}}}function _t(e,t){switch(t){case"webassembly":return Tt(e,"webassembly");case"server":return function(e){return Tt(e,"server").sort(((e,t)=>e.sequence-t.sequence))}(e);case"auto":return Tt(e,"auto")}}const St=/^\s*Blazor-Server-Component-State:(?[a-zA-Z0-9+/=]+)$/,Ct=/^\s*Blazor-WebAssembly-Component-State:(?[a-zA-Z0-9+/=]+)$/,Et=/^\s*Blazor-Web-Initializers:(?[a-zA-Z0-9+/=]+)$/;function It(e){return kt(e,St)}function kt(e,t,n="state"){var o;if(e.nodeType===Node.COMMENT_NODE){const r=e.textContent||"",i=t.exec(r),s=i&&i.groups&&i.groups[n];return s&&(null===(o=e.parentNode)||void 0===o||o.removeChild(e)),s}if(!e.hasChildNodes())return;const r=e.childNodes;for(let e=0;e.*)$/);function Dt(e,t){const n=e.currentElement;var o,r,i;if(n&&n.nodeType===Node.COMMENT_NODE&&n.textContent){const s=Rt.exec(n.textContent),a=s&&s.groups&&s.groups.descriptor;if(!a)return;!function(e){if(e.parentNode instanceof Document)throw new Error("Root components cannot be marked as interactive. The element must be rendered statically so that scripts are not evaluated multiple times.")}(n);try{const s=function(e){const t=JSON.parse(e),{type:n}=t;if("server"!==n&&"webassembly"!==n&&"auto"!==n)throw new Error(`Invalid component type '${n}'.`);return t}(a),c=function(e,t,n){const{prerenderId:o}=e;if(o){for(;n.next()&&n.currentElement;){const e=n.currentElement;if(e.nodeType!==Node.COMMENT_NODE)continue;if(!e.textContent)continue;const t=Rt.exec(e.textContent),r=t&&t[1];if(r)return Pt(r,o),e}throw new Error(`Could not find an end component comment for '${t}'.`)}}(s,n,e);if(t!==s.type)return;switch(s.type){case"webassembly":return r=n,i=c,Nt(o=s),{...o,uniqueId:At++,start:r,end:i};case"server":return function(e,t,n){return xt(e),{...e,uniqueId:At++,start:t,end:n}}(s,n,c);case"auto":return function(e,t,n){return xt(e),Nt(e),{...e,uniqueId:At++,start:t,end:n}}(s,n,c)}}catch(e){throw new Error(`Found malformed component comment at ${n.textContent}`)}}}let At=0;function xt(e){const{descriptor:t,sequence:n}=e;if(!t)throw new Error("descriptor must be defined when using a descriptor.");if(void 0===n)throw new Error("sequence must be defined when using a descriptor.");if(!Number.isInteger(n))throw new Error(`Error parsing the sequence '${n}' for component '${JSON.stringify(e)}'`)}function Nt(e){const{assembly:t,typeName:n}=e;if(!t)throw new Error("assembly must be defined when using a descriptor.");if(!n)throw new Error("typeName must be defined when using a descriptor.");e.parameterDefinitions=e.parameterDefinitions&&atob(e.parameterDefinitions),e.parameterValues=e.parameterValues&&atob(e.parameterValues)}function Pt(e,t){const n=JSON.parse(e);if(1!==Object.keys(n).length)throw new Error(`Invalid end of component comment: '${e}'`);const o=n.prerenderId;if(!o)throw new Error(`End of component comment must have a value for the prerendered property: '${e}'`);if(o!==t)throw new Error(`End of component comment prerendered property must match the start comment prerender id: '${t}', '${o}'`)}class Mt{constructor(e){this.childNodes=e,this.currentIndex=-1,this.length=e.length}next(){return this.currentIndex++,this.currentIndex{n+=`0x${e<16?"0":""}${e.toString(16)} `})),n.substr(0,n.length-1)}(e)}'`)):"string"==typeof e&&(n=`String data of length ${e.length}`,t&&(n+=`. Content: '${e}'`)),n}function zt(e){return e&&"undefined"!=typeof ArrayBuffer&&(e instanceof ArrayBuffer||e.constructor&&"ArrayBuffer"===e.constructor.name)}async function qt(e,t,n,o,r,i){const s={},[a,c]=Vt();s[a]=c,e.log(Ot.Trace,`(${t} transport) sending data. ${jt(r,i.logMessageContent)}.`);const l=zt(r)?"arraybuffer":"text",h=await n.post(o,{content:r,headers:{...s,...i.headers},responseType:l,timeout:i.timeout,withCredentials:i.withCredentials});e.log(Ot.Trace,`(${t} transport) request complete. Response status: ${h.statusCode}.`)}class Jt{constructor(e,t){this._subject=e,this._observer=t}dispose(){const e=this._subject.observers.indexOf(this._observer);e>-1&&this._subject.observers.splice(e,1),0===this._subject.observers.length&&this._subject.cancelCallback&&this._subject.cancelCallback().catch((e=>{}))}}class Kt{constructor(e){this._minLevel=e,this.out=console}log(e,t){if(e>=this._minLevel){const n=`[${(new Date).toISOString()}] ${Ot[e]}: ${t}`;switch(e){case Ot.Critical:case Ot.Error:this.out.error(n);break;case Ot.Warning:this.out.warn(n);break;case Ot.Information:this.out.info(n);break;default:this.out.log(n)}}}}function Vt(){let e="X-SignalR-User-Agent";return Wt.isNode&&(e="User-Agent"),[e,Xt($t,Gt(),Wt.isNode?"NodeJS":"Browser",Yt())]}function Xt(e,t,n,o){let r="Microsoft SignalR/";const i=e.split(".");return r+=`${i[0]}.${i[1]}`,r+=` (${e}; `,r+=t&&""!==t?`${t}; `:"Unknown OS; ",r+=`${n}`,r+=o?`; ${o}`:"; Unknown Runtime Version",r+=")",r}function Gt(){if(!Wt.isNode)return"";switch(process.platform){case"win32":return"Windows NT";case"darwin":return"macOS";case"linux":return"Linux";default:return process.platform}}function Yt(){if(Wt.isNode)return process.versions.node}function Qt(e){return e.stack?e.stack:e.message?e.message:`${e}`}class Zt{writeHandshakeRequest(e){return Bt.write(JSON.stringify(e))}parseHandshakeResponse(e){let t,n;if(zt(e)){const o=new Uint8Array(e),r=o.indexOf(Bt.RecordSeparatorCode);if(-1===r)throw new Error("Message is incomplete.");const i=r+1;t=String.fromCharCode.apply(null,Array.prototype.slice.call(o.slice(0,i))),n=o.byteLength>i?o.slice(i).buffer:null}else{const o=e,r=o.indexOf(Bt.RecordSeparator);if(-1===r)throw new Error("Message is incomplete.");const i=r+1;t=o.substring(0,i),n=o.length>i?o.substring(i):null}const o=Bt.parse(t),r=JSON.parse(o[0]);if(r.type)throw new Error("Expected a handshake response from the server.");return[n,r]}}class en extends Error{constructor(e,t){const n=new.target.prototype;super(`${e}: Status code '${t}'`),this.statusCode=t,this.__proto__=n}}class tn extends Error{constructor(e="A timeout occurred."){const t=new.target.prototype;super(e),this.__proto__=t}}class nn extends Error{constructor(e="An abort occurred."){const t=new.target.prototype;super(e),this.__proto__=t}}class on extends Error{constructor(e,t){const n=new.target.prototype;super(e),this.transport=t,this.errorType="UnsupportedTransportError",this.__proto__=n}}class rn extends Error{constructor(e,t){const n=new.target.prototype;super(e),this.transport=t,this.errorType="DisabledTransportError",this.__proto__=n}}class sn extends Error{constructor(e,t){const n=new.target.prototype;super(e),this.transport=t,this.errorType="FailedToStartTransportError",this.__proto__=n}}class an extends Error{constructor(e){const t=new.target.prototype;super(e),this.errorType="FailedToNegotiateWithServerError",this.__proto__=t}}class cn extends Error{constructor(e,t){const n=new.target.prototype;super(e),this.innerErrors=t,this.__proto__=n}}var ln,hn;!function(e){e[e.Invocation=1]="Invocation",e[e.StreamItem=2]="StreamItem",e[e.Completion=3]="Completion",e[e.StreamInvocation=4]="StreamInvocation",e[e.CancelInvocation=5]="CancelInvocation",e[e.Ping=6]="Ping",e[e.Close=7]="Close",e[e.Ack=8]="Ack",e[e.Sequence=9]="Sequence"}(ln||(ln={}));class dn{constructor(){this.observers=[]}next(e){for(const t of this.observers)t.next(e)}error(e){for(const t of this.observers)t.error&&t.error(e)}complete(){for(const e of this.observers)e.complete&&e.complete()}subscribe(e){return this.observers.push(e),new Jt(this,e)}}class un{constructor(e,t,n){this._bufferSize=1e5,this._messages=[],this._totalMessageCount=0,this._waitForSequenceMessage=!1,this._nextReceivingSequenceId=1,this._latestReceivedSequenceId=0,this._bufferedByteCount=0,this._reconnectInProgress=!1,this._protocol=e,this._connection=t,this._bufferSize=n}async _send(e){const t=this._protocol.writeMessage(e);let n=Promise.resolve();if(this._isInvocationMessage(e)){this._totalMessageCount++;let e=()=>{},o=()=>{};zt(t)?this._bufferedByteCount+=t.byteLength:this._bufferedByteCount+=t.length,this._bufferedByteCount>=this._bufferSize&&(n=new Promise(((t,n)=>{e=t,o=n}))),this._messages.push(new pn(t,this._totalMessageCount,e,o))}try{this._reconnectInProgress||await this._connection.send(t)}catch{this._disconnected()}await n}_ack(e){let t=-1;for(let n=0;nthis._nextReceivingSequenceId?this._connection.stop(new Error("Sequence ID greater than amount of messages we've received.")):this._nextReceivingSequenceId=e.sequenceId}_disconnected(){this._reconnectInProgress=!0,this._waitForSequenceMessage=!0}async _resend(){const e=0!==this._messages.length?this._messages[0]._id:this._totalMessageCount+1;await this._connection.send(this._protocol.writeMessage({type:ln.Sequence,sequenceId:e}));const t=this._messages;for(const e of t)await this._connection.send(e._message);this._reconnectInProgress=!1}_dispose(e){null!=e||(e=new Error("Unable to reconnect to server."));for(const t of this._messages)t._rejector(e)}_isInvocationMessage(e){switch(e.type){case ln.Invocation:case ln.StreamItem:case ln.Completion:case ln.StreamInvocation:case ln.CancelInvocation:return!0;case ln.Close:case ln.Sequence:case ln.Ping:case ln.Ack:return!1}}_ackTimer(){void 0===this._ackTimerHandle&&(this._ackTimerHandle=setTimeout((async()=>{try{this._reconnectInProgress||await this._connection.send(this._protocol.writeMessage({type:ln.Ack,sequenceId:this._latestReceivedSequenceId}))}catch{}clearTimeout(this._ackTimerHandle),this._ackTimerHandle=void 0}),1e3))}}class pn{constructor(e,t,n,o){this._message=e,this._id=t,this._resolver=n,this._rejector=o}}!function(e){e.Disconnected="Disconnected",e.Connecting="Connecting",e.Connected="Connected",e.Disconnecting="Disconnecting",e.Reconnecting="Reconnecting"}(hn||(hn={}));class fn{static create(e,t,n,o,r,i,s){return new fn(e,t,n,o,r,i,s)}constructor(e,t,n,o,r,i,s){this._nextKeepAlive=0,this._freezeEventListener=()=>{this._logger.log(Ot.Warning,"The page is being frozen, this will likely lead to the connection being closed and messages being lost. For more information see the docs at https://learn.microsoft.com/aspnet/core/signalr/javascript-client#bsleep")},Ht.isRequired(e,"connection"),Ht.isRequired(t,"logger"),Ht.isRequired(n,"protocol"),this.serverTimeoutInMilliseconds=null!=r?r:3e4,this.keepAliveIntervalInMilliseconds=null!=i?i:15e3,this._statefulReconnectBufferSize=null!=s?s:1e5,this._logger=t,this._protocol=n,this.connection=e,this._reconnectPolicy=o,this._handshakeProtocol=new Zt,this.connection.onreceive=e=>this._processIncomingData(e),this.connection.onclose=e=>this._connectionClosed(e),this._callbacks={},this._methods={},this._closedCallbacks=[],this._reconnectingCallbacks=[],this._reconnectedCallbacks=[],this._invocationId=0,this._receivedHandshakeResponse=!1,this._connectionState=hn.Disconnected,this._connectionStarted=!1,this._cachedPingMessage=this._protocol.writeMessage({type:ln.Ping})}get state(){return this._connectionState}get connectionId(){return this.connection&&this.connection.connectionId||null}get baseUrl(){return this.connection.baseUrl||""}set baseUrl(e){if(this._connectionState!==hn.Disconnected&&this._connectionState!==hn.Reconnecting)throw new Error("The HubConnection must be in the Disconnected or Reconnecting state to change the url.");if(!e)throw new Error("The HubConnection url must be a valid url.");this.connection.baseUrl=e}start(){return this._startPromise=this._startWithStateTransitions(),this._startPromise}async _startWithStateTransitions(){if(this._connectionState!==hn.Disconnected)return Promise.reject(new Error("Cannot start a HubConnection that is not in the 'Disconnected' state."));this._connectionState=hn.Connecting,this._logger.log(Ot.Debug,"Starting HubConnection.");try{await this._startInternal(),Wt.isBrowser&&window.document.addEventListener("freeze",this._freezeEventListener),this._connectionState=hn.Connected,this._connectionStarted=!0,this._logger.log(Ot.Debug,"HubConnection connected successfully.")}catch(e){return this._connectionState=hn.Disconnected,this._logger.log(Ot.Debug,`HubConnection failed to start successfully because of error '${e}'.`),Promise.reject(e)}}async _startInternal(){this._stopDuringStartError=void 0,this._receivedHandshakeResponse=!1;const e=new Promise(((e,t)=>{this._handshakeResolver=e,this._handshakeRejecter=t}));await this.connection.start(this._protocol.transferFormat);try{let t=this._protocol.version;this.connection.features.reconnect||(t=1);const n={protocol:this._protocol.name,version:t};if(this._logger.log(Ot.Debug,"Sending handshake request."),await this._sendMessage(this._handshakeProtocol.writeHandshakeRequest(n)),this._logger.log(Ot.Information,`Using HubProtocol '${this._protocol.name}'.`),this._cleanupTimeout(),this._resetTimeoutPeriod(),this._resetKeepAliveInterval(),await e,this._stopDuringStartError)throw this._stopDuringStartError;!!this.connection.features.reconnect&&(this._messageBuffer=new un(this._protocol,this.connection,this._statefulReconnectBufferSize),this.connection.features.disconnected=this._messageBuffer._disconnected.bind(this._messageBuffer),this.connection.features.resend=()=>{if(this._messageBuffer)return this._messageBuffer._resend()}),this.connection.features.inherentKeepAlive||await this._sendMessage(this._cachedPingMessage)}catch(e){throw this._logger.log(Ot.Debug,`Hub handshake failed with error '${e}' during start(). Stopping HubConnection.`),this._cleanupTimeout(),this._cleanupPingTimer(),await this.connection.stop(e),e}}async stop(){const e=this._startPromise;this.connection.features.reconnect=!1,this._stopPromise=this._stopInternal(),await this._stopPromise;try{await e}catch(e){}}_stopInternal(e){if(this._connectionState===hn.Disconnected)return this._logger.log(Ot.Debug,`Call to HubConnection.stop(${e}) ignored because it is already in the disconnected state.`),Promise.resolve();if(this._connectionState===hn.Disconnecting)return this._logger.log(Ot.Debug,`Call to HttpConnection.stop(${e}) ignored because the connection is already in the disconnecting state.`),this._stopPromise;const t=this._connectionState;return this._connectionState=hn.Disconnecting,this._logger.log(Ot.Debug,"Stopping HubConnection."),this._reconnectDelayHandle?(this._logger.log(Ot.Debug,"Connection stopped during reconnect delay. Done reconnecting."),clearTimeout(this._reconnectDelayHandle),this._reconnectDelayHandle=void 0,this._completeClose(),Promise.resolve()):(t===hn.Connected&&this._sendCloseMessage(),this._cleanupTimeout(),this._cleanupPingTimer(),this._stopDuringStartError=e||new nn("The connection was stopped before the hub handshake could complete."),this.connection.stop(e))}async _sendCloseMessage(){try{await this._sendWithProtocol(this._createCloseMessage())}catch{}}stream(e,...t){const[n,o]=this._replaceStreamingParams(t),r=this._createStreamInvocation(e,t,o);let i;const s=new dn;return s.cancelCallback=()=>{const e=this._createCancelInvocation(r.invocationId);return delete this._callbacks[r.invocationId],i.then((()=>this._sendWithProtocol(e)))},this._callbacks[r.invocationId]=(e,t)=>{t?s.error(t):e&&(e.type===ln.Completion?e.error?s.error(new Error(e.error)):s.complete():s.next(e.item))},i=this._sendWithProtocol(r).catch((e=>{s.error(e),delete this._callbacks[r.invocationId]})),this._launchStreams(n,i),s}_sendMessage(e){return this._resetKeepAliveInterval(),this.connection.send(e)}_sendWithProtocol(e){return this._messageBuffer?this._messageBuffer._send(e):this._sendMessage(this._protocol.writeMessage(e))}send(e,...t){const[n,o]=this._replaceStreamingParams(t),r=this._sendWithProtocol(this._createInvocation(e,t,!0,o));return this._launchStreams(n,r),r}invoke(e,...t){const[n,o]=this._replaceStreamingParams(t),r=this._createInvocation(e,t,!1,o);return new Promise(((e,t)=>{this._callbacks[r.invocationId]=(n,o)=>{o?t(o):n&&(n.type===ln.Completion?n.error?t(new Error(n.error)):e(n.result):t(new Error(`Unexpected message type: ${n.type}`)))};const o=this._sendWithProtocol(r).catch((e=>{t(e),delete this._callbacks[r.invocationId]}));this._launchStreams(n,o)}))}on(e,t){e&&t&&(e=e.toLowerCase(),this._methods[e]||(this._methods[e]=[]),-1===this._methods[e].indexOf(t)&&this._methods[e].push(t))}off(e,t){if(!e)return;e=e.toLowerCase();const n=this._methods[e];if(n)if(t){const o=n.indexOf(t);-1!==o&&(n.splice(o,1),0===n.length&&delete this._methods[e])}else delete this._methods[e]}onclose(e){e&&this._closedCallbacks.push(e)}onreconnecting(e){e&&this._reconnectingCallbacks.push(e)}onreconnected(e){e&&this._reconnectedCallbacks.push(e)}_processIncomingData(e){if(this._cleanupTimeout(),this._receivedHandshakeResponse||(e=this._processHandshakeResponse(e),this._receivedHandshakeResponse=!0),e){const t=this._protocol.parseMessages(e,this._logger);for(const e of t)if(!this._messageBuffer||this._messageBuffer._shouldProcessMessage(e))switch(e.type){case ln.Invocation:this._invokeClientMethod(e);break;case ln.StreamItem:case ln.Completion:{const t=this._callbacks[e.invocationId];if(t){e.type===ln.Completion&&delete this._callbacks[e.invocationId];try{t(e)}catch(e){this._logger.log(Ot.Error,`Stream callback threw error: ${Qt(e)}`)}}break}case ln.Ping:break;case ln.Close:{this._logger.log(Ot.Information,"Close message received from server.");const t=e.error?new Error("Server returned an error on close: "+e.error):void 0;!0===e.allowReconnect?this.connection.stop(t):this._stopPromise=this._stopInternal(t);break}case ln.Ack:this._messageBuffer&&this._messageBuffer._ack(e);break;case ln.Sequence:this._messageBuffer&&this._messageBuffer._resetSequence(e);break;default:this._logger.log(Ot.Warning,`Invalid message type: ${e.type}.`)}}this._resetTimeoutPeriod()}_processHandshakeResponse(e){let t,n;try{[n,t]=this._handshakeProtocol.parseHandshakeResponse(e)}catch(e){const t="Error parsing handshake response: "+e;this._logger.log(Ot.Error,t);const n=new Error(t);throw this._handshakeRejecter(n),n}if(t.error){const e="Server returned handshake error: "+t.error;this._logger.log(Ot.Error,e);const n=new Error(e);throw this._handshakeRejecter(n),n}return this._logger.log(Ot.Debug,"Server handshake complete."),this._handshakeResolver(),n}_resetKeepAliveInterval(){this.connection.features.inherentKeepAlive||(this._nextKeepAlive=(new Date).getTime()+this.keepAliveIntervalInMilliseconds,this._cleanupPingTimer())}_resetTimeoutPeriod(){if(!(this.connection.features&&this.connection.features.inherentKeepAlive||(this._timeoutHandle=setTimeout((()=>this.serverTimeout()),this.serverTimeoutInMilliseconds),void 0!==this._pingServerHandle))){let e=this._nextKeepAlive-(new Date).getTime();e<0&&(e=0),this._pingServerHandle=setTimeout((async()=>{if(this._connectionState===hn.Connected)try{await this._sendMessage(this._cachedPingMessage)}catch{this._cleanupPingTimer()}}),e)}}serverTimeout(){this.connection.stop(new Error("Server timeout elapsed without receiving a message from the server."))}async _invokeClientMethod(e){const t=e.target.toLowerCase(),n=this._methods[t];if(!n)return this._logger.log(Ot.Warning,`No client method with the name '${t}' found.`),void(e.invocationId&&(this._logger.log(Ot.Warning,`No result given for '${t}' method and invocation ID '${e.invocationId}'.`),await this._sendWithProtocol(this._createCompletionMessage(e.invocationId,"Client didn't provide a result.",null))));const o=n.slice(),r=!!e.invocationId;let i,s,a;for(const n of o)try{const o=i;i=await n.apply(this,e.arguments),r&&i&&o&&(this._logger.log(Ot.Error,`Multiple results provided for '${t}'. Sending error to server.`),a=this._createCompletionMessage(e.invocationId,"Client provided multiple results.",null)),s=void 0}catch(e){s=e,this._logger.log(Ot.Error,`A callback for the method '${t}' threw error '${e}'.`)}a?await this._sendWithProtocol(a):r?(s?a=this._createCompletionMessage(e.invocationId,`${s}`,null):void 0!==i?a=this._createCompletionMessage(e.invocationId,null,i):(this._logger.log(Ot.Warning,`No result given for '${t}' method and invocation ID '${e.invocationId}'.`),a=this._createCompletionMessage(e.invocationId,"Client didn't provide a result.",null)),await this._sendWithProtocol(a)):i&&this._logger.log(Ot.Error,`Result given for '${t}' method but server is not expecting a result.`)}_connectionClosed(e){this._logger.log(Ot.Debug,`HubConnection.connectionClosed(${e}) called while in state ${this._connectionState}.`),this._stopDuringStartError=this._stopDuringStartError||e||new nn("The underlying connection was closed before the hub handshake could complete."),this._handshakeResolver&&this._handshakeResolver(),this._cancelCallbacksWithError(e||new Error("Invocation canceled due to the underlying connection being closed.")),this._cleanupTimeout(),this._cleanupPingTimer(),this._connectionState===hn.Disconnecting?this._completeClose(e):this._connectionState===hn.Connected&&this._reconnectPolicy?this._reconnect(e):this._connectionState===hn.Connected&&this._completeClose(e)}_completeClose(e){if(this._connectionStarted){this._connectionState=hn.Disconnected,this._connectionStarted=!1,this._messageBuffer&&(this._messageBuffer._dispose(null!=e?e:new Error("Connection closed.")),this._messageBuffer=void 0),Wt.isBrowser&&window.document.removeEventListener("freeze",this._freezeEventListener);try{this._closedCallbacks.forEach((t=>t.apply(this,[e])))}catch(t){this._logger.log(Ot.Error,`An onclose callback called with error '${e}' threw error '${t}'.`)}}}async _reconnect(e){const t=Date.now();let n=0,o=void 0!==e?e:new Error("Attempting to reconnect due to a unknown error."),r=this._getNextRetryDelay(n++,0,o);if(null===r)return this._logger.log(Ot.Debug,"Connection not reconnecting because the IRetryPolicy returned null on the first reconnect attempt."),void this._completeClose(e);if(this._connectionState=hn.Reconnecting,e?this._logger.log(Ot.Information,`Connection reconnecting because of error '${e}'.`):this._logger.log(Ot.Information,"Connection reconnecting."),0!==this._reconnectingCallbacks.length){try{this._reconnectingCallbacks.forEach((t=>t.apply(this,[e])))}catch(t){this._logger.log(Ot.Error,`An onreconnecting callback called with error '${e}' threw error '${t}'.`)}if(this._connectionState!==hn.Reconnecting)return void this._logger.log(Ot.Debug,"Connection left the reconnecting state in onreconnecting callback. Done reconnecting.")}for(;null!==r;){if(this._logger.log(Ot.Information,`Reconnect attempt number ${n} will start in ${r} ms.`),await new Promise((e=>{this._reconnectDelayHandle=setTimeout(e,r)})),this._reconnectDelayHandle=void 0,this._connectionState!==hn.Reconnecting)return void this._logger.log(Ot.Debug,"Connection left the reconnecting state during reconnect delay. Done reconnecting.");try{if(await this._startInternal(),this._connectionState=hn.Connected,this._logger.log(Ot.Information,"HubConnection reconnected successfully."),0!==this._reconnectedCallbacks.length)try{this._reconnectedCallbacks.forEach((e=>e.apply(this,[this.connection.connectionId])))}catch(e){this._logger.log(Ot.Error,`An onreconnected callback called with connectionId '${this.connection.connectionId}; threw error '${e}'.`)}return}catch(e){if(this._logger.log(Ot.Information,`Reconnect attempt failed because of error '${e}'.`),this._connectionState!==hn.Reconnecting)return this._logger.log(Ot.Debug,`Connection moved to the '${this._connectionState}' from the reconnecting state during reconnect attempt. Done reconnecting.`),void(this._connectionState===hn.Disconnecting&&this._completeClose());o=e instanceof Error?e:new Error(e.toString()),r=this._getNextRetryDelay(n++,Date.now()-t,o)}}this._logger.log(Ot.Information,`Reconnect retries have been exhausted after ${Date.now()-t} ms and ${n} failed attempts. Connection disconnecting.`),this._completeClose()}_getNextRetryDelay(e,t,n){try{return this._reconnectPolicy.nextRetryDelayInMilliseconds({elapsedMilliseconds:t,previousRetryCount:e,retryReason:n})}catch(n){return this._logger.log(Ot.Error,`IRetryPolicy.nextRetryDelayInMilliseconds(${e}, ${t}) threw error '${n}'.`),null}}_cancelCallbacksWithError(e){const t=this._callbacks;this._callbacks={},Object.keys(t).forEach((n=>{const o=t[n];try{o(null,e)}catch(t){this._logger.log(Ot.Error,`Stream 'error' callback called with '${e}' threw error: ${Qt(t)}`)}}))}_cleanupPingTimer(){this._pingServerHandle&&(clearTimeout(this._pingServerHandle),this._pingServerHandle=void 0)}_cleanupTimeout(){this._timeoutHandle&&clearTimeout(this._timeoutHandle)}_createInvocation(e,t,n,o){if(n)return 0!==o.length?{arguments:t,streamIds:o,target:e,type:ln.Invocation}:{arguments:t,target:e,type:ln.Invocation};{const n=this._invocationId;return this._invocationId++,0!==o.length?{arguments:t,invocationId:n.toString(),streamIds:o,target:e,type:ln.Invocation}:{arguments:t,invocationId:n.toString(),target:e,type:ln.Invocation}}}_launchStreams(e,t){if(0!==e.length){t||(t=Promise.resolve());for(const n in e)e[n].subscribe({complete:()=>{t=t.then((()=>this._sendWithProtocol(this._createCompletionMessage(n))))},error:e=>{let o;o=e instanceof Error?e.message:e&&e.toString?e.toString():"Unknown error",t=t.then((()=>this._sendWithProtocol(this._createCompletionMessage(n,o))))},next:e=>{t=t.then((()=>this._sendWithProtocol(this._createStreamItemMessage(n,e))))}})}}_replaceStreamingParams(e){const t=[],n=[];for(let o=0;o0)&&(t=!1,this._accessToken=await this._accessTokenFactory()),this._setAuthorizationHeader(e);const n=await this._innerClient.send(e);return t&&401===n.statusCode&&this._accessTokenFactory?(this._accessToken=await this._accessTokenFactory(),this._setAuthorizationHeader(e),await this._innerClient.send(e)):n}_setAuthorizationHeader(e){e.headers||(e.headers={}),this._accessToken?e.headers[vn.Authorization]=`Bearer ${this._accessToken}`:this._accessTokenFactory&&e.headers[vn.Authorization]&&delete e.headers[vn.Authorization]}getCookieString(e){return this._innerClient.getCookieString(e)}}class _n extends wn{constructor(e){super(),this._logger=e;const t={_fetchType:void 0,_jar:void 0};var o;o=t,"undefined"==typeof fetch&&(o._jar=new(n(628).CookieJar),"undefined"==typeof fetch?o._fetchType=n(200):o._fetchType=fetch,o._fetchType=n(203)(o._fetchType,o._jar),1)?(this._fetchType=t._fetchType,this._jar=t._jar):this._fetchType=fetch.bind(function(){if("undefined"!=typeof globalThis)return globalThis;if("undefined"!=typeof self)return self;if("undefined"!=typeof window)return window;if(void 0!==n.g)return n.g;throw new Error("could not find global")}()),this._abortControllerType=AbortController;const r={_abortControllerType:this._abortControllerType};(function(e){return"undefined"==typeof AbortController&&(e._abortControllerType=n(778),!0)})(r)&&(this._abortControllerType=r._abortControllerType)}async send(e){if(e.abortSignal&&e.abortSignal.aborted)throw new nn;if(!e.method)throw new Error("No method defined.");if(!e.url)throw new Error("No url defined.");const t=new this._abortControllerType;let n;e.abortSignal&&(e.abortSignal.onabort=()=>{t.abort(),n=new nn});let o,r=null;if(e.timeout){const o=e.timeout;r=setTimeout((()=>{t.abort(),this._logger.log(Ot.Warning,"Timeout from HTTP request."),n=new tn}),o)}""===e.content&&(e.content=void 0),e.content&&(e.headers=e.headers||{},zt(e.content)?e.headers["Content-Type"]="application/octet-stream":e.headers["Content-Type"]="text/plain;charset=UTF-8");try{o=await this._fetchType(e.url,{body:e.content,cache:"no-cache",credentials:!0===e.withCredentials?"include":"same-origin",headers:{"X-Requested-With":"XMLHttpRequest",...e.headers},method:e.method,mode:"cors",redirect:"follow",signal:t.signal})}catch(e){if(n)throw n;throw this._logger.log(Ot.Warning,`Error from HTTP request. ${e}.`),e}finally{r&&clearTimeout(r),e.abortSignal&&(e.abortSignal.onabort=null)}if(!o.ok){const e=await Sn(o,"text");throw new en(e||o.statusText,o.status)}const i=Sn(o,e.responseType),s=await i;return new yn(o.status,o.statusText,s)}getCookieString(e){return""}}function Sn(e,t){let n;switch(t){case"arraybuffer":n=e.arrayBuffer();break;case"text":default:n=e.text();break;case"blob":case"document":case"json":throw new Error(`${t} is not supported.`)}return n}class Cn extends wn{constructor(e){super(),this._logger=e}send(e){return e.abortSignal&&e.abortSignal.aborted?Promise.reject(new nn):e.method?e.url?new Promise(((t,n)=>{const o=new XMLHttpRequest;o.open(e.method,e.url,!0),o.withCredentials=void 0===e.withCredentials||e.withCredentials,o.setRequestHeader("X-Requested-With","XMLHttpRequest"),""===e.content&&(e.content=void 0),e.content&&(zt(e.content)?o.setRequestHeader("Content-Type","application/octet-stream"):o.setRequestHeader("Content-Type","text/plain;charset=UTF-8"));const r=e.headers;r&&Object.keys(r).forEach((e=>{o.setRequestHeader(e,r[e])})),e.responseType&&(o.responseType=e.responseType),e.abortSignal&&(e.abortSignal.onabort=()=>{o.abort(),n(new nn)}),e.timeout&&(o.timeout=e.timeout),o.onload=()=>{e.abortSignal&&(e.abortSignal.onabort=null),o.status>=200&&o.status<300?t(new yn(o.status,o.statusText,o.response||o.responseText)):n(new en(o.response||o.responseText||o.statusText,o.status))},o.onerror=()=>{this._logger.log(Ot.Warning,`Error from HTTP request. ${o.status}: ${o.statusText}.`),n(new en(o.statusText,o.status))},o.ontimeout=()=>{this._logger.log(Ot.Warning,"Timeout from HTTP request."),n(new tn)},o.send(e.content)})):Promise.reject(new Error("No url defined.")):Promise.reject(new Error("No method defined."))}}class En extends wn{constructor(e){if(super(),"undefined"!=typeof fetch)this._httpClient=new _n(e);else{if("undefined"==typeof XMLHttpRequest)throw new Error("No usable HttpClient found.");this._httpClient=new Cn(e)}}send(e){return e.abortSignal&&e.abortSignal.aborted?Promise.reject(new nn):e.method?e.url?this._httpClient.send(e):Promise.reject(new Error("No url defined.")):Promise.reject(new Error("No method defined."))}getCookieString(e){return this._httpClient.getCookieString(e)}}var In,kn;!function(e){e[e.None=0]="None",e[e.WebSockets=1]="WebSockets",e[e.ServerSentEvents=2]="ServerSentEvents",e[e.LongPolling=4]="LongPolling"}(In||(In={})),function(e){e[e.Text=1]="Text",e[e.Binary=2]="Binary"}(kn||(kn={}));class Tn{constructor(){this._isAborted=!1,this.onabort=null}abort(){this._isAborted||(this._isAborted=!0,this.onabort&&this.onabort())}get signal(){return this}get aborted(){return this._isAborted}}class Rn{get pollAborted(){return this._pollAbort.aborted}constructor(e,t,n){this._httpClient=e,this._logger=t,this._pollAbort=new Tn,this._options=n,this._running=!1,this.onreceive=null,this.onclose=null}async connect(e,t){if(Ht.isRequired(e,"url"),Ht.isRequired(t,"transferFormat"),Ht.isIn(t,kn,"transferFormat"),this._url=e,this._logger.log(Ot.Trace,"(LongPolling transport) Connecting."),t===kn.Binary&&"undefined"!=typeof XMLHttpRequest&&"string"!=typeof(new XMLHttpRequest).responseType)throw new Error("Binary protocols over XmlHttpRequest not implementing advanced features are not supported.");const[n,o]=Vt(),r={[n]:o,...this._options.headers},i={abortSignal:this._pollAbort.signal,headers:r,timeout:1e5,withCredentials:this._options.withCredentials};t===kn.Binary&&(i.responseType="arraybuffer");const s=`${e}&_=${Date.now()}`;this._logger.log(Ot.Trace,`(LongPolling transport) polling: ${s}.`);const a=await this._httpClient.get(s,i);200!==a.statusCode?(this._logger.log(Ot.Error,`(LongPolling transport) Unexpected response code: ${a.statusCode}.`),this._closeError=new en(a.statusText||"",a.statusCode),this._running=!1):this._running=!0,this._receiving=this._poll(this._url,i)}async _poll(e,t){try{for(;this._running;)try{const n=`${e}&_=${Date.now()}`;this._logger.log(Ot.Trace,`(LongPolling transport) polling: ${n}.`);const o=await this._httpClient.get(n,t);204===o.statusCode?(this._logger.log(Ot.Information,"(LongPolling transport) Poll terminated by server."),this._running=!1):200!==o.statusCode?(this._logger.log(Ot.Error,`(LongPolling transport) Unexpected response code: ${o.statusCode}.`),this._closeError=new en(o.statusText||"",o.statusCode),this._running=!1):o.content?(this._logger.log(Ot.Trace,`(LongPolling transport) data received. ${jt(o.content,this._options.logMessageContent)}.`),this.onreceive&&this.onreceive(o.content)):this._logger.log(Ot.Trace,"(LongPolling transport) Poll timed out, reissuing.")}catch(e){this._running?e instanceof tn?this._logger.log(Ot.Trace,"(LongPolling transport) Poll timed out, reissuing."):(this._closeError=e,this._running=!1):this._logger.log(Ot.Trace,`(LongPolling transport) Poll errored after shutdown: ${e.message}`)}}finally{this._logger.log(Ot.Trace,"(LongPolling transport) Polling complete."),this.pollAborted||this._raiseOnClose()}}async send(e){return this._running?qt(this._logger,"LongPolling",this._httpClient,this._url,e,this._options):Promise.reject(new Error("Cannot send until the transport is connected"))}async stop(){this._logger.log(Ot.Trace,"(LongPolling transport) Stopping polling."),this._running=!1,this._pollAbort.abort();try{await this._receiving,this._logger.log(Ot.Trace,`(LongPolling transport) sending DELETE request to ${this._url}.`);const e={},[t,n]=Vt();e[t]=n;const o={headers:{...e,...this._options.headers},timeout:this._options.timeout,withCredentials:this._options.withCredentials};let r;try{await this._httpClient.delete(this._url,o)}catch(e){r=e}r?r instanceof en&&(404===r.statusCode?this._logger.log(Ot.Trace,"(LongPolling transport) A 404 response was returned from sending a DELETE request."):this._logger.log(Ot.Trace,`(LongPolling transport) Error sending a DELETE request: ${r}`)):this._logger.log(Ot.Trace,"(LongPolling transport) DELETE request accepted.")}finally{this._logger.log(Ot.Trace,"(LongPolling transport) Stop finished."),this._raiseOnClose()}}_raiseOnClose(){if(this.onclose){let e="(LongPolling transport) Firing onclose event.";this._closeError&&(e+=" Error: "+this._closeError),this._logger.log(Ot.Trace,e),this.onclose(this._closeError)}}}class Dn{constructor(e,t,n,o){this._httpClient=e,this._accessToken=t,this._logger=n,this._options=o,this.onreceive=null,this.onclose=null}async connect(e,t){return Ht.isRequired(e,"url"),Ht.isRequired(t,"transferFormat"),Ht.isIn(t,kn,"transferFormat"),this._logger.log(Ot.Trace,"(SSE transport) Connecting."),this._url=e,this._accessToken&&(e+=(e.indexOf("?")<0?"?":"&")+`access_token=${encodeURIComponent(this._accessToken)}`),new Promise(((n,o)=>{let r,i=!1;if(t===kn.Text){if(Wt.isBrowser||Wt.isWebWorker)r=new this._options.EventSource(e,{withCredentials:this._options.withCredentials});else{const t=this._httpClient.getCookieString(e),n={};n.Cookie=t;const[o,i]=Vt();n[o]=i,r=new this._options.EventSource(e,{withCredentials:this._options.withCredentials,headers:{...n,...this._options.headers}})}try{r.onmessage=e=>{if(this.onreceive)try{this._logger.log(Ot.Trace,`(SSE transport) data received. ${jt(e.data,this._options.logMessageContent)}.`),this.onreceive(e.data)}catch(e){return void this._close(e)}},r.onerror=e=>{i?this._close():o(new Error("EventSource failed to connect. The connection could not be found on the server, either the connection ID is not present on the server, or a proxy is refusing/buffering the connection. If you have multiple servers check that sticky sessions are enabled."))},r.onopen=()=>{this._logger.log(Ot.Information,`SSE connected to ${this._url}`),this._eventSource=r,i=!0,n()}}catch(e){return void o(e)}}else o(new Error("The Server-Sent Events transport only supports the 'Text' transfer format"))}))}async send(e){return this._eventSource?qt(this._logger,"SSE",this._httpClient,this._url,e,this._options):Promise.reject(new Error("Cannot send until the transport is connected"))}stop(){return this._close(),Promise.resolve()}_close(e){this._eventSource&&(this._eventSource.close(),this._eventSource=void 0,this.onclose&&this.onclose(e))}}class An{constructor(e,t,n,o,r,i){this._logger=n,this._accessTokenFactory=t,this._logMessageContent=o,this._webSocketConstructor=r,this._httpClient=e,this.onreceive=null,this.onclose=null,this._headers=i}async connect(e,t){let n;return Ht.isRequired(e,"url"),Ht.isRequired(t,"transferFormat"),Ht.isIn(t,kn,"transferFormat"),this._logger.log(Ot.Trace,"(WebSockets transport) Connecting."),this._accessTokenFactory&&(n=await this._accessTokenFactory()),new Promise(((o,r)=>{let i;e=e.replace(/^http/,"ws");const s=this._httpClient.getCookieString(e);let a=!1;if(Wt.isReactNative){const t={},[o,r]=Vt();t[o]=r,n&&(t[vn.Authorization]=`Bearer ${n}`),s&&(t[vn.Cookie]=s),i=new this._webSocketConstructor(e,void 0,{headers:{...t,...this._headers}})}else n&&(e+=(e.indexOf("?")<0?"?":"&")+`access_token=${encodeURIComponent(n)}`);i||(i=new this._webSocketConstructor(e)),t===kn.Binary&&(i.binaryType="arraybuffer"),i.onopen=t=>{this._logger.log(Ot.Information,`WebSocket connected to ${e}.`),this._webSocket=i,a=!0,o()},i.onerror=e=>{let t=null;t="undefined"!=typeof ErrorEvent&&e instanceof ErrorEvent?e.error:"There was an error with the transport",this._logger.log(Ot.Information,`(WebSockets transport) ${t}.`)},i.onmessage=e=>{if(this._logger.log(Ot.Trace,`(WebSockets transport) data received. ${jt(e.data,this._logMessageContent)}.`),this.onreceive)try{this.onreceive(e.data)}catch(e){return void this._close(e)}},i.onclose=e=>{if(a)this._close(e);else{let t=null;t="undefined"!=typeof ErrorEvent&&e instanceof ErrorEvent?e.error:"WebSocket failed to connect. The connection could not be found on the server, either the endpoint may not be a SignalR endpoint, the connection ID is not present on the server, or there is a proxy blocking WebSockets. If you have multiple servers check that sticky sessions are enabled.",r(new Error(t))}}}))}send(e){return this._webSocket&&this._webSocket.readyState===this._webSocketConstructor.OPEN?(this._logger.log(Ot.Trace,`(WebSockets transport) sending data. ${jt(e,this._logMessageContent)}.`),this._webSocket.send(e),Promise.resolve()):Promise.reject("WebSocket is not in the OPEN state")}stop(){return this._webSocket&&this._close(void 0),Promise.resolve()}_close(e){this._webSocket&&(this._webSocket.onclose=()=>{},this._webSocket.onmessage=()=>{},this._webSocket.onerror=()=>{},this._webSocket.close(),this._webSocket=void 0),this._logger.log(Ot.Trace,"(WebSockets transport) socket closed."),this.onclose&&(!this._isCloseEvent(e)||!1!==e.wasClean&&1e3===e.code?e instanceof Error?this.onclose(e):this.onclose():this.onclose(new Error(`WebSocket closed with status code: ${e.code} (${e.reason||"no reason given"}).`)))}_isCloseEvent(e){return e&&"boolean"==typeof e.wasClean&&"number"==typeof e.code}}class xn{constructor(e,t={}){if(this._stopPromiseResolver=()=>{},this.features={},this._negotiateVersion=1,Ht.isRequired(e,"url"),this._logger=function(e){return void 0===e?new Kt(Ot.Information):null===e?Ft.instance:void 0!==e.log?e:new Kt(e)}(t.logger),this.baseUrl=this._resolveUrl(e),(t=t||{}).logMessageContent=void 0!==t.logMessageContent&&t.logMessageContent,"boolean"!=typeof t.withCredentials&&void 0!==t.withCredentials)throw new Error("withCredentials option was not a 'boolean' or 'undefined' value");t.withCredentials=void 0===t.withCredentials||t.withCredentials,t.timeout=void 0===t.timeout?1e5:t.timeout,"undefined"==typeof WebSocket||t.WebSocket||(t.WebSocket=WebSocket),"undefined"==typeof EventSource||t.EventSource||(t.EventSource=EventSource),this._httpClient=new bn(t.httpClient||new En(this._logger),t.accessTokenFactory),this._connectionState="Disconnected",this._connectionStarted=!1,this._options=t,this.onreceive=null,this.onclose=null}async start(e){if(e=e||kn.Binary,Ht.isIn(e,kn,"transferFormat"),this._logger.log(Ot.Debug,`Starting connection with transfer format '${kn[e]}'.`),"Disconnected"!==this._connectionState)return Promise.reject(new Error("Cannot start an HttpConnection that is not in the 'Disconnected' state."));if(this._connectionState="Connecting",this._startInternalPromise=this._startInternal(e),await this._startInternalPromise,"Disconnecting"===this._connectionState){const e="Failed to start the HttpConnection before stop() was called.";return this._logger.log(Ot.Error,e),await this._stopPromise,Promise.reject(new nn(e))}if("Connected"!==this._connectionState){const e="HttpConnection.startInternal completed gracefully but didn't enter the connection into the connected state!";return this._logger.log(Ot.Error,e),Promise.reject(new nn(e))}this._connectionStarted=!0}send(e){return"Connected"!==this._connectionState?Promise.reject(new Error("Cannot send data if the connection is not in the 'Connected' State.")):(this._sendQueue||(this._sendQueue=new Nn(this.transport)),this._sendQueue.send(e))}async stop(e){return"Disconnected"===this._connectionState?(this._logger.log(Ot.Debug,`Call to HttpConnection.stop(${e}) ignored because the connection is already in the disconnected state.`),Promise.resolve()):"Disconnecting"===this._connectionState?(this._logger.log(Ot.Debug,`Call to HttpConnection.stop(${e}) ignored because the connection is already in the disconnecting state.`),this._stopPromise):(this._connectionState="Disconnecting",this._stopPromise=new Promise((e=>{this._stopPromiseResolver=e})),await this._stopInternal(e),void await this._stopPromise)}async _stopInternal(e){this._stopError=e;try{await this._startInternalPromise}catch(e){}if(this.transport){try{await this.transport.stop()}catch(e){this._logger.log(Ot.Error,`HttpConnection.transport.stop() threw error '${e}'.`),this._stopConnection()}this.transport=void 0}else this._logger.log(Ot.Debug,"HttpConnection.transport is undefined in HttpConnection.stop() because start() failed.")}async _startInternal(e){let t=this.baseUrl;this._accessTokenFactory=this._options.accessTokenFactory,this._httpClient._accessTokenFactory=this._accessTokenFactory;try{if(this._options.skipNegotiation){if(this._options.transport!==In.WebSockets)throw new Error("Negotiation can only be skipped when using the WebSocket transport directly.");this.transport=this._constructTransport(In.WebSockets),await this._startTransport(t,e)}else{let n=null,o=0;do{if(n=await this._getNegotiationResponse(t),"Disconnecting"===this._connectionState||"Disconnected"===this._connectionState)throw new nn("The connection was stopped during negotiation.");if(n.error)throw new Error(n.error);if(n.ProtocolVersion)throw new Error("Detected a connection attempt to an ASP.NET SignalR Server. This client only supports connecting to an ASP.NET Core SignalR Server. See https://aka.ms/signalr-core-differences for details.");if(n.url&&(t=n.url),n.accessToken){const e=n.accessToken;this._accessTokenFactory=()=>e,this._httpClient._accessToken=e,this._httpClient._accessTokenFactory=void 0}o++}while(n.url&&o<100);if(100===o&&n.url)throw new Error("Negotiate redirection limit exceeded.");await this._createTransport(t,this._options.transport,n,e)}this.transport instanceof Rn&&(this.features.inherentKeepAlive=!0),"Connecting"===this._connectionState&&(this._logger.log(Ot.Debug,"The HttpConnection connected successfully."),this._connectionState="Connected")}catch(e){return this._logger.log(Ot.Error,"Failed to start the connection: "+e),this._connectionState="Disconnected",this.transport=void 0,this._stopPromiseResolver(),Promise.reject(e)}}async _getNegotiationResponse(e){const t={},[n,o]=Vt();t[n]=o;const r=this._resolveNegotiateUrl(e);this._logger.log(Ot.Debug,`Sending negotiation request: ${r}.`);try{const e=await this._httpClient.post(r,{content:"",headers:{...t,...this._options.headers},timeout:this._options.timeout,withCredentials:this._options.withCredentials});if(200!==e.statusCode)return Promise.reject(new Error(`Unexpected status code returned from negotiate '${e.statusCode}'`));const n=JSON.parse(e.content);return(!n.negotiateVersion||n.negotiateVersion<1)&&(n.connectionToken=n.connectionId),n.useStatefulReconnect&&!0!==this._options._useStatefulReconnect?Promise.reject(new an("Client didn't negotiate Stateful Reconnect but the server did.")):n}catch(e){let t="Failed to complete negotiation with the server: "+e;return e instanceof en&&404===e.statusCode&&(t+=" Either this is not a SignalR endpoint or there is a proxy blocking the connection."),this._logger.log(Ot.Error,t),Promise.reject(new an(t))}}_createConnectUrl(e,t){return t?e+(-1===e.indexOf("?")?"?":"&")+`id=${t}`:e}async _createTransport(e,t,n,o){let r=this._createConnectUrl(e,n.connectionToken);if(this._isITransport(t))return this._logger.log(Ot.Debug,"Connection was provided an instance of ITransport, using that directly."),this.transport=t,await this._startTransport(r,o),void(this.connectionId=n.connectionId);const i=[],s=n.availableTransports||[];let a=n;for(const n of s){const s=this._resolveTransportOrError(n,t,o,!0===(null==a?void 0:a.useStatefulReconnect));if(s instanceof Error)i.push(`${n.transport} failed:`),i.push(s);else if(this._isITransport(s)){if(this.transport=s,!a){try{a=await this._getNegotiationResponse(e)}catch(e){return Promise.reject(e)}r=this._createConnectUrl(e,a.connectionToken)}try{return await this._startTransport(r,o),void(this.connectionId=a.connectionId)}catch(e){if(this._logger.log(Ot.Error,`Failed to start the transport '${n.transport}': ${e}`),a=void 0,i.push(new sn(`${n.transport} failed: ${e}`,In[n.transport])),"Connecting"!==this._connectionState){const e="Failed to select transport before stop() was called.";return this._logger.log(Ot.Debug,e),Promise.reject(new nn(e))}}}}return i.length>0?Promise.reject(new cn(`Unable to connect to the server with any of the available transports. ${i.join(" ")}`,i)):Promise.reject(new Error("None of the transports supported by the client are supported by the server."))}_constructTransport(e){switch(e){case In.WebSockets:if(!this._options.WebSocket)throw new Error("'WebSocket' is not supported in your environment.");return new An(this._httpClient,this._accessTokenFactory,this._logger,this._options.logMessageContent,this._options.WebSocket,this._options.headers||{});case In.ServerSentEvents:if(!this._options.EventSource)throw new Error("'EventSource' is not supported in your environment.");return new Dn(this._httpClient,this._httpClient._accessToken,this._logger,this._options);case In.LongPolling:return new Rn(this._httpClient,this._logger,this._options);default:throw new Error(`Unknown transport: ${e}.`)}}_startTransport(e,t){return this.transport.onreceive=this.onreceive,this.features.reconnect?this.transport.onclose=async n=>{let o=!1;if(this.features.reconnect){try{this.features.disconnected(),await this.transport.connect(e,t),await this.features.resend()}catch{o=!0}o&&this._stopConnection(n)}else this._stopConnection(n)}:this.transport.onclose=e=>this._stopConnection(e),this.transport.connect(e,t)}_resolveTransportOrError(e,t,n,o){const r=In[e.transport];if(null==r)return this._logger.log(Ot.Debug,`Skipping transport '${e.transport}' because it is not supported by this client.`),new Error(`Skipping transport '${e.transport}' because it is not supported by this client.`);if(!function(e,t){return!e||0!=(t&e)}(t,r))return this._logger.log(Ot.Debug,`Skipping transport '${In[r]}' because it was disabled by the client.`),new rn(`'${In[r]}' is disabled by the client.`,r);if(!(e.transferFormats.map((e=>kn[e])).indexOf(n)>=0))return this._logger.log(Ot.Debug,`Skipping transport '${In[r]}' because it does not support the requested transfer format '${kn[n]}'.`),new Error(`'${In[r]}' does not support ${kn[n]}.`);if(r===In.WebSockets&&!this._options.WebSocket||r===In.ServerSentEvents&&!this._options.EventSource)return this._logger.log(Ot.Debug,`Skipping transport '${In[r]}' because it is not supported in your environment.'`),new on(`'${In[r]}' is not supported in your environment.`,r);this._logger.log(Ot.Debug,`Selecting transport '${In[r]}'.`);try{return this.features.reconnect=r===In.WebSockets?o:void 0,this._constructTransport(r)}catch(e){return e}}_isITransport(e){return e&&"object"==typeof e&&"connect"in e}_stopConnection(e){if(this._logger.log(Ot.Debug,`HttpConnection.stopConnection(${e}) called while in state ${this._connectionState}.`),this.transport=void 0,e=this._stopError||e,this._stopError=void 0,"Disconnected"!==this._connectionState){if("Connecting"===this._connectionState)throw this._logger.log(Ot.Warning,`Call to HttpConnection.stopConnection(${e}) was ignored because the connection is still in the connecting state.`),new Error(`HttpConnection.stopConnection(${e}) was called while the connection is still in the connecting state.`);if("Disconnecting"===this._connectionState&&this._stopPromiseResolver(),e?this._logger.log(Ot.Error,`Connection disconnected with error '${e}'.`):this._logger.log(Ot.Information,"Connection disconnected."),this._sendQueue&&(this._sendQueue.stop().catch((e=>{this._logger.log(Ot.Error,`TransportSendQueue.stop() threw error '${e}'.`)})),this._sendQueue=void 0),this.connectionId=void 0,this._connectionState="Disconnected",this._connectionStarted){this._connectionStarted=!1;try{this.onclose&&this.onclose(e)}catch(t){this._logger.log(Ot.Error,`HttpConnection.onclose(${e}) threw error '${t}'.`)}}}else this._logger.log(Ot.Debug,`Call to HttpConnection.stopConnection(${e}) was ignored because the connection is already in the disconnected state.`)}_resolveUrl(e){if(0===e.lastIndexOf("https://",0)||0===e.lastIndexOf("http://",0))return e;if(!Wt.isBrowser)throw new Error(`Cannot resolve '${e}'.`);const t=window.document.createElement("a");return t.href=e,this._logger.log(Ot.Information,`Normalizing '${e}' to '${t.href}'.`),t.href}_resolveNegotiateUrl(e){const t=new URL(e);t.pathname.endsWith("/")?t.pathname+="negotiate":t.pathname+="/negotiate";const n=new URLSearchParams(t.searchParams);return n.has("negotiateVersion")||n.append("negotiateVersion",this._negotiateVersion.toString()),n.has("useStatefulReconnect")?"true"===n.get("useStatefulReconnect")&&(this._options._useStatefulReconnect=!0):!0===this._options._useStatefulReconnect&&n.append("useStatefulReconnect","true"),t.search=n.toString(),t.toString()}}class Nn{constructor(e){this._transport=e,this._buffer=[],this._executing=!0,this._sendBufferedData=new Pn,this._transportResult=new Pn,this._sendLoopPromise=this._sendLoop()}send(e){return this._bufferData(e),this._transportResult||(this._transportResult=new Pn),this._transportResult.promise}stop(){return this._executing=!1,this._sendBufferedData.resolve(),this._sendLoopPromise}_bufferData(e){if(this._buffer.length&&typeof this._buffer[0]!=typeof e)throw new Error(`Expected data to be of type ${typeof this._buffer} but was of type ${typeof e}`);this._buffer.push(e),this._sendBufferedData.resolve()}async _sendLoop(){for(;;){if(await this._sendBufferedData.promise,!this._executing){this._transportResult&&this._transportResult.reject("Connection stopped.");break}this._sendBufferedData=new Pn;const e=this._transportResult;this._transportResult=void 0;const t="string"==typeof this._buffer[0]?this._buffer.join(""):Nn._concatBuffers(this._buffer);this._buffer.length=0;try{await this._transport.send(t),e.resolve()}catch(t){e.reject(t)}}}static _concatBuffers(e){const t=e.map((e=>e.byteLength)).reduce(((e,t)=>e+t)),n=new Uint8Array(t);let o=0;for(const t of e)n.set(new Uint8Array(t),o),o+=t.byteLength;return n.buffer}}class Pn{constructor(){this.promise=new Promise(((e,t)=>[this._resolver,this._rejecter]=[e,t]))}resolve(){this._resolver()}reject(e){this._rejecter(e)}}class Mn{constructor(){this.name="json",this.version=2,this.transferFormat=kn.Text}parseMessages(e,t){if("string"!=typeof e)throw new Error("Invalid input for JSON hub protocol. Expected a string.");if(!e)return[];null===t&&(t=Ft.instance);const n=Bt.parse(e),o=[];for(const e of n){const n=JSON.parse(e);if("number"!=typeof n.type)throw new Error("Invalid payload.");switch(n.type){case ln.Invocation:this._isInvocationMessage(n);break;case ln.StreamItem:this._isStreamItemMessage(n);break;case ln.Completion:this._isCompletionMessage(n);break;case ln.Ping:case ln.Close:break;case ln.Ack:this._isAckMessage(n);break;case ln.Sequence:this._isSequenceMessage(n);break;default:t.log(Ot.Information,"Unknown message type '"+n.type+"' ignored.");continue}o.push(n)}return o}writeMessage(e){return Bt.write(JSON.stringify(e))}_isInvocationMessage(e){this._assertNotEmptyString(e.target,"Invalid payload for Invocation message."),void 0!==e.invocationId&&this._assertNotEmptyString(e.invocationId,"Invalid payload for Invocation message.")}_isStreamItemMessage(e){if(this._assertNotEmptyString(e.invocationId,"Invalid payload for StreamItem message."),void 0===e.item)throw new Error("Invalid payload for StreamItem message.")}_isCompletionMessage(e){if(e.result&&e.error)throw new Error("Invalid payload for Completion message.");!e.result&&e.error&&this._assertNotEmptyString(e.error,"Invalid payload for Completion message."),this._assertNotEmptyString(e.invocationId,"Invalid payload for Completion message.")}_isAckMessage(e){if("number"!=typeof e.sequenceId)throw new Error("Invalid SequenceId for Ack message.")}_isSequenceMessage(e){if("number"!=typeof e.sequenceId)throw new Error("Invalid SequenceId for Sequence message.")}_assertNotEmptyString(e,t){if("string"!=typeof e||""===e)throw new Error(t)}}const Un={trace:Ot.Trace,debug:Ot.Debug,info:Ot.Information,information:Ot.Information,warn:Ot.Warning,warning:Ot.Warning,error:Ot.Error,critical:Ot.Critical,none:Ot.None};class Ln{configureLogging(e){if(Ht.isRequired(e,"logging"),function(e){return void 0!==e.log}(e))this.logger=e;else if("string"==typeof e){const t=function(e){const t=Un[e.toLowerCase()];if(void 0!==t)return t;throw new Error(`Unknown log level: ${e}`)}(e);this.logger=new Kt(t)}else this.logger=new Kt(e);return this}withUrl(e,t){return Ht.isRequired(e,"url"),Ht.isNotEmpty(e,"url"),this.url=e,this.httpConnectionOptions="object"==typeof t?{...this.httpConnectionOptions,...t}:{...this.httpConnectionOptions,transport:t},this}withHubProtocol(e){return Ht.isRequired(e,"protocol"),this.protocol=e,this}withAutomaticReconnect(e){if(this.reconnectPolicy)throw new Error("A reconnectPolicy has already been set.");return e?Array.isArray(e)?this.reconnectPolicy=new mn(e):this.reconnectPolicy=e:this.reconnectPolicy=new mn,this}withServerTimeout(e){return Ht.isRequired(e,"milliseconds"),this._serverTimeoutInMilliseconds=e,this}withKeepAliveInterval(e){return Ht.isRequired(e,"milliseconds"),this._keepAliveIntervalInMilliseconds=e,this}withStatefulReconnect(e){return void 0===this.httpConnectionOptions&&(this.httpConnectionOptions={}),this.httpConnectionOptions._useStatefulReconnect=!0,this._statefulReconnectBufferSize=null==e?void 0:e.bufferSize,this}build(){const e=this.httpConnectionOptions||{};if(void 0===e.logger&&(e.logger=this.logger),!this.url)throw new Error("The 'HubConnectionBuilder.withUrl' method must be called before building the connection.");const t=new xn(this.url,e);return fn.create(t,this.logger||Ft.instance,this.protocol||new Mn,this.reconnectPolicy,this._serverTimeoutInMilliseconds,this._keepAliveIntervalInMilliseconds,this._statefulReconnectBufferSize)}}var Bn;!function(e){e[e.Default=0]="Default",e[e.Server=1]="Server",e[e.WebAssembly=2]="WebAssembly",e[e.WebView=3]="WebView"}(Bn||(Bn={}));var On,Fn,$n,Hn=4294967295;function Wn(e,t,n){var o=Math.floor(n/4294967296),r=n;e.setUint32(t,o),e.setUint32(t+4,r)}function jn(e,t){return 4294967296*e.getInt32(t)+e.getUint32(t+4)}var zn=("undefined"==typeof process||"never"!==(null===(On=null===process||void 0===process?void 0:process.env)||void 0===On?void 0:On.TEXT_ENCODING))&&"undefined"!=typeof TextEncoder&&"undefined"!=typeof TextDecoder;function qn(e){for(var t=e.length,n=0,o=0;o=55296&&r<=56319&&o65535&&(h-=65536,i.push(h>>>10&1023|55296),h=56320|1023&h),i.push(h)}else i.push(a);i.length>=4096&&(s+=String.fromCharCode.apply(String,i),i.length=0)}return i.length>0&&(s+=String.fromCharCode.apply(String,i)),s}var Gn,Yn=zn?new TextDecoder:null,Qn=zn?"undefined"!=typeof process&&"force"!==(null===($n=null===process||void 0===process?void 0:process.env)||void 0===$n?void 0:$n.TEXT_DECODER)?200:0:Hn,Zn=function(e,t){this.type=e,this.data=t},eo=(Gn=function(e,t){return Gn=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},Gn(e,t)},function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function n(){this.constructor=e}Gn(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}),to=function(e){function t(n){var o=e.call(this,n)||this,r=Object.create(t.prototype);return Object.setPrototypeOf(o,r),Object.defineProperty(o,"name",{configurable:!0,enumerable:!1,value:t.name}),o}return eo(t,e),t}(Error),no={type:-1,encode:function(e){var t,n,o,r;return e instanceof Date?function(e){var t,n=e.sec,o=e.nsec;if(n>=0&&o>=0&&n<=17179869183){if(0===o&&n<=4294967295){var r=new Uint8Array(4);return(t=new DataView(r.buffer)).setUint32(0,n),r}var i=n/4294967296,s=4294967295&n;return r=new Uint8Array(8),(t=new DataView(r.buffer)).setUint32(0,o<<2|3&i),t.setUint32(4,s),r}return r=new Uint8Array(12),(t=new DataView(r.buffer)).setUint32(0,o),Wn(t,4,n),r}((o=1e6*((t=e.getTime())-1e3*(n=Math.floor(t/1e3))),{sec:n+(r=Math.floor(o/1e9)),nsec:o-1e9*r})):null},decode:function(e){var t=function(e){var t=new DataView(e.buffer,e.byteOffset,e.byteLength);switch(e.byteLength){case 4:return{sec:t.getUint32(0),nsec:0};case 8:var n=t.getUint32(0);return{sec:4294967296*(3&n)+t.getUint32(4),nsec:n>>>2};case 12:return{sec:jn(t,4),nsec:t.getUint32(0)};default:throw new to("Unrecognized data size for timestamp (expected 4, 8, or 12): ".concat(e.length))}}(e);return new Date(1e3*t.sec+t.nsec/1e6)}},oo=function(){function e(){this.builtInEncoders=[],this.builtInDecoders=[],this.encoders=[],this.decoders=[],this.register(no)}return e.prototype.register=function(e){var t=e.type,n=e.encode,o=e.decode;if(t>=0)this.encoders[t]=n,this.decoders[t]=o;else{var r=1+t;this.builtInEncoders[r]=n,this.builtInDecoders[r]=o}},e.prototype.tryToEncode=function(e,t){for(var n=0;nthis.maxDepth)throw new Error("Too deep objects in depth ".concat(t));null==e?this.encodeNil():"boolean"==typeof e?this.encodeBoolean(e):"number"==typeof e?this.encodeNumber(e):"string"==typeof e?this.encodeString(e):this.encodeObject(e,t)},e.prototype.ensureBufferSizeToWrite=function(e){var t=this.pos+e;this.view.byteLength=0?e<128?this.writeU8(e):e<256?(this.writeU8(204),this.writeU8(e)):e<65536?(this.writeU8(205),this.writeU16(e)):e<4294967296?(this.writeU8(206),this.writeU32(e)):(this.writeU8(207),this.writeU64(e)):e>=-32?this.writeU8(224|e+32):e>=-128?(this.writeU8(208),this.writeI8(e)):e>=-32768?(this.writeU8(209),this.writeI16(e)):e>=-2147483648?(this.writeU8(210),this.writeI32(e)):(this.writeU8(211),this.writeI64(e)):this.forceFloat32?(this.writeU8(202),this.writeF32(e)):(this.writeU8(203),this.writeF64(e))},e.prototype.writeStringHeader=function(e){if(e<32)this.writeU8(160+e);else if(e<256)this.writeU8(217),this.writeU8(e);else if(e<65536)this.writeU8(218),this.writeU16(e);else{if(!(e<4294967296))throw new Error("Too long string: ".concat(e," bytes in UTF-8"));this.writeU8(219),this.writeU32(e)}},e.prototype.encodeString=function(e){if(e.length>Kn){var t=qn(e);this.ensureBufferSizeToWrite(5+t),this.writeStringHeader(t),Vn(e,this.bytes,this.pos),this.pos+=t}else t=qn(e),this.ensureBufferSizeToWrite(5+t),this.writeStringHeader(t),function(e,t,n){for(var o=e.length,r=n,i=0;i>6&31|192;else{if(s>=55296&&s<=56319&&i>12&15|224,t[r++]=s>>6&63|128):(t[r++]=s>>18&7|240,t[r++]=s>>12&63|128,t[r++]=s>>6&63|128)}t[r++]=63&s|128}else t[r++]=s}}(e,this.bytes,this.pos),this.pos+=t},e.prototype.encodeObject=function(e,t){var n=this.extensionCodec.tryToEncode(e,this.context);if(null!=n)this.encodeExtension(n);else if(Array.isArray(e))this.encodeArray(e,t);else if(ArrayBuffer.isView(e))this.encodeBinary(e);else{if("object"!=typeof e)throw new Error("Unrecognized object: ".concat(Object.prototype.toString.apply(e)));this.encodeMap(e,t)}},e.prototype.encodeBinary=function(e){var t=e.byteLength;if(t<256)this.writeU8(196),this.writeU8(t);else if(t<65536)this.writeU8(197),this.writeU16(t);else{if(!(t<4294967296))throw new Error("Too large binary: ".concat(t));this.writeU8(198),this.writeU32(t)}var n=ro(e);this.writeU8a(n)},e.prototype.encodeArray=function(e,t){var n=e.length;if(n<16)this.writeU8(144+n);else if(n<65536)this.writeU8(220),this.writeU16(n);else{if(!(n<4294967296))throw new Error("Too large array: ".concat(n));this.writeU8(221),this.writeU32(n)}for(var o=0,r=e;o0&&e<=this.maxKeyLength},e.prototype.find=function(e,t,n){e:for(var o=0,r=this.caches[n-1];o=this.maxLengthPerKey?n[Math.random()*n.length|0]=o:n.push(o)},e.prototype.decode=function(e,t,n){var o=this.find(e,t,n);if(null!=o)return this.hit++,o;this.miss++;var r=Xn(e,t,n),i=Uint8Array.prototype.slice.call(e,t,t+n);return this.store(i,r),r},e}(),co=function(e,t){var n,o,r,i,s={label:0,sent:function(){if(1&r[0])throw r[1];return r[1]},trys:[],ops:[]};return i={next:a(0),throw:a(1),return:a(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function a(i){return function(a){return function(i){if(n)throw new TypeError("Generator is already executing.");for(;s;)try{if(n=1,o&&(r=2&i[0]?o.return:i[0]?o.throw||((r=o.return)&&r.call(o),0):o.next)&&!(r=r.call(o,i[1])).done)return r;switch(o=0,r&&(i=[2&i[0],r.value]),i[0]){case 0:case 1:r=i;break;case 4:return s.label++,{value:i[1],done:!1};case 5:s.label++,o=i[1],i=[0];continue;case 7:i=s.ops.pop(),s.trys.pop();continue;default:if(!((r=(r=s.trys).length>0&&r[r.length-1])||6!==i[0]&&2!==i[0])){s=0;continue}if(3===i[0]&&(!r||i[1]>r[0]&&i[1]=e},e.prototype.createExtraByteError=function(e){var t=this.view,n=this.pos;return new RangeError("Extra ".concat(t.byteLength-n," of ").concat(t.byteLength," byte(s) found at buffer[").concat(e,"]"))},e.prototype.decode=function(e){this.reinitializeState(),this.setBuffer(e);var t=this.doDecodeSync();if(this.hasRemaining(1))throw this.createExtraByteError(this.pos);return t},e.prototype.decodeMulti=function(e){return co(this,(function(t){switch(t.label){case 0:this.reinitializeState(),this.setBuffer(e),t.label=1;case 1:return this.hasRemaining(1)?[4,this.doDecodeSync()]:[3,3];case 2:return t.sent(),[3,1];case 3:return[2]}}))},e.prototype.decodeAsync=function(e){var t,n,o,r,i,s,a;return i=this,void 0,a=function(){var i,s,a,c,l,h,d,u;return co(this,(function(p){switch(p.label){case 0:i=!1,p.label=1;case 1:p.trys.push([1,6,7,12]),t=lo(e),p.label=2;case 2:return[4,t.next()];case 3:if((n=p.sent()).done)return[3,5];if(a=n.value,i)throw this.createExtraByteError(this.totalPos);this.appendBuffer(a);try{s=this.doDecodeSync(),i=!0}catch(e){if(!(e instanceof fo))throw e}this.totalPos+=this.pos,p.label=4;case 4:return[3,2];case 5:return[3,12];case 6:return c=p.sent(),o={error:c},[3,12];case 7:return p.trys.push([7,,10,11]),n&&!n.done&&(r=t.return)?[4,r.call(t)]:[3,9];case 8:p.sent(),p.label=9;case 9:return[3,11];case 10:if(o)throw o.error;return[7];case 11:return[7];case 12:if(i){if(this.hasRemaining(1))throw this.createExtraByteError(this.totalPos);return[2,s]}throw h=(l=this).headByte,d=l.pos,u=l.totalPos,new RangeError("Insufficient data in parsing ".concat(so(h)," at ").concat(u," (").concat(d," in the current buffer)"))}}))},new((s=void 0)||(s=Promise))((function(e,t){function n(e){try{r(a.next(e))}catch(e){t(e)}}function o(e){try{r(a.throw(e))}catch(e){t(e)}}function r(t){var r;t.done?e(t.value):(r=t.value,r instanceof s?r:new s((function(e){e(r)}))).then(n,o)}r((a=a.apply(i,[])).next())}))},e.prototype.decodeArrayStream=function(e){return this.decodeMultiAsync(e,!0)},e.prototype.decodeStream=function(e){return this.decodeMultiAsync(e,!1)},e.prototype.decodeMultiAsync=function(e,t){return function(n,o,r){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var i,s=function(){var n,o,r,i,s,a,c,l,h;return co(this,(function(d){switch(d.label){case 0:n=t,o=-1,d.label=1;case 1:d.trys.push([1,13,14,19]),r=lo(e),d.label=2;case 2:return[4,ho(r.next())];case 3:if((i=d.sent()).done)return[3,12];if(s=i.value,t&&0===o)throw this.createExtraByteError(this.totalPos);this.appendBuffer(s),n&&(o=this.readArraySize(),n=!1,this.complete()),d.label=4;case 4:d.trys.push([4,9,,10]),d.label=5;case 5:return[4,ho(this.doDecodeSync())];case 6:return[4,d.sent()];case 7:return d.sent(),0==--o?[3,8]:[3,5];case 8:return[3,10];case 9:if(!((a=d.sent())instanceof fo))throw a;return[3,10];case 10:this.totalPos+=this.pos,d.label=11;case 11:return[3,2];case 12:return[3,19];case 13:return c=d.sent(),l={error:c},[3,19];case 14:return d.trys.push([14,,17,18]),i&&!i.done&&(h=r.return)?[4,ho(h.call(r))]:[3,16];case 15:d.sent(),d.label=16;case 16:return[3,18];case 17:if(l)throw l.error;return[7];case 18:return[7];case 19:return[2]}}))}.apply(n,o||[]),a=[];return i={},c("next"),c("throw"),c("return"),i[Symbol.asyncIterator]=function(){return this},i;function c(e){s[e]&&(i[e]=function(t){return new Promise((function(n,o){a.push([e,t,n,o])>1||l(e,t)}))})}function l(e,t){try{(n=s[e](t)).value instanceof ho?Promise.resolve(n.value.v).then(h,d):u(a[0][2],n)}catch(e){u(a[0][3],e)}var n}function h(e){l("next",e)}function d(e){l("throw",e)}function u(e,t){e(t),a.shift(),a.length&&l(a[0][0],a[0][1])}}(this,arguments)},e.prototype.doDecodeSync=function(){e:for(;;){var e=this.readHeadByte(),t=void 0;if(e>=224)t=e-256;else if(e<192)if(e<128)t=e;else if(e<144){if(0!=(o=e-128)){this.pushMapState(o),this.complete();continue e}t={}}else if(e<160){if(0!=(o=e-144)){this.pushArrayState(o),this.complete();continue e}t=[]}else{var n=e-160;t=this.decodeUtf8String(n,0)}else if(192===e)t=null;else if(194===e)t=!1;else if(195===e)t=!0;else if(202===e)t=this.readF32();else if(203===e)t=this.readF64();else if(204===e)t=this.readU8();else if(205===e)t=this.readU16();else if(206===e)t=this.readU32();else if(207===e)t=this.readU64();else if(208===e)t=this.readI8();else if(209===e)t=this.readI16();else if(210===e)t=this.readI32();else if(211===e)t=this.readI64();else if(217===e)n=this.lookU8(),t=this.decodeUtf8String(n,1);else if(218===e)n=this.lookU16(),t=this.decodeUtf8String(n,2);else if(219===e)n=this.lookU32(),t=this.decodeUtf8String(n,4);else if(220===e){if(0!==(o=this.readU16())){this.pushArrayState(o),this.complete();continue e}t=[]}else if(221===e){if(0!==(o=this.readU32())){this.pushArrayState(o),this.complete();continue e}t=[]}else if(222===e){if(0!==(o=this.readU16())){this.pushMapState(o),this.complete();continue e}t={}}else if(223===e){if(0!==(o=this.readU32())){this.pushMapState(o),this.complete();continue e}t={}}else if(196===e){var o=this.lookU8();t=this.decodeBinary(o,1)}else if(197===e)o=this.lookU16(),t=this.decodeBinary(o,2);else if(198===e)o=this.lookU32(),t=this.decodeBinary(o,4);else if(212===e)t=this.decodeExtension(1,0);else if(213===e)t=this.decodeExtension(2,0);else if(214===e)t=this.decodeExtension(4,0);else if(215===e)t=this.decodeExtension(8,0);else if(216===e)t=this.decodeExtension(16,0);else if(199===e)o=this.lookU8(),t=this.decodeExtension(o,1);else if(200===e)o=this.lookU16(),t=this.decodeExtension(o,2);else{if(201!==e)throw new to("Unrecognized type byte: ".concat(so(e)));o=this.lookU32(),t=this.decodeExtension(o,4)}this.complete();for(var r=this.stack;r.length>0;){var i=r[r.length-1];if(0===i.type){if(i.array[i.position]=t,i.position++,i.position!==i.size)continue e;r.pop(),t=i.array}else{if(1===i.type){if("string"!=(s=typeof t)&&"number"!==s)throw new to("The type of key must be string or number but "+typeof t);if("__proto__"===t)throw new to("The key __proto__ is not allowed");i.key=t,i.type=2;continue e}if(i.map[i.key]=t,i.readCount++,i.readCount!==i.size){i.key=null,i.type=1;continue e}r.pop(),t=i.map}}return t}var s},e.prototype.readHeadByte=function(){return-1===this.headByte&&(this.headByte=this.readU8()),this.headByte},e.prototype.complete=function(){this.headByte=-1},e.prototype.readArraySize=function(){var e=this.readHeadByte();switch(e){case 220:return this.readU16();case 221:return this.readU32();default:if(e<160)return e-144;throw new to("Unrecognized array type byte: ".concat(so(e)))}},e.prototype.pushMapState=function(e){if(e>this.maxMapLength)throw new to("Max length exceeded: map length (".concat(e,") > maxMapLengthLength (").concat(this.maxMapLength,")"));this.stack.push({type:1,size:e,key:null,readCount:0,map:{}})},e.prototype.pushArrayState=function(e){if(e>this.maxArrayLength)throw new to("Max length exceeded: array length (".concat(e,") > maxArrayLength (").concat(this.maxArrayLength,")"));this.stack.push({type:0,size:e,array:new Array(e),position:0})},e.prototype.decodeUtf8String=function(e,t){var n;if(e>this.maxStrLength)throw new to("Max length exceeded: UTF-8 byte length (".concat(e,") > maxStrLength (").concat(this.maxStrLength,")"));if(this.bytes.byteLengthQn?function(e,t,n){var o=e.subarray(t,t+n);return Yn.decode(o)}(this.bytes,r,e):Xn(this.bytes,r,e),this.pos+=t+e,o},e.prototype.stateIsMapKey=function(){return this.stack.length>0&&1===this.stack[this.stack.length-1].type},e.prototype.decodeBinary=function(e,t){if(e>this.maxBinLength)throw new to("Max length exceeded: bin length (".concat(e,") > maxBinLength (").concat(this.maxBinLength,")"));if(!this.hasRemaining(e+t))throw go;var n=this.pos+t,o=this.bytes.subarray(n,n+e);return this.pos+=t+e,o},e.prototype.decodeExtension=function(e,t){if(e>this.maxExtLength)throw new to("Max length exceeded: ext length (".concat(e,") > maxExtLength (").concat(this.maxExtLength,")"));var n=this.view.getInt8(this.pos+t),o=this.decodeBinary(e,t+1);return this.extensionCodec.decode(o,n,this.context)},e.prototype.lookU8=function(){return this.view.getUint8(this.pos)},e.prototype.lookU16=function(){return this.view.getUint16(this.pos)},e.prototype.lookU32=function(){return this.view.getUint32(this.pos)},e.prototype.readU8=function(){var e=this.view.getUint8(this.pos);return this.pos++,e},e.prototype.readI8=function(){var e=this.view.getInt8(this.pos);return this.pos++,e},e.prototype.readU16=function(){var e=this.view.getUint16(this.pos);return this.pos+=2,e},e.prototype.readI16=function(){var e=this.view.getInt16(this.pos);return this.pos+=2,e},e.prototype.readU32=function(){var e=this.view.getUint32(this.pos);return this.pos+=4,e},e.prototype.readI32=function(){var e=this.view.getInt32(this.pos);return this.pos+=4,e},e.prototype.readU64=function(){var e,t,n=(e=this.view,t=this.pos,4294967296*e.getUint32(t)+e.getUint32(t+4));return this.pos+=8,n},e.prototype.readI64=function(){var e=jn(this.view,this.pos);return this.pos+=8,e},e.prototype.readF32=function(){var e=this.view.getFloat32(this.pos);return this.pos+=4,e},e.prototype.readF64=function(){var e=this.view.getFloat64(this.pos);return this.pos+=8,e},e}();class yo{static write(e){let t=e.byteLength||e.length;const n=[];do{let e=127&t;t>>=7,t>0&&(e|=128),n.push(e)}while(t>0);t=e.byteLength||e.length;const o=new Uint8Array(n.length+t);return o.set(n,0),o.set(e,n.length),o.buffer}static parse(e){const t=[],n=new Uint8Array(e),o=[0,7,14,21,28];for(let r=0;r7)throw new Error("Messages bigger than 2GB are not supported.");if(!(n.byteLength>=r+s+a))throw new Error("Incomplete message.");t.push(n.slice?n.slice(r+s,r+s+a):n.subarray(r+s,r+s+a)),r=r+s+a}return t}}const wo=new Uint8Array([145,ln.Ping]);class bo{constructor(e){this.name="messagepack",this.version=2,this.transferFormat=kn.Binary,this._errorResult=1,this._voidResult=2,this._nonVoidResult=3,e=e||{},this._encoder=new io(e.extensionCodec,e.context,e.maxDepth,e.initialBufferSize,e.sortKeys,e.forceFloat32,e.ignoreUndefined,e.forceIntegerToFloat),this._decoder=new vo(e.extensionCodec,e.context,e.maxStrLength,e.maxBinLength,e.maxArrayLength,e.maxMapLength,e.maxExtLength)}parseMessages(e,t){if(!(n=e)||"undefined"==typeof ArrayBuffer||!(n instanceof ArrayBuffer||n.constructor&&"ArrayBuffer"===n.constructor.name))throw new Error("Invalid input for MessagePack hub protocol. Expected an ArrayBuffer.");var n;null===t&&(t=Ft.instance);const o=yo.parse(e),r=[];for(const e of o){const n=this._parseMessage(e,t);n&&r.push(n)}return r}writeMessage(e){switch(e.type){case ln.Invocation:return this._writeInvocation(e);case ln.StreamInvocation:return this._writeStreamInvocation(e);case ln.StreamItem:return this._writeStreamItem(e);case ln.Completion:return this._writeCompletion(e);case ln.Ping:return yo.write(wo);case ln.CancelInvocation:return this._writeCancelInvocation(e);case ln.Close:return this._writeClose();case ln.Ack:return this._writeAck(e);case ln.Sequence:return this._writeSequence(e);default:throw new Error("Invalid message type.")}}_parseMessage(e,t){if(0===e.length)throw new Error("Invalid payload.");const n=this._decoder.decode(e);if(0===n.length||!(n instanceof Array))throw new Error("Invalid payload.");const o=n[0];switch(o){case ln.Invocation:return this._createInvocationMessage(this._readHeaders(n),n);case ln.StreamItem:return this._createStreamItemMessage(this._readHeaders(n),n);case ln.Completion:return this._createCompletionMessage(this._readHeaders(n),n);case ln.Ping:return this._createPingMessage(n);case ln.Close:return this._createCloseMessage(n);case ln.Ack:return this._createAckMessage(n);case ln.Sequence:return this._createSequenceMessage(n);default:return t.log(Ot.Information,"Unknown message type '"+o+"' ignored."),null}}_createCloseMessage(e){if(e.length<2)throw new Error("Invalid payload for Close message.");return{allowReconnect:e.length>=3?e[2]:void 0,error:e[1],type:ln.Close}}_createPingMessage(e){if(e.length<1)throw new Error("Invalid payload for Ping message.");return{type:ln.Ping}}_createInvocationMessage(e,t){if(t.length<5)throw new Error("Invalid payload for Invocation message.");const n=t[2];return n?{arguments:t[4],headers:e,invocationId:n,streamIds:[],target:t[3],type:ln.Invocation}:{arguments:t[4],headers:e,streamIds:[],target:t[3],type:ln.Invocation}}_createStreamItemMessage(e,t){if(t.length<4)throw new Error("Invalid payload for StreamItem message.");return{headers:e,invocationId:t[2],item:t[3],type:ln.StreamItem}}_createCompletionMessage(e,t){if(t.length<4)throw new Error("Invalid payload for Completion message.");const n=t[3];if(n!==this._voidResult&&t.length<5)throw new Error("Invalid payload for Completion message.");let o,r;switch(n){case this._errorResult:o=t[4];break;case this._nonVoidResult:r=t[4]}return{error:o,headers:e,invocationId:t[2],result:r,type:ln.Completion}}_createAckMessage(e){if(e.length<1)throw new Error("Invalid payload for Ack message.");return{sequenceId:e[1],type:ln.Ack}}_createSequenceMessage(e){if(e.length<1)throw new Error("Invalid payload for Sequence message.");return{sequenceId:e[1],type:ln.Sequence}}_writeInvocation(e){let t;return t=e.streamIds?this._encoder.encode([ln.Invocation,e.headers||{},e.invocationId||null,e.target,e.arguments,e.streamIds]):this._encoder.encode([ln.Invocation,e.headers||{},e.invocationId||null,e.target,e.arguments]),yo.write(t.slice())}_writeStreamInvocation(e){let t;return t=e.streamIds?this._encoder.encode([ln.StreamInvocation,e.headers||{},e.invocationId,e.target,e.arguments,e.streamIds]):this._encoder.encode([ln.StreamInvocation,e.headers||{},e.invocationId,e.target,e.arguments]),yo.write(t.slice())}_writeStreamItem(e){const t=this._encoder.encode([ln.StreamItem,e.headers||{},e.invocationId,e.item]);return yo.write(t.slice())}_writeCompletion(e){const t=e.error?this._errorResult:void 0!==e.result?this._nonVoidResult:this._voidResult;let n;switch(t){case this._errorResult:n=this._encoder.encode([ln.Completion,e.headers||{},e.invocationId,t,e.error]);break;case this._voidResult:n=this._encoder.encode([ln.Completion,e.headers||{},e.invocationId,t]);break;case this._nonVoidResult:n=this._encoder.encode([ln.Completion,e.headers||{},e.invocationId,t,e.result])}return yo.write(n.slice())}_writeCancelInvocation(e){const t=this._encoder.encode([ln.CancelInvocation,e.headers||{},e.invocationId]);return yo.write(t.slice())}_writeClose(){const e=this._encoder.encode([ln.Close,null]);return yo.write(e.slice())}_writeAck(e){const t=this._encoder.encode([ln.Ack,e.sequenceId]);return yo.write(t.slice())}_writeSequence(e){const t=this._encoder.encode([ln.Sequence,e.sequenceId]);return yo.write(t.slice())}_readHeaders(e){const t=e[1];if("object"!=typeof t)throw new Error("Invalid headers.");return t}}const _o="function"==typeof TextDecoder?new TextDecoder("utf-8"):null,So=_o?_o.decode.bind(_o):function(e){let t=0;const n=e.length,o=[],r=[];for(;t65535&&(r-=65536,o.push(r>>>10&1023|55296),r=56320|1023&r),o.push(r)}o.length>1024&&(r.push(String.fromCharCode.apply(null,o)),o.length=0)}return r.push(String.fromCharCode.apply(null,o)),r.join("")},Co=Math.pow(2,32),Eo=Math.pow(2,21)-1;function Io(e,t){return e[t]|e[t+1]<<8|e[t+2]<<16|e[t+3]<<24}function ko(e,t){return e[t]+(e[t+1]<<8)+(e[t+2]<<16)+(e[t+3]<<24>>>0)}function To(e,t){const n=ko(e,t+4);if(n>Eo)throw new Error(`Cannot read uint64 with high order part ${n}, because the result would exceed Number.MAX_SAFE_INTEGER.`);return n*Co+ko(e,t)}class Ro{constructor(e){this.batchData=e;const t=new No(e);this.arrayRangeReader=new Po(e),this.arrayBuilderSegmentReader=new Mo(e),this.diffReader=new Do(e),this.editReader=new Ao(e,t),this.frameReader=new xo(e,t)}updatedComponents(){return Io(this.batchData,this.batchData.length-20)}referenceFrames(){return Io(this.batchData,this.batchData.length-16)}disposedComponentIds(){return Io(this.batchData,this.batchData.length-12)}disposedEventHandlerIds(){return Io(this.batchData,this.batchData.length-8)}updatedComponentsEntry(e,t){const n=e+4*t;return Io(this.batchData,n)}referenceFramesEntry(e,t){return e+20*t}disposedComponentIdsEntry(e,t){const n=e+4*t;return Io(this.batchData,n)}disposedEventHandlerIdsEntry(e,t){const n=e+8*t;return To(this.batchData,n)}}class Do{constructor(e){this.batchDataUint8=e}componentId(e){return Io(this.batchDataUint8,e)}edits(e){return e+4}editsEntry(e,t){return e+16*t}}class Ao{constructor(e,t){this.batchDataUint8=e,this.stringReader=t}editType(e){return Io(this.batchDataUint8,e)}siblingIndex(e){return Io(this.batchDataUint8,e+4)}newTreeIndex(e){return Io(this.batchDataUint8,e+8)}moveToSiblingIndex(e){return Io(this.batchDataUint8,e+8)}removedAttributeName(e){const t=Io(this.batchDataUint8,e+12);return this.stringReader.readString(t)}}class xo{constructor(e,t){this.batchDataUint8=e,this.stringReader=t}frameType(e){return Io(this.batchDataUint8,e)}subtreeLength(e){return Io(this.batchDataUint8,e+4)}elementReferenceCaptureId(e){const t=Io(this.batchDataUint8,e+4);return this.stringReader.readString(t)}componentId(e){return Io(this.batchDataUint8,e+8)}elementName(e){const t=Io(this.batchDataUint8,e+8);return this.stringReader.readString(t)}textContent(e){const t=Io(this.batchDataUint8,e+4);return this.stringReader.readString(t)}markupContent(e){const t=Io(this.batchDataUint8,e+4);return this.stringReader.readString(t)}attributeName(e){const t=Io(this.batchDataUint8,e+4);return this.stringReader.readString(t)}attributeValue(e){const t=Io(this.batchDataUint8,e+8);return this.stringReader.readString(t)}attributeEventHandlerId(e){return To(this.batchDataUint8,e+12)}}class No{constructor(e){this.batchDataUint8=e,this.stringTableStartIndex=Io(e,e.length-4)}readString(e){if(-1===e)return null;{const n=Io(this.batchDataUint8,this.stringTableStartIndex+4*e),o=function(e,t){let n=0,o=0;for(let r=0;r<4;r++){const i=e[t+r];if(n|=(127&i)<this.nextBatchId)return this.fatalError?(this.logger.log(yt.Debug,`Received a new batch ${e} but errored out on a previous batch ${this.nextBatchId-1}`),void await n.send("OnRenderCompleted",this.nextBatchId-1,this.fatalError.toString())):void this.logger.log(yt.Debug,`Waiting for batch ${this.nextBatchId}. Batch ${e} not processed.`);try{this.nextBatchId++,this.logger.log(yt.Debug,`Applying batch ${e}.`),xe(Bn.Server,new Ro(t)),await this.completeBatch(n,e)}catch(t){throw this.fatalError=t.toString(),this.logger.log(yt.Error,`There was an error applying batch ${e}.`),n.send("OnRenderCompleted",e,t.toString()),t}}getLastBatchid(){return this.nextBatchId-1}async completeBatch(e,t){try{await e.send("OnRenderCompleted",t,null)}catch{this.logger.log(yt.Warning,`Failed to deliver completion notification for render '${t}'.`)}}}let Lo=!1;function Bo(){const e=document.querySelector("#blazor-error-ui");e&&(e.style.display="block"),Lo||(Lo=!0,document.querySelectorAll("#blazor-error-ui .reload").forEach((e=>{e.onclick=function(e){location.reload(),e.preventDefault()}})),document.querySelectorAll("#blazor-error-ui .dismiss").forEach((e=>{e.onclick=function(e){const t=document.querySelector("#blazor-error-ui");t&&(t.style.display="none"),e.preventDefault()}})))}class Oo{constructor(t,n,o,r){this._firstUpdate=!0,this._renderingFailed=!1,this._disposed=!1,this._circuitId=void 0,this._applicationState=n,this._componentManager=t,this._options=o,this._logger=r,this._renderQueue=new Uo(this._logger),this._dispatcher=e.attachDispatcher(this)}start(){if(this.isDisposedOrDisposing())throw new Error("Cannot start a disposed circuit.");return this._startPromise||(this._startPromise=this.startCore()),this._startPromise}updateRootComponents(e){var t,n;return this._firstUpdate?(this._firstUpdate=!1,null===(t=this._connection)||void 0===t?void 0:t.send("UpdateRootComponents",e,this._applicationState)):null===(n=this._connection)||void 0===n?void 0:n.send("UpdateRootComponents",e,"")}async startCore(){if(this._connection=await this.startConnection(),this._connection.state!==hn.Connected)return!1;const e=JSON.stringify(this._componentManager.initialComponents.map((e=>Ut(e))));if(this._circuitId=await this._connection.invoke("StartCircuit",Je.getBaseURI(),Je.getLocationHref(),e,this._applicationState||""),!this._circuitId)return!1;for(const e of this._options.circuitHandlers)e.onCircuitOpened&&e.onCircuitOpened();return!0}async startConnection(){var e,t;const n=new bo;n.name="blazorpack";const o=(new Ln).withUrl("_blazor").withHubProtocol(n);this._options.configureSignalR(o);const r=o.build();r.on("JS.AttachComponent",((e,t)=>De(Bn.Server,this.resolveElement(t),e,!1))),r.on("JS.BeginInvokeJS",this._dispatcher.beginInvokeJSFromDotNet.bind(this._dispatcher)),r.on("JS.EndInvokeDotNet",this._dispatcher.endInvokeDotNetFromJS.bind(this._dispatcher)),r.on("JS.ReceiveByteArray",this._dispatcher.receiveByteArray.bind(this._dispatcher)),r.on("JS.BeginTransmitStream",(e=>{const t=new ReadableStream({start:t=>{r.stream("SendDotNetStreamToJS",e).subscribe({next:e=>t.enqueue(e),complete:()=>t.close(),error:e=>t.error(e)})}});this._dispatcher.supplyDotNetStream(e,t)})),r.on("JS.RenderBatch",(async(e,t)=>{var n,o;this._logger.log(Ot.Debug,`Received render batch with id ${e} and ${t.byteLength} bytes.`),await this._renderQueue.processBatch(e,t,this._connection),null===(o=(n=this._componentManager).onAfterRenderBatch)||void 0===o||o.call(n,Bn.Server)})),r.on("JS.EndUpdateRootComponents",(e=>{var t,n;null===(n=(t=this._componentManager).onAfterUpdateRootComponents)||void 0===n||n.call(t,e)})),r.on("JS.EndLocationChanging",vt._internal.navigationManager.endLocationChanging),r.onclose((e=>{this._interopMethodsForReconnection=function(e){const t=C.get(e);if(!t)throw new Error(`Interop methods are not registered for renderer ${e}`);return C.delete(e),t}(Bn.Server),this._disposed||this._renderingFailed||this._options.reconnectionHandler.onConnectionDown(this._options.reconnectionOptions,e)})),r.on("JS.Error",(e=>{this._renderingFailed=!0,this.unhandledError(e),Bo()}));try{await r.start()}catch(e){if(this.unhandledError(e),"FailedToNegotiateWithServerError"===e.errorType)throw e;Bo(),e.innerErrors&&(e.innerErrors.some((e=>"UnsupportedTransportError"===e.errorType&&e.transport===In.WebSockets))?this._logger.log(Ot.Error,"Unable to connect, please ensure you are using an updated browser that supports WebSockets."):e.innerErrors.some((e=>"FailedToStartTransportError"===e.errorType&&e.transport===In.WebSockets))?this._logger.log(Ot.Error,"Unable to connect, please ensure WebSockets are available. A VPN or proxy may be blocking the connection."):e.innerErrors.some((e=>"DisabledTransportError"===e.errorType&&e.transport===In.LongPolling))&&this._logger.log(Ot.Error,"Unable to initiate a SignalR connection to the server. This might be because the server is not configured to support WebSockets. For additional details, visit https://aka.ms/blazor-server-websockets-error."))}return(null===(t=null===(e=r.connection)||void 0===e?void 0:e.features)||void 0===t?void 0:t.inherentKeepAlive)&&this._logger.log(Ot.Warning,"Failed to connect via WebSockets, using the Long Polling fallback transport. This may be due to a VPN or proxy blocking the connection. To troubleshoot this, visit https://aka.ms/blazor-server-using-fallback-long-polling."),r}async disconnect(){var e;await(null===(e=this._connection)||void 0===e?void 0:e.stop())}async reconnect(){if(!this._circuitId)throw new Error("Circuit host not initialized.");return this._connection.state===hn.Connected||(this._connection=await this.startConnection(),this._interopMethodsForReconnection&&(k(Bn.Server,this._interopMethodsForReconnection),this._interopMethodsForReconnection=void 0),!!await this._connection.invoke("ConnectCircuit",this._circuitId)&&(this._options.reconnectionHandler.onConnectionUp(),!0))}beginInvokeDotNetFromJS(e,t,n,o,r){this.throwIfDispatchingWhenDisposed(),this._connection.send("BeginInvokeDotNetFromJS",e?e.toString():null,t,n,o||0,r)}endInvokeJSFromDotNet(e,t,n){this.throwIfDispatchingWhenDisposed(),this._connection.send("EndInvokeJSFromDotNet",e,t,n)}sendByteArray(e,t){this.throwIfDispatchingWhenDisposed(),this._connection.send("ReceiveByteArray",e,t)}throwIfDispatchingWhenDisposed(){if(this._disposed)throw new Error("The circuit associated with this dispatcher is no longer available.")}sendLocationChanged(e,t,n){return this._connection.send("OnLocationChanged",e,t,n)}sendLocationChanging(e,t,n,o){return this._connection.send("OnLocationChanging",e,t,n,o)}sendJsDataStream(e,t,n){return function(e,t,n,o){setTimeout((async()=>{let r=5,i=(new Date).valueOf();try{const s=t instanceof Blob?t.size:t.byteLength;let a=0,c=0;for(;a1)await e.send("ReceiveJSDataChunk",n,c,h,null);else{if(!await e.invoke("ReceiveJSDataChunk",n,c,h,null))break;const t=(new Date).valueOf(),o=t-i;i=t,r=Math.max(1,Math.round(500/Math.max(1,o)))}a+=l,c++}}catch(t){await e.send("ReceiveJSDataChunk",n,-1,null,t.toString())}}),0)}(this._connection,e,t,n)}resolveElement(e){const t=w(e);if(t)return W(t,!0);const n=Number.parseInt(e);if(!Number.isNaN(n))return H(this._componentManager.resolveRootComponent(n));throw new Error(`Invalid sequence number or identifier '${e}'.`)}getRootComponentManager(){return this._componentManager}unhandledError(e){this._logger.log(Ot.Error,e),this.disconnect()}getDisconnectFormData(){const e=new FormData,t=this._circuitId;return e.append("circuitId",t),e}didRenderingFail(){return this._renderingFailed}isDisposedOrDisposing(){return void 0!==this._disposePromise}sendDisconnectBeacon(){if(this._disposed)return;const e=this.getDisconnectFormData();this._disposed=navigator.sendBeacon("_blazor/disconnect",e)}dispose(){return this._disposePromise||(this._disposePromise=this.disposeCore()),this._disposePromise}async disposeCore(){var e;if(!this._startPromise)return void(this._disposed=!0);await this._startPromise,this._disposed=!0,null===(e=this._connection)||void 0===e||e.stop();const t=this.getDisconnectFormData();fetch("http://github.com/_blazor/disconnect",{method:"POST",body:t});for(const e of this._options.circuitHandlers)e.onCircuitClosed&&e.onCircuitClosed()}}function Fo(e){const t={...$o,...e};return e&&e.reconnectionOptions&&(t.reconnectionOptions={...$o.reconnectionOptions,...e.reconnectionOptions}),t}const $o={configureSignalR:e=>{},logLevel:yt.Warning,initializers:void 0,circuitHandlers:[],reconnectionOptions:{maxRetries:8,retryIntervalMilliseconds:2e4,dialogId:"components-reconnect-modal"}};class Ho{constructor(e,t,n,o){this.maxRetries=t,this.document=n,this.logger=o,this.modal=this.document.createElement("div"),this.modal.id=e,this.maxRetries=t,this.modal.style.cssText=["position: fixed","top: 0","right: 0","bottom: 0","left: 0","z-index: 1050","display: none","overflow: hidden","background-color: #fff","opacity: 0.8","text-align: center","font-weight: bold","transition: visibility 0s linear 500ms"].join(";"),this.message=this.document.createElement("h5"),this.message.style.cssText="margin-top: 20px",this.button=this.document.createElement("button"),this.button.style.cssText="margin:5px auto 5px",this.button.textContent="Retry";const r=this.document.createElement("a");r.addEventListener("click",(()=>location.reload())),r.textContent="reload",this.reloadParagraph=this.document.createElement("p"),this.reloadParagraph.textContent="Alternatively, ",this.reloadParagraph.appendChild(r),this.modal.appendChild(this.message),this.modal.appendChild(this.button),this.modal.appendChild(this.reloadParagraph),this.loader=this.getLoader(),this.message.after(this.loader),this.button.addEventListener("click",(async()=>{this.show();try{await vt.reconnect()||this.rejected()}catch(e){this.logger.log(yt.Error,e),this.failed()}}))}show(){this.document.contains(this.modal)||this.document.body.appendChild(this.modal),this.modal.style.display="block",this.loader.style.display="inline-block",this.button.style.display="none",this.reloadParagraph.style.display="none",this.message.textContent="Attempting to reconnect to the server...",this.modal.style.visibility="hidden",setTimeout((()=>{this.modal.style.visibility="visible"}),0)}update(e){this.message.textContent=`Attempting to reconnect to the server: ${e} of ${this.maxRetries}`}hide(){this.modal.style.display="none"}failed(){this.button.style.display="block",this.reloadParagraph.style.display="none",this.loader.style.display="none";const e=this.document.createTextNode("Reconnection failed. Try "),t=this.document.createElement("a");t.textContent="reloading",t.setAttribute("href",""),t.addEventListener("click",(()=>location.reload()));const n=this.document.createTextNode(" the page if you're unable to reconnect.");this.message.replaceChildren(e,t,n)}rejected(){this.button.style.display="none",this.reloadParagraph.style.display="none",this.loader.style.display="none";const e=this.document.createTextNode("Could not reconnect to the server. "),t=this.document.createElement("a");t.textContent="Reload",t.setAttribute("href",""),t.addEventListener("click",(()=>location.reload()));const n=this.document.createTextNode(" the page to restore functionality.");this.message.replaceChildren(e,t,n)}getLoader(){const e=this.document.createElement("div");return e.style.cssText=["border: 0.3em solid #f3f3f3","border-top: 0.3em solid #3498db","border-radius: 50%","width: 2em","height: 2em","display: inline-block"].join(";"),e.animate([{transform:"rotate(0deg)"},{transform:"rotate(360deg)"}],{duration:2e3,iterations:1/0}),e}}class Wo{constructor(e,t,n){this.dialog=e,this.maxRetries=t,this.document=n,this.document=n;const o=this.document.getElementById(Wo.MaxRetriesId);o&&(o.innerText=this.maxRetries.toString())}show(){this.removeClasses(),this.dialog.classList.add(Wo.ShowClassName)}update(e){const t=this.document.getElementById(Wo.CurrentAttemptId);t&&(t.innerText=e.toString())}hide(){this.removeClasses(),this.dialog.classList.add(Wo.HideClassName)}failed(){this.removeClasses(),this.dialog.classList.add(Wo.FailedClassName)}rejected(){this.removeClasses(),this.dialog.classList.add(Wo.RejectedClassName)}removeClasses(){this.dialog.classList.remove(Wo.ShowClassName,Wo.HideClassName,Wo.FailedClassName,Wo.RejectedClassName)}}Wo.ShowClassName="components-reconnect-show",Wo.HideClassName="components-reconnect-hide",Wo.FailedClassName="components-reconnect-failed",Wo.RejectedClassName="components-reconnect-rejected",Wo.MaxRetriesId="components-reconnect-max-retries",Wo.CurrentAttemptId="components-reconnect-current-attempt";class jo{constructor(e,t,n){this._currentReconnectionProcess=null,this._logger=e,this._reconnectionDisplay=t,this._reconnectCallback=n||vt.reconnect}onConnectionDown(e,t){if(!this._reconnectionDisplay){const t=document.getElementById(e.dialogId);this._reconnectionDisplay=t?new Wo(t,e.maxRetries,document):new Ho(e.dialogId,e.maxRetries,document,this._logger)}this._currentReconnectionProcess||(this._currentReconnectionProcess=new zo(e,this._logger,this._reconnectCallback,this._reconnectionDisplay))}onConnectionUp(){this._currentReconnectionProcess&&(this._currentReconnectionProcess.dispose(),this._currentReconnectionProcess=null)}}class zo{constructor(e,t,n,o){this.logger=t,this.reconnectCallback=n,this.isDisposed=!1,this.reconnectDisplay=o,this.reconnectDisplay.show(),this.attemptPeriodicReconnection(e)}dispose(){this.isDisposed=!0,this.reconnectDisplay.hide()}async attemptPeriodicReconnection(e){for(let t=0;tzo.MaximumFirstRetryInterval?zo.MaximumFirstRetryInterval:e.retryIntervalMilliseconds;if(await this.delay(n),this.isDisposed)break;try{return await this.reconnectCallback()?void 0:void this.reconnectDisplay.rejected()}catch(e){this.logger.log(yt.Error,e)}}this.reconnectDisplay.failed()}delay(e){return new Promise((t=>setTimeout(t,e)))}}zo.MaximumFirstRetryInterval=3e3;class qo{constructor(e=!0,t,n,o=0){this.singleRuntime=e,this.logger=t,this.webRendererId=o,this.afterStartedCallbacks=[],n&&this.afterStartedCallbacks.push(...n)}async importInitializersAsync(e,t){await Promise.all(e.map((e=>async function(e,n){const o=function(e){const t=document.baseURI;return t.endsWith("/")?`${t}${e}`:`${t}/${e}`}(n),r=await import(o);if(void 0!==r){if(e.singleRuntime){const{beforeStart:n,afterStarted:o,beforeWebAssemblyStart:s,afterWebAssemblyStarted:a,beforeServerStart:c,afterServerStarted:l}=r;let h=n;e.webRendererId===Bn.Server&&c&&(h=c),e.webRendererId===Bn.WebAssembly&&s&&(h=s);let d=o;return e.webRendererId===Bn.Server&&l&&(d=l),e.webRendererId===Bn.WebAssembly&&a&&(d=a),i(e,h,d,t)}return function(e,t,n){var r;const s=n[0],{beforeStart:a,afterStarted:c,beforeWebStart:l,afterWebStarted:h,beforeWebAssemblyStart:d,afterWebAssemblyStarted:u,beforeServerStart:p,afterServerStarted:f}=t,g=!(l||h||d||u||p||f||!a&&!c),m=g&&s.enableClassicInitializers;if(g&&!s.enableClassicInitializers)null===(r=e.logger)||void 0===r||r.log(yt.Warning,`Initializer '${o}' will be ignored because multiple runtimes are available. use 'before(web|webAssembly|server)Start' and 'after(web|webAssembly|server)Started?' instead.)`);else if(m)return i(e,a,c,n);if(function(e){e.webAssembly?e.webAssembly.initializers||(e.webAssembly.initializers={beforeStart:[],afterStarted:[]}):e.webAssembly={initializers:{beforeStart:[],afterStarted:[]}},e.circuit?e.circuit.initializers||(e.circuit.initializers={beforeStart:[],afterStarted:[]}):e.circuit={initializers:{beforeStart:[],afterStarted:[]}}}(s),d&&s.webAssembly.initializers.beforeStart.push(d),u&&s.webAssembly.initializers.afterStarted.push(u),p&&s.circuit.initializers.beforeStart.push(p),f&&s.circuit.initializers.afterStarted.push(f),h&&e.afterStartedCallbacks.push(h),l)return l(s)}(e,r,t)}function i(e,t,n,o){if(n&&e.afterStartedCallbacks.push(n),t)return t(...o)}}(this,e))))}async invokeAfterStartedCallbacks(e){const t=function(e){var t;return null===(t=I.get(e))||void 0===t?void 0:t[1]}(this.webRendererId);t&&await t,await Promise.all(this.afterStartedCallbacks.map((t=>t(e))))}}let Jo,Ko,Vo,Xo,Go,Yo,Qo,Zo;function er(e){if(Xo)throw new Error("Circuit options have already been configured.");if(Xo)throw new Error("WebAssembly options have already been configured.");Jo=async function(e){const t=await e;Xo=Fo(t)}(e)}function tr(e){if(void 0!==Yo)throw new Error("Blazor Server has already started.");return Yo=new Promise(nr.bind(null,e)),Yo}async function nr(e,t,n){await Jo;const o=await async function(e){if(e.initializers)return await Promise.all(e.initializers.beforeStart.map((t=>t(e)))),new qo(!1,void 0,e.initializers.afterStarted,Bn.Server);const t=await fetch("http://github.com/_blazor/initializers",{method:"GET",credentials:"include",cache:"no-cache"}),n=await t.json(),o=new qo(!0,void 0,void 0,Bn.Server);return await o.importInitializersAsync(n,[e]),o}(Xo);if(Ko=It(document)||"",Go=new bt(Xo.logLevel),Vo=new Oo(e,Ko,Xo,Go),Go.log(yt.Information,"Starting up Blazor server-side application."),vt.reconnect=async()=>!(Vo.didRenderingFail()||!await Vo.reconnect()&&(Go.log(yt.Information,"Reconnection attempt to the circuit was rejected by the server. This may indicate that the associated state is no longer available on the server."),1)),vt.defaultReconnectionHandler=new jo(Go),Xo.reconnectionHandler=Xo.reconnectionHandler||vt.defaultReconnectionHandler,vt._internal.navigationManager.listenForNavigationEvents(Bn.Server,((e,t,n)=>Vo.sendLocationChanged(e,t,n)),((e,t,n,o)=>Vo.sendLocationChanging(e,t,n,o))),vt._internal.forceCloseConnection=()=>Vo.disconnect(),vt._internal.sendJSDataStream=(e,t,n)=>Vo.sendJsDataStream(e,t,n),!await Vo.start())return Go.log(yt.Error,"Failed to start the circuit."),void t();const r=()=>{Vo.sendDisconnectBeacon()};vt.disconnect=r,window.addEventListener("unload",r,{capture:!1,once:!0}),Go.log(yt.Information,"Blazor server-side application started."),o.invokeAfterStartedCallbacks(vt),t()}async function or(){if(!Yo)throw new Error("Cannot start the circuit until Blazor Server has started.");return!(!Vo||Vo.isDisposedOrDisposing())||(Qo?await Qo:(await Yo,(!Vo||!Vo.didRenderingFail())&&(Vo&&Vo.isDisposedOrDisposing()&&(Ko=It(document)||"",Vo=new Oo(Vo.getRootComponentManager(),Ko,Xo,Go)),Qo=Vo.start(),async function(e){await e,Qo===e&&(Qo=void 0)}(Qo),Qo)))}function rr(e){if(Vo&&!Vo.isDisposedOrDisposing())return Vo.updateRootComponents(e);!async function(e){await Yo,await or()&&Vo.updateRootComponents(e)}(e)}function ir(e){return Zo=e,Zo}var sr,ar;const cr=navigator,lr=cr.userAgentData&&cr.userAgentData.brands,hr=lr&&lr.length>0?lr.some((e=>"Google Chrome"===e.brand||"Microsoft Edge"===e.brand||"Chromium"===e.brand)):window.chrome,dr=null!==(ar=null===(sr=cr.userAgentData)||void 0===sr?void 0:sr.platform)&&void 0!==ar?ar:navigator.platform;function ur(e){return 0!==e.debugLevel&&(hr||navigator.userAgent.includes("Firefox"))}let pr,fr,gr,mr,vr,yr,wr;const br=Math.pow(2,32),_r=Math.pow(2,21)-1;let Sr=null;function Cr(e){return fr.getI32(e)}const Er={load:function(e,t){return async function(e,t){const{dotnet:n}=await async function(e){if("undefined"==typeof WebAssembly||!WebAssembly.validate)throw new Error("This browser does not support WebAssembly.");let t="_framework/dotnet.js";if(e.loadBootResource){const n="dotnetjs",o=e.loadBootResource(n,"dotnet.js",t,"","js-module-dotnet");if("string"==typeof o)t=o;else if(o)throw new Error(`For a ${n} resource, custom loaders must supply a URI string.`)}const n=new URL(t,document.baseURI).toString();return await import(n)}(e),o=function(e,t){const n={maxParallelDownloads:1e6,enableDownloadRetry:!1,applicationEnvironment:e.environment},o={...window.Module||{},onConfigLoaded:async n=>{n.environmentVariables||(n.environmentVariables={}),"sharded"===n.globalizationMode&&(n.environmentVariables.__BLAZOR_SHARDED_ICU="1"),vt._internal.getApplicationEnvironment=()=>n.applicationEnvironment,null==t||t(n),wr=await async function(e,t){var n,o,r;if(e.initializers)return await Promise.all(e.initializers.beforeStart.map((t=>t(e)))),new qo(!1,void 0,e.initializers.afterStarted,Bn.WebAssembly);{const i=[e,null!==(o=null===(n=t.resources)||void 0===n?void 0:n.extensions)&&void 0!==o?o:{}],s=new qo(!0,void 0,void 0,Bn.WebAssembly),a=Object.keys((null===(r=null==t?void 0:t.resources)||void 0===r?void 0:r.libraryInitializers)||{});return await s.importInitializersAsync(a,i),s}}(e,n)},onDownloadResourceProgress:Ir,config:n,disableDotnet6Compatibility:!1,out:Tr,err:Rr};return o}(e,t);e.applicationCulture&&n.withApplicationCulture(e.applicationCulture),e.environment&&n.withApplicationEnvironment(e.environment),e.loadBootResource&&n.withResourceLoader(e.loadBootResource),n.withModuleConfig(o),e.configureRuntime&&e.configureRuntime(n),yr=await n.create()}(e,t)},start:function(){return async function(){if(!yr)throw new Error("The runtime must be loaded it gets configured.");const{MONO:t,BINDING:n,Module:o,setModuleImports:r,INTERNAL:i,getConfig:s,invokeLibraryInitializers:a}=yr;gr=o,pr=n,fr=t,vr=i,function(e){const t=dr.match(/^Mac/i)?"Cmd":"Alt";ur(e)&&console.info(`Debugging hotkey: Shift+${t}+D (when application has focus)`),document.addEventListener("keydown",(t=>{t.shiftKey&&(t.metaKey||t.altKey)&&"KeyD"===t.code&&(ur(e)?navigator.userAgent.includes("Firefox")?async function(){const e=await fetch(`_framework/debug?url=${encodeURIComponent(location.href)}&isFirefox=true`);200!==e.status&&console.warn(await e.text())}():hr?function(){const e=document.createElement("a");e.href=`_framework/debug?url=${encodeURIComponent(location.href)}`,e.target="_blank",e.rel="noopener noreferrer",e.click()}():console.error("Currently, only Microsoft Edge (80+), Google Chrome, or Chromium, are supported for debugging."):console.error("Cannot start debugging, because the application was not compiled with debugging enabled."))}))}(s()),vt.runtime=yr,vt._internal.dotNetCriticalError=Rr,r("blazor-internal",{Blazor:{_internal:vt._internal}});const c=await yr.getAssemblyExports("Microsoft.AspNetCore.Components.WebAssembly");return Object.assign(vt._internal,{dotNetExports:{...c.Microsoft.AspNetCore.Components.WebAssembly.Services.DefaultWebAssemblyJSRuntime}}),mr=e.attachDispatcher({beginInvokeDotNetFromJS:(e,t,n,o,r)=>{if(Ar(),!o&&!t)throw new Error("Either assemblyName or dotNetObjectId must have a non null value.");const i=o?o.toString():t;vt._internal.dotNetExports.BeginInvokeDotNet(e?e.toString():null,i,n,r)},endInvokeJSFromDotNet:(e,t,n)=>{vt._internal.dotNetExports.EndInvokeJS(n)},sendByteArray:(e,t)=>{vt._internal.dotNetExports.ReceiveByteArrayFromJS(e,t)},invokeDotNetFromJS:(e,t,n,o)=>(Ar(),vt._internal.dotNetExports.InvokeDotNet(e||null,t,null!=n?n:0,o))}),{invokeLibraryInitializers:a}}()},callEntryPoint:async function(){try{await yr.runMain(yr.getConfig().mainAssemblyName,[])}catch(e){console.error(e),Bo()}},toUint8Array:function(e){const t=Dr(e),n=Cr(t),o=new Uint8Array(n);return o.set(gr.HEAPU8.subarray(t+4,t+4+n)),o},getArrayLength:function(e){return Cr(Dr(e))},getArrayEntryPtr:function(e,t,n){return Dr(e)+4+t*n},getObjectFieldsBaseAddress:function(e){return e+8},readInt16Field:function(e,t){return n=e+(t||0),fr.getI16(n);var n},readInt32Field:function(e,t){return Cr(e+(t||0))},readUint64Field:function(e,t){return function(e){const t=e>>2,n=gr.HEAPU32[t+1];if(n>_r)throw new Error(`Cannot read uint64 with high order part ${n}, because the result would exceed Number.MAX_SAFE_INTEGER.`);return n*br+gr.HEAPU32[t]}(e+(t||0))},readFloatField:function(e,t){return n=e+(t||0),fr.getF32(n);var n},readObjectField:function(e,t){return Cr(e+(t||0))},readStringField:function(e,t,n){const o=Cr(e+(t||0));if(0===o)return null;if(n){const e=pr.unbox_mono_obj(o);return"boolean"==typeof e?e?"":null:e}return pr.conv_string(o)},readStructField:function(e,t){return e+(t||0)},beginHeapLock:function(){return Ar(),Sr=xr.create(),Sr},invokeWhenHeapUnlocked:function(e){Sr?Sr.enqueuePostReleaseAction(e):e()}};function Ir(e,t){const n=e/t*100;document.documentElement.style.setProperty("--blazor-load-percentage",`${n}%`),document.documentElement.style.setProperty("--blazor-load-percentage-text",`"${Math.floor(n)}%"`)}const kr=["DEBUGGING ENABLED"],Tr=e=>kr.indexOf(e)<0&&console.log(e),Rr=e=>{console.error(e||"(null)"),Bo()};function Dr(e){return e+12}function Ar(){if(Sr)throw new Error("Assertion failed - heap is currently locked")}class xr{enqueuePostReleaseAction(e){this.postReleaseActions||(this.postReleaseActions=[]),this.postReleaseActions.push(e)}release(){var e;if(Sr!==this)throw new Error("Trying to release a lock which isn't current");for(vr.mono_wasm_gc_unlock(),Sr=null;null===(e=this.postReleaseActions)||void 0===e?void 0:e.length;)this.postReleaseActions.shift()(),Ar()}static create(){return vr.mono_wasm_gc_lock(),new xr}}class Nr{constructor(e){this.batchAddress=e,this.arrayRangeReader=Pr,this.arrayBuilderSegmentReader=Mr,this.diffReader=Ur,this.editReader=Lr,this.frameReader=Br}updatedComponents(){return Zo.readStructField(this.batchAddress,0)}referenceFrames(){return Zo.readStructField(this.batchAddress,Pr.structLength)}disposedComponentIds(){return Zo.readStructField(this.batchAddress,2*Pr.structLength)}disposedEventHandlerIds(){return Zo.readStructField(this.batchAddress,3*Pr.structLength)}updatedComponentsEntry(e,t){return Or(e,t,Ur.structLength)}referenceFramesEntry(e,t){return Or(e,t,Br.structLength)}disposedComponentIdsEntry(e,t){const n=Or(e,t,4);return Zo.readInt32Field(n)}disposedEventHandlerIdsEntry(e,t){const n=Or(e,t,8);return Zo.readUint64Field(n)}}const Pr={structLength:8,values:e=>Zo.readObjectField(e,0),count:e=>Zo.readInt32Field(e,4)},Mr={structLength:12,values:e=>{const t=Zo.readObjectField(e,0),n=Zo.getObjectFieldsBaseAddress(t);return Zo.readObjectField(n,0)},offset:e=>Zo.readInt32Field(e,4),count:e=>Zo.readInt32Field(e,8)},Ur={structLength:4+Mr.structLength,componentId:e=>Zo.readInt32Field(e,0),edits:e=>Zo.readStructField(e,4),editsEntry:(e,t)=>Or(e,t,Lr.structLength)},Lr={structLength:20,editType:e=>Zo.readInt32Field(e,0),siblingIndex:e=>Zo.readInt32Field(e,4),newTreeIndex:e=>Zo.readInt32Field(e,8),moveToSiblingIndex:e=>Zo.readInt32Field(e,8),removedAttributeName:e=>Zo.readStringField(e,16)},Br={structLength:36,frameType:e=>Zo.readInt16Field(e,4),subtreeLength:e=>Zo.readInt32Field(e,8),elementReferenceCaptureId:e=>Zo.readStringField(e,16),componentId:e=>Zo.readInt32Field(e,12),elementName:e=>Zo.readStringField(e,16),textContent:e=>Zo.readStringField(e,16),markupContent:e=>Zo.readStringField(e,16),attributeName:e=>Zo.readStringField(e,16),attributeValue:e=>Zo.readStringField(e,24,!0),attributeEventHandlerId:e=>Zo.readUint64Field(e,8)};function Or(e,t,n){return Zo.getArrayEntryPtr(e,t,n)}class Fr{constructor(e){this.componentManager=e}resolveRegisteredElement(e){const t=Number.parseInt(e);if(!Number.isNaN(t))return H(this.componentManager.resolveRootComponent(t))}getParameterValues(e){return this.componentManager.initialComponents[e].parameterValues}getParameterDefinitions(e){return this.componentManager.initialComponents[e].parameterDefinitions}getTypeName(e){return this.componentManager.initialComponents[e].typeName}getAssembly(e){return this.componentManager.initialComponents[e].assembly}getCount(){return this.componentManager.initialComponents.length}}let $r,Hr,Wr,jr,zr,qr=!1,Jr=!1,Kr=!0,Vr=!1;const Xr=new Promise((e=>{zr=e}));let Gr;const Yr=new Promise((e=>{Gr=e}));let Qr;function Zr(e){if(void 0!==jr)throw new Error("Blazor WebAssembly has already started.");return jr=new Promise(ei.bind(null,e)),jr}async function ei(e,t,n){(function(){if(window.parent!==window&&!window.opener&&window.frameElement){const e=window.sessionStorage&&window.sessionStorage["Microsoft.AspNetCore.Components.WebAssembly.Authentication.CachedAuthSettings"],t=e&&JSON.parse(e);return t&&t.redirect_uri&&location.href.startsWith(t.redirect_uri)}return!1})()&&await new Promise((()=>{}));const o=ti();!function(e){const t=A;A=(e,n,o)=>{((e,t,n)=>{const o=Ae(e);(null==o?void 0:o.eventDelegator.getHandler(t))&&Er.invokeWhenHeapUnlocked(n)})(e,n,(()=>t(e,n,o)))}}(),vt._internal.applyHotReload=(e,t,n,o)=>{mr.invokeDotNetStaticMethod("Microsoft.AspNetCore.Components.WebAssembly","ApplyHotReloadDelta",e,t,n,o)},vt._internal.getApplyUpdateCapabilities=()=>mr.invokeDotNetStaticMethod("Microsoft.AspNetCore.Components.WebAssembly","GetApplyUpdateCapabilities"),vt._internal.invokeJSFromDotNet=oi,vt._internal.invokeJSJson=ri,vt._internal.endInvokeDotNetFromJS=ii,vt._internal.receiveWebAssemblyDotNetDataStream=si,vt._internal.receiveByteArray=ai;const r=ir(Er);vt.platform=r,vt._internal.renderBatch=(e,t)=>{const n=Er.beginHeapLock();try{xe(e,new Nr(t))}finally{n.release()}},vt._internal.navigationManager.listenForNavigationEvents(Bn.WebAssembly,(async(e,t,n)=>{await mr.invokeDotNetStaticMethodAsync("Microsoft.AspNetCore.Components.WebAssembly","NotifyLocationChanged",e,t,n)}),(async(e,t,n,o)=>{const r=await mr.invokeDotNetStaticMethodAsync("Microsoft.AspNetCore.Components.WebAssembly","NotifyLocationChangingAsync",t,n,o);vt._internal.navigationManager.endLocationChanging(e,r)}));const i=new Fr(e);let s;vt._internal.registeredComponents={getRegisteredComponentsCount:()=>i.getCount(),getAssembly:e=>i.getAssembly(e),getTypeName:e=>i.getTypeName(e),getParameterDefinitions:e=>i.getParameterDefinitions(e)||"",getParameterValues:e=>i.getParameterValues(e)||""},vt._internal.getPersistedState=()=>kt(document,Ct)||"",vt._internal.getInitialComponentsUpdate=()=>Yr,vt._internal.updateRootComponents=e=>{var t;return null===(t=vt._internal.dotNetExports)||void 0===t?void 0:t.UpdateRootComponentsCore(e)},vt._internal.endUpdateRootComponents=t=>{var n;return null===(n=e.onAfterUpdateRootComponents)||void 0===n?void 0:n.call(e,t)},vt._internal.attachRootComponentToElement=(e,t,n)=>{const o=i.resolveRegisteredElement(e);o?De(n,o,t,!1):function(e,t,n){const o="::before";let r=!1;if(e.endsWith("::after"))e=e.slice(0,-7),r=!0;else if(e.endsWith(o))throw new Error(`The '${o}' selector is not supported.`);const i=w(e)||document.querySelector(e);if(!i)throw new Error(`Could not find any element matching selector '${e}'.`);De(n,W(i,!0),t,r)}(e,t,n)};try{await o,s=await r.start()}catch(e){throw new Error(`Failed to start platform. Reason: ${e}`)}r.callEntryPoint(),wr.invokeAfterStartedCallbacks(vt),Jr=!0,t()}function ti(){return null!=Wr||(Wr=(async()=>{await Hr;const e=null!=$r?$r:{},t=null==$r?void 0:$r.configureRuntime;e.configureRuntime=e=>{null==t||t(e),Vr&&e.withEnvironmentVariable("__BLAZOR_WEBASSEMBLY_WAIT_FOR_ROOT_COMPONENTS","true")},await Er.load(e,zr),qr=!0})()),Wr}function ni(){return qr}function oi(t,n,o,r){const i=Er.readStringField(t,0),s=Er.readInt32Field(t,4),a=Er.readStringField(t,8),c=Er.readUint64Field(t,20);if(null!==a){const e=Er.readUint64Field(t,12);if(0!==e)return mr.beginInvokeJSFromDotNet(e,i,a,s,c),0;{const e=mr.invokeJSFromDotNet(i,a,s,c);return null===e?0:pr.js_string_to_mono_string(e)}}{const t=e.findJSFunction(i,c).call(null,n,o,r);switch(s){case e.JSCallResultType.Default:return t;case e.JSCallResultType.JSObjectReference:return e.createJSObjectReference(t).__jsObjectId;case e.JSCallResultType.JSStreamReference:{const n=e.createJSStreamReference(t),o=JSON.stringify(n);return pr.js_string_to_mono_string(o)}case e.JSCallResultType.JSVoidResult:return null;default:throw new Error(`Invalid JS call result type '${s}'.`)}}}function ri(e,t,n,o,r){return 0!==r?(mr.beginInvokeJSFromDotNet(r,e,o,n,t),null):mr.invokeJSFromDotNet(e,o,n,t)}function ii(e,t,n){mr.endInvokeDotNetFromJS(e,t,n)}function si(e,t,n,o){!function(e,t,n,o,r){let i=mt.get(t);if(!i){const n=new ReadableStream({start(e){mt.set(t,e),i=e}});e.supplyDotNetStream(t,n)}r?(i.error(r),mt.delete(t)):0===o?(i.close(),mt.delete(t)):i.enqueue(n.length===o?n:n.subarray(0,o))}(mr,e,t,n,o)}function ai(e,t){mr.receiveByteArray(e,t)}function ci(e,t){t.namespaceURI?e.setAttributeNS(t.namespaceURI,t.name,t.value):e.setAttribute(t.name,t.value)}Hr=new Promise((e=>{Qr=e}));const li="data-permanent";var hi,di;!function(e){e[e.None=0]="None",e[e.Some=1]="Some",e[e.Infinite=2]="Infinite"}(hi||(hi={})),function(e){e.Keep="keep",e.Update="update",e.Insert="insert",e.Delete="delete"}(di||(di={}));class ui{static create(e,t,n){return 0===t&&n===e.length?e:new ui(e,t,n)}constructor(e,t,n){this.source=e,this.startIndex=t,this.length=n}item(e){return this.source.item(e+this.startIndex)}forEach(e,t){for(let t=0;t=n&&s>=o&&r(e.item(i),t.item(s))===hi.None;)i--,s--,a++;return a}(e,t,o,o,n),i=function(e){var t;const n=[];let o=e.length-1,r=(null===(t=e[o])||void 0===t?void 0:t.length)-1;for(;o>0||r>0;){const t=0===o?di.Insert:0===r?di.Delete:e[o][r];switch(n.unshift(t),t){case di.Keep:case di.Update:o--,r--;break;case di.Insert:r--;break;case di.Delete:o--}}return n}(function(e,t,n){const o=[],r=[],i=e.length,s=t.length;if(0===i&&0===s)return[];for(let e=0;e<=i;e++)(o[e]=Array(s+1))[0]=e,r[e]=Array(s+1);const a=o[0];for(let e=1;e<=s;e++)a[e]=e;for(let a=1;a<=i;a++)for(let i=1;i<=s;i++){const s=n(e.item(a-1),t.item(i-1)),c=o[a-1][i]+1,l=o[a][i-1]+1;let h;switch(s){case hi.None:h=o[a-1][i-1];break;case hi.Some:h=o[a-1][i-1]+1;break;case hi.Infinite:h=Number.MAX_VALUE}h{history.pushState(null,"",e),Mi(e,!0)}))}function Ni(e){Oe()||Mi(location.href,!1)}function Pi(e){if(Oe()||e.defaultPrevented)return;const t=e.target;if(t instanceof HTMLFormElement){if(!function(e){const t=e.getAttribute("data-enhance");return"string"==typeof t&&""===t||"true"===(null==t?void 0:t.toLowerCase())}(t))return;e.preventDefault();let n=new URL(t.action);const o={method:t.method},r=new FormData(t),i=e.submitter;i&&(i.name&&r.append(i.name,i.value),null!==i.getAttribute("formaction")&&(n=new URL(i.formAction))),"get"===o.method?(n.search=new URLSearchParams(r).toString(),history.pushState(null,"",n.toString())):o.body=r,Mi(n.toString(),!1,o)}}async function Mi(e,t,n){gi=!0,null==pi||pi.abort(),function(e,t){null==ke||ke(e,t)}(e,t),pi=new AbortController;const o=pi.signal,r=fetch(e,Object.assign({signal:o,mode:"no-cors",headers:{accept:"text/html; blazor-enhanced-nav=on"}},n));let i=null;if(await async function(e,t,n,o){let r;try{if(r=await e,!r.body)return void n(r,"");const t=r.headers.get("ssr-framing");if(!t){const e=await r.text();return void n(r,e)}let o=!0;await r.body.pipeThrough(new TextDecoderStream).pipeThrough(function(e){let t="";return new TransformStream({transform(n,o){if(t+=n,t.indexOf(e,t.length-n.length-e.length)>=0){const n=t.split(e);n.slice(0,-1).forEach((e=>o.enqueue(e))),t=n[n.length-1]}},flush(e){e.enqueue(t)}})}(`\x3c!--${t}--\x3e`)).pipeTo(new WritableStream({write(e){o?(o=!1,n(r,e)):(e=>{const t=document.createRange().createContextualFragment(e);for(;t.firstChild;)document.body.appendChild(t.firstChild)})(e)}}))}catch(e){if("AbortError"===e.name&&t.aborted)return;throw e}}(r,o,((t,o)=>{const r=!(null==n?void 0:n.method)||"get"===n.method,s=t.status>=200&&t.status<300;if("opaque"===t.type){if(r)return void Li(e);throw new Error("Enhanced navigation does not support making a non-GET request to an endpoint that redirects to an external origin. Avoid enabling enhanced navigation for form posts that may perform external redirections.")}if(s&&"allow"!==t.headers.get("blazor-enhanced-nav")){if(r)return void Li(e);throw new Error("Enhanced navigation does not support making a non-GET request to a non-Blazor endpoint. Avoid enabling enhanced navigation for forms that post to a non-Blazor endpoint.")}t.redirected&&(r?history.replaceState(null,"",t.url):history.pushState(null,"",t.url),e=t.url);const a=t.headers.get("blazor-enhanced-nav-redirect-location");if(a)return void location.replace(a);t.redirected||r||!s||(function(e){const t=new URL(e.url),n=new URL(Ri);return t.protocol===n.protocol&&t.host===n.host&&t.port===n.port&&t.pathname===n.pathname}(t)?location.href!==Ri&&history.pushState(null,"",Ri):i=`Cannot perform enhanced form submission that changes the URL (except via a redirection), because then back/forward would not work. Either remove this form's 'action' attribute, or change its method to 'get', or do not mark it as enhanced.\nOld URL: ${location.href}\nNew URL: ${t.url}`),Ri=t.url;const c=t.headers.get("content-type");if((null==c?void 0:c.startsWith("text/html"))&&o){const e=(new DOMParser).parseFromString(o,"text/html");vi(document,e),fi.documentUpdated()}else(null==c?void 0:c.startsWith("text/"))&&o?Ui(o):s||o?r?Li(e):Ui(`Error: ${n.method} request to ${e} returned non-HTML content of type ${c||"unspecified"}.`):Ui(`Error: ${t.status} ${t.statusText}`)})),!o.aborted){const t=e.indexOf("#");if(t>=0){const n=e.substring(t+1),o=document.getElementById(n);null==o||o.scrollIntoView()}if(gi=!1,fi.enhancedNavigationCompleted(),i)throw new Error(i)}}function Ui(e){document.documentElement.textContent=e;const t=document.documentElement.style;t.fontFamily="consolas, monospace",t.whiteSpace="pre-wrap",t.padding="1rem"}function Li(e){history.replaceState(null,"",e+"?"),location.replace(e)}let Bi,Oi=!0;class Fi extends HTMLElement{connectedCallback(){var e;const t=this.parentNode;null===(e=t.parentNode)||void 0===e||e.removeChild(t),t.childNodes.forEach((e=>{if(e instanceof HTMLTemplateElement){const t=e.getAttribute("blazor-component-id");if(t)"true"!==e.getAttribute("enhanced-nav")&&pi||function(e,t){const n=function(e){const t=`bl:${e}`,n=document.createNodeIterator(document,NodeFilter.SHOW_COMMENT);let o=null;for(;(o=n.nextNode())&&o.textContent!==t;);if(!o)return null;const r=`/bl:${e}`;let i=null;for(;(i=n.nextNode())&&i.textContent!==r;);return i?{startMarker:o,endMarker:i}:null}(e);if(n){const{startMarker:e,endMarker:o}=n;if(Oi)vi({startExclusive:e,endExclusive:o},t);else{const n=o.parentNode,r=new Range;for(r.setStart(e,e.textContent.length),r.setEnd(o,0),r.deleteContents();t.childNodes[0];)n.insertBefore(t.childNodes[0],o)}Bi.documentUpdated()}}(t,e.content);else switch(e.getAttribute("type")){case"redirection":const t=Le(e.content.textContent),n="form-post"===e.getAttribute("from");"true"===e.getAttribute("enhanced")&&Pe(t)?(n?history.pushState(null,"",t):history.replaceState(null,"",t),Mi(t,!1)):n?location.assign(t):location.replace(t);break;case"error":Ui(e.content.textContent||"Error")}}}))}}class $i{constructor(e){var t;this._circuitInactivityTimeoutMs=e,this._rootComponentsBySsrComponentId=new Map,this._seenDescriptors=new Set,this._pendingOperationBatches={},this._nextOperationBatchId=1,this._nextSsrComponentId=1,this._didWebAssemblyFailToLoadQuickly=!1,this._isComponentRefreshPending=!1,this.initialComponents=[],t=()=>{this.rootComponentsMayRequireRefresh()},E.push(t)}onAfterRenderBatch(e){e===Bn.Server&&this.circuitMayHaveNoRootComponents()}onDocumentUpdated(){this.rootComponentsMayRequireRefresh()}onEnhancedNavigationCompleted(){this.rootComponentsMayRequireRefresh()}registerComponent(e){if(this._seenDescriptors.has(e))return;"auto"!==e.type&&"webassembly"!==e.type||this.startLoadingWebAssemblyIfNotStarted();const t=this._nextSsrComponentId++;this._seenDescriptors.add(e),this._rootComponentsBySsrComponentId.set(t,{descriptor:e,ssrComponentId:t})}unregisterComponent(e){this._seenDescriptors.delete(e.descriptor),this._rootComponentsBySsrComponentId.delete(e.ssrComponentId),this.circuitMayHaveNoRootComponents()}async startLoadingWebAssemblyIfNotStarted(){if(void 0!==Wr)return;Vr=!0;const e=ti();setTimeout((()=>{ni()||this.onWebAssemblyFailedToLoadQuickly()}),vt._internal.loadWebAssemblyQuicklyTimeout);const t=await Xr;(function(e){if(!e.cacheBootResources)return!1;const t=Hi(e);if(!t)return!1;const n=window.localStorage.getItem(t.key);return t.value===n})(t)||this.onWebAssemblyFailedToLoadQuickly(),await e,function(e){const t=Hi(e);t&&window.localStorage.setItem(t.key,t.value)}(t),this.rootComponentsMayRequireRefresh()}onWebAssemblyFailedToLoadQuickly(){this._didWebAssemblyFailToLoadQuickly||(this._didWebAssemblyFailToLoadQuickly=!0,this.rootComponentsMayRequireRefresh())}startCircutIfNotStarted(){return void 0===Yo?tr(this):!Vo||Vo.isDisposedOrDisposing()?or():void 0}async startWebAssemblyIfNotStarted(){this.startLoadingWebAssemblyIfNotStarted(),void 0===jr&&await Zr(this)}rootComponentsMayRequireRefresh(){this._isComponentRefreshPending||(this._isComponentRefreshPending=!0,setTimeout((()=>{this._isComponentRefreshPending=!1,this.refreshRootComponents(this._rootComponentsBySsrComponentId.values())}),0))}circuitMayHaveNoRootComponents(){if(this.rendererHasExistingOrPendingComponents(Bn.Server,"server","auto"))return clearTimeout(this._circuitInactivityTimeoutId),void(this._circuitInactivityTimeoutId=void 0);void 0===this._circuitInactivityTimeoutId&&(this._circuitInactivityTimeoutId=setTimeout((()=>{this.rendererHasExistingOrPendingComponents(Bn.Server,"server","auto")||(async function(){await(null==Vo?void 0:Vo.dispose())}(),this._circuitInactivityTimeoutId=void 0)}),this._circuitInactivityTimeoutMs))}rendererHasComponents(e){const t=Ae(e);return void 0!==t&&t.getRootComponentCount()>0}rendererHasExistingOrPendingComponents(e,...t){if(this.rendererHasComponents(e))return!0;for(const{descriptor:{type:n},assignedRendererId:o}of this._rootComponentsBySsrComponentId.values()){if(o===e)return!0;if(void 0===o&&-1!==t.indexOf(n))return!0}return!1}refreshRootComponents(e){const t=new Map;for(const n of e){const e=this.determinePendingOperation(n);if(!e)continue;const o=n.assignedRendererId;if(!o)throw new Error("Descriptors must be assigned a renderer ID before getting used as root components");let r=t.get(o);r||(r=[],t.set(o,r)),r.push(e)}for(const[e,n]of t){const t={batchId:this._nextOperationBatchId++,operations:n};this._pendingOperationBatches[t.batchId]=t;const o=JSON.stringify(t);e===Bn.Server?rr(o):this.updateWebAssemblyRootComponents(o)}}updateWebAssemblyRootComponents(e){Kr?(Gr(e),Kr=!1):function(e){if(!jr)throw new Error("Blazor WebAssembly has not started.");if(!vt._internal.updateRootComponents)throw new Error("Blazor WebAssembly has not initialized.");Jr?vt._internal.updateRootComponents(e):async function(e){if(await jr,!vt._internal.updateRootComponents)throw new Error("Blazor WebAssembly has not initialized.");vt._internal.updateRootComponents(e)}(e)}(e)}resolveRendererIdForDescriptor(e){switch("auto"===e.type?this.getAutoRenderMode():e.type){case"server":return this.startCircutIfNotStarted(),Bn.Server;case"webassembly":return this.startWebAssemblyIfNotStarted(),Bn.WebAssembly;case null:return null}}getAutoRenderMode(){return this.rendererHasExistingOrPendingComponents(Bn.WebAssembly,"webassembly")?"webassembly":this.rendererHasExistingOrPendingComponents(Bn.Server,"server")?"server":ni()?"webassembly":this._didWebAssemblyFailToLoadQuickly?"server":null}determinePendingOperation(e){if(t=e.descriptor,document.contains(t.start)){if(void 0===e.assignedRendererId){if(gi||"loading"===document.readyState)return null;const t=this.resolveRendererIdForDescriptor(e.descriptor);return null===t?null:T(t)?(be(e.descriptor.start,!0),e.assignedRendererId=t,e.uniqueIdAtLastUpdate=e.descriptor.uniqueId,{type:"add",ssrComponentId:e.ssrComponentId,marker:Ut(e.descriptor)}):null}return T(e.assignedRendererId)?e.uniqueIdAtLastUpdate===e.descriptor.uniqueId?null:(e.uniqueIdAtLastUpdate=e.descriptor.uniqueId,{type:"update",ssrComponentId:e.ssrComponentId,marker:Ut(e.descriptor)}):null}return e.hasPendingRemoveOperation?null:void 0===e.assignedRendererId?(this.unregisterComponent(e),null):T(e.assignedRendererId)?(be(e.descriptor.start,!1),e.hasPendingRemoveOperation=!0,{type:"remove",ssrComponentId:e.ssrComponentId}):null;var t}resolveRootComponent(e){const t=this._rootComponentsBySsrComponentId.get(e);if(!t)throw new Error(`Could not resolve a root component with SSR component ID '${e}'.`);return t.descriptor}onAfterUpdateRootComponents(e){const t=this._pendingOperationBatches[e];delete this._pendingOperationBatches[e];for(const e of t.operations)switch(e.type){case"remove":{const t=this._rootComponentsBySsrComponentId.get(e.ssrComponentId);t&&this.unregisterComponent(t);break}}}}function Hi(e){var t;const n=null===(t=e.resources)||void 0===t?void 0:t.hash,o=e.mainAssemblyName;return n&&o?{key:`blazor-resource-hash:${o}`,value:n}:null}class Wi{constructor(){this._eventListeners=new Map}static create(e){const t=new Wi;return e.addEventListener=t.addEventListener.bind(t),e.removeEventListener=t.removeEventListener.bind(t),t}addEventListener(e,t){let n=this._eventListeners.get(e);n||(n=new Set,this._eventListeners.set(e,n)),n.add(t)}removeEventListener(e,t){var n;null===(n=this._eventListeners.get(e))||void 0===n||n.delete(t)}dispatchEvent(e,t){const n=this._eventListeners.get(e);if(!n)return;const o={...t,type:e};for(const e of n)e(o)}}let ji,zi=!1;function qi(e){var t,n,o,r;if(zi)throw new Error("Blazor has already started.");zi=!0,null!==(t=(e=e||{}).logLevel)&&void 0!==t||(e.logLevel=yt.Error),vt._internal.loadWebAssemblyQuicklyTimeout=3e3,vt._internal.isBlazorWeb=!0,vt._internal.hotReloadApplied=()=>{Me()&&Ue(location.href,!0)},ji=new $i(null!==(o=null===(n=null==e?void 0:e.ssr)||void 0===n?void 0:n.circuitInactivityTimeoutMs)&&void 0!==o?o:2e3);const i=Wi.create(vt),s={documentUpdated:()=>{ji.onDocumentUpdated(),i.dispatchEvent("enhancedload",{})},enhancedNavigationCompleted(){ji.onEnhancedNavigationCompleted()}};return mi=ji,function(e,t){Bi=t,(null==e?void 0:e.disableDomPreservation)&&(Oi=!1),customElements.define("blazor-ssr-end",Fi)}(null==e?void 0:e.ssr,s),(null===(r=null==e?void 0:e.ssr)||void 0===r?void 0:r.disableDomPreservation)||Di(s),"loading"===document.readyState?document.addEventListener("DOMContentLoaded",Ji.bind(null,e)):Ji(e),Promise.resolve()}function Ji(e){const t=Fo((null==e?void 0:e.circuit)||{});e.circuit=t;const n=async function(e,t){var n;const o=kt(document,Et,"initializers");if(!o)return new qo(!1,t);const r=null!==(n=JSON.parse(atob(o)))&&void 0!==n?n:[],i=new qo(!1,t);return await i.importInitializersAsync(r,[e]),i}(e,new bt(t.logLevel));er(Ki(n,t)),function(e){if($r)throw new Error("WebAssembly options have already been configured.");!async function(e){const t=await e;$r=t,Qr()}(e)}(Ki(n,(null==e?void 0:e.webAssembly)||{})),function(e){const t=Ci(document);for(const e of t)null==mi||mi.registerComponent(e)}(),ji.onDocumentUpdated(),async function(e){const t=await e;await t.invokeAfterStartedCallbacks(vt)}(n)}async function Ki(e,t){return await e,t}vt.start=qi,window.DotNet=e,document&&document.currentScript&&"false"!==document.currentScript.getAttribute("autostart")&&qi()})()})(); \ No newline at end of file diff --git a/src/Components/Web.JS/dist/Release/blazor.webview.js b/src/Components/Web.JS/dist/Release/blazor.webview.js index 20b461c1c988..afc283f9f223 100644 --- a/src/Components/Web.JS/dist/Release/blazor.webview.js +++ b/src/Components/Web.JS/dist/Release/blazor.webview.js @@ -1 +1 @@ -(()=>{"use strict";var e,t,n,r={d:(e,t)=>{for(var n in t)r.o(t,n)&&!r.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t)};r.d({},{e:()=>Ot}),function(e){const t=[],n="__jsObjectId",r="__dotNetObject",o="__byte[]",a="__dotNetStream",i="__jsStreamReferenceLength";let s,c;class l{constructor(e){this._jsObject=e,this._cachedFunctions=new Map}findFunction(e){const t=this._cachedFunctions.get(e);if(t)return t;let n,r=this._jsObject;if(e.split(".").forEach((t=>{if(!(t in r))throw new Error(`Could not find '${e}' ('${t}' was undefined).`);n=r,r=r[t]})),r instanceof Function)return r=r.bind(n),this._cachedFunctions.set(e,r),r;throw new Error(`The value '${e}' is not a function.`)}getWrappedObject(){return this._jsObject}}const u={0:new l(window)};u[0]._cachedFunctions.set("import",(e=>("string"==typeof e&&e.startsWith("./")&&(e=new URL(e.substr(2),document.baseURI).toString()),import(e))));let d,h=1;function f(e){t.push(e)}function m(e){if(e&&"object"==typeof e){u[h]=new l(e);const t={[n]:h};return h++,t}throw new Error(`Cannot create a JSObjectReference from the value '${e}'.`)}function p(e){let t=-1;if(e instanceof ArrayBuffer&&(e=new Uint8Array(e)),e instanceof Blob)t=e.size;else{if(!(e.buffer instanceof ArrayBuffer))throw new Error("Supplied value is not a typed array or blob.");if(void 0===e.byteLength)throw new Error(`Cannot create a JSStreamReference from the value '${e}' as it doesn't have a byteLength.`);t=e.byteLength}const r={[i]:t};try{const t=m(e);r[n]=t[n]}catch(t){throw new Error(`Cannot create a JSStreamReference from the value '${e}'.`)}return r}function b(e,n){c=e;const r=n?JSON.parse(n,((e,n)=>t.reduce(((t,n)=>n(e,t)),n))):null;return c=void 0,r}function v(){if(void 0===s)throw new Error("No call dispatcher has been set.");if(null===s)throw new Error("There are multiple .NET runtimes present, so a default dispatcher could not be resolved. Use DotNetObject to invoke .NET instance methods.");return s}e.attachDispatcher=function(e){const t=new g(e);return void 0===s?s=t:s&&(s=null),t},e.attachReviver=f,e.invokeMethod=function(e,t,...n){return v().invokeDotNetStaticMethod(e,t,...n)},e.invokeMethodAsync=function(e,t,...n){return v().invokeDotNetStaticMethodAsync(e,t,...n)},e.createJSObjectReference=m,e.createJSStreamReference=p,e.disposeJSObjectReference=function(e){const t=e&&e[n];"number"==typeof t&&E(t)},function(e){e[e.Default=0]="Default",e[e.JSObjectReference=1]="JSObjectReference",e[e.JSStreamReference=2]="JSStreamReference",e[e.JSVoidResult=3]="JSVoidResult"}(d=e.JSCallResultType||(e.JSCallResultType={}));class g{constructor(e){this._dotNetCallDispatcher=e,this._byteArraysToBeRevived=new Map,this._pendingDotNetToJSStreams=new Map,this._pendingAsyncCalls={},this._nextAsyncCallId=1}getDotNetCallDispatcher(){return this._dotNetCallDispatcher}invokeJSFromDotNet(e,t,n,r){const o=b(this,t),a=D(w(e,r)(...o||[]),n);return null==a?null:N(this,a)}beginInvokeJSFromDotNet(e,t,n,r,o){const a=new Promise((e=>{const r=b(this,n);e(w(t,o)(...r||[]))}));e&&a.then((t=>N(this,[e,!0,D(t,r)]))).then((t=>this._dotNetCallDispatcher.endInvokeJSFromDotNet(e,!0,t)),(t=>this._dotNetCallDispatcher.endInvokeJSFromDotNet(e,!1,JSON.stringify([e,!1,y(t)]))))}endInvokeDotNetFromJS(e,t,n){const r=t?b(this,n):new Error(n);this.completePendingCall(parseInt(e,10),t,r)}invokeDotNetStaticMethod(e,t,...n){return this.invokeDotNetMethod(e,t,null,n)}invokeDotNetStaticMethodAsync(e,t,...n){return this.invokeDotNetMethodAsync(e,t,null,n)}invokeDotNetMethod(e,t,n,r){if(this._dotNetCallDispatcher.invokeDotNetFromJS){const o=N(this,r),a=this._dotNetCallDispatcher.invokeDotNetFromJS(e,t,n,o);return a?b(this,a):null}throw new Error("The current dispatcher does not support synchronous calls from JS to .NET. Use invokeDotNetMethodAsync instead.")}invokeDotNetMethodAsync(e,t,n,r){if(e&&n)throw new Error(`For instance method calls, assemblyName should be null. Received '${e}'.`);const o=this._nextAsyncCallId++,a=new Promise(((e,t)=>{this._pendingAsyncCalls[o]={resolve:e,reject:t}}));try{const a=N(this,r);this._dotNetCallDispatcher.beginInvokeDotNetFromJS(o,e,t,n,a)}catch(e){this.completePendingCall(o,!1,e)}return a}receiveByteArray(e,t){this._byteArraysToBeRevived.set(e,t)}processByteArray(e){const t=this._byteArraysToBeRevived.get(e);return t?(this._byteArraysToBeRevived.delete(e),t):null}supplyDotNetStream(e,t){if(this._pendingDotNetToJSStreams.has(e)){const n=this._pendingDotNetToJSStreams.get(e);this._pendingDotNetToJSStreams.delete(e),n.resolve(t)}else{const n=new C;n.resolve(t),this._pendingDotNetToJSStreams.set(e,n)}}getDotNetStreamPromise(e){let t;if(this._pendingDotNetToJSStreams.has(e))t=this._pendingDotNetToJSStreams.get(e).streamPromise,this._pendingDotNetToJSStreams.delete(e);else{const n=new C;this._pendingDotNetToJSStreams.set(e,n),t=n.streamPromise}return t}completePendingCall(e,t,n){if(!this._pendingAsyncCalls.hasOwnProperty(e))throw new Error(`There is no pending async call with ID ${e}.`);const r=this._pendingAsyncCalls[e];delete this._pendingAsyncCalls[e],t?r.resolve(n):r.reject(n)}}function y(e){return e instanceof Error?`${e.message}\n${e.stack}`:e?e.toString():"null"}function w(e,t){const n=u[t];if(n)return n.findFunction(e);throw new Error(`JS object instance with ID ${t} does not exist (has it been disposed?).`)}function E(e){delete u[e]}e.findJSFunction=w,e.disposeJSObjectReferenceById=E;class S{constructor(e,t){this._id=e,this._callDispatcher=t}invokeMethod(e,...t){return this._callDispatcher.invokeDotNetMethod(null,e,this._id,t)}invokeMethodAsync(e,...t){return this._callDispatcher.invokeDotNetMethodAsync(null,e,this._id,t)}dispose(){this._callDispatcher.invokeDotNetMethodAsync(null,"__Dispose",this._id,null).catch((e=>console.error(e)))}serializeAsArg(){return{[r]:this._id}}}e.DotNetObject=S,f((function(e,t){if(t&&"object"==typeof t){if(t.hasOwnProperty(r))return new S(t[r],c);if(t.hasOwnProperty(n)){const e=t[n],r=u[e];if(r)return r.getWrappedObject();throw new Error(`JS object instance with Id '${e}' does not exist. It may have been disposed.`)}if(t.hasOwnProperty(o)){const e=t[o],n=c.processByteArray(e);if(void 0===n)throw new Error(`Byte array index '${e}' does not exist.`);return n}if(t.hasOwnProperty(a)){const e=t[a],n=c.getDotNetStreamPromise(e);return new I(n)}}return t}));class I{constructor(e){this._streamPromise=e}stream(){return this._streamPromise}async arrayBuffer(){return new Response(await this.stream()).arrayBuffer()}}class C{constructor(){this.streamPromise=new Promise(((e,t)=>{this.resolve=e,this.reject=t}))}}function D(e,t){switch(t){case d.Default:return e;case d.JSObjectReference:return m(e);case d.JSStreamReference:return p(e);case d.JSVoidResult:return null;default:throw new Error(`Invalid JS call result type '${t}'.`)}}let A=0;function N(e,t){A=0,c=e;const n=JSON.stringify(t,k);return c=void 0,n}function k(e,t){if(t instanceof S)return t.serializeAsArg();if(t instanceof Uint8Array){c.getDotNetCallDispatcher().sendByteArray(A,t);const e={[o]:A};return A++,e}return t}}(e||(e={})),function(e){e[e.prependFrame=1]="prependFrame",e[e.removeFrame=2]="removeFrame",e[e.setAttribute=3]="setAttribute",e[e.removeAttribute=4]="removeAttribute",e[e.updateText=5]="updateText",e[e.stepIn=6]="stepIn",e[e.stepOut=7]="stepOut",e[e.updateMarkup=8]="updateMarkup",e[e.permutationListEntry=9]="permutationListEntry",e[e.permutationListEnd=10]="permutationListEnd"}(t||(t={})),function(e){e[e.element=1]="element",e[e.text=2]="text",e[e.attribute=3]="attribute",e[e.component=4]="component",e[e.region=5]="region",e[e.elementReferenceCapture=6]="elementReferenceCapture",e[e.markup=8]="markup",e[e.namedEvent=10]="namedEvent"}(n||(n={}));class o{constructor(e,t){this.componentId=e,this.fieldValue=t}static fromEvent(e,t){const n=t.target;if(n instanceof Element){const t=function(e){return e instanceof HTMLInputElement?e.type&&"checkbox"===e.type.toLowerCase()?{value:e.checked}:{value:e.value}:e instanceof HTMLSelectElement||e instanceof HTMLTextAreaElement?{value:e.value}:null}(n);if(t)return new o(e,t.value)}return null}}const a=new Map,i=new Map,s=[];function c(e){return a.get(e)}function l(e){const t=a.get(e);return(null==t?void 0:t.browserEventName)||e}function u(e,t){e.forEach((e=>a.set(e,t)))}function d(e){const t=[];for(let n=0;ne.selected)).map((e=>e.value))}}{const e=function(e){return!!e&&"INPUT"===e.tagName&&"checkbox"===e.getAttribute("type")}(t);return{value:e?!!t.checked:t.value}}}}),u(["copy","cut","paste"],{createEventArgs:e=>({type:e.type})}),u(["drag","dragend","dragenter","dragleave","dragover","dragstart","drop"],{createEventArgs:e=>{return{...h(t=e),dataTransfer:t.dataTransfer?{dropEffect:t.dataTransfer.dropEffect,effectAllowed:t.dataTransfer.effectAllowed,files:Array.from(t.dataTransfer.files).map((e=>e.name)),items:Array.from(t.dataTransfer.items).map((e=>({kind:e.kind,type:e.type}))),types:t.dataTransfer.types}:null};var t}}),u(["focus","blur","focusin","focusout"],{createEventArgs:e=>({type:e.type})}),u(["keydown","keyup","keypress"],{createEventArgs:e=>{return{key:(t=e).key,code:t.code,location:t.location,repeat:t.repeat,ctrlKey:t.ctrlKey,shiftKey:t.shiftKey,altKey:t.altKey,metaKey:t.metaKey,type:t.type};var t}}),u(["contextmenu","click","mouseover","mouseout","mousemove","mousedown","mouseup","mouseleave","mouseenter","dblclick"],{createEventArgs:e=>h(e)}),u(["error"],{createEventArgs:e=>{return{message:(t=e).message,filename:t.filename,lineno:t.lineno,colno:t.colno,type:t.type};var t}}),u(["loadstart","timeout","abort","load","loadend","progress"],{createEventArgs:e=>{return{lengthComputable:(t=e).lengthComputable,loaded:t.loaded,total:t.total,type:t.type};var t}}),u(["touchcancel","touchend","touchmove","touchenter","touchleave","touchstart"],{createEventArgs:e=>{return{detail:(t=e).detail,touches:d(t.touches),targetTouches:d(t.targetTouches),changedTouches:d(t.changedTouches),ctrlKey:t.ctrlKey,shiftKey:t.shiftKey,altKey:t.altKey,metaKey:t.metaKey,type:t.type};var t}}),u(["gotpointercapture","lostpointercapture","pointercancel","pointerdown","pointerenter","pointerleave","pointermove","pointerout","pointerover","pointerup"],{createEventArgs:e=>{return{...h(t=e),pointerId:t.pointerId,width:t.width,height:t.height,pressure:t.pressure,tiltX:t.tiltX,tiltY:t.tiltY,pointerType:t.pointerType,isPrimary:t.isPrimary};var t}}),u(["wheel","mousewheel"],{createEventArgs:e=>{return{...h(t=e),deltaX:t.deltaX,deltaY:t.deltaY,deltaZ:t.deltaZ,deltaMode:t.deltaMode};var t}}),u(["cancel","close","toggle"],{createEventArgs:()=>({})});const f=["date","datetime-local","month","time","week"],m=new Map;let p,b,v=0;const g={async add(e,t,n){if(!n)throw new Error("initialParameters must be an object, even if empty.");const r="__bl-dynamic-root:"+(++v).toString();m.set(r,e);const o=await E().invokeMethodAsync("AddRootComponent",t,r),a=new w(o,b[t]);return await a.setParameters(n),a}};class y{invoke(e){return this._callback(e)}setCallback(t){this._selfJSObjectReference||(this._selfJSObjectReference=e.createJSObjectReference(this)),this._callback=t}getJSObjectReference(){return this._selfJSObjectReference}dispose(){this._selfJSObjectReference&&e.disposeJSObjectReference(this._selfJSObjectReference)}}class w{constructor(e,t){this._jsEventCallbackWrappers=new Map,this._componentId=e;for(const e of t)"eventcallback"===e.type&&this._jsEventCallbackWrappers.set(e.name.toLowerCase(),new y)}setParameters(e){const t={},n=Object.entries(e||{}),r=n.length;for(const[e,r]of n){const n=this._jsEventCallbackWrappers.get(e.toLowerCase());n&&r?(n.setCallback(r),t[e]=n.getJSObjectReference()):t[e]=r}return E().invokeMethodAsync("SetRootComponentParameters",this._componentId,r,t)}async dispose(){if(null!==this._componentId){await E().invokeMethodAsync("RemoveRootComponent",this._componentId),this._componentId=null;for(const e of this._jsEventCallbackWrappers.values())e.dispose()}}}function E(){if(!p)throw new Error("Dynamic root components have not been enabled in this application.");return p}const S=new Map,I=[],C=new Map;function D(e,t,n){return N(e,t.eventHandlerId,(()=>A(e).invokeMethodAsync("DispatchEventAsync",t,n)))}function A(e){const t=S.get(e);if(!t)throw new Error(`No interop methods are registered for renderer ${e}`);return t}let N=(e,t,n)=>n();const k=x(["abort","blur","cancel","canplay","canplaythrough","change","close","cuechange","durationchange","emptied","ended","error","focus","load","loadeddata","loadedmetadata","loadend","loadstart","mouseenter","mouseleave","pointerenter","pointerleave","pause","play","playing","progress","ratechange","reset","scroll","seeked","seeking","stalled","submit","suspend","timeupdate","toggle","unload","volumechange","waiting","DOMNodeInsertedIntoDocument","DOMNodeRemovedFromDocument"]),R={submit:!0},T=x(["click","dblclick","mousedown","mousemove","mouseup"]);class _{constructor(e){this.browserRendererId=e,this.afterClickCallbacks=[];const t=++_.nextEventDelegatorId;this.eventsCollectionKey=`_blazorEvents_${t}`,this.eventInfoStore=new O(this.onGlobalEvent.bind(this))}setListener(e,t,n,r){const o=this.getEventHandlerInfosForElement(e,!0),a=o.getHandler(t);if(a)this.eventInfoStore.update(a.eventHandlerId,n);else{const a={element:e,eventName:t,eventHandlerId:n,renderingComponentId:r};this.eventInfoStore.add(a),o.setHandler(t,a)}}getHandler(e){return this.eventInfoStore.get(e)}removeListener(e){const t=this.eventInfoStore.remove(e);if(t){const e=t.element,n=this.getEventHandlerInfosForElement(e,!1);n&&n.removeHandler(t.eventName)}}notifyAfterClick(e){this.afterClickCallbacks.push(e),this.eventInfoStore.addGlobalListener("click")}setStopPropagation(e,t,n){this.getEventHandlerInfosForElement(e,!0).stopPropagation(t,n)}setPreventDefault(e,t,n){this.getEventHandlerInfosForElement(e,!0).preventDefault(t,n)}onGlobalEvent(e){if(!(e.target instanceof Element))return;this.dispatchGlobalEventToAllElements(e.type,e);const t=(n=e.type,i.get(n));var n;t&&t.forEach((t=>this.dispatchGlobalEventToAllElements(t,e))),"click"===e.type&&this.afterClickCallbacks.forEach((t=>t(e)))}dispatchGlobalEventToAllElements(e,t){const n=t.composedPath();let r=n.shift(),a=null,i=!1;const s=Object.prototype.hasOwnProperty.call(k,e);let l=!1;for(;r;){const h=r,f=this.getEventHandlerInfosForElement(h,!1);if(f){const n=f.getHandler(e);if(n&&(u=h,d=t.type,!((u instanceof HTMLButtonElement||u instanceof HTMLInputElement||u instanceof HTMLTextAreaElement||u instanceof HTMLSelectElement)&&Object.prototype.hasOwnProperty.call(T,d)&&u.disabled))){if(!i){const n=c(e);a=(null==n?void 0:n.createEventArgs)?n.createEventArgs(t):{},i=!0}Object.prototype.hasOwnProperty.call(R,t.type)&&t.preventDefault(),D(this.browserRendererId,{eventHandlerId:n.eventHandlerId,eventName:e,eventFieldInfo:o.fromEvent(n.renderingComponentId,t)},a)}f.stopPropagation(e)&&(l=!0),f.preventDefault(e)&&t.preventDefault()}r=s||l?void 0:n.shift()}var u,d}getEventHandlerInfosForElement(e,t){return Object.prototype.hasOwnProperty.call(e,this.eventsCollectionKey)?e[this.eventsCollectionKey]:t?e[this.eventsCollectionKey]=new L:null}}_.nextEventDelegatorId=0;class O{constructor(e){this.globalListener=e,this.infosByEventHandlerId={},this.countByEventName={},s.push(this.handleEventNameAliasAdded.bind(this))}add(e){if(this.infosByEventHandlerId[e.eventHandlerId])throw new Error(`Event ${e.eventHandlerId} is already tracked`);this.infosByEventHandlerId[e.eventHandlerId]=e,this.addGlobalListener(e.eventName)}get(e){return this.infosByEventHandlerId[e]}addGlobalListener(e){if(e=l(e),Object.prototype.hasOwnProperty.call(this.countByEventName,e))this.countByEventName[e]++;else{this.countByEventName[e]=1;const t=Object.prototype.hasOwnProperty.call(k,e);document.addEventListener(e,this.globalListener,t)}}update(e,t){if(Object.prototype.hasOwnProperty.call(this.infosByEventHandlerId,t))throw new Error(`Event ${t} is already tracked`);const n=this.infosByEventHandlerId[e];delete this.infosByEventHandlerId[e],n.eventHandlerId=t,this.infosByEventHandlerId[t]=n}remove(e){const t=this.infosByEventHandlerId[e];if(t){delete this.infosByEventHandlerId[e];const n=l(t.eventName);0==--this.countByEventName[n]&&(delete this.countByEventName[n],document.removeEventListener(n,this.globalListener))}return t}handleEventNameAliasAdded(e,t){if(Object.prototype.hasOwnProperty.call(this.countByEventName,e)){const n=this.countByEventName[e];delete this.countByEventName[e],document.removeEventListener(e,this.globalListener),this.addGlobalListener(t),this.countByEventName[t]+=n-1}}}class L{constructor(){this.handlers={},this.preventDefaultFlags=null,this.stopPropagationFlags=null}getHandler(e){return Object.prototype.hasOwnProperty.call(this.handlers,e)?this.handlers[e]:null}setHandler(e,t){this.handlers[e]=t}removeHandler(e){delete this.handlers[e]}preventDefault(e,t){return void 0!==t&&(this.preventDefaultFlags=this.preventDefaultFlags||{},this.preventDefaultFlags[e]=t),!!this.preventDefaultFlags&&this.preventDefaultFlags[e]}stopPropagation(e,t){return void 0!==t&&(this.stopPropagationFlags=this.stopPropagationFlags||{},this.stopPropagationFlags[e]=t),!!this.stopPropagationFlags&&this.stopPropagationFlags[e]}}function x(e){const t={};return e.forEach((e=>{t[e]=!0})),t}const F=Symbol(),M=Symbol();function P(e,t){if(F in e)return e;const n=[];if(e.childNodes.length>0){if(!t)throw new Error("New logical elements must start empty, or allowExistingContents must be true");e.childNodes.forEach((t=>{const r=P(t,!0);r[M]=e,n.push(r)}))}return e[F]=n,e}function B(e){const t=W(e);for(;t.length;)J(e,0)}function j(e,t){const n=document.createComment("!");return H(n,e,t),n}function H(e,t,n){const r=e;let o=e;if(F in e){const t=G(r);if(t!==e){const n=new Range;n.setStartBefore(e),n.setEndAfter(t),o=n.extractContents()}}const a=U(r);if(a){const e=W(a),t=Array.prototype.indexOf.call(e,r);e.splice(t,1),delete r[M]}const i=W(t);if(n0;)J(n,0)}const r=n;r.parentNode.removeChild(r)}function U(e){return e[M]||null}function z(e,t){return W(e)[t]}function $(e){const t=X(e);return"http://www.w3.org/2000/svg"===t.namespaceURI&&"foreignObject"!==t.tagName}function W(e){return e[F]}function K(e){const t=W(U(e));return t[Array.prototype.indexOf.call(t,e)+1]||null}function V(e,t){const n=W(e);t.forEach((e=>{e.moveRangeStart=n[e.fromSiblingIndex],e.moveRangeEnd=G(e.moveRangeStart)})),t.forEach((t=>{const r=document.createComment("marker");t.moveToBeforeMarker=r;const o=n[t.toSiblingIndex+1];o?o.parentNode.insertBefore(r,o):Y(r,e)})),t.forEach((e=>{const t=e.moveToBeforeMarker,n=t.parentNode,r=e.moveRangeStart,o=e.moveRangeEnd;let a=r;for(;a;){const e=a.nextSibling;if(n.insertBefore(a,t),a===o)break;a=e}n.removeChild(t)})),t.forEach((e=>{n[e.toSiblingIndex]=e.moveRangeStart}))}function X(e){if(e instanceof Element||e instanceof DocumentFragment)return e;if(e instanceof Comment)return e.parentNode;throw new Error("Not a valid logical element")}function Y(e,t){if(t instanceof Element||t instanceof DocumentFragment)t.appendChild(e);else{if(!(t instanceof Comment))throw new Error(`Cannot append node because the parent is not a valid logical element. Parent: ${t}`);{const n=K(t);n?n.parentNode.insertBefore(e,n):Y(e,U(t))}}}function G(e){if(e instanceof Element||e instanceof DocumentFragment)return e;const t=K(e);if(t)return t.previousSibling;{const t=U(e);return t instanceof Element||t instanceof DocumentFragment?t.lastChild:G(t)}}function q(e){return`_bl_${e}`}Symbol();const Z="__internalId";e.attachReviver(((e,t)=>t&&"object"==typeof t&&Object.prototype.hasOwnProperty.call(t,Z)&&"string"==typeof t[Z]?function(e){const t=`[${q(e)}]`;return document.querySelector(t)}(t[Z]):t));const Q="_blazorDeferredValue";function ee(e){return"select-multiple"===e.type}function te(e,t){e.value=t||""}function ne(e,t){e instanceof HTMLSelectElement?ee(e)?function(e,t){t||(t=[]);for(let n=0;n{Ce()&&function(e,t){if(0!==e.button||function(e){return e.ctrlKey||e.shiftKey||e.altKey||e.metaKey}(e))return;if(e.defaultPrevented)return;const n=function(e){const t=!window._blazorDisableComposedPath&&e.composedPath&&e.composedPath();if(t){for(let e=0;e{const t=document.createElement("script");t.textContent=e.textContent,e.getAttributeNames().forEach((n=>{t.setAttribute(n,e.getAttribute(n))})),e.parentNode.replaceChild(t,e)})),oe.content));var i;let s=0;for(;a.firstChild;)H(a.firstChild,o,s++)}applyAttribute(e,t,n,r){const o=e.frameReader,a=o.attributeName(r),i=o.attributeEventHandlerId(r);if(i){const e=he(a);return void this.eventDelegator.setListener(n,e,i,t)}const s=o.attributeValue(r);this.setOrRemoveAttributeOrProperty(n,a,s)}insertFrameRange(e,t,n,r,o,a,i){const s=r;for(let s=a;s{He(t,e)})},enableNavigationInterception:function(e){if(void 0!==me&&me!==e)throw new Error("Only one interactive runtime may enable navigation interception at a time.");me=e},setHasLocationChangingListeners:function(e,t){const n=Re.get(e);if(!n)throw new Error(`Renderer with ID '${e}' is not listening for navigation events`);n.hasLocationChangingEventListeners=t},endLocationChanging:function(e,t){_e&&e===ke&&(_e(t),_e=null)},navigateTo:function(e,t){xe(e,t,!0)},refresh:function(e){!e&&we()?Ee(location.href,!0):location.reload()},getBaseURI:()=>document.baseURI,getLocationHref:()=>location.href,scrollToElement:Le};function Le(e){const t=document.getElementById(e);return!!t&&(t.scrollIntoView(),!0)}function xe(e,t,n=!1){const r=Se(e);!t.forceLoad&&ye(r)?ze()?Fe(r,!1,t.replaceHistoryEntry,t.historyEntryState,n):Ee(r,t.replaceHistoryEntry):function(e,t){if(location.href===e){const t=e+"?";history.replaceState(null,"",t),location.replace(e)}else t?location.replace(e):location.href=e}(e,t.replaceHistoryEntry)}async function Fe(e,t,n,r=void 0,o=!1){if(Be(),function(e){const t=e.indexOf("#");return t>-1&&location.href.replace(location.hash,"")===e.substring(0,t)}(e))return void function(e,t,n){Me(e,t,n);const r=e.indexOf("#");r!==e.length-1&&Le(e.substring(r+1))}(e,n,r);const a=Ue();(o||!(null==a?void 0:a.hasLocationChangingEventListeners)||await je(e,r,t,a))&&(ge=!0,Me(e,n,r),await He(t))}function Me(e,t,n=void 0){t?history.replaceState({userState:n,_index:Ne},"",e):(Ne++,history.pushState({userState:n,_index:Ne},"",e))}function Pe(e){return new Promise((t=>{const n=Te;Te=()=>{Te=n,t()},history.go(e)}))}function Be(){_e&&(_e(!1),_e=null)}function je(e,t,n,r){return new Promise((o=>{Be(),ke++,_e=o,r.locationChanging(ke,e,t,n)}))}async function He(e,t){const n=null!=t?t:location.href;await Promise.all(Array.from(Re,(async([t,r])=>{var o,a;a=t,S.has(a)&&await r.locationChanged(n,null===(o=history.state)||void 0===o?void 0:o.userState,e)})))}async function Je(e){var t,n;Te&&ze()&&await Te(e),Ne=null!==(n=null===(t=history.state)||void 0===t?void 0:t._index)&&void 0!==n?n:0}function Ue(){const e=De();if(void 0!==e)return Re.get(e)}function ze(){return Ce()||!we()}const $e={focus:function(e,t){if(e instanceof HTMLElement)e.focus({preventScroll:t});else{if(!(e instanceof SVGElement))throw new Error("Unable to focus an invalid element.");if(!e.hasAttribute("tabindex"))throw new Error("Unable to focus an SVG element that does not have a tabindex.");e.focus({preventScroll:t})}},focusBySelector:function(e,t){const n=document.querySelector(e);n&&(n.hasAttribute("tabindex")||(n.tabIndex=-1),n.focus({preventScroll:!0}))}},We={init:function(e,t,n,r=50){const o=Ve(t);(o||document.documentElement).style.overflowAnchor="none";const a=document.createRange();h(n.parentElement)&&(t.style.display="table-row",n.style.display="table-row");const i=new IntersectionObserver((function(r){r.forEach((r=>{var o;if(!r.isIntersecting)return;a.setStartAfter(t),a.setEndBefore(n);const i=a.getBoundingClientRect().height,s=null===(o=r.rootBounds)||void 0===o?void 0:o.height;r.target===t?e.invokeMethodAsync("OnSpacerBeforeVisible",r.intersectionRect.top-r.boundingClientRect.top,i,s):r.target===n&&n.offsetHeight>0&&e.invokeMethodAsync("OnSpacerAfterVisible",r.boundingClientRect.bottom-r.intersectionRect.bottom,i,s)}))}),{root:o,rootMargin:`${r}px`});i.observe(t),i.observe(n);const s=d(t),c=d(n),{observersByDotNetObjectId:l,id:u}=Xe(e);function d(e){const t={attributes:!0},n=new MutationObserver(((n,r)=>{h(e.parentElement)&&(r.disconnect(),e.style.display="table-row",r.observe(e,t)),i.unobserve(e),i.observe(e)}));return n.observe(e,t),n}function h(e){return null!==e&&(e instanceof HTMLTableElement&&""===e.style.display||"table"===e.style.display||e instanceof HTMLTableSectionElement&&""===e.style.display||"table-row-group"===e.style.display)}l[u]={intersectionObserver:i,mutationObserverBefore:s,mutationObserverAfter:c}},dispose:function(e){const{observersByDotNetObjectId:t,id:n}=Xe(e),r=t[n];r&&(r.intersectionObserver.disconnect(),r.mutationObserverBefore.disconnect(),r.mutationObserverAfter.disconnect(),e.dispose(),delete t[n])}},Ke=Symbol();function Ve(e){return e&&e!==document.body&&e!==document.documentElement?"visible"!==getComputedStyle(e).overflowY?e:Ve(e.parentElement):null}function Xe(e){var t;const n=e._callDispatcher,r=e._id;return null!==(t=n[Ke])&&void 0!==t||(n[Ke]={}),{observersByDotNetObjectId:n[Ke],id:r}}const Ye={getAndRemoveExistingTitle:function(){var e;const t=document.head?document.head.getElementsByTagName("title"):[];if(0===t.length)return null;let n=null;for(let r=t.length-1;r>=0;r--){const o=t[r],a=o.previousSibling;a instanceof Comment&&null!==U(a)||(null===n&&(n=o.textContent),null===(e=o.parentNode)||void 0===e||e.removeChild(o))}return n}},Ge={init:function(e,t){t._blazorInputFileNextFileId=0,t.addEventListener("click",(function(){t.value=""})),t.addEventListener("change",(function(){t._blazorFilesById={};const n=Array.prototype.map.call(t.files,(function(e){const n={id:++t._blazorInputFileNextFileId,lastModified:new Date(e.lastModified).toISOString(),name:e.name,size:e.size,contentType:e.type,readPromise:void 0,arrayBuffer:void 0,blob:e};return t._blazorFilesById[n.id]=n,n}));e.invokeMethodAsync("NotifyChange",n)}))},toImageFile:async function(e,t,n,r,o){const a=qe(e,t),i=await new Promise((function(e){const t=new Image;t.onload=function(){URL.revokeObjectURL(t.src),e(t)},t.onerror=function(){t.onerror=null,URL.revokeObjectURL(t.src)},t.src=URL.createObjectURL(a.blob)})),s=await new Promise((function(e){var t;const a=Math.min(1,r/i.width),s=Math.min(1,o/i.height),c=Math.min(a,s),l=document.createElement("canvas");l.width=Math.round(i.width*c),l.height=Math.round(i.height*c),null===(t=l.getContext("2d"))||void 0===t||t.drawImage(i,0,0,l.width,l.height),l.toBlob(e,n)})),c={id:++e._blazorInputFileNextFileId,lastModified:a.lastModified,name:a.name,size:(null==s?void 0:s.size)||0,contentType:n,blob:s||a.blob};return e._blazorFilesById[c.id]=c,c},readFileData:async function(e,t){return qe(e,t).blob}};function qe(e,t){const n=e._blazorFilesById[t];if(!n)throw new Error(`There is no file with ID ${t}. The file list may have changed. See https://aka.ms/aspnet/blazor-input-file-multiple-selections.`);return n}const Ze=new Set,Qe={enableNavigationPrompt:function(e){0===Ze.size&&window.addEventListener("beforeunload",et),Ze.add(e)},disableNavigationPrompt:function(e){Ze.delete(e),0===Ze.size&&window.removeEventListener("beforeunload",et)}};function et(e){e.preventDefault(),e.returnValue=!0}const tt=new Map,nt={navigateTo:function(e,t,n=!1){xe(e,t instanceof Object?t:{forceLoad:t,replaceHistoryEntry:n})},registerCustomEventType:function(e,t){if(!t)throw new Error("The options parameter is required.");if(a.has(e))throw new Error(`The event '${e}' is already registered.`);if(t.browserEventName){const n=i.get(t.browserEventName);n?n.push(e):i.set(t.browserEventName,[e]),s.forEach((n=>n(e,t.browserEventName)))}a.set(e,t)},rootComponents:g,runtime:{},_internal:{navigationManager:Oe,domWrapper:$e,Virtualize:We,PageTitle:Ye,InputFile:Ge,NavigationLock:Qe,getJSDataStreamChunk:async function(e,t,n){return e instanceof Blob?await async function(e,t,n){const r=e.slice(t,t+n),o=await r.arrayBuffer();return new Uint8Array(o)}(e,t,n):function(e,t,n){return new Uint8Array(e.buffer,e.byteOffset+t,n)}(e,t,n)},attachWebRendererInterop:function(t,n,r,o){var a,i;if(S.has(t))throw new Error(`Interop methods are already registered for renderer ${t}`);S.set(t,n),r&&o&&Object.keys(r).length>0&&function(t,n,r){if(p)throw new Error("Dynamic root components have already been enabled.");p=t,b=n;for(const[t,o]of Object.entries(r)){const r=e.findJSFunction(t,0);for(const e of o)r(e,n[e])}}(A(t),r,o),null===(i=null===(a=C.get(t))||void 0===a?void 0:a[0])||void 0===i||i.call(a),function(e){for(const t of I)t(e)}(t)}}};window.Blazor=nt;let rt=!1;const ot="function"==typeof TextDecoder?new TextDecoder("utf-8"):null,at=ot?ot.decode.bind(ot):function(e){let t=0;const n=e.length,r=[],o=[];for(;t65535&&(o-=65536,r.push(o>>>10&1023|55296),o=56320|1023&o),r.push(o)}r.length>1024&&(o.push(String.fromCharCode.apply(null,r)),r.length=0)}return o.push(String.fromCharCode.apply(null,r)),o.join("")},it=Math.pow(2,32),st=Math.pow(2,21)-1;function ct(e,t){return e[t]|e[t+1]<<8|e[t+2]<<16|e[t+3]<<24}function lt(e,t){return e[t]+(e[t+1]<<8)+(e[t+2]<<16)+(e[t+3]<<24>>>0)}function ut(e,t){const n=lt(e,t+4);if(n>st)throw new Error(`Cannot read uint64 with high order part ${n}, because the result would exceed Number.MAX_SAFE_INTEGER.`);return n*it+lt(e,t)}class dt{constructor(e){this.batchData=e;const t=new pt(e);this.arrayRangeReader=new bt(e),this.arrayBuilderSegmentReader=new vt(e),this.diffReader=new ht(e),this.editReader=new ft(e,t),this.frameReader=new mt(e,t)}updatedComponents(){return ct(this.batchData,this.batchData.length-20)}referenceFrames(){return ct(this.batchData,this.batchData.length-16)}disposedComponentIds(){return ct(this.batchData,this.batchData.length-12)}disposedEventHandlerIds(){return ct(this.batchData,this.batchData.length-8)}updatedComponentsEntry(e,t){const n=e+4*t;return ct(this.batchData,n)}referenceFramesEntry(e,t){return e+20*t}disposedComponentIdsEntry(e,t){const n=e+4*t;return ct(this.batchData,n)}disposedEventHandlerIdsEntry(e,t){const n=e+8*t;return ut(this.batchData,n)}}class ht{constructor(e){this.batchDataUint8=e}componentId(e){return ct(this.batchDataUint8,e)}edits(e){return e+4}editsEntry(e,t){return e+16*t}}class ft{constructor(e,t){this.batchDataUint8=e,this.stringReader=t}editType(e){return ct(this.batchDataUint8,e)}siblingIndex(e){return ct(this.batchDataUint8,e+4)}newTreeIndex(e){return ct(this.batchDataUint8,e+8)}moveToSiblingIndex(e){return ct(this.batchDataUint8,e+8)}removedAttributeName(e){const t=ct(this.batchDataUint8,e+12);return this.stringReader.readString(t)}}class mt{constructor(e,t){this.batchDataUint8=e,this.stringReader=t}frameType(e){return ct(this.batchDataUint8,e)}subtreeLength(e){return ct(this.batchDataUint8,e+4)}elementReferenceCaptureId(e){const t=ct(this.batchDataUint8,e+4);return this.stringReader.readString(t)}componentId(e){return ct(this.batchDataUint8,e+8)}elementName(e){const t=ct(this.batchDataUint8,e+8);return this.stringReader.readString(t)}textContent(e){const t=ct(this.batchDataUint8,e+4);return this.stringReader.readString(t)}markupContent(e){const t=ct(this.batchDataUint8,e+4);return this.stringReader.readString(t)}attributeName(e){const t=ct(this.batchDataUint8,e+4);return this.stringReader.readString(t)}attributeValue(e){const t=ct(this.batchDataUint8,e+8);return this.stringReader.readString(t)}attributeEventHandlerId(e){return ut(this.batchDataUint8,e+12)}}class pt{constructor(e){this.batchDataUint8=e,this.stringTableStartIndex=ct(e,e.length-4)}readString(e){if(-1===e)return null;{const n=ct(this.batchDataUint8,this.stringTableStartIndex+4*e),r=function(e,t){let n=0,r=0;for(let o=0;o<4;o++){const a=e[t+o];if(n|=(127&a)<async function(e,n){const r=function(e){const t=document.baseURI;return t.endsWith("/")?`${t}${e}`:`${t}/${e}`}(n),o=await import(r);if(void 0!==o){if(e.singleRuntime){const{beforeStart:n,afterStarted:r,beforeWebAssemblyStart:i,afterWebAssemblyStarted:s,beforeServerStart:c,afterServerStarted:l}=o;let u=n;e.webRendererId===Nt.Server&&c&&(u=c),e.webRendererId===Nt.WebAssembly&&i&&(u=i);let d=r;return e.webRendererId===Nt.Server&&l&&(d=l),e.webRendererId===Nt.WebAssembly&&s&&(d=s),a(e,u,d,t)}return function(e,t,n){var o;const i=n[0],{beforeStart:s,afterStarted:c,beforeWebStart:l,afterWebStarted:u,beforeWebAssemblyStart:d,afterWebAssemblyStarted:h,beforeServerStart:f,afterServerStarted:m}=t,p=!(l||u||d||h||f||m||!s&&!c),b=p&&i.enableClassicInitializers;if(p&&!i.enableClassicInitializers)null===(o=e.logger)||void 0===o||o.log(kt.Warning,`Initializer '${r}' will be ignored because multiple runtimes are available. use 'before(web|webAssembly|server)Start' and 'after(web|webAssembly|server)Started?' instead.)`);else if(b)return a(e,s,c,n);if(function(e){e.webAssembly?e.webAssembly.initializers||(e.webAssembly.initializers={beforeStart:[],afterStarted:[]}):e.webAssembly={initializers:{beforeStart:[],afterStarted:[]}},e.circuit?e.circuit.initializers||(e.circuit.initializers={beforeStart:[],afterStarted:[]}):e.circuit={initializers:{beforeStart:[],afterStarted:[]}}}(i),d&&i.webAssembly.initializers.beforeStart.push(d),h&&i.webAssembly.initializers.afterStarted.push(h),f&&i.circuit.initializers.beforeStart.push(f),m&&i.circuit.initializers.afterStarted.push(m),u&&e.afterStartedCallbacks.push(u),l)return l(i)}(e,o,t)}function a(e,t,n,r){if(n&&e.afterStartedCallbacks.push(n),t)return t(...r)}}(this,e))))}async invokeAfterStartedCallbacks(e){const t=(n=this.webRendererId,null===(r=C.get(n))||void 0===r?void 0:r[1]);var n,r;t&&await t,await Promise.all(this.afterStartedCallbacks.map((t=>t(e))))}}let Ot,Lt=!1;async function xt(){if(Lt)throw new Error("Blazor has already started.");Lt=!0,Ot=e.attachDispatcher({beginInvokeDotNetFromJS:Et,endInvokeJSFromDotNet:St,sendByteArray:It});const t=await async function(){const e=await fetch("http://github.com/_framework/blazor.modules.json",{method:"GET",credentials:"include",cache:"no-cache"}),t=await e.json(),n=new _t;return await n.importInitializersAsync(t,[]),n}();(function(){const e={AttachToDocument:(e,t)=>{!function(e,t,n){const r="::before";let o=!1;if(e.endsWith("::after"))e=e.slice(0,-7),o=!0;else if(e.endsWith(r))throw new Error(`The '${r}' selector is not supported.`);const a=function(e){const t=m.get(e);if(t)return m.delete(e),t}(e)||document.querySelector(e);if(!a)throw new Error(`Could not find any element matching selector '${e}'.`);!function(e,t,n,r){let o=fe[e];o||(o=new le(e),fe[e]=o),o.attachRootComponentToLogicalElement(n,t,r)}(n,P(a,!0),t,o)}(t,e,Nt.WebView)},RenderBatch:(e,t)=>{try{const n=Tt(t);(function(e,t){const n=fe[e];if(!n)throw new Error(`There is no browser renderer with ID ${e}.`);const r=t.arrayRangeReader,o=t.updatedComponents(),a=r.values(o),i=r.count(o),s=t.referenceFrames(),c=r.values(s),l=t.diffReader;for(let e=0;e{yt=!0,console.error(`${e}\n${t}`),function(){const e=document.querySelector("#blazor-error-ui");e&&(e.style.display="block"),rt||(rt=!0,document.querySelectorAll("#blazor-error-ui .reload").forEach((e=>{e.onclick=function(e){location.reload(),e.preventDefault()}})),document.querySelectorAll("#blazor-error-ui .dismiss").forEach((e=>{e.onclick=function(e){const t=document.querySelector("#blazor-error-ui");t&&(t.style.display="none"),e.preventDefault()}})))}()},BeginInvokeJS:Ot.beginInvokeJSFromDotNet.bind(Ot),EndInvokeDotNet:Ot.endInvokeDotNetFromJS.bind(Ot),SendByteArrayToJS:Rt,Navigate:Oe.navigateTo,Refresh:Oe.refresh,SetHasLocationChangingListeners:e=>{Oe.setHasLocationChangingListeners(Nt.WebView,e)},EndLocationChanging:Oe.endLocationChanging};window.external.receiveMessage((t=>{const n=function(e){if(yt||!e||!e.startsWith(gt))return null;const t=e.substring(gt.length),[n,...r]=JSON.parse(t);return{messageType:n,args:r}}(t);if(n){if(!Object.prototype.hasOwnProperty.call(e,n.messageType))throw new Error(`Unsupported IPC message type '${n.messageType}'`);e[n.messageType].apply(null,n.args)}}))})(),nt._internal.receiveWebViewDotNetDataStream=Ft,Oe.enableNavigationInterception(Nt.WebView),Oe.listenForNavigationEvents(Nt.WebView,Ct,Dt),At("AttachPage",Oe.getBaseURI(),Oe.getLocationHref()),await t.invokeAfterStartedCallbacks(nt)}function Ft(e,t,n,r){!function(e,t,n,r,o){let a=tt.get(t);if(!a){const n=new ReadableStream({start(e){tt.set(t,e),a=e}});e.supplyDotNetStream(t,n)}o?(a.error(o),tt.delete(t)):0===r?(a.close(),tt.delete(t)):a.enqueue(n.length===r?n:n.subarray(0,r))}(Ot,e,t,n,r)}nt.start=xt,window.DotNet=e,document&&document.currentScript&&"false"!==document.currentScript.getAttribute("autostart")&&xt()})(); \ No newline at end of file +(()=>{"use strict";var e,t,n,r={d:(e,t)=>{for(var n in t)r.o(t,n)&&!r.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t)};r.d({},{e:()=>Ot}),function(e){const t=[],n="__jsObjectId",r="__dotNetObject",o="__byte[]",a="__dotNetStream",i="__jsStreamReferenceLength";let s,c;class l{constructor(e){this._jsObject=e,this._cachedFunctions=new Map}findFunction(e){const t=this._cachedFunctions.get(e);if(t)return t;let n,r=this._jsObject;if(e.split(".").forEach((t=>{if(!(t in r))throw new Error(`Could not find '${e}' ('${t}' was undefined).`);n=r,r=r[t]})),r instanceof Function)return r=r.bind(n),this._cachedFunctions.set(e,r),r;throw new Error(`The value '${e}' is not a function.`)}getWrappedObject(){return this._jsObject}}const u={0:new l(window)};u[0]._cachedFunctions.set("import",(e=>("string"==typeof e&&e.startsWith("./")&&(e=new URL(e.substr(2),document.baseURI).toString()),import(e))));let d,h=1;function f(e){t.push(e)}function m(e){if(e&&"object"==typeof e){u[h]=new l(e);const t={[n]:h};return h++,t}throw new Error(`Cannot create a JSObjectReference from the value '${e}'.`)}function p(e){let t=-1;if(e instanceof ArrayBuffer&&(e=new Uint8Array(e)),e instanceof Blob)t=e.size;else{if(!(e.buffer instanceof ArrayBuffer))throw new Error("Supplied value is not a typed array or blob.");if(void 0===e.byteLength)throw new Error(`Cannot create a JSStreamReference from the value '${e}' as it doesn't have a byteLength.`);t=e.byteLength}const r={[i]:t};try{const t=m(e);r[n]=t[n]}catch(t){throw new Error(`Cannot create a JSStreamReference from the value '${e}'.`)}return r}function b(e,n){c=e;const r=n?JSON.parse(n,((e,n)=>t.reduce(((t,n)=>n(e,t)),n))):null;return c=void 0,r}function v(){if(void 0===s)throw new Error("No call dispatcher has been set.");if(null===s)throw new Error("There are multiple .NET runtimes present, so a default dispatcher could not be resolved. Use DotNetObject to invoke .NET instance methods.");return s}e.attachDispatcher=function(e){const t=new g(e);return void 0===s?s=t:s&&(s=null),t},e.attachReviver=f,e.invokeMethod=function(e,t,...n){return v().invokeDotNetStaticMethod(e,t,...n)},e.invokeMethodAsync=function(e,t,...n){return v().invokeDotNetStaticMethodAsync(e,t,...n)},e.createJSObjectReference=m,e.createJSStreamReference=p,e.disposeJSObjectReference=function(e){const t=e&&e[n];"number"==typeof t&&E(t)},function(e){e[e.Default=0]="Default",e[e.JSObjectReference=1]="JSObjectReference",e[e.JSStreamReference=2]="JSStreamReference",e[e.JSVoidResult=3]="JSVoidResult"}(d=e.JSCallResultType||(e.JSCallResultType={}));class g{constructor(e){this._dotNetCallDispatcher=e,this._byteArraysToBeRevived=new Map,this._pendingDotNetToJSStreams=new Map,this._pendingAsyncCalls={},this._nextAsyncCallId=1}getDotNetCallDispatcher(){return this._dotNetCallDispatcher}invokeJSFromDotNet(e,t,n,r){const o=b(this,t),a=D(w(e,r)(...o||[]),n);return null==a?null:N(this,a)}beginInvokeJSFromDotNet(e,t,n,r,o){const a=new Promise((e=>{const r=b(this,n);e(w(t,o)(...r||[]))}));e&&a.then((t=>N(this,[e,!0,D(t,r)]))).then((t=>this._dotNetCallDispatcher.endInvokeJSFromDotNet(e,!0,t)),(t=>this._dotNetCallDispatcher.endInvokeJSFromDotNet(e,!1,JSON.stringify([e,!1,y(t)]))))}endInvokeDotNetFromJS(e,t,n){const r=t?b(this,n):new Error(n);this.completePendingCall(parseInt(e,10),t,r)}invokeDotNetStaticMethod(e,t,...n){return this.invokeDotNetMethod(e,t,null,n)}invokeDotNetStaticMethodAsync(e,t,...n){return this.invokeDotNetMethodAsync(e,t,null,n)}invokeDotNetMethod(e,t,n,r){if(this._dotNetCallDispatcher.invokeDotNetFromJS){const o=N(this,r),a=this._dotNetCallDispatcher.invokeDotNetFromJS(e,t,n,o);return a?b(this,a):null}throw new Error("The current dispatcher does not support synchronous calls from JS to .NET. Use invokeDotNetMethodAsync instead.")}invokeDotNetMethodAsync(e,t,n,r){if(e&&n)throw new Error(`For instance method calls, assemblyName should be null. Received '${e}'.`);const o=this._nextAsyncCallId++,a=new Promise(((e,t)=>{this._pendingAsyncCalls[o]={resolve:e,reject:t}}));try{const a=N(this,r);this._dotNetCallDispatcher.beginInvokeDotNetFromJS(o,e,t,n,a)}catch(e){this.completePendingCall(o,!1,e)}return a}receiveByteArray(e,t){this._byteArraysToBeRevived.set(e,t)}processByteArray(e){const t=this._byteArraysToBeRevived.get(e);return t?(this._byteArraysToBeRevived.delete(e),t):null}supplyDotNetStream(e,t){if(this._pendingDotNetToJSStreams.has(e)){const n=this._pendingDotNetToJSStreams.get(e);this._pendingDotNetToJSStreams.delete(e),n.resolve(t)}else{const n=new C;n.resolve(t),this._pendingDotNetToJSStreams.set(e,n)}}getDotNetStreamPromise(e){let t;if(this._pendingDotNetToJSStreams.has(e))t=this._pendingDotNetToJSStreams.get(e).streamPromise,this._pendingDotNetToJSStreams.delete(e);else{const n=new C;this._pendingDotNetToJSStreams.set(e,n),t=n.streamPromise}return t}completePendingCall(e,t,n){if(!this._pendingAsyncCalls.hasOwnProperty(e))throw new Error(`There is no pending async call with ID ${e}.`);const r=this._pendingAsyncCalls[e];delete this._pendingAsyncCalls[e],t?r.resolve(n):r.reject(n)}}function y(e){return e instanceof Error?`${e.message}\n${e.stack}`:e?e.toString():"null"}function w(e,t){const n=u[t];if(n)return n.findFunction(e);throw new Error(`JS object instance with ID ${t} does not exist (has it been disposed?).`)}function E(e){delete u[e]}e.findJSFunction=w,e.disposeJSObjectReferenceById=E;class S{constructor(e,t){this._id=e,this._callDispatcher=t}invokeMethod(e,...t){return this._callDispatcher.invokeDotNetMethod(null,e,this._id,t)}invokeMethodAsync(e,...t){return this._callDispatcher.invokeDotNetMethodAsync(null,e,this._id,t)}dispose(){this._callDispatcher.invokeDotNetMethodAsync(null,"__Dispose",this._id,null).catch((e=>console.error(e)))}serializeAsArg(){return{[r]:this._id}}}e.DotNetObject=S,f((function(e,t){if(t&&"object"==typeof t){if(t.hasOwnProperty(r))return new S(t[r],c);if(t.hasOwnProperty(n)){const e=t[n],r=u[e];if(r)return r.getWrappedObject();throw new Error(`JS object instance with Id '${e}' does not exist. It may have been disposed.`)}if(t.hasOwnProperty(o)){const e=t[o],n=c.processByteArray(e);if(void 0===n)throw new Error(`Byte array index '${e}' does not exist.`);return n}if(t.hasOwnProperty(a)){const e=t[a],n=c.getDotNetStreamPromise(e);return new I(n)}}return t}));class I{constructor(e){this._streamPromise=e}stream(){return this._streamPromise}async arrayBuffer(){return new Response(await this.stream()).arrayBuffer()}}class C{constructor(){this.streamPromise=new Promise(((e,t)=>{this.resolve=e,this.reject=t}))}}function D(e,t){switch(t){case d.Default:return e;case d.JSObjectReference:return m(e);case d.JSStreamReference:return p(e);case d.JSVoidResult:return null;default:throw new Error(`Invalid JS call result type '${t}'.`)}}let A=0;function N(e,t){A=0,c=e;const n=JSON.stringify(t,k);return c=void 0,n}function k(e,t){if(t instanceof S)return t.serializeAsArg();if(t instanceof Uint8Array){c.getDotNetCallDispatcher().sendByteArray(A,t);const e={[o]:A};return A++,e}return t}}(e||(e={})),function(e){e[e.prependFrame=1]="prependFrame",e[e.removeFrame=2]="removeFrame",e[e.setAttribute=3]="setAttribute",e[e.removeAttribute=4]="removeAttribute",e[e.updateText=5]="updateText",e[e.stepIn=6]="stepIn",e[e.stepOut=7]="stepOut",e[e.updateMarkup=8]="updateMarkup",e[e.permutationListEntry=9]="permutationListEntry",e[e.permutationListEnd=10]="permutationListEnd"}(t||(t={})),function(e){e[e.element=1]="element",e[e.text=2]="text",e[e.attribute=3]="attribute",e[e.component=4]="component",e[e.region=5]="region",e[e.elementReferenceCapture=6]="elementReferenceCapture",e[e.markup=8]="markup",e[e.namedEvent=10]="namedEvent"}(n||(n={}));class o{constructor(e,t){this.componentId=e,this.fieldValue=t}static fromEvent(e,t){const n=t.target;if(n instanceof Element){const t=function(e){return e instanceof HTMLInputElement?e.type&&"checkbox"===e.type.toLowerCase()?{value:e.checked}:{value:e.value}:e instanceof HTMLSelectElement||e instanceof HTMLTextAreaElement?{value:e.value}:null}(n);if(t)return new o(e,t.value)}return null}}const a=new Map,i=new Map,s=[];function c(e){return a.get(e)}function l(e){const t=a.get(e);return(null==t?void 0:t.browserEventName)||e}function u(e,t){e.forEach((e=>a.set(e,t)))}function d(e){const t=[];for(let n=0;ne.selected)).map((e=>e.value))}}{const e=function(e){return!!e&&"INPUT"===e.tagName&&"checkbox"===e.getAttribute("type")}(t);return{value:e?!!t.checked:t.value}}}}),u(["copy","cut","paste"],{createEventArgs:e=>({type:e.type})}),u(["drag","dragend","dragenter","dragleave","dragover","dragstart","drop"],{createEventArgs:e=>{return{...h(t=e),dataTransfer:t.dataTransfer?{dropEffect:t.dataTransfer.dropEffect,effectAllowed:t.dataTransfer.effectAllowed,files:Array.from(t.dataTransfer.files).map((e=>e.name)),items:Array.from(t.dataTransfer.items).map((e=>({kind:e.kind,type:e.type}))),types:t.dataTransfer.types}:null};var t}}),u(["focus","blur","focusin","focusout"],{createEventArgs:e=>({type:e.type})}),u(["keydown","keyup","keypress"],{createEventArgs:e=>{return{key:(t=e).key,code:t.code,location:t.location,repeat:t.repeat,ctrlKey:t.ctrlKey,shiftKey:t.shiftKey,altKey:t.altKey,metaKey:t.metaKey,type:t.type};var t}}),u(["contextmenu","click","mouseover","mouseout","mousemove","mousedown","mouseup","mouseleave","mouseenter","dblclick"],{createEventArgs:e=>h(e)}),u(["error"],{createEventArgs:e=>{return{message:(t=e).message,filename:t.filename,lineno:t.lineno,colno:t.colno,type:t.type};var t}}),u(["loadstart","timeout","abort","load","loadend","progress"],{createEventArgs:e=>{return{lengthComputable:(t=e).lengthComputable,loaded:t.loaded,total:t.total,type:t.type};var t}}),u(["touchcancel","touchend","touchmove","touchenter","touchleave","touchstart"],{createEventArgs:e=>{return{detail:(t=e).detail,touches:d(t.touches),targetTouches:d(t.targetTouches),changedTouches:d(t.changedTouches),ctrlKey:t.ctrlKey,shiftKey:t.shiftKey,altKey:t.altKey,metaKey:t.metaKey,type:t.type};var t}}),u(["gotpointercapture","lostpointercapture","pointercancel","pointerdown","pointerenter","pointerleave","pointermove","pointerout","pointerover","pointerup"],{createEventArgs:e=>{return{...h(t=e),pointerId:t.pointerId,width:t.width,height:t.height,pressure:t.pressure,tiltX:t.tiltX,tiltY:t.tiltY,pointerType:t.pointerType,isPrimary:t.isPrimary};var t}}),u(["wheel","mousewheel"],{createEventArgs:e=>{return{...h(t=e),deltaX:t.deltaX,deltaY:t.deltaY,deltaZ:t.deltaZ,deltaMode:t.deltaMode};var t}}),u(["cancel","close","toggle"],{createEventArgs:()=>({})});const f=["date","datetime-local","month","time","week"],m=new Map;let p,b,v=0;const g={async add(e,t,n){if(!n)throw new Error("initialParameters must be an object, even if empty.");const r="__bl-dynamic-root:"+(++v).toString();m.set(r,e);const o=await E().invokeMethodAsync("AddRootComponent",t,r),a=new w(o,b[t]);return await a.setParameters(n),a}};class y{invoke(e){return this._callback(e)}setCallback(t){this._selfJSObjectReference||(this._selfJSObjectReference=e.createJSObjectReference(this)),this._callback=t}getJSObjectReference(){return this._selfJSObjectReference}dispose(){this._selfJSObjectReference&&e.disposeJSObjectReference(this._selfJSObjectReference)}}class w{constructor(e,t){this._jsEventCallbackWrappers=new Map,this._componentId=e;for(const e of t)"eventcallback"===e.type&&this._jsEventCallbackWrappers.set(e.name.toLowerCase(),new y)}setParameters(e){const t={},n=Object.entries(e||{}),r=n.length;for(const[e,r]of n){const n=this._jsEventCallbackWrappers.get(e.toLowerCase());n&&r?(n.setCallback(r),t[e]=n.getJSObjectReference()):t[e]=r}return E().invokeMethodAsync("SetRootComponentParameters",this._componentId,r,t)}async dispose(){if(null!==this._componentId){await E().invokeMethodAsync("RemoveRootComponent",this._componentId),this._componentId=null;for(const e of this._jsEventCallbackWrappers.values())e.dispose()}}}function E(){if(!p)throw new Error("Dynamic root components have not been enabled in this application.");return p}const S=new Map,I=[],C=new Map;function D(e,t,n){return N(e,t.eventHandlerId,(()=>A(e).invokeMethodAsync("DispatchEventAsync",t,n)))}function A(e){const t=S.get(e);if(!t)throw new Error(`No interop methods are registered for renderer ${e}`);return t}let N=(e,t,n)=>n();const k=x(["abort","blur","cancel","canplay","canplaythrough","change","close","cuechange","durationchange","emptied","ended","error","focus","load","loadeddata","loadedmetadata","loadend","loadstart","mouseenter","mouseleave","pointerenter","pointerleave","pause","play","playing","progress","ratechange","reset","scroll","seeked","seeking","stalled","submit","suspend","timeupdate","toggle","unload","volumechange","waiting","DOMNodeInsertedIntoDocument","DOMNodeRemovedFromDocument"]),R={submit:!0},T=x(["click","dblclick","mousedown","mousemove","mouseup"]);class _{constructor(e){this.browserRendererId=e,this.afterClickCallbacks=[];const t=++_.nextEventDelegatorId;this.eventsCollectionKey=`_blazorEvents_${t}`,this.eventInfoStore=new O(this.onGlobalEvent.bind(this))}setListener(e,t,n,r){const o=this.getEventHandlerInfosForElement(e,!0),a=o.getHandler(t);if(a)this.eventInfoStore.update(a.eventHandlerId,n);else{const a={element:e,eventName:t,eventHandlerId:n,renderingComponentId:r};this.eventInfoStore.add(a),o.setHandler(t,a)}}getHandler(e){return this.eventInfoStore.get(e)}removeListener(e){const t=this.eventInfoStore.remove(e);if(t){const e=t.element,n=this.getEventHandlerInfosForElement(e,!1);n&&n.removeHandler(t.eventName)}}notifyAfterClick(e){this.afterClickCallbacks.push(e),this.eventInfoStore.addGlobalListener("click")}setStopPropagation(e,t,n){this.getEventHandlerInfosForElement(e,!0).stopPropagation(t,n)}setPreventDefault(e,t,n){this.getEventHandlerInfosForElement(e,!0).preventDefault(t,n)}onGlobalEvent(e){if(!(e.target instanceof Element))return;this.dispatchGlobalEventToAllElements(e.type,e);const t=(n=e.type,i.get(n));var n;t&&t.forEach((t=>this.dispatchGlobalEventToAllElements(t,e))),"click"===e.type&&this.afterClickCallbacks.forEach((t=>t(e)))}dispatchGlobalEventToAllElements(e,t){const n=t.composedPath();let r=n.shift(),a=null,i=!1;const s=Object.prototype.hasOwnProperty.call(k,e);let l=!1;for(;r;){const h=r,f=this.getEventHandlerInfosForElement(h,!1);if(f){const n=f.getHandler(e);if(n&&(u=h,d=t.type,!((u instanceof HTMLButtonElement||u instanceof HTMLInputElement||u instanceof HTMLTextAreaElement||u instanceof HTMLSelectElement)&&Object.prototype.hasOwnProperty.call(T,d)&&u.disabled))){if(!i){const n=c(e);a=(null==n?void 0:n.createEventArgs)?n.createEventArgs(t):{},i=!0}Object.prototype.hasOwnProperty.call(R,t.type)&&t.preventDefault(),D(this.browserRendererId,{eventHandlerId:n.eventHandlerId,eventName:e,eventFieldInfo:o.fromEvent(n.renderingComponentId,t)},a)}f.stopPropagation(e)&&(l=!0),f.preventDefault(e)&&t.preventDefault()}r=s||l?void 0:n.shift()}var u,d}getEventHandlerInfosForElement(e,t){return Object.prototype.hasOwnProperty.call(e,this.eventsCollectionKey)?e[this.eventsCollectionKey]:t?e[this.eventsCollectionKey]=new L:null}}_.nextEventDelegatorId=0;class O{constructor(e){this.globalListener=e,this.infosByEventHandlerId={},this.countByEventName={},s.push(this.handleEventNameAliasAdded.bind(this))}add(e){if(this.infosByEventHandlerId[e.eventHandlerId])throw new Error(`Event ${e.eventHandlerId} is already tracked`);this.infosByEventHandlerId[e.eventHandlerId]=e,this.addGlobalListener(e.eventName)}get(e){return this.infosByEventHandlerId[e]}addGlobalListener(e){if(e=l(e),Object.prototype.hasOwnProperty.call(this.countByEventName,e))this.countByEventName[e]++;else{this.countByEventName[e]=1;const t=Object.prototype.hasOwnProperty.call(k,e);document.addEventListener(e,this.globalListener,t)}}update(e,t){if(Object.prototype.hasOwnProperty.call(this.infosByEventHandlerId,t))throw new Error(`Event ${t} is already tracked`);const n=this.infosByEventHandlerId[e];delete this.infosByEventHandlerId[e],n.eventHandlerId=t,this.infosByEventHandlerId[t]=n}remove(e){const t=this.infosByEventHandlerId[e];if(t){delete this.infosByEventHandlerId[e];const n=l(t.eventName);0==--this.countByEventName[n]&&(delete this.countByEventName[n],document.removeEventListener(n,this.globalListener))}return t}handleEventNameAliasAdded(e,t){if(Object.prototype.hasOwnProperty.call(this.countByEventName,e)){const n=this.countByEventName[e];delete this.countByEventName[e],document.removeEventListener(e,this.globalListener),this.addGlobalListener(t),this.countByEventName[t]+=n-1}}}class L{constructor(){this.handlers={},this.preventDefaultFlags=null,this.stopPropagationFlags=null}getHandler(e){return Object.prototype.hasOwnProperty.call(this.handlers,e)?this.handlers[e]:null}setHandler(e,t){this.handlers[e]=t}removeHandler(e){delete this.handlers[e]}preventDefault(e,t){return void 0!==t&&(this.preventDefaultFlags=this.preventDefaultFlags||{},this.preventDefaultFlags[e]=t),!!this.preventDefaultFlags&&this.preventDefaultFlags[e]}stopPropagation(e,t){return void 0!==t&&(this.stopPropagationFlags=this.stopPropagationFlags||{},this.stopPropagationFlags[e]=t),!!this.stopPropagationFlags&&this.stopPropagationFlags[e]}}function x(e){const t={};return e.forEach((e=>{t[e]=!0})),t}const F=Symbol(),M=Symbol();function P(e,t){if(F in e)return e;const n=[];if(e.childNodes.length>0){if(!t)throw new Error("New logical elements must start empty, or allowExistingContents must be true");e.childNodes.forEach((t=>{const r=P(t,!0);r[M]=e,n.push(r)}))}return e[F]=n,e}function B(e){const t=W(e);for(;t.length;)J(e,0)}function j(e,t){const n=document.createComment("!");return H(n,e,t),n}function H(e,t,n){const r=e;let o=e;if(F in e){const t=G(r);if(t!==e){const n=new Range;n.setStartBefore(e),n.setEndAfter(t),o=n.extractContents()}}const a=U(r);if(a){const e=W(a),t=Array.prototype.indexOf.call(e,r);e.splice(t,1),delete r[M]}const i=W(t);if(n0;)J(n,0)}const r=n;r.parentNode.removeChild(r)}function U(e){return e[M]||null}function z(e,t){return W(e)[t]}function $(e){const t=X(e);return"http://www.w3.org/2000/svg"===t.namespaceURI&&"foreignObject"!==t.tagName}function W(e){return e[F]}function K(e){const t=W(U(e));return t[Array.prototype.indexOf.call(t,e)+1]||null}function V(e,t){const n=W(e);t.forEach((e=>{e.moveRangeStart=n[e.fromSiblingIndex],e.moveRangeEnd=G(e.moveRangeStart)})),t.forEach((t=>{const r=document.createComment("marker");t.moveToBeforeMarker=r;const o=n[t.toSiblingIndex+1];o?o.parentNode.insertBefore(r,o):Y(r,e)})),t.forEach((e=>{const t=e.moveToBeforeMarker,n=t.parentNode,r=e.moveRangeStart,o=e.moveRangeEnd;let a=r;for(;a;){const e=a.nextSibling;if(n.insertBefore(a,t),a===o)break;a=e}n.removeChild(t)})),t.forEach((e=>{n[e.toSiblingIndex]=e.moveRangeStart}))}function X(e){if(e instanceof Element||e instanceof DocumentFragment)return e;if(e instanceof Comment)return e.parentNode;throw new Error("Not a valid logical element")}function Y(e,t){if(t instanceof Element||t instanceof DocumentFragment)t.appendChild(e);else{if(!(t instanceof Comment))throw new Error(`Cannot append node because the parent is not a valid logical element. Parent: ${t}`);{const n=K(t);n?n.parentNode.insertBefore(e,n):Y(e,U(t))}}}function G(e){if(e instanceof Element||e instanceof DocumentFragment)return e;const t=K(e);if(t)return t.previousSibling;{const t=U(e);return t instanceof Element||t instanceof DocumentFragment?t.lastChild:G(t)}}function q(e){return`_bl_${e}`}Symbol();const Z="__internalId";e.attachReviver(((e,t)=>t&&"object"==typeof t&&Object.prototype.hasOwnProperty.call(t,Z)&&"string"==typeof t[Z]?function(e){const t=`[${q(e)}]`;return document.querySelector(t)}(t[Z]):t));const Q="_blazorDeferredValue";function ee(e){return"select-multiple"===e.type}function te(e,t){e.value=t||""}function ne(e,t){e instanceof HTMLSelectElement?ee(e)?function(e,t){t||(t=[]);for(let n=0;n{Ce()&&function(e,t){if(0!==e.button||function(e){return e.ctrlKey||e.shiftKey||e.altKey||e.metaKey}(e))return;if(e.defaultPrevented)return;const n=function(e){const t=!window._blazorDisableComposedPath&&e.composedPath&&e.composedPath();if(t){for(let e=0;e{const t=document.createElement("script");t.textContent=e.textContent,e.getAttributeNames().forEach((n=>{t.setAttribute(n,e.getAttribute(n))})),e.parentNode.replaceChild(t,e)})),oe.content));var i;let s=0;for(;a.firstChild;)H(a.firstChild,o,s++)}applyAttribute(e,t,n,r){const o=e.frameReader,a=o.attributeName(r),i=o.attributeEventHandlerId(r);if(i){const e=he(a);return void this.eventDelegator.setListener(n,e,i,t)}const s=o.attributeValue(r);this.setOrRemoveAttributeOrProperty(n,a,s)}insertFrameRange(e,t,n,r,o,a,i){const s=r;for(let s=a;s{He(t,e)})},enableNavigationInterception:function(e){if(void 0!==me&&me!==e)throw new Error("Only one interactive runtime may enable navigation interception at a time.");me=e},setHasLocationChangingListeners:function(e,t){const n=Re.get(e);if(!n)throw new Error(`Renderer with ID '${e}' is not listening for navigation events`);n.hasLocationChangingEventListeners=t},endLocationChanging:function(e,t){_e&&e===ke&&(_e(t),_e=null)},navigateTo:function(e,t){xe(e,t,!0)},refresh:function(e){!e&&we()?Ee(location.href,!0):location.reload()},getBaseURI:()=>document.baseURI,getLocationHref:()=>location.href,scrollToElement:Le};function Le(e){const t=document.getElementById(e);return!!t&&(t.scrollIntoView(),!0)}function xe(e,t,n=!1){const r=Se(e),o=ze();if(t.forceLoad||!ye(r)||"serverside-fullpageload"===o)!function(e,t){if(location.href===e){const t=e+"?";history.replaceState(null,"",t),location.replace(e)}else t?location.replace(e):location.href=e}(e,t.replaceHistoryEntry);else if("clientside-router"===o)Fe(r,!1,t.replaceHistoryEntry,t.historyEntryState,n);else{if("serverside-enhanced"!==o)throw new Error(`Unsupported page load mechanism: ${o}`);Ee(r,t.replaceHistoryEntry)}}async function Fe(e,t,n,r=void 0,o=!1){if(Be(),function(e){const t=e.indexOf("#");return t>-1&&location.href.replace(location.hash,"")===e.substring(0,t)}(e))return void function(e,t,n){Me(e,t,n);const r=e.indexOf("#");r!==e.length-1&&Le(e.substring(r+1))}(e,n,r);const a=Ue();(o||!(null==a?void 0:a.hasLocationChangingEventListeners)||await je(e,r,t,a))&&(ge=!0,Me(e,n,r),await He(t))}function Me(e,t,n=void 0){t?history.replaceState({userState:n,_index:Ne},"",e):(Ne++,history.pushState({userState:n,_index:Ne},"",e))}function Pe(e){return new Promise((t=>{const n=Te;Te=()=>{Te=n,t()},history.go(e)}))}function Be(){_e&&(_e(!1),_e=null)}function je(e,t,n,r){return new Promise((o=>{Be(),ke++,_e=o,r.locationChanging(ke,e,t,n)}))}async function He(e,t){const n=null!=t?t:location.href;await Promise.all(Array.from(Re,(async([t,r])=>{var o,a;a=t,S.has(a)&&await r.locationChanged(n,null===(o=history.state)||void 0===o?void 0:o.userState,e)})))}async function Je(e){var t,n;Te&&"serverside-enhanced"!==ze()&&await Te(e),Ne=null!==(n=null===(t=history.state)||void 0===t?void 0:t._index)&&void 0!==n?n:0}function Ue(){const e=De();if(void 0!==e)return Re.get(e)}function ze(){return Ce()?"clientside-router":we()?"serverside-enhanced":window.Blazor._internal.isBlazorWeb?"serverside-fullpageload":"clientside-router"}const $e={focus:function(e,t){if(e instanceof HTMLElement)e.focus({preventScroll:t});else{if(!(e instanceof SVGElement))throw new Error("Unable to focus an invalid element.");if(!e.hasAttribute("tabindex"))throw new Error("Unable to focus an SVG element that does not have a tabindex.");e.focus({preventScroll:t})}},focusBySelector:function(e,t){const n=document.querySelector(e);n&&(n.hasAttribute("tabindex")||(n.tabIndex=-1),n.focus({preventScroll:!0}))}},We={init:function(e,t,n,r=50){const o=Ve(t);(o||document.documentElement).style.overflowAnchor="none";const a=document.createRange();h(n.parentElement)&&(t.style.display="table-row",n.style.display="table-row");const i=new IntersectionObserver((function(r){r.forEach((r=>{var o;if(!r.isIntersecting)return;a.setStartAfter(t),a.setEndBefore(n);const i=a.getBoundingClientRect().height,s=null===(o=r.rootBounds)||void 0===o?void 0:o.height;r.target===t?e.invokeMethodAsync("OnSpacerBeforeVisible",r.intersectionRect.top-r.boundingClientRect.top,i,s):r.target===n&&n.offsetHeight>0&&e.invokeMethodAsync("OnSpacerAfterVisible",r.boundingClientRect.bottom-r.intersectionRect.bottom,i,s)}))}),{root:o,rootMargin:`${r}px`});i.observe(t),i.observe(n);const s=d(t),c=d(n),{observersByDotNetObjectId:l,id:u}=Xe(e);function d(e){const t={attributes:!0},n=new MutationObserver(((n,r)=>{h(e.parentElement)&&(r.disconnect(),e.style.display="table-row",r.observe(e,t)),i.unobserve(e),i.observe(e)}));return n.observe(e,t),n}function h(e){return null!==e&&(e instanceof HTMLTableElement&&""===e.style.display||"table"===e.style.display||e instanceof HTMLTableSectionElement&&""===e.style.display||"table-row-group"===e.style.display)}l[u]={intersectionObserver:i,mutationObserverBefore:s,mutationObserverAfter:c}},dispose:function(e){const{observersByDotNetObjectId:t,id:n}=Xe(e),r=t[n];r&&(r.intersectionObserver.disconnect(),r.mutationObserverBefore.disconnect(),r.mutationObserverAfter.disconnect(),e.dispose(),delete t[n])}},Ke=Symbol();function Ve(e){return e&&e!==document.body&&e!==document.documentElement?"visible"!==getComputedStyle(e).overflowY?e:Ve(e.parentElement):null}function Xe(e){var t;const n=e._callDispatcher,r=e._id;return null!==(t=n[Ke])&&void 0!==t||(n[Ke]={}),{observersByDotNetObjectId:n[Ke],id:r}}const Ye={getAndRemoveExistingTitle:function(){var e;const t=document.head?document.head.getElementsByTagName("title"):[];if(0===t.length)return null;let n=null;for(let r=t.length-1;r>=0;r--){const o=t[r],a=o.previousSibling;a instanceof Comment&&null!==U(a)||(null===n&&(n=o.textContent),null===(e=o.parentNode)||void 0===e||e.removeChild(o))}return n}},Ge={init:function(e,t){t._blazorInputFileNextFileId=0,t.addEventListener("click",(function(){t.value=""})),t.addEventListener("change",(function(){t._blazorFilesById={};const n=Array.prototype.map.call(t.files,(function(e){const n={id:++t._blazorInputFileNextFileId,lastModified:new Date(e.lastModified).toISOString(),name:e.name,size:e.size,contentType:e.type,readPromise:void 0,arrayBuffer:void 0,blob:e};return t._blazorFilesById[n.id]=n,n}));e.invokeMethodAsync("NotifyChange",n)}))},toImageFile:async function(e,t,n,r,o){const a=qe(e,t),i=await new Promise((function(e){const t=new Image;t.onload=function(){URL.revokeObjectURL(t.src),e(t)},t.onerror=function(){t.onerror=null,URL.revokeObjectURL(t.src)},t.src=URL.createObjectURL(a.blob)})),s=await new Promise((function(e){var t;const a=Math.min(1,r/i.width),s=Math.min(1,o/i.height),c=Math.min(a,s),l=document.createElement("canvas");l.width=Math.round(i.width*c),l.height=Math.round(i.height*c),null===(t=l.getContext("2d"))||void 0===t||t.drawImage(i,0,0,l.width,l.height),l.toBlob(e,n)})),c={id:++e._blazorInputFileNextFileId,lastModified:a.lastModified,name:a.name,size:(null==s?void 0:s.size)||0,contentType:n,blob:s||a.blob};return e._blazorFilesById[c.id]=c,c},readFileData:async function(e,t){return qe(e,t).blob}};function qe(e,t){const n=e._blazorFilesById[t];if(!n)throw new Error(`There is no file with ID ${t}. The file list may have changed. See https://aka.ms/aspnet/blazor-input-file-multiple-selections.`);return n}const Ze=new Set,Qe={enableNavigationPrompt:function(e){0===Ze.size&&window.addEventListener("beforeunload",et),Ze.add(e)},disableNavigationPrompt:function(e){Ze.delete(e),0===Ze.size&&window.removeEventListener("beforeunload",et)}};function et(e){e.preventDefault(),e.returnValue=!0}const tt=new Map,nt={navigateTo:function(e,t,n=!1){xe(e,t instanceof Object?t:{forceLoad:t,replaceHistoryEntry:n})},registerCustomEventType:function(e,t){if(!t)throw new Error("The options parameter is required.");if(a.has(e))throw new Error(`The event '${e}' is already registered.`);if(t.browserEventName){const n=i.get(t.browserEventName);n?n.push(e):i.set(t.browserEventName,[e]),s.forEach((n=>n(e,t.browserEventName)))}a.set(e,t)},rootComponents:g,runtime:{},_internal:{navigationManager:Oe,domWrapper:$e,Virtualize:We,PageTitle:Ye,InputFile:Ge,NavigationLock:Qe,getJSDataStreamChunk:async function(e,t,n){return e instanceof Blob?await async function(e,t,n){const r=e.slice(t,t+n),o=await r.arrayBuffer();return new Uint8Array(o)}(e,t,n):function(e,t,n){return new Uint8Array(e.buffer,e.byteOffset+t,n)}(e,t,n)},attachWebRendererInterop:function(t,n,r,o){var a,i;if(S.has(t))throw new Error(`Interop methods are already registered for renderer ${t}`);S.set(t,n),r&&o&&Object.keys(r).length>0&&function(t,n,r){if(p)throw new Error("Dynamic root components have already been enabled.");p=t,b=n;for(const[t,o]of Object.entries(r)){const r=e.findJSFunction(t,0);for(const e of o)r(e,n[e])}}(A(t),r,o),null===(i=null===(a=C.get(t))||void 0===a?void 0:a[0])||void 0===i||i.call(a),function(e){for(const t of I)t(e)}(t)}}};window.Blazor=nt;let rt=!1;const ot="function"==typeof TextDecoder?new TextDecoder("utf-8"):null,at=ot?ot.decode.bind(ot):function(e){let t=0;const n=e.length,r=[],o=[];for(;t65535&&(o-=65536,r.push(o>>>10&1023|55296),o=56320|1023&o),r.push(o)}r.length>1024&&(o.push(String.fromCharCode.apply(null,r)),r.length=0)}return o.push(String.fromCharCode.apply(null,r)),o.join("")},it=Math.pow(2,32),st=Math.pow(2,21)-1;function ct(e,t){return e[t]|e[t+1]<<8|e[t+2]<<16|e[t+3]<<24}function lt(e,t){return e[t]+(e[t+1]<<8)+(e[t+2]<<16)+(e[t+3]<<24>>>0)}function ut(e,t){const n=lt(e,t+4);if(n>st)throw new Error(`Cannot read uint64 with high order part ${n}, because the result would exceed Number.MAX_SAFE_INTEGER.`);return n*it+lt(e,t)}class dt{constructor(e){this.batchData=e;const t=new pt(e);this.arrayRangeReader=new bt(e),this.arrayBuilderSegmentReader=new vt(e),this.diffReader=new ht(e),this.editReader=new ft(e,t),this.frameReader=new mt(e,t)}updatedComponents(){return ct(this.batchData,this.batchData.length-20)}referenceFrames(){return ct(this.batchData,this.batchData.length-16)}disposedComponentIds(){return ct(this.batchData,this.batchData.length-12)}disposedEventHandlerIds(){return ct(this.batchData,this.batchData.length-8)}updatedComponentsEntry(e,t){const n=e+4*t;return ct(this.batchData,n)}referenceFramesEntry(e,t){return e+20*t}disposedComponentIdsEntry(e,t){const n=e+4*t;return ct(this.batchData,n)}disposedEventHandlerIdsEntry(e,t){const n=e+8*t;return ut(this.batchData,n)}}class ht{constructor(e){this.batchDataUint8=e}componentId(e){return ct(this.batchDataUint8,e)}edits(e){return e+4}editsEntry(e,t){return e+16*t}}class ft{constructor(e,t){this.batchDataUint8=e,this.stringReader=t}editType(e){return ct(this.batchDataUint8,e)}siblingIndex(e){return ct(this.batchDataUint8,e+4)}newTreeIndex(e){return ct(this.batchDataUint8,e+8)}moveToSiblingIndex(e){return ct(this.batchDataUint8,e+8)}removedAttributeName(e){const t=ct(this.batchDataUint8,e+12);return this.stringReader.readString(t)}}class mt{constructor(e,t){this.batchDataUint8=e,this.stringReader=t}frameType(e){return ct(this.batchDataUint8,e)}subtreeLength(e){return ct(this.batchDataUint8,e+4)}elementReferenceCaptureId(e){const t=ct(this.batchDataUint8,e+4);return this.stringReader.readString(t)}componentId(e){return ct(this.batchDataUint8,e+8)}elementName(e){const t=ct(this.batchDataUint8,e+8);return this.stringReader.readString(t)}textContent(e){const t=ct(this.batchDataUint8,e+4);return this.stringReader.readString(t)}markupContent(e){const t=ct(this.batchDataUint8,e+4);return this.stringReader.readString(t)}attributeName(e){const t=ct(this.batchDataUint8,e+4);return this.stringReader.readString(t)}attributeValue(e){const t=ct(this.batchDataUint8,e+8);return this.stringReader.readString(t)}attributeEventHandlerId(e){return ut(this.batchDataUint8,e+12)}}class pt{constructor(e){this.batchDataUint8=e,this.stringTableStartIndex=ct(e,e.length-4)}readString(e){if(-1===e)return null;{const n=ct(this.batchDataUint8,this.stringTableStartIndex+4*e),r=function(e,t){let n=0,r=0;for(let o=0;o<4;o++){const a=e[t+o];if(n|=(127&a)<async function(e,n){const r=function(e){const t=document.baseURI;return t.endsWith("/")?`${t}${e}`:`${t}/${e}`}(n),o=await import(r);if(void 0!==o){if(e.singleRuntime){const{beforeStart:n,afterStarted:r,beforeWebAssemblyStart:i,afterWebAssemblyStarted:s,beforeServerStart:c,afterServerStarted:l}=o;let u=n;e.webRendererId===Nt.Server&&c&&(u=c),e.webRendererId===Nt.WebAssembly&&i&&(u=i);let d=r;return e.webRendererId===Nt.Server&&l&&(d=l),e.webRendererId===Nt.WebAssembly&&s&&(d=s),a(e,u,d,t)}return function(e,t,n){var o;const i=n[0],{beforeStart:s,afterStarted:c,beforeWebStart:l,afterWebStarted:u,beforeWebAssemblyStart:d,afterWebAssemblyStarted:h,beforeServerStart:f,afterServerStarted:m}=t,p=!(l||u||d||h||f||m||!s&&!c),b=p&&i.enableClassicInitializers;if(p&&!i.enableClassicInitializers)null===(o=e.logger)||void 0===o||o.log(kt.Warning,`Initializer '${r}' will be ignored because multiple runtimes are available. use 'before(web|webAssembly|server)Start' and 'after(web|webAssembly|server)Started?' instead.)`);else if(b)return a(e,s,c,n);if(function(e){e.webAssembly?e.webAssembly.initializers||(e.webAssembly.initializers={beforeStart:[],afterStarted:[]}):e.webAssembly={initializers:{beforeStart:[],afterStarted:[]}},e.circuit?e.circuit.initializers||(e.circuit.initializers={beforeStart:[],afterStarted:[]}):e.circuit={initializers:{beforeStart:[],afterStarted:[]}}}(i),d&&i.webAssembly.initializers.beforeStart.push(d),h&&i.webAssembly.initializers.afterStarted.push(h),f&&i.circuit.initializers.beforeStart.push(f),m&&i.circuit.initializers.afterStarted.push(m),u&&e.afterStartedCallbacks.push(u),l)return l(i)}(e,o,t)}function a(e,t,n,r){if(n&&e.afterStartedCallbacks.push(n),t)return t(...r)}}(this,e))))}async invokeAfterStartedCallbacks(e){const t=(n=this.webRendererId,null===(r=C.get(n))||void 0===r?void 0:r[1]);var n,r;t&&await t,await Promise.all(this.afterStartedCallbacks.map((t=>t(e))))}}let Ot,Lt=!1;async function xt(){if(Lt)throw new Error("Blazor has already started.");Lt=!0,Ot=e.attachDispatcher({beginInvokeDotNetFromJS:Et,endInvokeJSFromDotNet:St,sendByteArray:It});const t=await async function(){const e=await fetch("http://github.com/_framework/blazor.modules.json",{method:"GET",credentials:"include",cache:"no-cache"}),t=await e.json(),n=new _t;return await n.importInitializersAsync(t,[]),n}();(function(){const e={AttachToDocument:(e,t)=>{!function(e,t,n){const r="::before";let o=!1;if(e.endsWith("::after"))e=e.slice(0,-7),o=!0;else if(e.endsWith(r))throw new Error(`The '${r}' selector is not supported.`);const a=function(e){const t=m.get(e);if(t)return m.delete(e),t}(e)||document.querySelector(e);if(!a)throw new Error(`Could not find any element matching selector '${e}'.`);!function(e,t,n,r){let o=fe[e];o||(o=new le(e),fe[e]=o),o.attachRootComponentToLogicalElement(n,t,r)}(n,P(a,!0),t,o)}(t,e,Nt.WebView)},RenderBatch:(e,t)=>{try{const n=Tt(t);(function(e,t){const n=fe[e];if(!n)throw new Error(`There is no browser renderer with ID ${e}.`);const r=t.arrayRangeReader,o=t.updatedComponents(),a=r.values(o),i=r.count(o),s=t.referenceFrames(),c=r.values(s),l=t.diffReader;for(let e=0;e{yt=!0,console.error(`${e}\n${t}`),function(){const e=document.querySelector("#blazor-error-ui");e&&(e.style.display="block"),rt||(rt=!0,document.querySelectorAll("#blazor-error-ui .reload").forEach((e=>{e.onclick=function(e){location.reload(),e.preventDefault()}})),document.querySelectorAll("#blazor-error-ui .dismiss").forEach((e=>{e.onclick=function(e){const t=document.querySelector("#blazor-error-ui");t&&(t.style.display="none"),e.preventDefault()}})))}()},BeginInvokeJS:Ot.beginInvokeJSFromDotNet.bind(Ot),EndInvokeDotNet:Ot.endInvokeDotNetFromJS.bind(Ot),SendByteArrayToJS:Rt,Navigate:Oe.navigateTo,Refresh:Oe.refresh,SetHasLocationChangingListeners:e=>{Oe.setHasLocationChangingListeners(Nt.WebView,e)},EndLocationChanging:Oe.endLocationChanging};window.external.receiveMessage((t=>{const n=function(e){if(yt||!e||!e.startsWith(gt))return null;const t=e.substring(gt.length),[n,...r]=JSON.parse(t);return{messageType:n,args:r}}(t);if(n){if(!Object.prototype.hasOwnProperty.call(e,n.messageType))throw new Error(`Unsupported IPC message type '${n.messageType}'`);e[n.messageType].apply(null,n.args)}}))})(),nt._internal.receiveWebViewDotNetDataStream=Ft,Oe.enableNavigationInterception(Nt.WebView),Oe.listenForNavigationEvents(Nt.WebView,Ct,Dt),At("AttachPage",Oe.getBaseURI(),Oe.getLocationHref()),await t.invokeAfterStartedCallbacks(nt)}function Ft(e,t,n,r){!function(e,t,n,r,o){let a=tt.get(t);if(!a){const n=new ReadableStream({start(e){tt.set(t,e),a=e}});e.supplyDotNetStream(t,n)}o?(a.error(o),tt.delete(t)):0===r?(a.close(),tt.delete(t)):a.enqueue(n.length===r?n:n.subarray(0,r))}(Ot,e,t,n,r)}nt.start=xt,window.DotNet=e,document&&document.currentScript&&"false"!==document.currentScript.getAttribute("autostart")&&xt()})(); \ No newline at end of file diff --git a/src/Components/Web.JS/src/Boot.Web.ts b/src/Components/Web.JS/src/Boot.Web.ts index 01cadd91a941..8a1384a393de 100644 --- a/src/Components/Web.JS/src/Boot.Web.ts +++ b/src/Components/Web.JS/src/Boot.Web.ts @@ -38,6 +38,7 @@ function boot(options?: Partial) : Promise { options = options || {}; options.logLevel ??= LogLevel.Error; Blazor._internal.loadWebAssemblyQuicklyTimeout = 3000; + Blazor._internal.isBlazorWeb = true; // Defined here to avoid inadvertently imported enhanced navigation // related APIs in WebAssembly or Blazor Server contexts. diff --git a/src/Components/Web.JS/src/GlobalExports.ts b/src/Components/Web.JS/src/GlobalExports.ts index 6fe8447e9828..4af7b56fbf32 100644 --- a/src/Components/Web.JS/src/GlobalExports.ts +++ b/src/Components/Web.JS/src/GlobalExports.ts @@ -80,6 +80,7 @@ export interface IBlazor { receiveWebViewDotNetDataStream?: (streamId: number, data: any, bytesRead: number, errorMessage: string) => void; attachWebRendererInterop?: typeof attachWebRendererInterop; loadWebAssemblyQuicklyTimeout?: number; + isBlazorWeb?: boolean; // JSExport APIs dotNetExports?: { diff --git a/src/Components/Web.JS/src/Services/NavigationManager.ts b/src/Components/Web.JS/src/Services/NavigationManager.ts index a0bcb2ac2d8c..7a6e0bbbbfd6 100644 --- a/src/Components/Web.JS/src/Services/NavigationManager.ts +++ b/src/Components/Web.JS/src/Services/NavigationManager.ts @@ -7,6 +7,7 @@ import { EventDelegator } from '../Rendering/Events/EventDelegator'; import { attachEnhancedNavigationListener, getInteractiveRouterRendererId, handleClickForNavigationInterception, hasInteractiveRouter, hasProgrammaticEnhancedNavigationHandler, isWithinBaseUriSpace, performProgrammaticEnhancedNavigation, setHasInteractiveRouter, toAbsoluteUri } from './NavigationUtils'; import { WebRendererId } from '../Rendering/WebRendererId'; import { isRendererAttached } from '../Rendering/WebRendererInteropMethods'; +import { IBlazor } from '../GlobalExports'; let hasRegisteredNavigationEventListeners = false; let currentHistoryIndex = 0; @@ -142,18 +143,21 @@ function navigateToFromDotNet(uri: string, options: NavigationOptions): void { function navigateToCore(uri: string, options: NavigationOptions, skipLocationChangingCallback = false): void { const absoluteUri = toAbsoluteUri(uri); + const pageLoadMechanism = currentPageLoadMechanism(); - if (!options.forceLoad && isWithinBaseUriSpace(absoluteUri)) { - if (shouldUseClientSideRouting()) { - performInternalNavigation(absoluteUri, false, options.replaceHistoryEntry, options.historyEntryState, skipLocationChangingCallback); - } else { - performProgrammaticEnhancedNavigation(absoluteUri, options.replaceHistoryEntry); - } - } else { + if (options.forceLoad || !isWithinBaseUriSpace(absoluteUri) || pageLoadMechanism === 'serverside-fullpageload') { // For external navigation, we work in terms of the originally-supplied uri string, // not the computed absoluteUri. This is in case there are some special URI formats // we're unable to translate into absolute URIs. performExternalNavigation(uri, options.replaceHistoryEntry); + } else if (pageLoadMechanism === 'clientside-router') { + performInternalNavigation(absoluteUri, false, options.replaceHistoryEntry, options.historyEntryState, skipLocationChangingCallback); + } else if (pageLoadMechanism === 'serverside-enhanced') { + performProgrammaticEnhancedNavigation(absoluteUri, options.replaceHistoryEntry); + } else { + // Force a compile-time error if some other case needs to be handled in the future + const unreachable: never = pageLoadMechanism; + throw new Error(`Unsupported page load mechanism: ${unreachable}`); } } @@ -287,7 +291,7 @@ async function notifyLocationChanged(interceptedLink: boolean, internalDestinati } async function onPopState(state: PopStateEvent) { - if (popStateCallback && shouldUseClientSideRouting()) { + if (popStateCallback && currentPageLoadMechanism() !== 'serverside-enhanced') { await popStateCallback(state); } @@ -303,10 +307,24 @@ function getInteractiveRouterNavigationCallbacks(): NavigationCallbacks | undefi return navigationCallbacks.get(interactiveRouterRendererId); } -function shouldUseClientSideRouting() { - return hasInteractiveRouter() || !hasProgrammaticEnhancedNavigationHandler(); +function currentPageLoadMechanism(): PageLoadMechanism { + if (hasInteractiveRouter()) { + return 'clientside-router'; + } else if (hasProgrammaticEnhancedNavigationHandler()) { + return 'serverside-enhanced'; + } else { + // For back-compat, in blazor.server.js or blazor.webassembly.js, we always behave as if there's an interactive + // router even if there isn't one attached. This preserves a niche case where people may call Blazor.navigateTo + // without a router and expect to receive a notification on the .NET side but no page load occurs. + // In blazor.web.js, we explicitly recognize the case where you have neither an interactive nor enhanced SSR router + // attached, and then handle Blazor.navigateTo by doing a full page load because that's more useful (issue #51636). + const isBlazorWeb = (window['Blazor'] as IBlazor)._internal.isBlazorWeb; + return isBlazorWeb ? 'serverside-fullpageload' : 'clientside-router'; + } } +type PageLoadMechanism = 'clientside-router' | 'serverside-enhanced' | 'serverside-fullpageload'; + // Keep in sync with Components/src/NavigationOptions.cs export interface NavigationOptions { forceLoad: boolean; diff --git a/src/Components/test/E2ETest/ServerRenderingTests/EnhancedNavigationTest.cs b/src/Components/test/E2ETest/ServerRenderingTests/EnhancedNavigationTest.cs index 5f8e35864954..f7d9e031ce95 100644 --- a/src/Components/test/E2ETest/ServerRenderingTests/EnhancedNavigationTest.cs +++ b/src/Components/test/E2ETest/ServerRenderingTests/EnhancedNavigationTest.cs @@ -558,15 +558,5 @@ private void AssertEnhancedUpdateCountEquals(long count) => Browser.Equal(count, () => ((IJavaScriptExecutor)Browser).ExecuteScript("return window.enhancedPageUpdateCount;")); private static bool IsElementStale(IWebElement element) - { - try - { - _ = element.Enabled; - return false; - } - catch (StaleElementReferenceException) - { - return true; - } - } + => EnhancedNavigationTestUtil.IsElementStale(element); } diff --git a/src/Components/test/E2ETest/ServerRenderingTests/EnhancedNavigationTestUtil.cs b/src/Components/test/E2ETest/ServerRenderingTests/EnhancedNavigationTestUtil.cs index 27de50df3bc3..8560829a30ee 100644 --- a/src/Components/test/E2ETest/ServerRenderingTests/EnhancedNavigationTestUtil.cs +++ b/src/Components/test/E2ETest/ServerRenderingTests/EnhancedNavigationTestUtil.cs @@ -32,4 +32,17 @@ public static void SuppressEnhancedNavigation(ServerTestBase Convert.ToInt64(((IJavaScriptExecutor)browser).ExecuteScript("return window.scrollY"), CultureInfo.CurrentCulture); + + public static bool IsElementStale(IWebElement element) + { + try + { + _ = element.Enabled; + return false; + } + catch (StaleElementReferenceException) + { + return true; + } + } } diff --git a/src/Components/test/E2ETest/ServerRenderingTests/InteractivityTest.cs b/src/Components/test/E2ETest/ServerRenderingTests/InteractivityTest.cs index 5f7014973f90..36c0d764114f 100644 --- a/src/Components/test/E2ETest/ServerRenderingTests/InteractivityTest.cs +++ b/src/Components/test/E2ETest/ServerRenderingTests/InteractivityTest.cs @@ -1110,6 +1110,30 @@ public void CanPersistPrerenderedState_WebAssemblyPrerenderedStateAvailableOnlyO Browser.Equal("not restored", () => Browser.FindElement(By.Id("wasm")).Text); } + [Theory] + [InlineData(false, false)] + [InlineData(false, true)] + [InlineData(true, false)] + [InlineData(true, true)] + public void CanPerformNavigateToFromInteractiveEventHandler(bool suppressEnhancedNavigation, bool forceLoad) + { + EnhancedNavigationTestUtil.SuppressEnhancedNavigation(this, suppressEnhancedNavigation); + + // Get to the test page + Navigate($"{ServerPathBase}/interactivity/navigateto"); + Browser.Equal("Interactive NavigateTo", () => Browser.FindElement(By.TagName("h1")).Text); + var originalNavElem = Browser.FindElement(By.TagName("nav")); + + // Perform the navigation + Browser.Click(By.Id(forceLoad ? "perform-navigateto-force" : "perform-navigateto")); + Browser.True(() => Browser.Url.EndsWith("/nav", StringComparison.Ordinal)); + Browser.Equal("Hello", () => Browser.FindElement(By.Id("nav-home")).Text); + + // Verify the elements were preserved if and only if they should be + var shouldPreserveElements = !suppressEnhancedNavigation && !forceLoad; + Assert.Equal(shouldPreserveElements, !EnhancedNavigationTestUtil.IsElementStale(originalNavElem)); + } + private void BlockWebAssemblyResourceLoad() { ((IJavaScriptExecutor)Browser).ExecuteScript("sessionStorage.setItem('block-load-boot-resource', 'true')"); diff --git a/src/Components/test/testassets/Components.TestServer/RazorComponents/Pages/Interactivity/InteractiveNavigateTo.razor b/src/Components/test/testassets/Components.TestServer/RazorComponents/Pages/Interactivity/InteractiveNavigateTo.razor new file mode 100644 index 000000000000..82ff639c8595 --- /dev/null +++ b/src/Components/test/testassets/Components.TestServer/RazorComponents/Pages/Interactivity/InteractiveNavigateTo.razor @@ -0,0 +1,18 @@ +@page "/interactivity/navigateto" +@layout Components.TestServer.RazorComponents.Shared.EnhancedNavLayout +@inject NavigationManager Nav +@rendermode RenderMode.InteractiveServer + +

Interactive NavigateTo

+ +

Shows that NavigateTo from an interactive event handler works as expected, with or without enhanced navigation.

+ + + + +@code { + void PerformNavigateTo(bool forceLoad) + { + Nav.NavigateTo("nav", forceLoad); + } +} diff --git a/src/Components/test/testassets/Components.TestServer/RazorComponents/Shared/EnhancedNavLayout.razor b/src/Components/test/testassets/Components.TestServer/RazorComponents/Shared/EnhancedNavLayout.razor index 8717d5620384..5362f567049e 100644 --- a/src/Components/test/testassets/Components.TestServer/RazorComponents/Shared/EnhancedNavLayout.razor +++ b/src/Components/test/testassets/Components.TestServer/RazorComponents/Shared/EnhancedNavLayout.razor @@ -25,4 +25,6 @@ LocationChanged/LocationChanging event (server-and-wasm)
-@Body +
+ @Body +
From 804887d1241bbe15f4afc4a417ed51e8f74cb953 Mon Sep 17 00:00:00 2001 From: DotNet Bot Date: Thu, 23 Nov 2023 04:46:05 +0000 Subject: [PATCH 043/391] [internal/release/8.0] Update dependencies from dnceng/internal/dotnet-runtime --- NuGet.config | 4 ++-- eng/Version.Details.xml | 26 +++++++++++++------------- eng/Versions.props | 6 +++--- 3 files changed, 18 insertions(+), 18 deletions(-) diff --git a/NuGet.config b/NuGet.config index d6ae811b59b3..61278c8c53d7 100644 --- a/NuGet.config +++ b/NuGet.config @@ -9,7 +9,7 @@ - + @@ -33,7 +33,7 @@ - + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index a1c9e15af3df..ce43ccf52a68 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -55,7 +55,7 @@
https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 21b90573de7d6e0c88acdd25dc116b6729fd65a7 + 72e5ae975785990e904372573c93dd661279f662 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime @@ -179,15 +179,15 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 21b90573de7d6e0c88acdd25dc116b6729fd65a7 + 72e5ae975785990e904372573c93dd661279f662 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime 5535e31a712343a63f5d7d796cd874e563e5ac14 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 21b90573de7d6e0c88acdd25dc116b6729fd65a7 + 72e5ae975785990e904372573c93dd661279f662 https://github.com/dotnet/source-build-externals @@ -277,15 +277,15 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 21b90573de7d6e0c88acdd25dc116b6729fd65a7 + 72e5ae975785990e904372573c93dd661279f662 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 21b90573de7d6e0c88acdd25dc116b6729fd65a7 + 72e5ae975785990e904372573c93dd661279f662 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 21b90573de7d6e0c88acdd25dc116b6729fd65a7 + 72e5ae975785990e904372573c93dd661279f662 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime @@ -318,20 +318,20 @@ --> https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 21b90573de7d6e0c88acdd25dc116b6729fd65a7 + 72e5ae975785990e904372573c93dd661279f662 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 21b90573de7d6e0c88acdd25dc116b6729fd65a7 + 72e5ae975785990e904372573c93dd661279f662 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 21b90573de7d6e0c88acdd25dc116b6729fd65a7 + 72e5ae975785990e904372573c93dd661279f662 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 21b90573de7d6e0c88acdd25dc116b6729fd65a7 + 72e5ae975785990e904372573c93dd661279f662 https://github.com/dotnet/xdt diff --git a/eng/Versions.props b/eng/Versions.props index e43b2d2e4f77..ddef9093f559 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -71,7 +71,7 @@ 8.0.1 8.0.1 8.0.1 - 8.0.1-servicing.23571.29 + 8.0.1-servicing.23572.10 8.0.0 8.0.0 8.0.0 @@ -108,7 +108,7 @@ 8.0.0 8.0.1 8.0.0 - 8.0.1-servicing.23571.29 + 8.0.1-servicing.23572.10 8.0.0 8.0.0 8.0.0 @@ -128,7 +128,7 @@ 8.0.0 8.0.0 8.0.0 - 8.0.1-servicing.23571.29 + 8.0.1-servicing.23572.10 8.0.0-rtm.23531.3 8.0.0 From 27303d3c7b52bdd835d1e35810af2d7660394bdb Mon Sep 17 00:00:00 2001 From: DotNet Bot Date: Thu, 23 Nov 2023 07:29:18 +0000 Subject: [PATCH 044/391] [internal/release/8.0] Update dependencies from dnceng/internal/dotnet-efcore --- NuGet.config | 4 ++-- eng/Version.Details.xml | 16 ++++++++-------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/NuGet.config b/NuGet.config index 61278c8c53d7..7b62ca98e153 100644 --- a/NuGet.config +++ b/NuGet.config @@ -6,7 +6,7 @@ - + @@ -30,7 +30,7 @@ - + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index ce43ccf52a68..b11aaf505052 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -11,35 +11,35 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 27d4f64af6fb9906a50ee5ee59e4e089bfae3d38 + a7a3adcc7922f093b9104f6153128df8fd1715ee https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 27d4f64af6fb9906a50ee5ee59e4e089bfae3d38 + a7a3adcc7922f093b9104f6153128df8fd1715ee https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 27d4f64af6fb9906a50ee5ee59e4e089bfae3d38 + a7a3adcc7922f093b9104f6153128df8fd1715ee https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 27d4f64af6fb9906a50ee5ee59e4e089bfae3d38 + a7a3adcc7922f093b9104f6153128df8fd1715ee https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 27d4f64af6fb9906a50ee5ee59e4e089bfae3d38 + a7a3adcc7922f093b9104f6153128df8fd1715ee https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 27d4f64af6fb9906a50ee5ee59e4e089bfae3d38 + a7a3adcc7922f093b9104f6153128df8fd1715ee https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 27d4f64af6fb9906a50ee5ee59e4e089bfae3d38 + a7a3adcc7922f093b9104f6153128df8fd1715ee https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 27d4f64af6fb9906a50ee5ee59e4e089bfae3d38 + a7a3adcc7922f093b9104f6153128df8fd1715ee https://dev.azure.com/dnceng/internal/_git/dotnet-runtime From 2c561c0f566c621c04cd041604e9e973b768d96b Mon Sep 17 00:00:00 2001 From: Surayya Huseyn Zada <114938397+surayya-MS@users.noreply.github.com> Date: Thu, 23 Nov 2023 15:12:51 +0100 Subject: [PATCH 045/391] Fix radio button reset after submitting enhanced form (#51796) (#52219) # [release 8.0] Fix radio button reset after submitting enhanced form Manual backport of https://github.com/dotnet/aspnetcore/pull/51796 ## Description This PR fixes resetting radio button checked property after submitting an enhanced form. ```html
``` Workaround is to remove `data-enhance` attribute. Fixes #51429 ## Customer Impact Without this change customers will have bad experience using enhanced form that contains radio button. Radio button won't get reset after submitting the form. ## Regression? - [ ] Yes - [x] No [If yes, specify the version the behavior has regressed from] ## Risk - [ ] High - [ ] Medium - [x] Low This is a minor change. We have similar logic for checkbox approved https://github.com/dotnet/aspnetcore/pull/50991. There are unit and e2e tests for this change. ## Verification - [x] Manual (required) - [x] Automated ## Packaging changes reviewed? - [ ] Yes - [ ] No - [x] N/A ---- ## When servicing release/2.1 - [ ] Make necessary changes in eng/PatchConfig.props Fixes #51429 --- .../Web.JS/dist/Release/blazor.web.js | 2 +- .../src/Rendering/DomMerging/DomSync.ts | 4 ++-- src/Components/Web.JS/test/DomSync.test.ts | 16 +++++++++++++++ .../FormWithParentBindingContextTest.cs | 20 +++++++++++++++++++ .../FormWithCheckboxAndRadioButton.razor | 8 ++++++++ 5 files changed, 47 insertions(+), 3 deletions(-) create mode 100644 src/Components/test/testassets/Components.TestServer/RazorComponents/Pages/Forms/FormWithCheckboxAndRadioButton.razor diff --git a/src/Components/Web.JS/dist/Release/blazor.web.js b/src/Components/Web.JS/dist/Release/blazor.web.js index ed790b1ee27b..d28bd9c18d50 100644 --- a/src/Components/Web.JS/dist/Release/blazor.web.js +++ b/src/Components/Web.JS/dist/Release/blazor.web.js @@ -1 +1 @@ -(()=>{var e={778:()=>{},77:()=>{},203:()=>{},200:()=>{},628:()=>{},321:()=>{}},t={};function n(o){var r=t[o];if(void 0!==r)return r.exports;var i=t[o]={exports:{}};return e[o](i,i.exports,n),i.exports}n.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),(()=>{"use strict";var e,t,o;!function(e){const t=[],n="__jsObjectId",o="__dotNetObject",r="__byte[]",i="__dotNetStream",s="__jsStreamReferenceLength";let a,c;class l{constructor(e){this._jsObject=e,this._cachedFunctions=new Map}findFunction(e){const t=this._cachedFunctions.get(e);if(t)return t;let n,o=this._jsObject;if(e.split(".").forEach((t=>{if(!(t in o))throw new Error(`Could not find '${e}' ('${t}' was undefined).`);n=o,o=o[t]})),o instanceof Function)return o=o.bind(n),this._cachedFunctions.set(e,o),o;throw new Error(`The value '${e}' is not a function.`)}getWrappedObject(){return this._jsObject}}const h={0:new l(window)};h[0]._cachedFunctions.set("import",(e=>("string"==typeof e&&e.startsWith("./")&&(e=new URL(e.substr(2),document.baseURI).toString()),import(e))));let d,u=1;function p(e){t.push(e)}function f(e){if(e&&"object"==typeof e){h[u]=new l(e);const t={[n]:u};return u++,t}throw new Error(`Cannot create a JSObjectReference from the value '${e}'.`)}function g(e){let t=-1;if(e instanceof ArrayBuffer&&(e=new Uint8Array(e)),e instanceof Blob)t=e.size;else{if(!(e.buffer instanceof ArrayBuffer))throw new Error("Supplied value is not a typed array or blob.");if(void 0===e.byteLength)throw new Error(`Cannot create a JSStreamReference from the value '${e}' as it doesn't have a byteLength.`);t=e.byteLength}const o={[s]:t};try{const t=f(e);o[n]=t[n]}catch(t){throw new Error(`Cannot create a JSStreamReference from the value '${e}'.`)}return o}function m(e,n){c=e;const o=n?JSON.parse(n,((e,n)=>t.reduce(((t,n)=>n(e,t)),n))):null;return c=void 0,o}function v(){if(void 0===a)throw new Error("No call dispatcher has been set.");if(null===a)throw new Error("There are multiple .NET runtimes present, so a default dispatcher could not be resolved. Use DotNetObject to invoke .NET instance methods.");return a}e.attachDispatcher=function(e){const t=new y(e);return void 0===a?a=t:a&&(a=null),t},e.attachReviver=p,e.invokeMethod=function(e,t,...n){return v().invokeDotNetStaticMethod(e,t,...n)},e.invokeMethodAsync=function(e,t,...n){return v().invokeDotNetStaticMethodAsync(e,t,...n)},e.createJSObjectReference=f,e.createJSStreamReference=g,e.disposeJSObjectReference=function(e){const t=e&&e[n];"number"==typeof t&&_(t)},function(e){e[e.Default=0]="Default",e[e.JSObjectReference=1]="JSObjectReference",e[e.JSStreamReference=2]="JSStreamReference",e[e.JSVoidResult=3]="JSVoidResult"}(d=e.JSCallResultType||(e.JSCallResultType={}));class y{constructor(e){this._dotNetCallDispatcher=e,this._byteArraysToBeRevived=new Map,this._pendingDotNetToJSStreams=new Map,this._pendingAsyncCalls={},this._nextAsyncCallId=1}getDotNetCallDispatcher(){return this._dotNetCallDispatcher}invokeJSFromDotNet(e,t,n,o){const r=m(this,t),i=I(b(e,o)(...r||[]),n);return null==i?null:T(this,i)}beginInvokeJSFromDotNet(e,t,n,o,r){const i=new Promise((e=>{const o=m(this,n);e(b(t,r)(...o||[]))}));e&&i.then((t=>T(this,[e,!0,I(t,o)]))).then((t=>this._dotNetCallDispatcher.endInvokeJSFromDotNet(e,!0,t)),(t=>this._dotNetCallDispatcher.endInvokeJSFromDotNet(e,!1,JSON.stringify([e,!1,w(t)]))))}endInvokeDotNetFromJS(e,t,n){const o=t?m(this,n):new Error(n);this.completePendingCall(parseInt(e,10),t,o)}invokeDotNetStaticMethod(e,t,...n){return this.invokeDotNetMethod(e,t,null,n)}invokeDotNetStaticMethodAsync(e,t,...n){return this.invokeDotNetMethodAsync(e,t,null,n)}invokeDotNetMethod(e,t,n,o){if(this._dotNetCallDispatcher.invokeDotNetFromJS){const r=T(this,o),i=this._dotNetCallDispatcher.invokeDotNetFromJS(e,t,n,r);return i?m(this,i):null}throw new Error("The current dispatcher does not support synchronous calls from JS to .NET. Use invokeDotNetMethodAsync instead.")}invokeDotNetMethodAsync(e,t,n,o){if(e&&n)throw new Error(`For instance method calls, assemblyName should be null. Received '${e}'.`);const r=this._nextAsyncCallId++,i=new Promise(((e,t)=>{this._pendingAsyncCalls[r]={resolve:e,reject:t}}));try{const i=T(this,o);this._dotNetCallDispatcher.beginInvokeDotNetFromJS(r,e,t,n,i)}catch(e){this.completePendingCall(r,!1,e)}return i}receiveByteArray(e,t){this._byteArraysToBeRevived.set(e,t)}processByteArray(e){const t=this._byteArraysToBeRevived.get(e);return t?(this._byteArraysToBeRevived.delete(e),t):null}supplyDotNetStream(e,t){if(this._pendingDotNetToJSStreams.has(e)){const n=this._pendingDotNetToJSStreams.get(e);this._pendingDotNetToJSStreams.delete(e),n.resolve(t)}else{const n=new E;n.resolve(t),this._pendingDotNetToJSStreams.set(e,n)}}getDotNetStreamPromise(e){let t;if(this._pendingDotNetToJSStreams.has(e))t=this._pendingDotNetToJSStreams.get(e).streamPromise,this._pendingDotNetToJSStreams.delete(e);else{const n=new E;this._pendingDotNetToJSStreams.set(e,n),t=n.streamPromise}return t}completePendingCall(e,t,n){if(!this._pendingAsyncCalls.hasOwnProperty(e))throw new Error(`There is no pending async call with ID ${e}.`);const o=this._pendingAsyncCalls[e];delete this._pendingAsyncCalls[e],t?o.resolve(n):o.reject(n)}}function w(e){return e instanceof Error?`${e.message}\n${e.stack}`:e?e.toString():"null"}function b(e,t){const n=h[t];if(n)return n.findFunction(e);throw new Error(`JS object instance with ID ${t} does not exist (has it been disposed?).`)}function _(e){delete h[e]}e.findJSFunction=b,e.disposeJSObjectReferenceById=_;class S{constructor(e,t){this._id=e,this._callDispatcher=t}invokeMethod(e,...t){return this._callDispatcher.invokeDotNetMethod(null,e,this._id,t)}invokeMethodAsync(e,...t){return this._callDispatcher.invokeDotNetMethodAsync(null,e,this._id,t)}dispose(){this._callDispatcher.invokeDotNetMethodAsync(null,"__Dispose",this._id,null).catch((e=>console.error(e)))}serializeAsArg(){return{[o]:this._id}}}e.DotNetObject=S,p((function(e,t){if(t&&"object"==typeof t){if(t.hasOwnProperty(o))return new S(t[o],c);if(t.hasOwnProperty(n)){const e=t[n],o=h[e];if(o)return o.getWrappedObject();throw new Error(`JS object instance with Id '${e}' does not exist. It may have been disposed.`)}if(t.hasOwnProperty(r)){const e=t[r],n=c.processByteArray(e);if(void 0===n)throw new Error(`Byte array index '${e}' does not exist.`);return n}if(t.hasOwnProperty(i)){const e=t[i],n=c.getDotNetStreamPromise(e);return new C(n)}}return t}));class C{constructor(e){this._streamPromise=e}stream(){return this._streamPromise}async arrayBuffer(){return new Response(await this.stream()).arrayBuffer()}}class E{constructor(){this.streamPromise=new Promise(((e,t)=>{this.resolve=e,this.reject=t}))}}function I(e,t){switch(t){case d.Default:return e;case d.JSObjectReference:return f(e);case d.JSStreamReference:return g(e);case d.JSVoidResult:return null;default:throw new Error(`Invalid JS call result type '${t}'.`)}}let k=0;function T(e,t){k=0,c=e;const n=JSON.stringify(t,R);return c=void 0,n}function R(e,t){if(t instanceof S)return t.serializeAsArg();if(t instanceof Uint8Array){c.getDotNetCallDispatcher().sendByteArray(k,t);const e={[r]:k};return k++,e}return t}}(e||(e={})),function(e){e[e.prependFrame=1]="prependFrame",e[e.removeFrame=2]="removeFrame",e[e.setAttribute=3]="setAttribute",e[e.removeAttribute=4]="removeAttribute",e[e.updateText=5]="updateText",e[e.stepIn=6]="stepIn",e[e.stepOut=7]="stepOut",e[e.updateMarkup=8]="updateMarkup",e[e.permutationListEntry=9]="permutationListEntry",e[e.permutationListEnd=10]="permutationListEnd"}(t||(t={})),function(e){e[e.element=1]="element",e[e.text=2]="text",e[e.attribute=3]="attribute",e[e.component=4]="component",e[e.region=5]="region",e[e.elementReferenceCapture=6]="elementReferenceCapture",e[e.markup=8]="markup",e[e.namedEvent=10]="namedEvent"}(o||(o={}));class r{constructor(e,t){this.componentId=e,this.fieldValue=t}static fromEvent(e,t){const n=t.target;if(n instanceof Element){const t=function(e){return e instanceof HTMLInputElement?e.type&&"checkbox"===e.type.toLowerCase()?{value:e.checked}:{value:e.value}:e instanceof HTMLSelectElement||e instanceof HTMLTextAreaElement?{value:e.value}:null}(n);if(t)return new r(e,t.value)}return null}}const i=new Map,s=new Map,a=[];function c(e){return i.get(e)}function l(e){const t=i.get(e);return(null==t?void 0:t.browserEventName)||e}function h(e,t){e.forEach((e=>i.set(e,t)))}function d(e){const t=[];for(let n=0;ne.selected)).map((e=>e.value))}}{const e=function(e){return!!e&&"INPUT"===e.tagName&&"checkbox"===e.getAttribute("type")}(t);return{value:e?!!t.checked:t.value}}}}),h(["copy","cut","paste"],{createEventArgs:e=>({type:e.type})}),h(["drag","dragend","dragenter","dragleave","dragover","dragstart","drop"],{createEventArgs:e=>{return{...u(t=e),dataTransfer:t.dataTransfer?{dropEffect:t.dataTransfer.dropEffect,effectAllowed:t.dataTransfer.effectAllowed,files:Array.from(t.dataTransfer.files).map((e=>e.name)),items:Array.from(t.dataTransfer.items).map((e=>({kind:e.kind,type:e.type}))),types:t.dataTransfer.types}:null};var t}}),h(["focus","blur","focusin","focusout"],{createEventArgs:e=>({type:e.type})}),h(["keydown","keyup","keypress"],{createEventArgs:e=>{return{key:(t=e).key,code:t.code,location:t.location,repeat:t.repeat,ctrlKey:t.ctrlKey,shiftKey:t.shiftKey,altKey:t.altKey,metaKey:t.metaKey,type:t.type};var t}}),h(["contextmenu","click","mouseover","mouseout","mousemove","mousedown","mouseup","mouseleave","mouseenter","dblclick"],{createEventArgs:e=>u(e)}),h(["error"],{createEventArgs:e=>{return{message:(t=e).message,filename:t.filename,lineno:t.lineno,colno:t.colno,type:t.type};var t}}),h(["loadstart","timeout","abort","load","loadend","progress"],{createEventArgs:e=>{return{lengthComputable:(t=e).lengthComputable,loaded:t.loaded,total:t.total,type:t.type};var t}}),h(["touchcancel","touchend","touchmove","touchenter","touchleave","touchstart"],{createEventArgs:e=>{return{detail:(t=e).detail,touches:d(t.touches),targetTouches:d(t.targetTouches),changedTouches:d(t.changedTouches),ctrlKey:t.ctrlKey,shiftKey:t.shiftKey,altKey:t.altKey,metaKey:t.metaKey,type:t.type};var t}}),h(["gotpointercapture","lostpointercapture","pointercancel","pointerdown","pointerenter","pointerleave","pointermove","pointerout","pointerover","pointerup"],{createEventArgs:e=>{return{...u(t=e),pointerId:t.pointerId,width:t.width,height:t.height,pressure:t.pressure,tiltX:t.tiltX,tiltY:t.tiltY,pointerType:t.pointerType,isPrimary:t.isPrimary};var t}}),h(["wheel","mousewheel"],{createEventArgs:e=>{return{...u(t=e),deltaX:t.deltaX,deltaY:t.deltaY,deltaZ:t.deltaZ,deltaMode:t.deltaMode};var t}}),h(["cancel","close","toggle"],{createEventArgs:()=>({})});const p=["date","datetime-local","month","time","week"],f=new Map;let g,m,v=0;const y={async add(e,t,n){if(!n)throw new Error("initialParameters must be an object, even if empty.");const o="__bl-dynamic-root:"+(++v).toString();f.set(o,e);const r=await S().invokeMethodAsync("AddRootComponent",t,o),i=new _(r,m[t]);return await i.setParameters(n),i}};function w(e){const t=f.get(e);if(t)return f.delete(e),t}class b{invoke(e){return this._callback(e)}setCallback(t){this._selfJSObjectReference||(this._selfJSObjectReference=e.createJSObjectReference(this)),this._callback=t}getJSObjectReference(){return this._selfJSObjectReference}dispose(){this._selfJSObjectReference&&e.disposeJSObjectReference(this._selfJSObjectReference)}}class _{constructor(e,t){this._jsEventCallbackWrappers=new Map,this._componentId=e;for(const e of t)"eventcallback"===e.type&&this._jsEventCallbackWrappers.set(e.name.toLowerCase(),new b)}setParameters(e){const t={},n=Object.entries(e||{}),o=n.length;for(const[e,o]of n){const n=this._jsEventCallbackWrappers.get(e.toLowerCase());n&&o?(n.setCallback(o),t[e]=n.getJSObjectReference()):t[e]=o}return S().invokeMethodAsync("SetRootComponentParameters",this._componentId,o,t)}async dispose(){if(null!==this._componentId){await S().invokeMethodAsync("RemoveRootComponent",this._componentId),this._componentId=null;for(const e of this._jsEventCallbackWrappers.values())e.dispose()}}}function S(){if(!g)throw new Error("Dynamic root components have not been enabled in this application.");return g}const C=new Map,E=[],I=new Map;function k(t,n,o,r){var i,s;if(C.has(t))throw new Error(`Interop methods are already registered for renderer ${t}`);C.set(t,n),o&&r&&Object.keys(o).length>0&&function(t,n,o){if(g)throw new Error("Dynamic root components have already been enabled.");g=t,m=n;for(const[t,r]of Object.entries(o)){const o=e.findJSFunction(t,0);for(const e of r)o(e,n[e])}}(D(t),o,r),null===(s=null===(i=I.get(t))||void 0===i?void 0:i[0])||void 0===s||s.call(i),function(e){for(const t of E)t(e)}(t)}function T(e){return C.has(e)}function R(e,t,n){return A(e,t.eventHandlerId,(()=>D(e).invokeMethodAsync("DispatchEventAsync",t,n)))}function D(e){const t=C.get(e);if(!t)throw new Error(`No interop methods are registered for renderer ${e}`);return t}let A=(e,t,n)=>n();const x=B(["abort","blur","cancel","canplay","canplaythrough","change","close","cuechange","durationchange","emptied","ended","error","focus","load","loadeddata","loadedmetadata","loadend","loadstart","mouseenter","mouseleave","pointerenter","pointerleave","pause","play","playing","progress","ratechange","reset","scroll","seeked","seeking","stalled","submit","suspend","timeupdate","toggle","unload","volumechange","waiting","DOMNodeInsertedIntoDocument","DOMNodeRemovedFromDocument"]),N={submit:!0},P=B(["click","dblclick","mousedown","mousemove","mouseup"]);class M{constructor(e){this.browserRendererId=e,this.afterClickCallbacks=[];const t=++M.nextEventDelegatorId;this.eventsCollectionKey=`_blazorEvents_${t}`,this.eventInfoStore=new U(this.onGlobalEvent.bind(this))}setListener(e,t,n,o){const r=this.getEventHandlerInfosForElement(e,!0),i=r.getHandler(t);if(i)this.eventInfoStore.update(i.eventHandlerId,n);else{const i={element:e,eventName:t,eventHandlerId:n,renderingComponentId:o};this.eventInfoStore.add(i),r.setHandler(t,i)}}getHandler(e){return this.eventInfoStore.get(e)}removeListener(e){const t=this.eventInfoStore.remove(e);if(t){const e=t.element,n=this.getEventHandlerInfosForElement(e,!1);n&&n.removeHandler(t.eventName)}}notifyAfterClick(e){this.afterClickCallbacks.push(e),this.eventInfoStore.addGlobalListener("click")}setStopPropagation(e,t,n){this.getEventHandlerInfosForElement(e,!0).stopPropagation(t,n)}setPreventDefault(e,t,n){this.getEventHandlerInfosForElement(e,!0).preventDefault(t,n)}onGlobalEvent(e){if(!(e.target instanceof Element))return;this.dispatchGlobalEventToAllElements(e.type,e);const t=(n=e.type,s.get(n));var n;t&&t.forEach((t=>this.dispatchGlobalEventToAllElements(t,e))),"click"===e.type&&this.afterClickCallbacks.forEach((t=>t(e)))}dispatchGlobalEventToAllElements(e,t){const n=t.composedPath();let o=n.shift(),i=null,s=!1;const a=Object.prototype.hasOwnProperty.call(x,e);let l=!1;for(;o;){const u=o,p=this.getEventHandlerInfosForElement(u,!1);if(p){const n=p.getHandler(e);if(n&&(h=u,d=t.type,!((h instanceof HTMLButtonElement||h instanceof HTMLInputElement||h instanceof HTMLTextAreaElement||h instanceof HTMLSelectElement)&&Object.prototype.hasOwnProperty.call(P,d)&&h.disabled))){if(!s){const n=c(e);i=(null==n?void 0:n.createEventArgs)?n.createEventArgs(t):{},s=!0}Object.prototype.hasOwnProperty.call(N,t.type)&&t.preventDefault(),R(this.browserRendererId,{eventHandlerId:n.eventHandlerId,eventName:e,eventFieldInfo:r.fromEvent(n.renderingComponentId,t)},i)}p.stopPropagation(e)&&(l=!0),p.preventDefault(e)&&t.preventDefault()}o=a||l?void 0:n.shift()}var h,d}getEventHandlerInfosForElement(e,t){return Object.prototype.hasOwnProperty.call(e,this.eventsCollectionKey)?e[this.eventsCollectionKey]:t?e[this.eventsCollectionKey]=new L:null}}M.nextEventDelegatorId=0;class U{constructor(e){this.globalListener=e,this.infosByEventHandlerId={},this.countByEventName={},a.push(this.handleEventNameAliasAdded.bind(this))}add(e){if(this.infosByEventHandlerId[e.eventHandlerId])throw new Error(`Event ${e.eventHandlerId} is already tracked`);this.infosByEventHandlerId[e.eventHandlerId]=e,this.addGlobalListener(e.eventName)}get(e){return this.infosByEventHandlerId[e]}addGlobalListener(e){if(e=l(e),Object.prototype.hasOwnProperty.call(this.countByEventName,e))this.countByEventName[e]++;else{this.countByEventName[e]=1;const t=Object.prototype.hasOwnProperty.call(x,e);document.addEventListener(e,this.globalListener,t)}}update(e,t){if(Object.prototype.hasOwnProperty.call(this.infosByEventHandlerId,t))throw new Error(`Event ${t} is already tracked`);const n=this.infosByEventHandlerId[e];delete this.infosByEventHandlerId[e],n.eventHandlerId=t,this.infosByEventHandlerId[t]=n}remove(e){const t=this.infosByEventHandlerId[e];if(t){delete this.infosByEventHandlerId[e];const n=l(t.eventName);0==--this.countByEventName[n]&&(delete this.countByEventName[n],document.removeEventListener(n,this.globalListener))}return t}handleEventNameAliasAdded(e,t){if(Object.prototype.hasOwnProperty.call(this.countByEventName,e)){const n=this.countByEventName[e];delete this.countByEventName[e],document.removeEventListener(e,this.globalListener),this.addGlobalListener(t),this.countByEventName[t]+=n-1}}}class L{constructor(){this.handlers={},this.preventDefaultFlags=null,this.stopPropagationFlags=null}getHandler(e){return Object.prototype.hasOwnProperty.call(this.handlers,e)?this.handlers[e]:null}setHandler(e,t){this.handlers[e]=t}removeHandler(e){delete this.handlers[e]}preventDefault(e,t){return void 0!==t&&(this.preventDefaultFlags=this.preventDefaultFlags||{},this.preventDefaultFlags[e]=t),!!this.preventDefaultFlags&&this.preventDefaultFlags[e]}stopPropagation(e,t){return void 0!==t&&(this.stopPropagationFlags=this.stopPropagationFlags||{},this.stopPropagationFlags[e]=t),!!this.stopPropagationFlags&&this.stopPropagationFlags[e]}}function B(e){const t={};return e.forEach((e=>{t[e]=!0})),t}const O=Symbol(),F=Symbol(),$=Symbol();function H(e){const{start:t,end:n}=e,o=t[$];if(o){if(o!==e)throw new Error("The start component comment was already associated with another component descriptor.");return t}const r=t.parentNode;if(!r)throw new Error(`Comment not connected to the DOM ${t.textContent}`);const i=W(r,!0),s=Y(i);t[F]=i,t[$]=e;const a=W(t);if(n){const e=Y(a),o=Array.prototype.indexOf.call(s,a)+1;let r=null;for(;r!==n;){const n=s.splice(o,1)[0];if(!n)throw new Error("Could not find the end component comment in the parent logical node list");n[F]=t,e.push(n),r=n}}return a}function W(e,t){if(O in e)return e;const n=[];if(e.childNodes.length>0){if(!t)throw new Error("New logical elements must start empty, or allowExistingContents must be true");e.childNodes.forEach((t=>{const o=W(t,!0);o[F]=e,n.push(o)}))}return e[O]=n,e}function j(e){const t=Y(e);for(;t.length;)J(e,0)}function z(e,t){const n=document.createComment("!");return q(n,e,t),n}function q(e,t,n){const o=e;let r=e;if(Z(e)){const t=oe(o);if(t!==e){const n=new Range;n.setStartBefore(e),n.setEndAfter(t),r=n.extractContents()}}const i=K(o);if(i){const e=Y(i),t=Array.prototype.indexOf.call(e,o);e.splice(t,1),delete o[F]}const s=Y(t);if(n0;)J(n,0)}const o=n;o.parentNode.removeChild(o)}function K(e){return e[F]||null}function V(e,t){return Y(e)[t]}function X(e){return e[$]||null}function G(e){const t=te(e);return"http://www.w3.org/2000/svg"===t.namespaceURI&&"foreignObject"!==t.tagName}function Y(e){return e[O]}function Q(e){const t=Y(K(e));return t[Array.prototype.indexOf.call(t,e)+1]||null}function Z(e){return O in e}function ee(e,t){const n=Y(e);t.forEach((e=>{e.moveRangeStart=n[e.fromSiblingIndex],e.moveRangeEnd=oe(e.moveRangeStart)})),t.forEach((t=>{const o=document.createComment("marker");t.moveToBeforeMarker=o;const r=n[t.toSiblingIndex+1];r?r.parentNode.insertBefore(o,r):ne(o,e)})),t.forEach((e=>{const t=e.moveToBeforeMarker,n=t.parentNode,o=e.moveRangeStart,r=e.moveRangeEnd;let i=o;for(;i;){const e=i.nextSibling;if(n.insertBefore(i,t),i===r)break;i=e}n.removeChild(t)})),t.forEach((e=>{n[e.toSiblingIndex]=e.moveRangeStart}))}function te(e){if(e instanceof Element||e instanceof DocumentFragment)return e;if(e instanceof Comment)return e.parentNode;throw new Error("Not a valid logical element")}function ne(e,t){if(t instanceof Element||t instanceof DocumentFragment)t.appendChild(e);else{if(!(t instanceof Comment))throw new Error(`Cannot append node because the parent is not a valid logical element. Parent: ${t}`);{const n=Q(t);n?n.parentNode.insertBefore(e,n):ne(e,K(t))}}}function oe(e){if(e instanceof Element||e instanceof DocumentFragment)return e;const t=Q(e);if(t)return t.previousSibling;{const t=K(e);return t instanceof Element||t instanceof DocumentFragment?t.lastChild:oe(t)}}function re(e){return`_bl_${e}`}const ie="__internalId";e.attachReviver(((e,t)=>t&&"object"==typeof t&&Object.prototype.hasOwnProperty.call(t,ie)&&"string"==typeof t[ie]?function(e){const t=`[${re(e)}]`;return document.querySelector(t)}(t[ie]):t));const se="_blazorDeferredValue";function ae(e){e instanceof HTMLOptionElement?de(e):se in e&&he(e,e[se])}function ce(e){return"select-multiple"===e.type}function le(e,t){e.value=t||""}function he(e,t){e instanceof HTMLSelectElement?ce(e)?function(e,t){t||(t=[]);for(let n=0;n{Oe()&&Ne(e,(e=>{Xe(e,!0,!1)}))}))}getRootComponentCount(){return this.rootComponentIds.size}attachRootComponentToLogicalElement(e,t,n){if(we(t))throw new Error(`Root component '${e}' could not be attached because its target element is already associated with a root component`);n&&(t=z(t,Y(t).length)),ye(t,!0),this.attachComponentToElement(e,t),this.rootComponentIds.add(e),fe.add(t)}updateComponent(e,t,n,o){var r;const i=this.childComponentLocations[t];if(!i)throw new Error(`No element is currently associated with component ${t}`);fe.delete(i)&&(j(i),i instanceof Comment&&(i.textContent="!"));const s=null===(r=te(i))||void 0===r?void 0:r.getRootNode(),a=s&&s.activeElement;this.applyEdits(e,t,i,0,n,o),a instanceof HTMLElement&&s&&s.activeElement!==a&&a.focus()}disposeComponent(e){if(this.rootComponentIds.delete(e)){const t=this.childComponentLocations[e];ye(t,!1),!0===t[me]?fe.add(t):j(t)}delete this.childComponentLocations[e]}disposeEventHandler(e){this.eventDelegator.removeListener(e)}attachComponentToElement(e,t){this.childComponentLocations[e]=t}applyEdits(e,n,o,r,i,s){let a,c=0,l=r;const h=e.arrayBuilderSegmentReader,d=e.editReader,u=e.frameReader,p=h.values(i),f=h.offset(i),g=f+h.count(i);for(let i=f;i{const t=document.createElement("script");t.textContent=e.textContent,e.getAttributeNames().forEach((n=>{t.setAttribute(n,e.getAttribute(n))})),e.parentNode.replaceChild(t,e)})),ue.content));var s;let a=0;for(;i.firstChild;)q(i.firstChild,r,a++)}applyAttribute(e,t,n,o){const r=e.frameReader,i=r.attributeName(o),s=r.attributeEventHandlerId(o);if(s){const e=Se(i);return void this.eventDelegator.setListener(n,e,s,t)}const a=r.attributeValue(o);this.setOrRemoveAttributeOrProperty(n,i,a)}insertFrameRange(e,t,n,o,r,i,s){const a=o;for(let a=i;a{et(t,e)})},enableNavigationInterception:function(e){if(void 0!==Ee&&Ee!==e)throw new Error("Only one interactive runtime may enable navigation interception at a time.");Ee=e},setHasLocationChangingListeners:function(e,t){const n=je.get(e);if(!n)throw new Error(`Renderer with ID '${e}' is not listening for navigation events`);n.hasLocationChangingEventListeners=t},endLocationChanging:function(e,t){qe&&e===We&&(qe(t),qe=null)},navigateTo:function(e,t){Ve(e,t,!0)},refresh:function(e){!e&&Me()?Ue(location.href,!0):location.reload()},getBaseURI:()=>document.baseURI,getLocationHref:()=>location.href,scrollToElement:Ke};function Ke(e){const t=document.getElementById(e);return!!t&&(t.scrollIntoView(),!0)}function Ve(e,t,n=!1){const o=Le(e),r=ot();if(t.forceLoad||!Pe(o)||"serverside-fullpageload"===r)!function(e,t){if(location.href===e){const t=e+"?";history.replaceState(null,"",t),location.replace(e)}else t?location.replace(e):location.href=e}(e,t.replaceHistoryEntry);else if("clientside-router"===r)Xe(o,!1,t.replaceHistoryEntry,t.historyEntryState,n);else{if("serverside-enhanced"!==r)throw new Error(`Unsupported page load mechanism: ${r}`);Ue(o,t.replaceHistoryEntry)}}async function Xe(e,t,n,o=void 0,r=!1){if(Qe(),function(e){const t=e.indexOf("#");return t>-1&&location.href.replace(location.hash,"")===e.substring(0,t)}(e))return void function(e,t,n){Ge(e,t,n);const o=e.indexOf("#");o!==e.length-1&&Ke(e.substring(o+1))}(e,n,o);const i=nt();(r||!(null==i?void 0:i.hasLocationChangingEventListeners)||await Ze(e,o,t,i))&&(Re=!0,Ge(e,n,o),await et(t))}function Ge(e,t,n=void 0){t?history.replaceState({userState:n,_index:He},"",e):(He++,history.pushState({userState:n,_index:He},"",e))}function Ye(e){return new Promise((t=>{const n=ze;ze=()=>{ze=n,t()},history.go(e)}))}function Qe(){qe&&(qe(!1),qe=null)}function Ze(e,t,n,o){return new Promise((r=>{Qe(),We++,qe=r,o.locationChanging(We,e,t,n)}))}async function et(e,t){const n=null!=t?t:location.href;await Promise.all(Array.from(je,(async([t,o])=>{var r;T(t)&&await o.locationChanged(n,null===(r=history.state)||void 0===r?void 0:r.userState,e)})))}async function tt(e){var t,n;ze&&"serverside-enhanced"!==ot()&&await ze(e),He=null!==(n=null===(t=history.state)||void 0===t?void 0:t._index)&&void 0!==n?n:0}function nt(){const e=Fe();if(void 0!==e)return je.get(e)}function ot(){return Oe()?"clientside-router":Me()?"serverside-enhanced":window.Blazor._internal.isBlazorWeb?"serverside-fullpageload":"clientside-router"}const rt={focus:function(e,t){if(e instanceof HTMLElement)e.focus({preventScroll:t});else{if(!(e instanceof SVGElement))throw new Error("Unable to focus an invalid element.");if(!e.hasAttribute("tabindex"))throw new Error("Unable to focus an SVG element that does not have a tabindex.");e.focus({preventScroll:t})}},focusBySelector:function(e,t){const n=document.querySelector(e);n&&(n.hasAttribute("tabindex")||(n.tabIndex=-1),n.focus({preventScroll:!0}))}},it={init:function(e,t,n,o=50){const r=at(t);(r||document.documentElement).style.overflowAnchor="none";const i=document.createRange();u(n.parentElement)&&(t.style.display="table-row",n.style.display="table-row");const s=new IntersectionObserver((function(o){o.forEach((o=>{var r;if(!o.isIntersecting)return;i.setStartAfter(t),i.setEndBefore(n);const s=i.getBoundingClientRect().height,a=null===(r=o.rootBounds)||void 0===r?void 0:r.height;o.target===t?e.invokeMethodAsync("OnSpacerBeforeVisible",o.intersectionRect.top-o.boundingClientRect.top,s,a):o.target===n&&n.offsetHeight>0&&e.invokeMethodAsync("OnSpacerAfterVisible",o.boundingClientRect.bottom-o.intersectionRect.bottom,s,a)}))}),{root:r,rootMargin:`${o}px`});s.observe(t),s.observe(n);const a=d(t),c=d(n),{observersByDotNetObjectId:l,id:h}=ct(e);function d(e){const t={attributes:!0},n=new MutationObserver(((n,o)=>{u(e.parentElement)&&(o.disconnect(),e.style.display="table-row",o.observe(e,t)),s.unobserve(e),s.observe(e)}));return n.observe(e,t),n}function u(e){return null!==e&&(e instanceof HTMLTableElement&&""===e.style.display||"table"===e.style.display||e instanceof HTMLTableSectionElement&&""===e.style.display||"table-row-group"===e.style.display)}l[h]={intersectionObserver:s,mutationObserverBefore:a,mutationObserverAfter:c}},dispose:function(e){const{observersByDotNetObjectId:t,id:n}=ct(e),o=t[n];o&&(o.intersectionObserver.disconnect(),o.mutationObserverBefore.disconnect(),o.mutationObserverAfter.disconnect(),e.dispose(),delete t[n])}},st=Symbol();function at(e){return e&&e!==document.body&&e!==document.documentElement?"visible"!==getComputedStyle(e).overflowY?e:at(e.parentElement):null}function ct(e){var t;const n=e._callDispatcher,o=e._id;return null!==(t=n[st])&&void 0!==t||(n[st]={}),{observersByDotNetObjectId:n[st],id:o}}const lt={getAndRemoveExistingTitle:function(){var e;const t=document.head?document.head.getElementsByTagName("title"):[];if(0===t.length)return null;let n=null;for(let o=t.length-1;o>=0;o--){const r=t[o],i=r.previousSibling;i instanceof Comment&&null!==K(i)||(null===n&&(n=r.textContent),null===(e=r.parentNode)||void 0===e||e.removeChild(r))}return n}},ht={init:function(e,t){t._blazorInputFileNextFileId=0,t.addEventListener("click",(function(){t.value=""})),t.addEventListener("change",(function(){t._blazorFilesById={};const n=Array.prototype.map.call(t.files,(function(e){const n={id:++t._blazorInputFileNextFileId,lastModified:new Date(e.lastModified).toISOString(),name:e.name,size:e.size,contentType:e.type,readPromise:void 0,arrayBuffer:void 0,blob:e};return t._blazorFilesById[n.id]=n,n}));e.invokeMethodAsync("NotifyChange",n)}))},toImageFile:async function(e,t,n,o,r){const i=dt(e,t),s=await new Promise((function(e){const t=new Image;t.onload=function(){URL.revokeObjectURL(t.src),e(t)},t.onerror=function(){t.onerror=null,URL.revokeObjectURL(t.src)},t.src=URL.createObjectURL(i.blob)})),a=await new Promise((function(e){var t;const i=Math.min(1,o/s.width),a=Math.min(1,r/s.height),c=Math.min(i,a),l=document.createElement("canvas");l.width=Math.round(s.width*c),l.height=Math.round(s.height*c),null===(t=l.getContext("2d"))||void 0===t||t.drawImage(s,0,0,l.width,l.height),l.toBlob(e,n)})),c={id:++e._blazorInputFileNextFileId,lastModified:i.lastModified,name:i.name,size:(null==a?void 0:a.size)||0,contentType:n,blob:a||i.blob};return e._blazorFilesById[c.id]=c,c},readFileData:async function(e,t){return dt(e,t).blob}};function dt(e,t){const n=e._blazorFilesById[t];if(!n)throw new Error(`There is no file with ID ${t}. The file list may have changed. See https://aka.ms/aspnet/blazor-input-file-multiple-selections.`);return n}const ut=new Set,pt={enableNavigationPrompt:function(e){0===ut.size&&window.addEventListener("beforeunload",ft),ut.add(e)},disableNavigationPrompt:function(e){ut.delete(e),0===ut.size&&window.removeEventListener("beforeunload",ft)}};function ft(e){e.preventDefault(),e.returnValue=!0}async function gt(e,t,n){return e instanceof Blob?await async function(e,t,n){const o=e.slice(t,t+n),r=await o.arrayBuffer();return new Uint8Array(r)}(e,t,n):function(e,t,n){return new Uint8Array(e.buffer,e.byteOffset+t,n)}(e,t,n)}const mt=new Map,vt={navigateTo:function(e,t,n=!1){Ve(e,t instanceof Object?t:{forceLoad:t,replaceHistoryEntry:n})},registerCustomEventType:function(e,t){if(!t)throw new Error("The options parameter is required.");if(i.has(e))throw new Error(`The event '${e}' is already registered.`);if(t.browserEventName){const n=s.get(t.browserEventName);n?n.push(e):s.set(t.browserEventName,[e]),a.forEach((n=>n(e,t.browserEventName)))}i.set(e,t)},rootComponents:y,runtime:{},_internal:{navigationManager:Je,domWrapper:rt,Virtualize:it,PageTitle:lt,InputFile:ht,NavigationLock:pt,getJSDataStreamChunk:gt,attachWebRendererInterop:k}};var yt;window.Blazor=vt,function(e){e[e.Trace=0]="Trace",e[e.Debug=1]="Debug",e[e.Information=2]="Information",e[e.Warning=3]="Warning",e[e.Error=4]="Error",e[e.Critical=5]="Critical",e[e.None=6]="None"}(yt||(yt={}));class wt{log(e,t){}}wt.instance=new wt;class bt{constructor(e){this.minLevel=e}log(e,t){if(e>=this.minLevel){const n=`[${(new Date).toISOString()}] ${yt[e]}: ${t}`;switch(e){case yt.Critical:case yt.Error:console.error(n);break;case yt.Warning:console.warn(n);break;case yt.Information:console.info(n);break;default:console.log(n)}}}}function _t(e,t){switch(t){case"webassembly":return Tt(e,"webassembly");case"server":return function(e){return Tt(e,"server").sort(((e,t)=>e.sequence-t.sequence))}(e);case"auto":return Tt(e,"auto")}}const St=/^\s*Blazor-Server-Component-State:(?[a-zA-Z0-9+/=]+)$/,Ct=/^\s*Blazor-WebAssembly-Component-State:(?[a-zA-Z0-9+/=]+)$/,Et=/^\s*Blazor-Web-Initializers:(?[a-zA-Z0-9+/=]+)$/;function It(e){return kt(e,St)}function kt(e,t,n="state"){var o;if(e.nodeType===Node.COMMENT_NODE){const r=e.textContent||"",i=t.exec(r),s=i&&i.groups&&i.groups[n];return s&&(null===(o=e.parentNode)||void 0===o||o.removeChild(e)),s}if(!e.hasChildNodes())return;const r=e.childNodes;for(let e=0;e.*)$/);function Dt(e,t){const n=e.currentElement;var o,r,i;if(n&&n.nodeType===Node.COMMENT_NODE&&n.textContent){const s=Rt.exec(n.textContent),a=s&&s.groups&&s.groups.descriptor;if(!a)return;!function(e){if(e.parentNode instanceof Document)throw new Error("Root components cannot be marked as interactive. The element must be rendered statically so that scripts are not evaluated multiple times.")}(n);try{const s=function(e){const t=JSON.parse(e),{type:n}=t;if("server"!==n&&"webassembly"!==n&&"auto"!==n)throw new Error(`Invalid component type '${n}'.`);return t}(a),c=function(e,t,n){const{prerenderId:o}=e;if(o){for(;n.next()&&n.currentElement;){const e=n.currentElement;if(e.nodeType!==Node.COMMENT_NODE)continue;if(!e.textContent)continue;const t=Rt.exec(e.textContent),r=t&&t[1];if(r)return Pt(r,o),e}throw new Error(`Could not find an end component comment for '${t}'.`)}}(s,n,e);if(t!==s.type)return;switch(s.type){case"webassembly":return r=n,i=c,Nt(o=s),{...o,uniqueId:At++,start:r,end:i};case"server":return function(e,t,n){return xt(e),{...e,uniqueId:At++,start:t,end:n}}(s,n,c);case"auto":return function(e,t,n){return xt(e),Nt(e),{...e,uniqueId:At++,start:t,end:n}}(s,n,c)}}catch(e){throw new Error(`Found malformed component comment at ${n.textContent}`)}}}let At=0;function xt(e){const{descriptor:t,sequence:n}=e;if(!t)throw new Error("descriptor must be defined when using a descriptor.");if(void 0===n)throw new Error("sequence must be defined when using a descriptor.");if(!Number.isInteger(n))throw new Error(`Error parsing the sequence '${n}' for component '${JSON.stringify(e)}'`)}function Nt(e){const{assembly:t,typeName:n}=e;if(!t)throw new Error("assembly must be defined when using a descriptor.");if(!n)throw new Error("typeName must be defined when using a descriptor.");e.parameterDefinitions=e.parameterDefinitions&&atob(e.parameterDefinitions),e.parameterValues=e.parameterValues&&atob(e.parameterValues)}function Pt(e,t){const n=JSON.parse(e);if(1!==Object.keys(n).length)throw new Error(`Invalid end of component comment: '${e}'`);const o=n.prerenderId;if(!o)throw new Error(`End of component comment must have a value for the prerendered property: '${e}'`);if(o!==t)throw new Error(`End of component comment prerendered property must match the start comment prerender id: '${t}', '${o}'`)}class Mt{constructor(e){this.childNodes=e,this.currentIndex=-1,this.length=e.length}next(){return this.currentIndex++,this.currentIndex{n+=`0x${e<16?"0":""}${e.toString(16)} `})),n.substr(0,n.length-1)}(e)}'`)):"string"==typeof e&&(n=`String data of length ${e.length}`,t&&(n+=`. Content: '${e}'`)),n}function zt(e){return e&&"undefined"!=typeof ArrayBuffer&&(e instanceof ArrayBuffer||e.constructor&&"ArrayBuffer"===e.constructor.name)}async function qt(e,t,n,o,r,i){const s={},[a,c]=Vt();s[a]=c,e.log(Ot.Trace,`(${t} transport) sending data. ${jt(r,i.logMessageContent)}.`);const l=zt(r)?"arraybuffer":"text",h=await n.post(o,{content:r,headers:{...s,...i.headers},responseType:l,timeout:i.timeout,withCredentials:i.withCredentials});e.log(Ot.Trace,`(${t} transport) request complete. Response status: ${h.statusCode}.`)}class Jt{constructor(e,t){this._subject=e,this._observer=t}dispose(){const e=this._subject.observers.indexOf(this._observer);e>-1&&this._subject.observers.splice(e,1),0===this._subject.observers.length&&this._subject.cancelCallback&&this._subject.cancelCallback().catch((e=>{}))}}class Kt{constructor(e){this._minLevel=e,this.out=console}log(e,t){if(e>=this._minLevel){const n=`[${(new Date).toISOString()}] ${Ot[e]}: ${t}`;switch(e){case Ot.Critical:case Ot.Error:this.out.error(n);break;case Ot.Warning:this.out.warn(n);break;case Ot.Information:this.out.info(n);break;default:this.out.log(n)}}}}function Vt(){let e="X-SignalR-User-Agent";return Wt.isNode&&(e="User-Agent"),[e,Xt($t,Gt(),Wt.isNode?"NodeJS":"Browser",Yt())]}function Xt(e,t,n,o){let r="Microsoft SignalR/";const i=e.split(".");return r+=`${i[0]}.${i[1]}`,r+=` (${e}; `,r+=t&&""!==t?`${t}; `:"Unknown OS; ",r+=`${n}`,r+=o?`; ${o}`:"; Unknown Runtime Version",r+=")",r}function Gt(){if(!Wt.isNode)return"";switch(process.platform){case"win32":return"Windows NT";case"darwin":return"macOS";case"linux":return"Linux";default:return process.platform}}function Yt(){if(Wt.isNode)return process.versions.node}function Qt(e){return e.stack?e.stack:e.message?e.message:`${e}`}class Zt{writeHandshakeRequest(e){return Bt.write(JSON.stringify(e))}parseHandshakeResponse(e){let t,n;if(zt(e)){const o=new Uint8Array(e),r=o.indexOf(Bt.RecordSeparatorCode);if(-1===r)throw new Error("Message is incomplete.");const i=r+1;t=String.fromCharCode.apply(null,Array.prototype.slice.call(o.slice(0,i))),n=o.byteLength>i?o.slice(i).buffer:null}else{const o=e,r=o.indexOf(Bt.RecordSeparator);if(-1===r)throw new Error("Message is incomplete.");const i=r+1;t=o.substring(0,i),n=o.length>i?o.substring(i):null}const o=Bt.parse(t),r=JSON.parse(o[0]);if(r.type)throw new Error("Expected a handshake response from the server.");return[n,r]}}class en extends Error{constructor(e,t){const n=new.target.prototype;super(`${e}: Status code '${t}'`),this.statusCode=t,this.__proto__=n}}class tn extends Error{constructor(e="A timeout occurred."){const t=new.target.prototype;super(e),this.__proto__=t}}class nn extends Error{constructor(e="An abort occurred."){const t=new.target.prototype;super(e),this.__proto__=t}}class on extends Error{constructor(e,t){const n=new.target.prototype;super(e),this.transport=t,this.errorType="UnsupportedTransportError",this.__proto__=n}}class rn extends Error{constructor(e,t){const n=new.target.prototype;super(e),this.transport=t,this.errorType="DisabledTransportError",this.__proto__=n}}class sn extends Error{constructor(e,t){const n=new.target.prototype;super(e),this.transport=t,this.errorType="FailedToStartTransportError",this.__proto__=n}}class an extends Error{constructor(e){const t=new.target.prototype;super(e),this.errorType="FailedToNegotiateWithServerError",this.__proto__=t}}class cn extends Error{constructor(e,t){const n=new.target.prototype;super(e),this.innerErrors=t,this.__proto__=n}}var ln,hn;!function(e){e[e.Invocation=1]="Invocation",e[e.StreamItem=2]="StreamItem",e[e.Completion=3]="Completion",e[e.StreamInvocation=4]="StreamInvocation",e[e.CancelInvocation=5]="CancelInvocation",e[e.Ping=6]="Ping",e[e.Close=7]="Close",e[e.Ack=8]="Ack",e[e.Sequence=9]="Sequence"}(ln||(ln={}));class dn{constructor(){this.observers=[]}next(e){for(const t of this.observers)t.next(e)}error(e){for(const t of this.observers)t.error&&t.error(e)}complete(){for(const e of this.observers)e.complete&&e.complete()}subscribe(e){return this.observers.push(e),new Jt(this,e)}}class un{constructor(e,t,n){this._bufferSize=1e5,this._messages=[],this._totalMessageCount=0,this._waitForSequenceMessage=!1,this._nextReceivingSequenceId=1,this._latestReceivedSequenceId=0,this._bufferedByteCount=0,this._reconnectInProgress=!1,this._protocol=e,this._connection=t,this._bufferSize=n}async _send(e){const t=this._protocol.writeMessage(e);let n=Promise.resolve();if(this._isInvocationMessage(e)){this._totalMessageCount++;let e=()=>{},o=()=>{};zt(t)?this._bufferedByteCount+=t.byteLength:this._bufferedByteCount+=t.length,this._bufferedByteCount>=this._bufferSize&&(n=new Promise(((t,n)=>{e=t,o=n}))),this._messages.push(new pn(t,this._totalMessageCount,e,o))}try{this._reconnectInProgress||await this._connection.send(t)}catch{this._disconnected()}await n}_ack(e){let t=-1;for(let n=0;nthis._nextReceivingSequenceId?this._connection.stop(new Error("Sequence ID greater than amount of messages we've received.")):this._nextReceivingSequenceId=e.sequenceId}_disconnected(){this._reconnectInProgress=!0,this._waitForSequenceMessage=!0}async _resend(){const e=0!==this._messages.length?this._messages[0]._id:this._totalMessageCount+1;await this._connection.send(this._protocol.writeMessage({type:ln.Sequence,sequenceId:e}));const t=this._messages;for(const e of t)await this._connection.send(e._message);this._reconnectInProgress=!1}_dispose(e){null!=e||(e=new Error("Unable to reconnect to server."));for(const t of this._messages)t._rejector(e)}_isInvocationMessage(e){switch(e.type){case ln.Invocation:case ln.StreamItem:case ln.Completion:case ln.StreamInvocation:case ln.CancelInvocation:return!0;case ln.Close:case ln.Sequence:case ln.Ping:case ln.Ack:return!1}}_ackTimer(){void 0===this._ackTimerHandle&&(this._ackTimerHandle=setTimeout((async()=>{try{this._reconnectInProgress||await this._connection.send(this._protocol.writeMessage({type:ln.Ack,sequenceId:this._latestReceivedSequenceId}))}catch{}clearTimeout(this._ackTimerHandle),this._ackTimerHandle=void 0}),1e3))}}class pn{constructor(e,t,n,o){this._message=e,this._id=t,this._resolver=n,this._rejector=o}}!function(e){e.Disconnected="Disconnected",e.Connecting="Connecting",e.Connected="Connected",e.Disconnecting="Disconnecting",e.Reconnecting="Reconnecting"}(hn||(hn={}));class fn{static create(e,t,n,o,r,i,s){return new fn(e,t,n,o,r,i,s)}constructor(e,t,n,o,r,i,s){this._nextKeepAlive=0,this._freezeEventListener=()=>{this._logger.log(Ot.Warning,"The page is being frozen, this will likely lead to the connection being closed and messages being lost. For more information see the docs at https://learn.microsoft.com/aspnet/core/signalr/javascript-client#bsleep")},Ht.isRequired(e,"connection"),Ht.isRequired(t,"logger"),Ht.isRequired(n,"protocol"),this.serverTimeoutInMilliseconds=null!=r?r:3e4,this.keepAliveIntervalInMilliseconds=null!=i?i:15e3,this._statefulReconnectBufferSize=null!=s?s:1e5,this._logger=t,this._protocol=n,this.connection=e,this._reconnectPolicy=o,this._handshakeProtocol=new Zt,this.connection.onreceive=e=>this._processIncomingData(e),this.connection.onclose=e=>this._connectionClosed(e),this._callbacks={},this._methods={},this._closedCallbacks=[],this._reconnectingCallbacks=[],this._reconnectedCallbacks=[],this._invocationId=0,this._receivedHandshakeResponse=!1,this._connectionState=hn.Disconnected,this._connectionStarted=!1,this._cachedPingMessage=this._protocol.writeMessage({type:ln.Ping})}get state(){return this._connectionState}get connectionId(){return this.connection&&this.connection.connectionId||null}get baseUrl(){return this.connection.baseUrl||""}set baseUrl(e){if(this._connectionState!==hn.Disconnected&&this._connectionState!==hn.Reconnecting)throw new Error("The HubConnection must be in the Disconnected or Reconnecting state to change the url.");if(!e)throw new Error("The HubConnection url must be a valid url.");this.connection.baseUrl=e}start(){return this._startPromise=this._startWithStateTransitions(),this._startPromise}async _startWithStateTransitions(){if(this._connectionState!==hn.Disconnected)return Promise.reject(new Error("Cannot start a HubConnection that is not in the 'Disconnected' state."));this._connectionState=hn.Connecting,this._logger.log(Ot.Debug,"Starting HubConnection.");try{await this._startInternal(),Wt.isBrowser&&window.document.addEventListener("freeze",this._freezeEventListener),this._connectionState=hn.Connected,this._connectionStarted=!0,this._logger.log(Ot.Debug,"HubConnection connected successfully.")}catch(e){return this._connectionState=hn.Disconnected,this._logger.log(Ot.Debug,`HubConnection failed to start successfully because of error '${e}'.`),Promise.reject(e)}}async _startInternal(){this._stopDuringStartError=void 0,this._receivedHandshakeResponse=!1;const e=new Promise(((e,t)=>{this._handshakeResolver=e,this._handshakeRejecter=t}));await this.connection.start(this._protocol.transferFormat);try{let t=this._protocol.version;this.connection.features.reconnect||(t=1);const n={protocol:this._protocol.name,version:t};if(this._logger.log(Ot.Debug,"Sending handshake request."),await this._sendMessage(this._handshakeProtocol.writeHandshakeRequest(n)),this._logger.log(Ot.Information,`Using HubProtocol '${this._protocol.name}'.`),this._cleanupTimeout(),this._resetTimeoutPeriod(),this._resetKeepAliveInterval(),await e,this._stopDuringStartError)throw this._stopDuringStartError;!!this.connection.features.reconnect&&(this._messageBuffer=new un(this._protocol,this.connection,this._statefulReconnectBufferSize),this.connection.features.disconnected=this._messageBuffer._disconnected.bind(this._messageBuffer),this.connection.features.resend=()=>{if(this._messageBuffer)return this._messageBuffer._resend()}),this.connection.features.inherentKeepAlive||await this._sendMessage(this._cachedPingMessage)}catch(e){throw this._logger.log(Ot.Debug,`Hub handshake failed with error '${e}' during start(). Stopping HubConnection.`),this._cleanupTimeout(),this._cleanupPingTimer(),await this.connection.stop(e),e}}async stop(){const e=this._startPromise;this.connection.features.reconnect=!1,this._stopPromise=this._stopInternal(),await this._stopPromise;try{await e}catch(e){}}_stopInternal(e){if(this._connectionState===hn.Disconnected)return this._logger.log(Ot.Debug,`Call to HubConnection.stop(${e}) ignored because it is already in the disconnected state.`),Promise.resolve();if(this._connectionState===hn.Disconnecting)return this._logger.log(Ot.Debug,`Call to HttpConnection.stop(${e}) ignored because the connection is already in the disconnecting state.`),this._stopPromise;const t=this._connectionState;return this._connectionState=hn.Disconnecting,this._logger.log(Ot.Debug,"Stopping HubConnection."),this._reconnectDelayHandle?(this._logger.log(Ot.Debug,"Connection stopped during reconnect delay. Done reconnecting."),clearTimeout(this._reconnectDelayHandle),this._reconnectDelayHandle=void 0,this._completeClose(),Promise.resolve()):(t===hn.Connected&&this._sendCloseMessage(),this._cleanupTimeout(),this._cleanupPingTimer(),this._stopDuringStartError=e||new nn("The connection was stopped before the hub handshake could complete."),this.connection.stop(e))}async _sendCloseMessage(){try{await this._sendWithProtocol(this._createCloseMessage())}catch{}}stream(e,...t){const[n,o]=this._replaceStreamingParams(t),r=this._createStreamInvocation(e,t,o);let i;const s=new dn;return s.cancelCallback=()=>{const e=this._createCancelInvocation(r.invocationId);return delete this._callbacks[r.invocationId],i.then((()=>this._sendWithProtocol(e)))},this._callbacks[r.invocationId]=(e,t)=>{t?s.error(t):e&&(e.type===ln.Completion?e.error?s.error(new Error(e.error)):s.complete():s.next(e.item))},i=this._sendWithProtocol(r).catch((e=>{s.error(e),delete this._callbacks[r.invocationId]})),this._launchStreams(n,i),s}_sendMessage(e){return this._resetKeepAliveInterval(),this.connection.send(e)}_sendWithProtocol(e){return this._messageBuffer?this._messageBuffer._send(e):this._sendMessage(this._protocol.writeMessage(e))}send(e,...t){const[n,o]=this._replaceStreamingParams(t),r=this._sendWithProtocol(this._createInvocation(e,t,!0,o));return this._launchStreams(n,r),r}invoke(e,...t){const[n,o]=this._replaceStreamingParams(t),r=this._createInvocation(e,t,!1,o);return new Promise(((e,t)=>{this._callbacks[r.invocationId]=(n,o)=>{o?t(o):n&&(n.type===ln.Completion?n.error?t(new Error(n.error)):e(n.result):t(new Error(`Unexpected message type: ${n.type}`)))};const o=this._sendWithProtocol(r).catch((e=>{t(e),delete this._callbacks[r.invocationId]}));this._launchStreams(n,o)}))}on(e,t){e&&t&&(e=e.toLowerCase(),this._methods[e]||(this._methods[e]=[]),-1===this._methods[e].indexOf(t)&&this._methods[e].push(t))}off(e,t){if(!e)return;e=e.toLowerCase();const n=this._methods[e];if(n)if(t){const o=n.indexOf(t);-1!==o&&(n.splice(o,1),0===n.length&&delete this._methods[e])}else delete this._methods[e]}onclose(e){e&&this._closedCallbacks.push(e)}onreconnecting(e){e&&this._reconnectingCallbacks.push(e)}onreconnected(e){e&&this._reconnectedCallbacks.push(e)}_processIncomingData(e){if(this._cleanupTimeout(),this._receivedHandshakeResponse||(e=this._processHandshakeResponse(e),this._receivedHandshakeResponse=!0),e){const t=this._protocol.parseMessages(e,this._logger);for(const e of t)if(!this._messageBuffer||this._messageBuffer._shouldProcessMessage(e))switch(e.type){case ln.Invocation:this._invokeClientMethod(e);break;case ln.StreamItem:case ln.Completion:{const t=this._callbacks[e.invocationId];if(t){e.type===ln.Completion&&delete this._callbacks[e.invocationId];try{t(e)}catch(e){this._logger.log(Ot.Error,`Stream callback threw error: ${Qt(e)}`)}}break}case ln.Ping:break;case ln.Close:{this._logger.log(Ot.Information,"Close message received from server.");const t=e.error?new Error("Server returned an error on close: "+e.error):void 0;!0===e.allowReconnect?this.connection.stop(t):this._stopPromise=this._stopInternal(t);break}case ln.Ack:this._messageBuffer&&this._messageBuffer._ack(e);break;case ln.Sequence:this._messageBuffer&&this._messageBuffer._resetSequence(e);break;default:this._logger.log(Ot.Warning,`Invalid message type: ${e.type}.`)}}this._resetTimeoutPeriod()}_processHandshakeResponse(e){let t,n;try{[n,t]=this._handshakeProtocol.parseHandshakeResponse(e)}catch(e){const t="Error parsing handshake response: "+e;this._logger.log(Ot.Error,t);const n=new Error(t);throw this._handshakeRejecter(n),n}if(t.error){const e="Server returned handshake error: "+t.error;this._logger.log(Ot.Error,e);const n=new Error(e);throw this._handshakeRejecter(n),n}return this._logger.log(Ot.Debug,"Server handshake complete."),this._handshakeResolver(),n}_resetKeepAliveInterval(){this.connection.features.inherentKeepAlive||(this._nextKeepAlive=(new Date).getTime()+this.keepAliveIntervalInMilliseconds,this._cleanupPingTimer())}_resetTimeoutPeriod(){if(!(this.connection.features&&this.connection.features.inherentKeepAlive||(this._timeoutHandle=setTimeout((()=>this.serverTimeout()),this.serverTimeoutInMilliseconds),void 0!==this._pingServerHandle))){let e=this._nextKeepAlive-(new Date).getTime();e<0&&(e=0),this._pingServerHandle=setTimeout((async()=>{if(this._connectionState===hn.Connected)try{await this._sendMessage(this._cachedPingMessage)}catch{this._cleanupPingTimer()}}),e)}}serverTimeout(){this.connection.stop(new Error("Server timeout elapsed without receiving a message from the server."))}async _invokeClientMethod(e){const t=e.target.toLowerCase(),n=this._methods[t];if(!n)return this._logger.log(Ot.Warning,`No client method with the name '${t}' found.`),void(e.invocationId&&(this._logger.log(Ot.Warning,`No result given for '${t}' method and invocation ID '${e.invocationId}'.`),await this._sendWithProtocol(this._createCompletionMessage(e.invocationId,"Client didn't provide a result.",null))));const o=n.slice(),r=!!e.invocationId;let i,s,a;for(const n of o)try{const o=i;i=await n.apply(this,e.arguments),r&&i&&o&&(this._logger.log(Ot.Error,`Multiple results provided for '${t}'. Sending error to server.`),a=this._createCompletionMessage(e.invocationId,"Client provided multiple results.",null)),s=void 0}catch(e){s=e,this._logger.log(Ot.Error,`A callback for the method '${t}' threw error '${e}'.`)}a?await this._sendWithProtocol(a):r?(s?a=this._createCompletionMessage(e.invocationId,`${s}`,null):void 0!==i?a=this._createCompletionMessage(e.invocationId,null,i):(this._logger.log(Ot.Warning,`No result given for '${t}' method and invocation ID '${e.invocationId}'.`),a=this._createCompletionMessage(e.invocationId,"Client didn't provide a result.",null)),await this._sendWithProtocol(a)):i&&this._logger.log(Ot.Error,`Result given for '${t}' method but server is not expecting a result.`)}_connectionClosed(e){this._logger.log(Ot.Debug,`HubConnection.connectionClosed(${e}) called while in state ${this._connectionState}.`),this._stopDuringStartError=this._stopDuringStartError||e||new nn("The underlying connection was closed before the hub handshake could complete."),this._handshakeResolver&&this._handshakeResolver(),this._cancelCallbacksWithError(e||new Error("Invocation canceled due to the underlying connection being closed.")),this._cleanupTimeout(),this._cleanupPingTimer(),this._connectionState===hn.Disconnecting?this._completeClose(e):this._connectionState===hn.Connected&&this._reconnectPolicy?this._reconnect(e):this._connectionState===hn.Connected&&this._completeClose(e)}_completeClose(e){if(this._connectionStarted){this._connectionState=hn.Disconnected,this._connectionStarted=!1,this._messageBuffer&&(this._messageBuffer._dispose(null!=e?e:new Error("Connection closed.")),this._messageBuffer=void 0),Wt.isBrowser&&window.document.removeEventListener("freeze",this._freezeEventListener);try{this._closedCallbacks.forEach((t=>t.apply(this,[e])))}catch(t){this._logger.log(Ot.Error,`An onclose callback called with error '${e}' threw error '${t}'.`)}}}async _reconnect(e){const t=Date.now();let n=0,o=void 0!==e?e:new Error("Attempting to reconnect due to a unknown error."),r=this._getNextRetryDelay(n++,0,o);if(null===r)return this._logger.log(Ot.Debug,"Connection not reconnecting because the IRetryPolicy returned null on the first reconnect attempt."),void this._completeClose(e);if(this._connectionState=hn.Reconnecting,e?this._logger.log(Ot.Information,`Connection reconnecting because of error '${e}'.`):this._logger.log(Ot.Information,"Connection reconnecting."),0!==this._reconnectingCallbacks.length){try{this._reconnectingCallbacks.forEach((t=>t.apply(this,[e])))}catch(t){this._logger.log(Ot.Error,`An onreconnecting callback called with error '${e}' threw error '${t}'.`)}if(this._connectionState!==hn.Reconnecting)return void this._logger.log(Ot.Debug,"Connection left the reconnecting state in onreconnecting callback. Done reconnecting.")}for(;null!==r;){if(this._logger.log(Ot.Information,`Reconnect attempt number ${n} will start in ${r} ms.`),await new Promise((e=>{this._reconnectDelayHandle=setTimeout(e,r)})),this._reconnectDelayHandle=void 0,this._connectionState!==hn.Reconnecting)return void this._logger.log(Ot.Debug,"Connection left the reconnecting state during reconnect delay. Done reconnecting.");try{if(await this._startInternal(),this._connectionState=hn.Connected,this._logger.log(Ot.Information,"HubConnection reconnected successfully."),0!==this._reconnectedCallbacks.length)try{this._reconnectedCallbacks.forEach((e=>e.apply(this,[this.connection.connectionId])))}catch(e){this._logger.log(Ot.Error,`An onreconnected callback called with connectionId '${this.connection.connectionId}; threw error '${e}'.`)}return}catch(e){if(this._logger.log(Ot.Information,`Reconnect attempt failed because of error '${e}'.`),this._connectionState!==hn.Reconnecting)return this._logger.log(Ot.Debug,`Connection moved to the '${this._connectionState}' from the reconnecting state during reconnect attempt. Done reconnecting.`),void(this._connectionState===hn.Disconnecting&&this._completeClose());o=e instanceof Error?e:new Error(e.toString()),r=this._getNextRetryDelay(n++,Date.now()-t,o)}}this._logger.log(Ot.Information,`Reconnect retries have been exhausted after ${Date.now()-t} ms and ${n} failed attempts. Connection disconnecting.`),this._completeClose()}_getNextRetryDelay(e,t,n){try{return this._reconnectPolicy.nextRetryDelayInMilliseconds({elapsedMilliseconds:t,previousRetryCount:e,retryReason:n})}catch(n){return this._logger.log(Ot.Error,`IRetryPolicy.nextRetryDelayInMilliseconds(${e}, ${t}) threw error '${n}'.`),null}}_cancelCallbacksWithError(e){const t=this._callbacks;this._callbacks={},Object.keys(t).forEach((n=>{const o=t[n];try{o(null,e)}catch(t){this._logger.log(Ot.Error,`Stream 'error' callback called with '${e}' threw error: ${Qt(t)}`)}}))}_cleanupPingTimer(){this._pingServerHandle&&(clearTimeout(this._pingServerHandle),this._pingServerHandle=void 0)}_cleanupTimeout(){this._timeoutHandle&&clearTimeout(this._timeoutHandle)}_createInvocation(e,t,n,o){if(n)return 0!==o.length?{arguments:t,streamIds:o,target:e,type:ln.Invocation}:{arguments:t,target:e,type:ln.Invocation};{const n=this._invocationId;return this._invocationId++,0!==o.length?{arguments:t,invocationId:n.toString(),streamIds:o,target:e,type:ln.Invocation}:{arguments:t,invocationId:n.toString(),target:e,type:ln.Invocation}}}_launchStreams(e,t){if(0!==e.length){t||(t=Promise.resolve());for(const n in e)e[n].subscribe({complete:()=>{t=t.then((()=>this._sendWithProtocol(this._createCompletionMessage(n))))},error:e=>{let o;o=e instanceof Error?e.message:e&&e.toString?e.toString():"Unknown error",t=t.then((()=>this._sendWithProtocol(this._createCompletionMessage(n,o))))},next:e=>{t=t.then((()=>this._sendWithProtocol(this._createStreamItemMessage(n,e))))}})}}_replaceStreamingParams(e){const t=[],n=[];for(let o=0;o0)&&(t=!1,this._accessToken=await this._accessTokenFactory()),this._setAuthorizationHeader(e);const n=await this._innerClient.send(e);return t&&401===n.statusCode&&this._accessTokenFactory?(this._accessToken=await this._accessTokenFactory(),this._setAuthorizationHeader(e),await this._innerClient.send(e)):n}_setAuthorizationHeader(e){e.headers||(e.headers={}),this._accessToken?e.headers[vn.Authorization]=`Bearer ${this._accessToken}`:this._accessTokenFactory&&e.headers[vn.Authorization]&&delete e.headers[vn.Authorization]}getCookieString(e){return this._innerClient.getCookieString(e)}}class _n extends wn{constructor(e){super(),this._logger=e;const t={_fetchType:void 0,_jar:void 0};var o;o=t,"undefined"==typeof fetch&&(o._jar=new(n(628).CookieJar),"undefined"==typeof fetch?o._fetchType=n(200):o._fetchType=fetch,o._fetchType=n(203)(o._fetchType,o._jar),1)?(this._fetchType=t._fetchType,this._jar=t._jar):this._fetchType=fetch.bind(function(){if("undefined"!=typeof globalThis)return globalThis;if("undefined"!=typeof self)return self;if("undefined"!=typeof window)return window;if(void 0!==n.g)return n.g;throw new Error("could not find global")}()),this._abortControllerType=AbortController;const r={_abortControllerType:this._abortControllerType};(function(e){return"undefined"==typeof AbortController&&(e._abortControllerType=n(778),!0)})(r)&&(this._abortControllerType=r._abortControllerType)}async send(e){if(e.abortSignal&&e.abortSignal.aborted)throw new nn;if(!e.method)throw new Error("No method defined.");if(!e.url)throw new Error("No url defined.");const t=new this._abortControllerType;let n;e.abortSignal&&(e.abortSignal.onabort=()=>{t.abort(),n=new nn});let o,r=null;if(e.timeout){const o=e.timeout;r=setTimeout((()=>{t.abort(),this._logger.log(Ot.Warning,"Timeout from HTTP request."),n=new tn}),o)}""===e.content&&(e.content=void 0),e.content&&(e.headers=e.headers||{},zt(e.content)?e.headers["Content-Type"]="application/octet-stream":e.headers["Content-Type"]="text/plain;charset=UTF-8");try{o=await this._fetchType(e.url,{body:e.content,cache:"no-cache",credentials:!0===e.withCredentials?"include":"same-origin",headers:{"X-Requested-With":"XMLHttpRequest",...e.headers},method:e.method,mode:"cors",redirect:"follow",signal:t.signal})}catch(e){if(n)throw n;throw this._logger.log(Ot.Warning,`Error from HTTP request. ${e}.`),e}finally{r&&clearTimeout(r),e.abortSignal&&(e.abortSignal.onabort=null)}if(!o.ok){const e=await Sn(o,"text");throw new en(e||o.statusText,o.status)}const i=Sn(o,e.responseType),s=await i;return new yn(o.status,o.statusText,s)}getCookieString(e){return""}}function Sn(e,t){let n;switch(t){case"arraybuffer":n=e.arrayBuffer();break;case"text":default:n=e.text();break;case"blob":case"document":case"json":throw new Error(`${t} is not supported.`)}return n}class Cn extends wn{constructor(e){super(),this._logger=e}send(e){return e.abortSignal&&e.abortSignal.aborted?Promise.reject(new nn):e.method?e.url?new Promise(((t,n)=>{const o=new XMLHttpRequest;o.open(e.method,e.url,!0),o.withCredentials=void 0===e.withCredentials||e.withCredentials,o.setRequestHeader("X-Requested-With","XMLHttpRequest"),""===e.content&&(e.content=void 0),e.content&&(zt(e.content)?o.setRequestHeader("Content-Type","application/octet-stream"):o.setRequestHeader("Content-Type","text/plain;charset=UTF-8"));const r=e.headers;r&&Object.keys(r).forEach((e=>{o.setRequestHeader(e,r[e])})),e.responseType&&(o.responseType=e.responseType),e.abortSignal&&(e.abortSignal.onabort=()=>{o.abort(),n(new nn)}),e.timeout&&(o.timeout=e.timeout),o.onload=()=>{e.abortSignal&&(e.abortSignal.onabort=null),o.status>=200&&o.status<300?t(new yn(o.status,o.statusText,o.response||o.responseText)):n(new en(o.response||o.responseText||o.statusText,o.status))},o.onerror=()=>{this._logger.log(Ot.Warning,`Error from HTTP request. ${o.status}: ${o.statusText}.`),n(new en(o.statusText,o.status))},o.ontimeout=()=>{this._logger.log(Ot.Warning,"Timeout from HTTP request."),n(new tn)},o.send(e.content)})):Promise.reject(new Error("No url defined.")):Promise.reject(new Error("No method defined."))}}class En extends wn{constructor(e){if(super(),"undefined"!=typeof fetch)this._httpClient=new _n(e);else{if("undefined"==typeof XMLHttpRequest)throw new Error("No usable HttpClient found.");this._httpClient=new Cn(e)}}send(e){return e.abortSignal&&e.abortSignal.aborted?Promise.reject(new nn):e.method?e.url?this._httpClient.send(e):Promise.reject(new Error("No url defined.")):Promise.reject(new Error("No method defined."))}getCookieString(e){return this._httpClient.getCookieString(e)}}var In,kn;!function(e){e[e.None=0]="None",e[e.WebSockets=1]="WebSockets",e[e.ServerSentEvents=2]="ServerSentEvents",e[e.LongPolling=4]="LongPolling"}(In||(In={})),function(e){e[e.Text=1]="Text",e[e.Binary=2]="Binary"}(kn||(kn={}));class Tn{constructor(){this._isAborted=!1,this.onabort=null}abort(){this._isAborted||(this._isAborted=!0,this.onabort&&this.onabort())}get signal(){return this}get aborted(){return this._isAborted}}class Rn{get pollAborted(){return this._pollAbort.aborted}constructor(e,t,n){this._httpClient=e,this._logger=t,this._pollAbort=new Tn,this._options=n,this._running=!1,this.onreceive=null,this.onclose=null}async connect(e,t){if(Ht.isRequired(e,"url"),Ht.isRequired(t,"transferFormat"),Ht.isIn(t,kn,"transferFormat"),this._url=e,this._logger.log(Ot.Trace,"(LongPolling transport) Connecting."),t===kn.Binary&&"undefined"!=typeof XMLHttpRequest&&"string"!=typeof(new XMLHttpRequest).responseType)throw new Error("Binary protocols over XmlHttpRequest not implementing advanced features are not supported.");const[n,o]=Vt(),r={[n]:o,...this._options.headers},i={abortSignal:this._pollAbort.signal,headers:r,timeout:1e5,withCredentials:this._options.withCredentials};t===kn.Binary&&(i.responseType="arraybuffer");const s=`${e}&_=${Date.now()}`;this._logger.log(Ot.Trace,`(LongPolling transport) polling: ${s}.`);const a=await this._httpClient.get(s,i);200!==a.statusCode?(this._logger.log(Ot.Error,`(LongPolling transport) Unexpected response code: ${a.statusCode}.`),this._closeError=new en(a.statusText||"",a.statusCode),this._running=!1):this._running=!0,this._receiving=this._poll(this._url,i)}async _poll(e,t){try{for(;this._running;)try{const n=`${e}&_=${Date.now()}`;this._logger.log(Ot.Trace,`(LongPolling transport) polling: ${n}.`);const o=await this._httpClient.get(n,t);204===o.statusCode?(this._logger.log(Ot.Information,"(LongPolling transport) Poll terminated by server."),this._running=!1):200!==o.statusCode?(this._logger.log(Ot.Error,`(LongPolling transport) Unexpected response code: ${o.statusCode}.`),this._closeError=new en(o.statusText||"",o.statusCode),this._running=!1):o.content?(this._logger.log(Ot.Trace,`(LongPolling transport) data received. ${jt(o.content,this._options.logMessageContent)}.`),this.onreceive&&this.onreceive(o.content)):this._logger.log(Ot.Trace,"(LongPolling transport) Poll timed out, reissuing.")}catch(e){this._running?e instanceof tn?this._logger.log(Ot.Trace,"(LongPolling transport) Poll timed out, reissuing."):(this._closeError=e,this._running=!1):this._logger.log(Ot.Trace,`(LongPolling transport) Poll errored after shutdown: ${e.message}`)}}finally{this._logger.log(Ot.Trace,"(LongPolling transport) Polling complete."),this.pollAborted||this._raiseOnClose()}}async send(e){return this._running?qt(this._logger,"LongPolling",this._httpClient,this._url,e,this._options):Promise.reject(new Error("Cannot send until the transport is connected"))}async stop(){this._logger.log(Ot.Trace,"(LongPolling transport) Stopping polling."),this._running=!1,this._pollAbort.abort();try{await this._receiving,this._logger.log(Ot.Trace,`(LongPolling transport) sending DELETE request to ${this._url}.`);const e={},[t,n]=Vt();e[t]=n;const o={headers:{...e,...this._options.headers},timeout:this._options.timeout,withCredentials:this._options.withCredentials};let r;try{await this._httpClient.delete(this._url,o)}catch(e){r=e}r?r instanceof en&&(404===r.statusCode?this._logger.log(Ot.Trace,"(LongPolling transport) A 404 response was returned from sending a DELETE request."):this._logger.log(Ot.Trace,`(LongPolling transport) Error sending a DELETE request: ${r}`)):this._logger.log(Ot.Trace,"(LongPolling transport) DELETE request accepted.")}finally{this._logger.log(Ot.Trace,"(LongPolling transport) Stop finished."),this._raiseOnClose()}}_raiseOnClose(){if(this.onclose){let e="(LongPolling transport) Firing onclose event.";this._closeError&&(e+=" Error: "+this._closeError),this._logger.log(Ot.Trace,e),this.onclose(this._closeError)}}}class Dn{constructor(e,t,n,o){this._httpClient=e,this._accessToken=t,this._logger=n,this._options=o,this.onreceive=null,this.onclose=null}async connect(e,t){return Ht.isRequired(e,"url"),Ht.isRequired(t,"transferFormat"),Ht.isIn(t,kn,"transferFormat"),this._logger.log(Ot.Trace,"(SSE transport) Connecting."),this._url=e,this._accessToken&&(e+=(e.indexOf("?")<0?"?":"&")+`access_token=${encodeURIComponent(this._accessToken)}`),new Promise(((n,o)=>{let r,i=!1;if(t===kn.Text){if(Wt.isBrowser||Wt.isWebWorker)r=new this._options.EventSource(e,{withCredentials:this._options.withCredentials});else{const t=this._httpClient.getCookieString(e),n={};n.Cookie=t;const[o,i]=Vt();n[o]=i,r=new this._options.EventSource(e,{withCredentials:this._options.withCredentials,headers:{...n,...this._options.headers}})}try{r.onmessage=e=>{if(this.onreceive)try{this._logger.log(Ot.Trace,`(SSE transport) data received. ${jt(e.data,this._options.logMessageContent)}.`),this.onreceive(e.data)}catch(e){return void this._close(e)}},r.onerror=e=>{i?this._close():o(new Error("EventSource failed to connect. The connection could not be found on the server, either the connection ID is not present on the server, or a proxy is refusing/buffering the connection. If you have multiple servers check that sticky sessions are enabled."))},r.onopen=()=>{this._logger.log(Ot.Information,`SSE connected to ${this._url}`),this._eventSource=r,i=!0,n()}}catch(e){return void o(e)}}else o(new Error("The Server-Sent Events transport only supports the 'Text' transfer format"))}))}async send(e){return this._eventSource?qt(this._logger,"SSE",this._httpClient,this._url,e,this._options):Promise.reject(new Error("Cannot send until the transport is connected"))}stop(){return this._close(),Promise.resolve()}_close(e){this._eventSource&&(this._eventSource.close(),this._eventSource=void 0,this.onclose&&this.onclose(e))}}class An{constructor(e,t,n,o,r,i){this._logger=n,this._accessTokenFactory=t,this._logMessageContent=o,this._webSocketConstructor=r,this._httpClient=e,this.onreceive=null,this.onclose=null,this._headers=i}async connect(e,t){let n;return Ht.isRequired(e,"url"),Ht.isRequired(t,"transferFormat"),Ht.isIn(t,kn,"transferFormat"),this._logger.log(Ot.Trace,"(WebSockets transport) Connecting."),this._accessTokenFactory&&(n=await this._accessTokenFactory()),new Promise(((o,r)=>{let i;e=e.replace(/^http/,"ws");const s=this._httpClient.getCookieString(e);let a=!1;if(Wt.isReactNative){const t={},[o,r]=Vt();t[o]=r,n&&(t[vn.Authorization]=`Bearer ${n}`),s&&(t[vn.Cookie]=s),i=new this._webSocketConstructor(e,void 0,{headers:{...t,...this._headers}})}else n&&(e+=(e.indexOf("?")<0?"?":"&")+`access_token=${encodeURIComponent(n)}`);i||(i=new this._webSocketConstructor(e)),t===kn.Binary&&(i.binaryType="arraybuffer"),i.onopen=t=>{this._logger.log(Ot.Information,`WebSocket connected to ${e}.`),this._webSocket=i,a=!0,o()},i.onerror=e=>{let t=null;t="undefined"!=typeof ErrorEvent&&e instanceof ErrorEvent?e.error:"There was an error with the transport",this._logger.log(Ot.Information,`(WebSockets transport) ${t}.`)},i.onmessage=e=>{if(this._logger.log(Ot.Trace,`(WebSockets transport) data received. ${jt(e.data,this._logMessageContent)}.`),this.onreceive)try{this.onreceive(e.data)}catch(e){return void this._close(e)}},i.onclose=e=>{if(a)this._close(e);else{let t=null;t="undefined"!=typeof ErrorEvent&&e instanceof ErrorEvent?e.error:"WebSocket failed to connect. The connection could not be found on the server, either the endpoint may not be a SignalR endpoint, the connection ID is not present on the server, or there is a proxy blocking WebSockets. If you have multiple servers check that sticky sessions are enabled.",r(new Error(t))}}}))}send(e){return this._webSocket&&this._webSocket.readyState===this._webSocketConstructor.OPEN?(this._logger.log(Ot.Trace,`(WebSockets transport) sending data. ${jt(e,this._logMessageContent)}.`),this._webSocket.send(e),Promise.resolve()):Promise.reject("WebSocket is not in the OPEN state")}stop(){return this._webSocket&&this._close(void 0),Promise.resolve()}_close(e){this._webSocket&&(this._webSocket.onclose=()=>{},this._webSocket.onmessage=()=>{},this._webSocket.onerror=()=>{},this._webSocket.close(),this._webSocket=void 0),this._logger.log(Ot.Trace,"(WebSockets transport) socket closed."),this.onclose&&(!this._isCloseEvent(e)||!1!==e.wasClean&&1e3===e.code?e instanceof Error?this.onclose(e):this.onclose():this.onclose(new Error(`WebSocket closed with status code: ${e.code} (${e.reason||"no reason given"}).`)))}_isCloseEvent(e){return e&&"boolean"==typeof e.wasClean&&"number"==typeof e.code}}class xn{constructor(e,t={}){if(this._stopPromiseResolver=()=>{},this.features={},this._negotiateVersion=1,Ht.isRequired(e,"url"),this._logger=function(e){return void 0===e?new Kt(Ot.Information):null===e?Ft.instance:void 0!==e.log?e:new Kt(e)}(t.logger),this.baseUrl=this._resolveUrl(e),(t=t||{}).logMessageContent=void 0!==t.logMessageContent&&t.logMessageContent,"boolean"!=typeof t.withCredentials&&void 0!==t.withCredentials)throw new Error("withCredentials option was not a 'boolean' or 'undefined' value");t.withCredentials=void 0===t.withCredentials||t.withCredentials,t.timeout=void 0===t.timeout?1e5:t.timeout,"undefined"==typeof WebSocket||t.WebSocket||(t.WebSocket=WebSocket),"undefined"==typeof EventSource||t.EventSource||(t.EventSource=EventSource),this._httpClient=new bn(t.httpClient||new En(this._logger),t.accessTokenFactory),this._connectionState="Disconnected",this._connectionStarted=!1,this._options=t,this.onreceive=null,this.onclose=null}async start(e){if(e=e||kn.Binary,Ht.isIn(e,kn,"transferFormat"),this._logger.log(Ot.Debug,`Starting connection with transfer format '${kn[e]}'.`),"Disconnected"!==this._connectionState)return Promise.reject(new Error("Cannot start an HttpConnection that is not in the 'Disconnected' state."));if(this._connectionState="Connecting",this._startInternalPromise=this._startInternal(e),await this._startInternalPromise,"Disconnecting"===this._connectionState){const e="Failed to start the HttpConnection before stop() was called.";return this._logger.log(Ot.Error,e),await this._stopPromise,Promise.reject(new nn(e))}if("Connected"!==this._connectionState){const e="HttpConnection.startInternal completed gracefully but didn't enter the connection into the connected state!";return this._logger.log(Ot.Error,e),Promise.reject(new nn(e))}this._connectionStarted=!0}send(e){return"Connected"!==this._connectionState?Promise.reject(new Error("Cannot send data if the connection is not in the 'Connected' State.")):(this._sendQueue||(this._sendQueue=new Nn(this.transport)),this._sendQueue.send(e))}async stop(e){return"Disconnected"===this._connectionState?(this._logger.log(Ot.Debug,`Call to HttpConnection.stop(${e}) ignored because the connection is already in the disconnected state.`),Promise.resolve()):"Disconnecting"===this._connectionState?(this._logger.log(Ot.Debug,`Call to HttpConnection.stop(${e}) ignored because the connection is already in the disconnecting state.`),this._stopPromise):(this._connectionState="Disconnecting",this._stopPromise=new Promise((e=>{this._stopPromiseResolver=e})),await this._stopInternal(e),void await this._stopPromise)}async _stopInternal(e){this._stopError=e;try{await this._startInternalPromise}catch(e){}if(this.transport){try{await this.transport.stop()}catch(e){this._logger.log(Ot.Error,`HttpConnection.transport.stop() threw error '${e}'.`),this._stopConnection()}this.transport=void 0}else this._logger.log(Ot.Debug,"HttpConnection.transport is undefined in HttpConnection.stop() because start() failed.")}async _startInternal(e){let t=this.baseUrl;this._accessTokenFactory=this._options.accessTokenFactory,this._httpClient._accessTokenFactory=this._accessTokenFactory;try{if(this._options.skipNegotiation){if(this._options.transport!==In.WebSockets)throw new Error("Negotiation can only be skipped when using the WebSocket transport directly.");this.transport=this._constructTransport(In.WebSockets),await this._startTransport(t,e)}else{let n=null,o=0;do{if(n=await this._getNegotiationResponse(t),"Disconnecting"===this._connectionState||"Disconnected"===this._connectionState)throw new nn("The connection was stopped during negotiation.");if(n.error)throw new Error(n.error);if(n.ProtocolVersion)throw new Error("Detected a connection attempt to an ASP.NET SignalR Server. This client only supports connecting to an ASP.NET Core SignalR Server. See https://aka.ms/signalr-core-differences for details.");if(n.url&&(t=n.url),n.accessToken){const e=n.accessToken;this._accessTokenFactory=()=>e,this._httpClient._accessToken=e,this._httpClient._accessTokenFactory=void 0}o++}while(n.url&&o<100);if(100===o&&n.url)throw new Error("Negotiate redirection limit exceeded.");await this._createTransport(t,this._options.transport,n,e)}this.transport instanceof Rn&&(this.features.inherentKeepAlive=!0),"Connecting"===this._connectionState&&(this._logger.log(Ot.Debug,"The HttpConnection connected successfully."),this._connectionState="Connected")}catch(e){return this._logger.log(Ot.Error,"Failed to start the connection: "+e),this._connectionState="Disconnected",this.transport=void 0,this._stopPromiseResolver(),Promise.reject(e)}}async _getNegotiationResponse(e){const t={},[n,o]=Vt();t[n]=o;const r=this._resolveNegotiateUrl(e);this._logger.log(Ot.Debug,`Sending negotiation request: ${r}.`);try{const e=await this._httpClient.post(r,{content:"",headers:{...t,...this._options.headers},timeout:this._options.timeout,withCredentials:this._options.withCredentials});if(200!==e.statusCode)return Promise.reject(new Error(`Unexpected status code returned from negotiate '${e.statusCode}'`));const n=JSON.parse(e.content);return(!n.negotiateVersion||n.negotiateVersion<1)&&(n.connectionToken=n.connectionId),n.useStatefulReconnect&&!0!==this._options._useStatefulReconnect?Promise.reject(new an("Client didn't negotiate Stateful Reconnect but the server did.")):n}catch(e){let t="Failed to complete negotiation with the server: "+e;return e instanceof en&&404===e.statusCode&&(t+=" Either this is not a SignalR endpoint or there is a proxy blocking the connection."),this._logger.log(Ot.Error,t),Promise.reject(new an(t))}}_createConnectUrl(e,t){return t?e+(-1===e.indexOf("?")?"?":"&")+`id=${t}`:e}async _createTransport(e,t,n,o){let r=this._createConnectUrl(e,n.connectionToken);if(this._isITransport(t))return this._logger.log(Ot.Debug,"Connection was provided an instance of ITransport, using that directly."),this.transport=t,await this._startTransport(r,o),void(this.connectionId=n.connectionId);const i=[],s=n.availableTransports||[];let a=n;for(const n of s){const s=this._resolveTransportOrError(n,t,o,!0===(null==a?void 0:a.useStatefulReconnect));if(s instanceof Error)i.push(`${n.transport} failed:`),i.push(s);else if(this._isITransport(s)){if(this.transport=s,!a){try{a=await this._getNegotiationResponse(e)}catch(e){return Promise.reject(e)}r=this._createConnectUrl(e,a.connectionToken)}try{return await this._startTransport(r,o),void(this.connectionId=a.connectionId)}catch(e){if(this._logger.log(Ot.Error,`Failed to start the transport '${n.transport}': ${e}`),a=void 0,i.push(new sn(`${n.transport} failed: ${e}`,In[n.transport])),"Connecting"!==this._connectionState){const e="Failed to select transport before stop() was called.";return this._logger.log(Ot.Debug,e),Promise.reject(new nn(e))}}}}return i.length>0?Promise.reject(new cn(`Unable to connect to the server with any of the available transports. ${i.join(" ")}`,i)):Promise.reject(new Error("None of the transports supported by the client are supported by the server."))}_constructTransport(e){switch(e){case In.WebSockets:if(!this._options.WebSocket)throw new Error("'WebSocket' is not supported in your environment.");return new An(this._httpClient,this._accessTokenFactory,this._logger,this._options.logMessageContent,this._options.WebSocket,this._options.headers||{});case In.ServerSentEvents:if(!this._options.EventSource)throw new Error("'EventSource' is not supported in your environment.");return new Dn(this._httpClient,this._httpClient._accessToken,this._logger,this._options);case In.LongPolling:return new Rn(this._httpClient,this._logger,this._options);default:throw new Error(`Unknown transport: ${e}.`)}}_startTransport(e,t){return this.transport.onreceive=this.onreceive,this.features.reconnect?this.transport.onclose=async n=>{let o=!1;if(this.features.reconnect){try{this.features.disconnected(),await this.transport.connect(e,t),await this.features.resend()}catch{o=!0}o&&this._stopConnection(n)}else this._stopConnection(n)}:this.transport.onclose=e=>this._stopConnection(e),this.transport.connect(e,t)}_resolveTransportOrError(e,t,n,o){const r=In[e.transport];if(null==r)return this._logger.log(Ot.Debug,`Skipping transport '${e.transport}' because it is not supported by this client.`),new Error(`Skipping transport '${e.transport}' because it is not supported by this client.`);if(!function(e,t){return!e||0!=(t&e)}(t,r))return this._logger.log(Ot.Debug,`Skipping transport '${In[r]}' because it was disabled by the client.`),new rn(`'${In[r]}' is disabled by the client.`,r);if(!(e.transferFormats.map((e=>kn[e])).indexOf(n)>=0))return this._logger.log(Ot.Debug,`Skipping transport '${In[r]}' because it does not support the requested transfer format '${kn[n]}'.`),new Error(`'${In[r]}' does not support ${kn[n]}.`);if(r===In.WebSockets&&!this._options.WebSocket||r===In.ServerSentEvents&&!this._options.EventSource)return this._logger.log(Ot.Debug,`Skipping transport '${In[r]}' because it is not supported in your environment.'`),new on(`'${In[r]}' is not supported in your environment.`,r);this._logger.log(Ot.Debug,`Selecting transport '${In[r]}'.`);try{return this.features.reconnect=r===In.WebSockets?o:void 0,this._constructTransport(r)}catch(e){return e}}_isITransport(e){return e&&"object"==typeof e&&"connect"in e}_stopConnection(e){if(this._logger.log(Ot.Debug,`HttpConnection.stopConnection(${e}) called while in state ${this._connectionState}.`),this.transport=void 0,e=this._stopError||e,this._stopError=void 0,"Disconnected"!==this._connectionState){if("Connecting"===this._connectionState)throw this._logger.log(Ot.Warning,`Call to HttpConnection.stopConnection(${e}) was ignored because the connection is still in the connecting state.`),new Error(`HttpConnection.stopConnection(${e}) was called while the connection is still in the connecting state.`);if("Disconnecting"===this._connectionState&&this._stopPromiseResolver(),e?this._logger.log(Ot.Error,`Connection disconnected with error '${e}'.`):this._logger.log(Ot.Information,"Connection disconnected."),this._sendQueue&&(this._sendQueue.stop().catch((e=>{this._logger.log(Ot.Error,`TransportSendQueue.stop() threw error '${e}'.`)})),this._sendQueue=void 0),this.connectionId=void 0,this._connectionState="Disconnected",this._connectionStarted){this._connectionStarted=!1;try{this.onclose&&this.onclose(e)}catch(t){this._logger.log(Ot.Error,`HttpConnection.onclose(${e}) threw error '${t}'.`)}}}else this._logger.log(Ot.Debug,`Call to HttpConnection.stopConnection(${e}) was ignored because the connection is already in the disconnected state.`)}_resolveUrl(e){if(0===e.lastIndexOf("https://",0)||0===e.lastIndexOf("http://",0))return e;if(!Wt.isBrowser)throw new Error(`Cannot resolve '${e}'.`);const t=window.document.createElement("a");return t.href=e,this._logger.log(Ot.Information,`Normalizing '${e}' to '${t.href}'.`),t.href}_resolveNegotiateUrl(e){const t=new URL(e);t.pathname.endsWith("/")?t.pathname+="negotiate":t.pathname+="/negotiate";const n=new URLSearchParams(t.searchParams);return n.has("negotiateVersion")||n.append("negotiateVersion",this._negotiateVersion.toString()),n.has("useStatefulReconnect")?"true"===n.get("useStatefulReconnect")&&(this._options._useStatefulReconnect=!0):!0===this._options._useStatefulReconnect&&n.append("useStatefulReconnect","true"),t.search=n.toString(),t.toString()}}class Nn{constructor(e){this._transport=e,this._buffer=[],this._executing=!0,this._sendBufferedData=new Pn,this._transportResult=new Pn,this._sendLoopPromise=this._sendLoop()}send(e){return this._bufferData(e),this._transportResult||(this._transportResult=new Pn),this._transportResult.promise}stop(){return this._executing=!1,this._sendBufferedData.resolve(),this._sendLoopPromise}_bufferData(e){if(this._buffer.length&&typeof this._buffer[0]!=typeof e)throw new Error(`Expected data to be of type ${typeof this._buffer} but was of type ${typeof e}`);this._buffer.push(e),this._sendBufferedData.resolve()}async _sendLoop(){for(;;){if(await this._sendBufferedData.promise,!this._executing){this._transportResult&&this._transportResult.reject("Connection stopped.");break}this._sendBufferedData=new Pn;const e=this._transportResult;this._transportResult=void 0;const t="string"==typeof this._buffer[0]?this._buffer.join(""):Nn._concatBuffers(this._buffer);this._buffer.length=0;try{await this._transport.send(t),e.resolve()}catch(t){e.reject(t)}}}static _concatBuffers(e){const t=e.map((e=>e.byteLength)).reduce(((e,t)=>e+t)),n=new Uint8Array(t);let o=0;for(const t of e)n.set(new Uint8Array(t),o),o+=t.byteLength;return n.buffer}}class Pn{constructor(){this.promise=new Promise(((e,t)=>[this._resolver,this._rejecter]=[e,t]))}resolve(){this._resolver()}reject(e){this._rejecter(e)}}class Mn{constructor(){this.name="json",this.version=2,this.transferFormat=kn.Text}parseMessages(e,t){if("string"!=typeof e)throw new Error("Invalid input for JSON hub protocol. Expected a string.");if(!e)return[];null===t&&(t=Ft.instance);const n=Bt.parse(e),o=[];for(const e of n){const n=JSON.parse(e);if("number"!=typeof n.type)throw new Error("Invalid payload.");switch(n.type){case ln.Invocation:this._isInvocationMessage(n);break;case ln.StreamItem:this._isStreamItemMessage(n);break;case ln.Completion:this._isCompletionMessage(n);break;case ln.Ping:case ln.Close:break;case ln.Ack:this._isAckMessage(n);break;case ln.Sequence:this._isSequenceMessage(n);break;default:t.log(Ot.Information,"Unknown message type '"+n.type+"' ignored.");continue}o.push(n)}return o}writeMessage(e){return Bt.write(JSON.stringify(e))}_isInvocationMessage(e){this._assertNotEmptyString(e.target,"Invalid payload for Invocation message."),void 0!==e.invocationId&&this._assertNotEmptyString(e.invocationId,"Invalid payload for Invocation message.")}_isStreamItemMessage(e){if(this._assertNotEmptyString(e.invocationId,"Invalid payload for StreamItem message."),void 0===e.item)throw new Error("Invalid payload for StreamItem message.")}_isCompletionMessage(e){if(e.result&&e.error)throw new Error("Invalid payload for Completion message.");!e.result&&e.error&&this._assertNotEmptyString(e.error,"Invalid payload for Completion message."),this._assertNotEmptyString(e.invocationId,"Invalid payload for Completion message.")}_isAckMessage(e){if("number"!=typeof e.sequenceId)throw new Error("Invalid SequenceId for Ack message.")}_isSequenceMessage(e){if("number"!=typeof e.sequenceId)throw new Error("Invalid SequenceId for Sequence message.")}_assertNotEmptyString(e,t){if("string"!=typeof e||""===e)throw new Error(t)}}const Un={trace:Ot.Trace,debug:Ot.Debug,info:Ot.Information,information:Ot.Information,warn:Ot.Warning,warning:Ot.Warning,error:Ot.Error,critical:Ot.Critical,none:Ot.None};class Ln{configureLogging(e){if(Ht.isRequired(e,"logging"),function(e){return void 0!==e.log}(e))this.logger=e;else if("string"==typeof e){const t=function(e){const t=Un[e.toLowerCase()];if(void 0!==t)return t;throw new Error(`Unknown log level: ${e}`)}(e);this.logger=new Kt(t)}else this.logger=new Kt(e);return this}withUrl(e,t){return Ht.isRequired(e,"url"),Ht.isNotEmpty(e,"url"),this.url=e,this.httpConnectionOptions="object"==typeof t?{...this.httpConnectionOptions,...t}:{...this.httpConnectionOptions,transport:t},this}withHubProtocol(e){return Ht.isRequired(e,"protocol"),this.protocol=e,this}withAutomaticReconnect(e){if(this.reconnectPolicy)throw new Error("A reconnectPolicy has already been set.");return e?Array.isArray(e)?this.reconnectPolicy=new mn(e):this.reconnectPolicy=e:this.reconnectPolicy=new mn,this}withServerTimeout(e){return Ht.isRequired(e,"milliseconds"),this._serverTimeoutInMilliseconds=e,this}withKeepAliveInterval(e){return Ht.isRequired(e,"milliseconds"),this._keepAliveIntervalInMilliseconds=e,this}withStatefulReconnect(e){return void 0===this.httpConnectionOptions&&(this.httpConnectionOptions={}),this.httpConnectionOptions._useStatefulReconnect=!0,this._statefulReconnectBufferSize=null==e?void 0:e.bufferSize,this}build(){const e=this.httpConnectionOptions||{};if(void 0===e.logger&&(e.logger=this.logger),!this.url)throw new Error("The 'HubConnectionBuilder.withUrl' method must be called before building the connection.");const t=new xn(this.url,e);return fn.create(t,this.logger||Ft.instance,this.protocol||new Mn,this.reconnectPolicy,this._serverTimeoutInMilliseconds,this._keepAliveIntervalInMilliseconds,this._statefulReconnectBufferSize)}}var Bn;!function(e){e[e.Default=0]="Default",e[e.Server=1]="Server",e[e.WebAssembly=2]="WebAssembly",e[e.WebView=3]="WebView"}(Bn||(Bn={}));var On,Fn,$n,Hn=4294967295;function Wn(e,t,n){var o=Math.floor(n/4294967296),r=n;e.setUint32(t,o),e.setUint32(t+4,r)}function jn(e,t){return 4294967296*e.getInt32(t)+e.getUint32(t+4)}var zn=("undefined"==typeof process||"never"!==(null===(On=null===process||void 0===process?void 0:process.env)||void 0===On?void 0:On.TEXT_ENCODING))&&"undefined"!=typeof TextEncoder&&"undefined"!=typeof TextDecoder;function qn(e){for(var t=e.length,n=0,o=0;o=55296&&r<=56319&&o65535&&(h-=65536,i.push(h>>>10&1023|55296),h=56320|1023&h),i.push(h)}else i.push(a);i.length>=4096&&(s+=String.fromCharCode.apply(String,i),i.length=0)}return i.length>0&&(s+=String.fromCharCode.apply(String,i)),s}var Gn,Yn=zn?new TextDecoder:null,Qn=zn?"undefined"!=typeof process&&"force"!==(null===($n=null===process||void 0===process?void 0:process.env)||void 0===$n?void 0:$n.TEXT_DECODER)?200:0:Hn,Zn=function(e,t){this.type=e,this.data=t},eo=(Gn=function(e,t){return Gn=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},Gn(e,t)},function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function n(){this.constructor=e}Gn(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}),to=function(e){function t(n){var o=e.call(this,n)||this,r=Object.create(t.prototype);return Object.setPrototypeOf(o,r),Object.defineProperty(o,"name",{configurable:!0,enumerable:!1,value:t.name}),o}return eo(t,e),t}(Error),no={type:-1,encode:function(e){var t,n,o,r;return e instanceof Date?function(e){var t,n=e.sec,o=e.nsec;if(n>=0&&o>=0&&n<=17179869183){if(0===o&&n<=4294967295){var r=new Uint8Array(4);return(t=new DataView(r.buffer)).setUint32(0,n),r}var i=n/4294967296,s=4294967295&n;return r=new Uint8Array(8),(t=new DataView(r.buffer)).setUint32(0,o<<2|3&i),t.setUint32(4,s),r}return r=new Uint8Array(12),(t=new DataView(r.buffer)).setUint32(0,o),Wn(t,4,n),r}((o=1e6*((t=e.getTime())-1e3*(n=Math.floor(t/1e3))),{sec:n+(r=Math.floor(o/1e9)),nsec:o-1e9*r})):null},decode:function(e){var t=function(e){var t=new DataView(e.buffer,e.byteOffset,e.byteLength);switch(e.byteLength){case 4:return{sec:t.getUint32(0),nsec:0};case 8:var n=t.getUint32(0);return{sec:4294967296*(3&n)+t.getUint32(4),nsec:n>>>2};case 12:return{sec:jn(t,4),nsec:t.getUint32(0)};default:throw new to("Unrecognized data size for timestamp (expected 4, 8, or 12): ".concat(e.length))}}(e);return new Date(1e3*t.sec+t.nsec/1e6)}},oo=function(){function e(){this.builtInEncoders=[],this.builtInDecoders=[],this.encoders=[],this.decoders=[],this.register(no)}return e.prototype.register=function(e){var t=e.type,n=e.encode,o=e.decode;if(t>=0)this.encoders[t]=n,this.decoders[t]=o;else{var r=1+t;this.builtInEncoders[r]=n,this.builtInDecoders[r]=o}},e.prototype.tryToEncode=function(e,t){for(var n=0;nthis.maxDepth)throw new Error("Too deep objects in depth ".concat(t));null==e?this.encodeNil():"boolean"==typeof e?this.encodeBoolean(e):"number"==typeof e?this.encodeNumber(e):"string"==typeof e?this.encodeString(e):this.encodeObject(e,t)},e.prototype.ensureBufferSizeToWrite=function(e){var t=this.pos+e;this.view.byteLength=0?e<128?this.writeU8(e):e<256?(this.writeU8(204),this.writeU8(e)):e<65536?(this.writeU8(205),this.writeU16(e)):e<4294967296?(this.writeU8(206),this.writeU32(e)):(this.writeU8(207),this.writeU64(e)):e>=-32?this.writeU8(224|e+32):e>=-128?(this.writeU8(208),this.writeI8(e)):e>=-32768?(this.writeU8(209),this.writeI16(e)):e>=-2147483648?(this.writeU8(210),this.writeI32(e)):(this.writeU8(211),this.writeI64(e)):this.forceFloat32?(this.writeU8(202),this.writeF32(e)):(this.writeU8(203),this.writeF64(e))},e.prototype.writeStringHeader=function(e){if(e<32)this.writeU8(160+e);else if(e<256)this.writeU8(217),this.writeU8(e);else if(e<65536)this.writeU8(218),this.writeU16(e);else{if(!(e<4294967296))throw new Error("Too long string: ".concat(e," bytes in UTF-8"));this.writeU8(219),this.writeU32(e)}},e.prototype.encodeString=function(e){if(e.length>Kn){var t=qn(e);this.ensureBufferSizeToWrite(5+t),this.writeStringHeader(t),Vn(e,this.bytes,this.pos),this.pos+=t}else t=qn(e),this.ensureBufferSizeToWrite(5+t),this.writeStringHeader(t),function(e,t,n){for(var o=e.length,r=n,i=0;i>6&31|192;else{if(s>=55296&&s<=56319&&i>12&15|224,t[r++]=s>>6&63|128):(t[r++]=s>>18&7|240,t[r++]=s>>12&63|128,t[r++]=s>>6&63|128)}t[r++]=63&s|128}else t[r++]=s}}(e,this.bytes,this.pos),this.pos+=t},e.prototype.encodeObject=function(e,t){var n=this.extensionCodec.tryToEncode(e,this.context);if(null!=n)this.encodeExtension(n);else if(Array.isArray(e))this.encodeArray(e,t);else if(ArrayBuffer.isView(e))this.encodeBinary(e);else{if("object"!=typeof e)throw new Error("Unrecognized object: ".concat(Object.prototype.toString.apply(e)));this.encodeMap(e,t)}},e.prototype.encodeBinary=function(e){var t=e.byteLength;if(t<256)this.writeU8(196),this.writeU8(t);else if(t<65536)this.writeU8(197),this.writeU16(t);else{if(!(t<4294967296))throw new Error("Too large binary: ".concat(t));this.writeU8(198),this.writeU32(t)}var n=ro(e);this.writeU8a(n)},e.prototype.encodeArray=function(e,t){var n=e.length;if(n<16)this.writeU8(144+n);else if(n<65536)this.writeU8(220),this.writeU16(n);else{if(!(n<4294967296))throw new Error("Too large array: ".concat(n));this.writeU8(221),this.writeU32(n)}for(var o=0,r=e;o0&&e<=this.maxKeyLength},e.prototype.find=function(e,t,n){e:for(var o=0,r=this.caches[n-1];o=this.maxLengthPerKey?n[Math.random()*n.length|0]=o:n.push(o)},e.prototype.decode=function(e,t,n){var o=this.find(e,t,n);if(null!=o)return this.hit++,o;this.miss++;var r=Xn(e,t,n),i=Uint8Array.prototype.slice.call(e,t,t+n);return this.store(i,r),r},e}(),co=function(e,t){var n,o,r,i,s={label:0,sent:function(){if(1&r[0])throw r[1];return r[1]},trys:[],ops:[]};return i={next:a(0),throw:a(1),return:a(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function a(i){return function(a){return function(i){if(n)throw new TypeError("Generator is already executing.");for(;s;)try{if(n=1,o&&(r=2&i[0]?o.return:i[0]?o.throw||((r=o.return)&&r.call(o),0):o.next)&&!(r=r.call(o,i[1])).done)return r;switch(o=0,r&&(i=[2&i[0],r.value]),i[0]){case 0:case 1:r=i;break;case 4:return s.label++,{value:i[1],done:!1};case 5:s.label++,o=i[1],i=[0];continue;case 7:i=s.ops.pop(),s.trys.pop();continue;default:if(!((r=(r=s.trys).length>0&&r[r.length-1])||6!==i[0]&&2!==i[0])){s=0;continue}if(3===i[0]&&(!r||i[1]>r[0]&&i[1]=e},e.prototype.createExtraByteError=function(e){var t=this.view,n=this.pos;return new RangeError("Extra ".concat(t.byteLength-n," of ").concat(t.byteLength," byte(s) found at buffer[").concat(e,"]"))},e.prototype.decode=function(e){this.reinitializeState(),this.setBuffer(e);var t=this.doDecodeSync();if(this.hasRemaining(1))throw this.createExtraByteError(this.pos);return t},e.prototype.decodeMulti=function(e){return co(this,(function(t){switch(t.label){case 0:this.reinitializeState(),this.setBuffer(e),t.label=1;case 1:return this.hasRemaining(1)?[4,this.doDecodeSync()]:[3,3];case 2:return t.sent(),[3,1];case 3:return[2]}}))},e.prototype.decodeAsync=function(e){var t,n,o,r,i,s,a;return i=this,void 0,a=function(){var i,s,a,c,l,h,d,u;return co(this,(function(p){switch(p.label){case 0:i=!1,p.label=1;case 1:p.trys.push([1,6,7,12]),t=lo(e),p.label=2;case 2:return[4,t.next()];case 3:if((n=p.sent()).done)return[3,5];if(a=n.value,i)throw this.createExtraByteError(this.totalPos);this.appendBuffer(a);try{s=this.doDecodeSync(),i=!0}catch(e){if(!(e instanceof fo))throw e}this.totalPos+=this.pos,p.label=4;case 4:return[3,2];case 5:return[3,12];case 6:return c=p.sent(),o={error:c},[3,12];case 7:return p.trys.push([7,,10,11]),n&&!n.done&&(r=t.return)?[4,r.call(t)]:[3,9];case 8:p.sent(),p.label=9;case 9:return[3,11];case 10:if(o)throw o.error;return[7];case 11:return[7];case 12:if(i){if(this.hasRemaining(1))throw this.createExtraByteError(this.totalPos);return[2,s]}throw h=(l=this).headByte,d=l.pos,u=l.totalPos,new RangeError("Insufficient data in parsing ".concat(so(h)," at ").concat(u," (").concat(d," in the current buffer)"))}}))},new((s=void 0)||(s=Promise))((function(e,t){function n(e){try{r(a.next(e))}catch(e){t(e)}}function o(e){try{r(a.throw(e))}catch(e){t(e)}}function r(t){var r;t.done?e(t.value):(r=t.value,r instanceof s?r:new s((function(e){e(r)}))).then(n,o)}r((a=a.apply(i,[])).next())}))},e.prototype.decodeArrayStream=function(e){return this.decodeMultiAsync(e,!0)},e.prototype.decodeStream=function(e){return this.decodeMultiAsync(e,!1)},e.prototype.decodeMultiAsync=function(e,t){return function(n,o,r){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var i,s=function(){var n,o,r,i,s,a,c,l,h;return co(this,(function(d){switch(d.label){case 0:n=t,o=-1,d.label=1;case 1:d.trys.push([1,13,14,19]),r=lo(e),d.label=2;case 2:return[4,ho(r.next())];case 3:if((i=d.sent()).done)return[3,12];if(s=i.value,t&&0===o)throw this.createExtraByteError(this.totalPos);this.appendBuffer(s),n&&(o=this.readArraySize(),n=!1,this.complete()),d.label=4;case 4:d.trys.push([4,9,,10]),d.label=5;case 5:return[4,ho(this.doDecodeSync())];case 6:return[4,d.sent()];case 7:return d.sent(),0==--o?[3,8]:[3,5];case 8:return[3,10];case 9:if(!((a=d.sent())instanceof fo))throw a;return[3,10];case 10:this.totalPos+=this.pos,d.label=11;case 11:return[3,2];case 12:return[3,19];case 13:return c=d.sent(),l={error:c},[3,19];case 14:return d.trys.push([14,,17,18]),i&&!i.done&&(h=r.return)?[4,ho(h.call(r))]:[3,16];case 15:d.sent(),d.label=16;case 16:return[3,18];case 17:if(l)throw l.error;return[7];case 18:return[7];case 19:return[2]}}))}.apply(n,o||[]),a=[];return i={},c("next"),c("throw"),c("return"),i[Symbol.asyncIterator]=function(){return this},i;function c(e){s[e]&&(i[e]=function(t){return new Promise((function(n,o){a.push([e,t,n,o])>1||l(e,t)}))})}function l(e,t){try{(n=s[e](t)).value instanceof ho?Promise.resolve(n.value.v).then(h,d):u(a[0][2],n)}catch(e){u(a[0][3],e)}var n}function h(e){l("next",e)}function d(e){l("throw",e)}function u(e,t){e(t),a.shift(),a.length&&l(a[0][0],a[0][1])}}(this,arguments)},e.prototype.doDecodeSync=function(){e:for(;;){var e=this.readHeadByte(),t=void 0;if(e>=224)t=e-256;else if(e<192)if(e<128)t=e;else if(e<144){if(0!=(o=e-128)){this.pushMapState(o),this.complete();continue e}t={}}else if(e<160){if(0!=(o=e-144)){this.pushArrayState(o),this.complete();continue e}t=[]}else{var n=e-160;t=this.decodeUtf8String(n,0)}else if(192===e)t=null;else if(194===e)t=!1;else if(195===e)t=!0;else if(202===e)t=this.readF32();else if(203===e)t=this.readF64();else if(204===e)t=this.readU8();else if(205===e)t=this.readU16();else if(206===e)t=this.readU32();else if(207===e)t=this.readU64();else if(208===e)t=this.readI8();else if(209===e)t=this.readI16();else if(210===e)t=this.readI32();else if(211===e)t=this.readI64();else if(217===e)n=this.lookU8(),t=this.decodeUtf8String(n,1);else if(218===e)n=this.lookU16(),t=this.decodeUtf8String(n,2);else if(219===e)n=this.lookU32(),t=this.decodeUtf8String(n,4);else if(220===e){if(0!==(o=this.readU16())){this.pushArrayState(o),this.complete();continue e}t=[]}else if(221===e){if(0!==(o=this.readU32())){this.pushArrayState(o),this.complete();continue e}t=[]}else if(222===e){if(0!==(o=this.readU16())){this.pushMapState(o),this.complete();continue e}t={}}else if(223===e){if(0!==(o=this.readU32())){this.pushMapState(o),this.complete();continue e}t={}}else if(196===e){var o=this.lookU8();t=this.decodeBinary(o,1)}else if(197===e)o=this.lookU16(),t=this.decodeBinary(o,2);else if(198===e)o=this.lookU32(),t=this.decodeBinary(o,4);else if(212===e)t=this.decodeExtension(1,0);else if(213===e)t=this.decodeExtension(2,0);else if(214===e)t=this.decodeExtension(4,0);else if(215===e)t=this.decodeExtension(8,0);else if(216===e)t=this.decodeExtension(16,0);else if(199===e)o=this.lookU8(),t=this.decodeExtension(o,1);else if(200===e)o=this.lookU16(),t=this.decodeExtension(o,2);else{if(201!==e)throw new to("Unrecognized type byte: ".concat(so(e)));o=this.lookU32(),t=this.decodeExtension(o,4)}this.complete();for(var r=this.stack;r.length>0;){var i=r[r.length-1];if(0===i.type){if(i.array[i.position]=t,i.position++,i.position!==i.size)continue e;r.pop(),t=i.array}else{if(1===i.type){if("string"!=(s=typeof t)&&"number"!==s)throw new to("The type of key must be string or number but "+typeof t);if("__proto__"===t)throw new to("The key __proto__ is not allowed");i.key=t,i.type=2;continue e}if(i.map[i.key]=t,i.readCount++,i.readCount!==i.size){i.key=null,i.type=1;continue e}r.pop(),t=i.map}}return t}var s},e.prototype.readHeadByte=function(){return-1===this.headByte&&(this.headByte=this.readU8()),this.headByte},e.prototype.complete=function(){this.headByte=-1},e.prototype.readArraySize=function(){var e=this.readHeadByte();switch(e){case 220:return this.readU16();case 221:return this.readU32();default:if(e<160)return e-144;throw new to("Unrecognized array type byte: ".concat(so(e)))}},e.prototype.pushMapState=function(e){if(e>this.maxMapLength)throw new to("Max length exceeded: map length (".concat(e,") > maxMapLengthLength (").concat(this.maxMapLength,")"));this.stack.push({type:1,size:e,key:null,readCount:0,map:{}})},e.prototype.pushArrayState=function(e){if(e>this.maxArrayLength)throw new to("Max length exceeded: array length (".concat(e,") > maxArrayLength (").concat(this.maxArrayLength,")"));this.stack.push({type:0,size:e,array:new Array(e),position:0})},e.prototype.decodeUtf8String=function(e,t){var n;if(e>this.maxStrLength)throw new to("Max length exceeded: UTF-8 byte length (".concat(e,") > maxStrLength (").concat(this.maxStrLength,")"));if(this.bytes.byteLengthQn?function(e,t,n){var o=e.subarray(t,t+n);return Yn.decode(o)}(this.bytes,r,e):Xn(this.bytes,r,e),this.pos+=t+e,o},e.prototype.stateIsMapKey=function(){return this.stack.length>0&&1===this.stack[this.stack.length-1].type},e.prototype.decodeBinary=function(e,t){if(e>this.maxBinLength)throw new to("Max length exceeded: bin length (".concat(e,") > maxBinLength (").concat(this.maxBinLength,")"));if(!this.hasRemaining(e+t))throw go;var n=this.pos+t,o=this.bytes.subarray(n,n+e);return this.pos+=t+e,o},e.prototype.decodeExtension=function(e,t){if(e>this.maxExtLength)throw new to("Max length exceeded: ext length (".concat(e,") > maxExtLength (").concat(this.maxExtLength,")"));var n=this.view.getInt8(this.pos+t),o=this.decodeBinary(e,t+1);return this.extensionCodec.decode(o,n,this.context)},e.prototype.lookU8=function(){return this.view.getUint8(this.pos)},e.prototype.lookU16=function(){return this.view.getUint16(this.pos)},e.prototype.lookU32=function(){return this.view.getUint32(this.pos)},e.prototype.readU8=function(){var e=this.view.getUint8(this.pos);return this.pos++,e},e.prototype.readI8=function(){var e=this.view.getInt8(this.pos);return this.pos++,e},e.prototype.readU16=function(){var e=this.view.getUint16(this.pos);return this.pos+=2,e},e.prototype.readI16=function(){var e=this.view.getInt16(this.pos);return this.pos+=2,e},e.prototype.readU32=function(){var e=this.view.getUint32(this.pos);return this.pos+=4,e},e.prototype.readI32=function(){var e=this.view.getInt32(this.pos);return this.pos+=4,e},e.prototype.readU64=function(){var e,t,n=(e=this.view,t=this.pos,4294967296*e.getUint32(t)+e.getUint32(t+4));return this.pos+=8,n},e.prototype.readI64=function(){var e=jn(this.view,this.pos);return this.pos+=8,e},e.prototype.readF32=function(){var e=this.view.getFloat32(this.pos);return this.pos+=4,e},e.prototype.readF64=function(){var e=this.view.getFloat64(this.pos);return this.pos+=8,e},e}();class yo{static write(e){let t=e.byteLength||e.length;const n=[];do{let e=127&t;t>>=7,t>0&&(e|=128),n.push(e)}while(t>0);t=e.byteLength||e.length;const o=new Uint8Array(n.length+t);return o.set(n,0),o.set(e,n.length),o.buffer}static parse(e){const t=[],n=new Uint8Array(e),o=[0,7,14,21,28];for(let r=0;r7)throw new Error("Messages bigger than 2GB are not supported.");if(!(n.byteLength>=r+s+a))throw new Error("Incomplete message.");t.push(n.slice?n.slice(r+s,r+s+a):n.subarray(r+s,r+s+a)),r=r+s+a}return t}}const wo=new Uint8Array([145,ln.Ping]);class bo{constructor(e){this.name="messagepack",this.version=2,this.transferFormat=kn.Binary,this._errorResult=1,this._voidResult=2,this._nonVoidResult=3,e=e||{},this._encoder=new io(e.extensionCodec,e.context,e.maxDepth,e.initialBufferSize,e.sortKeys,e.forceFloat32,e.ignoreUndefined,e.forceIntegerToFloat),this._decoder=new vo(e.extensionCodec,e.context,e.maxStrLength,e.maxBinLength,e.maxArrayLength,e.maxMapLength,e.maxExtLength)}parseMessages(e,t){if(!(n=e)||"undefined"==typeof ArrayBuffer||!(n instanceof ArrayBuffer||n.constructor&&"ArrayBuffer"===n.constructor.name))throw new Error("Invalid input for MessagePack hub protocol. Expected an ArrayBuffer.");var n;null===t&&(t=Ft.instance);const o=yo.parse(e),r=[];for(const e of o){const n=this._parseMessage(e,t);n&&r.push(n)}return r}writeMessage(e){switch(e.type){case ln.Invocation:return this._writeInvocation(e);case ln.StreamInvocation:return this._writeStreamInvocation(e);case ln.StreamItem:return this._writeStreamItem(e);case ln.Completion:return this._writeCompletion(e);case ln.Ping:return yo.write(wo);case ln.CancelInvocation:return this._writeCancelInvocation(e);case ln.Close:return this._writeClose();case ln.Ack:return this._writeAck(e);case ln.Sequence:return this._writeSequence(e);default:throw new Error("Invalid message type.")}}_parseMessage(e,t){if(0===e.length)throw new Error("Invalid payload.");const n=this._decoder.decode(e);if(0===n.length||!(n instanceof Array))throw new Error("Invalid payload.");const o=n[0];switch(o){case ln.Invocation:return this._createInvocationMessage(this._readHeaders(n),n);case ln.StreamItem:return this._createStreamItemMessage(this._readHeaders(n),n);case ln.Completion:return this._createCompletionMessage(this._readHeaders(n),n);case ln.Ping:return this._createPingMessage(n);case ln.Close:return this._createCloseMessage(n);case ln.Ack:return this._createAckMessage(n);case ln.Sequence:return this._createSequenceMessage(n);default:return t.log(Ot.Information,"Unknown message type '"+o+"' ignored."),null}}_createCloseMessage(e){if(e.length<2)throw new Error("Invalid payload for Close message.");return{allowReconnect:e.length>=3?e[2]:void 0,error:e[1],type:ln.Close}}_createPingMessage(e){if(e.length<1)throw new Error("Invalid payload for Ping message.");return{type:ln.Ping}}_createInvocationMessage(e,t){if(t.length<5)throw new Error("Invalid payload for Invocation message.");const n=t[2];return n?{arguments:t[4],headers:e,invocationId:n,streamIds:[],target:t[3],type:ln.Invocation}:{arguments:t[4],headers:e,streamIds:[],target:t[3],type:ln.Invocation}}_createStreamItemMessage(e,t){if(t.length<4)throw new Error("Invalid payload for StreamItem message.");return{headers:e,invocationId:t[2],item:t[3],type:ln.StreamItem}}_createCompletionMessage(e,t){if(t.length<4)throw new Error("Invalid payload for Completion message.");const n=t[3];if(n!==this._voidResult&&t.length<5)throw new Error("Invalid payload for Completion message.");let o,r;switch(n){case this._errorResult:o=t[4];break;case this._nonVoidResult:r=t[4]}return{error:o,headers:e,invocationId:t[2],result:r,type:ln.Completion}}_createAckMessage(e){if(e.length<1)throw new Error("Invalid payload for Ack message.");return{sequenceId:e[1],type:ln.Ack}}_createSequenceMessage(e){if(e.length<1)throw new Error("Invalid payload for Sequence message.");return{sequenceId:e[1],type:ln.Sequence}}_writeInvocation(e){let t;return t=e.streamIds?this._encoder.encode([ln.Invocation,e.headers||{},e.invocationId||null,e.target,e.arguments,e.streamIds]):this._encoder.encode([ln.Invocation,e.headers||{},e.invocationId||null,e.target,e.arguments]),yo.write(t.slice())}_writeStreamInvocation(e){let t;return t=e.streamIds?this._encoder.encode([ln.StreamInvocation,e.headers||{},e.invocationId,e.target,e.arguments,e.streamIds]):this._encoder.encode([ln.StreamInvocation,e.headers||{},e.invocationId,e.target,e.arguments]),yo.write(t.slice())}_writeStreamItem(e){const t=this._encoder.encode([ln.StreamItem,e.headers||{},e.invocationId,e.item]);return yo.write(t.slice())}_writeCompletion(e){const t=e.error?this._errorResult:void 0!==e.result?this._nonVoidResult:this._voidResult;let n;switch(t){case this._errorResult:n=this._encoder.encode([ln.Completion,e.headers||{},e.invocationId,t,e.error]);break;case this._voidResult:n=this._encoder.encode([ln.Completion,e.headers||{},e.invocationId,t]);break;case this._nonVoidResult:n=this._encoder.encode([ln.Completion,e.headers||{},e.invocationId,t,e.result])}return yo.write(n.slice())}_writeCancelInvocation(e){const t=this._encoder.encode([ln.CancelInvocation,e.headers||{},e.invocationId]);return yo.write(t.slice())}_writeClose(){const e=this._encoder.encode([ln.Close,null]);return yo.write(e.slice())}_writeAck(e){const t=this._encoder.encode([ln.Ack,e.sequenceId]);return yo.write(t.slice())}_writeSequence(e){const t=this._encoder.encode([ln.Sequence,e.sequenceId]);return yo.write(t.slice())}_readHeaders(e){const t=e[1];if("object"!=typeof t)throw new Error("Invalid headers.");return t}}const _o="function"==typeof TextDecoder?new TextDecoder("utf-8"):null,So=_o?_o.decode.bind(_o):function(e){let t=0;const n=e.length,o=[],r=[];for(;t65535&&(r-=65536,o.push(r>>>10&1023|55296),r=56320|1023&r),o.push(r)}o.length>1024&&(r.push(String.fromCharCode.apply(null,o)),o.length=0)}return r.push(String.fromCharCode.apply(null,o)),r.join("")},Co=Math.pow(2,32),Eo=Math.pow(2,21)-1;function Io(e,t){return e[t]|e[t+1]<<8|e[t+2]<<16|e[t+3]<<24}function ko(e,t){return e[t]+(e[t+1]<<8)+(e[t+2]<<16)+(e[t+3]<<24>>>0)}function To(e,t){const n=ko(e,t+4);if(n>Eo)throw new Error(`Cannot read uint64 with high order part ${n}, because the result would exceed Number.MAX_SAFE_INTEGER.`);return n*Co+ko(e,t)}class Ro{constructor(e){this.batchData=e;const t=new No(e);this.arrayRangeReader=new Po(e),this.arrayBuilderSegmentReader=new Mo(e),this.diffReader=new Do(e),this.editReader=new Ao(e,t),this.frameReader=new xo(e,t)}updatedComponents(){return Io(this.batchData,this.batchData.length-20)}referenceFrames(){return Io(this.batchData,this.batchData.length-16)}disposedComponentIds(){return Io(this.batchData,this.batchData.length-12)}disposedEventHandlerIds(){return Io(this.batchData,this.batchData.length-8)}updatedComponentsEntry(e,t){const n=e+4*t;return Io(this.batchData,n)}referenceFramesEntry(e,t){return e+20*t}disposedComponentIdsEntry(e,t){const n=e+4*t;return Io(this.batchData,n)}disposedEventHandlerIdsEntry(e,t){const n=e+8*t;return To(this.batchData,n)}}class Do{constructor(e){this.batchDataUint8=e}componentId(e){return Io(this.batchDataUint8,e)}edits(e){return e+4}editsEntry(e,t){return e+16*t}}class Ao{constructor(e,t){this.batchDataUint8=e,this.stringReader=t}editType(e){return Io(this.batchDataUint8,e)}siblingIndex(e){return Io(this.batchDataUint8,e+4)}newTreeIndex(e){return Io(this.batchDataUint8,e+8)}moveToSiblingIndex(e){return Io(this.batchDataUint8,e+8)}removedAttributeName(e){const t=Io(this.batchDataUint8,e+12);return this.stringReader.readString(t)}}class xo{constructor(e,t){this.batchDataUint8=e,this.stringReader=t}frameType(e){return Io(this.batchDataUint8,e)}subtreeLength(e){return Io(this.batchDataUint8,e+4)}elementReferenceCaptureId(e){const t=Io(this.batchDataUint8,e+4);return this.stringReader.readString(t)}componentId(e){return Io(this.batchDataUint8,e+8)}elementName(e){const t=Io(this.batchDataUint8,e+8);return this.stringReader.readString(t)}textContent(e){const t=Io(this.batchDataUint8,e+4);return this.stringReader.readString(t)}markupContent(e){const t=Io(this.batchDataUint8,e+4);return this.stringReader.readString(t)}attributeName(e){const t=Io(this.batchDataUint8,e+4);return this.stringReader.readString(t)}attributeValue(e){const t=Io(this.batchDataUint8,e+8);return this.stringReader.readString(t)}attributeEventHandlerId(e){return To(this.batchDataUint8,e+12)}}class No{constructor(e){this.batchDataUint8=e,this.stringTableStartIndex=Io(e,e.length-4)}readString(e){if(-1===e)return null;{const n=Io(this.batchDataUint8,this.stringTableStartIndex+4*e),o=function(e,t){let n=0,o=0;for(let r=0;r<4;r++){const i=e[t+r];if(n|=(127&i)<this.nextBatchId)return this.fatalError?(this.logger.log(yt.Debug,`Received a new batch ${e} but errored out on a previous batch ${this.nextBatchId-1}`),void await n.send("OnRenderCompleted",this.nextBatchId-1,this.fatalError.toString())):void this.logger.log(yt.Debug,`Waiting for batch ${this.nextBatchId}. Batch ${e} not processed.`);try{this.nextBatchId++,this.logger.log(yt.Debug,`Applying batch ${e}.`),xe(Bn.Server,new Ro(t)),await this.completeBatch(n,e)}catch(t){throw this.fatalError=t.toString(),this.logger.log(yt.Error,`There was an error applying batch ${e}.`),n.send("OnRenderCompleted",e,t.toString()),t}}getLastBatchid(){return this.nextBatchId-1}async completeBatch(e,t){try{await e.send("OnRenderCompleted",t,null)}catch{this.logger.log(yt.Warning,`Failed to deliver completion notification for render '${t}'.`)}}}let Lo=!1;function Bo(){const e=document.querySelector("#blazor-error-ui");e&&(e.style.display="block"),Lo||(Lo=!0,document.querySelectorAll("#blazor-error-ui .reload").forEach((e=>{e.onclick=function(e){location.reload(),e.preventDefault()}})),document.querySelectorAll("#blazor-error-ui .dismiss").forEach((e=>{e.onclick=function(e){const t=document.querySelector("#blazor-error-ui");t&&(t.style.display="none"),e.preventDefault()}})))}class Oo{constructor(t,n,o,r){this._firstUpdate=!0,this._renderingFailed=!1,this._disposed=!1,this._circuitId=void 0,this._applicationState=n,this._componentManager=t,this._options=o,this._logger=r,this._renderQueue=new Uo(this._logger),this._dispatcher=e.attachDispatcher(this)}start(){if(this.isDisposedOrDisposing())throw new Error("Cannot start a disposed circuit.");return this._startPromise||(this._startPromise=this.startCore()),this._startPromise}updateRootComponents(e){var t,n;return this._firstUpdate?(this._firstUpdate=!1,null===(t=this._connection)||void 0===t?void 0:t.send("UpdateRootComponents",e,this._applicationState)):null===(n=this._connection)||void 0===n?void 0:n.send("UpdateRootComponents",e,"")}async startCore(){if(this._connection=await this.startConnection(),this._connection.state!==hn.Connected)return!1;const e=JSON.stringify(this._componentManager.initialComponents.map((e=>Ut(e))));if(this._circuitId=await this._connection.invoke("StartCircuit",Je.getBaseURI(),Je.getLocationHref(),e,this._applicationState||""),!this._circuitId)return!1;for(const e of this._options.circuitHandlers)e.onCircuitOpened&&e.onCircuitOpened();return!0}async startConnection(){var e,t;const n=new bo;n.name="blazorpack";const o=(new Ln).withUrl("_blazor").withHubProtocol(n);this._options.configureSignalR(o);const r=o.build();r.on("JS.AttachComponent",((e,t)=>De(Bn.Server,this.resolveElement(t),e,!1))),r.on("JS.BeginInvokeJS",this._dispatcher.beginInvokeJSFromDotNet.bind(this._dispatcher)),r.on("JS.EndInvokeDotNet",this._dispatcher.endInvokeDotNetFromJS.bind(this._dispatcher)),r.on("JS.ReceiveByteArray",this._dispatcher.receiveByteArray.bind(this._dispatcher)),r.on("JS.BeginTransmitStream",(e=>{const t=new ReadableStream({start:t=>{r.stream("SendDotNetStreamToJS",e).subscribe({next:e=>t.enqueue(e),complete:()=>t.close(),error:e=>t.error(e)})}});this._dispatcher.supplyDotNetStream(e,t)})),r.on("JS.RenderBatch",(async(e,t)=>{var n,o;this._logger.log(Ot.Debug,`Received render batch with id ${e} and ${t.byteLength} bytes.`),await this._renderQueue.processBatch(e,t,this._connection),null===(o=(n=this._componentManager).onAfterRenderBatch)||void 0===o||o.call(n,Bn.Server)})),r.on("JS.EndUpdateRootComponents",(e=>{var t,n;null===(n=(t=this._componentManager).onAfterUpdateRootComponents)||void 0===n||n.call(t,e)})),r.on("JS.EndLocationChanging",vt._internal.navigationManager.endLocationChanging),r.onclose((e=>{this._interopMethodsForReconnection=function(e){const t=C.get(e);if(!t)throw new Error(`Interop methods are not registered for renderer ${e}`);return C.delete(e),t}(Bn.Server),this._disposed||this._renderingFailed||this._options.reconnectionHandler.onConnectionDown(this._options.reconnectionOptions,e)})),r.on("JS.Error",(e=>{this._renderingFailed=!0,this.unhandledError(e),Bo()}));try{await r.start()}catch(e){if(this.unhandledError(e),"FailedToNegotiateWithServerError"===e.errorType)throw e;Bo(),e.innerErrors&&(e.innerErrors.some((e=>"UnsupportedTransportError"===e.errorType&&e.transport===In.WebSockets))?this._logger.log(Ot.Error,"Unable to connect, please ensure you are using an updated browser that supports WebSockets."):e.innerErrors.some((e=>"FailedToStartTransportError"===e.errorType&&e.transport===In.WebSockets))?this._logger.log(Ot.Error,"Unable to connect, please ensure WebSockets are available. A VPN or proxy may be blocking the connection."):e.innerErrors.some((e=>"DisabledTransportError"===e.errorType&&e.transport===In.LongPolling))&&this._logger.log(Ot.Error,"Unable to initiate a SignalR connection to the server. This might be because the server is not configured to support WebSockets. For additional details, visit https://aka.ms/blazor-server-websockets-error."))}return(null===(t=null===(e=r.connection)||void 0===e?void 0:e.features)||void 0===t?void 0:t.inherentKeepAlive)&&this._logger.log(Ot.Warning,"Failed to connect via WebSockets, using the Long Polling fallback transport. This may be due to a VPN or proxy blocking the connection. To troubleshoot this, visit https://aka.ms/blazor-server-using-fallback-long-polling."),r}async disconnect(){var e;await(null===(e=this._connection)||void 0===e?void 0:e.stop())}async reconnect(){if(!this._circuitId)throw new Error("Circuit host not initialized.");return this._connection.state===hn.Connected||(this._connection=await this.startConnection(),this._interopMethodsForReconnection&&(k(Bn.Server,this._interopMethodsForReconnection),this._interopMethodsForReconnection=void 0),!!await this._connection.invoke("ConnectCircuit",this._circuitId)&&(this._options.reconnectionHandler.onConnectionUp(),!0))}beginInvokeDotNetFromJS(e,t,n,o,r){this.throwIfDispatchingWhenDisposed(),this._connection.send("BeginInvokeDotNetFromJS",e?e.toString():null,t,n,o||0,r)}endInvokeJSFromDotNet(e,t,n){this.throwIfDispatchingWhenDisposed(),this._connection.send("EndInvokeJSFromDotNet",e,t,n)}sendByteArray(e,t){this.throwIfDispatchingWhenDisposed(),this._connection.send("ReceiveByteArray",e,t)}throwIfDispatchingWhenDisposed(){if(this._disposed)throw new Error("The circuit associated with this dispatcher is no longer available.")}sendLocationChanged(e,t,n){return this._connection.send("OnLocationChanged",e,t,n)}sendLocationChanging(e,t,n,o){return this._connection.send("OnLocationChanging",e,t,n,o)}sendJsDataStream(e,t,n){return function(e,t,n,o){setTimeout((async()=>{let r=5,i=(new Date).valueOf();try{const s=t instanceof Blob?t.size:t.byteLength;let a=0,c=0;for(;a1)await e.send("ReceiveJSDataChunk",n,c,h,null);else{if(!await e.invoke("ReceiveJSDataChunk",n,c,h,null))break;const t=(new Date).valueOf(),o=t-i;i=t,r=Math.max(1,Math.round(500/Math.max(1,o)))}a+=l,c++}}catch(t){await e.send("ReceiveJSDataChunk",n,-1,null,t.toString())}}),0)}(this._connection,e,t,n)}resolveElement(e){const t=w(e);if(t)return W(t,!0);const n=Number.parseInt(e);if(!Number.isNaN(n))return H(this._componentManager.resolveRootComponent(n));throw new Error(`Invalid sequence number or identifier '${e}'.`)}getRootComponentManager(){return this._componentManager}unhandledError(e){this._logger.log(Ot.Error,e),this.disconnect()}getDisconnectFormData(){const e=new FormData,t=this._circuitId;return e.append("circuitId",t),e}didRenderingFail(){return this._renderingFailed}isDisposedOrDisposing(){return void 0!==this._disposePromise}sendDisconnectBeacon(){if(this._disposed)return;const e=this.getDisconnectFormData();this._disposed=navigator.sendBeacon("_blazor/disconnect",e)}dispose(){return this._disposePromise||(this._disposePromise=this.disposeCore()),this._disposePromise}async disposeCore(){var e;if(!this._startPromise)return void(this._disposed=!0);await this._startPromise,this._disposed=!0,null===(e=this._connection)||void 0===e||e.stop();const t=this.getDisconnectFormData();fetch("http://github.com/_blazor/disconnect",{method:"POST",body:t});for(const e of this._options.circuitHandlers)e.onCircuitClosed&&e.onCircuitClosed()}}function Fo(e){const t={...$o,...e};return e&&e.reconnectionOptions&&(t.reconnectionOptions={...$o.reconnectionOptions,...e.reconnectionOptions}),t}const $o={configureSignalR:e=>{},logLevel:yt.Warning,initializers:void 0,circuitHandlers:[],reconnectionOptions:{maxRetries:8,retryIntervalMilliseconds:2e4,dialogId:"components-reconnect-modal"}};class Ho{constructor(e,t,n,o){this.maxRetries=t,this.document=n,this.logger=o,this.modal=this.document.createElement("div"),this.modal.id=e,this.maxRetries=t,this.modal.style.cssText=["position: fixed","top: 0","right: 0","bottom: 0","left: 0","z-index: 1050","display: none","overflow: hidden","background-color: #fff","opacity: 0.8","text-align: center","font-weight: bold","transition: visibility 0s linear 500ms"].join(";"),this.message=this.document.createElement("h5"),this.message.style.cssText="margin-top: 20px",this.button=this.document.createElement("button"),this.button.style.cssText="margin:5px auto 5px",this.button.textContent="Retry";const r=this.document.createElement("a");r.addEventListener("click",(()=>location.reload())),r.textContent="reload",this.reloadParagraph=this.document.createElement("p"),this.reloadParagraph.textContent="Alternatively, ",this.reloadParagraph.appendChild(r),this.modal.appendChild(this.message),this.modal.appendChild(this.button),this.modal.appendChild(this.reloadParagraph),this.loader=this.getLoader(),this.message.after(this.loader),this.button.addEventListener("click",(async()=>{this.show();try{await vt.reconnect()||this.rejected()}catch(e){this.logger.log(yt.Error,e),this.failed()}}))}show(){this.document.contains(this.modal)||this.document.body.appendChild(this.modal),this.modal.style.display="block",this.loader.style.display="inline-block",this.button.style.display="none",this.reloadParagraph.style.display="none",this.message.textContent="Attempting to reconnect to the server...",this.modal.style.visibility="hidden",setTimeout((()=>{this.modal.style.visibility="visible"}),0)}update(e){this.message.textContent=`Attempting to reconnect to the server: ${e} of ${this.maxRetries}`}hide(){this.modal.style.display="none"}failed(){this.button.style.display="block",this.reloadParagraph.style.display="none",this.loader.style.display="none";const e=this.document.createTextNode("Reconnection failed. Try "),t=this.document.createElement("a");t.textContent="reloading",t.setAttribute("href",""),t.addEventListener("click",(()=>location.reload()));const n=this.document.createTextNode(" the page if you're unable to reconnect.");this.message.replaceChildren(e,t,n)}rejected(){this.button.style.display="none",this.reloadParagraph.style.display="none",this.loader.style.display="none";const e=this.document.createTextNode("Could not reconnect to the server. "),t=this.document.createElement("a");t.textContent="Reload",t.setAttribute("href",""),t.addEventListener("click",(()=>location.reload()));const n=this.document.createTextNode(" the page to restore functionality.");this.message.replaceChildren(e,t,n)}getLoader(){const e=this.document.createElement("div");return e.style.cssText=["border: 0.3em solid #f3f3f3","border-top: 0.3em solid #3498db","border-radius: 50%","width: 2em","height: 2em","display: inline-block"].join(";"),e.animate([{transform:"rotate(0deg)"},{transform:"rotate(360deg)"}],{duration:2e3,iterations:1/0}),e}}class Wo{constructor(e,t,n){this.dialog=e,this.maxRetries=t,this.document=n,this.document=n;const o=this.document.getElementById(Wo.MaxRetriesId);o&&(o.innerText=this.maxRetries.toString())}show(){this.removeClasses(),this.dialog.classList.add(Wo.ShowClassName)}update(e){const t=this.document.getElementById(Wo.CurrentAttemptId);t&&(t.innerText=e.toString())}hide(){this.removeClasses(),this.dialog.classList.add(Wo.HideClassName)}failed(){this.removeClasses(),this.dialog.classList.add(Wo.FailedClassName)}rejected(){this.removeClasses(),this.dialog.classList.add(Wo.RejectedClassName)}removeClasses(){this.dialog.classList.remove(Wo.ShowClassName,Wo.HideClassName,Wo.FailedClassName,Wo.RejectedClassName)}}Wo.ShowClassName="components-reconnect-show",Wo.HideClassName="components-reconnect-hide",Wo.FailedClassName="components-reconnect-failed",Wo.RejectedClassName="components-reconnect-rejected",Wo.MaxRetriesId="components-reconnect-max-retries",Wo.CurrentAttemptId="components-reconnect-current-attempt";class jo{constructor(e,t,n){this._currentReconnectionProcess=null,this._logger=e,this._reconnectionDisplay=t,this._reconnectCallback=n||vt.reconnect}onConnectionDown(e,t){if(!this._reconnectionDisplay){const t=document.getElementById(e.dialogId);this._reconnectionDisplay=t?new Wo(t,e.maxRetries,document):new Ho(e.dialogId,e.maxRetries,document,this._logger)}this._currentReconnectionProcess||(this._currentReconnectionProcess=new zo(e,this._logger,this._reconnectCallback,this._reconnectionDisplay))}onConnectionUp(){this._currentReconnectionProcess&&(this._currentReconnectionProcess.dispose(),this._currentReconnectionProcess=null)}}class zo{constructor(e,t,n,o){this.logger=t,this.reconnectCallback=n,this.isDisposed=!1,this.reconnectDisplay=o,this.reconnectDisplay.show(),this.attemptPeriodicReconnection(e)}dispose(){this.isDisposed=!0,this.reconnectDisplay.hide()}async attemptPeriodicReconnection(e){for(let t=0;tzo.MaximumFirstRetryInterval?zo.MaximumFirstRetryInterval:e.retryIntervalMilliseconds;if(await this.delay(n),this.isDisposed)break;try{return await this.reconnectCallback()?void 0:void this.reconnectDisplay.rejected()}catch(e){this.logger.log(yt.Error,e)}}this.reconnectDisplay.failed()}delay(e){return new Promise((t=>setTimeout(t,e)))}}zo.MaximumFirstRetryInterval=3e3;class qo{constructor(e=!0,t,n,o=0){this.singleRuntime=e,this.logger=t,this.webRendererId=o,this.afterStartedCallbacks=[],n&&this.afterStartedCallbacks.push(...n)}async importInitializersAsync(e,t){await Promise.all(e.map((e=>async function(e,n){const o=function(e){const t=document.baseURI;return t.endsWith("/")?`${t}${e}`:`${t}/${e}`}(n),r=await import(o);if(void 0!==r){if(e.singleRuntime){const{beforeStart:n,afterStarted:o,beforeWebAssemblyStart:s,afterWebAssemblyStarted:a,beforeServerStart:c,afterServerStarted:l}=r;let h=n;e.webRendererId===Bn.Server&&c&&(h=c),e.webRendererId===Bn.WebAssembly&&s&&(h=s);let d=o;return e.webRendererId===Bn.Server&&l&&(d=l),e.webRendererId===Bn.WebAssembly&&a&&(d=a),i(e,h,d,t)}return function(e,t,n){var r;const s=n[0],{beforeStart:a,afterStarted:c,beforeWebStart:l,afterWebStarted:h,beforeWebAssemblyStart:d,afterWebAssemblyStarted:u,beforeServerStart:p,afterServerStarted:f}=t,g=!(l||h||d||u||p||f||!a&&!c),m=g&&s.enableClassicInitializers;if(g&&!s.enableClassicInitializers)null===(r=e.logger)||void 0===r||r.log(yt.Warning,`Initializer '${o}' will be ignored because multiple runtimes are available. use 'before(web|webAssembly|server)Start' and 'after(web|webAssembly|server)Started?' instead.)`);else if(m)return i(e,a,c,n);if(function(e){e.webAssembly?e.webAssembly.initializers||(e.webAssembly.initializers={beforeStart:[],afterStarted:[]}):e.webAssembly={initializers:{beforeStart:[],afterStarted:[]}},e.circuit?e.circuit.initializers||(e.circuit.initializers={beforeStart:[],afterStarted:[]}):e.circuit={initializers:{beforeStart:[],afterStarted:[]}}}(s),d&&s.webAssembly.initializers.beforeStart.push(d),u&&s.webAssembly.initializers.afterStarted.push(u),p&&s.circuit.initializers.beforeStart.push(p),f&&s.circuit.initializers.afterStarted.push(f),h&&e.afterStartedCallbacks.push(h),l)return l(s)}(e,r,t)}function i(e,t,n,o){if(n&&e.afterStartedCallbacks.push(n),t)return t(...o)}}(this,e))))}async invokeAfterStartedCallbacks(e){const t=function(e){var t;return null===(t=I.get(e))||void 0===t?void 0:t[1]}(this.webRendererId);t&&await t,await Promise.all(this.afterStartedCallbacks.map((t=>t(e))))}}let Jo,Ko,Vo,Xo,Go,Yo,Qo,Zo;function er(e){if(Xo)throw new Error("Circuit options have already been configured.");if(Xo)throw new Error("WebAssembly options have already been configured.");Jo=async function(e){const t=await e;Xo=Fo(t)}(e)}function tr(e){if(void 0!==Yo)throw new Error("Blazor Server has already started.");return Yo=new Promise(nr.bind(null,e)),Yo}async function nr(e,t,n){await Jo;const o=await async function(e){if(e.initializers)return await Promise.all(e.initializers.beforeStart.map((t=>t(e)))),new qo(!1,void 0,e.initializers.afterStarted,Bn.Server);const t=await fetch("http://github.com/_blazor/initializers",{method:"GET",credentials:"include",cache:"no-cache"}),n=await t.json(),o=new qo(!0,void 0,void 0,Bn.Server);return await o.importInitializersAsync(n,[e]),o}(Xo);if(Ko=It(document)||"",Go=new bt(Xo.logLevel),Vo=new Oo(e,Ko,Xo,Go),Go.log(yt.Information,"Starting up Blazor server-side application."),vt.reconnect=async()=>!(Vo.didRenderingFail()||!await Vo.reconnect()&&(Go.log(yt.Information,"Reconnection attempt to the circuit was rejected by the server. This may indicate that the associated state is no longer available on the server."),1)),vt.defaultReconnectionHandler=new jo(Go),Xo.reconnectionHandler=Xo.reconnectionHandler||vt.defaultReconnectionHandler,vt._internal.navigationManager.listenForNavigationEvents(Bn.Server,((e,t,n)=>Vo.sendLocationChanged(e,t,n)),((e,t,n,o)=>Vo.sendLocationChanging(e,t,n,o))),vt._internal.forceCloseConnection=()=>Vo.disconnect(),vt._internal.sendJSDataStream=(e,t,n)=>Vo.sendJsDataStream(e,t,n),!await Vo.start())return Go.log(yt.Error,"Failed to start the circuit."),void t();const r=()=>{Vo.sendDisconnectBeacon()};vt.disconnect=r,window.addEventListener("unload",r,{capture:!1,once:!0}),Go.log(yt.Information,"Blazor server-side application started."),o.invokeAfterStartedCallbacks(vt),t()}async function or(){if(!Yo)throw new Error("Cannot start the circuit until Blazor Server has started.");return!(!Vo||Vo.isDisposedOrDisposing())||(Qo?await Qo:(await Yo,(!Vo||!Vo.didRenderingFail())&&(Vo&&Vo.isDisposedOrDisposing()&&(Ko=It(document)||"",Vo=new Oo(Vo.getRootComponentManager(),Ko,Xo,Go)),Qo=Vo.start(),async function(e){await e,Qo===e&&(Qo=void 0)}(Qo),Qo)))}function rr(e){if(Vo&&!Vo.isDisposedOrDisposing())return Vo.updateRootComponents(e);!async function(e){await Yo,await or()&&Vo.updateRootComponents(e)}(e)}function ir(e){return Zo=e,Zo}var sr,ar;const cr=navigator,lr=cr.userAgentData&&cr.userAgentData.brands,hr=lr&&lr.length>0?lr.some((e=>"Google Chrome"===e.brand||"Microsoft Edge"===e.brand||"Chromium"===e.brand)):window.chrome,dr=null!==(ar=null===(sr=cr.userAgentData)||void 0===sr?void 0:sr.platform)&&void 0!==ar?ar:navigator.platform;function ur(e){return 0!==e.debugLevel&&(hr||navigator.userAgent.includes("Firefox"))}let pr,fr,gr,mr,vr,yr,wr;const br=Math.pow(2,32),_r=Math.pow(2,21)-1;let Sr=null;function Cr(e){return fr.getI32(e)}const Er={load:function(e,t){return async function(e,t){const{dotnet:n}=await async function(e){if("undefined"==typeof WebAssembly||!WebAssembly.validate)throw new Error("This browser does not support WebAssembly.");let t="_framework/dotnet.js";if(e.loadBootResource){const n="dotnetjs",o=e.loadBootResource(n,"dotnet.js",t,"","js-module-dotnet");if("string"==typeof o)t=o;else if(o)throw new Error(`For a ${n} resource, custom loaders must supply a URI string.`)}const n=new URL(t,document.baseURI).toString();return await import(n)}(e),o=function(e,t){const n={maxParallelDownloads:1e6,enableDownloadRetry:!1,applicationEnvironment:e.environment},o={...window.Module||{},onConfigLoaded:async n=>{n.environmentVariables||(n.environmentVariables={}),"sharded"===n.globalizationMode&&(n.environmentVariables.__BLAZOR_SHARDED_ICU="1"),vt._internal.getApplicationEnvironment=()=>n.applicationEnvironment,null==t||t(n),wr=await async function(e,t){var n,o,r;if(e.initializers)return await Promise.all(e.initializers.beforeStart.map((t=>t(e)))),new qo(!1,void 0,e.initializers.afterStarted,Bn.WebAssembly);{const i=[e,null!==(o=null===(n=t.resources)||void 0===n?void 0:n.extensions)&&void 0!==o?o:{}],s=new qo(!0,void 0,void 0,Bn.WebAssembly),a=Object.keys((null===(r=null==t?void 0:t.resources)||void 0===r?void 0:r.libraryInitializers)||{});return await s.importInitializersAsync(a,i),s}}(e,n)},onDownloadResourceProgress:Ir,config:n,disableDotnet6Compatibility:!1,out:Tr,err:Rr};return o}(e,t);e.applicationCulture&&n.withApplicationCulture(e.applicationCulture),e.environment&&n.withApplicationEnvironment(e.environment),e.loadBootResource&&n.withResourceLoader(e.loadBootResource),n.withModuleConfig(o),e.configureRuntime&&e.configureRuntime(n),yr=await n.create()}(e,t)},start:function(){return async function(){if(!yr)throw new Error("The runtime must be loaded it gets configured.");const{MONO:t,BINDING:n,Module:o,setModuleImports:r,INTERNAL:i,getConfig:s,invokeLibraryInitializers:a}=yr;gr=o,pr=n,fr=t,vr=i,function(e){const t=dr.match(/^Mac/i)?"Cmd":"Alt";ur(e)&&console.info(`Debugging hotkey: Shift+${t}+D (when application has focus)`),document.addEventListener("keydown",(t=>{t.shiftKey&&(t.metaKey||t.altKey)&&"KeyD"===t.code&&(ur(e)?navigator.userAgent.includes("Firefox")?async function(){const e=await fetch(`_framework/debug?url=${encodeURIComponent(location.href)}&isFirefox=true`);200!==e.status&&console.warn(await e.text())}():hr?function(){const e=document.createElement("a");e.href=`_framework/debug?url=${encodeURIComponent(location.href)}`,e.target="_blank",e.rel="noopener noreferrer",e.click()}():console.error("Currently, only Microsoft Edge (80+), Google Chrome, or Chromium, are supported for debugging."):console.error("Cannot start debugging, because the application was not compiled with debugging enabled."))}))}(s()),vt.runtime=yr,vt._internal.dotNetCriticalError=Rr,r("blazor-internal",{Blazor:{_internal:vt._internal}});const c=await yr.getAssemblyExports("Microsoft.AspNetCore.Components.WebAssembly");return Object.assign(vt._internal,{dotNetExports:{...c.Microsoft.AspNetCore.Components.WebAssembly.Services.DefaultWebAssemblyJSRuntime}}),mr=e.attachDispatcher({beginInvokeDotNetFromJS:(e,t,n,o,r)=>{if(Ar(),!o&&!t)throw new Error("Either assemblyName or dotNetObjectId must have a non null value.");const i=o?o.toString():t;vt._internal.dotNetExports.BeginInvokeDotNet(e?e.toString():null,i,n,r)},endInvokeJSFromDotNet:(e,t,n)=>{vt._internal.dotNetExports.EndInvokeJS(n)},sendByteArray:(e,t)=>{vt._internal.dotNetExports.ReceiveByteArrayFromJS(e,t)},invokeDotNetFromJS:(e,t,n,o)=>(Ar(),vt._internal.dotNetExports.InvokeDotNet(e||null,t,null!=n?n:0,o))}),{invokeLibraryInitializers:a}}()},callEntryPoint:async function(){try{await yr.runMain(yr.getConfig().mainAssemblyName,[])}catch(e){console.error(e),Bo()}},toUint8Array:function(e){const t=Dr(e),n=Cr(t),o=new Uint8Array(n);return o.set(gr.HEAPU8.subarray(t+4,t+4+n)),o},getArrayLength:function(e){return Cr(Dr(e))},getArrayEntryPtr:function(e,t,n){return Dr(e)+4+t*n},getObjectFieldsBaseAddress:function(e){return e+8},readInt16Field:function(e,t){return n=e+(t||0),fr.getI16(n);var n},readInt32Field:function(e,t){return Cr(e+(t||0))},readUint64Field:function(e,t){return function(e){const t=e>>2,n=gr.HEAPU32[t+1];if(n>_r)throw new Error(`Cannot read uint64 with high order part ${n}, because the result would exceed Number.MAX_SAFE_INTEGER.`);return n*br+gr.HEAPU32[t]}(e+(t||0))},readFloatField:function(e,t){return n=e+(t||0),fr.getF32(n);var n},readObjectField:function(e,t){return Cr(e+(t||0))},readStringField:function(e,t,n){const o=Cr(e+(t||0));if(0===o)return null;if(n){const e=pr.unbox_mono_obj(o);return"boolean"==typeof e?e?"":null:e}return pr.conv_string(o)},readStructField:function(e,t){return e+(t||0)},beginHeapLock:function(){return Ar(),Sr=xr.create(),Sr},invokeWhenHeapUnlocked:function(e){Sr?Sr.enqueuePostReleaseAction(e):e()}};function Ir(e,t){const n=e/t*100;document.documentElement.style.setProperty("--blazor-load-percentage",`${n}%`),document.documentElement.style.setProperty("--blazor-load-percentage-text",`"${Math.floor(n)}%"`)}const kr=["DEBUGGING ENABLED"],Tr=e=>kr.indexOf(e)<0&&console.log(e),Rr=e=>{console.error(e||"(null)"),Bo()};function Dr(e){return e+12}function Ar(){if(Sr)throw new Error("Assertion failed - heap is currently locked")}class xr{enqueuePostReleaseAction(e){this.postReleaseActions||(this.postReleaseActions=[]),this.postReleaseActions.push(e)}release(){var e;if(Sr!==this)throw new Error("Trying to release a lock which isn't current");for(vr.mono_wasm_gc_unlock(),Sr=null;null===(e=this.postReleaseActions)||void 0===e?void 0:e.length;)this.postReleaseActions.shift()(),Ar()}static create(){return vr.mono_wasm_gc_lock(),new xr}}class Nr{constructor(e){this.batchAddress=e,this.arrayRangeReader=Pr,this.arrayBuilderSegmentReader=Mr,this.diffReader=Ur,this.editReader=Lr,this.frameReader=Br}updatedComponents(){return Zo.readStructField(this.batchAddress,0)}referenceFrames(){return Zo.readStructField(this.batchAddress,Pr.structLength)}disposedComponentIds(){return Zo.readStructField(this.batchAddress,2*Pr.structLength)}disposedEventHandlerIds(){return Zo.readStructField(this.batchAddress,3*Pr.structLength)}updatedComponentsEntry(e,t){return Or(e,t,Ur.structLength)}referenceFramesEntry(e,t){return Or(e,t,Br.structLength)}disposedComponentIdsEntry(e,t){const n=Or(e,t,4);return Zo.readInt32Field(n)}disposedEventHandlerIdsEntry(e,t){const n=Or(e,t,8);return Zo.readUint64Field(n)}}const Pr={structLength:8,values:e=>Zo.readObjectField(e,0),count:e=>Zo.readInt32Field(e,4)},Mr={structLength:12,values:e=>{const t=Zo.readObjectField(e,0),n=Zo.getObjectFieldsBaseAddress(t);return Zo.readObjectField(n,0)},offset:e=>Zo.readInt32Field(e,4),count:e=>Zo.readInt32Field(e,8)},Ur={structLength:4+Mr.structLength,componentId:e=>Zo.readInt32Field(e,0),edits:e=>Zo.readStructField(e,4),editsEntry:(e,t)=>Or(e,t,Lr.structLength)},Lr={structLength:20,editType:e=>Zo.readInt32Field(e,0),siblingIndex:e=>Zo.readInt32Field(e,4),newTreeIndex:e=>Zo.readInt32Field(e,8),moveToSiblingIndex:e=>Zo.readInt32Field(e,8),removedAttributeName:e=>Zo.readStringField(e,16)},Br={structLength:36,frameType:e=>Zo.readInt16Field(e,4),subtreeLength:e=>Zo.readInt32Field(e,8),elementReferenceCaptureId:e=>Zo.readStringField(e,16),componentId:e=>Zo.readInt32Field(e,12),elementName:e=>Zo.readStringField(e,16),textContent:e=>Zo.readStringField(e,16),markupContent:e=>Zo.readStringField(e,16),attributeName:e=>Zo.readStringField(e,16),attributeValue:e=>Zo.readStringField(e,24,!0),attributeEventHandlerId:e=>Zo.readUint64Field(e,8)};function Or(e,t,n){return Zo.getArrayEntryPtr(e,t,n)}class Fr{constructor(e){this.componentManager=e}resolveRegisteredElement(e){const t=Number.parseInt(e);if(!Number.isNaN(t))return H(this.componentManager.resolveRootComponent(t))}getParameterValues(e){return this.componentManager.initialComponents[e].parameterValues}getParameterDefinitions(e){return this.componentManager.initialComponents[e].parameterDefinitions}getTypeName(e){return this.componentManager.initialComponents[e].typeName}getAssembly(e){return this.componentManager.initialComponents[e].assembly}getCount(){return this.componentManager.initialComponents.length}}let $r,Hr,Wr,jr,zr,qr=!1,Jr=!1,Kr=!0,Vr=!1;const Xr=new Promise((e=>{zr=e}));let Gr;const Yr=new Promise((e=>{Gr=e}));let Qr;function Zr(e){if(void 0!==jr)throw new Error("Blazor WebAssembly has already started.");return jr=new Promise(ei.bind(null,e)),jr}async function ei(e,t,n){(function(){if(window.parent!==window&&!window.opener&&window.frameElement){const e=window.sessionStorage&&window.sessionStorage["Microsoft.AspNetCore.Components.WebAssembly.Authentication.CachedAuthSettings"],t=e&&JSON.parse(e);return t&&t.redirect_uri&&location.href.startsWith(t.redirect_uri)}return!1})()&&await new Promise((()=>{}));const o=ti();!function(e){const t=A;A=(e,n,o)=>{((e,t,n)=>{const o=Ae(e);(null==o?void 0:o.eventDelegator.getHandler(t))&&Er.invokeWhenHeapUnlocked(n)})(e,n,(()=>t(e,n,o)))}}(),vt._internal.applyHotReload=(e,t,n,o)=>{mr.invokeDotNetStaticMethod("Microsoft.AspNetCore.Components.WebAssembly","ApplyHotReloadDelta",e,t,n,o)},vt._internal.getApplyUpdateCapabilities=()=>mr.invokeDotNetStaticMethod("Microsoft.AspNetCore.Components.WebAssembly","GetApplyUpdateCapabilities"),vt._internal.invokeJSFromDotNet=oi,vt._internal.invokeJSJson=ri,vt._internal.endInvokeDotNetFromJS=ii,vt._internal.receiveWebAssemblyDotNetDataStream=si,vt._internal.receiveByteArray=ai;const r=ir(Er);vt.platform=r,vt._internal.renderBatch=(e,t)=>{const n=Er.beginHeapLock();try{xe(e,new Nr(t))}finally{n.release()}},vt._internal.navigationManager.listenForNavigationEvents(Bn.WebAssembly,(async(e,t,n)=>{await mr.invokeDotNetStaticMethodAsync("Microsoft.AspNetCore.Components.WebAssembly","NotifyLocationChanged",e,t,n)}),(async(e,t,n,o)=>{const r=await mr.invokeDotNetStaticMethodAsync("Microsoft.AspNetCore.Components.WebAssembly","NotifyLocationChangingAsync",t,n,o);vt._internal.navigationManager.endLocationChanging(e,r)}));const i=new Fr(e);let s;vt._internal.registeredComponents={getRegisteredComponentsCount:()=>i.getCount(),getAssembly:e=>i.getAssembly(e),getTypeName:e=>i.getTypeName(e),getParameterDefinitions:e=>i.getParameterDefinitions(e)||"",getParameterValues:e=>i.getParameterValues(e)||""},vt._internal.getPersistedState=()=>kt(document,Ct)||"",vt._internal.getInitialComponentsUpdate=()=>Yr,vt._internal.updateRootComponents=e=>{var t;return null===(t=vt._internal.dotNetExports)||void 0===t?void 0:t.UpdateRootComponentsCore(e)},vt._internal.endUpdateRootComponents=t=>{var n;return null===(n=e.onAfterUpdateRootComponents)||void 0===n?void 0:n.call(e,t)},vt._internal.attachRootComponentToElement=(e,t,n)=>{const o=i.resolveRegisteredElement(e);o?De(n,o,t,!1):function(e,t,n){const o="::before";let r=!1;if(e.endsWith("::after"))e=e.slice(0,-7),r=!0;else if(e.endsWith(o))throw new Error(`The '${o}' selector is not supported.`);const i=w(e)||document.querySelector(e);if(!i)throw new Error(`Could not find any element matching selector '${e}'.`);De(n,W(i,!0),t,r)}(e,t,n)};try{await o,s=await r.start()}catch(e){throw new Error(`Failed to start platform. Reason: ${e}`)}r.callEntryPoint(),wr.invokeAfterStartedCallbacks(vt),Jr=!0,t()}function ti(){return null!=Wr||(Wr=(async()=>{await Hr;const e=null!=$r?$r:{},t=null==$r?void 0:$r.configureRuntime;e.configureRuntime=e=>{null==t||t(e),Vr&&e.withEnvironmentVariable("__BLAZOR_WEBASSEMBLY_WAIT_FOR_ROOT_COMPONENTS","true")},await Er.load(e,zr),qr=!0})()),Wr}function ni(){return qr}function oi(t,n,o,r){const i=Er.readStringField(t,0),s=Er.readInt32Field(t,4),a=Er.readStringField(t,8),c=Er.readUint64Field(t,20);if(null!==a){const e=Er.readUint64Field(t,12);if(0!==e)return mr.beginInvokeJSFromDotNet(e,i,a,s,c),0;{const e=mr.invokeJSFromDotNet(i,a,s,c);return null===e?0:pr.js_string_to_mono_string(e)}}{const t=e.findJSFunction(i,c).call(null,n,o,r);switch(s){case e.JSCallResultType.Default:return t;case e.JSCallResultType.JSObjectReference:return e.createJSObjectReference(t).__jsObjectId;case e.JSCallResultType.JSStreamReference:{const n=e.createJSStreamReference(t),o=JSON.stringify(n);return pr.js_string_to_mono_string(o)}case e.JSCallResultType.JSVoidResult:return null;default:throw new Error(`Invalid JS call result type '${s}'.`)}}}function ri(e,t,n,o,r){return 0!==r?(mr.beginInvokeJSFromDotNet(r,e,o,n,t),null):mr.invokeJSFromDotNet(e,o,n,t)}function ii(e,t,n){mr.endInvokeDotNetFromJS(e,t,n)}function si(e,t,n,o){!function(e,t,n,o,r){let i=mt.get(t);if(!i){const n=new ReadableStream({start(e){mt.set(t,e),i=e}});e.supplyDotNetStream(t,n)}r?(i.error(r),mt.delete(t)):0===o?(i.close(),mt.delete(t)):i.enqueue(n.length===o?n:n.subarray(0,o))}(mr,e,t,n,o)}function ai(e,t){mr.receiveByteArray(e,t)}function ci(e,t){t.namespaceURI?e.setAttributeNS(t.namespaceURI,t.name,t.value):e.setAttribute(t.name,t.value)}Hr=new Promise((e=>{Qr=e}));const li="data-permanent";var hi,di;!function(e){e[e.None=0]="None",e[e.Some=1]="Some",e[e.Infinite=2]="Infinite"}(hi||(hi={})),function(e){e.Keep="keep",e.Update="update",e.Insert="insert",e.Delete="delete"}(di||(di={}));class ui{static create(e,t,n){return 0===t&&n===e.length?e:new ui(e,t,n)}constructor(e,t,n){this.source=e,this.startIndex=t,this.length=n}item(e){return this.source.item(e+this.startIndex)}forEach(e,t){for(let t=0;t=n&&s>=o&&r(e.item(i),t.item(s))===hi.None;)i--,s--,a++;return a}(e,t,o,o,n),i=function(e){var t;const n=[];let o=e.length-1,r=(null===(t=e[o])||void 0===t?void 0:t.length)-1;for(;o>0||r>0;){const t=0===o?di.Insert:0===r?di.Delete:e[o][r];switch(n.unshift(t),t){case di.Keep:case di.Update:o--,r--;break;case di.Insert:r--;break;case di.Delete:o--}}return n}(function(e,t,n){const o=[],r=[],i=e.length,s=t.length;if(0===i&&0===s)return[];for(let e=0;e<=i;e++)(o[e]=Array(s+1))[0]=e,r[e]=Array(s+1);const a=o[0];for(let e=1;e<=s;e++)a[e]=e;for(let a=1;a<=i;a++)for(let i=1;i<=s;i++){const s=n(e.item(a-1),t.item(i-1)),c=o[a-1][i]+1,l=o[a][i-1]+1;let h;switch(s){case hi.None:h=o[a-1][i-1];break;case hi.Some:h=o[a-1][i-1]+1;break;case hi.Infinite:h=Number.MAX_VALUE}h{history.pushState(null,"",e),Mi(e,!0)}))}function Ni(e){Oe()||Mi(location.href,!1)}function Pi(e){if(Oe()||e.defaultPrevented)return;const t=e.target;if(t instanceof HTMLFormElement){if(!function(e){const t=e.getAttribute("data-enhance");return"string"==typeof t&&""===t||"true"===(null==t?void 0:t.toLowerCase())}(t))return;e.preventDefault();let n=new URL(t.action);const o={method:t.method},r=new FormData(t),i=e.submitter;i&&(i.name&&r.append(i.name,i.value),null!==i.getAttribute("formaction")&&(n=new URL(i.formAction))),"get"===o.method?(n.search=new URLSearchParams(r).toString(),history.pushState(null,"",n.toString())):o.body=r,Mi(n.toString(),!1,o)}}async function Mi(e,t,n){gi=!0,null==pi||pi.abort(),function(e,t){null==ke||ke(e,t)}(e,t),pi=new AbortController;const o=pi.signal,r=fetch(e,Object.assign({signal:o,mode:"no-cors",headers:{accept:"text/html; blazor-enhanced-nav=on"}},n));let i=null;if(await async function(e,t,n,o){let r;try{if(r=await e,!r.body)return void n(r,"");const t=r.headers.get("ssr-framing");if(!t){const e=await r.text();return void n(r,e)}let o=!0;await r.body.pipeThrough(new TextDecoderStream).pipeThrough(function(e){let t="";return new TransformStream({transform(n,o){if(t+=n,t.indexOf(e,t.length-n.length-e.length)>=0){const n=t.split(e);n.slice(0,-1).forEach((e=>o.enqueue(e))),t=n[n.length-1]}},flush(e){e.enqueue(t)}})}(`\x3c!--${t}--\x3e`)).pipeTo(new WritableStream({write(e){o?(o=!1,n(r,e)):(e=>{const t=document.createRange().createContextualFragment(e);for(;t.firstChild;)document.body.appendChild(t.firstChild)})(e)}}))}catch(e){if("AbortError"===e.name&&t.aborted)return;throw e}}(r,o,((t,o)=>{const r=!(null==n?void 0:n.method)||"get"===n.method,s=t.status>=200&&t.status<300;if("opaque"===t.type){if(r)return void Li(e);throw new Error("Enhanced navigation does not support making a non-GET request to an endpoint that redirects to an external origin. Avoid enabling enhanced navigation for form posts that may perform external redirections.")}if(s&&"allow"!==t.headers.get("blazor-enhanced-nav")){if(r)return void Li(e);throw new Error("Enhanced navigation does not support making a non-GET request to a non-Blazor endpoint. Avoid enabling enhanced navigation for forms that post to a non-Blazor endpoint.")}t.redirected&&(r?history.replaceState(null,"",t.url):history.pushState(null,"",t.url),e=t.url);const a=t.headers.get("blazor-enhanced-nav-redirect-location");if(a)return void location.replace(a);t.redirected||r||!s||(function(e){const t=new URL(e.url),n=new URL(Ri);return t.protocol===n.protocol&&t.host===n.host&&t.port===n.port&&t.pathname===n.pathname}(t)?location.href!==Ri&&history.pushState(null,"",Ri):i=`Cannot perform enhanced form submission that changes the URL (except via a redirection), because then back/forward would not work. Either remove this form's 'action' attribute, or change its method to 'get', or do not mark it as enhanced.\nOld URL: ${location.href}\nNew URL: ${t.url}`),Ri=t.url;const c=t.headers.get("content-type");if((null==c?void 0:c.startsWith("text/html"))&&o){const e=(new DOMParser).parseFromString(o,"text/html");vi(document,e),fi.documentUpdated()}else(null==c?void 0:c.startsWith("text/"))&&o?Ui(o):s||o?r?Li(e):Ui(`Error: ${n.method} request to ${e} returned non-HTML content of type ${c||"unspecified"}.`):Ui(`Error: ${t.status} ${t.statusText}`)})),!o.aborted){const t=e.indexOf("#");if(t>=0){const n=e.substring(t+1),o=document.getElementById(n);null==o||o.scrollIntoView()}if(gi=!1,fi.enhancedNavigationCompleted(),i)throw new Error(i)}}function Ui(e){document.documentElement.textContent=e;const t=document.documentElement.style;t.fontFamily="consolas, monospace",t.whiteSpace="pre-wrap",t.padding="1rem"}function Li(e){history.replaceState(null,"",e+"?"),location.replace(e)}let Bi,Oi=!0;class Fi extends HTMLElement{connectedCallback(){var e;const t=this.parentNode;null===(e=t.parentNode)||void 0===e||e.removeChild(t),t.childNodes.forEach((e=>{if(e instanceof HTMLTemplateElement){const t=e.getAttribute("blazor-component-id");if(t)"true"!==e.getAttribute("enhanced-nav")&&pi||function(e,t){const n=function(e){const t=`bl:${e}`,n=document.createNodeIterator(document,NodeFilter.SHOW_COMMENT);let o=null;for(;(o=n.nextNode())&&o.textContent!==t;);if(!o)return null;const r=`/bl:${e}`;let i=null;for(;(i=n.nextNode())&&i.textContent!==r;);return i?{startMarker:o,endMarker:i}:null}(e);if(n){const{startMarker:e,endMarker:o}=n;if(Oi)vi({startExclusive:e,endExclusive:o},t);else{const n=o.parentNode,r=new Range;for(r.setStart(e,e.textContent.length),r.setEnd(o,0),r.deleteContents();t.childNodes[0];)n.insertBefore(t.childNodes[0],o)}Bi.documentUpdated()}}(t,e.content);else switch(e.getAttribute("type")){case"redirection":const t=Le(e.content.textContent),n="form-post"===e.getAttribute("from");"true"===e.getAttribute("enhanced")&&Pe(t)?(n?history.pushState(null,"",t):history.replaceState(null,"",t),Mi(t,!1)):n?location.assign(t):location.replace(t);break;case"error":Ui(e.content.textContent||"Error")}}}))}}class $i{constructor(e){var t;this._circuitInactivityTimeoutMs=e,this._rootComponentsBySsrComponentId=new Map,this._seenDescriptors=new Set,this._pendingOperationBatches={},this._nextOperationBatchId=1,this._nextSsrComponentId=1,this._didWebAssemblyFailToLoadQuickly=!1,this._isComponentRefreshPending=!1,this.initialComponents=[],t=()=>{this.rootComponentsMayRequireRefresh()},E.push(t)}onAfterRenderBatch(e){e===Bn.Server&&this.circuitMayHaveNoRootComponents()}onDocumentUpdated(){this.rootComponentsMayRequireRefresh()}onEnhancedNavigationCompleted(){this.rootComponentsMayRequireRefresh()}registerComponent(e){if(this._seenDescriptors.has(e))return;"auto"!==e.type&&"webassembly"!==e.type||this.startLoadingWebAssemblyIfNotStarted();const t=this._nextSsrComponentId++;this._seenDescriptors.add(e),this._rootComponentsBySsrComponentId.set(t,{descriptor:e,ssrComponentId:t})}unregisterComponent(e){this._seenDescriptors.delete(e.descriptor),this._rootComponentsBySsrComponentId.delete(e.ssrComponentId),this.circuitMayHaveNoRootComponents()}async startLoadingWebAssemblyIfNotStarted(){if(void 0!==Wr)return;Vr=!0;const e=ti();setTimeout((()=>{ni()||this.onWebAssemblyFailedToLoadQuickly()}),vt._internal.loadWebAssemblyQuicklyTimeout);const t=await Xr;(function(e){if(!e.cacheBootResources)return!1;const t=Hi(e);if(!t)return!1;const n=window.localStorage.getItem(t.key);return t.value===n})(t)||this.onWebAssemblyFailedToLoadQuickly(),await e,function(e){const t=Hi(e);t&&window.localStorage.setItem(t.key,t.value)}(t),this.rootComponentsMayRequireRefresh()}onWebAssemblyFailedToLoadQuickly(){this._didWebAssemblyFailToLoadQuickly||(this._didWebAssemblyFailToLoadQuickly=!0,this.rootComponentsMayRequireRefresh())}startCircutIfNotStarted(){return void 0===Yo?tr(this):!Vo||Vo.isDisposedOrDisposing()?or():void 0}async startWebAssemblyIfNotStarted(){this.startLoadingWebAssemblyIfNotStarted(),void 0===jr&&await Zr(this)}rootComponentsMayRequireRefresh(){this._isComponentRefreshPending||(this._isComponentRefreshPending=!0,setTimeout((()=>{this._isComponentRefreshPending=!1,this.refreshRootComponents(this._rootComponentsBySsrComponentId.values())}),0))}circuitMayHaveNoRootComponents(){if(this.rendererHasExistingOrPendingComponents(Bn.Server,"server","auto"))return clearTimeout(this._circuitInactivityTimeoutId),void(this._circuitInactivityTimeoutId=void 0);void 0===this._circuitInactivityTimeoutId&&(this._circuitInactivityTimeoutId=setTimeout((()=>{this.rendererHasExistingOrPendingComponents(Bn.Server,"server","auto")||(async function(){await(null==Vo?void 0:Vo.dispose())}(),this._circuitInactivityTimeoutId=void 0)}),this._circuitInactivityTimeoutMs))}rendererHasComponents(e){const t=Ae(e);return void 0!==t&&t.getRootComponentCount()>0}rendererHasExistingOrPendingComponents(e,...t){if(this.rendererHasComponents(e))return!0;for(const{descriptor:{type:n},assignedRendererId:o}of this._rootComponentsBySsrComponentId.values()){if(o===e)return!0;if(void 0===o&&-1!==t.indexOf(n))return!0}return!1}refreshRootComponents(e){const t=new Map;for(const n of e){const e=this.determinePendingOperation(n);if(!e)continue;const o=n.assignedRendererId;if(!o)throw new Error("Descriptors must be assigned a renderer ID before getting used as root components");let r=t.get(o);r||(r=[],t.set(o,r)),r.push(e)}for(const[e,n]of t){const t={batchId:this._nextOperationBatchId++,operations:n};this._pendingOperationBatches[t.batchId]=t;const o=JSON.stringify(t);e===Bn.Server?rr(o):this.updateWebAssemblyRootComponents(o)}}updateWebAssemblyRootComponents(e){Kr?(Gr(e),Kr=!1):function(e){if(!jr)throw new Error("Blazor WebAssembly has not started.");if(!vt._internal.updateRootComponents)throw new Error("Blazor WebAssembly has not initialized.");Jr?vt._internal.updateRootComponents(e):async function(e){if(await jr,!vt._internal.updateRootComponents)throw new Error("Blazor WebAssembly has not initialized.");vt._internal.updateRootComponents(e)}(e)}(e)}resolveRendererIdForDescriptor(e){switch("auto"===e.type?this.getAutoRenderMode():e.type){case"server":return this.startCircutIfNotStarted(),Bn.Server;case"webassembly":return this.startWebAssemblyIfNotStarted(),Bn.WebAssembly;case null:return null}}getAutoRenderMode(){return this.rendererHasExistingOrPendingComponents(Bn.WebAssembly,"webassembly")?"webassembly":this.rendererHasExistingOrPendingComponents(Bn.Server,"server")?"server":ni()?"webassembly":this._didWebAssemblyFailToLoadQuickly?"server":null}determinePendingOperation(e){if(t=e.descriptor,document.contains(t.start)){if(void 0===e.assignedRendererId){if(gi||"loading"===document.readyState)return null;const t=this.resolveRendererIdForDescriptor(e.descriptor);return null===t?null:T(t)?(be(e.descriptor.start,!0),e.assignedRendererId=t,e.uniqueIdAtLastUpdate=e.descriptor.uniqueId,{type:"add",ssrComponentId:e.ssrComponentId,marker:Ut(e.descriptor)}):null}return T(e.assignedRendererId)?e.uniqueIdAtLastUpdate===e.descriptor.uniqueId?null:(e.uniqueIdAtLastUpdate=e.descriptor.uniqueId,{type:"update",ssrComponentId:e.ssrComponentId,marker:Ut(e.descriptor)}):null}return e.hasPendingRemoveOperation?null:void 0===e.assignedRendererId?(this.unregisterComponent(e),null):T(e.assignedRendererId)?(be(e.descriptor.start,!1),e.hasPendingRemoveOperation=!0,{type:"remove",ssrComponentId:e.ssrComponentId}):null;var t}resolveRootComponent(e){const t=this._rootComponentsBySsrComponentId.get(e);if(!t)throw new Error(`Could not resolve a root component with SSR component ID '${e}'.`);return t.descriptor}onAfterUpdateRootComponents(e){const t=this._pendingOperationBatches[e];delete this._pendingOperationBatches[e];for(const e of t.operations)switch(e.type){case"remove":{const t=this._rootComponentsBySsrComponentId.get(e.ssrComponentId);t&&this.unregisterComponent(t);break}}}}function Hi(e){var t;const n=null===(t=e.resources)||void 0===t?void 0:t.hash,o=e.mainAssemblyName;return n&&o?{key:`blazor-resource-hash:${o}`,value:n}:null}class Wi{constructor(){this._eventListeners=new Map}static create(e){const t=new Wi;return e.addEventListener=t.addEventListener.bind(t),e.removeEventListener=t.removeEventListener.bind(t),t}addEventListener(e,t){let n=this._eventListeners.get(e);n||(n=new Set,this._eventListeners.set(e,n)),n.add(t)}removeEventListener(e,t){var n;null===(n=this._eventListeners.get(e))||void 0===n||n.delete(t)}dispatchEvent(e,t){const n=this._eventListeners.get(e);if(!n)return;const o={...t,type:e};for(const e of n)e(o)}}let ji,zi=!1;function qi(e){var t,n,o,r;if(zi)throw new Error("Blazor has already started.");zi=!0,null!==(t=(e=e||{}).logLevel)&&void 0!==t||(e.logLevel=yt.Error),vt._internal.loadWebAssemblyQuicklyTimeout=3e3,vt._internal.isBlazorWeb=!0,vt._internal.hotReloadApplied=()=>{Me()&&Ue(location.href,!0)},ji=new $i(null!==(o=null===(n=null==e?void 0:e.ssr)||void 0===n?void 0:n.circuitInactivityTimeoutMs)&&void 0!==o?o:2e3);const i=Wi.create(vt),s={documentUpdated:()=>{ji.onDocumentUpdated(),i.dispatchEvent("enhancedload",{})},enhancedNavigationCompleted(){ji.onEnhancedNavigationCompleted()}};return mi=ji,function(e,t){Bi=t,(null==e?void 0:e.disableDomPreservation)&&(Oi=!1),customElements.define("blazor-ssr-end",Fi)}(null==e?void 0:e.ssr,s),(null===(r=null==e?void 0:e.ssr)||void 0===r?void 0:r.disableDomPreservation)||Di(s),"loading"===document.readyState?document.addEventListener("DOMContentLoaded",Ji.bind(null,e)):Ji(e),Promise.resolve()}function Ji(e){const t=Fo((null==e?void 0:e.circuit)||{});e.circuit=t;const n=async function(e,t){var n;const o=kt(document,Et,"initializers");if(!o)return new qo(!1,t);const r=null!==(n=JSON.parse(atob(o)))&&void 0!==n?n:[],i=new qo(!1,t);return await i.importInitializersAsync(r,[e]),i}(e,new bt(t.logLevel));er(Ki(n,t)),function(e){if($r)throw new Error("WebAssembly options have already been configured.");!async function(e){const t=await e;$r=t,Qr()}(e)}(Ki(n,(null==e?void 0:e.webAssembly)||{})),function(e){const t=Ci(document);for(const e of t)null==mi||mi.registerComponent(e)}(),ji.onDocumentUpdated(),async function(e){const t=await e;await t.invokeAfterStartedCallbacks(vt)}(n)}async function Ki(e,t){return await e,t}vt.start=qi,window.DotNet=e,document&&document.currentScript&&"false"!==document.currentScript.getAttribute("autostart")&&qi()})()})(); \ No newline at end of file +(()=>{var e={778:()=>{},77:()=>{},203:()=>{},200:()=>{},628:()=>{},321:()=>{}},t={};function n(o){var r=t[o];if(void 0!==r)return r.exports;var i=t[o]={exports:{}};return e[o](i,i.exports,n),i.exports}n.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),(()=>{"use strict";var e,t,o;!function(e){const t=[],n="__jsObjectId",o="__dotNetObject",r="__byte[]",i="__dotNetStream",s="__jsStreamReferenceLength";let a,c;class l{constructor(e){this._jsObject=e,this._cachedFunctions=new Map}findFunction(e){const t=this._cachedFunctions.get(e);if(t)return t;let n,o=this._jsObject;if(e.split(".").forEach((t=>{if(!(t in o))throw new Error(`Could not find '${e}' ('${t}' was undefined).`);n=o,o=o[t]})),o instanceof Function)return o=o.bind(n),this._cachedFunctions.set(e,o),o;throw new Error(`The value '${e}' is not a function.`)}getWrappedObject(){return this._jsObject}}const h={0:new l(window)};h[0]._cachedFunctions.set("import",(e=>("string"==typeof e&&e.startsWith("./")&&(e=new URL(e.substr(2),document.baseURI).toString()),import(e))));let d,u=1;function p(e){t.push(e)}function f(e){if(e&&"object"==typeof e){h[u]=new l(e);const t={[n]:u};return u++,t}throw new Error(`Cannot create a JSObjectReference from the value '${e}'.`)}function g(e){let t=-1;if(e instanceof ArrayBuffer&&(e=new Uint8Array(e)),e instanceof Blob)t=e.size;else{if(!(e.buffer instanceof ArrayBuffer))throw new Error("Supplied value is not a typed array or blob.");if(void 0===e.byteLength)throw new Error(`Cannot create a JSStreamReference from the value '${e}' as it doesn't have a byteLength.`);t=e.byteLength}const o={[s]:t};try{const t=f(e);o[n]=t[n]}catch(t){throw new Error(`Cannot create a JSStreamReference from the value '${e}'.`)}return o}function m(e,n){c=e;const o=n?JSON.parse(n,((e,n)=>t.reduce(((t,n)=>n(e,t)),n))):null;return c=void 0,o}function v(){if(void 0===a)throw new Error("No call dispatcher has been set.");if(null===a)throw new Error("There are multiple .NET runtimes present, so a default dispatcher could not be resolved. Use DotNetObject to invoke .NET instance methods.");return a}e.attachDispatcher=function(e){const t=new y(e);return void 0===a?a=t:a&&(a=null),t},e.attachReviver=p,e.invokeMethod=function(e,t,...n){return v().invokeDotNetStaticMethod(e,t,...n)},e.invokeMethodAsync=function(e,t,...n){return v().invokeDotNetStaticMethodAsync(e,t,...n)},e.createJSObjectReference=f,e.createJSStreamReference=g,e.disposeJSObjectReference=function(e){const t=e&&e[n];"number"==typeof t&&_(t)},function(e){e[e.Default=0]="Default",e[e.JSObjectReference=1]="JSObjectReference",e[e.JSStreamReference=2]="JSStreamReference",e[e.JSVoidResult=3]="JSVoidResult"}(d=e.JSCallResultType||(e.JSCallResultType={}));class y{constructor(e){this._dotNetCallDispatcher=e,this._byteArraysToBeRevived=new Map,this._pendingDotNetToJSStreams=new Map,this._pendingAsyncCalls={},this._nextAsyncCallId=1}getDotNetCallDispatcher(){return this._dotNetCallDispatcher}invokeJSFromDotNet(e,t,n,o){const r=m(this,t),i=I(b(e,o)(...r||[]),n);return null==i?null:T(this,i)}beginInvokeJSFromDotNet(e,t,n,o,r){const i=new Promise((e=>{const o=m(this,n);e(b(t,r)(...o||[]))}));e&&i.then((t=>T(this,[e,!0,I(t,o)]))).then((t=>this._dotNetCallDispatcher.endInvokeJSFromDotNet(e,!0,t)),(t=>this._dotNetCallDispatcher.endInvokeJSFromDotNet(e,!1,JSON.stringify([e,!1,w(t)]))))}endInvokeDotNetFromJS(e,t,n){const o=t?m(this,n):new Error(n);this.completePendingCall(parseInt(e,10),t,o)}invokeDotNetStaticMethod(e,t,...n){return this.invokeDotNetMethod(e,t,null,n)}invokeDotNetStaticMethodAsync(e,t,...n){return this.invokeDotNetMethodAsync(e,t,null,n)}invokeDotNetMethod(e,t,n,o){if(this._dotNetCallDispatcher.invokeDotNetFromJS){const r=T(this,o),i=this._dotNetCallDispatcher.invokeDotNetFromJS(e,t,n,r);return i?m(this,i):null}throw new Error("The current dispatcher does not support synchronous calls from JS to .NET. Use invokeDotNetMethodAsync instead.")}invokeDotNetMethodAsync(e,t,n,o){if(e&&n)throw new Error(`For instance method calls, assemblyName should be null. Received '${e}'.`);const r=this._nextAsyncCallId++,i=new Promise(((e,t)=>{this._pendingAsyncCalls[r]={resolve:e,reject:t}}));try{const i=T(this,o);this._dotNetCallDispatcher.beginInvokeDotNetFromJS(r,e,t,n,i)}catch(e){this.completePendingCall(r,!1,e)}return i}receiveByteArray(e,t){this._byteArraysToBeRevived.set(e,t)}processByteArray(e){const t=this._byteArraysToBeRevived.get(e);return t?(this._byteArraysToBeRevived.delete(e),t):null}supplyDotNetStream(e,t){if(this._pendingDotNetToJSStreams.has(e)){const n=this._pendingDotNetToJSStreams.get(e);this._pendingDotNetToJSStreams.delete(e),n.resolve(t)}else{const n=new E;n.resolve(t),this._pendingDotNetToJSStreams.set(e,n)}}getDotNetStreamPromise(e){let t;if(this._pendingDotNetToJSStreams.has(e))t=this._pendingDotNetToJSStreams.get(e).streamPromise,this._pendingDotNetToJSStreams.delete(e);else{const n=new E;this._pendingDotNetToJSStreams.set(e,n),t=n.streamPromise}return t}completePendingCall(e,t,n){if(!this._pendingAsyncCalls.hasOwnProperty(e))throw new Error(`There is no pending async call with ID ${e}.`);const o=this._pendingAsyncCalls[e];delete this._pendingAsyncCalls[e],t?o.resolve(n):o.reject(n)}}function w(e){return e instanceof Error?`${e.message}\n${e.stack}`:e?e.toString():"null"}function b(e,t){const n=h[t];if(n)return n.findFunction(e);throw new Error(`JS object instance with ID ${t} does not exist (has it been disposed?).`)}function _(e){delete h[e]}e.findJSFunction=b,e.disposeJSObjectReferenceById=_;class S{constructor(e,t){this._id=e,this._callDispatcher=t}invokeMethod(e,...t){return this._callDispatcher.invokeDotNetMethod(null,e,this._id,t)}invokeMethodAsync(e,...t){return this._callDispatcher.invokeDotNetMethodAsync(null,e,this._id,t)}dispose(){this._callDispatcher.invokeDotNetMethodAsync(null,"__Dispose",this._id,null).catch((e=>console.error(e)))}serializeAsArg(){return{[o]:this._id}}}e.DotNetObject=S,p((function(e,t){if(t&&"object"==typeof t){if(t.hasOwnProperty(o))return new S(t[o],c);if(t.hasOwnProperty(n)){const e=t[n],o=h[e];if(o)return o.getWrappedObject();throw new Error(`JS object instance with Id '${e}' does not exist. It may have been disposed.`)}if(t.hasOwnProperty(r)){const e=t[r],n=c.processByteArray(e);if(void 0===n)throw new Error(`Byte array index '${e}' does not exist.`);return n}if(t.hasOwnProperty(i)){const e=t[i],n=c.getDotNetStreamPromise(e);return new C(n)}}return t}));class C{constructor(e){this._streamPromise=e}stream(){return this._streamPromise}async arrayBuffer(){return new Response(await this.stream()).arrayBuffer()}}class E{constructor(){this.streamPromise=new Promise(((e,t)=>{this.resolve=e,this.reject=t}))}}function I(e,t){switch(t){case d.Default:return e;case d.JSObjectReference:return f(e);case d.JSStreamReference:return g(e);case d.JSVoidResult:return null;default:throw new Error(`Invalid JS call result type '${t}'.`)}}let k=0;function T(e,t){k=0,c=e;const n=JSON.stringify(t,R);return c=void 0,n}function R(e,t){if(t instanceof S)return t.serializeAsArg();if(t instanceof Uint8Array){c.getDotNetCallDispatcher().sendByteArray(k,t);const e={[r]:k};return k++,e}return t}}(e||(e={})),function(e){e[e.prependFrame=1]="prependFrame",e[e.removeFrame=2]="removeFrame",e[e.setAttribute=3]="setAttribute",e[e.removeAttribute=4]="removeAttribute",e[e.updateText=5]="updateText",e[e.stepIn=6]="stepIn",e[e.stepOut=7]="stepOut",e[e.updateMarkup=8]="updateMarkup",e[e.permutationListEntry=9]="permutationListEntry",e[e.permutationListEnd=10]="permutationListEnd"}(t||(t={})),function(e){e[e.element=1]="element",e[e.text=2]="text",e[e.attribute=3]="attribute",e[e.component=4]="component",e[e.region=5]="region",e[e.elementReferenceCapture=6]="elementReferenceCapture",e[e.markup=8]="markup",e[e.namedEvent=10]="namedEvent"}(o||(o={}));class r{constructor(e,t){this.componentId=e,this.fieldValue=t}static fromEvent(e,t){const n=t.target;if(n instanceof Element){const t=function(e){return e instanceof HTMLInputElement?e.type&&"checkbox"===e.type.toLowerCase()?{value:e.checked}:{value:e.value}:e instanceof HTMLSelectElement||e instanceof HTMLTextAreaElement?{value:e.value}:null}(n);if(t)return new r(e,t.value)}return null}}const i=new Map,s=new Map,a=[];function c(e){return i.get(e)}function l(e){const t=i.get(e);return(null==t?void 0:t.browserEventName)||e}function h(e,t){e.forEach((e=>i.set(e,t)))}function d(e){const t=[];for(let n=0;ne.selected)).map((e=>e.value))}}{const e=function(e){return!!e&&"INPUT"===e.tagName&&"checkbox"===e.getAttribute("type")}(t);return{value:e?!!t.checked:t.value}}}}),h(["copy","cut","paste"],{createEventArgs:e=>({type:e.type})}),h(["drag","dragend","dragenter","dragleave","dragover","dragstart","drop"],{createEventArgs:e=>{return{...u(t=e),dataTransfer:t.dataTransfer?{dropEffect:t.dataTransfer.dropEffect,effectAllowed:t.dataTransfer.effectAllowed,files:Array.from(t.dataTransfer.files).map((e=>e.name)),items:Array.from(t.dataTransfer.items).map((e=>({kind:e.kind,type:e.type}))),types:t.dataTransfer.types}:null};var t}}),h(["focus","blur","focusin","focusout"],{createEventArgs:e=>({type:e.type})}),h(["keydown","keyup","keypress"],{createEventArgs:e=>{return{key:(t=e).key,code:t.code,location:t.location,repeat:t.repeat,ctrlKey:t.ctrlKey,shiftKey:t.shiftKey,altKey:t.altKey,metaKey:t.metaKey,type:t.type};var t}}),h(["contextmenu","click","mouseover","mouseout","mousemove","mousedown","mouseup","mouseleave","mouseenter","dblclick"],{createEventArgs:e=>u(e)}),h(["error"],{createEventArgs:e=>{return{message:(t=e).message,filename:t.filename,lineno:t.lineno,colno:t.colno,type:t.type};var t}}),h(["loadstart","timeout","abort","load","loadend","progress"],{createEventArgs:e=>{return{lengthComputable:(t=e).lengthComputable,loaded:t.loaded,total:t.total,type:t.type};var t}}),h(["touchcancel","touchend","touchmove","touchenter","touchleave","touchstart"],{createEventArgs:e=>{return{detail:(t=e).detail,touches:d(t.touches),targetTouches:d(t.targetTouches),changedTouches:d(t.changedTouches),ctrlKey:t.ctrlKey,shiftKey:t.shiftKey,altKey:t.altKey,metaKey:t.metaKey,type:t.type};var t}}),h(["gotpointercapture","lostpointercapture","pointercancel","pointerdown","pointerenter","pointerleave","pointermove","pointerout","pointerover","pointerup"],{createEventArgs:e=>{return{...u(t=e),pointerId:t.pointerId,width:t.width,height:t.height,pressure:t.pressure,tiltX:t.tiltX,tiltY:t.tiltY,pointerType:t.pointerType,isPrimary:t.isPrimary};var t}}),h(["wheel","mousewheel"],{createEventArgs:e=>{return{...u(t=e),deltaX:t.deltaX,deltaY:t.deltaY,deltaZ:t.deltaZ,deltaMode:t.deltaMode};var t}}),h(["cancel","close","toggle"],{createEventArgs:()=>({})});const p=["date","datetime-local","month","time","week"],f=new Map;let g,m,v=0;const y={async add(e,t,n){if(!n)throw new Error("initialParameters must be an object, even if empty.");const o="__bl-dynamic-root:"+(++v).toString();f.set(o,e);const r=await S().invokeMethodAsync("AddRootComponent",t,o),i=new _(r,m[t]);return await i.setParameters(n),i}};function w(e){const t=f.get(e);if(t)return f.delete(e),t}class b{invoke(e){return this._callback(e)}setCallback(t){this._selfJSObjectReference||(this._selfJSObjectReference=e.createJSObjectReference(this)),this._callback=t}getJSObjectReference(){return this._selfJSObjectReference}dispose(){this._selfJSObjectReference&&e.disposeJSObjectReference(this._selfJSObjectReference)}}class _{constructor(e,t){this._jsEventCallbackWrappers=new Map,this._componentId=e;for(const e of t)"eventcallback"===e.type&&this._jsEventCallbackWrappers.set(e.name.toLowerCase(),new b)}setParameters(e){const t={},n=Object.entries(e||{}),o=n.length;for(const[e,o]of n){const n=this._jsEventCallbackWrappers.get(e.toLowerCase());n&&o?(n.setCallback(o),t[e]=n.getJSObjectReference()):t[e]=o}return S().invokeMethodAsync("SetRootComponentParameters",this._componentId,o,t)}async dispose(){if(null!==this._componentId){await S().invokeMethodAsync("RemoveRootComponent",this._componentId),this._componentId=null;for(const e of this._jsEventCallbackWrappers.values())e.dispose()}}}function S(){if(!g)throw new Error("Dynamic root components have not been enabled in this application.");return g}const C=new Map,E=[],I=new Map;function k(t,n,o,r){var i,s;if(C.has(t))throw new Error(`Interop methods are already registered for renderer ${t}`);C.set(t,n),o&&r&&Object.keys(o).length>0&&function(t,n,o){if(g)throw new Error("Dynamic root components have already been enabled.");g=t,m=n;for(const[t,r]of Object.entries(o)){const o=e.findJSFunction(t,0);for(const e of r)o(e,n[e])}}(D(t),o,r),null===(s=null===(i=I.get(t))||void 0===i?void 0:i[0])||void 0===s||s.call(i),function(e){for(const t of E)t(e)}(t)}function T(e){return C.has(e)}function R(e,t,n){return A(e,t.eventHandlerId,(()=>D(e).invokeMethodAsync("DispatchEventAsync",t,n)))}function D(e){const t=C.get(e);if(!t)throw new Error(`No interop methods are registered for renderer ${e}`);return t}let A=(e,t,n)=>n();const x=B(["abort","blur","cancel","canplay","canplaythrough","change","close","cuechange","durationchange","emptied","ended","error","focus","load","loadeddata","loadedmetadata","loadend","loadstart","mouseenter","mouseleave","pointerenter","pointerleave","pause","play","playing","progress","ratechange","reset","scroll","seeked","seeking","stalled","submit","suspend","timeupdate","toggle","unload","volumechange","waiting","DOMNodeInsertedIntoDocument","DOMNodeRemovedFromDocument"]),N={submit:!0},P=B(["click","dblclick","mousedown","mousemove","mouseup"]);class M{constructor(e){this.browserRendererId=e,this.afterClickCallbacks=[];const t=++M.nextEventDelegatorId;this.eventsCollectionKey=`_blazorEvents_${t}`,this.eventInfoStore=new U(this.onGlobalEvent.bind(this))}setListener(e,t,n,o){const r=this.getEventHandlerInfosForElement(e,!0),i=r.getHandler(t);if(i)this.eventInfoStore.update(i.eventHandlerId,n);else{const i={element:e,eventName:t,eventHandlerId:n,renderingComponentId:o};this.eventInfoStore.add(i),r.setHandler(t,i)}}getHandler(e){return this.eventInfoStore.get(e)}removeListener(e){const t=this.eventInfoStore.remove(e);if(t){const e=t.element,n=this.getEventHandlerInfosForElement(e,!1);n&&n.removeHandler(t.eventName)}}notifyAfterClick(e){this.afterClickCallbacks.push(e),this.eventInfoStore.addGlobalListener("click")}setStopPropagation(e,t,n){this.getEventHandlerInfosForElement(e,!0).stopPropagation(t,n)}setPreventDefault(e,t,n){this.getEventHandlerInfosForElement(e,!0).preventDefault(t,n)}onGlobalEvent(e){if(!(e.target instanceof Element))return;this.dispatchGlobalEventToAllElements(e.type,e);const t=(n=e.type,s.get(n));var n;t&&t.forEach((t=>this.dispatchGlobalEventToAllElements(t,e))),"click"===e.type&&this.afterClickCallbacks.forEach((t=>t(e)))}dispatchGlobalEventToAllElements(e,t){const n=t.composedPath();let o=n.shift(),i=null,s=!1;const a=Object.prototype.hasOwnProperty.call(x,e);let l=!1;for(;o;){const u=o,p=this.getEventHandlerInfosForElement(u,!1);if(p){const n=p.getHandler(e);if(n&&(h=u,d=t.type,!((h instanceof HTMLButtonElement||h instanceof HTMLInputElement||h instanceof HTMLTextAreaElement||h instanceof HTMLSelectElement)&&Object.prototype.hasOwnProperty.call(P,d)&&h.disabled))){if(!s){const n=c(e);i=(null==n?void 0:n.createEventArgs)?n.createEventArgs(t):{},s=!0}Object.prototype.hasOwnProperty.call(N,t.type)&&t.preventDefault(),R(this.browserRendererId,{eventHandlerId:n.eventHandlerId,eventName:e,eventFieldInfo:r.fromEvent(n.renderingComponentId,t)},i)}p.stopPropagation(e)&&(l=!0),p.preventDefault(e)&&t.preventDefault()}o=a||l?void 0:n.shift()}var h,d}getEventHandlerInfosForElement(e,t){return Object.prototype.hasOwnProperty.call(e,this.eventsCollectionKey)?e[this.eventsCollectionKey]:t?e[this.eventsCollectionKey]=new L:null}}M.nextEventDelegatorId=0;class U{constructor(e){this.globalListener=e,this.infosByEventHandlerId={},this.countByEventName={},a.push(this.handleEventNameAliasAdded.bind(this))}add(e){if(this.infosByEventHandlerId[e.eventHandlerId])throw new Error(`Event ${e.eventHandlerId} is already tracked`);this.infosByEventHandlerId[e.eventHandlerId]=e,this.addGlobalListener(e.eventName)}get(e){return this.infosByEventHandlerId[e]}addGlobalListener(e){if(e=l(e),Object.prototype.hasOwnProperty.call(this.countByEventName,e))this.countByEventName[e]++;else{this.countByEventName[e]=1;const t=Object.prototype.hasOwnProperty.call(x,e);document.addEventListener(e,this.globalListener,t)}}update(e,t){if(Object.prototype.hasOwnProperty.call(this.infosByEventHandlerId,t))throw new Error(`Event ${t} is already tracked`);const n=this.infosByEventHandlerId[e];delete this.infosByEventHandlerId[e],n.eventHandlerId=t,this.infosByEventHandlerId[t]=n}remove(e){const t=this.infosByEventHandlerId[e];if(t){delete this.infosByEventHandlerId[e];const n=l(t.eventName);0==--this.countByEventName[n]&&(delete this.countByEventName[n],document.removeEventListener(n,this.globalListener))}return t}handleEventNameAliasAdded(e,t){if(Object.prototype.hasOwnProperty.call(this.countByEventName,e)){const n=this.countByEventName[e];delete this.countByEventName[e],document.removeEventListener(e,this.globalListener),this.addGlobalListener(t),this.countByEventName[t]+=n-1}}}class L{constructor(){this.handlers={},this.preventDefaultFlags=null,this.stopPropagationFlags=null}getHandler(e){return Object.prototype.hasOwnProperty.call(this.handlers,e)?this.handlers[e]:null}setHandler(e,t){this.handlers[e]=t}removeHandler(e){delete this.handlers[e]}preventDefault(e,t){return void 0!==t&&(this.preventDefaultFlags=this.preventDefaultFlags||{},this.preventDefaultFlags[e]=t),!!this.preventDefaultFlags&&this.preventDefaultFlags[e]}stopPropagation(e,t){return void 0!==t&&(this.stopPropagationFlags=this.stopPropagationFlags||{},this.stopPropagationFlags[e]=t),!!this.stopPropagationFlags&&this.stopPropagationFlags[e]}}function B(e){const t={};return e.forEach((e=>{t[e]=!0})),t}const O=Symbol(),F=Symbol(),$=Symbol();function H(e){const{start:t,end:n}=e,o=t[$];if(o){if(o!==e)throw new Error("The start component comment was already associated with another component descriptor.");return t}const r=t.parentNode;if(!r)throw new Error(`Comment not connected to the DOM ${t.textContent}`);const i=W(r,!0),s=Y(i);t[F]=i,t[$]=e;const a=W(t);if(n){const e=Y(a),o=Array.prototype.indexOf.call(s,a)+1;let r=null;for(;r!==n;){const n=s.splice(o,1)[0];if(!n)throw new Error("Could not find the end component comment in the parent logical node list");n[F]=t,e.push(n),r=n}}return a}function W(e,t){if(O in e)return e;const n=[];if(e.childNodes.length>0){if(!t)throw new Error("New logical elements must start empty, or allowExistingContents must be true");e.childNodes.forEach((t=>{const o=W(t,!0);o[F]=e,n.push(o)}))}return e[O]=n,e}function j(e){const t=Y(e);for(;t.length;)J(e,0)}function z(e,t){const n=document.createComment("!");return q(n,e,t),n}function q(e,t,n){const o=e;let r=e;if(Z(e)){const t=oe(o);if(t!==e){const n=new Range;n.setStartBefore(e),n.setEndAfter(t),r=n.extractContents()}}const i=K(o);if(i){const e=Y(i),t=Array.prototype.indexOf.call(e,o);e.splice(t,1),delete o[F]}const s=Y(t);if(n0;)J(n,0)}const o=n;o.parentNode.removeChild(o)}function K(e){return e[F]||null}function V(e,t){return Y(e)[t]}function X(e){return e[$]||null}function G(e){const t=te(e);return"http://www.w3.org/2000/svg"===t.namespaceURI&&"foreignObject"!==t.tagName}function Y(e){return e[O]}function Q(e){const t=Y(K(e));return t[Array.prototype.indexOf.call(t,e)+1]||null}function Z(e){return O in e}function ee(e,t){const n=Y(e);t.forEach((e=>{e.moveRangeStart=n[e.fromSiblingIndex],e.moveRangeEnd=oe(e.moveRangeStart)})),t.forEach((t=>{const o=document.createComment("marker");t.moveToBeforeMarker=o;const r=n[t.toSiblingIndex+1];r?r.parentNode.insertBefore(o,r):ne(o,e)})),t.forEach((e=>{const t=e.moveToBeforeMarker,n=t.parentNode,o=e.moveRangeStart,r=e.moveRangeEnd;let i=o;for(;i;){const e=i.nextSibling;if(n.insertBefore(i,t),i===r)break;i=e}n.removeChild(t)})),t.forEach((e=>{n[e.toSiblingIndex]=e.moveRangeStart}))}function te(e){if(e instanceof Element||e instanceof DocumentFragment)return e;if(e instanceof Comment)return e.parentNode;throw new Error("Not a valid logical element")}function ne(e,t){if(t instanceof Element||t instanceof DocumentFragment)t.appendChild(e);else{if(!(t instanceof Comment))throw new Error(`Cannot append node because the parent is not a valid logical element. Parent: ${t}`);{const n=Q(t);n?n.parentNode.insertBefore(e,n):ne(e,K(t))}}}function oe(e){if(e instanceof Element||e instanceof DocumentFragment)return e;const t=Q(e);if(t)return t.previousSibling;{const t=K(e);return t instanceof Element||t instanceof DocumentFragment?t.lastChild:oe(t)}}function re(e){return`_bl_${e}`}const ie="__internalId";e.attachReviver(((e,t)=>t&&"object"==typeof t&&Object.prototype.hasOwnProperty.call(t,ie)&&"string"==typeof t[ie]?function(e){const t=`[${re(e)}]`;return document.querySelector(t)}(t[ie]):t));const se="_blazorDeferredValue";function ae(e){e instanceof HTMLOptionElement?de(e):se in e&&he(e,e[se])}function ce(e){return"select-multiple"===e.type}function le(e,t){e.value=t||""}function he(e,t){e instanceof HTMLSelectElement?ce(e)?function(e,t){t||(t=[]);for(let n=0;n{Oe()&&Ne(e,(e=>{Xe(e,!0,!1)}))}))}getRootComponentCount(){return this.rootComponentIds.size}attachRootComponentToLogicalElement(e,t,n){if(we(t))throw new Error(`Root component '${e}' could not be attached because its target element is already associated with a root component`);n&&(t=z(t,Y(t).length)),ye(t,!0),this.attachComponentToElement(e,t),this.rootComponentIds.add(e),fe.add(t)}updateComponent(e,t,n,o){var r;const i=this.childComponentLocations[t];if(!i)throw new Error(`No element is currently associated with component ${t}`);fe.delete(i)&&(j(i),i instanceof Comment&&(i.textContent="!"));const s=null===(r=te(i))||void 0===r?void 0:r.getRootNode(),a=s&&s.activeElement;this.applyEdits(e,t,i,0,n,o),a instanceof HTMLElement&&s&&s.activeElement!==a&&a.focus()}disposeComponent(e){if(this.rootComponentIds.delete(e)){const t=this.childComponentLocations[e];ye(t,!1),!0===t[me]?fe.add(t):j(t)}delete this.childComponentLocations[e]}disposeEventHandler(e){this.eventDelegator.removeListener(e)}attachComponentToElement(e,t){this.childComponentLocations[e]=t}applyEdits(e,n,o,r,i,s){let a,c=0,l=r;const h=e.arrayBuilderSegmentReader,d=e.editReader,u=e.frameReader,p=h.values(i),f=h.offset(i),g=f+h.count(i);for(let i=f;i{const t=document.createElement("script");t.textContent=e.textContent,e.getAttributeNames().forEach((n=>{t.setAttribute(n,e.getAttribute(n))})),e.parentNode.replaceChild(t,e)})),ue.content));var s;let a=0;for(;i.firstChild;)q(i.firstChild,r,a++)}applyAttribute(e,t,n,o){const r=e.frameReader,i=r.attributeName(o),s=r.attributeEventHandlerId(o);if(s){const e=Se(i);return void this.eventDelegator.setListener(n,e,s,t)}const a=r.attributeValue(o);this.setOrRemoveAttributeOrProperty(n,i,a)}insertFrameRange(e,t,n,o,r,i,s){const a=o;for(let a=i;a{et(t,e)})},enableNavigationInterception:function(e){if(void 0!==Ee&&Ee!==e)throw new Error("Only one interactive runtime may enable navigation interception at a time.");Ee=e},setHasLocationChangingListeners:function(e,t){const n=je.get(e);if(!n)throw new Error(`Renderer with ID '${e}' is not listening for navigation events`);n.hasLocationChangingEventListeners=t},endLocationChanging:function(e,t){qe&&e===We&&(qe(t),qe=null)},navigateTo:function(e,t){Ve(e,t,!0)},refresh:function(e){!e&&Me()?Ue(location.href,!0):location.reload()},getBaseURI:()=>document.baseURI,getLocationHref:()=>location.href,scrollToElement:Ke};function Ke(e){const t=document.getElementById(e);return!!t&&(t.scrollIntoView(),!0)}function Ve(e,t,n=!1){const o=Le(e),r=ot();if(t.forceLoad||!Pe(o)||"serverside-fullpageload"===r)!function(e,t){if(location.href===e){const t=e+"?";history.replaceState(null,"",t),location.replace(e)}else t?location.replace(e):location.href=e}(e,t.replaceHistoryEntry);else if("clientside-router"===r)Xe(o,!1,t.replaceHistoryEntry,t.historyEntryState,n);else{if("serverside-enhanced"!==r)throw new Error(`Unsupported page load mechanism: ${r}`);Ue(o,t.replaceHistoryEntry)}}async function Xe(e,t,n,o=void 0,r=!1){if(Qe(),function(e){const t=e.indexOf("#");return t>-1&&location.href.replace(location.hash,"")===e.substring(0,t)}(e))return void function(e,t,n){Ge(e,t,n);const o=e.indexOf("#");o!==e.length-1&&Ke(e.substring(o+1))}(e,n,o);const i=nt();(r||!(null==i?void 0:i.hasLocationChangingEventListeners)||await Ze(e,o,t,i))&&(Re=!0,Ge(e,n,o),await et(t))}function Ge(e,t,n=void 0){t?history.replaceState({userState:n,_index:He},"",e):(He++,history.pushState({userState:n,_index:He},"",e))}function Ye(e){return new Promise((t=>{const n=ze;ze=()=>{ze=n,t()},history.go(e)}))}function Qe(){qe&&(qe(!1),qe=null)}function Ze(e,t,n,o){return new Promise((r=>{Qe(),We++,qe=r,o.locationChanging(We,e,t,n)}))}async function et(e,t){const n=null!=t?t:location.href;await Promise.all(Array.from(je,(async([t,o])=>{var r;T(t)&&await o.locationChanged(n,null===(r=history.state)||void 0===r?void 0:r.userState,e)})))}async function tt(e){var t,n;ze&&"serverside-enhanced"!==ot()&&await ze(e),He=null!==(n=null===(t=history.state)||void 0===t?void 0:t._index)&&void 0!==n?n:0}function nt(){const e=Fe();if(void 0!==e)return je.get(e)}function ot(){return Oe()?"clientside-router":Me()?"serverside-enhanced":window.Blazor._internal.isBlazorWeb?"serverside-fullpageload":"clientside-router"}const rt={focus:function(e,t){if(e instanceof HTMLElement)e.focus({preventScroll:t});else{if(!(e instanceof SVGElement))throw new Error("Unable to focus an invalid element.");if(!e.hasAttribute("tabindex"))throw new Error("Unable to focus an SVG element that does not have a tabindex.");e.focus({preventScroll:t})}},focusBySelector:function(e,t){const n=document.querySelector(e);n&&(n.hasAttribute("tabindex")||(n.tabIndex=-1),n.focus({preventScroll:!0}))}},it={init:function(e,t,n,o=50){const r=at(t);(r||document.documentElement).style.overflowAnchor="none";const i=document.createRange();u(n.parentElement)&&(t.style.display="table-row",n.style.display="table-row");const s=new IntersectionObserver((function(o){o.forEach((o=>{var r;if(!o.isIntersecting)return;i.setStartAfter(t),i.setEndBefore(n);const s=i.getBoundingClientRect().height,a=null===(r=o.rootBounds)||void 0===r?void 0:r.height;o.target===t?e.invokeMethodAsync("OnSpacerBeforeVisible",o.intersectionRect.top-o.boundingClientRect.top,s,a):o.target===n&&n.offsetHeight>0&&e.invokeMethodAsync("OnSpacerAfterVisible",o.boundingClientRect.bottom-o.intersectionRect.bottom,s,a)}))}),{root:r,rootMargin:`${o}px`});s.observe(t),s.observe(n);const a=d(t),c=d(n),{observersByDotNetObjectId:l,id:h}=ct(e);function d(e){const t={attributes:!0},n=new MutationObserver(((n,o)=>{u(e.parentElement)&&(o.disconnect(),e.style.display="table-row",o.observe(e,t)),s.unobserve(e),s.observe(e)}));return n.observe(e,t),n}function u(e){return null!==e&&(e instanceof HTMLTableElement&&""===e.style.display||"table"===e.style.display||e instanceof HTMLTableSectionElement&&""===e.style.display||"table-row-group"===e.style.display)}l[h]={intersectionObserver:s,mutationObserverBefore:a,mutationObserverAfter:c}},dispose:function(e){const{observersByDotNetObjectId:t,id:n}=ct(e),o=t[n];o&&(o.intersectionObserver.disconnect(),o.mutationObserverBefore.disconnect(),o.mutationObserverAfter.disconnect(),e.dispose(),delete t[n])}},st=Symbol();function at(e){return e&&e!==document.body&&e!==document.documentElement?"visible"!==getComputedStyle(e).overflowY?e:at(e.parentElement):null}function ct(e){var t;const n=e._callDispatcher,o=e._id;return null!==(t=n[st])&&void 0!==t||(n[st]={}),{observersByDotNetObjectId:n[st],id:o}}const lt={getAndRemoveExistingTitle:function(){var e;const t=document.head?document.head.getElementsByTagName("title"):[];if(0===t.length)return null;let n=null;for(let o=t.length-1;o>=0;o--){const r=t[o],i=r.previousSibling;i instanceof Comment&&null!==K(i)||(null===n&&(n=r.textContent),null===(e=r.parentNode)||void 0===e||e.removeChild(r))}return n}},ht={init:function(e,t){t._blazorInputFileNextFileId=0,t.addEventListener("click",(function(){t.value=""})),t.addEventListener("change",(function(){t._blazorFilesById={};const n=Array.prototype.map.call(t.files,(function(e){const n={id:++t._blazorInputFileNextFileId,lastModified:new Date(e.lastModified).toISOString(),name:e.name,size:e.size,contentType:e.type,readPromise:void 0,arrayBuffer:void 0,blob:e};return t._blazorFilesById[n.id]=n,n}));e.invokeMethodAsync("NotifyChange",n)}))},toImageFile:async function(e,t,n,o,r){const i=dt(e,t),s=await new Promise((function(e){const t=new Image;t.onload=function(){URL.revokeObjectURL(t.src),e(t)},t.onerror=function(){t.onerror=null,URL.revokeObjectURL(t.src)},t.src=URL.createObjectURL(i.blob)})),a=await new Promise((function(e){var t;const i=Math.min(1,o/s.width),a=Math.min(1,r/s.height),c=Math.min(i,a),l=document.createElement("canvas");l.width=Math.round(s.width*c),l.height=Math.round(s.height*c),null===(t=l.getContext("2d"))||void 0===t||t.drawImage(s,0,0,l.width,l.height),l.toBlob(e,n)})),c={id:++e._blazorInputFileNextFileId,lastModified:i.lastModified,name:i.name,size:(null==a?void 0:a.size)||0,contentType:n,blob:a||i.blob};return e._blazorFilesById[c.id]=c,c},readFileData:async function(e,t){return dt(e,t).blob}};function dt(e,t){const n=e._blazorFilesById[t];if(!n)throw new Error(`There is no file with ID ${t}. The file list may have changed. See https://aka.ms/aspnet/blazor-input-file-multiple-selections.`);return n}const ut=new Set,pt={enableNavigationPrompt:function(e){0===ut.size&&window.addEventListener("beforeunload",ft),ut.add(e)},disableNavigationPrompt:function(e){ut.delete(e),0===ut.size&&window.removeEventListener("beforeunload",ft)}};function ft(e){e.preventDefault(),e.returnValue=!0}async function gt(e,t,n){return e instanceof Blob?await async function(e,t,n){const o=e.slice(t,t+n),r=await o.arrayBuffer();return new Uint8Array(r)}(e,t,n):function(e,t,n){return new Uint8Array(e.buffer,e.byteOffset+t,n)}(e,t,n)}const mt=new Map,vt={navigateTo:function(e,t,n=!1){Ve(e,t instanceof Object?t:{forceLoad:t,replaceHistoryEntry:n})},registerCustomEventType:function(e,t){if(!t)throw new Error("The options parameter is required.");if(i.has(e))throw new Error(`The event '${e}' is already registered.`);if(t.browserEventName){const n=s.get(t.browserEventName);n?n.push(e):s.set(t.browserEventName,[e]),a.forEach((n=>n(e,t.browserEventName)))}i.set(e,t)},rootComponents:y,runtime:{},_internal:{navigationManager:Je,domWrapper:rt,Virtualize:it,PageTitle:lt,InputFile:ht,NavigationLock:pt,getJSDataStreamChunk:gt,attachWebRendererInterop:k}};var yt;window.Blazor=vt,function(e){e[e.Trace=0]="Trace",e[e.Debug=1]="Debug",e[e.Information=2]="Information",e[e.Warning=3]="Warning",e[e.Error=4]="Error",e[e.Critical=5]="Critical",e[e.None=6]="None"}(yt||(yt={}));class wt{log(e,t){}}wt.instance=new wt;class bt{constructor(e){this.minLevel=e}log(e,t){if(e>=this.minLevel){const n=`[${(new Date).toISOString()}] ${yt[e]}: ${t}`;switch(e){case yt.Critical:case yt.Error:console.error(n);break;case yt.Warning:console.warn(n);break;case yt.Information:console.info(n);break;default:console.log(n)}}}}function _t(e,t){switch(t){case"webassembly":return Tt(e,"webassembly");case"server":return function(e){return Tt(e,"server").sort(((e,t)=>e.sequence-t.sequence))}(e);case"auto":return Tt(e,"auto")}}const St=/^\s*Blazor-Server-Component-State:(?[a-zA-Z0-9+/=]+)$/,Ct=/^\s*Blazor-WebAssembly-Component-State:(?[a-zA-Z0-9+/=]+)$/,Et=/^\s*Blazor-Web-Initializers:(?[a-zA-Z0-9+/=]+)$/;function It(e){return kt(e,St)}function kt(e,t,n="state"){var o;if(e.nodeType===Node.COMMENT_NODE){const r=e.textContent||"",i=t.exec(r),s=i&&i.groups&&i.groups[n];return s&&(null===(o=e.parentNode)||void 0===o||o.removeChild(e)),s}if(!e.hasChildNodes())return;const r=e.childNodes;for(let e=0;e.*)$/);function Dt(e,t){const n=e.currentElement;var o,r,i;if(n&&n.nodeType===Node.COMMENT_NODE&&n.textContent){const s=Rt.exec(n.textContent),a=s&&s.groups&&s.groups.descriptor;if(!a)return;!function(e){if(e.parentNode instanceof Document)throw new Error("Root components cannot be marked as interactive. The element must be rendered statically so that scripts are not evaluated multiple times.")}(n);try{const s=function(e){const t=JSON.parse(e),{type:n}=t;if("server"!==n&&"webassembly"!==n&&"auto"!==n)throw new Error(`Invalid component type '${n}'.`);return t}(a),c=function(e,t,n){const{prerenderId:o}=e;if(o){for(;n.next()&&n.currentElement;){const e=n.currentElement;if(e.nodeType!==Node.COMMENT_NODE)continue;if(!e.textContent)continue;const t=Rt.exec(e.textContent),r=t&&t[1];if(r)return Pt(r,o),e}throw new Error(`Could not find an end component comment for '${t}'.`)}}(s,n,e);if(t!==s.type)return;switch(s.type){case"webassembly":return r=n,i=c,Nt(o=s),{...o,uniqueId:At++,start:r,end:i};case"server":return function(e,t,n){return xt(e),{...e,uniqueId:At++,start:t,end:n}}(s,n,c);case"auto":return function(e,t,n){return xt(e),Nt(e),{...e,uniqueId:At++,start:t,end:n}}(s,n,c)}}catch(e){throw new Error(`Found malformed component comment at ${n.textContent}`)}}}let At=0;function xt(e){const{descriptor:t,sequence:n}=e;if(!t)throw new Error("descriptor must be defined when using a descriptor.");if(void 0===n)throw new Error("sequence must be defined when using a descriptor.");if(!Number.isInteger(n))throw new Error(`Error parsing the sequence '${n}' for component '${JSON.stringify(e)}'`)}function Nt(e){const{assembly:t,typeName:n}=e;if(!t)throw new Error("assembly must be defined when using a descriptor.");if(!n)throw new Error("typeName must be defined when using a descriptor.");e.parameterDefinitions=e.parameterDefinitions&&atob(e.parameterDefinitions),e.parameterValues=e.parameterValues&&atob(e.parameterValues)}function Pt(e,t){const n=JSON.parse(e);if(1!==Object.keys(n).length)throw new Error(`Invalid end of component comment: '${e}'`);const o=n.prerenderId;if(!o)throw new Error(`End of component comment must have a value for the prerendered property: '${e}'`);if(o!==t)throw new Error(`End of component comment prerendered property must match the start comment prerender id: '${t}', '${o}'`)}class Mt{constructor(e){this.childNodes=e,this.currentIndex=-1,this.length=e.length}next(){return this.currentIndex++,this.currentIndex{n+=`0x${e<16?"0":""}${e.toString(16)} `})),n.substr(0,n.length-1)}(e)}'`)):"string"==typeof e&&(n=`String data of length ${e.length}`,t&&(n+=`. Content: '${e}'`)),n}function zt(e){return e&&"undefined"!=typeof ArrayBuffer&&(e instanceof ArrayBuffer||e.constructor&&"ArrayBuffer"===e.constructor.name)}async function qt(e,t,n,o,r,i){const s={},[a,c]=Vt();s[a]=c,e.log(Ot.Trace,`(${t} transport) sending data. ${jt(r,i.logMessageContent)}.`);const l=zt(r)?"arraybuffer":"text",h=await n.post(o,{content:r,headers:{...s,...i.headers},responseType:l,timeout:i.timeout,withCredentials:i.withCredentials});e.log(Ot.Trace,`(${t} transport) request complete. Response status: ${h.statusCode}.`)}class Jt{constructor(e,t){this._subject=e,this._observer=t}dispose(){const e=this._subject.observers.indexOf(this._observer);e>-1&&this._subject.observers.splice(e,1),0===this._subject.observers.length&&this._subject.cancelCallback&&this._subject.cancelCallback().catch((e=>{}))}}class Kt{constructor(e){this._minLevel=e,this.out=console}log(e,t){if(e>=this._minLevel){const n=`[${(new Date).toISOString()}] ${Ot[e]}: ${t}`;switch(e){case Ot.Critical:case Ot.Error:this.out.error(n);break;case Ot.Warning:this.out.warn(n);break;case Ot.Information:this.out.info(n);break;default:this.out.log(n)}}}}function Vt(){let e="X-SignalR-User-Agent";return Wt.isNode&&(e="User-Agent"),[e,Xt($t,Gt(),Wt.isNode?"NodeJS":"Browser",Yt())]}function Xt(e,t,n,o){let r="Microsoft SignalR/";const i=e.split(".");return r+=`${i[0]}.${i[1]}`,r+=` (${e}; `,r+=t&&""!==t?`${t}; `:"Unknown OS; ",r+=`${n}`,r+=o?`; ${o}`:"; Unknown Runtime Version",r+=")",r}function Gt(){if(!Wt.isNode)return"";switch(process.platform){case"win32":return"Windows NT";case"darwin":return"macOS";case"linux":return"Linux";default:return process.platform}}function Yt(){if(Wt.isNode)return process.versions.node}function Qt(e){return e.stack?e.stack:e.message?e.message:`${e}`}class Zt{writeHandshakeRequest(e){return Bt.write(JSON.stringify(e))}parseHandshakeResponse(e){let t,n;if(zt(e)){const o=new Uint8Array(e),r=o.indexOf(Bt.RecordSeparatorCode);if(-1===r)throw new Error("Message is incomplete.");const i=r+1;t=String.fromCharCode.apply(null,Array.prototype.slice.call(o.slice(0,i))),n=o.byteLength>i?o.slice(i).buffer:null}else{const o=e,r=o.indexOf(Bt.RecordSeparator);if(-1===r)throw new Error("Message is incomplete.");const i=r+1;t=o.substring(0,i),n=o.length>i?o.substring(i):null}const o=Bt.parse(t),r=JSON.parse(o[0]);if(r.type)throw new Error("Expected a handshake response from the server.");return[n,r]}}class en extends Error{constructor(e,t){const n=new.target.prototype;super(`${e}: Status code '${t}'`),this.statusCode=t,this.__proto__=n}}class tn extends Error{constructor(e="A timeout occurred."){const t=new.target.prototype;super(e),this.__proto__=t}}class nn extends Error{constructor(e="An abort occurred."){const t=new.target.prototype;super(e),this.__proto__=t}}class on extends Error{constructor(e,t){const n=new.target.prototype;super(e),this.transport=t,this.errorType="UnsupportedTransportError",this.__proto__=n}}class rn extends Error{constructor(e,t){const n=new.target.prototype;super(e),this.transport=t,this.errorType="DisabledTransportError",this.__proto__=n}}class sn extends Error{constructor(e,t){const n=new.target.prototype;super(e),this.transport=t,this.errorType="FailedToStartTransportError",this.__proto__=n}}class an extends Error{constructor(e){const t=new.target.prototype;super(e),this.errorType="FailedToNegotiateWithServerError",this.__proto__=t}}class cn extends Error{constructor(e,t){const n=new.target.prototype;super(e),this.innerErrors=t,this.__proto__=n}}var ln,hn;!function(e){e[e.Invocation=1]="Invocation",e[e.StreamItem=2]="StreamItem",e[e.Completion=3]="Completion",e[e.StreamInvocation=4]="StreamInvocation",e[e.CancelInvocation=5]="CancelInvocation",e[e.Ping=6]="Ping",e[e.Close=7]="Close",e[e.Ack=8]="Ack",e[e.Sequence=9]="Sequence"}(ln||(ln={}));class dn{constructor(){this.observers=[]}next(e){for(const t of this.observers)t.next(e)}error(e){for(const t of this.observers)t.error&&t.error(e)}complete(){for(const e of this.observers)e.complete&&e.complete()}subscribe(e){return this.observers.push(e),new Jt(this,e)}}class un{constructor(e,t,n){this._bufferSize=1e5,this._messages=[],this._totalMessageCount=0,this._waitForSequenceMessage=!1,this._nextReceivingSequenceId=1,this._latestReceivedSequenceId=0,this._bufferedByteCount=0,this._reconnectInProgress=!1,this._protocol=e,this._connection=t,this._bufferSize=n}async _send(e){const t=this._protocol.writeMessage(e);let n=Promise.resolve();if(this._isInvocationMessage(e)){this._totalMessageCount++;let e=()=>{},o=()=>{};zt(t)?this._bufferedByteCount+=t.byteLength:this._bufferedByteCount+=t.length,this._bufferedByteCount>=this._bufferSize&&(n=new Promise(((t,n)=>{e=t,o=n}))),this._messages.push(new pn(t,this._totalMessageCount,e,o))}try{this._reconnectInProgress||await this._connection.send(t)}catch{this._disconnected()}await n}_ack(e){let t=-1;for(let n=0;nthis._nextReceivingSequenceId?this._connection.stop(new Error("Sequence ID greater than amount of messages we've received.")):this._nextReceivingSequenceId=e.sequenceId}_disconnected(){this._reconnectInProgress=!0,this._waitForSequenceMessage=!0}async _resend(){const e=0!==this._messages.length?this._messages[0]._id:this._totalMessageCount+1;await this._connection.send(this._protocol.writeMessage({type:ln.Sequence,sequenceId:e}));const t=this._messages;for(const e of t)await this._connection.send(e._message);this._reconnectInProgress=!1}_dispose(e){null!=e||(e=new Error("Unable to reconnect to server."));for(const t of this._messages)t._rejector(e)}_isInvocationMessage(e){switch(e.type){case ln.Invocation:case ln.StreamItem:case ln.Completion:case ln.StreamInvocation:case ln.CancelInvocation:return!0;case ln.Close:case ln.Sequence:case ln.Ping:case ln.Ack:return!1}}_ackTimer(){void 0===this._ackTimerHandle&&(this._ackTimerHandle=setTimeout((async()=>{try{this._reconnectInProgress||await this._connection.send(this._protocol.writeMessage({type:ln.Ack,sequenceId:this._latestReceivedSequenceId}))}catch{}clearTimeout(this._ackTimerHandle),this._ackTimerHandle=void 0}),1e3))}}class pn{constructor(e,t,n,o){this._message=e,this._id=t,this._resolver=n,this._rejector=o}}!function(e){e.Disconnected="Disconnected",e.Connecting="Connecting",e.Connected="Connected",e.Disconnecting="Disconnecting",e.Reconnecting="Reconnecting"}(hn||(hn={}));class fn{static create(e,t,n,o,r,i,s){return new fn(e,t,n,o,r,i,s)}constructor(e,t,n,o,r,i,s){this._nextKeepAlive=0,this._freezeEventListener=()=>{this._logger.log(Ot.Warning,"The page is being frozen, this will likely lead to the connection being closed and messages being lost. For more information see the docs at https://learn.microsoft.com/aspnet/core/signalr/javascript-client#bsleep")},Ht.isRequired(e,"connection"),Ht.isRequired(t,"logger"),Ht.isRequired(n,"protocol"),this.serverTimeoutInMilliseconds=null!=r?r:3e4,this.keepAliveIntervalInMilliseconds=null!=i?i:15e3,this._statefulReconnectBufferSize=null!=s?s:1e5,this._logger=t,this._protocol=n,this.connection=e,this._reconnectPolicy=o,this._handshakeProtocol=new Zt,this.connection.onreceive=e=>this._processIncomingData(e),this.connection.onclose=e=>this._connectionClosed(e),this._callbacks={},this._methods={},this._closedCallbacks=[],this._reconnectingCallbacks=[],this._reconnectedCallbacks=[],this._invocationId=0,this._receivedHandshakeResponse=!1,this._connectionState=hn.Disconnected,this._connectionStarted=!1,this._cachedPingMessage=this._protocol.writeMessage({type:ln.Ping})}get state(){return this._connectionState}get connectionId(){return this.connection&&this.connection.connectionId||null}get baseUrl(){return this.connection.baseUrl||""}set baseUrl(e){if(this._connectionState!==hn.Disconnected&&this._connectionState!==hn.Reconnecting)throw new Error("The HubConnection must be in the Disconnected or Reconnecting state to change the url.");if(!e)throw new Error("The HubConnection url must be a valid url.");this.connection.baseUrl=e}start(){return this._startPromise=this._startWithStateTransitions(),this._startPromise}async _startWithStateTransitions(){if(this._connectionState!==hn.Disconnected)return Promise.reject(new Error("Cannot start a HubConnection that is not in the 'Disconnected' state."));this._connectionState=hn.Connecting,this._logger.log(Ot.Debug,"Starting HubConnection.");try{await this._startInternal(),Wt.isBrowser&&window.document.addEventListener("freeze",this._freezeEventListener),this._connectionState=hn.Connected,this._connectionStarted=!0,this._logger.log(Ot.Debug,"HubConnection connected successfully.")}catch(e){return this._connectionState=hn.Disconnected,this._logger.log(Ot.Debug,`HubConnection failed to start successfully because of error '${e}'.`),Promise.reject(e)}}async _startInternal(){this._stopDuringStartError=void 0,this._receivedHandshakeResponse=!1;const e=new Promise(((e,t)=>{this._handshakeResolver=e,this._handshakeRejecter=t}));await this.connection.start(this._protocol.transferFormat);try{let t=this._protocol.version;this.connection.features.reconnect||(t=1);const n={protocol:this._protocol.name,version:t};if(this._logger.log(Ot.Debug,"Sending handshake request."),await this._sendMessage(this._handshakeProtocol.writeHandshakeRequest(n)),this._logger.log(Ot.Information,`Using HubProtocol '${this._protocol.name}'.`),this._cleanupTimeout(),this._resetTimeoutPeriod(),this._resetKeepAliveInterval(),await e,this._stopDuringStartError)throw this._stopDuringStartError;!!this.connection.features.reconnect&&(this._messageBuffer=new un(this._protocol,this.connection,this._statefulReconnectBufferSize),this.connection.features.disconnected=this._messageBuffer._disconnected.bind(this._messageBuffer),this.connection.features.resend=()=>{if(this._messageBuffer)return this._messageBuffer._resend()}),this.connection.features.inherentKeepAlive||await this._sendMessage(this._cachedPingMessage)}catch(e){throw this._logger.log(Ot.Debug,`Hub handshake failed with error '${e}' during start(). Stopping HubConnection.`),this._cleanupTimeout(),this._cleanupPingTimer(),await this.connection.stop(e),e}}async stop(){const e=this._startPromise;this.connection.features.reconnect=!1,this._stopPromise=this._stopInternal(),await this._stopPromise;try{await e}catch(e){}}_stopInternal(e){if(this._connectionState===hn.Disconnected)return this._logger.log(Ot.Debug,`Call to HubConnection.stop(${e}) ignored because it is already in the disconnected state.`),Promise.resolve();if(this._connectionState===hn.Disconnecting)return this._logger.log(Ot.Debug,`Call to HttpConnection.stop(${e}) ignored because the connection is already in the disconnecting state.`),this._stopPromise;const t=this._connectionState;return this._connectionState=hn.Disconnecting,this._logger.log(Ot.Debug,"Stopping HubConnection."),this._reconnectDelayHandle?(this._logger.log(Ot.Debug,"Connection stopped during reconnect delay. Done reconnecting."),clearTimeout(this._reconnectDelayHandle),this._reconnectDelayHandle=void 0,this._completeClose(),Promise.resolve()):(t===hn.Connected&&this._sendCloseMessage(),this._cleanupTimeout(),this._cleanupPingTimer(),this._stopDuringStartError=e||new nn("The connection was stopped before the hub handshake could complete."),this.connection.stop(e))}async _sendCloseMessage(){try{await this._sendWithProtocol(this._createCloseMessage())}catch{}}stream(e,...t){const[n,o]=this._replaceStreamingParams(t),r=this._createStreamInvocation(e,t,o);let i;const s=new dn;return s.cancelCallback=()=>{const e=this._createCancelInvocation(r.invocationId);return delete this._callbacks[r.invocationId],i.then((()=>this._sendWithProtocol(e)))},this._callbacks[r.invocationId]=(e,t)=>{t?s.error(t):e&&(e.type===ln.Completion?e.error?s.error(new Error(e.error)):s.complete():s.next(e.item))},i=this._sendWithProtocol(r).catch((e=>{s.error(e),delete this._callbacks[r.invocationId]})),this._launchStreams(n,i),s}_sendMessage(e){return this._resetKeepAliveInterval(),this.connection.send(e)}_sendWithProtocol(e){return this._messageBuffer?this._messageBuffer._send(e):this._sendMessage(this._protocol.writeMessage(e))}send(e,...t){const[n,o]=this._replaceStreamingParams(t),r=this._sendWithProtocol(this._createInvocation(e,t,!0,o));return this._launchStreams(n,r),r}invoke(e,...t){const[n,o]=this._replaceStreamingParams(t),r=this._createInvocation(e,t,!1,o);return new Promise(((e,t)=>{this._callbacks[r.invocationId]=(n,o)=>{o?t(o):n&&(n.type===ln.Completion?n.error?t(new Error(n.error)):e(n.result):t(new Error(`Unexpected message type: ${n.type}`)))};const o=this._sendWithProtocol(r).catch((e=>{t(e),delete this._callbacks[r.invocationId]}));this._launchStreams(n,o)}))}on(e,t){e&&t&&(e=e.toLowerCase(),this._methods[e]||(this._methods[e]=[]),-1===this._methods[e].indexOf(t)&&this._methods[e].push(t))}off(e,t){if(!e)return;e=e.toLowerCase();const n=this._methods[e];if(n)if(t){const o=n.indexOf(t);-1!==o&&(n.splice(o,1),0===n.length&&delete this._methods[e])}else delete this._methods[e]}onclose(e){e&&this._closedCallbacks.push(e)}onreconnecting(e){e&&this._reconnectingCallbacks.push(e)}onreconnected(e){e&&this._reconnectedCallbacks.push(e)}_processIncomingData(e){if(this._cleanupTimeout(),this._receivedHandshakeResponse||(e=this._processHandshakeResponse(e),this._receivedHandshakeResponse=!0),e){const t=this._protocol.parseMessages(e,this._logger);for(const e of t)if(!this._messageBuffer||this._messageBuffer._shouldProcessMessage(e))switch(e.type){case ln.Invocation:this._invokeClientMethod(e);break;case ln.StreamItem:case ln.Completion:{const t=this._callbacks[e.invocationId];if(t){e.type===ln.Completion&&delete this._callbacks[e.invocationId];try{t(e)}catch(e){this._logger.log(Ot.Error,`Stream callback threw error: ${Qt(e)}`)}}break}case ln.Ping:break;case ln.Close:{this._logger.log(Ot.Information,"Close message received from server.");const t=e.error?new Error("Server returned an error on close: "+e.error):void 0;!0===e.allowReconnect?this.connection.stop(t):this._stopPromise=this._stopInternal(t);break}case ln.Ack:this._messageBuffer&&this._messageBuffer._ack(e);break;case ln.Sequence:this._messageBuffer&&this._messageBuffer._resetSequence(e);break;default:this._logger.log(Ot.Warning,`Invalid message type: ${e.type}.`)}}this._resetTimeoutPeriod()}_processHandshakeResponse(e){let t,n;try{[n,t]=this._handshakeProtocol.parseHandshakeResponse(e)}catch(e){const t="Error parsing handshake response: "+e;this._logger.log(Ot.Error,t);const n=new Error(t);throw this._handshakeRejecter(n),n}if(t.error){const e="Server returned handshake error: "+t.error;this._logger.log(Ot.Error,e);const n=new Error(e);throw this._handshakeRejecter(n),n}return this._logger.log(Ot.Debug,"Server handshake complete."),this._handshakeResolver(),n}_resetKeepAliveInterval(){this.connection.features.inherentKeepAlive||(this._nextKeepAlive=(new Date).getTime()+this.keepAliveIntervalInMilliseconds,this._cleanupPingTimer())}_resetTimeoutPeriod(){if(!(this.connection.features&&this.connection.features.inherentKeepAlive||(this._timeoutHandle=setTimeout((()=>this.serverTimeout()),this.serverTimeoutInMilliseconds),void 0!==this._pingServerHandle))){let e=this._nextKeepAlive-(new Date).getTime();e<0&&(e=0),this._pingServerHandle=setTimeout((async()=>{if(this._connectionState===hn.Connected)try{await this._sendMessage(this._cachedPingMessage)}catch{this._cleanupPingTimer()}}),e)}}serverTimeout(){this.connection.stop(new Error("Server timeout elapsed without receiving a message from the server."))}async _invokeClientMethod(e){const t=e.target.toLowerCase(),n=this._methods[t];if(!n)return this._logger.log(Ot.Warning,`No client method with the name '${t}' found.`),void(e.invocationId&&(this._logger.log(Ot.Warning,`No result given for '${t}' method and invocation ID '${e.invocationId}'.`),await this._sendWithProtocol(this._createCompletionMessage(e.invocationId,"Client didn't provide a result.",null))));const o=n.slice(),r=!!e.invocationId;let i,s,a;for(const n of o)try{const o=i;i=await n.apply(this,e.arguments),r&&i&&o&&(this._logger.log(Ot.Error,`Multiple results provided for '${t}'. Sending error to server.`),a=this._createCompletionMessage(e.invocationId,"Client provided multiple results.",null)),s=void 0}catch(e){s=e,this._logger.log(Ot.Error,`A callback for the method '${t}' threw error '${e}'.`)}a?await this._sendWithProtocol(a):r?(s?a=this._createCompletionMessage(e.invocationId,`${s}`,null):void 0!==i?a=this._createCompletionMessage(e.invocationId,null,i):(this._logger.log(Ot.Warning,`No result given for '${t}' method and invocation ID '${e.invocationId}'.`),a=this._createCompletionMessage(e.invocationId,"Client didn't provide a result.",null)),await this._sendWithProtocol(a)):i&&this._logger.log(Ot.Error,`Result given for '${t}' method but server is not expecting a result.`)}_connectionClosed(e){this._logger.log(Ot.Debug,`HubConnection.connectionClosed(${e}) called while in state ${this._connectionState}.`),this._stopDuringStartError=this._stopDuringStartError||e||new nn("The underlying connection was closed before the hub handshake could complete."),this._handshakeResolver&&this._handshakeResolver(),this._cancelCallbacksWithError(e||new Error("Invocation canceled due to the underlying connection being closed.")),this._cleanupTimeout(),this._cleanupPingTimer(),this._connectionState===hn.Disconnecting?this._completeClose(e):this._connectionState===hn.Connected&&this._reconnectPolicy?this._reconnect(e):this._connectionState===hn.Connected&&this._completeClose(e)}_completeClose(e){if(this._connectionStarted){this._connectionState=hn.Disconnected,this._connectionStarted=!1,this._messageBuffer&&(this._messageBuffer._dispose(null!=e?e:new Error("Connection closed.")),this._messageBuffer=void 0),Wt.isBrowser&&window.document.removeEventListener("freeze",this._freezeEventListener);try{this._closedCallbacks.forEach((t=>t.apply(this,[e])))}catch(t){this._logger.log(Ot.Error,`An onclose callback called with error '${e}' threw error '${t}'.`)}}}async _reconnect(e){const t=Date.now();let n=0,o=void 0!==e?e:new Error("Attempting to reconnect due to a unknown error."),r=this._getNextRetryDelay(n++,0,o);if(null===r)return this._logger.log(Ot.Debug,"Connection not reconnecting because the IRetryPolicy returned null on the first reconnect attempt."),void this._completeClose(e);if(this._connectionState=hn.Reconnecting,e?this._logger.log(Ot.Information,`Connection reconnecting because of error '${e}'.`):this._logger.log(Ot.Information,"Connection reconnecting."),0!==this._reconnectingCallbacks.length){try{this._reconnectingCallbacks.forEach((t=>t.apply(this,[e])))}catch(t){this._logger.log(Ot.Error,`An onreconnecting callback called with error '${e}' threw error '${t}'.`)}if(this._connectionState!==hn.Reconnecting)return void this._logger.log(Ot.Debug,"Connection left the reconnecting state in onreconnecting callback. Done reconnecting.")}for(;null!==r;){if(this._logger.log(Ot.Information,`Reconnect attempt number ${n} will start in ${r} ms.`),await new Promise((e=>{this._reconnectDelayHandle=setTimeout(e,r)})),this._reconnectDelayHandle=void 0,this._connectionState!==hn.Reconnecting)return void this._logger.log(Ot.Debug,"Connection left the reconnecting state during reconnect delay. Done reconnecting.");try{if(await this._startInternal(),this._connectionState=hn.Connected,this._logger.log(Ot.Information,"HubConnection reconnected successfully."),0!==this._reconnectedCallbacks.length)try{this._reconnectedCallbacks.forEach((e=>e.apply(this,[this.connection.connectionId])))}catch(e){this._logger.log(Ot.Error,`An onreconnected callback called with connectionId '${this.connection.connectionId}; threw error '${e}'.`)}return}catch(e){if(this._logger.log(Ot.Information,`Reconnect attempt failed because of error '${e}'.`),this._connectionState!==hn.Reconnecting)return this._logger.log(Ot.Debug,`Connection moved to the '${this._connectionState}' from the reconnecting state during reconnect attempt. Done reconnecting.`),void(this._connectionState===hn.Disconnecting&&this._completeClose());o=e instanceof Error?e:new Error(e.toString()),r=this._getNextRetryDelay(n++,Date.now()-t,o)}}this._logger.log(Ot.Information,`Reconnect retries have been exhausted after ${Date.now()-t} ms and ${n} failed attempts. Connection disconnecting.`),this._completeClose()}_getNextRetryDelay(e,t,n){try{return this._reconnectPolicy.nextRetryDelayInMilliseconds({elapsedMilliseconds:t,previousRetryCount:e,retryReason:n})}catch(n){return this._logger.log(Ot.Error,`IRetryPolicy.nextRetryDelayInMilliseconds(${e}, ${t}) threw error '${n}'.`),null}}_cancelCallbacksWithError(e){const t=this._callbacks;this._callbacks={},Object.keys(t).forEach((n=>{const o=t[n];try{o(null,e)}catch(t){this._logger.log(Ot.Error,`Stream 'error' callback called with '${e}' threw error: ${Qt(t)}`)}}))}_cleanupPingTimer(){this._pingServerHandle&&(clearTimeout(this._pingServerHandle),this._pingServerHandle=void 0)}_cleanupTimeout(){this._timeoutHandle&&clearTimeout(this._timeoutHandle)}_createInvocation(e,t,n,o){if(n)return 0!==o.length?{arguments:t,streamIds:o,target:e,type:ln.Invocation}:{arguments:t,target:e,type:ln.Invocation};{const n=this._invocationId;return this._invocationId++,0!==o.length?{arguments:t,invocationId:n.toString(),streamIds:o,target:e,type:ln.Invocation}:{arguments:t,invocationId:n.toString(),target:e,type:ln.Invocation}}}_launchStreams(e,t){if(0!==e.length){t||(t=Promise.resolve());for(const n in e)e[n].subscribe({complete:()=>{t=t.then((()=>this._sendWithProtocol(this._createCompletionMessage(n))))},error:e=>{let o;o=e instanceof Error?e.message:e&&e.toString?e.toString():"Unknown error",t=t.then((()=>this._sendWithProtocol(this._createCompletionMessage(n,o))))},next:e=>{t=t.then((()=>this._sendWithProtocol(this._createStreamItemMessage(n,e))))}})}}_replaceStreamingParams(e){const t=[],n=[];for(let o=0;o0)&&(t=!1,this._accessToken=await this._accessTokenFactory()),this._setAuthorizationHeader(e);const n=await this._innerClient.send(e);return t&&401===n.statusCode&&this._accessTokenFactory?(this._accessToken=await this._accessTokenFactory(),this._setAuthorizationHeader(e),await this._innerClient.send(e)):n}_setAuthorizationHeader(e){e.headers||(e.headers={}),this._accessToken?e.headers[vn.Authorization]=`Bearer ${this._accessToken}`:this._accessTokenFactory&&e.headers[vn.Authorization]&&delete e.headers[vn.Authorization]}getCookieString(e){return this._innerClient.getCookieString(e)}}class _n extends wn{constructor(e){super(),this._logger=e;const t={_fetchType:void 0,_jar:void 0};var o;o=t,"undefined"==typeof fetch&&(o._jar=new(n(628).CookieJar),"undefined"==typeof fetch?o._fetchType=n(200):o._fetchType=fetch,o._fetchType=n(203)(o._fetchType,o._jar),1)?(this._fetchType=t._fetchType,this._jar=t._jar):this._fetchType=fetch.bind(function(){if("undefined"!=typeof globalThis)return globalThis;if("undefined"!=typeof self)return self;if("undefined"!=typeof window)return window;if(void 0!==n.g)return n.g;throw new Error("could not find global")}()),this._abortControllerType=AbortController;const r={_abortControllerType:this._abortControllerType};(function(e){return"undefined"==typeof AbortController&&(e._abortControllerType=n(778),!0)})(r)&&(this._abortControllerType=r._abortControllerType)}async send(e){if(e.abortSignal&&e.abortSignal.aborted)throw new nn;if(!e.method)throw new Error("No method defined.");if(!e.url)throw new Error("No url defined.");const t=new this._abortControllerType;let n;e.abortSignal&&(e.abortSignal.onabort=()=>{t.abort(),n=new nn});let o,r=null;if(e.timeout){const o=e.timeout;r=setTimeout((()=>{t.abort(),this._logger.log(Ot.Warning,"Timeout from HTTP request."),n=new tn}),o)}""===e.content&&(e.content=void 0),e.content&&(e.headers=e.headers||{},zt(e.content)?e.headers["Content-Type"]="application/octet-stream":e.headers["Content-Type"]="text/plain;charset=UTF-8");try{o=await this._fetchType(e.url,{body:e.content,cache:"no-cache",credentials:!0===e.withCredentials?"include":"same-origin",headers:{"X-Requested-With":"XMLHttpRequest",...e.headers},method:e.method,mode:"cors",redirect:"follow",signal:t.signal})}catch(e){if(n)throw n;throw this._logger.log(Ot.Warning,`Error from HTTP request. ${e}.`),e}finally{r&&clearTimeout(r),e.abortSignal&&(e.abortSignal.onabort=null)}if(!o.ok){const e=await Sn(o,"text");throw new en(e||o.statusText,o.status)}const i=Sn(o,e.responseType),s=await i;return new yn(o.status,o.statusText,s)}getCookieString(e){return""}}function Sn(e,t){let n;switch(t){case"arraybuffer":n=e.arrayBuffer();break;case"text":default:n=e.text();break;case"blob":case"document":case"json":throw new Error(`${t} is not supported.`)}return n}class Cn extends wn{constructor(e){super(),this._logger=e}send(e){return e.abortSignal&&e.abortSignal.aborted?Promise.reject(new nn):e.method?e.url?new Promise(((t,n)=>{const o=new XMLHttpRequest;o.open(e.method,e.url,!0),o.withCredentials=void 0===e.withCredentials||e.withCredentials,o.setRequestHeader("X-Requested-With","XMLHttpRequest"),""===e.content&&(e.content=void 0),e.content&&(zt(e.content)?o.setRequestHeader("Content-Type","application/octet-stream"):o.setRequestHeader("Content-Type","text/plain;charset=UTF-8"));const r=e.headers;r&&Object.keys(r).forEach((e=>{o.setRequestHeader(e,r[e])})),e.responseType&&(o.responseType=e.responseType),e.abortSignal&&(e.abortSignal.onabort=()=>{o.abort(),n(new nn)}),e.timeout&&(o.timeout=e.timeout),o.onload=()=>{e.abortSignal&&(e.abortSignal.onabort=null),o.status>=200&&o.status<300?t(new yn(o.status,o.statusText,o.response||o.responseText)):n(new en(o.response||o.responseText||o.statusText,o.status))},o.onerror=()=>{this._logger.log(Ot.Warning,`Error from HTTP request. ${o.status}: ${o.statusText}.`),n(new en(o.statusText,o.status))},o.ontimeout=()=>{this._logger.log(Ot.Warning,"Timeout from HTTP request."),n(new tn)},o.send(e.content)})):Promise.reject(new Error("No url defined.")):Promise.reject(new Error("No method defined."))}}class En extends wn{constructor(e){if(super(),"undefined"!=typeof fetch)this._httpClient=new _n(e);else{if("undefined"==typeof XMLHttpRequest)throw new Error("No usable HttpClient found.");this._httpClient=new Cn(e)}}send(e){return e.abortSignal&&e.abortSignal.aborted?Promise.reject(new nn):e.method?e.url?this._httpClient.send(e):Promise.reject(new Error("No url defined.")):Promise.reject(new Error("No method defined."))}getCookieString(e){return this._httpClient.getCookieString(e)}}var In,kn;!function(e){e[e.None=0]="None",e[e.WebSockets=1]="WebSockets",e[e.ServerSentEvents=2]="ServerSentEvents",e[e.LongPolling=4]="LongPolling"}(In||(In={})),function(e){e[e.Text=1]="Text",e[e.Binary=2]="Binary"}(kn||(kn={}));class Tn{constructor(){this._isAborted=!1,this.onabort=null}abort(){this._isAborted||(this._isAborted=!0,this.onabort&&this.onabort())}get signal(){return this}get aborted(){return this._isAborted}}class Rn{get pollAborted(){return this._pollAbort.aborted}constructor(e,t,n){this._httpClient=e,this._logger=t,this._pollAbort=new Tn,this._options=n,this._running=!1,this.onreceive=null,this.onclose=null}async connect(e,t){if(Ht.isRequired(e,"url"),Ht.isRequired(t,"transferFormat"),Ht.isIn(t,kn,"transferFormat"),this._url=e,this._logger.log(Ot.Trace,"(LongPolling transport) Connecting."),t===kn.Binary&&"undefined"!=typeof XMLHttpRequest&&"string"!=typeof(new XMLHttpRequest).responseType)throw new Error("Binary protocols over XmlHttpRequest not implementing advanced features are not supported.");const[n,o]=Vt(),r={[n]:o,...this._options.headers},i={abortSignal:this._pollAbort.signal,headers:r,timeout:1e5,withCredentials:this._options.withCredentials};t===kn.Binary&&(i.responseType="arraybuffer");const s=`${e}&_=${Date.now()}`;this._logger.log(Ot.Trace,`(LongPolling transport) polling: ${s}.`);const a=await this._httpClient.get(s,i);200!==a.statusCode?(this._logger.log(Ot.Error,`(LongPolling transport) Unexpected response code: ${a.statusCode}.`),this._closeError=new en(a.statusText||"",a.statusCode),this._running=!1):this._running=!0,this._receiving=this._poll(this._url,i)}async _poll(e,t){try{for(;this._running;)try{const n=`${e}&_=${Date.now()}`;this._logger.log(Ot.Trace,`(LongPolling transport) polling: ${n}.`);const o=await this._httpClient.get(n,t);204===o.statusCode?(this._logger.log(Ot.Information,"(LongPolling transport) Poll terminated by server."),this._running=!1):200!==o.statusCode?(this._logger.log(Ot.Error,`(LongPolling transport) Unexpected response code: ${o.statusCode}.`),this._closeError=new en(o.statusText||"",o.statusCode),this._running=!1):o.content?(this._logger.log(Ot.Trace,`(LongPolling transport) data received. ${jt(o.content,this._options.logMessageContent)}.`),this.onreceive&&this.onreceive(o.content)):this._logger.log(Ot.Trace,"(LongPolling transport) Poll timed out, reissuing.")}catch(e){this._running?e instanceof tn?this._logger.log(Ot.Trace,"(LongPolling transport) Poll timed out, reissuing."):(this._closeError=e,this._running=!1):this._logger.log(Ot.Trace,`(LongPolling transport) Poll errored after shutdown: ${e.message}`)}}finally{this._logger.log(Ot.Trace,"(LongPolling transport) Polling complete."),this.pollAborted||this._raiseOnClose()}}async send(e){return this._running?qt(this._logger,"LongPolling",this._httpClient,this._url,e,this._options):Promise.reject(new Error("Cannot send until the transport is connected"))}async stop(){this._logger.log(Ot.Trace,"(LongPolling transport) Stopping polling."),this._running=!1,this._pollAbort.abort();try{await this._receiving,this._logger.log(Ot.Trace,`(LongPolling transport) sending DELETE request to ${this._url}.`);const e={},[t,n]=Vt();e[t]=n;const o={headers:{...e,...this._options.headers},timeout:this._options.timeout,withCredentials:this._options.withCredentials};let r;try{await this._httpClient.delete(this._url,o)}catch(e){r=e}r?r instanceof en&&(404===r.statusCode?this._logger.log(Ot.Trace,"(LongPolling transport) A 404 response was returned from sending a DELETE request."):this._logger.log(Ot.Trace,`(LongPolling transport) Error sending a DELETE request: ${r}`)):this._logger.log(Ot.Trace,"(LongPolling transport) DELETE request accepted.")}finally{this._logger.log(Ot.Trace,"(LongPolling transport) Stop finished."),this._raiseOnClose()}}_raiseOnClose(){if(this.onclose){let e="(LongPolling transport) Firing onclose event.";this._closeError&&(e+=" Error: "+this._closeError),this._logger.log(Ot.Trace,e),this.onclose(this._closeError)}}}class Dn{constructor(e,t,n,o){this._httpClient=e,this._accessToken=t,this._logger=n,this._options=o,this.onreceive=null,this.onclose=null}async connect(e,t){return Ht.isRequired(e,"url"),Ht.isRequired(t,"transferFormat"),Ht.isIn(t,kn,"transferFormat"),this._logger.log(Ot.Trace,"(SSE transport) Connecting."),this._url=e,this._accessToken&&(e+=(e.indexOf("?")<0?"?":"&")+`access_token=${encodeURIComponent(this._accessToken)}`),new Promise(((n,o)=>{let r,i=!1;if(t===kn.Text){if(Wt.isBrowser||Wt.isWebWorker)r=new this._options.EventSource(e,{withCredentials:this._options.withCredentials});else{const t=this._httpClient.getCookieString(e),n={};n.Cookie=t;const[o,i]=Vt();n[o]=i,r=new this._options.EventSource(e,{withCredentials:this._options.withCredentials,headers:{...n,...this._options.headers}})}try{r.onmessage=e=>{if(this.onreceive)try{this._logger.log(Ot.Trace,`(SSE transport) data received. ${jt(e.data,this._options.logMessageContent)}.`),this.onreceive(e.data)}catch(e){return void this._close(e)}},r.onerror=e=>{i?this._close():o(new Error("EventSource failed to connect. The connection could not be found on the server, either the connection ID is not present on the server, or a proxy is refusing/buffering the connection. If you have multiple servers check that sticky sessions are enabled."))},r.onopen=()=>{this._logger.log(Ot.Information,`SSE connected to ${this._url}`),this._eventSource=r,i=!0,n()}}catch(e){return void o(e)}}else o(new Error("The Server-Sent Events transport only supports the 'Text' transfer format"))}))}async send(e){return this._eventSource?qt(this._logger,"SSE",this._httpClient,this._url,e,this._options):Promise.reject(new Error("Cannot send until the transport is connected"))}stop(){return this._close(),Promise.resolve()}_close(e){this._eventSource&&(this._eventSource.close(),this._eventSource=void 0,this.onclose&&this.onclose(e))}}class An{constructor(e,t,n,o,r,i){this._logger=n,this._accessTokenFactory=t,this._logMessageContent=o,this._webSocketConstructor=r,this._httpClient=e,this.onreceive=null,this.onclose=null,this._headers=i}async connect(e,t){let n;return Ht.isRequired(e,"url"),Ht.isRequired(t,"transferFormat"),Ht.isIn(t,kn,"transferFormat"),this._logger.log(Ot.Trace,"(WebSockets transport) Connecting."),this._accessTokenFactory&&(n=await this._accessTokenFactory()),new Promise(((o,r)=>{let i;e=e.replace(/^http/,"ws");const s=this._httpClient.getCookieString(e);let a=!1;if(Wt.isReactNative){const t={},[o,r]=Vt();t[o]=r,n&&(t[vn.Authorization]=`Bearer ${n}`),s&&(t[vn.Cookie]=s),i=new this._webSocketConstructor(e,void 0,{headers:{...t,...this._headers}})}else n&&(e+=(e.indexOf("?")<0?"?":"&")+`access_token=${encodeURIComponent(n)}`);i||(i=new this._webSocketConstructor(e)),t===kn.Binary&&(i.binaryType="arraybuffer"),i.onopen=t=>{this._logger.log(Ot.Information,`WebSocket connected to ${e}.`),this._webSocket=i,a=!0,o()},i.onerror=e=>{let t=null;t="undefined"!=typeof ErrorEvent&&e instanceof ErrorEvent?e.error:"There was an error with the transport",this._logger.log(Ot.Information,`(WebSockets transport) ${t}.`)},i.onmessage=e=>{if(this._logger.log(Ot.Trace,`(WebSockets transport) data received. ${jt(e.data,this._logMessageContent)}.`),this.onreceive)try{this.onreceive(e.data)}catch(e){return void this._close(e)}},i.onclose=e=>{if(a)this._close(e);else{let t=null;t="undefined"!=typeof ErrorEvent&&e instanceof ErrorEvent?e.error:"WebSocket failed to connect. The connection could not be found on the server, either the endpoint may not be a SignalR endpoint, the connection ID is not present on the server, or there is a proxy blocking WebSockets. If you have multiple servers check that sticky sessions are enabled.",r(new Error(t))}}}))}send(e){return this._webSocket&&this._webSocket.readyState===this._webSocketConstructor.OPEN?(this._logger.log(Ot.Trace,`(WebSockets transport) sending data. ${jt(e,this._logMessageContent)}.`),this._webSocket.send(e),Promise.resolve()):Promise.reject("WebSocket is not in the OPEN state")}stop(){return this._webSocket&&this._close(void 0),Promise.resolve()}_close(e){this._webSocket&&(this._webSocket.onclose=()=>{},this._webSocket.onmessage=()=>{},this._webSocket.onerror=()=>{},this._webSocket.close(),this._webSocket=void 0),this._logger.log(Ot.Trace,"(WebSockets transport) socket closed."),this.onclose&&(!this._isCloseEvent(e)||!1!==e.wasClean&&1e3===e.code?e instanceof Error?this.onclose(e):this.onclose():this.onclose(new Error(`WebSocket closed with status code: ${e.code} (${e.reason||"no reason given"}).`)))}_isCloseEvent(e){return e&&"boolean"==typeof e.wasClean&&"number"==typeof e.code}}class xn{constructor(e,t={}){if(this._stopPromiseResolver=()=>{},this.features={},this._negotiateVersion=1,Ht.isRequired(e,"url"),this._logger=function(e){return void 0===e?new Kt(Ot.Information):null===e?Ft.instance:void 0!==e.log?e:new Kt(e)}(t.logger),this.baseUrl=this._resolveUrl(e),(t=t||{}).logMessageContent=void 0!==t.logMessageContent&&t.logMessageContent,"boolean"!=typeof t.withCredentials&&void 0!==t.withCredentials)throw new Error("withCredentials option was not a 'boolean' or 'undefined' value");t.withCredentials=void 0===t.withCredentials||t.withCredentials,t.timeout=void 0===t.timeout?1e5:t.timeout,"undefined"==typeof WebSocket||t.WebSocket||(t.WebSocket=WebSocket),"undefined"==typeof EventSource||t.EventSource||(t.EventSource=EventSource),this._httpClient=new bn(t.httpClient||new En(this._logger),t.accessTokenFactory),this._connectionState="Disconnected",this._connectionStarted=!1,this._options=t,this.onreceive=null,this.onclose=null}async start(e){if(e=e||kn.Binary,Ht.isIn(e,kn,"transferFormat"),this._logger.log(Ot.Debug,`Starting connection with transfer format '${kn[e]}'.`),"Disconnected"!==this._connectionState)return Promise.reject(new Error("Cannot start an HttpConnection that is not in the 'Disconnected' state."));if(this._connectionState="Connecting",this._startInternalPromise=this._startInternal(e),await this._startInternalPromise,"Disconnecting"===this._connectionState){const e="Failed to start the HttpConnection before stop() was called.";return this._logger.log(Ot.Error,e),await this._stopPromise,Promise.reject(new nn(e))}if("Connected"!==this._connectionState){const e="HttpConnection.startInternal completed gracefully but didn't enter the connection into the connected state!";return this._logger.log(Ot.Error,e),Promise.reject(new nn(e))}this._connectionStarted=!0}send(e){return"Connected"!==this._connectionState?Promise.reject(new Error("Cannot send data if the connection is not in the 'Connected' State.")):(this._sendQueue||(this._sendQueue=new Nn(this.transport)),this._sendQueue.send(e))}async stop(e){return"Disconnected"===this._connectionState?(this._logger.log(Ot.Debug,`Call to HttpConnection.stop(${e}) ignored because the connection is already in the disconnected state.`),Promise.resolve()):"Disconnecting"===this._connectionState?(this._logger.log(Ot.Debug,`Call to HttpConnection.stop(${e}) ignored because the connection is already in the disconnecting state.`),this._stopPromise):(this._connectionState="Disconnecting",this._stopPromise=new Promise((e=>{this._stopPromiseResolver=e})),await this._stopInternal(e),void await this._stopPromise)}async _stopInternal(e){this._stopError=e;try{await this._startInternalPromise}catch(e){}if(this.transport){try{await this.transport.stop()}catch(e){this._logger.log(Ot.Error,`HttpConnection.transport.stop() threw error '${e}'.`),this._stopConnection()}this.transport=void 0}else this._logger.log(Ot.Debug,"HttpConnection.transport is undefined in HttpConnection.stop() because start() failed.")}async _startInternal(e){let t=this.baseUrl;this._accessTokenFactory=this._options.accessTokenFactory,this._httpClient._accessTokenFactory=this._accessTokenFactory;try{if(this._options.skipNegotiation){if(this._options.transport!==In.WebSockets)throw new Error("Negotiation can only be skipped when using the WebSocket transport directly.");this.transport=this._constructTransport(In.WebSockets),await this._startTransport(t,e)}else{let n=null,o=0;do{if(n=await this._getNegotiationResponse(t),"Disconnecting"===this._connectionState||"Disconnected"===this._connectionState)throw new nn("The connection was stopped during negotiation.");if(n.error)throw new Error(n.error);if(n.ProtocolVersion)throw new Error("Detected a connection attempt to an ASP.NET SignalR Server. This client only supports connecting to an ASP.NET Core SignalR Server. See https://aka.ms/signalr-core-differences for details.");if(n.url&&(t=n.url),n.accessToken){const e=n.accessToken;this._accessTokenFactory=()=>e,this._httpClient._accessToken=e,this._httpClient._accessTokenFactory=void 0}o++}while(n.url&&o<100);if(100===o&&n.url)throw new Error("Negotiate redirection limit exceeded.");await this._createTransport(t,this._options.transport,n,e)}this.transport instanceof Rn&&(this.features.inherentKeepAlive=!0),"Connecting"===this._connectionState&&(this._logger.log(Ot.Debug,"The HttpConnection connected successfully."),this._connectionState="Connected")}catch(e){return this._logger.log(Ot.Error,"Failed to start the connection: "+e),this._connectionState="Disconnected",this.transport=void 0,this._stopPromiseResolver(),Promise.reject(e)}}async _getNegotiationResponse(e){const t={},[n,o]=Vt();t[n]=o;const r=this._resolveNegotiateUrl(e);this._logger.log(Ot.Debug,`Sending negotiation request: ${r}.`);try{const e=await this._httpClient.post(r,{content:"",headers:{...t,...this._options.headers},timeout:this._options.timeout,withCredentials:this._options.withCredentials});if(200!==e.statusCode)return Promise.reject(new Error(`Unexpected status code returned from negotiate '${e.statusCode}'`));const n=JSON.parse(e.content);return(!n.negotiateVersion||n.negotiateVersion<1)&&(n.connectionToken=n.connectionId),n.useStatefulReconnect&&!0!==this._options._useStatefulReconnect?Promise.reject(new an("Client didn't negotiate Stateful Reconnect but the server did.")):n}catch(e){let t="Failed to complete negotiation with the server: "+e;return e instanceof en&&404===e.statusCode&&(t+=" Either this is not a SignalR endpoint or there is a proxy blocking the connection."),this._logger.log(Ot.Error,t),Promise.reject(new an(t))}}_createConnectUrl(e,t){return t?e+(-1===e.indexOf("?")?"?":"&")+`id=${t}`:e}async _createTransport(e,t,n,o){let r=this._createConnectUrl(e,n.connectionToken);if(this._isITransport(t))return this._logger.log(Ot.Debug,"Connection was provided an instance of ITransport, using that directly."),this.transport=t,await this._startTransport(r,o),void(this.connectionId=n.connectionId);const i=[],s=n.availableTransports||[];let a=n;for(const n of s){const s=this._resolveTransportOrError(n,t,o,!0===(null==a?void 0:a.useStatefulReconnect));if(s instanceof Error)i.push(`${n.transport} failed:`),i.push(s);else if(this._isITransport(s)){if(this.transport=s,!a){try{a=await this._getNegotiationResponse(e)}catch(e){return Promise.reject(e)}r=this._createConnectUrl(e,a.connectionToken)}try{return await this._startTransport(r,o),void(this.connectionId=a.connectionId)}catch(e){if(this._logger.log(Ot.Error,`Failed to start the transport '${n.transport}': ${e}`),a=void 0,i.push(new sn(`${n.transport} failed: ${e}`,In[n.transport])),"Connecting"!==this._connectionState){const e="Failed to select transport before stop() was called.";return this._logger.log(Ot.Debug,e),Promise.reject(new nn(e))}}}}return i.length>0?Promise.reject(new cn(`Unable to connect to the server with any of the available transports. ${i.join(" ")}`,i)):Promise.reject(new Error("None of the transports supported by the client are supported by the server."))}_constructTransport(e){switch(e){case In.WebSockets:if(!this._options.WebSocket)throw new Error("'WebSocket' is not supported in your environment.");return new An(this._httpClient,this._accessTokenFactory,this._logger,this._options.logMessageContent,this._options.WebSocket,this._options.headers||{});case In.ServerSentEvents:if(!this._options.EventSource)throw new Error("'EventSource' is not supported in your environment.");return new Dn(this._httpClient,this._httpClient._accessToken,this._logger,this._options);case In.LongPolling:return new Rn(this._httpClient,this._logger,this._options);default:throw new Error(`Unknown transport: ${e}.`)}}_startTransport(e,t){return this.transport.onreceive=this.onreceive,this.features.reconnect?this.transport.onclose=async n=>{let o=!1;if(this.features.reconnect){try{this.features.disconnected(),await this.transport.connect(e,t),await this.features.resend()}catch{o=!0}o&&this._stopConnection(n)}else this._stopConnection(n)}:this.transport.onclose=e=>this._stopConnection(e),this.transport.connect(e,t)}_resolveTransportOrError(e,t,n,o){const r=In[e.transport];if(null==r)return this._logger.log(Ot.Debug,`Skipping transport '${e.transport}' because it is not supported by this client.`),new Error(`Skipping transport '${e.transport}' because it is not supported by this client.`);if(!function(e,t){return!e||0!=(t&e)}(t,r))return this._logger.log(Ot.Debug,`Skipping transport '${In[r]}' because it was disabled by the client.`),new rn(`'${In[r]}' is disabled by the client.`,r);if(!(e.transferFormats.map((e=>kn[e])).indexOf(n)>=0))return this._logger.log(Ot.Debug,`Skipping transport '${In[r]}' because it does not support the requested transfer format '${kn[n]}'.`),new Error(`'${In[r]}' does not support ${kn[n]}.`);if(r===In.WebSockets&&!this._options.WebSocket||r===In.ServerSentEvents&&!this._options.EventSource)return this._logger.log(Ot.Debug,`Skipping transport '${In[r]}' because it is not supported in your environment.'`),new on(`'${In[r]}' is not supported in your environment.`,r);this._logger.log(Ot.Debug,`Selecting transport '${In[r]}'.`);try{return this.features.reconnect=r===In.WebSockets?o:void 0,this._constructTransport(r)}catch(e){return e}}_isITransport(e){return e&&"object"==typeof e&&"connect"in e}_stopConnection(e){if(this._logger.log(Ot.Debug,`HttpConnection.stopConnection(${e}) called while in state ${this._connectionState}.`),this.transport=void 0,e=this._stopError||e,this._stopError=void 0,"Disconnected"!==this._connectionState){if("Connecting"===this._connectionState)throw this._logger.log(Ot.Warning,`Call to HttpConnection.stopConnection(${e}) was ignored because the connection is still in the connecting state.`),new Error(`HttpConnection.stopConnection(${e}) was called while the connection is still in the connecting state.`);if("Disconnecting"===this._connectionState&&this._stopPromiseResolver(),e?this._logger.log(Ot.Error,`Connection disconnected with error '${e}'.`):this._logger.log(Ot.Information,"Connection disconnected."),this._sendQueue&&(this._sendQueue.stop().catch((e=>{this._logger.log(Ot.Error,`TransportSendQueue.stop() threw error '${e}'.`)})),this._sendQueue=void 0),this.connectionId=void 0,this._connectionState="Disconnected",this._connectionStarted){this._connectionStarted=!1;try{this.onclose&&this.onclose(e)}catch(t){this._logger.log(Ot.Error,`HttpConnection.onclose(${e}) threw error '${t}'.`)}}}else this._logger.log(Ot.Debug,`Call to HttpConnection.stopConnection(${e}) was ignored because the connection is already in the disconnected state.`)}_resolveUrl(e){if(0===e.lastIndexOf("https://",0)||0===e.lastIndexOf("http://",0))return e;if(!Wt.isBrowser)throw new Error(`Cannot resolve '${e}'.`);const t=window.document.createElement("a");return t.href=e,this._logger.log(Ot.Information,`Normalizing '${e}' to '${t.href}'.`),t.href}_resolveNegotiateUrl(e){const t=new URL(e);t.pathname.endsWith("/")?t.pathname+="negotiate":t.pathname+="/negotiate";const n=new URLSearchParams(t.searchParams);return n.has("negotiateVersion")||n.append("negotiateVersion",this._negotiateVersion.toString()),n.has("useStatefulReconnect")?"true"===n.get("useStatefulReconnect")&&(this._options._useStatefulReconnect=!0):!0===this._options._useStatefulReconnect&&n.append("useStatefulReconnect","true"),t.search=n.toString(),t.toString()}}class Nn{constructor(e){this._transport=e,this._buffer=[],this._executing=!0,this._sendBufferedData=new Pn,this._transportResult=new Pn,this._sendLoopPromise=this._sendLoop()}send(e){return this._bufferData(e),this._transportResult||(this._transportResult=new Pn),this._transportResult.promise}stop(){return this._executing=!1,this._sendBufferedData.resolve(),this._sendLoopPromise}_bufferData(e){if(this._buffer.length&&typeof this._buffer[0]!=typeof e)throw new Error(`Expected data to be of type ${typeof this._buffer} but was of type ${typeof e}`);this._buffer.push(e),this._sendBufferedData.resolve()}async _sendLoop(){for(;;){if(await this._sendBufferedData.promise,!this._executing){this._transportResult&&this._transportResult.reject("Connection stopped.");break}this._sendBufferedData=new Pn;const e=this._transportResult;this._transportResult=void 0;const t="string"==typeof this._buffer[0]?this._buffer.join(""):Nn._concatBuffers(this._buffer);this._buffer.length=0;try{await this._transport.send(t),e.resolve()}catch(t){e.reject(t)}}}static _concatBuffers(e){const t=e.map((e=>e.byteLength)).reduce(((e,t)=>e+t)),n=new Uint8Array(t);let o=0;for(const t of e)n.set(new Uint8Array(t),o),o+=t.byteLength;return n.buffer}}class Pn{constructor(){this.promise=new Promise(((e,t)=>[this._resolver,this._rejecter]=[e,t]))}resolve(){this._resolver()}reject(e){this._rejecter(e)}}class Mn{constructor(){this.name="json",this.version=2,this.transferFormat=kn.Text}parseMessages(e,t){if("string"!=typeof e)throw new Error("Invalid input for JSON hub protocol. Expected a string.");if(!e)return[];null===t&&(t=Ft.instance);const n=Bt.parse(e),o=[];for(const e of n){const n=JSON.parse(e);if("number"!=typeof n.type)throw new Error("Invalid payload.");switch(n.type){case ln.Invocation:this._isInvocationMessage(n);break;case ln.StreamItem:this._isStreamItemMessage(n);break;case ln.Completion:this._isCompletionMessage(n);break;case ln.Ping:case ln.Close:break;case ln.Ack:this._isAckMessage(n);break;case ln.Sequence:this._isSequenceMessage(n);break;default:t.log(Ot.Information,"Unknown message type '"+n.type+"' ignored.");continue}o.push(n)}return o}writeMessage(e){return Bt.write(JSON.stringify(e))}_isInvocationMessage(e){this._assertNotEmptyString(e.target,"Invalid payload for Invocation message."),void 0!==e.invocationId&&this._assertNotEmptyString(e.invocationId,"Invalid payload for Invocation message.")}_isStreamItemMessage(e){if(this._assertNotEmptyString(e.invocationId,"Invalid payload for StreamItem message."),void 0===e.item)throw new Error("Invalid payload for StreamItem message.")}_isCompletionMessage(e){if(e.result&&e.error)throw new Error("Invalid payload for Completion message.");!e.result&&e.error&&this._assertNotEmptyString(e.error,"Invalid payload for Completion message."),this._assertNotEmptyString(e.invocationId,"Invalid payload for Completion message.")}_isAckMessage(e){if("number"!=typeof e.sequenceId)throw new Error("Invalid SequenceId for Ack message.")}_isSequenceMessage(e){if("number"!=typeof e.sequenceId)throw new Error("Invalid SequenceId for Sequence message.")}_assertNotEmptyString(e,t){if("string"!=typeof e||""===e)throw new Error(t)}}const Un={trace:Ot.Trace,debug:Ot.Debug,info:Ot.Information,information:Ot.Information,warn:Ot.Warning,warning:Ot.Warning,error:Ot.Error,critical:Ot.Critical,none:Ot.None};class Ln{configureLogging(e){if(Ht.isRequired(e,"logging"),function(e){return void 0!==e.log}(e))this.logger=e;else if("string"==typeof e){const t=function(e){const t=Un[e.toLowerCase()];if(void 0!==t)return t;throw new Error(`Unknown log level: ${e}`)}(e);this.logger=new Kt(t)}else this.logger=new Kt(e);return this}withUrl(e,t){return Ht.isRequired(e,"url"),Ht.isNotEmpty(e,"url"),this.url=e,this.httpConnectionOptions="object"==typeof t?{...this.httpConnectionOptions,...t}:{...this.httpConnectionOptions,transport:t},this}withHubProtocol(e){return Ht.isRequired(e,"protocol"),this.protocol=e,this}withAutomaticReconnect(e){if(this.reconnectPolicy)throw new Error("A reconnectPolicy has already been set.");return e?Array.isArray(e)?this.reconnectPolicy=new mn(e):this.reconnectPolicy=e:this.reconnectPolicy=new mn,this}withServerTimeout(e){return Ht.isRequired(e,"milliseconds"),this._serverTimeoutInMilliseconds=e,this}withKeepAliveInterval(e){return Ht.isRequired(e,"milliseconds"),this._keepAliveIntervalInMilliseconds=e,this}withStatefulReconnect(e){return void 0===this.httpConnectionOptions&&(this.httpConnectionOptions={}),this.httpConnectionOptions._useStatefulReconnect=!0,this._statefulReconnectBufferSize=null==e?void 0:e.bufferSize,this}build(){const e=this.httpConnectionOptions||{};if(void 0===e.logger&&(e.logger=this.logger),!this.url)throw new Error("The 'HubConnectionBuilder.withUrl' method must be called before building the connection.");const t=new xn(this.url,e);return fn.create(t,this.logger||Ft.instance,this.protocol||new Mn,this.reconnectPolicy,this._serverTimeoutInMilliseconds,this._keepAliveIntervalInMilliseconds,this._statefulReconnectBufferSize)}}var Bn;!function(e){e[e.Default=0]="Default",e[e.Server=1]="Server",e[e.WebAssembly=2]="WebAssembly",e[e.WebView=3]="WebView"}(Bn||(Bn={}));var On,Fn,$n,Hn=4294967295;function Wn(e,t,n){var o=Math.floor(n/4294967296),r=n;e.setUint32(t,o),e.setUint32(t+4,r)}function jn(e,t){return 4294967296*e.getInt32(t)+e.getUint32(t+4)}var zn=("undefined"==typeof process||"never"!==(null===(On=null===process||void 0===process?void 0:process.env)||void 0===On?void 0:On.TEXT_ENCODING))&&"undefined"!=typeof TextEncoder&&"undefined"!=typeof TextDecoder;function qn(e){for(var t=e.length,n=0,o=0;o=55296&&r<=56319&&o65535&&(h-=65536,i.push(h>>>10&1023|55296),h=56320|1023&h),i.push(h)}else i.push(a);i.length>=4096&&(s+=String.fromCharCode.apply(String,i),i.length=0)}return i.length>0&&(s+=String.fromCharCode.apply(String,i)),s}var Gn,Yn=zn?new TextDecoder:null,Qn=zn?"undefined"!=typeof process&&"force"!==(null===($n=null===process||void 0===process?void 0:process.env)||void 0===$n?void 0:$n.TEXT_DECODER)?200:0:Hn,Zn=function(e,t){this.type=e,this.data=t},eo=(Gn=function(e,t){return Gn=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},Gn(e,t)},function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function n(){this.constructor=e}Gn(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}),to=function(e){function t(n){var o=e.call(this,n)||this,r=Object.create(t.prototype);return Object.setPrototypeOf(o,r),Object.defineProperty(o,"name",{configurable:!0,enumerable:!1,value:t.name}),o}return eo(t,e),t}(Error),no={type:-1,encode:function(e){var t,n,o,r;return e instanceof Date?function(e){var t,n=e.sec,o=e.nsec;if(n>=0&&o>=0&&n<=17179869183){if(0===o&&n<=4294967295){var r=new Uint8Array(4);return(t=new DataView(r.buffer)).setUint32(0,n),r}var i=n/4294967296,s=4294967295&n;return r=new Uint8Array(8),(t=new DataView(r.buffer)).setUint32(0,o<<2|3&i),t.setUint32(4,s),r}return r=new Uint8Array(12),(t=new DataView(r.buffer)).setUint32(0,o),Wn(t,4,n),r}((o=1e6*((t=e.getTime())-1e3*(n=Math.floor(t/1e3))),{sec:n+(r=Math.floor(o/1e9)),nsec:o-1e9*r})):null},decode:function(e){var t=function(e){var t=new DataView(e.buffer,e.byteOffset,e.byteLength);switch(e.byteLength){case 4:return{sec:t.getUint32(0),nsec:0};case 8:var n=t.getUint32(0);return{sec:4294967296*(3&n)+t.getUint32(4),nsec:n>>>2};case 12:return{sec:jn(t,4),nsec:t.getUint32(0)};default:throw new to("Unrecognized data size for timestamp (expected 4, 8, or 12): ".concat(e.length))}}(e);return new Date(1e3*t.sec+t.nsec/1e6)}},oo=function(){function e(){this.builtInEncoders=[],this.builtInDecoders=[],this.encoders=[],this.decoders=[],this.register(no)}return e.prototype.register=function(e){var t=e.type,n=e.encode,o=e.decode;if(t>=0)this.encoders[t]=n,this.decoders[t]=o;else{var r=1+t;this.builtInEncoders[r]=n,this.builtInDecoders[r]=o}},e.prototype.tryToEncode=function(e,t){for(var n=0;nthis.maxDepth)throw new Error("Too deep objects in depth ".concat(t));null==e?this.encodeNil():"boolean"==typeof e?this.encodeBoolean(e):"number"==typeof e?this.encodeNumber(e):"string"==typeof e?this.encodeString(e):this.encodeObject(e,t)},e.prototype.ensureBufferSizeToWrite=function(e){var t=this.pos+e;this.view.byteLength=0?e<128?this.writeU8(e):e<256?(this.writeU8(204),this.writeU8(e)):e<65536?(this.writeU8(205),this.writeU16(e)):e<4294967296?(this.writeU8(206),this.writeU32(e)):(this.writeU8(207),this.writeU64(e)):e>=-32?this.writeU8(224|e+32):e>=-128?(this.writeU8(208),this.writeI8(e)):e>=-32768?(this.writeU8(209),this.writeI16(e)):e>=-2147483648?(this.writeU8(210),this.writeI32(e)):(this.writeU8(211),this.writeI64(e)):this.forceFloat32?(this.writeU8(202),this.writeF32(e)):(this.writeU8(203),this.writeF64(e))},e.prototype.writeStringHeader=function(e){if(e<32)this.writeU8(160+e);else if(e<256)this.writeU8(217),this.writeU8(e);else if(e<65536)this.writeU8(218),this.writeU16(e);else{if(!(e<4294967296))throw new Error("Too long string: ".concat(e," bytes in UTF-8"));this.writeU8(219),this.writeU32(e)}},e.prototype.encodeString=function(e){if(e.length>Kn){var t=qn(e);this.ensureBufferSizeToWrite(5+t),this.writeStringHeader(t),Vn(e,this.bytes,this.pos),this.pos+=t}else t=qn(e),this.ensureBufferSizeToWrite(5+t),this.writeStringHeader(t),function(e,t,n){for(var o=e.length,r=n,i=0;i>6&31|192;else{if(s>=55296&&s<=56319&&i>12&15|224,t[r++]=s>>6&63|128):(t[r++]=s>>18&7|240,t[r++]=s>>12&63|128,t[r++]=s>>6&63|128)}t[r++]=63&s|128}else t[r++]=s}}(e,this.bytes,this.pos),this.pos+=t},e.prototype.encodeObject=function(e,t){var n=this.extensionCodec.tryToEncode(e,this.context);if(null!=n)this.encodeExtension(n);else if(Array.isArray(e))this.encodeArray(e,t);else if(ArrayBuffer.isView(e))this.encodeBinary(e);else{if("object"!=typeof e)throw new Error("Unrecognized object: ".concat(Object.prototype.toString.apply(e)));this.encodeMap(e,t)}},e.prototype.encodeBinary=function(e){var t=e.byteLength;if(t<256)this.writeU8(196),this.writeU8(t);else if(t<65536)this.writeU8(197),this.writeU16(t);else{if(!(t<4294967296))throw new Error("Too large binary: ".concat(t));this.writeU8(198),this.writeU32(t)}var n=ro(e);this.writeU8a(n)},e.prototype.encodeArray=function(e,t){var n=e.length;if(n<16)this.writeU8(144+n);else if(n<65536)this.writeU8(220),this.writeU16(n);else{if(!(n<4294967296))throw new Error("Too large array: ".concat(n));this.writeU8(221),this.writeU32(n)}for(var o=0,r=e;o0&&e<=this.maxKeyLength},e.prototype.find=function(e,t,n){e:for(var o=0,r=this.caches[n-1];o=this.maxLengthPerKey?n[Math.random()*n.length|0]=o:n.push(o)},e.prototype.decode=function(e,t,n){var o=this.find(e,t,n);if(null!=o)return this.hit++,o;this.miss++;var r=Xn(e,t,n),i=Uint8Array.prototype.slice.call(e,t,t+n);return this.store(i,r),r},e}(),co=function(e,t){var n,o,r,i,s={label:0,sent:function(){if(1&r[0])throw r[1];return r[1]},trys:[],ops:[]};return i={next:a(0),throw:a(1),return:a(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function a(i){return function(a){return function(i){if(n)throw new TypeError("Generator is already executing.");for(;s;)try{if(n=1,o&&(r=2&i[0]?o.return:i[0]?o.throw||((r=o.return)&&r.call(o),0):o.next)&&!(r=r.call(o,i[1])).done)return r;switch(o=0,r&&(i=[2&i[0],r.value]),i[0]){case 0:case 1:r=i;break;case 4:return s.label++,{value:i[1],done:!1};case 5:s.label++,o=i[1],i=[0];continue;case 7:i=s.ops.pop(),s.trys.pop();continue;default:if(!((r=(r=s.trys).length>0&&r[r.length-1])||6!==i[0]&&2!==i[0])){s=0;continue}if(3===i[0]&&(!r||i[1]>r[0]&&i[1]=e},e.prototype.createExtraByteError=function(e){var t=this.view,n=this.pos;return new RangeError("Extra ".concat(t.byteLength-n," of ").concat(t.byteLength," byte(s) found at buffer[").concat(e,"]"))},e.prototype.decode=function(e){this.reinitializeState(),this.setBuffer(e);var t=this.doDecodeSync();if(this.hasRemaining(1))throw this.createExtraByteError(this.pos);return t},e.prototype.decodeMulti=function(e){return co(this,(function(t){switch(t.label){case 0:this.reinitializeState(),this.setBuffer(e),t.label=1;case 1:return this.hasRemaining(1)?[4,this.doDecodeSync()]:[3,3];case 2:return t.sent(),[3,1];case 3:return[2]}}))},e.prototype.decodeAsync=function(e){var t,n,o,r,i,s,a;return i=this,void 0,a=function(){var i,s,a,c,l,h,d,u;return co(this,(function(p){switch(p.label){case 0:i=!1,p.label=1;case 1:p.trys.push([1,6,7,12]),t=lo(e),p.label=2;case 2:return[4,t.next()];case 3:if((n=p.sent()).done)return[3,5];if(a=n.value,i)throw this.createExtraByteError(this.totalPos);this.appendBuffer(a);try{s=this.doDecodeSync(),i=!0}catch(e){if(!(e instanceof fo))throw e}this.totalPos+=this.pos,p.label=4;case 4:return[3,2];case 5:return[3,12];case 6:return c=p.sent(),o={error:c},[3,12];case 7:return p.trys.push([7,,10,11]),n&&!n.done&&(r=t.return)?[4,r.call(t)]:[3,9];case 8:p.sent(),p.label=9;case 9:return[3,11];case 10:if(o)throw o.error;return[7];case 11:return[7];case 12:if(i){if(this.hasRemaining(1))throw this.createExtraByteError(this.totalPos);return[2,s]}throw h=(l=this).headByte,d=l.pos,u=l.totalPos,new RangeError("Insufficient data in parsing ".concat(so(h)," at ").concat(u," (").concat(d," in the current buffer)"))}}))},new((s=void 0)||(s=Promise))((function(e,t){function n(e){try{r(a.next(e))}catch(e){t(e)}}function o(e){try{r(a.throw(e))}catch(e){t(e)}}function r(t){var r;t.done?e(t.value):(r=t.value,r instanceof s?r:new s((function(e){e(r)}))).then(n,o)}r((a=a.apply(i,[])).next())}))},e.prototype.decodeArrayStream=function(e){return this.decodeMultiAsync(e,!0)},e.prototype.decodeStream=function(e){return this.decodeMultiAsync(e,!1)},e.prototype.decodeMultiAsync=function(e,t){return function(n,o,r){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var i,s=function(){var n,o,r,i,s,a,c,l,h;return co(this,(function(d){switch(d.label){case 0:n=t,o=-1,d.label=1;case 1:d.trys.push([1,13,14,19]),r=lo(e),d.label=2;case 2:return[4,ho(r.next())];case 3:if((i=d.sent()).done)return[3,12];if(s=i.value,t&&0===o)throw this.createExtraByteError(this.totalPos);this.appendBuffer(s),n&&(o=this.readArraySize(),n=!1,this.complete()),d.label=4;case 4:d.trys.push([4,9,,10]),d.label=5;case 5:return[4,ho(this.doDecodeSync())];case 6:return[4,d.sent()];case 7:return d.sent(),0==--o?[3,8]:[3,5];case 8:return[3,10];case 9:if(!((a=d.sent())instanceof fo))throw a;return[3,10];case 10:this.totalPos+=this.pos,d.label=11;case 11:return[3,2];case 12:return[3,19];case 13:return c=d.sent(),l={error:c},[3,19];case 14:return d.trys.push([14,,17,18]),i&&!i.done&&(h=r.return)?[4,ho(h.call(r))]:[3,16];case 15:d.sent(),d.label=16;case 16:return[3,18];case 17:if(l)throw l.error;return[7];case 18:return[7];case 19:return[2]}}))}.apply(n,o||[]),a=[];return i={},c("next"),c("throw"),c("return"),i[Symbol.asyncIterator]=function(){return this},i;function c(e){s[e]&&(i[e]=function(t){return new Promise((function(n,o){a.push([e,t,n,o])>1||l(e,t)}))})}function l(e,t){try{(n=s[e](t)).value instanceof ho?Promise.resolve(n.value.v).then(h,d):u(a[0][2],n)}catch(e){u(a[0][3],e)}var n}function h(e){l("next",e)}function d(e){l("throw",e)}function u(e,t){e(t),a.shift(),a.length&&l(a[0][0],a[0][1])}}(this,arguments)},e.prototype.doDecodeSync=function(){e:for(;;){var e=this.readHeadByte(),t=void 0;if(e>=224)t=e-256;else if(e<192)if(e<128)t=e;else if(e<144){if(0!=(o=e-128)){this.pushMapState(o),this.complete();continue e}t={}}else if(e<160){if(0!=(o=e-144)){this.pushArrayState(o),this.complete();continue e}t=[]}else{var n=e-160;t=this.decodeUtf8String(n,0)}else if(192===e)t=null;else if(194===e)t=!1;else if(195===e)t=!0;else if(202===e)t=this.readF32();else if(203===e)t=this.readF64();else if(204===e)t=this.readU8();else if(205===e)t=this.readU16();else if(206===e)t=this.readU32();else if(207===e)t=this.readU64();else if(208===e)t=this.readI8();else if(209===e)t=this.readI16();else if(210===e)t=this.readI32();else if(211===e)t=this.readI64();else if(217===e)n=this.lookU8(),t=this.decodeUtf8String(n,1);else if(218===e)n=this.lookU16(),t=this.decodeUtf8String(n,2);else if(219===e)n=this.lookU32(),t=this.decodeUtf8String(n,4);else if(220===e){if(0!==(o=this.readU16())){this.pushArrayState(o),this.complete();continue e}t=[]}else if(221===e){if(0!==(o=this.readU32())){this.pushArrayState(o),this.complete();continue e}t=[]}else if(222===e){if(0!==(o=this.readU16())){this.pushMapState(o),this.complete();continue e}t={}}else if(223===e){if(0!==(o=this.readU32())){this.pushMapState(o),this.complete();continue e}t={}}else if(196===e){var o=this.lookU8();t=this.decodeBinary(o,1)}else if(197===e)o=this.lookU16(),t=this.decodeBinary(o,2);else if(198===e)o=this.lookU32(),t=this.decodeBinary(o,4);else if(212===e)t=this.decodeExtension(1,0);else if(213===e)t=this.decodeExtension(2,0);else if(214===e)t=this.decodeExtension(4,0);else if(215===e)t=this.decodeExtension(8,0);else if(216===e)t=this.decodeExtension(16,0);else if(199===e)o=this.lookU8(),t=this.decodeExtension(o,1);else if(200===e)o=this.lookU16(),t=this.decodeExtension(o,2);else{if(201!==e)throw new to("Unrecognized type byte: ".concat(so(e)));o=this.lookU32(),t=this.decodeExtension(o,4)}this.complete();for(var r=this.stack;r.length>0;){var i=r[r.length-1];if(0===i.type){if(i.array[i.position]=t,i.position++,i.position!==i.size)continue e;r.pop(),t=i.array}else{if(1===i.type){if("string"!=(s=typeof t)&&"number"!==s)throw new to("The type of key must be string or number but "+typeof t);if("__proto__"===t)throw new to("The key __proto__ is not allowed");i.key=t,i.type=2;continue e}if(i.map[i.key]=t,i.readCount++,i.readCount!==i.size){i.key=null,i.type=1;continue e}r.pop(),t=i.map}}return t}var s},e.prototype.readHeadByte=function(){return-1===this.headByte&&(this.headByte=this.readU8()),this.headByte},e.prototype.complete=function(){this.headByte=-1},e.prototype.readArraySize=function(){var e=this.readHeadByte();switch(e){case 220:return this.readU16();case 221:return this.readU32();default:if(e<160)return e-144;throw new to("Unrecognized array type byte: ".concat(so(e)))}},e.prototype.pushMapState=function(e){if(e>this.maxMapLength)throw new to("Max length exceeded: map length (".concat(e,") > maxMapLengthLength (").concat(this.maxMapLength,")"));this.stack.push({type:1,size:e,key:null,readCount:0,map:{}})},e.prototype.pushArrayState=function(e){if(e>this.maxArrayLength)throw new to("Max length exceeded: array length (".concat(e,") > maxArrayLength (").concat(this.maxArrayLength,")"));this.stack.push({type:0,size:e,array:new Array(e),position:0})},e.prototype.decodeUtf8String=function(e,t){var n;if(e>this.maxStrLength)throw new to("Max length exceeded: UTF-8 byte length (".concat(e,") > maxStrLength (").concat(this.maxStrLength,")"));if(this.bytes.byteLengthQn?function(e,t,n){var o=e.subarray(t,t+n);return Yn.decode(o)}(this.bytes,r,e):Xn(this.bytes,r,e),this.pos+=t+e,o},e.prototype.stateIsMapKey=function(){return this.stack.length>0&&1===this.stack[this.stack.length-1].type},e.prototype.decodeBinary=function(e,t){if(e>this.maxBinLength)throw new to("Max length exceeded: bin length (".concat(e,") > maxBinLength (").concat(this.maxBinLength,")"));if(!this.hasRemaining(e+t))throw go;var n=this.pos+t,o=this.bytes.subarray(n,n+e);return this.pos+=t+e,o},e.prototype.decodeExtension=function(e,t){if(e>this.maxExtLength)throw new to("Max length exceeded: ext length (".concat(e,") > maxExtLength (").concat(this.maxExtLength,")"));var n=this.view.getInt8(this.pos+t),o=this.decodeBinary(e,t+1);return this.extensionCodec.decode(o,n,this.context)},e.prototype.lookU8=function(){return this.view.getUint8(this.pos)},e.prototype.lookU16=function(){return this.view.getUint16(this.pos)},e.prototype.lookU32=function(){return this.view.getUint32(this.pos)},e.prototype.readU8=function(){var e=this.view.getUint8(this.pos);return this.pos++,e},e.prototype.readI8=function(){var e=this.view.getInt8(this.pos);return this.pos++,e},e.prototype.readU16=function(){var e=this.view.getUint16(this.pos);return this.pos+=2,e},e.prototype.readI16=function(){var e=this.view.getInt16(this.pos);return this.pos+=2,e},e.prototype.readU32=function(){var e=this.view.getUint32(this.pos);return this.pos+=4,e},e.prototype.readI32=function(){var e=this.view.getInt32(this.pos);return this.pos+=4,e},e.prototype.readU64=function(){var e,t,n=(e=this.view,t=this.pos,4294967296*e.getUint32(t)+e.getUint32(t+4));return this.pos+=8,n},e.prototype.readI64=function(){var e=jn(this.view,this.pos);return this.pos+=8,e},e.prototype.readF32=function(){var e=this.view.getFloat32(this.pos);return this.pos+=4,e},e.prototype.readF64=function(){var e=this.view.getFloat64(this.pos);return this.pos+=8,e},e}();class yo{static write(e){let t=e.byteLength||e.length;const n=[];do{let e=127&t;t>>=7,t>0&&(e|=128),n.push(e)}while(t>0);t=e.byteLength||e.length;const o=new Uint8Array(n.length+t);return o.set(n,0),o.set(e,n.length),o.buffer}static parse(e){const t=[],n=new Uint8Array(e),o=[0,7,14,21,28];for(let r=0;r7)throw new Error("Messages bigger than 2GB are not supported.");if(!(n.byteLength>=r+s+a))throw new Error("Incomplete message.");t.push(n.slice?n.slice(r+s,r+s+a):n.subarray(r+s,r+s+a)),r=r+s+a}return t}}const wo=new Uint8Array([145,ln.Ping]);class bo{constructor(e){this.name="messagepack",this.version=2,this.transferFormat=kn.Binary,this._errorResult=1,this._voidResult=2,this._nonVoidResult=3,e=e||{},this._encoder=new io(e.extensionCodec,e.context,e.maxDepth,e.initialBufferSize,e.sortKeys,e.forceFloat32,e.ignoreUndefined,e.forceIntegerToFloat),this._decoder=new vo(e.extensionCodec,e.context,e.maxStrLength,e.maxBinLength,e.maxArrayLength,e.maxMapLength,e.maxExtLength)}parseMessages(e,t){if(!(n=e)||"undefined"==typeof ArrayBuffer||!(n instanceof ArrayBuffer||n.constructor&&"ArrayBuffer"===n.constructor.name))throw new Error("Invalid input for MessagePack hub protocol. Expected an ArrayBuffer.");var n;null===t&&(t=Ft.instance);const o=yo.parse(e),r=[];for(const e of o){const n=this._parseMessage(e,t);n&&r.push(n)}return r}writeMessage(e){switch(e.type){case ln.Invocation:return this._writeInvocation(e);case ln.StreamInvocation:return this._writeStreamInvocation(e);case ln.StreamItem:return this._writeStreamItem(e);case ln.Completion:return this._writeCompletion(e);case ln.Ping:return yo.write(wo);case ln.CancelInvocation:return this._writeCancelInvocation(e);case ln.Close:return this._writeClose();case ln.Ack:return this._writeAck(e);case ln.Sequence:return this._writeSequence(e);default:throw new Error("Invalid message type.")}}_parseMessage(e,t){if(0===e.length)throw new Error("Invalid payload.");const n=this._decoder.decode(e);if(0===n.length||!(n instanceof Array))throw new Error("Invalid payload.");const o=n[0];switch(o){case ln.Invocation:return this._createInvocationMessage(this._readHeaders(n),n);case ln.StreamItem:return this._createStreamItemMessage(this._readHeaders(n),n);case ln.Completion:return this._createCompletionMessage(this._readHeaders(n),n);case ln.Ping:return this._createPingMessage(n);case ln.Close:return this._createCloseMessage(n);case ln.Ack:return this._createAckMessage(n);case ln.Sequence:return this._createSequenceMessage(n);default:return t.log(Ot.Information,"Unknown message type '"+o+"' ignored."),null}}_createCloseMessage(e){if(e.length<2)throw new Error("Invalid payload for Close message.");return{allowReconnect:e.length>=3?e[2]:void 0,error:e[1],type:ln.Close}}_createPingMessage(e){if(e.length<1)throw new Error("Invalid payload for Ping message.");return{type:ln.Ping}}_createInvocationMessage(e,t){if(t.length<5)throw new Error("Invalid payload for Invocation message.");const n=t[2];return n?{arguments:t[4],headers:e,invocationId:n,streamIds:[],target:t[3],type:ln.Invocation}:{arguments:t[4],headers:e,streamIds:[],target:t[3],type:ln.Invocation}}_createStreamItemMessage(e,t){if(t.length<4)throw new Error("Invalid payload for StreamItem message.");return{headers:e,invocationId:t[2],item:t[3],type:ln.StreamItem}}_createCompletionMessage(e,t){if(t.length<4)throw new Error("Invalid payload for Completion message.");const n=t[3];if(n!==this._voidResult&&t.length<5)throw new Error("Invalid payload for Completion message.");let o,r;switch(n){case this._errorResult:o=t[4];break;case this._nonVoidResult:r=t[4]}return{error:o,headers:e,invocationId:t[2],result:r,type:ln.Completion}}_createAckMessage(e){if(e.length<1)throw new Error("Invalid payload for Ack message.");return{sequenceId:e[1],type:ln.Ack}}_createSequenceMessage(e){if(e.length<1)throw new Error("Invalid payload for Sequence message.");return{sequenceId:e[1],type:ln.Sequence}}_writeInvocation(e){let t;return t=e.streamIds?this._encoder.encode([ln.Invocation,e.headers||{},e.invocationId||null,e.target,e.arguments,e.streamIds]):this._encoder.encode([ln.Invocation,e.headers||{},e.invocationId||null,e.target,e.arguments]),yo.write(t.slice())}_writeStreamInvocation(e){let t;return t=e.streamIds?this._encoder.encode([ln.StreamInvocation,e.headers||{},e.invocationId,e.target,e.arguments,e.streamIds]):this._encoder.encode([ln.StreamInvocation,e.headers||{},e.invocationId,e.target,e.arguments]),yo.write(t.slice())}_writeStreamItem(e){const t=this._encoder.encode([ln.StreamItem,e.headers||{},e.invocationId,e.item]);return yo.write(t.slice())}_writeCompletion(e){const t=e.error?this._errorResult:void 0!==e.result?this._nonVoidResult:this._voidResult;let n;switch(t){case this._errorResult:n=this._encoder.encode([ln.Completion,e.headers||{},e.invocationId,t,e.error]);break;case this._voidResult:n=this._encoder.encode([ln.Completion,e.headers||{},e.invocationId,t]);break;case this._nonVoidResult:n=this._encoder.encode([ln.Completion,e.headers||{},e.invocationId,t,e.result])}return yo.write(n.slice())}_writeCancelInvocation(e){const t=this._encoder.encode([ln.CancelInvocation,e.headers||{},e.invocationId]);return yo.write(t.slice())}_writeClose(){const e=this._encoder.encode([ln.Close,null]);return yo.write(e.slice())}_writeAck(e){const t=this._encoder.encode([ln.Ack,e.sequenceId]);return yo.write(t.slice())}_writeSequence(e){const t=this._encoder.encode([ln.Sequence,e.sequenceId]);return yo.write(t.slice())}_readHeaders(e){const t=e[1];if("object"!=typeof t)throw new Error("Invalid headers.");return t}}const _o="function"==typeof TextDecoder?new TextDecoder("utf-8"):null,So=_o?_o.decode.bind(_o):function(e){let t=0;const n=e.length,o=[],r=[];for(;t65535&&(r-=65536,o.push(r>>>10&1023|55296),r=56320|1023&r),o.push(r)}o.length>1024&&(r.push(String.fromCharCode.apply(null,o)),o.length=0)}return r.push(String.fromCharCode.apply(null,o)),r.join("")},Co=Math.pow(2,32),Eo=Math.pow(2,21)-1;function Io(e,t){return e[t]|e[t+1]<<8|e[t+2]<<16|e[t+3]<<24}function ko(e,t){return e[t]+(e[t+1]<<8)+(e[t+2]<<16)+(e[t+3]<<24>>>0)}function To(e,t){const n=ko(e,t+4);if(n>Eo)throw new Error(`Cannot read uint64 with high order part ${n}, because the result would exceed Number.MAX_SAFE_INTEGER.`);return n*Co+ko(e,t)}class Ro{constructor(e){this.batchData=e;const t=new No(e);this.arrayRangeReader=new Po(e),this.arrayBuilderSegmentReader=new Mo(e),this.diffReader=new Do(e),this.editReader=new Ao(e,t),this.frameReader=new xo(e,t)}updatedComponents(){return Io(this.batchData,this.batchData.length-20)}referenceFrames(){return Io(this.batchData,this.batchData.length-16)}disposedComponentIds(){return Io(this.batchData,this.batchData.length-12)}disposedEventHandlerIds(){return Io(this.batchData,this.batchData.length-8)}updatedComponentsEntry(e,t){const n=e+4*t;return Io(this.batchData,n)}referenceFramesEntry(e,t){return e+20*t}disposedComponentIdsEntry(e,t){const n=e+4*t;return Io(this.batchData,n)}disposedEventHandlerIdsEntry(e,t){const n=e+8*t;return To(this.batchData,n)}}class Do{constructor(e){this.batchDataUint8=e}componentId(e){return Io(this.batchDataUint8,e)}edits(e){return e+4}editsEntry(e,t){return e+16*t}}class Ao{constructor(e,t){this.batchDataUint8=e,this.stringReader=t}editType(e){return Io(this.batchDataUint8,e)}siblingIndex(e){return Io(this.batchDataUint8,e+4)}newTreeIndex(e){return Io(this.batchDataUint8,e+8)}moveToSiblingIndex(e){return Io(this.batchDataUint8,e+8)}removedAttributeName(e){const t=Io(this.batchDataUint8,e+12);return this.stringReader.readString(t)}}class xo{constructor(e,t){this.batchDataUint8=e,this.stringReader=t}frameType(e){return Io(this.batchDataUint8,e)}subtreeLength(e){return Io(this.batchDataUint8,e+4)}elementReferenceCaptureId(e){const t=Io(this.batchDataUint8,e+4);return this.stringReader.readString(t)}componentId(e){return Io(this.batchDataUint8,e+8)}elementName(e){const t=Io(this.batchDataUint8,e+8);return this.stringReader.readString(t)}textContent(e){const t=Io(this.batchDataUint8,e+4);return this.stringReader.readString(t)}markupContent(e){const t=Io(this.batchDataUint8,e+4);return this.stringReader.readString(t)}attributeName(e){const t=Io(this.batchDataUint8,e+4);return this.stringReader.readString(t)}attributeValue(e){const t=Io(this.batchDataUint8,e+8);return this.stringReader.readString(t)}attributeEventHandlerId(e){return To(this.batchDataUint8,e+12)}}class No{constructor(e){this.batchDataUint8=e,this.stringTableStartIndex=Io(e,e.length-4)}readString(e){if(-1===e)return null;{const n=Io(this.batchDataUint8,this.stringTableStartIndex+4*e),o=function(e,t){let n=0,o=0;for(let r=0;r<4;r++){const i=e[t+r];if(n|=(127&i)<this.nextBatchId)return this.fatalError?(this.logger.log(yt.Debug,`Received a new batch ${e} but errored out on a previous batch ${this.nextBatchId-1}`),void await n.send("OnRenderCompleted",this.nextBatchId-1,this.fatalError.toString())):void this.logger.log(yt.Debug,`Waiting for batch ${this.nextBatchId}. Batch ${e} not processed.`);try{this.nextBatchId++,this.logger.log(yt.Debug,`Applying batch ${e}.`),xe(Bn.Server,new Ro(t)),await this.completeBatch(n,e)}catch(t){throw this.fatalError=t.toString(),this.logger.log(yt.Error,`There was an error applying batch ${e}.`),n.send("OnRenderCompleted",e,t.toString()),t}}getLastBatchid(){return this.nextBatchId-1}async completeBatch(e,t){try{await e.send("OnRenderCompleted",t,null)}catch{this.logger.log(yt.Warning,`Failed to deliver completion notification for render '${t}'.`)}}}let Lo=!1;function Bo(){const e=document.querySelector("#blazor-error-ui");e&&(e.style.display="block"),Lo||(Lo=!0,document.querySelectorAll("#blazor-error-ui .reload").forEach((e=>{e.onclick=function(e){location.reload(),e.preventDefault()}})),document.querySelectorAll("#blazor-error-ui .dismiss").forEach((e=>{e.onclick=function(e){const t=document.querySelector("#blazor-error-ui");t&&(t.style.display="none"),e.preventDefault()}})))}class Oo{constructor(t,n,o,r){this._firstUpdate=!0,this._renderingFailed=!1,this._disposed=!1,this._circuitId=void 0,this._applicationState=n,this._componentManager=t,this._options=o,this._logger=r,this._renderQueue=new Uo(this._logger),this._dispatcher=e.attachDispatcher(this)}start(){if(this.isDisposedOrDisposing())throw new Error("Cannot start a disposed circuit.");return this._startPromise||(this._startPromise=this.startCore()),this._startPromise}updateRootComponents(e){var t,n;return this._firstUpdate?(this._firstUpdate=!1,null===(t=this._connection)||void 0===t?void 0:t.send("UpdateRootComponents",e,this._applicationState)):null===(n=this._connection)||void 0===n?void 0:n.send("UpdateRootComponents",e,"")}async startCore(){if(this._connection=await this.startConnection(),this._connection.state!==hn.Connected)return!1;const e=JSON.stringify(this._componentManager.initialComponents.map((e=>Ut(e))));if(this._circuitId=await this._connection.invoke("StartCircuit",Je.getBaseURI(),Je.getLocationHref(),e,this._applicationState||""),!this._circuitId)return!1;for(const e of this._options.circuitHandlers)e.onCircuitOpened&&e.onCircuitOpened();return!0}async startConnection(){var e,t;const n=new bo;n.name="blazorpack";const o=(new Ln).withUrl("_blazor").withHubProtocol(n);this._options.configureSignalR(o);const r=o.build();r.on("JS.AttachComponent",((e,t)=>De(Bn.Server,this.resolveElement(t),e,!1))),r.on("JS.BeginInvokeJS",this._dispatcher.beginInvokeJSFromDotNet.bind(this._dispatcher)),r.on("JS.EndInvokeDotNet",this._dispatcher.endInvokeDotNetFromJS.bind(this._dispatcher)),r.on("JS.ReceiveByteArray",this._dispatcher.receiveByteArray.bind(this._dispatcher)),r.on("JS.BeginTransmitStream",(e=>{const t=new ReadableStream({start:t=>{r.stream("SendDotNetStreamToJS",e).subscribe({next:e=>t.enqueue(e),complete:()=>t.close(),error:e=>t.error(e)})}});this._dispatcher.supplyDotNetStream(e,t)})),r.on("JS.RenderBatch",(async(e,t)=>{var n,o;this._logger.log(Ot.Debug,`Received render batch with id ${e} and ${t.byteLength} bytes.`),await this._renderQueue.processBatch(e,t,this._connection),null===(o=(n=this._componentManager).onAfterRenderBatch)||void 0===o||o.call(n,Bn.Server)})),r.on("JS.EndUpdateRootComponents",(e=>{var t,n;null===(n=(t=this._componentManager).onAfterUpdateRootComponents)||void 0===n||n.call(t,e)})),r.on("JS.EndLocationChanging",vt._internal.navigationManager.endLocationChanging),r.onclose((e=>{this._interopMethodsForReconnection=function(e){const t=C.get(e);if(!t)throw new Error(`Interop methods are not registered for renderer ${e}`);return C.delete(e),t}(Bn.Server),this._disposed||this._renderingFailed||this._options.reconnectionHandler.onConnectionDown(this._options.reconnectionOptions,e)})),r.on("JS.Error",(e=>{this._renderingFailed=!0,this.unhandledError(e),Bo()}));try{await r.start()}catch(e){if(this.unhandledError(e),"FailedToNegotiateWithServerError"===e.errorType)throw e;Bo(),e.innerErrors&&(e.innerErrors.some((e=>"UnsupportedTransportError"===e.errorType&&e.transport===In.WebSockets))?this._logger.log(Ot.Error,"Unable to connect, please ensure you are using an updated browser that supports WebSockets."):e.innerErrors.some((e=>"FailedToStartTransportError"===e.errorType&&e.transport===In.WebSockets))?this._logger.log(Ot.Error,"Unable to connect, please ensure WebSockets are available. A VPN or proxy may be blocking the connection."):e.innerErrors.some((e=>"DisabledTransportError"===e.errorType&&e.transport===In.LongPolling))&&this._logger.log(Ot.Error,"Unable to initiate a SignalR connection to the server. This might be because the server is not configured to support WebSockets. For additional details, visit https://aka.ms/blazor-server-websockets-error."))}return(null===(t=null===(e=r.connection)||void 0===e?void 0:e.features)||void 0===t?void 0:t.inherentKeepAlive)&&this._logger.log(Ot.Warning,"Failed to connect via WebSockets, using the Long Polling fallback transport. This may be due to a VPN or proxy blocking the connection. To troubleshoot this, visit https://aka.ms/blazor-server-using-fallback-long-polling."),r}async disconnect(){var e;await(null===(e=this._connection)||void 0===e?void 0:e.stop())}async reconnect(){if(!this._circuitId)throw new Error("Circuit host not initialized.");return this._connection.state===hn.Connected||(this._connection=await this.startConnection(),this._interopMethodsForReconnection&&(k(Bn.Server,this._interopMethodsForReconnection),this._interopMethodsForReconnection=void 0),!!await this._connection.invoke("ConnectCircuit",this._circuitId)&&(this._options.reconnectionHandler.onConnectionUp(),!0))}beginInvokeDotNetFromJS(e,t,n,o,r){this.throwIfDispatchingWhenDisposed(),this._connection.send("BeginInvokeDotNetFromJS",e?e.toString():null,t,n,o||0,r)}endInvokeJSFromDotNet(e,t,n){this.throwIfDispatchingWhenDisposed(),this._connection.send("EndInvokeJSFromDotNet",e,t,n)}sendByteArray(e,t){this.throwIfDispatchingWhenDisposed(),this._connection.send("ReceiveByteArray",e,t)}throwIfDispatchingWhenDisposed(){if(this._disposed)throw new Error("The circuit associated with this dispatcher is no longer available.")}sendLocationChanged(e,t,n){return this._connection.send("OnLocationChanged",e,t,n)}sendLocationChanging(e,t,n,o){return this._connection.send("OnLocationChanging",e,t,n,o)}sendJsDataStream(e,t,n){return function(e,t,n,o){setTimeout((async()=>{let r=5,i=(new Date).valueOf();try{const s=t instanceof Blob?t.size:t.byteLength;let a=0,c=0;for(;a1)await e.send("ReceiveJSDataChunk",n,c,h,null);else{if(!await e.invoke("ReceiveJSDataChunk",n,c,h,null))break;const t=(new Date).valueOf(),o=t-i;i=t,r=Math.max(1,Math.round(500/Math.max(1,o)))}a+=l,c++}}catch(t){await e.send("ReceiveJSDataChunk",n,-1,null,t.toString())}}),0)}(this._connection,e,t,n)}resolveElement(e){const t=w(e);if(t)return W(t,!0);const n=Number.parseInt(e);if(!Number.isNaN(n))return H(this._componentManager.resolveRootComponent(n));throw new Error(`Invalid sequence number or identifier '${e}'.`)}getRootComponentManager(){return this._componentManager}unhandledError(e){this._logger.log(Ot.Error,e),this.disconnect()}getDisconnectFormData(){const e=new FormData,t=this._circuitId;return e.append("circuitId",t),e}didRenderingFail(){return this._renderingFailed}isDisposedOrDisposing(){return void 0!==this._disposePromise}sendDisconnectBeacon(){if(this._disposed)return;const e=this.getDisconnectFormData();this._disposed=navigator.sendBeacon("_blazor/disconnect",e)}dispose(){return this._disposePromise||(this._disposePromise=this.disposeCore()),this._disposePromise}async disposeCore(){var e;if(!this._startPromise)return void(this._disposed=!0);await this._startPromise,this._disposed=!0,null===(e=this._connection)||void 0===e||e.stop();const t=this.getDisconnectFormData();fetch("http://github.com/_blazor/disconnect",{method:"POST",body:t});for(const e of this._options.circuitHandlers)e.onCircuitClosed&&e.onCircuitClosed()}}function Fo(e){const t={...$o,...e};return e&&e.reconnectionOptions&&(t.reconnectionOptions={...$o.reconnectionOptions,...e.reconnectionOptions}),t}const $o={configureSignalR:e=>{},logLevel:yt.Warning,initializers:void 0,circuitHandlers:[],reconnectionOptions:{maxRetries:8,retryIntervalMilliseconds:2e4,dialogId:"components-reconnect-modal"}};class Ho{constructor(e,t,n,o){this.maxRetries=t,this.document=n,this.logger=o,this.modal=this.document.createElement("div"),this.modal.id=e,this.maxRetries=t,this.modal.style.cssText=["position: fixed","top: 0","right: 0","bottom: 0","left: 0","z-index: 1050","display: none","overflow: hidden","background-color: #fff","opacity: 0.8","text-align: center","font-weight: bold","transition: visibility 0s linear 500ms"].join(";"),this.message=this.document.createElement("h5"),this.message.style.cssText="margin-top: 20px",this.button=this.document.createElement("button"),this.button.style.cssText="margin:5px auto 5px",this.button.textContent="Retry";const r=this.document.createElement("a");r.addEventListener("click",(()=>location.reload())),r.textContent="reload",this.reloadParagraph=this.document.createElement("p"),this.reloadParagraph.textContent="Alternatively, ",this.reloadParagraph.appendChild(r),this.modal.appendChild(this.message),this.modal.appendChild(this.button),this.modal.appendChild(this.reloadParagraph),this.loader=this.getLoader(),this.message.after(this.loader),this.button.addEventListener("click",(async()=>{this.show();try{await vt.reconnect()||this.rejected()}catch(e){this.logger.log(yt.Error,e),this.failed()}}))}show(){this.document.contains(this.modal)||this.document.body.appendChild(this.modal),this.modal.style.display="block",this.loader.style.display="inline-block",this.button.style.display="none",this.reloadParagraph.style.display="none",this.message.textContent="Attempting to reconnect to the server...",this.modal.style.visibility="hidden",setTimeout((()=>{this.modal.style.visibility="visible"}),0)}update(e){this.message.textContent=`Attempting to reconnect to the server: ${e} of ${this.maxRetries}`}hide(){this.modal.style.display="none"}failed(){this.button.style.display="block",this.reloadParagraph.style.display="none",this.loader.style.display="none";const e=this.document.createTextNode("Reconnection failed. Try "),t=this.document.createElement("a");t.textContent="reloading",t.setAttribute("href",""),t.addEventListener("click",(()=>location.reload()));const n=this.document.createTextNode(" the page if you're unable to reconnect.");this.message.replaceChildren(e,t,n)}rejected(){this.button.style.display="none",this.reloadParagraph.style.display="none",this.loader.style.display="none";const e=this.document.createTextNode("Could not reconnect to the server. "),t=this.document.createElement("a");t.textContent="Reload",t.setAttribute("href",""),t.addEventListener("click",(()=>location.reload()));const n=this.document.createTextNode(" the page to restore functionality.");this.message.replaceChildren(e,t,n)}getLoader(){const e=this.document.createElement("div");return e.style.cssText=["border: 0.3em solid #f3f3f3","border-top: 0.3em solid #3498db","border-radius: 50%","width: 2em","height: 2em","display: inline-block"].join(";"),e.animate([{transform:"rotate(0deg)"},{transform:"rotate(360deg)"}],{duration:2e3,iterations:1/0}),e}}class Wo{constructor(e,t,n){this.dialog=e,this.maxRetries=t,this.document=n,this.document=n;const o=this.document.getElementById(Wo.MaxRetriesId);o&&(o.innerText=this.maxRetries.toString())}show(){this.removeClasses(),this.dialog.classList.add(Wo.ShowClassName)}update(e){const t=this.document.getElementById(Wo.CurrentAttemptId);t&&(t.innerText=e.toString())}hide(){this.removeClasses(),this.dialog.classList.add(Wo.HideClassName)}failed(){this.removeClasses(),this.dialog.classList.add(Wo.FailedClassName)}rejected(){this.removeClasses(),this.dialog.classList.add(Wo.RejectedClassName)}removeClasses(){this.dialog.classList.remove(Wo.ShowClassName,Wo.HideClassName,Wo.FailedClassName,Wo.RejectedClassName)}}Wo.ShowClassName="components-reconnect-show",Wo.HideClassName="components-reconnect-hide",Wo.FailedClassName="components-reconnect-failed",Wo.RejectedClassName="components-reconnect-rejected",Wo.MaxRetriesId="components-reconnect-max-retries",Wo.CurrentAttemptId="components-reconnect-current-attempt";class jo{constructor(e,t,n){this._currentReconnectionProcess=null,this._logger=e,this._reconnectionDisplay=t,this._reconnectCallback=n||vt.reconnect}onConnectionDown(e,t){if(!this._reconnectionDisplay){const t=document.getElementById(e.dialogId);this._reconnectionDisplay=t?new Wo(t,e.maxRetries,document):new Ho(e.dialogId,e.maxRetries,document,this._logger)}this._currentReconnectionProcess||(this._currentReconnectionProcess=new zo(e,this._logger,this._reconnectCallback,this._reconnectionDisplay))}onConnectionUp(){this._currentReconnectionProcess&&(this._currentReconnectionProcess.dispose(),this._currentReconnectionProcess=null)}}class zo{constructor(e,t,n,o){this.logger=t,this.reconnectCallback=n,this.isDisposed=!1,this.reconnectDisplay=o,this.reconnectDisplay.show(),this.attemptPeriodicReconnection(e)}dispose(){this.isDisposed=!0,this.reconnectDisplay.hide()}async attemptPeriodicReconnection(e){for(let t=0;tzo.MaximumFirstRetryInterval?zo.MaximumFirstRetryInterval:e.retryIntervalMilliseconds;if(await this.delay(n),this.isDisposed)break;try{return await this.reconnectCallback()?void 0:void this.reconnectDisplay.rejected()}catch(e){this.logger.log(yt.Error,e)}}this.reconnectDisplay.failed()}delay(e){return new Promise((t=>setTimeout(t,e)))}}zo.MaximumFirstRetryInterval=3e3;class qo{constructor(e=!0,t,n,o=0){this.singleRuntime=e,this.logger=t,this.webRendererId=o,this.afterStartedCallbacks=[],n&&this.afterStartedCallbacks.push(...n)}async importInitializersAsync(e,t){await Promise.all(e.map((e=>async function(e,n){const o=function(e){const t=document.baseURI;return t.endsWith("/")?`${t}${e}`:`${t}/${e}`}(n),r=await import(o);if(void 0!==r){if(e.singleRuntime){const{beforeStart:n,afterStarted:o,beforeWebAssemblyStart:s,afterWebAssemblyStarted:a,beforeServerStart:c,afterServerStarted:l}=r;let h=n;e.webRendererId===Bn.Server&&c&&(h=c),e.webRendererId===Bn.WebAssembly&&s&&(h=s);let d=o;return e.webRendererId===Bn.Server&&l&&(d=l),e.webRendererId===Bn.WebAssembly&&a&&(d=a),i(e,h,d,t)}return function(e,t,n){var r;const s=n[0],{beforeStart:a,afterStarted:c,beforeWebStart:l,afterWebStarted:h,beforeWebAssemblyStart:d,afterWebAssemblyStarted:u,beforeServerStart:p,afterServerStarted:f}=t,g=!(l||h||d||u||p||f||!a&&!c),m=g&&s.enableClassicInitializers;if(g&&!s.enableClassicInitializers)null===(r=e.logger)||void 0===r||r.log(yt.Warning,`Initializer '${o}' will be ignored because multiple runtimes are available. use 'before(web|webAssembly|server)Start' and 'after(web|webAssembly|server)Started?' instead.)`);else if(m)return i(e,a,c,n);if(function(e){e.webAssembly?e.webAssembly.initializers||(e.webAssembly.initializers={beforeStart:[],afterStarted:[]}):e.webAssembly={initializers:{beforeStart:[],afterStarted:[]}},e.circuit?e.circuit.initializers||(e.circuit.initializers={beforeStart:[],afterStarted:[]}):e.circuit={initializers:{beforeStart:[],afterStarted:[]}}}(s),d&&s.webAssembly.initializers.beforeStart.push(d),u&&s.webAssembly.initializers.afterStarted.push(u),p&&s.circuit.initializers.beforeStart.push(p),f&&s.circuit.initializers.afterStarted.push(f),h&&e.afterStartedCallbacks.push(h),l)return l(s)}(e,r,t)}function i(e,t,n,o){if(n&&e.afterStartedCallbacks.push(n),t)return t(...o)}}(this,e))))}async invokeAfterStartedCallbacks(e){const t=function(e){var t;return null===(t=I.get(e))||void 0===t?void 0:t[1]}(this.webRendererId);t&&await t,await Promise.all(this.afterStartedCallbacks.map((t=>t(e))))}}let Jo,Ko,Vo,Xo,Go,Yo,Qo,Zo;function er(e){if(Xo)throw new Error("Circuit options have already been configured.");if(Xo)throw new Error("WebAssembly options have already been configured.");Jo=async function(e){const t=await e;Xo=Fo(t)}(e)}function tr(e){if(void 0!==Yo)throw new Error("Blazor Server has already started.");return Yo=new Promise(nr.bind(null,e)),Yo}async function nr(e,t,n){await Jo;const o=await async function(e){if(e.initializers)return await Promise.all(e.initializers.beforeStart.map((t=>t(e)))),new qo(!1,void 0,e.initializers.afterStarted,Bn.Server);const t=await fetch("http://github.com/_blazor/initializers",{method:"GET",credentials:"include",cache:"no-cache"}),n=await t.json(),o=new qo(!0,void 0,void 0,Bn.Server);return await o.importInitializersAsync(n,[e]),o}(Xo);if(Ko=It(document)||"",Go=new bt(Xo.logLevel),Vo=new Oo(e,Ko,Xo,Go),Go.log(yt.Information,"Starting up Blazor server-side application."),vt.reconnect=async()=>!(Vo.didRenderingFail()||!await Vo.reconnect()&&(Go.log(yt.Information,"Reconnection attempt to the circuit was rejected by the server. This may indicate that the associated state is no longer available on the server."),1)),vt.defaultReconnectionHandler=new jo(Go),Xo.reconnectionHandler=Xo.reconnectionHandler||vt.defaultReconnectionHandler,vt._internal.navigationManager.listenForNavigationEvents(Bn.Server,((e,t,n)=>Vo.sendLocationChanged(e,t,n)),((e,t,n,o)=>Vo.sendLocationChanging(e,t,n,o))),vt._internal.forceCloseConnection=()=>Vo.disconnect(),vt._internal.sendJSDataStream=(e,t,n)=>Vo.sendJsDataStream(e,t,n),!await Vo.start())return Go.log(yt.Error,"Failed to start the circuit."),void t();const r=()=>{Vo.sendDisconnectBeacon()};vt.disconnect=r,window.addEventListener("unload",r,{capture:!1,once:!0}),Go.log(yt.Information,"Blazor server-side application started."),o.invokeAfterStartedCallbacks(vt),t()}async function or(){if(!Yo)throw new Error("Cannot start the circuit until Blazor Server has started.");return!(!Vo||Vo.isDisposedOrDisposing())||(Qo?await Qo:(await Yo,(!Vo||!Vo.didRenderingFail())&&(Vo&&Vo.isDisposedOrDisposing()&&(Ko=It(document)||"",Vo=new Oo(Vo.getRootComponentManager(),Ko,Xo,Go)),Qo=Vo.start(),async function(e){await e,Qo===e&&(Qo=void 0)}(Qo),Qo)))}function rr(e){if(Vo&&!Vo.isDisposedOrDisposing())return Vo.updateRootComponents(e);!async function(e){await Yo,await or()&&Vo.updateRootComponents(e)}(e)}function ir(e){return Zo=e,Zo}var sr,ar;const cr=navigator,lr=cr.userAgentData&&cr.userAgentData.brands,hr=lr&&lr.length>0?lr.some((e=>"Google Chrome"===e.brand||"Microsoft Edge"===e.brand||"Chromium"===e.brand)):window.chrome,dr=null!==(ar=null===(sr=cr.userAgentData)||void 0===sr?void 0:sr.platform)&&void 0!==ar?ar:navigator.platform;function ur(e){return 0!==e.debugLevel&&(hr||navigator.userAgent.includes("Firefox"))}let pr,fr,gr,mr,vr,yr,wr;const br=Math.pow(2,32),_r=Math.pow(2,21)-1;let Sr=null;function Cr(e){return fr.getI32(e)}const Er={load:function(e,t){return async function(e,t){const{dotnet:n}=await async function(e){if("undefined"==typeof WebAssembly||!WebAssembly.validate)throw new Error("This browser does not support WebAssembly.");let t="_framework/dotnet.js";if(e.loadBootResource){const n="dotnetjs",o=e.loadBootResource(n,"dotnet.js",t,"","js-module-dotnet");if("string"==typeof o)t=o;else if(o)throw new Error(`For a ${n} resource, custom loaders must supply a URI string.`)}const n=new URL(t,document.baseURI).toString();return await import(n)}(e),o=function(e,t){const n={maxParallelDownloads:1e6,enableDownloadRetry:!1,applicationEnvironment:e.environment},o={...window.Module||{},onConfigLoaded:async n=>{n.environmentVariables||(n.environmentVariables={}),"sharded"===n.globalizationMode&&(n.environmentVariables.__BLAZOR_SHARDED_ICU="1"),vt._internal.getApplicationEnvironment=()=>n.applicationEnvironment,null==t||t(n),wr=await async function(e,t){var n,o,r;if(e.initializers)return await Promise.all(e.initializers.beforeStart.map((t=>t(e)))),new qo(!1,void 0,e.initializers.afterStarted,Bn.WebAssembly);{const i=[e,null!==(o=null===(n=t.resources)||void 0===n?void 0:n.extensions)&&void 0!==o?o:{}],s=new qo(!0,void 0,void 0,Bn.WebAssembly),a=Object.keys((null===(r=null==t?void 0:t.resources)||void 0===r?void 0:r.libraryInitializers)||{});return await s.importInitializersAsync(a,i),s}}(e,n)},onDownloadResourceProgress:Ir,config:n,disableDotnet6Compatibility:!1,out:Tr,err:Rr};return o}(e,t);e.applicationCulture&&n.withApplicationCulture(e.applicationCulture),e.environment&&n.withApplicationEnvironment(e.environment),e.loadBootResource&&n.withResourceLoader(e.loadBootResource),n.withModuleConfig(o),e.configureRuntime&&e.configureRuntime(n),yr=await n.create()}(e,t)},start:function(){return async function(){if(!yr)throw new Error("The runtime must be loaded it gets configured.");const{MONO:t,BINDING:n,Module:o,setModuleImports:r,INTERNAL:i,getConfig:s,invokeLibraryInitializers:a}=yr;gr=o,pr=n,fr=t,vr=i,function(e){const t=dr.match(/^Mac/i)?"Cmd":"Alt";ur(e)&&console.info(`Debugging hotkey: Shift+${t}+D (when application has focus)`),document.addEventListener("keydown",(t=>{t.shiftKey&&(t.metaKey||t.altKey)&&"KeyD"===t.code&&(ur(e)?navigator.userAgent.includes("Firefox")?async function(){const e=await fetch(`_framework/debug?url=${encodeURIComponent(location.href)}&isFirefox=true`);200!==e.status&&console.warn(await e.text())}():hr?function(){const e=document.createElement("a");e.href=`_framework/debug?url=${encodeURIComponent(location.href)}`,e.target="_blank",e.rel="noopener noreferrer",e.click()}():console.error("Currently, only Microsoft Edge (80+), Google Chrome, or Chromium, are supported for debugging."):console.error("Cannot start debugging, because the application was not compiled with debugging enabled."))}))}(s()),vt.runtime=yr,vt._internal.dotNetCriticalError=Rr,r("blazor-internal",{Blazor:{_internal:vt._internal}});const c=await yr.getAssemblyExports("Microsoft.AspNetCore.Components.WebAssembly");return Object.assign(vt._internal,{dotNetExports:{...c.Microsoft.AspNetCore.Components.WebAssembly.Services.DefaultWebAssemblyJSRuntime}}),mr=e.attachDispatcher({beginInvokeDotNetFromJS:(e,t,n,o,r)=>{if(Ar(),!o&&!t)throw new Error("Either assemblyName or dotNetObjectId must have a non null value.");const i=o?o.toString():t;vt._internal.dotNetExports.BeginInvokeDotNet(e?e.toString():null,i,n,r)},endInvokeJSFromDotNet:(e,t,n)=>{vt._internal.dotNetExports.EndInvokeJS(n)},sendByteArray:(e,t)=>{vt._internal.dotNetExports.ReceiveByteArrayFromJS(e,t)},invokeDotNetFromJS:(e,t,n,o)=>(Ar(),vt._internal.dotNetExports.InvokeDotNet(e||null,t,null!=n?n:0,o))}),{invokeLibraryInitializers:a}}()},callEntryPoint:async function(){try{await yr.runMain(yr.getConfig().mainAssemblyName,[])}catch(e){console.error(e),Bo()}},toUint8Array:function(e){const t=Dr(e),n=Cr(t),o=new Uint8Array(n);return o.set(gr.HEAPU8.subarray(t+4,t+4+n)),o},getArrayLength:function(e){return Cr(Dr(e))},getArrayEntryPtr:function(e,t,n){return Dr(e)+4+t*n},getObjectFieldsBaseAddress:function(e){return e+8},readInt16Field:function(e,t){return n=e+(t||0),fr.getI16(n);var n},readInt32Field:function(e,t){return Cr(e+(t||0))},readUint64Field:function(e,t){return function(e){const t=e>>2,n=gr.HEAPU32[t+1];if(n>_r)throw new Error(`Cannot read uint64 with high order part ${n}, because the result would exceed Number.MAX_SAFE_INTEGER.`);return n*br+gr.HEAPU32[t]}(e+(t||0))},readFloatField:function(e,t){return n=e+(t||0),fr.getF32(n);var n},readObjectField:function(e,t){return Cr(e+(t||0))},readStringField:function(e,t,n){const o=Cr(e+(t||0));if(0===o)return null;if(n){const e=pr.unbox_mono_obj(o);return"boolean"==typeof e?e?"":null:e}return pr.conv_string(o)},readStructField:function(e,t){return e+(t||0)},beginHeapLock:function(){return Ar(),Sr=xr.create(),Sr},invokeWhenHeapUnlocked:function(e){Sr?Sr.enqueuePostReleaseAction(e):e()}};function Ir(e,t){const n=e/t*100;document.documentElement.style.setProperty("--blazor-load-percentage",`${n}%`),document.documentElement.style.setProperty("--blazor-load-percentage-text",`"${Math.floor(n)}%"`)}const kr=["DEBUGGING ENABLED"],Tr=e=>kr.indexOf(e)<0&&console.log(e),Rr=e=>{console.error(e||"(null)"),Bo()};function Dr(e){return e+12}function Ar(){if(Sr)throw new Error("Assertion failed - heap is currently locked")}class xr{enqueuePostReleaseAction(e){this.postReleaseActions||(this.postReleaseActions=[]),this.postReleaseActions.push(e)}release(){var e;if(Sr!==this)throw new Error("Trying to release a lock which isn't current");for(vr.mono_wasm_gc_unlock(),Sr=null;null===(e=this.postReleaseActions)||void 0===e?void 0:e.length;)this.postReleaseActions.shift()(),Ar()}static create(){return vr.mono_wasm_gc_lock(),new xr}}class Nr{constructor(e){this.batchAddress=e,this.arrayRangeReader=Pr,this.arrayBuilderSegmentReader=Mr,this.diffReader=Ur,this.editReader=Lr,this.frameReader=Br}updatedComponents(){return Zo.readStructField(this.batchAddress,0)}referenceFrames(){return Zo.readStructField(this.batchAddress,Pr.structLength)}disposedComponentIds(){return Zo.readStructField(this.batchAddress,2*Pr.structLength)}disposedEventHandlerIds(){return Zo.readStructField(this.batchAddress,3*Pr.structLength)}updatedComponentsEntry(e,t){return Or(e,t,Ur.structLength)}referenceFramesEntry(e,t){return Or(e,t,Br.structLength)}disposedComponentIdsEntry(e,t){const n=Or(e,t,4);return Zo.readInt32Field(n)}disposedEventHandlerIdsEntry(e,t){const n=Or(e,t,8);return Zo.readUint64Field(n)}}const Pr={structLength:8,values:e=>Zo.readObjectField(e,0),count:e=>Zo.readInt32Field(e,4)},Mr={structLength:12,values:e=>{const t=Zo.readObjectField(e,0),n=Zo.getObjectFieldsBaseAddress(t);return Zo.readObjectField(n,0)},offset:e=>Zo.readInt32Field(e,4),count:e=>Zo.readInt32Field(e,8)},Ur={structLength:4+Mr.structLength,componentId:e=>Zo.readInt32Field(e,0),edits:e=>Zo.readStructField(e,4),editsEntry:(e,t)=>Or(e,t,Lr.structLength)},Lr={structLength:20,editType:e=>Zo.readInt32Field(e,0),siblingIndex:e=>Zo.readInt32Field(e,4),newTreeIndex:e=>Zo.readInt32Field(e,8),moveToSiblingIndex:e=>Zo.readInt32Field(e,8),removedAttributeName:e=>Zo.readStringField(e,16)},Br={structLength:36,frameType:e=>Zo.readInt16Field(e,4),subtreeLength:e=>Zo.readInt32Field(e,8),elementReferenceCaptureId:e=>Zo.readStringField(e,16),componentId:e=>Zo.readInt32Field(e,12),elementName:e=>Zo.readStringField(e,16),textContent:e=>Zo.readStringField(e,16),markupContent:e=>Zo.readStringField(e,16),attributeName:e=>Zo.readStringField(e,16),attributeValue:e=>Zo.readStringField(e,24,!0),attributeEventHandlerId:e=>Zo.readUint64Field(e,8)};function Or(e,t,n){return Zo.getArrayEntryPtr(e,t,n)}class Fr{constructor(e){this.componentManager=e}resolveRegisteredElement(e){const t=Number.parseInt(e);if(!Number.isNaN(t))return H(this.componentManager.resolveRootComponent(t))}getParameterValues(e){return this.componentManager.initialComponents[e].parameterValues}getParameterDefinitions(e){return this.componentManager.initialComponents[e].parameterDefinitions}getTypeName(e){return this.componentManager.initialComponents[e].typeName}getAssembly(e){return this.componentManager.initialComponents[e].assembly}getCount(){return this.componentManager.initialComponents.length}}let $r,Hr,Wr,jr,zr,qr=!1,Jr=!1,Kr=!0,Vr=!1;const Xr=new Promise((e=>{zr=e}));let Gr;const Yr=new Promise((e=>{Gr=e}));let Qr;function Zr(e){if(void 0!==jr)throw new Error("Blazor WebAssembly has already started.");return jr=new Promise(ei.bind(null,e)),jr}async function ei(e,t,n){(function(){if(window.parent!==window&&!window.opener&&window.frameElement){const e=window.sessionStorage&&window.sessionStorage["Microsoft.AspNetCore.Components.WebAssembly.Authentication.CachedAuthSettings"],t=e&&JSON.parse(e);return t&&t.redirect_uri&&location.href.startsWith(t.redirect_uri)}return!1})()&&await new Promise((()=>{}));const o=ti();!function(e){const t=A;A=(e,n,o)=>{((e,t,n)=>{const o=Ae(e);(null==o?void 0:o.eventDelegator.getHandler(t))&&Er.invokeWhenHeapUnlocked(n)})(e,n,(()=>t(e,n,o)))}}(),vt._internal.applyHotReload=(e,t,n,o)=>{mr.invokeDotNetStaticMethod("Microsoft.AspNetCore.Components.WebAssembly","ApplyHotReloadDelta",e,t,n,o)},vt._internal.getApplyUpdateCapabilities=()=>mr.invokeDotNetStaticMethod("Microsoft.AspNetCore.Components.WebAssembly","GetApplyUpdateCapabilities"),vt._internal.invokeJSFromDotNet=oi,vt._internal.invokeJSJson=ri,vt._internal.endInvokeDotNetFromJS=ii,vt._internal.receiveWebAssemblyDotNetDataStream=si,vt._internal.receiveByteArray=ai;const r=ir(Er);vt.platform=r,vt._internal.renderBatch=(e,t)=>{const n=Er.beginHeapLock();try{xe(e,new Nr(t))}finally{n.release()}},vt._internal.navigationManager.listenForNavigationEvents(Bn.WebAssembly,(async(e,t,n)=>{await mr.invokeDotNetStaticMethodAsync("Microsoft.AspNetCore.Components.WebAssembly","NotifyLocationChanged",e,t,n)}),(async(e,t,n,o)=>{const r=await mr.invokeDotNetStaticMethodAsync("Microsoft.AspNetCore.Components.WebAssembly","NotifyLocationChangingAsync",t,n,o);vt._internal.navigationManager.endLocationChanging(e,r)}));const i=new Fr(e);let s;vt._internal.registeredComponents={getRegisteredComponentsCount:()=>i.getCount(),getAssembly:e=>i.getAssembly(e),getTypeName:e=>i.getTypeName(e),getParameterDefinitions:e=>i.getParameterDefinitions(e)||"",getParameterValues:e=>i.getParameterValues(e)||""},vt._internal.getPersistedState=()=>kt(document,Ct)||"",vt._internal.getInitialComponentsUpdate=()=>Yr,vt._internal.updateRootComponents=e=>{var t;return null===(t=vt._internal.dotNetExports)||void 0===t?void 0:t.UpdateRootComponentsCore(e)},vt._internal.endUpdateRootComponents=t=>{var n;return null===(n=e.onAfterUpdateRootComponents)||void 0===n?void 0:n.call(e,t)},vt._internal.attachRootComponentToElement=(e,t,n)=>{const o=i.resolveRegisteredElement(e);o?De(n,o,t,!1):function(e,t,n){const o="::before";let r=!1;if(e.endsWith("::after"))e=e.slice(0,-7),r=!0;else if(e.endsWith(o))throw new Error(`The '${o}' selector is not supported.`);const i=w(e)||document.querySelector(e);if(!i)throw new Error(`Could not find any element matching selector '${e}'.`);De(n,W(i,!0),t,r)}(e,t,n)};try{await o,s=await r.start()}catch(e){throw new Error(`Failed to start platform. Reason: ${e}`)}r.callEntryPoint(),wr.invokeAfterStartedCallbacks(vt),Jr=!0,t()}function ti(){return null!=Wr||(Wr=(async()=>{await Hr;const e=null!=$r?$r:{},t=null==$r?void 0:$r.configureRuntime;e.configureRuntime=e=>{null==t||t(e),Vr&&e.withEnvironmentVariable("__BLAZOR_WEBASSEMBLY_WAIT_FOR_ROOT_COMPONENTS","true")},await Er.load(e,zr),qr=!0})()),Wr}function ni(){return qr}function oi(t,n,o,r){const i=Er.readStringField(t,0),s=Er.readInt32Field(t,4),a=Er.readStringField(t,8),c=Er.readUint64Field(t,20);if(null!==a){const e=Er.readUint64Field(t,12);if(0!==e)return mr.beginInvokeJSFromDotNet(e,i,a,s,c),0;{const e=mr.invokeJSFromDotNet(i,a,s,c);return null===e?0:pr.js_string_to_mono_string(e)}}{const t=e.findJSFunction(i,c).call(null,n,o,r);switch(s){case e.JSCallResultType.Default:return t;case e.JSCallResultType.JSObjectReference:return e.createJSObjectReference(t).__jsObjectId;case e.JSCallResultType.JSStreamReference:{const n=e.createJSStreamReference(t),o=JSON.stringify(n);return pr.js_string_to_mono_string(o)}case e.JSCallResultType.JSVoidResult:return null;default:throw new Error(`Invalid JS call result type '${s}'.`)}}}function ri(e,t,n,o,r){return 0!==r?(mr.beginInvokeJSFromDotNet(r,e,o,n,t),null):mr.invokeJSFromDotNet(e,o,n,t)}function ii(e,t,n){mr.endInvokeDotNetFromJS(e,t,n)}function si(e,t,n,o){!function(e,t,n,o,r){let i=mt.get(t);if(!i){const n=new ReadableStream({start(e){mt.set(t,e),i=e}});e.supplyDotNetStream(t,n)}r?(i.error(r),mt.delete(t)):0===o?(i.close(),mt.delete(t)):i.enqueue(n.length===o?n:n.subarray(0,o))}(mr,e,t,n,o)}function ai(e,t){mr.receiveByteArray(e,t)}function ci(e,t){t.namespaceURI?e.setAttributeNS(t.namespaceURI,t.name,t.value):e.setAttribute(t.name,t.value)}Hr=new Promise((e=>{Qr=e}));const li="data-permanent";var hi,di;!function(e){e[e.None=0]="None",e[e.Some=1]="Some",e[e.Infinite=2]="Infinite"}(hi||(hi={})),function(e){e.Keep="keep",e.Update="update",e.Insert="insert",e.Delete="delete"}(di||(di={}));class ui{static create(e,t,n){return 0===t&&n===e.length?e:new ui(e,t,n)}constructor(e,t,n){this.source=e,this.startIndex=t,this.length=n}item(e){return this.source.item(e+this.startIndex)}forEach(e,t){for(let t=0;t=n&&s>=o&&r(e.item(i),t.item(s))===hi.None;)i--,s--,a++;return a}(e,t,o,o,n),i=function(e){var t;const n=[];let o=e.length-1,r=(null===(t=e[o])||void 0===t?void 0:t.length)-1;for(;o>0||r>0;){const t=0===o?di.Insert:0===r?di.Delete:e[o][r];switch(n.unshift(t),t){case di.Keep:case di.Update:o--,r--;break;case di.Insert:r--;break;case di.Delete:o--}}return n}(function(e,t,n){const o=[],r=[],i=e.length,s=t.length;if(0===i&&0===s)return[];for(let e=0;e<=i;e++)(o[e]=Array(s+1))[0]=e,r[e]=Array(s+1);const a=o[0];for(let e=1;e<=s;e++)a[e]=e;for(let a=1;a<=i;a++)for(let i=1;i<=s;i++){const s=n(e.item(a-1),t.item(i-1)),c=o[a-1][i]+1,l=o[a][i-1]+1;let h;switch(s){case hi.None:h=o[a-1][i-1];break;case hi.Some:h=o[a-1][i-1]+1;break;case hi.Infinite:h=Number.MAX_VALUE}h{history.pushState(null,"",e),Mi(e,!0)}))}function Ni(e){Oe()||Mi(location.href,!1)}function Pi(e){if(Oe()||e.defaultPrevented)return;const t=e.target;if(t instanceof HTMLFormElement){if(!function(e){const t=e.getAttribute("data-enhance");return"string"==typeof t&&""===t||"true"===(null==t?void 0:t.toLowerCase())}(t))return;e.preventDefault();let n=new URL(t.action);const o={method:t.method},r=new FormData(t),i=e.submitter;i&&(i.name&&r.append(i.name,i.value),null!==i.getAttribute("formaction")&&(n=new URL(i.formAction))),"get"===o.method?(n.search=new URLSearchParams(r).toString(),history.pushState(null,"",n.toString())):o.body=r,Mi(n.toString(),!1,o)}}async function Mi(e,t,n){gi=!0,null==pi||pi.abort(),function(e,t){null==ke||ke(e,t)}(e,t),pi=new AbortController;const o=pi.signal,r=fetch(e,Object.assign({signal:o,mode:"no-cors",headers:{accept:"text/html; blazor-enhanced-nav=on"}},n));let i=null;if(await async function(e,t,n,o){let r;try{if(r=await e,!r.body)return void n(r,"");const t=r.headers.get("ssr-framing");if(!t){const e=await r.text();return void n(r,e)}let o=!0;await r.body.pipeThrough(new TextDecoderStream).pipeThrough(function(e){let t="";return new TransformStream({transform(n,o){if(t+=n,t.indexOf(e,t.length-n.length-e.length)>=0){const n=t.split(e);n.slice(0,-1).forEach((e=>o.enqueue(e))),t=n[n.length-1]}},flush(e){e.enqueue(t)}})}(`\x3c!--${t}--\x3e`)).pipeTo(new WritableStream({write(e){o?(o=!1,n(r,e)):(e=>{const t=document.createRange().createContextualFragment(e);for(;t.firstChild;)document.body.appendChild(t.firstChild)})(e)}}))}catch(e){if("AbortError"===e.name&&t.aborted)return;throw e}}(r,o,((t,o)=>{const r=!(null==n?void 0:n.method)||"get"===n.method,s=t.status>=200&&t.status<300;if("opaque"===t.type){if(r)return void Li(e);throw new Error("Enhanced navigation does not support making a non-GET request to an endpoint that redirects to an external origin. Avoid enabling enhanced navigation for form posts that may perform external redirections.")}if(s&&"allow"!==t.headers.get("blazor-enhanced-nav")){if(r)return void Li(e);throw new Error("Enhanced navigation does not support making a non-GET request to a non-Blazor endpoint. Avoid enabling enhanced navigation for forms that post to a non-Blazor endpoint.")}t.redirected&&(r?history.replaceState(null,"",t.url):history.pushState(null,"",t.url),e=t.url);const a=t.headers.get("blazor-enhanced-nav-redirect-location");if(a)return void location.replace(a);t.redirected||r||!s||(function(e){const t=new URL(e.url),n=new URL(Ri);return t.protocol===n.protocol&&t.host===n.host&&t.port===n.port&&t.pathname===n.pathname}(t)?location.href!==Ri&&history.pushState(null,"",Ri):i=`Cannot perform enhanced form submission that changes the URL (except via a redirection), because then back/forward would not work. Either remove this form's 'action' attribute, or change its method to 'get', or do not mark it as enhanced.\nOld URL: ${location.href}\nNew URL: ${t.url}`),Ri=t.url;const c=t.headers.get("content-type");if((null==c?void 0:c.startsWith("text/html"))&&o){const e=(new DOMParser).parseFromString(o,"text/html");vi(document,e),fi.documentUpdated()}else(null==c?void 0:c.startsWith("text/"))&&o?Ui(o):s||o?r?Li(e):Ui(`Error: ${n.method} request to ${e} returned non-HTML content of type ${c||"unspecified"}.`):Ui(`Error: ${t.status} ${t.statusText}`)})),!o.aborted){const t=e.indexOf("#");if(t>=0){const n=e.substring(t+1),o=document.getElementById(n);null==o||o.scrollIntoView()}if(gi=!1,fi.enhancedNavigationCompleted(),i)throw new Error(i)}}function Ui(e){document.documentElement.textContent=e;const t=document.documentElement.style;t.fontFamily="consolas, monospace",t.whiteSpace="pre-wrap",t.padding="1rem"}function Li(e){history.replaceState(null,"",e+"?"),location.replace(e)}let Bi,Oi=!0;class Fi extends HTMLElement{connectedCallback(){var e;const t=this.parentNode;null===(e=t.parentNode)||void 0===e||e.removeChild(t),t.childNodes.forEach((e=>{if(e instanceof HTMLTemplateElement){const t=e.getAttribute("blazor-component-id");if(t)"true"!==e.getAttribute("enhanced-nav")&&pi||function(e,t){const n=function(e){const t=`bl:${e}`,n=document.createNodeIterator(document,NodeFilter.SHOW_COMMENT);let o=null;for(;(o=n.nextNode())&&o.textContent!==t;);if(!o)return null;const r=`/bl:${e}`;let i=null;for(;(i=n.nextNode())&&i.textContent!==r;);return i?{startMarker:o,endMarker:i}:null}(e);if(n){const{startMarker:e,endMarker:o}=n;if(Oi)vi({startExclusive:e,endExclusive:o},t);else{const n=o.parentNode,r=new Range;for(r.setStart(e,e.textContent.length),r.setEnd(o,0),r.deleteContents();t.childNodes[0];)n.insertBefore(t.childNodes[0],o)}Bi.documentUpdated()}}(t,e.content);else switch(e.getAttribute("type")){case"redirection":const t=Le(e.content.textContent),n="form-post"===e.getAttribute("from");"true"===e.getAttribute("enhanced")&&Pe(t)?(n?history.pushState(null,"",t):history.replaceState(null,"",t),Mi(t,!1)):n?location.assign(t):location.replace(t);break;case"error":Ui(e.content.textContent||"Error")}}}))}}class $i{constructor(e){var t;this._circuitInactivityTimeoutMs=e,this._rootComponentsBySsrComponentId=new Map,this._seenDescriptors=new Set,this._pendingOperationBatches={},this._nextOperationBatchId=1,this._nextSsrComponentId=1,this._didWebAssemblyFailToLoadQuickly=!1,this._isComponentRefreshPending=!1,this.initialComponents=[],t=()=>{this.rootComponentsMayRequireRefresh()},E.push(t)}onAfterRenderBatch(e){e===Bn.Server&&this.circuitMayHaveNoRootComponents()}onDocumentUpdated(){this.rootComponentsMayRequireRefresh()}onEnhancedNavigationCompleted(){this.rootComponentsMayRequireRefresh()}registerComponent(e){if(this._seenDescriptors.has(e))return;"auto"!==e.type&&"webassembly"!==e.type||this.startLoadingWebAssemblyIfNotStarted();const t=this._nextSsrComponentId++;this._seenDescriptors.add(e),this._rootComponentsBySsrComponentId.set(t,{descriptor:e,ssrComponentId:t})}unregisterComponent(e){this._seenDescriptors.delete(e.descriptor),this._rootComponentsBySsrComponentId.delete(e.ssrComponentId),this.circuitMayHaveNoRootComponents()}async startLoadingWebAssemblyIfNotStarted(){if(void 0!==Wr)return;Vr=!0;const e=ti();setTimeout((()=>{ni()||this.onWebAssemblyFailedToLoadQuickly()}),vt._internal.loadWebAssemblyQuicklyTimeout);const t=await Xr;(function(e){if(!e.cacheBootResources)return!1;const t=Hi(e);if(!t)return!1;const n=window.localStorage.getItem(t.key);return t.value===n})(t)||this.onWebAssemblyFailedToLoadQuickly(),await e,function(e){const t=Hi(e);t&&window.localStorage.setItem(t.key,t.value)}(t),this.rootComponentsMayRequireRefresh()}onWebAssemblyFailedToLoadQuickly(){this._didWebAssemblyFailToLoadQuickly||(this._didWebAssemblyFailToLoadQuickly=!0,this.rootComponentsMayRequireRefresh())}startCircutIfNotStarted(){return void 0===Yo?tr(this):!Vo||Vo.isDisposedOrDisposing()?or():void 0}async startWebAssemblyIfNotStarted(){this.startLoadingWebAssemblyIfNotStarted(),void 0===jr&&await Zr(this)}rootComponentsMayRequireRefresh(){this._isComponentRefreshPending||(this._isComponentRefreshPending=!0,setTimeout((()=>{this._isComponentRefreshPending=!1,this.refreshRootComponents(this._rootComponentsBySsrComponentId.values())}),0))}circuitMayHaveNoRootComponents(){if(this.rendererHasExistingOrPendingComponents(Bn.Server,"server","auto"))return clearTimeout(this._circuitInactivityTimeoutId),void(this._circuitInactivityTimeoutId=void 0);void 0===this._circuitInactivityTimeoutId&&(this._circuitInactivityTimeoutId=setTimeout((()=>{this.rendererHasExistingOrPendingComponents(Bn.Server,"server","auto")||(async function(){await(null==Vo?void 0:Vo.dispose())}(),this._circuitInactivityTimeoutId=void 0)}),this._circuitInactivityTimeoutMs))}rendererHasComponents(e){const t=Ae(e);return void 0!==t&&t.getRootComponentCount()>0}rendererHasExistingOrPendingComponents(e,...t){if(this.rendererHasComponents(e))return!0;for(const{descriptor:{type:n},assignedRendererId:o}of this._rootComponentsBySsrComponentId.values()){if(o===e)return!0;if(void 0===o&&-1!==t.indexOf(n))return!0}return!1}refreshRootComponents(e){const t=new Map;for(const n of e){const e=this.determinePendingOperation(n);if(!e)continue;const o=n.assignedRendererId;if(!o)throw new Error("Descriptors must be assigned a renderer ID before getting used as root components");let r=t.get(o);r||(r=[],t.set(o,r)),r.push(e)}for(const[e,n]of t){const t={batchId:this._nextOperationBatchId++,operations:n};this._pendingOperationBatches[t.batchId]=t;const o=JSON.stringify(t);e===Bn.Server?rr(o):this.updateWebAssemblyRootComponents(o)}}updateWebAssemblyRootComponents(e){Kr?(Gr(e),Kr=!1):function(e){if(!jr)throw new Error("Blazor WebAssembly has not started.");if(!vt._internal.updateRootComponents)throw new Error("Blazor WebAssembly has not initialized.");Jr?vt._internal.updateRootComponents(e):async function(e){if(await jr,!vt._internal.updateRootComponents)throw new Error("Blazor WebAssembly has not initialized.");vt._internal.updateRootComponents(e)}(e)}(e)}resolveRendererIdForDescriptor(e){switch("auto"===e.type?this.getAutoRenderMode():e.type){case"server":return this.startCircutIfNotStarted(),Bn.Server;case"webassembly":return this.startWebAssemblyIfNotStarted(),Bn.WebAssembly;case null:return null}}getAutoRenderMode(){return this.rendererHasExistingOrPendingComponents(Bn.WebAssembly,"webassembly")?"webassembly":this.rendererHasExistingOrPendingComponents(Bn.Server,"server")?"server":ni()?"webassembly":this._didWebAssemblyFailToLoadQuickly?"server":null}determinePendingOperation(e){if(t=e.descriptor,document.contains(t.start)){if(void 0===e.assignedRendererId){if(gi||"loading"===document.readyState)return null;const t=this.resolveRendererIdForDescriptor(e.descriptor);return null===t?null:T(t)?(be(e.descriptor.start,!0),e.assignedRendererId=t,e.uniqueIdAtLastUpdate=e.descriptor.uniqueId,{type:"add",ssrComponentId:e.ssrComponentId,marker:Ut(e.descriptor)}):null}return T(e.assignedRendererId)?e.uniqueIdAtLastUpdate===e.descriptor.uniqueId?null:(e.uniqueIdAtLastUpdate=e.descriptor.uniqueId,{type:"update",ssrComponentId:e.ssrComponentId,marker:Ut(e.descriptor)}):null}return e.hasPendingRemoveOperation?null:void 0===e.assignedRendererId?(this.unregisterComponent(e),null):T(e.assignedRendererId)?(be(e.descriptor.start,!1),e.hasPendingRemoveOperation=!0,{type:"remove",ssrComponentId:e.ssrComponentId}):null;var t}resolveRootComponent(e){const t=this._rootComponentsBySsrComponentId.get(e);if(!t)throw new Error(`Could not resolve a root component with SSR component ID '${e}'.`);return t.descriptor}onAfterUpdateRootComponents(e){const t=this._pendingOperationBatches[e];delete this._pendingOperationBatches[e];for(const e of t.operations)switch(e.type){case"remove":{const t=this._rootComponentsBySsrComponentId.get(e.ssrComponentId);t&&this.unregisterComponent(t);break}}}}function Hi(e){var t;const n=null===(t=e.resources)||void 0===t?void 0:t.hash,o=e.mainAssemblyName;return n&&o?{key:`blazor-resource-hash:${o}`,value:n}:null}class Wi{constructor(){this._eventListeners=new Map}static create(e){const t=new Wi;return e.addEventListener=t.addEventListener.bind(t),e.removeEventListener=t.removeEventListener.bind(t),t}addEventListener(e,t){let n=this._eventListeners.get(e);n||(n=new Set,this._eventListeners.set(e,n)),n.add(t)}removeEventListener(e,t){var n;null===(n=this._eventListeners.get(e))||void 0===n||n.delete(t)}dispatchEvent(e,t){const n=this._eventListeners.get(e);if(!n)return;const o={...t,type:e};for(const e of n)e(o)}}let ji,zi=!1;function qi(e){var t,n,o,r;if(zi)throw new Error("Blazor has already started.");zi=!0,null!==(t=(e=e||{}).logLevel)&&void 0!==t||(e.logLevel=yt.Error),vt._internal.loadWebAssemblyQuicklyTimeout=3e3,vt._internal.isBlazorWeb=!0,vt._internal.hotReloadApplied=()=>{Me()&&Ue(location.href,!0)},ji=new $i(null!==(o=null===(n=null==e?void 0:e.ssr)||void 0===n?void 0:n.circuitInactivityTimeoutMs)&&void 0!==o?o:2e3);const i=Wi.create(vt),s={documentUpdated:()=>{ji.onDocumentUpdated(),i.dispatchEvent("enhancedload",{})},enhancedNavigationCompleted(){ji.onEnhancedNavigationCompleted()}};return mi=ji,function(e,t){Bi=t,(null==e?void 0:e.disableDomPreservation)&&(Oi=!1),customElements.define("blazor-ssr-end",Fi)}(null==e?void 0:e.ssr,s),(null===(r=null==e?void 0:e.ssr)||void 0===r?void 0:r.disableDomPreservation)||Di(s),"loading"===document.readyState?document.addEventListener("DOMContentLoaded",Ji.bind(null,e)):Ji(e),Promise.resolve()}function Ji(e){const t=Fo((null==e?void 0:e.circuit)||{});e.circuit=t;const n=async function(e,t){var n;const o=kt(document,Et,"initializers");if(!o)return new qo(!1,t);const r=null!==(n=JSON.parse(atob(o)))&&void 0!==n?n:[],i=new qo(!1,t);return await i.importInitializersAsync(r,[e]),i}(e,new bt(t.logLevel));er(Ki(n,t)),function(e){if($r)throw new Error("WebAssembly options have already been configured.");!async function(e){const t=await e;$r=t,Qr()}(e)}(Ki(n,(null==e?void 0:e.webAssembly)||{})),function(e){const t=Ci(document);for(const e of t)null==mi||mi.registerComponent(e)}(),ji.onDocumentUpdated(),async function(e){const t=await e;await t.invokeAfterStartedCallbacks(vt)}(n)}async function Ki(e,t){return await e,t}vt.start=qi,window.DotNet=e,document&&document.currentScript&&"false"!==document.currentScript.getAttribute("autostart")&&qi()})()})(); \ No newline at end of file diff --git a/src/Components/Web.JS/src/Rendering/DomMerging/DomSync.ts b/src/Components/Web.JS/src/Rendering/DomMerging/DomSync.ts index 45ae5d389baf..49585f8b03e9 100644 --- a/src/Components/Web.JS/src/Rendering/DomMerging/DomSync.ts +++ b/src/Components/Web.JS/src/Rendering/DomMerging/DomSync.ts @@ -354,7 +354,7 @@ function ensureEditableValueSynchronized(destination: Element, value: any) { } else if (destination instanceof HTMLSelectElement && destination.selectedIndex !== value) { destination.selectedIndex = value as number; } else if (destination instanceof HTMLInputElement) { - if (destination.type === 'checkbox') { + if (destination.type === 'checkbox' || destination.type === 'radio') { if (destination.checked !== value) { destination.checked = value as boolean; } @@ -368,7 +368,7 @@ function getEditableElementValue(elem: Element): string | boolean | number | nul if (elem instanceof HTMLSelectElement) { return elem.selectedIndex; } else if (elem instanceof HTMLInputElement) { - return elem.type === 'checkbox' ? elem.checked : (elem.getAttribute('value') || ''); + return elem.type === 'checkbox' || elem.type === 'radio' ? elem.checked : (elem.getAttribute('value') || ''); } else if (elem instanceof HTMLTextAreaElement) { return elem.value; } else { diff --git a/src/Components/Web.JS/test/DomSync.test.ts b/src/Components/Web.JS/test/DomSync.test.ts index 65c1cd129957..8d7ca6dbc7af 100644 --- a/src/Components/Web.JS/test/DomSync.test.ts +++ b/src/Components/Web.JS/test/DomSync.test.ts @@ -485,6 +485,22 @@ describe('DomSync', () => { expect(checkboxElem.value).toBe('second'); }); + test('should handle radio buttons with value attribute', () => { + // Radio buttons require even more special-case handling because their 'value' attribute + // has to be handled as a regular attribute, and 'checked' must be handled similarly + // to 'value' on other inputs + + const destination = makeExistingContent(``); + const newContent = makeNewContent(``); + + const checkboxElem = destination.startExclusive.nextSibling as HTMLInputElement; + + // Act/Assert + synchronizeDomContent(destination, newContent); + expect(checkboxElem.checked).toBeTruthy(); + expect(checkboxElem.value).toBe('second'); + }); + test('should treat doctype nodes as unchanged', () => { // Can't update a doctype after the document is created, nor is there a use case for doing so // We just have to skip them, as it would be an error to try removing or inserting them diff --git a/src/Components/test/E2ETest/ServerRenderingTests/FormHandlingTests/FormWithParentBindingContextTest.cs b/src/Components/test/E2ETest/ServerRenderingTests/FormHandlingTests/FormWithParentBindingContextTest.cs index c74d0adc80e1..de53bb0e3e73 100644 --- a/src/Components/test/E2ETest/ServerRenderingTests/FormHandlingTests/FormWithParentBindingContextTest.cs +++ b/src/Components/test/E2ETest/ServerRenderingTests/FormHandlingTests/FormWithParentBindingContextTest.cs @@ -1337,6 +1337,26 @@ void AssertUiState(string expectedStringValue, bool expectedBoolValue) } } + [Fact] + public void RadioButtonGetsResetAfterSubmittingEnhancedForm() + { + GoTo("forms/form-with-checkbox-and-radio-button"); + + Assert.False(Browser.Exists(By.Id("checkbox")).Selected); + Assert.False(Browser.Exists(By.Id("radio-button")).Selected); + + Browser.Exists(By.Id("checkbox")).Click(); + Browser.Exists(By.Id("radio-button")).Click(); + + Assert.True(Browser.Exists(By.Id("checkbox")).Selected); + Assert.True(Browser.Exists(By.Id("radio-button")).Selected); + + Browser.Exists(By.Id("submit-button")).Click(); + + Assert.False(Browser.Exists(By.Id("checkbox")).Selected); + Assert.False(Browser.Exists(By.Id("radio-button")).Selected); + } + [Fact] public void SubmitButtonFormactionAttributeOverridesEnhancedFormAction() { diff --git a/src/Components/test/testassets/Components.TestServer/RazorComponents/Pages/Forms/FormWithCheckboxAndRadioButton.razor b/src/Components/test/testassets/Components.TestServer/RazorComponents/Pages/Forms/FormWithCheckboxAndRadioButton.razor new file mode 100644 index 000000000000..ec85763c723a --- /dev/null +++ b/src/Components/test/testassets/Components.TestServer/RazorComponents/Pages/Forms/FormWithCheckboxAndRadioButton.razor @@ -0,0 +1,8 @@ +@page "/forms/form-with-checkbox-and-radio-button" +

Form With Radio Button

+ +
+ + + +
From 858160c41854357bf578b65376b430154974a068 Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" <42748379+dotnet-maestro[bot]@users.noreply.github.com> Date: Thu, 23 Nov 2023 15:18:54 +0000 Subject: [PATCH 046/391] Update dependencies from https://github.com/dotnet/extensions build 20231122.3 (#52329) [release/8.0] Update dependencies from dotnet/extensions --- eng/Version.Details.xml | 8 ++++---- eng/Versions.props | 4 ++-- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 8cc8ceab4987..21b3190a12dd 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -397,13 +397,13 @@ https://github.com/dotnet/arcade 0aaeafef60933f87b0b50350313bb2fd77defb5d
- + https://github.com/dotnet/extensions - f34d120d2654057a31dc96d7f86dc42629044472 + c8383902da237c8efd61a37808e444ac9b838f59 - + https://github.com/dotnet/extensions - f34d120d2654057a31dc96d7f86dc42629044472 + c8383902da237c8efd61a37808e444ac9b838f59 https://github.com/nuget/nuget.client diff --git a/eng/Versions.props b/eng/Versions.props index a454517bf90e..d8c45a2c9c52 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -139,8 +139,8 @@ 8.0.0 8.0.0 - 8.1.0-preview.23569.1 - 8.1.0-preview.23569.1 + 8.1.0-preview.23572.3 + 8.1.0-preview.23572.3 8.0.0 8.0.0 From e18aefdea5b9fe9f9d258414c91fb496feee6eac Mon Sep 17 00:00:00 2001 From: DotNet Bot Date: Mon, 27 Nov 2023 18:43:06 +0000 Subject: [PATCH 047/391] [internal/release/8.0] Update dependencies from dnceng/internal/dotnet-runtime dnceng/internal/dotnet-efcore - explicitly reference system.text.json to avoid pre-build - Revert "Add source build metadata to System.Text.Json" - Add source build metadata to System.Text.Json --- NuGet.config | 8 ++-- eng/Version.Details.xml | 60 ++++++++++++++-------------- eng/Versions.props | 16 ++++---- eng/tools/RepoTasks/RepoTasks.csproj | 3 ++ 4 files changed, 45 insertions(+), 42 deletions(-) diff --git a/NuGet.config b/NuGet.config index 7b62ca98e153..4a75630d11cf 100644 --- a/NuGet.config +++ b/NuGet.config @@ -6,10 +6,10 @@ - + - + @@ -30,10 +30,10 @@ - + - + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 9fde9242be32..039d4029fd73 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -11,35 +11,35 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - a7a3adcc7922f093b9104f6153128df8fd1715ee + 04c2fa5bc221b49971c57706c37957465be552df https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - a7a3adcc7922f093b9104f6153128df8fd1715ee + 04c2fa5bc221b49971c57706c37957465be552df https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - a7a3adcc7922f093b9104f6153128df8fd1715ee + 04c2fa5bc221b49971c57706c37957465be552df https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - a7a3adcc7922f093b9104f6153128df8fd1715ee + 04c2fa5bc221b49971c57706c37957465be552df https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - a7a3adcc7922f093b9104f6153128df8fd1715ee + 04c2fa5bc221b49971c57706c37957465be552df https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - a7a3adcc7922f093b9104f6153128df8fd1715ee + 04c2fa5bc221b49971c57706c37957465be552df https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - a7a3adcc7922f093b9104f6153128df8fd1715ee + 04c2fa5bc221b49971c57706c37957465be552df https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - a7a3adcc7922f093b9104f6153128df8fd1715ee + 04c2fa5bc221b49971c57706c37957465be552df https://dev.azure.com/dnceng/internal/_git/dotnet-runtime @@ -55,7 +55,7 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 72e5ae975785990e904372573c93dd661279f662 + d682195447d43c6840bf1e360a2e60a0afa60c41 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime @@ -121,9 +121,9 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime 5535e31a712343a63f5d7d796cd874e563e5ac14 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 5535e31a712343a63f5d7d796cd874e563e5ac14 + d682195447d43c6840bf1e360a2e60a0afa60c41 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime @@ -177,17 +177,17 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime 5535e31a712343a63f5d7d796cd874e563e5ac14 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 72e5ae975785990e904372573c93dd661279f662 + d682195447d43c6840bf1e360a2e60a0afa60c41 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime 5535e31a712343a63f5d7d796cd874e563e5ac14 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 72e5ae975785990e904372573c93dd661279f662 + d682195447d43c6840bf1e360a2e60a0afa60c41 https://github.com/dotnet/source-build-externals @@ -255,9 +255,9 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime 5535e31a712343a63f5d7d796cd874e563e5ac14 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 5535e31a712343a63f5d7d796cd874e563e5ac14 + d682195447d43c6840bf1e360a2e60a0afa60c41 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime @@ -277,24 +277,24 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 72e5ae975785990e904372573c93dd661279f662 + d682195447d43c6840bf1e360a2e60a0afa60c41 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 72e5ae975785990e904372573c93dd661279f662 + d682195447d43c6840bf1e360a2e60a0afa60c41 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 72e5ae975785990e904372573c93dd661279f662 + d682195447d43c6840bf1e360a2e60a0afa60c41 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime 5535e31a712343a63f5d7d796cd874e563e5ac14 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 5535e31a712343a63f5d7d796cd874e563e5ac14 + d682195447d43c6840bf1e360a2e60a0afa60c41 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime @@ -318,20 +318,20 @@ --> https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 72e5ae975785990e904372573c93dd661279f662 + d682195447d43c6840bf1e360a2e60a0afa60c41 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 72e5ae975785990e904372573c93dd661279f662 + d682195447d43c6840bf1e360a2e60a0afa60c41 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 72e5ae975785990e904372573c93dd661279f662 + d682195447d43c6840bf1e360a2e60a0afa60c41 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 72e5ae975785990e904372573c93dd661279f662 + d682195447d43c6840bf1e360a2e60a0afa60c41 https://github.com/dotnet/xdt @@ -368,9 +368,9 @@ - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 5535e31a712343a63f5d7d796cd874e563e5ac14 + d682195447d43c6840bf1e360a2e60a0afa60c41 https://github.com/dotnet/winforms diff --git a/eng/Versions.props b/eng/Versions.props index 0047a5a7568d..90474192204c 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -71,7 +71,7 @@ 8.0.1 8.0.1 8.0.1 - 8.0.1-servicing.23572.10 + 8.0.1-servicing.23572.22 8.0.0 8.0.0 8.0.0 @@ -92,7 +92,7 @@ 8.0.0 8.0.0 8.0.0 - 8.0.0-rtm.23531.3 + 8.0.1-servicing.23572.22 8.0.0 8.0.0 8.0.0 @@ -106,9 +106,9 @@ 8.0.0 8.0.0 8.0.0 - 8.0.1 + 8.0.2 8.0.0 - 8.0.1-servicing.23572.10 + 8.0.1-servicing.23572.22 8.0.0 8.0.0 8.0.0 @@ -124,16 +124,16 @@ 8.0.0 8.0.0 8.0.0 - 8.0.0 + 8.0.1 8.0.0 8.0.0 8.0.0 - 8.0.1-servicing.23572.10 + 8.0.1-servicing.23572.22 - 8.0.0-rtm.23531.3 + 8.0.1-servicing.23572.22 8.0.0 - 8.0.0 + 8.0.1 8.0.0 8.0.0 8.0.0 diff --git a/eng/tools/RepoTasks/RepoTasks.csproj b/eng/tools/RepoTasks/RepoTasks.csproj index 42c3c13fbc24..19789266e477 100644 --- a/eng/tools/RepoTasks/RepoTasks.csproj +++ b/eng/tools/RepoTasks/RepoTasks.csproj @@ -19,6 +19,9 @@ from the dependency on NuGet.Packaging which would cause a source-built prebuilt. --> + + From 8bf4d2de209577d15306635402a594de02fa4d53 Mon Sep 17 00:00:00 2001 From: Javier Calvarro Nelson Date: Mon, 27 Nov 2023 21:15:05 +0100 Subject: [PATCH 048/391] [Blazor] Try to load the assembly when finding out a root component or a parameter in webassembly (#52331) (#52351) # Load assembly when finding root component or parameter in WebAssembly This change allows the system to load the assembly when a root component is defined in an RCL and rendered in WebAssembly, even if the assembly is not yet loaded into memory. ## Description When a root component is defined in an RCL and rendered in WebAssembly, it might happen that the assembly for the component is not yet loaded into memory if the app has not used any type from the dll. This causes the framework to fail finding the assembly when it tries to look for it in the list of loaded assemblies. The fix is to detect this in webassembly and try to load the root component type at that point. Same with the component parameters. Fixes #52129 ## Customer Impact A Blazor Web app may experience a failure trying to render a root component in WebAssembly, when the component is defined in a Razor Class Library. This will happen if the assembly containing the component hasn't yet been loaded on the client, and the app is trying to render that component. ## Regression? - [ ] Yes - [x] No ## Risk - [ ] High - [ ] Medium - [x] Low The assembly will already be downloaded by JS and is ready to be loaded. ## Verification - [x] Manual (required) - [x] Automated There was manual verification that the fix addressed the issue and it was automated into an E2E test. ## Packaging changes reviewed? - [ ] Yes - [ ] No - [x] N/A There are no packaging changes associated with this fix. ## When servicing release/2.1 - [ ] Make necessary changes in eng/PatchConfig.props --- AspNetCore.sln | 19 ++++++++++++++++++ src/Components/ComponentsNoDeps.slnf | 1 + .../src/ComponentParametersTypeCache.cs | 20 +++++++++++++++++-- .../Shared/src/RootComponentTypeCache.cs | 20 +++++++++++++++++-- .../ServerRenderingTests/InteractivityTest.cs | 9 +++++++++ ...erComponentWasmFromRazorClassLibrary.razor | 5 +++++ .../Components.WasmMinimal.csproj | 1 + .../Components.WasmMinimal/Program.cs | 3 --- .../NotExplicitlyLoadedFromWasmCode.razor | 16 +++++++++++++++ .../NotReferencedInWasmCodePackage.csproj | 14 +++++++++++++ 10 files changed, 101 insertions(+), 7 deletions(-) create mode 100644 src/Components/test/testassets/Components.TestServer/RazorComponents/Pages/RenderComponentWasmFromRazorClassLibrary.razor create mode 100644 src/Components/test/testassets/NotReferencedInWasmCodePackage/NotExplicitlyLoadedFromWasmCode.razor create mode 100644 src/Components/test/testassets/NotReferencedInWasmCodePackage/NotReferencedInWasmCodePackage.csproj diff --git a/AspNetCore.sln b/AspNetCore.sln index 500f31ff370c..a41bb737b608 100644 --- a/AspNetCore.sln +++ b/AspNetCore.sln @@ -1780,6 +1780,8 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AspNetCore.Output EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AspNetCore.OutputCaching.StackExchangeRedis", "src\Middleware\Microsoft.AspNetCore.OutputCaching.StackExchangeRedis\src\Microsoft.AspNetCore.OutputCaching.StackExchangeRedis.csproj", "{F232B503-D412-45EE-8B31-EFD46B9FA302}" EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "NotReferencedInWasmCodePackage", "src\Components\test\testassets\NotReferencedInWasmCodePackage\NotReferencedInWasmCodePackage.csproj", "{433F91E4-E39D-4EB0-B798-2998B3969A2C}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -10717,6 +10719,22 @@ Global {F232B503-D412-45EE-8B31-EFD46B9FA302}.Release|x64.Build.0 = Release|Any CPU {F232B503-D412-45EE-8B31-EFD46B9FA302}.Release|x86.ActiveCfg = Release|Any CPU {F232B503-D412-45EE-8B31-EFD46B9FA302}.Release|x86.Build.0 = Release|Any CPU + {433F91E4-E39D-4EB0-B798-2998B3969A2C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {433F91E4-E39D-4EB0-B798-2998B3969A2C}.Debug|Any CPU.Build.0 = Debug|Any CPU + {433F91E4-E39D-4EB0-B798-2998B3969A2C}.Debug|arm64.ActiveCfg = Debug|Any CPU + {433F91E4-E39D-4EB0-B798-2998B3969A2C}.Debug|arm64.Build.0 = Debug|Any CPU + {433F91E4-E39D-4EB0-B798-2998B3969A2C}.Debug|x64.ActiveCfg = Debug|Any CPU + {433F91E4-E39D-4EB0-B798-2998B3969A2C}.Debug|x64.Build.0 = Debug|Any CPU + {433F91E4-E39D-4EB0-B798-2998B3969A2C}.Debug|x86.ActiveCfg = Debug|Any CPU + {433F91E4-E39D-4EB0-B798-2998B3969A2C}.Debug|x86.Build.0 = Debug|Any CPU + {433F91E4-E39D-4EB0-B798-2998B3969A2C}.Release|Any CPU.ActiveCfg = Release|Any CPU + {433F91E4-E39D-4EB0-B798-2998B3969A2C}.Release|Any CPU.Build.0 = Release|Any CPU + {433F91E4-E39D-4EB0-B798-2998B3969A2C}.Release|arm64.ActiveCfg = Release|Any CPU + {433F91E4-E39D-4EB0-B798-2998B3969A2C}.Release|arm64.Build.0 = Release|Any CPU + {433F91E4-E39D-4EB0-B798-2998B3969A2C}.Release|x64.ActiveCfg = Release|Any CPU + {433F91E4-E39D-4EB0-B798-2998B3969A2C}.Release|x64.Build.0 = Release|Any CPU + {433F91E4-E39D-4EB0-B798-2998B3969A2C}.Release|x86.ActiveCfg = Release|Any CPU + {433F91E4-E39D-4EB0-B798-2998B3969A2C}.Release|x86.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -11596,6 +11614,7 @@ Global {CAEB7F57-28A8-451C-95D0-45FCAA3C726C} = {C445B129-0A4D-41F5-8347-6534B6B12303} {A939893A-B3CD-48F6-80D3-340C8A6E275B} = {AA5ABFBC-177C-421E-B743-005E0FD1248B} {F232B503-D412-45EE-8B31-EFD46B9FA302} = {AA5ABFBC-177C-421E-B743-005E0FD1248B} + {433F91E4-E39D-4EB0-B798-2998B3969A2C} = {6126DCE4-9692-4EE2-B240-C65743572995} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {3E8720B3-DBDD-498C-B383-2CC32A054E8F} diff --git a/src/Components/ComponentsNoDeps.slnf b/src/Components/ComponentsNoDeps.slnf index 3af799aad35f..afb8f5ce1275 100644 --- a/src/Components/ComponentsNoDeps.slnf +++ b/src/Components/ComponentsNoDeps.slnf @@ -54,6 +54,7 @@ "src\\Components\\test\\testassets\\ComponentsApp.Server\\ComponentsApp.Server.csproj", "src\\Components\\test\\testassets\\GlobalizationWasmApp\\GlobalizationWasmApp.csproj", "src\\Components\\test\\testassets\\LazyTestContentPackage\\LazyTestContentPackage.csproj", + "src\\Components\\test\\testassets\\NotReferencedInWasmCodePackage\\NotReferencedInWasmCodePackage.csproj", "src\\Components\\test\\testassets\\TestContentPackage\\TestContentPackage.csproj" ] } diff --git a/src/Components/Shared/src/ComponentParametersTypeCache.cs b/src/Components/Shared/src/ComponentParametersTypeCache.cs index 6d0992362cf3..281823ba4c79 100644 --- a/src/Components/Shared/src/ComponentParametersTypeCache.cs +++ b/src/Components/Shared/src/ComponentParametersTypeCache.cs @@ -40,10 +40,26 @@ internal sealed class ComponentParametersTypeCache if (assembly == null) { - return null; + // It might be that the assembly is not loaded yet, this can happen if the root component is defined in a + // different assembly than the app and there is no reference from the app assembly to any type in the class + // library that has been used yet. + // In this case, try and load the assembly and look up the type again. + // We only need to do this in the browser because its a different process, in the server the assembly will already + // be loaded. + if (OperatingSystem.IsBrowser()) + { + try + { + assembly = Assembly.Load(key.Assembly); + } + catch + { + // It's fine to ignore the exception, since we'll return null below. + } + } } - return assembly.GetType(key.Type, throwOnError: false, ignoreCase: false); + return assembly?.GetType(key.Type, throwOnError: false, ignoreCase: false); } private struct Key : IEquatable diff --git a/src/Components/Shared/src/RootComponentTypeCache.cs b/src/Components/Shared/src/RootComponentTypeCache.cs index 9949bf5faee4..ce4ceba5104e 100644 --- a/src/Components/Shared/src/RootComponentTypeCache.cs +++ b/src/Components/Shared/src/RootComponentTypeCache.cs @@ -41,10 +41,26 @@ internal sealed class RootComponentTypeCache if (assembly == null) { - return null; + // It might be that the assembly is not loaded yet, this can happen if the root component is defined in a + // different assembly than the app and there is no reference from the app assembly to any type in the class + // library that has been used yet. + // In this case, try and load the assembly and look up the type again. + // We only need to do this in the browser because its a different process, in the server the assembly will already + // be loaded. + if (OperatingSystem.IsBrowser()) + { + try + { + assembly = Assembly.Load(key.Assembly); + } + catch + { + // It's fine to ignore the exception, since we'll return null below. + } + } } - return assembly.GetType(key.Type, throwOnError: false, ignoreCase: false); + return assembly?.GetType(key.Type, throwOnError: false, ignoreCase: false); } private readonly struct Key : IEquatable diff --git a/src/Components/test/E2ETest/ServerRenderingTests/InteractivityTest.cs b/src/Components/test/E2ETest/ServerRenderingTests/InteractivityTest.cs index 36c0d764114f..37dc684c2e74 100644 --- a/src/Components/test/E2ETest/ServerRenderingTests/InteractivityTest.cs +++ b/src/Components/test/E2ETest/ServerRenderingTests/InteractivityTest.cs @@ -68,6 +68,15 @@ public void CanRenderInteractiveWebAssemblyComponentFromRazorClassLibrary() Browser.Equal("4", () => Browser.FindElement(By.Id("count-wasm-shared")).Text); } + [Fact] + public void CanRenderInteractiveWebAssemblyComponentFromRazorClassLibraryThatIsNotExplicitlyReferenced() + { + Navigate($"{ServerPathBase}/not-explicitly-referenced-in-wasm-code"); + + // The element with id success is only rendered when webassembly has successfully loaded the component. + Browser.Exists(By.Id("success")); + } + [Fact] public void CanRenderInteractiveServerAndWebAssemblyComponentsAtTheSameTime() { diff --git a/src/Components/test/testassets/Components.TestServer/RazorComponents/Pages/RenderComponentWasmFromRazorClassLibrary.razor b/src/Components/test/testassets/Components.TestServer/RazorComponents/Pages/RenderComponentWasmFromRazorClassLibrary.razor new file mode 100644 index 000000000000..a09bbf70096b --- /dev/null +++ b/src/Components/test/testassets/Components.TestServer/RazorComponents/Pages/RenderComponentWasmFromRazorClassLibrary.razor @@ -0,0 +1,5 @@ +@page "/not-explicitly-referenced-in-wasm-code" +@using NotReferencedInWasmCodePackage +

RenderComponentWasmFromRazorClassLibrary

+ + diff --git a/src/Components/test/testassets/Components.WasmMinimal/Components.WasmMinimal.csproj b/src/Components/test/testassets/Components.WasmMinimal/Components.WasmMinimal.csproj index a02754633bb7..3b5fd66e8188 100644 --- a/src/Components/test/testassets/Components.WasmMinimal/Components.WasmMinimal.csproj +++ b/src/Components/test/testassets/Components.WasmMinimal/Components.WasmMinimal.csproj @@ -12,6 +12,7 @@ + diff --git a/src/Components/test/testassets/Components.WasmMinimal/Program.cs b/src/Components/test/testassets/Components.WasmMinimal/Program.cs index e4764e35ea48..0dc0d12a030a 100644 --- a/src/Components/test/testassets/Components.WasmMinimal/Program.cs +++ b/src/Components/test/testassets/Components.WasmMinimal/Program.cs @@ -1,12 +1,9 @@ // Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. -using System.Reflection; using Components.TestServer.Services; using Microsoft.AspNetCore.Components.WebAssembly.Hosting; -Assembly.Load(nameof(TestContentPackage)); - var builder = WebAssemblyHostBuilder.CreateDefault(args); builder.Services.AddSingleton(); diff --git a/src/Components/test/testassets/NotReferencedInWasmCodePackage/NotExplicitlyLoadedFromWasmCode.razor b/src/Components/test/testassets/NotReferencedInWasmCodePackage/NotExplicitlyLoadedFromWasmCode.razor new file mode 100644 index 000000000000..e6f39de63259 --- /dev/null +++ b/src/Components/test/testassets/NotReferencedInWasmCodePackage/NotExplicitlyLoadedFromWasmCode.razor @@ -0,0 +1,16 @@ +

NotExplicitlyLoadedFromWasmCode

+ +

Represents a component that wasn't explicitly loaded from webassembly code by a direct type reference. +

+ +

Instead, this component is only rendered in webassembly mode from the server and not loaded into the application domain until we explicitly load it via a call to Assembly.Load when we try to render the root component. +

+ +@if(OperatingSystem.IsBrowser()) +{ +

Running in webassembly mode.

+} +else +{ +

Running in server mode.

+} diff --git a/src/Components/test/testassets/NotReferencedInWasmCodePackage/NotReferencedInWasmCodePackage.csproj b/src/Components/test/testassets/NotReferencedInWasmCodePackage/NotReferencedInWasmCodePackage.csproj new file mode 100644 index 000000000000..a44839a08511 --- /dev/null +++ b/src/Components/test/testassets/NotReferencedInWasmCodePackage/NotReferencedInWasmCodePackage.csproj @@ -0,0 +1,14 @@ + + + + $(DefaultNetCoreTargetFramework) + library + _content/NotReferencedInWasmCodePackage + + + + + + + + From 6a745a418b4d06dae359b06c414eb75210629dae Mon Sep 17 00:00:00 2001 From: Javier Calvarro Nelson Date: Mon, 27 Nov 2023 22:49:30 +0100 Subject: [PATCH 049/391] [Blazor] Update MSBuild targets so they get imported correctly (8.0) (#52300) ## Issue: Microsoft.AspNetCore.Components.WebView.props is not imported by Maui applications This issue pertains to the non-importation of Microsoft.AspNetCore.Components.WebView.props by Maui applications. The file has been relocated within the package to ensure its correct pickup and importation during the restore/build process. Fixes #42348. ## Description The inability of Maui applications to rely on JavaScript (JS) initializers, particularly in the case of Fluent UI, is impacted by this issue. The runtime searches for the initializer's definition in a specific location, which is configured in the props file of the package. ## Impact on Customers The malfunction of JS initializers in Blazor Hybrid has significant implications for both library authors and end users. Library authors may find their libraries' functionality restricted due to this bug. JS initializers, a feature in Blazor, enable library authors to inject scripts onto the page at the start of the app. These scripts can augment functionality, enhance user interfaces, or facilitate third-party service integration. For instance, a library author might employ a JS initializer to inject a script that integrates with a mapping service, thereby providing real-time location updates within a Blazor app. This functionality would be unavailable in Blazor Hybrid apps due to this bug. End users may be unable to use certain libraries, or those libraries may not function as anticipated in Blazor Hybrid apps. If a user were to use a Blazor Hybrid app that relies on the aforementioned mapping library, they would not receive the real-time location updates that they would in a regular Blazor app. This could result in an inferior user experience, and in some cases, render the app unusable. Users and library authors are compelled to manually inject the script onto the page, and some functionality (like configuring Blazor before it starts) is not available in this mode. ## Regression? - [ ] Yes - [X] No ## Risk - [ ] High - [ ] Medium - [X] Low The failure to load a file from a NuGet package impacts the build. The change causes the file to load at build time, enabling the rest of the pipeline to function as expected. ## Verification - [X] Manual (required) - [ ] Automated The changes were made locally on the package cache and ensured the file got imported. ## Packaging changes reviewed? - [ ] Yes - [ ] No - [x] N/A ## When servicing release/2.1 - [ ] Make necessary changes in eng/PatchConfig.props --- .../testassets/PhotinoTestApp/PhotinoTestApp.csproj | 2 +- .../WebView/src/Microsoft.AspNetCore.Components.WebView.csproj | 2 +- .../Microsoft.AspNetCore.Components.WebView.props | 0 .../Microsoft.AspNetCore.Components.WebView.props | 3 +++ .../Microsoft.AspNetCore.Components.WebView.props | 3 +++ 5 files changed, 8 insertions(+), 2 deletions(-) rename src/Components/WebView/WebView/src/{buildTransitive/any => build}/Microsoft.AspNetCore.Components.WebView.props (100%) create mode 100644 src/Components/WebView/WebView/src/buildMultiTargeting/Microsoft.AspNetCore.Components.WebView.props create mode 100644 src/Components/WebView/WebView/src/buildTransitive/Microsoft.AspNetCore.Components.WebView.props diff --git a/src/Components/WebView/Samples/PhotinoPlatform/testassets/PhotinoTestApp/PhotinoTestApp.csproj b/src/Components/WebView/Samples/PhotinoPlatform/testassets/PhotinoTestApp/PhotinoTestApp.csproj index a9c17fc0d893..a1e10bdc677c 100644 --- a/src/Components/WebView/Samples/PhotinoPlatform/testassets/PhotinoTestApp/PhotinoTestApp.csproj +++ b/src/Components/WebView/Samples/PhotinoPlatform/testassets/PhotinoTestApp/PhotinoTestApp.csproj @@ -7,7 +7,7 @@ false
- + diff --git a/src/Components/WebView/WebView/src/Microsoft.AspNetCore.Components.WebView.csproj b/src/Components/WebView/WebView/src/Microsoft.AspNetCore.Components.WebView.csproj index 5d9fc8dad81e..c0bbf58dcf44 100644 --- a/src/Components/WebView/WebView/src/Microsoft.AspNetCore.Components.WebView.csproj +++ b/src/Components/WebView/WebView/src/Microsoft.AspNetCore.Components.WebView.csproj @@ -34,7 +34,7 @@ - + diff --git a/src/Components/WebView/WebView/src/buildTransitive/any/Microsoft.AspNetCore.Components.WebView.props b/src/Components/WebView/WebView/src/build/Microsoft.AspNetCore.Components.WebView.props similarity index 100% rename from src/Components/WebView/WebView/src/buildTransitive/any/Microsoft.AspNetCore.Components.WebView.props rename to src/Components/WebView/WebView/src/build/Microsoft.AspNetCore.Components.WebView.props diff --git a/src/Components/WebView/WebView/src/buildMultiTargeting/Microsoft.AspNetCore.Components.WebView.props b/src/Components/WebView/WebView/src/buildMultiTargeting/Microsoft.AspNetCore.Components.WebView.props new file mode 100644 index 000000000000..1a28c40b8013 --- /dev/null +++ b/src/Components/WebView/WebView/src/buildMultiTargeting/Microsoft.AspNetCore.Components.WebView.props @@ -0,0 +1,3 @@ + + + diff --git a/src/Components/WebView/WebView/src/buildTransitive/Microsoft.AspNetCore.Components.WebView.props b/src/Components/WebView/WebView/src/buildTransitive/Microsoft.AspNetCore.Components.WebView.props new file mode 100644 index 000000000000..1a28c40b8013 --- /dev/null +++ b/src/Components/WebView/WebView/src/buildTransitive/Microsoft.AspNetCore.Components.WebView.props @@ -0,0 +1,3 @@ + + + From 4373734befc0ea1367489bf3def203b2d4bad074 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 27 Nov 2023 13:59:35 -0800 Subject: [PATCH 050/391] [release/8.0] [Blazor] Fix type name hashing when the type has multibyte characters (#52316) Backport of #52232 to release/8.0 /cc @MackinnonBuck # [Blazor] Fix type name hashing when the type has multibyte characters Fixes an issue where an exception gets thrown if a render mode boundary component has a type whose full name contains multibyte characters. ## Description The bug results in an exception getting thrown if the type of a component with a render mode has a full name containing multibyte characters. It especially affects cases where a component (or the namespace it's defined in) contains non-Latin characters. This PR fixes the issue by allocating a constant-sized stack buffer and falling back to a heap-allocated buffer when the type name is too long. Fixes #50879 Fixes #52109 ## Customer Impact Blazor Apps with non-Latin code might not be able to use interactivity. The workaround is to ensure that the full name of any component serving as a render mode boundary does not contain multibyte characters. ## Regression? - [ ] Yes - [X] No Render modes are a new feature in .NET 8, so this bug is not a regression. ## Risk - [ ] High - [ ] Medium - [X] Low The fix is straightforward and we have new automated tests for this scenario. ## Verification - [X] Manual (required) - [X] Automated ## Packaging changes reviewed? - [ ] Yes - [ ] No - [X] N/A --------- Co-authored-by: Mackinnon Buck --- .../src/Rendering/SSRRenderModeBoundary.cs | 24 +----- .../Endpoints/src/Rendering/TypeNameHash.cs | 34 ++++++++ .../Endpoints/test/TypeNameHashTest.cs | 81 +++++++++++++++++++ .../MultibyteComponentTypeNameTest.cs | 38 +++++++++ ...deringComponentWithMultibyteTypeName.razor | 36 +++++++++ ...yte\303\207haracterCompo\303\261ent.razor" | 27 +++++++ 6 files changed, 217 insertions(+), 23 deletions(-) create mode 100644 src/Components/Endpoints/src/Rendering/TypeNameHash.cs create mode 100644 src/Components/Endpoints/test/TypeNameHashTest.cs create mode 100644 src/Components/test/E2ETest/ServerRenderingTests/MultibyteComponentTypeNameTest.cs create mode 100644 src/Components/test/testassets/Components.TestServer/RazorComponents/Pages/Rendering/PageRenderingComponentWithMultibyteTypeName.razor create mode 100644 "src/Components/test/testassets/TestContentPackage/M\303\273ltibyte\303\207haracterCompo\303\261ent.razor" diff --git a/src/Components/Endpoints/src/Rendering/SSRRenderModeBoundary.cs b/src/Components/Endpoints/src/Rendering/SSRRenderModeBoundary.cs index 9695ccbe3d99..e3d498d139bd 100644 --- a/src/Components/Endpoints/src/Rendering/SSRRenderModeBoundary.cs +++ b/src/Components/Endpoints/src/Rendering/SSRRenderModeBoundary.cs @@ -5,8 +5,6 @@ using System.Diagnostics; using System.Diagnostics.CodeAnalysis; using System.Globalization; -using System.Security.Cryptography; -using System.Text; using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Components.Rendering; using Microsoft.AspNetCore.Components.Web; @@ -192,7 +190,7 @@ public ComponentMarker ToMarker(HttpContext httpContext, int sequence, object? c private ComponentMarkerKey GenerateMarkerKey(int sequence, object? componentKey) { - var componentTypeNameHash = _componentTypeNameHashCache.GetOrAdd(_componentType, ComputeComponentTypeNameHash); + var componentTypeNameHash = _componentTypeNameHashCache.GetOrAdd(_componentType, TypeNameHash.Compute); var sequenceString = sequence.ToString(CultureInfo.InvariantCulture); var locationHash = $"{componentTypeNameHash}:{sequenceString}"; @@ -204,24 +202,4 @@ private ComponentMarkerKey GenerateMarkerKey(int sequence, object? componentKey) FormattedComponentKey = formattedComponentKey, }; } - - private static string ComputeComponentTypeNameHash(Type componentType) - { - if (componentType.FullName is not { } typeName) - { - throw new InvalidOperationException($"An invalid component type was used in {nameof(SSRRenderModeBoundary)}."); - } - - var typeNameLength = typeName.Length; - var typeNameBytes = typeNameLength < 1024 - ? stackalloc byte[typeNameLength] - : new byte[typeNameLength]; - - Encoding.UTF8.GetBytes(typeName, typeNameBytes); - - Span typeNameHashBytes = stackalloc byte[SHA1.HashSizeInBytes]; - SHA1.HashData(typeNameBytes, typeNameHashBytes); - - return Convert.ToHexString(typeNameHashBytes); - } } diff --git a/src/Components/Endpoints/src/Rendering/TypeNameHash.cs b/src/Components/Endpoints/src/Rendering/TypeNameHash.cs new file mode 100644 index 000000000000..048551ee5d83 --- /dev/null +++ b/src/Components/Endpoints/src/Rendering/TypeNameHash.cs @@ -0,0 +1,34 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. + +using System.Security.Cryptography; +using System.Text; + +namespace Microsoft.AspNetCore.Components.Endpoints; + +// Internal for testing. +internal class TypeNameHash +{ + public const int MaxStackBufferSize = 1024; + + public static string Compute(Type type) + { + if (type.FullName is not { } typeName) + { + throw new InvalidOperationException($"Cannot compute a hash for a type without a {nameof(Type.FullName)}."); + } + + Span typeNameBytes = stackalloc byte[MaxStackBufferSize]; + + if (!Encoding.UTF8.TryGetBytes(typeName, typeNameBytes, out var written)) + { + typeNameBytes = Encoding.UTF8.GetBytes(typeName); + written = typeNameBytes.Length; + } + + Span typeNameHashBytes = stackalloc byte[SHA256.HashSizeInBytes]; + SHA256.HashData(typeNameBytes[..written], typeNameHashBytes); + + return Convert.ToHexString(typeNameHashBytes); + } +} diff --git a/src/Components/Endpoints/test/TypeNameHashTest.cs b/src/Components/Endpoints/test/TypeNameHashTest.cs new file mode 100644 index 000000000000..92fdf08bd009 --- /dev/null +++ b/src/Components/Endpoints/test/TypeNameHashTest.cs @@ -0,0 +1,81 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. + +using System.Security.Cryptography; + +namespace Microsoft.AspNetCore.Components.Endpoints; + +public class TypeNameHashTest +{ + // In these tests, we're mostly interested in checking that the hash function succeeds + // for any type with a valid name. We'll also do some basic sanity checking by ensuring + // that the string representation of the hash has the expected length. + + // We currently use a hex-encoded SHA256 hash, so there should be two characters per byte + // of encoded data. + private const int ExpectedHashLength = SHA256.HashSizeInBytes * 2; + + [Fact] + public void CanComputeHashForTypeWithBasicName() + { + // Act + var hash = TypeNameHash.Compute(typeof(ClassWithBasicName)); + + // Assert + Assert.Equal(ExpectedHashLength, hash.Length); + } + + [Fact] + public void CanComputeHashForTypeWithMultibyteCharacters() + { + // Act + var hash = TypeNameHash.Compute(typeof(ClássWïthMûltibyteÇharacters)); + + // Assert + Assert.Equal(ExpectedHashLength, hash.Length); + } + + [Fact] + public void CanComputeHashForAnonymousType() + { + // Arrange + var type = new { Foo = "bar" }.GetType(); + + // Act + var hash = TypeNameHash.Compute(type); + + // Assert + Assert.Equal(ExpectedHashLength, hash.Length); + } + + [Fact] + public void CanComputeHashForTypeWithNameLongerThanMaxStackBufferSize() + { + // Arrange + // We need to use a type with a long name, so we'll use a large tuple. + // We have an assert later in this test to sanity check that the type + // name is indeed longer than the max stack buffer size. + var type = (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12).GetType(); + + // Act + var hash = TypeNameHash.Compute(type); + + // Assert + Assert.True(type.FullName.Length > TypeNameHash.MaxStackBufferSize); + Assert.Equal(ExpectedHashLength, hash.Length); + } + + [Fact] + public void ThrowsIfTypeHasNoName() + { + // Arrange + var type = typeof(Nullable<>).GetGenericArguments()[0]; + + // Act/Assert + var ex = Assert.Throws(() => TypeNameHash.Compute(type)); + Assert.Equal($"Cannot compute a hash for a type without a {nameof(Type.FullName)}.", ex.Message); + } + + class ClassWithBasicName; + class ClássWïthMûltibyteÇharacters; +} diff --git a/src/Components/test/E2ETest/ServerRenderingTests/MultibyteComponentTypeNameTest.cs b/src/Components/test/E2ETest/ServerRenderingTests/MultibyteComponentTypeNameTest.cs new file mode 100644 index 000000000000..d795826a45ed --- /dev/null +++ b/src/Components/test/E2ETest/ServerRenderingTests/MultibyteComponentTypeNameTest.cs @@ -0,0 +1,38 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. + +using Components.TestServer.RazorComponents; +using Microsoft.AspNetCore.Components.E2ETest.Infrastructure; +using Microsoft.AspNetCore.Components.E2ETest.Infrastructure.ServerFixtures; +using Microsoft.AspNetCore.E2ETesting; +using OpenQA.Selenium; +using TestServer; +using Xunit.Abstractions; + +namespace Microsoft.AspNetCore.Components.E2ETests.ServerRenderingTests; + +public class MultibyteComponentTypeNameTest : ServerTestBase>> +{ + public MultibyteComponentTypeNameTest( + BrowserFixture browserFixture, + BasicTestAppServerSiteFixture> serverFixture, + ITestOutputHelper output) + : base(browserFixture, serverFixture, output) + { + } + + [Theory] + [InlineData("server")] + [InlineData("webassembly")] + public void CanRenderInteractiveComponentsWithMultibyteName(string renderMode) + { + Navigate($"{ServerPathBase}/multibyte-character-component/{renderMode}"); + + Browser.Equal("True", () => Browser.FindElement(By.ClassName("is-interactive")).Text); + Browser.Equal("0", () => Browser.FindElement(By.ClassName("count")).Text); + + Browser.FindElement(By.ClassName("increment")).Click(); + + Browser.Equal("1", () => Browser.FindElement(By.ClassName("count")).Text); + } +} diff --git a/src/Components/test/testassets/Components.TestServer/RazorComponents/Pages/Rendering/PageRenderingComponentWithMultibyteTypeName.razor b/src/Components/test/testassets/Components.TestServer/RazorComponents/Pages/Rendering/PageRenderingComponentWithMultibyteTypeName.razor new file mode 100644 index 000000000000..20745a436cb4 --- /dev/null +++ b/src/Components/test/testassets/Components.TestServer/RazorComponents/Pages/Rendering/PageRenderingComponentWithMultibyteTypeName.razor @@ -0,0 +1,36 @@ +@page "/multibyte-character-component/{renderModeString?}" +@using TestContentPackage + +

Page rendering component with multibyte type name

+ +@if (_renderMode is null) +{ +

+ Warning: Render mode should be specified as a route parameter and have the value 'server' or 'webassembly'. +

+ +

+ Defaulting to a null render mode. +

+} + + + +@code { + private IComponentRenderMode? _renderMode; + + [Parameter] + public string? RenderModeString { get; set; } + + protected override void OnInitialized() + { + if (string.Equals("server", RenderModeString, StringComparison.OrdinalIgnoreCase)) + { + _renderMode = RenderMode.InteractiveServer; + } + else if (string.Equals("webassembly", RenderModeString, StringComparison.OrdinalIgnoreCase)) + { + _renderMode = RenderMode.InteractiveWebAssembly; + } + } +} diff --git "a/src/Components/test/testassets/TestContentPackage/M\303\273ltibyte\303\207haracterCompo\303\261ent.razor" "b/src/Components/test/testassets/TestContentPackage/M\303\273ltibyte\303\207haracterCompo\303\261ent.razor" new file mode 100644 index 000000000000..da1fb1fe99d9 --- /dev/null +++ "b/src/Components/test/testassets/TestContentPackage/M\303\273ltibyte\303\207haracterCompo\303\261ent.razor" @@ -0,0 +1,27 @@ +

+ + Count: @_count +

+ +

+ Is interactive: @_isInteractive +

+ +@code { + private int _count = 0; + private bool _isInteractive; + + private void IncrementCount() + { + _count++; + } + + protected override void OnAfterRender(bool firstRender) + { + if (firstRender) + { + _isInteractive = true; + StateHasChanged(); + } + } +} From 8b3f5333523ac4f3a7520c5c9261ac6f2a2b6b23 Mon Sep 17 00:00:00 2001 From: Matt Mitchell Date: Mon, 27 Nov 2023 23:27:00 +0000 Subject: [PATCH 051/391] Merged PR 35423: Updated IdentityModel to 7.1.2 --- eng/Version.Details.xml | 6 +++--- eng/Versions.props | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 039d4029fd73..fb1732df6ffe 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -189,9 +189,9 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime d682195447d43c6840bf1e360a2e60a0afa60c41
- - https://github.com/dotnet/source-build-externals - e844aa02a05b90d8cbe499676ec6ee0f19ec4980 + + https://dev.azure.com/dnceng/internal/_git/dotnet-source-build-externals + 0f0f1f0f33830f27ed0ff357145d2464b96b1a3e diff --git a/eng/Versions.props b/eng/Versions.props index 90474192204c..84d1a6dfab5b 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -12,7 +12,7 @@ true - 7.0.3 + 7.1.2 @@ -165,7 +165,7 @@ 8.0.0-beta.23564.4 8.0.0-beta.23564.4 - 8.0.0-alpha.1.23570.1 + 8.0.0-alpha.1.23577.6 8.0.0-alpha.1.23565.1 From c9099558025f2738c191814a5360a1e7e334ae62 Mon Sep 17 00:00:00 2001 From: Stephen Halter Date: Mon, 27 Nov 2023 19:32:05 -0800 Subject: [PATCH 052/391] Improve Blazor project template (#52234) # Use consistent code style in Blazor project templates - Removed usage of top-level statements in client project if "Do not use top-level statements" is selected - Removed extra "@" in `@render-mode` values - Always use `typeof(Namespace._Imports).Assembly` instead of `typeof(Counter).Assembly` so the compilation does not break when the sample Counter component is removed, and so the code is more consistent with how it is when no sample content is generated - Added Account/AccessDenied endpoint to individual auth option to match Identity UI razor pages. This is shown when the user is authenticated but unauthorized by default. Fixes #52079 Fixes #52084 Fixes #52167 ## Customer Impact In addition to not using top-level statements when the customer requests that we don't, this improves code style consistency within the Blazor project template and with the Blazor docs. ## Regression? - [ ] Yes - [x] No ## Risk - [ ] High - [ ] Medium - [x] Low These are small stylistic changes to the Blazor project templates. ## Verification - [x] Manual (required) - [ ] Automated ## Packaging changes reviewed? - [ ] Yes - [ ] No - [x] N/A --- .../.template.config/template.json | 6 +++-- .../BlazorWeb-CSharp.Client/Program.Main.cs | 23 +++++++++++++++++++ .../Account/Pages/AccessDenied.razor | 8 +++++++ .../BlazorWeb-CSharp/Components/App.razor | 16 ++++++------- .../BlazorWeb-CSharp/Components/Routes.razor | 10 ++++---- .../BlazorWeb-CSharp/Program.Main.cs | 4 +--- .../BlazorWeb-CSharp/Program.cs | 4 +--- .../Templates.Tests/template-baselines.json | 9 ++++++++ 8 files changed, 59 insertions(+), 21 deletions(-) create mode 100644 src/ProjectTemplates/Web.ProjectTemplates/content/BlazorWeb-CSharp/BlazorWeb-CSharp.Client/Program.Main.cs create mode 100644 src/ProjectTemplates/Web.ProjectTemplates/content/BlazorWeb-CSharp/BlazorWeb-CSharp/Components/Account/Pages/AccessDenied.razor diff --git a/src/ProjectTemplates/Web.ProjectTemplates/content/BlazorWeb-CSharp/.template.config/template.json b/src/ProjectTemplates/Web.ProjectTemplates/content/BlazorWeb-CSharp/.template.config/template.json index 9a5a22be993f..14332c669958 100644 --- a/src/ProjectTemplates/Web.ProjectTemplates/content/BlazorWeb-CSharp/.template.config/template.json +++ b/src/ProjectTemplates/Web.ProjectTemplates/content/BlazorWeb-CSharp/.template.config/template.json @@ -73,13 +73,15 @@ { "condition": "(!UseProgramMain)", "exclude": [ - "BlazorWeb-CSharp/Program.Main.cs" + "BlazorWeb-CSharp/Program.Main.cs", + "BlazorWeb-CSharp.Client/Program.Main.cs" ] }, { "condition": "(UseProgramMain)", "exclude": [ - "BlazorWeb-CSharp/Program.cs" + "BlazorWeb-CSharp/Program.cs", + "BlazorWeb-CSharp.Client/Program.cs" ], "rename": { "Program.Main.cs": "Program.cs" diff --git a/src/ProjectTemplates/Web.ProjectTemplates/content/BlazorWeb-CSharp/BlazorWeb-CSharp.Client/Program.Main.cs b/src/ProjectTemplates/Web.ProjectTemplates/content/BlazorWeb-CSharp/BlazorWeb-CSharp.Client/Program.Main.cs new file mode 100644 index 000000000000..1e5ff5788ec3 --- /dev/null +++ b/src/ProjectTemplates/Web.ProjectTemplates/content/BlazorWeb-CSharp/BlazorWeb-CSharp.Client/Program.Main.cs @@ -0,0 +1,23 @@ +#if (IndividualLocalAuth) +using BlazorWeb_CSharp.Client; +using Microsoft.AspNetCore.Components.Authorization; +#endif +using Microsoft.AspNetCore.Components.WebAssembly.Hosting; + +namespace BlazorWeb_CSharp.Client; + +class Program +{ + static async Task Main(string[] args) + { + var builder = WebAssemblyHostBuilder.CreateDefault(args); + + #if (IndividualLocalAuth) + builder.Services.AddAuthorizationCore(); + builder.Services.AddCascadingAuthenticationState(); + builder.Services.AddSingleton(); + + #endif + await builder.Build().RunAsync(); + } +} diff --git a/src/ProjectTemplates/Web.ProjectTemplates/content/BlazorWeb-CSharp/BlazorWeb-CSharp/Components/Account/Pages/AccessDenied.razor b/src/ProjectTemplates/Web.ProjectTemplates/content/BlazorWeb-CSharp/BlazorWeb-CSharp/Components/Account/Pages/AccessDenied.razor new file mode 100644 index 000000000000..905dec34875a --- /dev/null +++ b/src/ProjectTemplates/Web.ProjectTemplates/content/BlazorWeb-CSharp/BlazorWeb-CSharp/Components/Account/Pages/AccessDenied.razor @@ -0,0 +1,8 @@ +@page "/Account/AccessDenied" + +Access denied + +
+

Access denied

+

You do not have access to this resource.

+
diff --git a/src/ProjectTemplates/Web.ProjectTemplates/content/BlazorWeb-CSharp/BlazorWeb-CSharp/Components/App.razor b/src/ProjectTemplates/Web.ProjectTemplates/content/BlazorWeb-CSharp/BlazorWeb-CSharp/Components/App.razor index bbcd88d8b74c..113db756040d 100644 --- a/src/ProjectTemplates/Web.ProjectTemplates/content/BlazorWeb-CSharp/BlazorWeb-CSharp/Components/App.razor +++ b/src/ProjectTemplates/Web.ProjectTemplates/content/BlazorWeb-CSharp/BlazorWeb-CSharp/Components/App.razor @@ -16,13 +16,13 @@ @*#if (!InteractiveAtRoot) ##elseif (IndividualLocalAuth) - + ##elseif (UseServer && UseWebAssembly) - + ##elseif (UseServer) - + ##else - + ##endif*@ @@ -30,13 +30,13 @@ @*#if (!InteractiveAtRoot) ##elseif (IndividualLocalAuth) - + ##elseif (UseServer && UseWebAssembly) - + ##elseif (UseServer) - + ##else - + ##endif*@ diff --git a/src/ProjectTemplates/Web.ProjectTemplates/content/BlazorWeb-CSharp/BlazorWeb-CSharp/Components/Routes.razor b/src/ProjectTemplates/Web.ProjectTemplates/content/BlazorWeb-CSharp/BlazorWeb-CSharp/Components/Routes.razor index ee69ff447329..fdf2fe8b427f 100644 --- a/src/ProjectTemplates/Web.ProjectTemplates/content/BlazorWeb-CSharp/BlazorWeb-CSharp/Components/Routes.razor +++ b/src/ProjectTemplates/Web.ProjectTemplates/content/BlazorWeb-CSharp/BlazorWeb-CSharp/Components/Routes.razor @@ -2,20 +2,20 @@ @using BlazorWeb_CSharp.Components.Account.Shared ##endif*@ @*#if (UseWebAssembly && !InteractiveAtRoot) - + ##else - + ##endif*@ @*#if (IndividualLocalAuth) - + ##else - + ##endif*@ - + diff --git a/src/ProjectTemplates/Web.ProjectTemplates/content/BlazorWeb-CSharp/BlazorWeb-CSharp/Program.Main.cs b/src/ProjectTemplates/Web.ProjectTemplates/content/BlazorWeb-CSharp/BlazorWeb-CSharp/Program.Main.cs index bf9df79e72fc..9ce0e2c541b9 100644 --- a/src/ProjectTemplates/Web.ProjectTemplates/content/BlazorWeb-CSharp/BlazorWeb-CSharp/Program.Main.cs +++ b/src/ProjectTemplates/Web.ProjectTemplates/content/BlazorWeb-CSharp/BlazorWeb-CSharp/Program.Main.cs @@ -124,9 +124,7 @@ public static void Main(string[] args) #else app.MapRazorComponents(); #endif - #if (UseWebAssembly && SampleContent) - .AddAdditionalAssemblies(typeof(Counter).Assembly); - #elif (UseWebAssembly) + #if (UseWebAssembly) .AddAdditionalAssemblies(typeof(Client._Imports).Assembly); #endif diff --git a/src/ProjectTemplates/Web.ProjectTemplates/content/BlazorWeb-CSharp/BlazorWeb-CSharp/Program.cs b/src/ProjectTemplates/Web.ProjectTemplates/content/BlazorWeb-CSharp/BlazorWeb-CSharp/Program.cs index 49118765d29c..d65c123d1f21 100644 --- a/src/ProjectTemplates/Web.ProjectTemplates/content/BlazorWeb-CSharp/BlazorWeb-CSharp/Program.cs +++ b/src/ProjectTemplates/Web.ProjectTemplates/content/BlazorWeb-CSharp/BlazorWeb-CSharp/Program.cs @@ -118,9 +118,7 @@ #else app.MapRazorComponents(); #endif -#if (UseWebAssembly && SampleContent) - .AddAdditionalAssemblies(typeof(Counter).Assembly); -#elif (UseWebAssembly) +#if (UseWebAssembly) .AddAdditionalAssemblies(typeof(BlazorWeb_CSharp.Client._Imports).Assembly); #endif diff --git a/src/ProjectTemplates/test/Templates.Tests/template-baselines.json b/src/ProjectTemplates/test/Templates.Tests/template-baselines.json index 7904cc203e19..b61d22bd88dc 100644 --- a/src/ProjectTemplates/test/Templates.Tests/template-baselines.json +++ b/src/ProjectTemplates/test/Templates.Tests/template-baselines.json @@ -540,6 +540,7 @@ "Components/Account/IdentityNoOpEmailSender.cs", "Components/Account/IdentityRedirectManager.cs", "Components/Account/IdentityUserAccessor.cs", + "Components/Account/Pages/AccessDenied.razor", "Components/Account/Pages/ConfirmEmail.razor", "Components/Account/Pages/ConfirmEmailChange.razor", "Components/Account/Pages/ExternalLogin.razor", @@ -642,6 +643,7 @@ "Components/Account/IdentityRedirectManager.cs", "Components/Account/IdentityRevalidatingAuthenticationStateProvider.cs", "Components/Account/IdentityUserAccessor.cs", + "Components/Account/Pages/AccessDenied.razor", "Components/Account/Pages/ConfirmEmail.razor", "Components/Account/Pages/ConfirmEmailChange.razor", "Components/Account/Pages/ExternalLogin.razor", @@ -718,6 +720,7 @@ "Components/Account/IdentityRedirectManager.cs", "Components/Account/IdentityRevalidatingAuthenticationStateProvider.cs", "Components/Account/IdentityUserAccessor.cs", + "Components/Account/Pages/AccessDenied.razor", "Components/Account/Pages/ConfirmEmail.razor", "Components/Account/Pages/ConfirmEmailChange.razor", "Components/Account/Pages/ExternalLogin.razor", @@ -836,6 +839,7 @@ "{ProjectName}/Components/Account/IdentityNoOpEmailSender.cs", "{ProjectName}/Components/Account/IdentityRedirectManager.cs", "{ProjectName}/Components/Account/IdentityUserAccessor.cs", + "{ProjectName}/Components/Account/Pages/AccessDenied.razor", "{ProjectName}/Components/Account/Pages/ConfirmEmail.razor", "{ProjectName}/Components/Account/Pages/ConfirmEmailChange.razor", "{ProjectName}/Components/Account/Pages/ExternalLogin.razor", @@ -953,6 +957,7 @@ "{ProjectName}/Components/Account/IdentityNoOpEmailSender.cs", "{ProjectName}/Components/Account/IdentityRedirectManager.cs", "{ProjectName}/Components/Account/IdentityUserAccessor.cs", + "{ProjectName}/Components/Account/Pages/AccessDenied.razor", "{ProjectName}/Components/Account/Pages/ConfirmEmail.razor", "{ProjectName}/Components/Account/Pages/ConfirmEmailChange.razor", "{ProjectName}/Components/Account/Pages/ExternalLogin.razor", @@ -1214,6 +1219,7 @@ "{ProjectName}/Components/Account/IdentityNoOpEmailSender.cs", "{ProjectName}/Components/Account/IdentityRedirectManager.cs", "{ProjectName}/Components/Account/IdentityUserAccessor.cs", + "{ProjectName}/Components/Account/Pages/AccessDenied.razor", "{ProjectName}/Components/Account/Pages/ConfirmEmail.razor", "{ProjectName}/Components/Account/Pages/ConfirmEmailChange.razor", "{ProjectName}/Components/Account/Pages/ExternalLogin.razor", @@ -1282,6 +1288,7 @@ "Components/Account/IdentityRedirectManager.cs", "Components/Account/IdentityRevalidatingAuthenticationStateProvider.cs", "Components/Account/IdentityUserAccessor.cs", + "Components/Account/Pages/AccessDenied.razor", "Components/Account/Pages/ConfirmEmail.razor", "Components/Account/Pages/ConfirmEmailChange.razor", "Components/Account/Pages/ExternalLogin.razor", @@ -1375,6 +1382,7 @@ "{ProjectName}/Components/Account/IdentityNoOpEmailSender.cs", "{ProjectName}/Components/Account/IdentityRedirectManager.cs", "{ProjectName}/Components/Account/IdentityUserAccessor.cs", + "{ProjectName}/Components/Account/Pages/AccessDenied.razor", "{ProjectName}/Components/Account/Pages/ConfirmEmail.razor", "{ProjectName}/Components/Account/Pages/ConfirmEmailChange.razor", "{ProjectName}/Components/Account/Pages/ExternalLogin.razor", @@ -1459,6 +1467,7 @@ "{ProjectName}/Components/Account/IdentityNoOpEmailSender.cs", "{ProjectName}/Components/Account/IdentityRedirectManager.cs", "{ProjectName}/Components/Account/IdentityUserAccessor.cs", + "{ProjectName}/Components/Account/Pages/AccessDenied.razor", "{ProjectName}/Components/Account/Pages/ConfirmEmail.razor", "{ProjectName}/Components/Account/Pages/ConfirmEmailChange.razor", "{ProjectName}/Components/Account/Pages/ExternalLogin.razor", From aa04371a4a158d9bcf3b023453c47ec93e605c22 Mon Sep 17 00:00:00 2001 From: DotNet Bot Date: Tue, 28 Nov 2023 23:59:22 +0000 Subject: [PATCH 053/391] Merged PR 35626: [internal/release/8.0] Update dependencies from dnceng/internal/dotnet-runtime This pull request updates the following dependencies [marker]: <> (Begin:83131e87-e80d-4d5b-f426-08dbd53b3319) ## From https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - **Subscription**: 83131e87-e80d-4d5b-f426-08dbd53b3319 - **Build**: 20231128.5 - **Date Produced**: November 28, 2023 10:00:40 PM UTC - **Commit**: eddf880ac57b7f2c79a77592e3e6d24d1d02f112 - **Branch**: refs/heads/internal/release/8.0 [DependencyUpdate]: <> (Begin) - **Updates**: - **Microsoft.Bcl.TimeProvider**: [from 8.0.1 to 8.0.1][1] - **Microsoft.Extensions.Configuration.Binder**: [from 8.0.1 to 8.0.1][1] - **Microsoft.Extensions.HostFactoryResolver.Sources**: [from 8.0.1-servicing.23572.22 to 8.0.1-servicing.23578.5][1] - **Microsoft.Extensions.Options**: [from 8.0.2 to 8.0.1][1] - **Microsoft.Internal.Runtime.AspNetCore.Transport**: [from 8.0.1-servicing.23572.22 to 8.0.1-servicing.23578.5][1] - **Microsoft.NET.Runtime.MonoAOTCompiler.Task**: [from 8.0.1 to 8.0.1][1] - **Microsoft.NET.Runtime.WebAssembly.Sdk**: [from 8.0.1 to 8.0.1][1] - **Microsoft.NETCore.App.Ref**: [from 8.0.1 to 8.0.1][1] - **Microsoft.NETCore.App.Runtime.AOT.win-x64.Cross.browser-wasm**: [from 8.0.1 to 8.0.1][1] - **Microsoft.NETCore.App.Runtime.win-x64**: [from 8.0.1 to 8.0.1][1] - **Microsoft.NETCore.BrowserDebugHost.Transport**: [from 8.0.1-servicing.23572.22 to 8.0.1-servicing.23578.5][1] - **Microsoft.NETCore.Platforms**: [from 8.0.1-servicing.23572.22 to 8.0.1-servicing.23578.5][1] - **System.Text.Json**: [from 8.0.1 to 8.0.1][1] - **Microsoft.SourceBuild.Intermediate.runtime.linux-x64**: [from 8.0.1-servicing.23572.22 to 8.0.1-servicing.23578.5][1] [1]: https://dev.azure.com/dnceng/internal/_git/dotnet-runtime/branches?baseVersion=GCd682195447&targetVersion=GCeddf880ac5&_a=files [DependencyUpdate]: <> (End) [marker]: <> (End:83131e87-e80d-4d5b-f426-08dbd53b3319) --- NuGet.config | 4 ++-- eng/Version.Details.xml | 40 ++++++++++++++++++++-------------------- eng/Versions.props | 12 ++++++------ 3 files changed, 28 insertions(+), 28 deletions(-) diff --git a/NuGet.config b/NuGet.config index 4a75630d11cf..6312b27cc721 100644 --- a/NuGet.config +++ b/NuGet.config @@ -9,7 +9,7 @@ - + @@ -33,7 +33,7 @@ - + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index fb1732df6ffe..e56fd3b46691 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -55,7 +55,7 @@
https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - d682195447d43c6840bf1e360a2e60a0afa60c41 + eddf880ac57b7f2c79a77592e3e6d24d1d02f112 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime @@ -121,9 +121,9 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime 5535e31a712343a63f5d7d796cd874e563e5ac14 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - d682195447d43c6840bf1e360a2e60a0afa60c41 + eddf880ac57b7f2c79a77592e3e6d24d1d02f112 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime @@ -177,17 +177,17 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime 5535e31a712343a63f5d7d796cd874e563e5ac14 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - d682195447d43c6840bf1e360a2e60a0afa60c41 + eddf880ac57b7f2c79a77592e3e6d24d1d02f112 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime 5535e31a712343a63f5d7d796cd874e563e5ac14 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - d682195447d43c6840bf1e360a2e60a0afa60c41 + eddf880ac57b7f2c79a77592e3e6d24d1d02f112 https://dev.azure.com/dnceng/internal/_git/dotnet-source-build-externals @@ -257,7 +257,7 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - d682195447d43c6840bf1e360a2e60a0afa60c41 + eddf880ac57b7f2c79a77592e3e6d24d1d02f112 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime @@ -277,15 +277,15 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - d682195447d43c6840bf1e360a2e60a0afa60c41 + eddf880ac57b7f2c79a77592e3e6d24d1d02f112 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - d682195447d43c6840bf1e360a2e60a0afa60c41 + eddf880ac57b7f2c79a77592e3e6d24d1d02f112 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - d682195447d43c6840bf1e360a2e60a0afa60c41 + eddf880ac57b7f2c79a77592e3e6d24d1d02f112 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime @@ -294,7 +294,7 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - d682195447d43c6840bf1e360a2e60a0afa60c41 + eddf880ac57b7f2c79a77592e3e6d24d1d02f112 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime @@ -318,20 +318,20 @@ --> https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - d682195447d43c6840bf1e360a2e60a0afa60c41 + eddf880ac57b7f2c79a77592e3e6d24d1d02f112 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - d682195447d43c6840bf1e360a2e60a0afa60c41 + eddf880ac57b7f2c79a77592e3e6d24d1d02f112 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - d682195447d43c6840bf1e360a2e60a0afa60c41 + eddf880ac57b7f2c79a77592e3e6d24d1d02f112 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - d682195447d43c6840bf1e360a2e60a0afa60c41 + eddf880ac57b7f2c79a77592e3e6d24d1d02f112 https://github.com/dotnet/xdt @@ -368,9 +368,9 @@ - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - d682195447d43c6840bf1e360a2e60a0afa60c41 + eddf880ac57b7f2c79a77592e3e6d24d1d02f112 https://github.com/dotnet/winforms diff --git a/eng/Versions.props b/eng/Versions.props index 84d1a6dfab5b..9b85521c45eb 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -71,7 +71,7 @@ 8.0.1 8.0.1 8.0.1 - 8.0.1-servicing.23572.22 + 8.0.1-servicing.23578.5 8.0.0 8.0.0 8.0.0 @@ -92,7 +92,7 @@ 8.0.0 8.0.0 8.0.0 - 8.0.1-servicing.23572.22 + 8.0.1-servicing.23578.5 8.0.0 8.0.0 8.0.0 @@ -106,9 +106,9 @@ 8.0.0 8.0.0 8.0.0 - 8.0.2 + 8.0.1 8.0.0 - 8.0.1-servicing.23572.22 + 8.0.1-servicing.23578.5 8.0.0 8.0.0 8.0.0 @@ -128,9 +128,9 @@ 8.0.0 8.0.0 8.0.0 - 8.0.1-servicing.23572.22 + 8.0.1-servicing.23578.5 - 8.0.1-servicing.23572.22 + 8.0.1-servicing.23578.5 8.0.0 8.0.1 From 02aeddda68390d089a8cdd32f5a25229cbe6daa3 Mon Sep 17 00:00:00 2001 From: DotNet Bot Date: Wed, 29 Nov 2023 01:35:31 +0000 Subject: [PATCH 054/391] Merged PR 35640: [internal/release/8.0] Update dependencies from dnceng/internal/dotnet-efcore This pull request updates the following dependencies [marker]: <> (Begin:e179a2a7-bc5d-4498-2467-08dbd53ba9ce) ## From https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - **Subscription**: e179a2a7-bc5d-4498-2467-08dbd53ba9ce - **Build**: 20231128.4 - **Date Produced**: November 28, 2023 11:56:43 PM UTC - **Commit**: 4c95cefe39426014c24cdaa8688518618bc0040f - **Branch**: refs/heads/internal/release/8.0 [DependencyUpdate]: <> (Begin) - **Updates**: - **dotnet-ef**: [from 8.0.1 to 8.0.1][1] - **Microsoft.EntityFrameworkCore**: [from 8.0.1 to 8.0.1][1] - **Microsoft.EntityFrameworkCore.Design**: [from 8.0.1 to 8.0.1][1] - **Microsoft.EntityFrameworkCore.InMemory**: [from 8.0.1 to 8.0.1][1] - **Microsoft.EntityFrameworkCore.Relational**: [from 8.0.1 to 8.0.1][1] - **Microsoft.EntityFrameworkCore.Sqlite**: [from 8.0.1 to 8.0.1][1] - **Microsoft.EntityFrameworkCore.SqlServer**: [from 8.0.1 to 8.0.1][1] - **Microsoft.EntityFrameworkCore.Tools**: [from 8.0.1 to 8.0.1][1] [1]: https://dev.azure.com/dnceng/internal/_git/dotnet-efcore/branches?baseVersion=GC04c2fa5bc2&targetVersion=GC4c95cefe39&_a=files [DependencyUpdate]: <> (End) [marker]: <> (End:e179a2a7-bc5d-4498-2467-08dbd53ba9ce) --- NuGet.config | 4 ++-- eng/Version.Details.xml | 16 ++++++++-------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/NuGet.config b/NuGet.config index 6312b27cc721..5ebe8ed33256 100644 --- a/NuGet.config +++ b/NuGet.config @@ -6,7 +6,7 @@ - + @@ -30,7 +30,7 @@ - + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index e56fd3b46691..7ced11afe7bb 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -11,35 +11,35 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 04c2fa5bc221b49971c57706c37957465be552df + 4c95cefe39426014c24cdaa8688518618bc0040f https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 04c2fa5bc221b49971c57706c37957465be552df + 4c95cefe39426014c24cdaa8688518618bc0040f https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 04c2fa5bc221b49971c57706c37957465be552df + 4c95cefe39426014c24cdaa8688518618bc0040f https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 04c2fa5bc221b49971c57706c37957465be552df + 4c95cefe39426014c24cdaa8688518618bc0040f https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 04c2fa5bc221b49971c57706c37957465be552df + 4c95cefe39426014c24cdaa8688518618bc0040f https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 04c2fa5bc221b49971c57706c37957465be552df + 4c95cefe39426014c24cdaa8688518618bc0040f https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 04c2fa5bc221b49971c57706c37957465be552df + 4c95cefe39426014c24cdaa8688518618bc0040f https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 04c2fa5bc221b49971c57706c37957465be552df + 4c95cefe39426014c24cdaa8688518618bc0040f https://dev.azure.com/dnceng/internal/_git/dotnet-runtime From 5ea7aaf895f6c9f74edf7da4268b3af5328cf7f1 Mon Sep 17 00:00:00 2001 From: DotNet-Bot Date: Thu, 30 Nov 2023 12:21:51 +0000 Subject: [PATCH 055/391] Update dependencies from https://dev.azure.com/dnceng/internal/_git/dotnet-runtime build 20231130.1 Microsoft.Bcl.TimeProvider , Microsoft.Extensions.Configuration.Binder , Microsoft.Extensions.HostFactoryResolver.Sources , Microsoft.Extensions.Options , Microsoft.Internal.Runtime.AspNetCore.Transport , Microsoft.NET.Runtime.MonoAOTCompiler.Task , Microsoft.NET.Runtime.WebAssembly.Sdk , Microsoft.NETCore.App.Ref , Microsoft.NETCore.App.Runtime.AOT.win-x64.Cross.browser-wasm , Microsoft.NETCore.App.Runtime.win-x64 , Microsoft.NETCore.BrowserDebugHost.Transport , Microsoft.NETCore.Platforms , System.Text.Json , Microsoft.SourceBuild.Intermediate.runtime.linux-x64 From Version 8.0.1 -> To Version 8.0.1 --- NuGet.config | 6 ++++-- eng/Version.Details.xml | 38 +++++++++++++++++++------------------- eng/Versions.props | 10 +++++----- 3 files changed, 28 insertions(+), 26 deletions(-) diff --git a/NuGet.config b/NuGet.config index 5ebe8ed33256..6db4f0c83098 100644 --- a/NuGet.config +++ b/NuGet.config @@ -7,9 +7,10 @@ + - + @@ -30,10 +31,11 @@ + - + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 7ced11afe7bb..e9738bb07852 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -55,7 +55,7 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - eddf880ac57b7f2c79a77592e3e6d24d1d02f112 + bf5e279d9239bfef5bb1b8d6212f1b971c434606 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime @@ -121,9 +121,9 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime 5535e31a712343a63f5d7d796cd874e563e5ac14 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - eddf880ac57b7f2c79a77592e3e6d24d1d02f112 + bf5e279d9239bfef5bb1b8d6212f1b971c434606 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime @@ -179,15 +179,15 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - eddf880ac57b7f2c79a77592e3e6d24d1d02f112 + bf5e279d9239bfef5bb1b8d6212f1b971c434606 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime 5535e31a712343a63f5d7d796cd874e563e5ac14 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - eddf880ac57b7f2c79a77592e3e6d24d1d02f112 + bf5e279d9239bfef5bb1b8d6212f1b971c434606 https://dev.azure.com/dnceng/internal/_git/dotnet-source-build-externals @@ -257,7 +257,7 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - eddf880ac57b7f2c79a77592e3e6d24d1d02f112 + bf5e279d9239bfef5bb1b8d6212f1b971c434606 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime @@ -277,15 +277,15 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - eddf880ac57b7f2c79a77592e3e6d24d1d02f112 + bf5e279d9239bfef5bb1b8d6212f1b971c434606 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - eddf880ac57b7f2c79a77592e3e6d24d1d02f112 + bf5e279d9239bfef5bb1b8d6212f1b971c434606 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - eddf880ac57b7f2c79a77592e3e6d24d1d02f112 + bf5e279d9239bfef5bb1b8d6212f1b971c434606 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime @@ -294,7 +294,7 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - eddf880ac57b7f2c79a77592e3e6d24d1d02f112 + bf5e279d9239bfef5bb1b8d6212f1b971c434606 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime @@ -318,20 +318,20 @@ --> https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - eddf880ac57b7f2c79a77592e3e6d24d1d02f112 + bf5e279d9239bfef5bb1b8d6212f1b971c434606 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - eddf880ac57b7f2c79a77592e3e6d24d1d02f112 + bf5e279d9239bfef5bb1b8d6212f1b971c434606 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - eddf880ac57b7f2c79a77592e3e6d24d1d02f112 + bf5e279d9239bfef5bb1b8d6212f1b971c434606 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - eddf880ac57b7f2c79a77592e3e6d24d1d02f112 + bf5e279d9239bfef5bb1b8d6212f1b971c434606 https://github.com/dotnet/xdt @@ -368,9 +368,9 @@ - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - eddf880ac57b7f2c79a77592e3e6d24d1d02f112 + bf5e279d9239bfef5bb1b8d6212f1b971c434606 https://github.com/dotnet/winforms diff --git a/eng/Versions.props b/eng/Versions.props index 9b85521c45eb..a0926f221e93 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -71,7 +71,7 @@ 8.0.1 8.0.1 8.0.1 - 8.0.1-servicing.23578.5 + 8.0.1-servicing.23580.1 8.0.0 8.0.0 8.0.0 @@ -92,7 +92,7 @@ 8.0.0 8.0.0 8.0.0 - 8.0.1-servicing.23578.5 + 8.0.1-servicing.23580.1 8.0.0 8.0.0 8.0.0 @@ -108,7 +108,7 @@ 8.0.0 8.0.1 8.0.0 - 8.0.1-servicing.23578.5 + 8.0.1-servicing.23580.1 8.0.0 8.0.0 8.0.0 @@ -128,9 +128,9 @@ 8.0.0 8.0.0 8.0.0 - 8.0.1-servicing.23578.5 + 8.0.1-servicing.23580.1 - 8.0.1-servicing.23578.5 + 8.0.1-servicing.23580.1 8.0.0 8.0.1 From 6f818b783b8756abda5e5f7e7a49f32e08c236fc Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" <42748379+dotnet-maestro[bot]@users.noreply.github.com> Date: Thu, 30 Nov 2023 14:58:49 +0000 Subject: [PATCH 056/391] Update dependencies from https://github.com/dotnet/extensions build 20231129.1 (#52482) [release/8.0] Update dependencies from dotnet/extensions --- eng/Version.Details.xml | 8 ++++---- eng/Versions.props | 4 ++-- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 21b3190a12dd..3efa04794632 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -397,13 +397,13 @@ https://github.com/dotnet/arcade 0aaeafef60933f87b0b50350313bb2fd77defb5d - + https://github.com/dotnet/extensions - c8383902da237c8efd61a37808e444ac9b838f59 + 13a6288c9de8d8f83c40ae419803e6a990bf5825 - + https://github.com/dotnet/extensions - c8383902da237c8efd61a37808e444ac9b838f59 + 13a6288c9de8d8f83c40ae419803e6a990bf5825 https://github.com/nuget/nuget.client diff --git a/eng/Versions.props b/eng/Versions.props index d8c45a2c9c52..13d6d3967790 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -139,8 +139,8 @@ 8.0.0 8.0.0 - 8.1.0-preview.23572.3 - 8.1.0-preview.23572.3 + 8.1.0-preview.23579.1 + 8.1.0-preview.23579.1 8.0.0 8.0.0 From 8e941eb42f819adb116b881195158b3887a70a1c Mon Sep 17 00:00:00 2001 From: DotNet Bot Date: Thu, 30 Nov 2023 17:23:21 +0000 Subject: [PATCH 057/391] Merged PR 35709: [internal/release/8.0] Update dependencies from dnceng/internal/dotnet-efcore This pull request updates the following dependencies [marker]: <> (Begin:e179a2a7-bc5d-4498-2467-08dbd53ba9ce) ## From https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - **Subscription**: e179a2a7-bc5d-4498-2467-08dbd53ba9ce - **Build**: 20231130.2 - **Date Produced**: November 30, 2023 3:42:31 PM UTC - **Commit**: 423b1a0d38036efcefdbf1dfb80955449eae1238 - **Branch**: refs/heads/internal/release/8.0 [DependencyUpdate]: <> (Begin) - **Updates**: - **dotnet-ef**: [from 8.0.1 to 8.0.1][1] - **Microsoft.EntityFrameworkCore**: [from 8.0.1 to 8.0.1][1] - **Microsoft.EntityFrameworkCore.Design**: [from 8.0.1 to 8.0.1][1] - **Microsoft.EntityFrameworkCore.InMemory**: [from 8.0.1 to 8.0.1][1] - **Microsoft.EntityFrameworkCore.Relational**: [from 8.0.1 to 8.0.1][1] - **Microsoft.EntityFrameworkCore.Sqlite**: [from 8.0.1 to 8.0.1][1] - **Microsoft.EntityFrameworkCore.SqlServer**: [from 8.0.1 to 8.0.1][1] - **Microsoft.EntityFrameworkCore.Tools**: [from 8.0.1 to 8.0.1][1] [1]: https://dev.azure.com/dnceng/internal/_git/dotnet-efcore/branches?baseVersion=GC4c95cefe39&targetVersion=GC423b1a0d38&_a=files [DependencyUpdate]: <> (End) [marker]: <> (End:e179a2a7-bc5d-4498-2467-08dbd53ba9ce) --- NuGet.config | 6 ++---- eng/Version.Details.xml | 16 ++++++++-------- 2 files changed, 10 insertions(+), 12 deletions(-) diff --git a/NuGet.config b/NuGet.config index 6db4f0c83098..7b2e138cae5a 100644 --- a/NuGet.config +++ b/NuGet.config @@ -6,8 +6,7 @@ - - + @@ -31,8 +30,7 @@ - - + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 4bf2abd216f7..0a5f35138293 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -11,35 +11,35 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 4c95cefe39426014c24cdaa8688518618bc0040f + 423b1a0d38036efcefdbf1dfb80955449eae1238 https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 4c95cefe39426014c24cdaa8688518618bc0040f + 423b1a0d38036efcefdbf1dfb80955449eae1238 https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 4c95cefe39426014c24cdaa8688518618bc0040f + 423b1a0d38036efcefdbf1dfb80955449eae1238 https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 4c95cefe39426014c24cdaa8688518618bc0040f + 423b1a0d38036efcefdbf1dfb80955449eae1238 https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 4c95cefe39426014c24cdaa8688518618bc0040f + 423b1a0d38036efcefdbf1dfb80955449eae1238 https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 4c95cefe39426014c24cdaa8688518618bc0040f + 423b1a0d38036efcefdbf1dfb80955449eae1238 https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 4c95cefe39426014c24cdaa8688518618bc0040f + 423b1a0d38036efcefdbf1dfb80955449eae1238 https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 4c95cefe39426014c24cdaa8688518618bc0040f + 423b1a0d38036efcefdbf1dfb80955449eae1238 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime From 3244287f74b2b5fa688c47bb266cf825186a109c Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" <42748379+dotnet-maestro[bot]@users.noreply.github.com> Date: Sat, 2 Dec 2023 15:05:10 +0000 Subject: [PATCH 058/391] Update dependencies from https://github.com/dotnet/extensions build 20231201.2 (#52535) [release/8.0] Update dependencies from dotnet/extensions --- eng/Version.Details.xml | 8 ++++---- eng/Versions.props | 4 ++-- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 3efa04794632..e309190cab4a 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -397,13 +397,13 @@ https://github.com/dotnet/arcade 0aaeafef60933f87b0b50350313bb2fd77defb5d - + https://github.com/dotnet/extensions - 13a6288c9de8d8f83c40ae419803e6a990bf5825 + 686e13c0418bbae381ce76f4cf06cb815faa4af2 - + https://github.com/dotnet/extensions - 13a6288c9de8d8f83c40ae419803e6a990bf5825 + 686e13c0418bbae381ce76f4cf06cb815faa4af2 https://github.com/nuget/nuget.client diff --git a/eng/Versions.props b/eng/Versions.props index 13d6d3967790..d392a7f84fd8 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -139,8 +139,8 @@ 8.0.0 8.0.0 - 8.1.0-preview.23579.1 - 8.1.0-preview.23579.1 + 8.1.0-preview.23601.2 + 8.1.0-preview.23601.2 8.0.0 8.0.0 From 3c58bce735c660a7290f30a490c377cf7239445f Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" <42748379+dotnet-maestro[bot]@users.noreply.github.com> Date: Mon, 4 Dec 2023 15:00:43 +0000 Subject: [PATCH 059/391] Update dependencies from https://github.com/dotnet/extensions build 20231202.1 (#52565) [release/8.0] Update dependencies from dotnet/extensions --- eng/Version.Details.xml | 8 ++++---- eng/Versions.props | 4 ++-- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index e309190cab4a..df6823451750 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -397,13 +397,13 @@ https://github.com/dotnet/arcade 0aaeafef60933f87b0b50350313bb2fd77defb5d - + https://github.com/dotnet/extensions - 686e13c0418bbae381ce76f4cf06cb815faa4af2 + e7430144e8009f87ed510e7922c8c780fbb0d9ac - + https://github.com/dotnet/extensions - 686e13c0418bbae381ce76f4cf06cb815faa4af2 + e7430144e8009f87ed510e7922c8c780fbb0d9ac https://github.com/nuget/nuget.client diff --git a/eng/Versions.props b/eng/Versions.props index d392a7f84fd8..128232b62ea1 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -139,8 +139,8 @@ 8.0.0 8.0.0 - 8.1.0-preview.23601.2 - 8.1.0-preview.23601.2 + 8.1.0-preview.23602.1 + 8.1.0-preview.23602.1 8.0.0 8.0.0 From 7f88aab8ca7b25837e432df87db98196d48c65a1 Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" <42748379+dotnet-maestro[bot]@users.noreply.github.com> Date: Tue, 5 Dec 2023 15:41:09 +0000 Subject: [PATCH 060/391] Update dependencies from https://github.com/dotnet/extensions build 20231204.1 (#52589) [release/8.0] Update dependencies from dotnet/extensions --- eng/Version.Details.xml | 8 ++++---- eng/Versions.props | 4 ++-- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index df6823451750..05bd137496b9 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -397,13 +397,13 @@ https://github.com/dotnet/arcade 0aaeafef60933f87b0b50350313bb2fd77defb5d - + https://github.com/dotnet/extensions - e7430144e8009f87ed510e7922c8c780fbb0d9ac + ca03b0c72858567f9b668d90fee32ef2d5d8dd74 - + https://github.com/dotnet/extensions - e7430144e8009f87ed510e7922c8c780fbb0d9ac + ca03b0c72858567f9b668d90fee32ef2d5d8dd74 https://github.com/nuget/nuget.client diff --git a/eng/Versions.props b/eng/Versions.props index 128232b62ea1..f807488d397c 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -139,8 +139,8 @@ 8.0.0 8.0.0 - 8.1.0-preview.23602.1 - 8.1.0-preview.23602.1 + 8.1.0-preview.23604.1 + 8.1.0-preview.23604.1 8.0.0 8.0.0 From 57585f9c5a448bab5aee006989a0c838da958654 Mon Sep 17 00:00:00 2001 From: vseanreesermsft <78103370+vseanreesermsft@users.noreply.github.com> Date: Wed, 3 Jan 2024 15:15:32 -0800 Subject: [PATCH 061/391] Update branding to 8.0.2 (#53098) --- eng/Versions.props | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/eng/Versions.props b/eng/Versions.props index f807488d397c..f4afd9f1e9d8 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -8,10 +8,10 @@ 8 0 - 1 + 2 - true + false 7.0.3 - + + + @@ -30,9 +32,11 @@ - + + + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 69af04ddbf53..3ddfe72e37f4 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -9,37 +9,37 @@ --> - + https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 423b1a0d38036efcefdbf1dfb80955449eae1238 + 7f34ce36910a2ce8c21a959857db796f58e07e9d - + https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 423b1a0d38036efcefdbf1dfb80955449eae1238 + 7f34ce36910a2ce8c21a959857db796f58e07e9d - + https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 423b1a0d38036efcefdbf1dfb80955449eae1238 + 7f34ce36910a2ce8c21a959857db796f58e07e9d - + https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 423b1a0d38036efcefdbf1dfb80955449eae1238 + 7f34ce36910a2ce8c21a959857db796f58e07e9d - + https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 423b1a0d38036efcefdbf1dfb80955449eae1238 + 7f34ce36910a2ce8c21a959857db796f58e07e9d - + https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 423b1a0d38036efcefdbf1dfb80955449eae1238 + 7f34ce36910a2ce8c21a959857db796f58e07e9d - + https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 423b1a0d38036efcefdbf1dfb80955449eae1238 + 7f34ce36910a2ce8c21a959857db796f58e07e9d - + https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 423b1a0d38036efcefdbf1dfb80955449eae1238 + 7f34ce36910a2ce8c21a959857db796f58e07e9d https://dev.azure.com/dnceng/internal/_git/dotnet-runtime diff --git a/eng/Versions.props b/eng/Versions.props index 3abd2b6dee9c..efea59174089 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -142,14 +142,14 @@ 8.1.0-preview.23604.1 8.1.0-preview.23604.1 - 8.0.1 - 8.0.1 - 8.0.1 - 8.0.1 - 8.0.1 - 8.0.1 - 8.0.1 - 8.0.1 + 8.0.2 + 8.0.2 + 8.0.2 + 8.0.2 + 8.0.2 + 8.0.2 + 8.0.2 + 8.0.2 4.8.0-3.23518.7 4.8.0-3.23518.7 From 77202f4104217aa286c8e832aef786962d0a009e Mon Sep 17 00:00:00 2001 From: DotNet Bot Date: Thu, 4 Jan 2024 03:14:03 +0000 Subject: [PATCH 065/391] [internal/release/8.0] Update dependencies from dnceng/internal/dotnet-efcore --- NuGet.config | 4 ++-- eng/Version.Details.xml | 16 ++++++++-------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/NuGet.config b/NuGet.config index 589c273c8c33..bccf28e0c12f 100644 --- a/NuGet.config +++ b/NuGet.config @@ -6,7 +6,7 @@ - + @@ -32,7 +32,7 @@ - + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 3ddfe72e37f4..8f130c1603c6 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -11,35 +11,35 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 7f34ce36910a2ce8c21a959857db796f58e07e9d + 856a15f40b4f27ab0f996e044b68943b9a9c75c0 https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 7f34ce36910a2ce8c21a959857db796f58e07e9d + 856a15f40b4f27ab0f996e044b68943b9a9c75c0 https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 7f34ce36910a2ce8c21a959857db796f58e07e9d + 856a15f40b4f27ab0f996e044b68943b9a9c75c0 https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 7f34ce36910a2ce8c21a959857db796f58e07e9d + 856a15f40b4f27ab0f996e044b68943b9a9c75c0 https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 7f34ce36910a2ce8c21a959857db796f58e07e9d + 856a15f40b4f27ab0f996e044b68943b9a9c75c0 https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 7f34ce36910a2ce8c21a959857db796f58e07e9d + 856a15f40b4f27ab0f996e044b68943b9a9c75c0 https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 7f34ce36910a2ce8c21a959857db796f58e07e9d + 856a15f40b4f27ab0f996e044b68943b9a9c75c0 https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 7f34ce36910a2ce8c21a959857db796f58e07e9d + 856a15f40b4f27ab0f996e044b68943b9a9c75c0 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime From 79e8659bbf9d100398276e7b1daf041f47538bdb Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 3 Jan 2024 20:51:03 -0800 Subject: [PATCH 066/391] [release/8.0] Fix app_offline detection for some OSes (#52810) * Fix app_offline detection for some OSes * save --------- Co-authored-by: Brennan Conroy --- .../RequestHandlerLib/filewatcher.cpp | 24 +++++-------------- .../RequestHandlerLib/filewatcher.h | 1 - 2 files changed, 6 insertions(+), 19 deletions(-) diff --git a/src/Servers/IIS/AspNetCoreModuleV2/RequestHandlerLib/filewatcher.cpp b/src/Servers/IIS/AspNetCoreModuleV2/RequestHandlerLib/filewatcher.cpp index f6fc3ab67b6e..828f877e7181 100644 --- a/src/Servers/IIS/AspNetCoreModuleV2/RequestHandlerLib/filewatcher.cpp +++ b/src/Servers/IIS/AspNetCoreModuleV2/RequestHandlerLib/filewatcher.cpp @@ -21,12 +21,6 @@ FILE_WATCHER::FILE_WATCHER() : FALSE, // not set nullptr); // name - m_pShutdownEvent = CreateEvent( - nullptr, // default security attributes - TRUE, // manual reset event - FALSE, // not set - nullptr); // name - // Use of TerminateThread for the file watcher thread was eliminated in favor of an event-based // approach. Out of an abundance of caution, we are temporarily adding an environment variable // to allow falling back to TerminateThread usage. If all goes well, this will be removed in a @@ -175,19 +169,8 @@ Win32 error LOG_INFO(L"Starting file watcher thread"); DBG_ASSERT(pFileMonitor != nullptr); - HANDLE events[2] = { pFileMonitor->m_hCompletionPort, pFileMonitor->m_pShutdownEvent }; - - DWORD dwEvent = 0; while (true) { - // Wait for either a change notification or a shutdown event. - dwEvent = WaitForMultipleObjects(ARRAYSIZE(events), events, FALSE, INFINITE) - WAIT_OBJECT_0; - - if (dwEvent == 1) - { - // Shutdown event. - break; - } DWORD cbCompletion = 0; OVERLAPPED* pOverlapped = nullptr; @@ -203,6 +186,11 @@ Win32 error DBG_ASSERT(success); (void)success; + if (completionKey == FILE_WATCHER_SHUTDOWN_KEY) + { + break; + } + DBG_ASSERT(pOverlapped != nullptr); if (pOverlapped != nullptr) { @@ -469,7 +457,7 @@ FILE_WATCHER::StopMonitor() LOG_INFO(L"Stopping file watching."); // Signal the file watcher thread to exit - SetEvent(m_pShutdownEvent); + PostQueuedCompletionStatus(m_hCompletionPort, 0, FILE_WATCHER_SHUTDOWN_KEY, NULL); WaitForWatcherThreadExit(); if (m_fShadowCopyEnabled) diff --git a/src/Servers/IIS/AspNetCoreModuleV2/RequestHandlerLib/filewatcher.h b/src/Servers/IIS/AspNetCoreModuleV2/RequestHandlerLib/filewatcher.h index dffa48f71021..c73a76849703 100644 --- a/src/Servers/IIS/AspNetCoreModuleV2/RequestHandlerLib/filewatcher.h +++ b/src/Servers/IIS/AspNetCoreModuleV2/RequestHandlerLib/filewatcher.h @@ -60,7 +60,6 @@ class FILE_WATCHER{ HandleWrapper m_hChangeNotificationThread; HandleWrapper _hDirectory; HandleWrapper m_pDoneCopyEvent; - HandleWrapper m_pShutdownEvent; std::atomic_bool m_fThreadExit; STTIMER m_Timer; SRWLOCK m_copyLock{}; From 148cba6cc2a790ef2b25ab9262fde5f37bc63779 Mon Sep 17 00:00:00 2001 From: Surayya Huseyn Zada <114938397+surayya-MS@users.noreply.github.com> Date: Thu, 4 Jan 2024 05:51:13 +0100 Subject: [PATCH 067/391] Fix SSR page rendering intermediate state instead of the end state of components (#52823) (#52943) * finish all non streaming pending tasks before rendering ssr page * fix tests * refactor fix for the tests * call Dispatcher.AssertAccess() in AddPendingTask() * add e2e test * fix post request await all non streaming pending tasks; add e2e test * move NonStreamingPendingTasks class to another file * save WaitForNonStreamingPendingTasks into a variable * Update src/Components/test/testassets/Components.TestServer/RazorComponents/Components/ChildComponentThatDelaysLoading.razor * Update src/Components/test/testassets/Components.TestServer/RazorComponents/Components/ParentComponentThatDelaysLoading.razor --------- Co-authored-by: Javier Calvarro Nelson --- .../Components/src/RenderTree/Renderer.cs | 6 ++++- .../src/RazorComponentEndpointInvoker.cs | 2 +- .../EndpointHtmlRenderer.Prerendering.cs | 24 +++++++++++++++++-- .../src/Rendering/EndpointHtmlRenderer.cs | 2 +- .../test/RazorComponentResultTest.cs | 6 +++-- .../ServerRenderingTests/RenderingTest.cs | 17 +++++++++++++ .../ChildComponentThatDelaysLoading.razor | 13 ++++++++++ .../ParentComponentThatDelaysLoading.razor | 21 ++++++++++++++++ ...stFormWithComponentThatDelaysLoading.razor | 19 +++++++++++++++ .../Pages/SSRPageThatDelaysLoading.razor | 5 ++++ 10 files changed, 108 insertions(+), 7 deletions(-) create mode 100644 src/Components/test/testassets/Components.TestServer/RazorComponents/Components/ChildComponentThatDelaysLoading.razor create mode 100644 src/Components/test/testassets/Components.TestServer/RazorComponents/Components/ParentComponentThatDelaysLoading.razor create mode 100644 src/Components/test/testassets/Components.TestServer/RazorComponents/Pages/Forms/PostFormWithComponentThatDelaysLoading.razor create mode 100644 src/Components/test/testassets/Components.TestServer/RazorComponents/Pages/SSRPageThatDelaysLoading.razor diff --git a/src/Components/Components/src/RenderTree/Renderer.cs b/src/Components/Components/src/RenderTree/Renderer.cs index e1abf6667a75..23ca5499e6fb 100644 --- a/src/Components/Components/src/RenderTree/Renderer.cs +++ b/src/Components/Components/src/RenderTree/Renderer.cs @@ -593,7 +593,11 @@ protected virtual void AddPendingTask(ComponentState? componentState, Task task) { // The pendingTasks collection is only used during prerendering to track quiescence, // so will be null at other times. - _pendingTasks?.Add(task); + if (_pendingTasks is { } tasks) + { + Dispatcher.AssertAccess(); + tasks.Add(task); + } } internal void AssignEventHandlerId(int renderedByComponentId, ref RenderTreeFrame frame) diff --git a/src/Components/Endpoints/src/RazorComponentEndpointInvoker.cs b/src/Components/Endpoints/src/RazorComponentEndpointInvoker.cs index 639be6acd945..41efc89f9749 100644 --- a/src/Components/Endpoints/src/RazorComponentEndpointInvoker.cs +++ b/src/Components/Endpoints/src/RazorComponentEndpointInvoker.cs @@ -107,7 +107,7 @@ await EndpointHtmlRenderer.InitializeStandardComponentServicesAsync( return; } - await Task.WhenAll(_renderer.NonStreamingPendingTasks); + await _renderer.WaitForNonStreamingPendingTasks(); } catch (NavigationException ex) { diff --git a/src/Components/Endpoints/src/Rendering/EndpointHtmlRenderer.Prerendering.cs b/src/Components/Endpoints/src/Rendering/EndpointHtmlRenderer.Prerendering.cs index 5b39693d1766..326a1ed249e8 100644 --- a/src/Components/Endpoints/src/Rendering/EndpointHtmlRenderer.Prerendering.cs +++ b/src/Components/Endpoints/src/Rendering/EndpointHtmlRenderer.Prerendering.cs @@ -161,8 +161,28 @@ private async Task WaitForResultReady(bool waitForQuiescence, PrerenderedCompone } else if (_nonStreamingPendingTasks.Count > 0) { - // Just wait for quiescence of the non-streaming subtrees - await Task.WhenAll(_nonStreamingPendingTasks); + await WaitForNonStreamingPendingTasks(); + } + } + + public Task WaitForNonStreamingPendingTasks() + { + return NonStreamingPendingTasksCompletion ??= Execute(); + + async Task Execute() + { + while (_nonStreamingPendingTasks.Count > 0) + { + // Create a Task that represents the remaining ongoing work for the rendering process + var pendingWork = Task.WhenAll(_nonStreamingPendingTasks); + + // Clear all pending work. + _nonStreamingPendingTasks.Clear(); + + // new work might be added before we check again as a result of waiting for all + // the child components to finish executing SetParametersAsync + await pendingWork; + } } } diff --git a/src/Components/Endpoints/src/Rendering/EndpointHtmlRenderer.cs b/src/Components/Endpoints/src/Rendering/EndpointHtmlRenderer.cs index d3a9e6eed338..c32c602cfa2e 100644 --- a/src/Components/Endpoints/src/Rendering/EndpointHtmlRenderer.cs +++ b/src/Components/Endpoints/src/Rendering/EndpointHtmlRenderer.cs @@ -131,7 +131,7 @@ protected override void AddPendingTask(ComponentState? componentState, Task task } // For tests only - internal List NonStreamingPendingTasks => _nonStreamingPendingTasks; + internal Task? NonStreamingPendingTasksCompletion; protected override Task UpdateDisplayAsync(in RenderBatch renderBatch) { diff --git a/src/Components/Endpoints/test/RazorComponentResultTest.cs b/src/Components/Endpoints/test/RazorComponentResultTest.cs index 9d2c9c45cb37..583afd3c9f4d 100644 --- a/src/Components/Endpoints/test/RazorComponentResultTest.cs +++ b/src/Components/Endpoints/test/RazorComponentResultTest.cs @@ -336,10 +336,11 @@ public async Task StreamingRendering_IsOffByDefault_AndCanBeEnabledForSubtree() { // Arrange var testContext = PrepareVaryStreamingScenariosTests(); - var initialOutputTask = Task.WhenAll(testContext.Renderer.NonStreamingPendingTasks); + var initialOutputTask = testContext.Renderer.NonStreamingPendingTasksCompletion; // Act/Assert: Even if all other blocking tasks complete, we don't produce output until the top-level // nonstreaming component completes + Assert.NotNull(initialOutputTask); testContext.WithinNestedNonstreamingRegionTask.SetResult(); await Task.Yield(); // Just to show it's still not completed after Assert.False(initialOutputTask.IsCompleted); @@ -368,10 +369,11 @@ public async Task StreamingRendering_CanBeDisabledForSubtree() { // Arrange var testContext = PrepareVaryStreamingScenariosTests(); - var initialOutputTask = Task.WhenAll(testContext.Renderer.NonStreamingPendingTasks); + var initialOutputTask = testContext.Renderer.NonStreamingPendingTasksCompletion; // Act/Assert: Even if all other nonblocking tasks complete, we don't produce output until // the component in the nonstreaming subtree is quiescent + Assert.NotNull(initialOutputTask); testContext.TopLevelComponentTask.SetResult(); await Task.Yield(); // Just to show it's still not completed after Assert.False(initialOutputTask.IsCompleted); diff --git a/src/Components/test/E2ETest/ServerRenderingTests/RenderingTest.cs b/src/Components/test/E2ETest/ServerRenderingTests/RenderingTest.cs index 21c3e01d4712..dc6289988935 100644 --- a/src/Components/test/E2ETest/ServerRenderingTests/RenderingTest.cs +++ b/src/Components/test/E2ETest/ServerRenderingTests/RenderingTest.cs @@ -50,4 +50,21 @@ public async Task CanUseHttpContextRequestAndResponse() var response = await new HttpClient().GetAsync(Browser.Url); Assert.Equal(HttpStatusCode.Created, response.StatusCode); } + + [Fact] + public void RendersEndStateOfComponentsOnSSRPage() + { + Navigate($"{ServerPathBase}/ssr-page-that-delays-loading"); + Browser.Equal("loaded child", () => Browser.Exists(By.Id("child")).Text); + } + + [Fact] + public void PostRequestRendersEndStateOfComponentsOnSSRPage() + { + Navigate($"{ServerPathBase}/forms/post-form-with-component-that-delays-loading"); + + Browser.Exists(By.Id("submit-button")).Click(); + + Browser.Equal("loaded child", () => Browser.Exists(By.Id("child")).Text); + } } diff --git a/src/Components/test/testassets/Components.TestServer/RazorComponents/Components/ChildComponentThatDelaysLoading.razor b/src/Components/test/testassets/Components.TestServer/RazorComponents/Components/ChildComponentThatDelaysLoading.razor new file mode 100644 index 000000000000..a1f766507d7f --- /dev/null +++ b/src/Components/test/testassets/Components.TestServer/RazorComponents/Components/ChildComponentThatDelaysLoading.razor @@ -0,0 +1,13 @@ +

@childString

+ +@code { + private string childString = "initial child"; + + protected override async Task OnInitializedAsync() + { + await Task.Yield(); + + childString = "loaded child"; + } + +} diff --git a/src/Components/test/testassets/Components.TestServer/RazorComponents/Components/ParentComponentThatDelaysLoading.razor b/src/Components/test/testassets/Components.TestServer/RazorComponents/Components/ParentComponentThatDelaysLoading.razor new file mode 100644 index 000000000000..ffea93dbfd4a --- /dev/null +++ b/src/Components/test/testassets/Components.TestServer/RazorComponents/Components/ParentComponentThatDelaysLoading.razor @@ -0,0 +1,21 @@ +@if (_loaded) +{ + +} + +@code { + private bool _loaded; + + protected override async Task OnInitializedAsync() + { + await base.OnInitializedAsync(); + _loaded = await Load(); + } + + private async Task Load() + { + await Task.Yield(); + + return true; + } +} diff --git a/src/Components/test/testassets/Components.TestServer/RazorComponents/Pages/Forms/PostFormWithComponentThatDelaysLoading.razor b/src/Components/test/testassets/Components.TestServer/RazorComponents/Pages/Forms/PostFormWithComponentThatDelaysLoading.razor new file mode 100644 index 000000000000..3c7e5ea693f0 --- /dev/null +++ b/src/Components/test/testassets/Components.TestServer/RazorComponents/Pages/Forms/PostFormWithComponentThatDelaysLoading.razor @@ -0,0 +1,19 @@ +@page "/forms/post-form-with-component-that-delays-loading" +@using Microsoft.AspNetCore.Components.Forms + +

Post Form With Component That Delays Loading

+ +@if (_render) +{ + +} + +
+ + + + +@code +{ + bool _render; +} diff --git a/src/Components/test/testassets/Components.TestServer/RazorComponents/Pages/SSRPageThatDelaysLoading.razor b/src/Components/test/testassets/Components.TestServer/RazorComponents/Pages/SSRPageThatDelaysLoading.razor new file mode 100644 index 000000000000..a6a5c1cd5636 --- /dev/null +++ b/src/Components/test/testassets/Components.TestServer/RazorComponents/Pages/SSRPageThatDelaysLoading.razor @@ -0,0 +1,5 @@ +@page "/ssr-page-that-delays-loading" +

SSR page that delays loading

+ + + From 62a85bff1db515756af5a0acd29f64a8034ef2c3 Mon Sep 17 00:00:00 2001 From: James Newton-King Date: Thu, 4 Jan 2024 12:51:21 +0800 Subject: [PATCH 068/391] [release/8.0] Fix metrics duration and http.route tag with exception handling (#52790) * Fix metrics duration and http.route tag with exception handling * Fix build --- .../Internal/HostingApplicationDiagnostics.cs | 3 +- .../src/Microsoft.AspNetCore.Hosting.csproj | 1 + .../ExceptionHandlerMiddlewareImpl.cs | 7 +- .../Microsoft.AspNetCore.Diagnostics.csproj | 1 + .../StatusCodePagesExtensions.cs | 6 +- .../ExceptionHandlerMiddlewareTest.cs | 136 +++++++++++++++++- src/Shared/HttpExtensions.cs | 37 +++++ 7 files changed, 176 insertions(+), 15 deletions(-) diff --git a/src/Hosting/Hosting/src/Internal/HostingApplicationDiagnostics.cs b/src/Hosting/Hosting/src/Internal/HostingApplicationDiagnostics.cs index b14b8d60b0e9..9b473ac08547 100644 --- a/src/Hosting/Hosting/src/Internal/HostingApplicationDiagnostics.cs +++ b/src/Hosting/Hosting/src/Internal/HostingApplicationDiagnostics.cs @@ -150,7 +150,8 @@ public void RequestEnd(HttpContext httpContext, Exception? exception, HostingApp if (context.MetricsEnabled) { - var route = httpContext.GetEndpoint()?.Metadata.GetMetadata()?.Route; + var endpoint = HttpExtensions.GetOriginalEndpoint(httpContext); + var route = endpoint?.Metadata.GetMetadata()?.Route; var customTags = context.MetricsTagsFeature?.TagsList; _metrics.RequestEnd( diff --git a/src/Hosting/Hosting/src/Microsoft.AspNetCore.Hosting.csproj b/src/Hosting/Hosting/src/Microsoft.AspNetCore.Hosting.csproj index 49974f5104af..c898aed6af58 100644 --- a/src/Hosting/Hosting/src/Microsoft.AspNetCore.Hosting.csproj +++ b/src/Hosting/Hosting/src/Microsoft.AspNetCore.Hosting.csproj @@ -34,6 +34,7 @@ + diff --git a/src/Middleware/Diagnostics/src/ExceptionHandler/ExceptionHandlerMiddlewareImpl.cs b/src/Middleware/Diagnostics/src/ExceptionHandler/ExceptionHandlerMiddlewareImpl.cs index e8f40e9b3fab..d0579a121b94 100644 --- a/src/Middleware/Diagnostics/src/ExceptionHandler/ExceptionHandlerMiddlewareImpl.cs +++ b/src/Middleware/Diagnostics/src/ExceptionHandler/ExceptionHandlerMiddlewareImpl.cs @@ -247,12 +247,7 @@ private static void ClearHttpContext(HttpContext context) // An endpoint may have already been set. Since we're going to re-invoke the middleware pipeline we need to reset // the endpoint and route values to ensure things are re-calculated. - context.SetEndpoint(endpoint: null); - var routeValuesFeature = context.Features.Get(); - if (routeValuesFeature != null) - { - routeValuesFeature.RouteValues = null!; - } + HttpExtensions.ClearEndpoint(context); } private static Task ClearCacheHeaders(object state) diff --git a/src/Middleware/Diagnostics/src/Microsoft.AspNetCore.Diagnostics.csproj b/src/Middleware/Diagnostics/src/Microsoft.AspNetCore.Diagnostics.csproj index c83395d96d9b..4657b64cbf7b 100644 --- a/src/Middleware/Diagnostics/src/Microsoft.AspNetCore.Diagnostics.csproj +++ b/src/Middleware/Diagnostics/src/Microsoft.AspNetCore.Diagnostics.csproj @@ -16,6 +16,7 @@ + diff --git a/src/Middleware/Diagnostics/src/StatusCodePage/StatusCodePagesExtensions.cs b/src/Middleware/Diagnostics/src/StatusCodePage/StatusCodePagesExtensions.cs index 5cb8c981b280..a431f35582f8 100644 --- a/src/Middleware/Diagnostics/src/StatusCodePage/StatusCodePagesExtensions.cs +++ b/src/Middleware/Diagnostics/src/StatusCodePage/StatusCodePagesExtensions.cs @@ -190,11 +190,7 @@ private static Func CreateHandler(string pathFormat, st // An endpoint may have already been set. Since we're going to re-invoke the middleware pipeline we need to reset // the endpoint and route values to ensure things are re-calculated. - context.HttpContext.SetEndpoint(endpoint: null); - if (routeValuesFeature != null) - { - routeValuesFeature.RouteValues = null!; - } + HttpExtensions.ClearEndpoint(context.HttpContext); context.HttpContext.Request.Path = newPath; context.HttpContext.Request.QueryString = newQueryString; diff --git a/src/Middleware/Diagnostics/test/UnitTests/ExceptionHandlerMiddlewareTest.cs b/src/Middleware/Diagnostics/test/UnitTests/ExceptionHandlerMiddlewareTest.cs index e92d2fcda399..4898f6d772c8 100644 --- a/src/Middleware/Diagnostics/test/UnitTests/ExceptionHandlerMiddlewareTest.cs +++ b/src/Middleware/Diagnostics/test/UnitTests/ExceptionHandlerMiddlewareTest.cs @@ -3,6 +3,7 @@ using System.Diagnostics; using System.Diagnostics.Metrics; +using System.Net; using System.Net.Http; using System.Net.Http.Headers; using System.Net.Http.Json; @@ -12,19 +13,21 @@ using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Http.Features; using Microsoft.AspNetCore.Mvc; +using Microsoft.AspNetCore.Routing; +using Microsoft.AspNetCore.Routing.Patterns; using Microsoft.AspNetCore.TestHost; using Microsoft.AspNetCore.Testing; using Microsoft.Extensions.DependencyInjection; -using Microsoft.Extensions.Diagnostics.Metrics; +using Microsoft.Extensions.Diagnostics.Metrics.Testing; using Microsoft.Extensions.Hosting; +using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging.Abstractions; using Microsoft.Extensions.Options; -using Microsoft.Extensions.Diagnostics.Metrics.Testing; using Moq; namespace Microsoft.AspNetCore.Diagnostics; -public class ExceptionHandlerMiddlewareTest +public class ExceptionHandlerMiddlewareTest : LoggedTest { [Fact] public async Task ExceptionIsSetOnProblemDetailsContext() @@ -291,6 +294,133 @@ public async Task Metrics_ExceptionThrown_DefaultSettings_Handled_Reported() m => AssertRequestException(m, "System.InvalidOperationException", "handled", null)); } + [Fact] + public async Task Metrics_ExceptionThrown_Handled_UseOriginalRoute() + { + // Arrange + var originalEndpointBuilder = new RouteEndpointBuilder(c => Task.CompletedTask, RoutePatternFactory.Parse("/path"), 0); + var originalEndpoint = originalEndpointBuilder.Build(); + + var meterFactory = new TestMeterFactory(); + using var requestDurationCollector = new MetricCollector(meterFactory, "Microsoft.AspNetCore.Hosting", "http.server.request.duration"); + using var requestExceptionCollector = new MetricCollector(meterFactory, DiagnosticsMetrics.MeterName, "aspnetcore.diagnostics.exceptions"); + + using var host = new HostBuilder() + .ConfigureServices(s => + { + s.AddSingleton(meterFactory); + s.AddSingleton(LoggerFactory); + }) + .ConfigureWebHost(webHostBuilder => + { + webHostBuilder + .UseTestServer() + .Configure(app => + { + app.UseExceptionHandler(new ExceptionHandlerOptions + { + ExceptionHandler = (c) => Task.CompletedTask + }); + app.Run(context => + { + context.SetEndpoint(originalEndpoint); + throw new Exception("Test exception"); + }); + + }); + }).Build(); + + await host.StartAsync(); + + var server = host.GetTestServer(); + + // Act + var response = await server.CreateClient().GetAsync("/path"); + Assert.Equal(HttpStatusCode.InternalServerError, response.StatusCode); + + await requestDurationCollector.WaitForMeasurementsAsync(minCount: 1).DefaultTimeout(); + + // Assert + Assert.Collection( + requestDurationCollector.GetMeasurementSnapshot(), + m => + { + Assert.True(m.Value > 0); + Assert.Equal(500, (int)m.Tags["http.response.status_code"]); + Assert.Equal("System.Exception", (string)m.Tags["error.type"]); + Assert.Equal("/path", (string)m.Tags["http.route"]); + }); + Assert.Collection(requestExceptionCollector.GetMeasurementSnapshot(), + m => AssertRequestException(m, "System.Exception", "handled")); + } + + [Fact] + public async Task Metrics_ExceptionThrown_Handled_UseNewRoute() + { + // Arrange + var originalEndpointBuilder = new RouteEndpointBuilder(c => Task.CompletedTask, RoutePatternFactory.Parse("/path"), 0); + var originalEndpoint = originalEndpointBuilder.Build(); + + var newEndpointBuilder = new RouteEndpointBuilder(c => Task.CompletedTask, RoutePatternFactory.Parse("/new"), 0); + var newEndpoint = newEndpointBuilder.Build(); + + var meterFactory = new TestMeterFactory(); + using var requestDurationCollector = new MetricCollector(meterFactory, "Microsoft.AspNetCore.Hosting", "http.server.request.duration"); + using var requestExceptionCollector = new MetricCollector(meterFactory, DiagnosticsMetrics.MeterName, "aspnetcore.diagnostics.exceptions"); + + using var host = new HostBuilder() + .ConfigureServices(s => + { + s.AddSingleton(meterFactory); + s.AddSingleton(LoggerFactory); + }) + .ConfigureWebHost(webHostBuilder => + { + webHostBuilder + .UseTestServer() + .Configure(app => + { + app.UseExceptionHandler(new ExceptionHandlerOptions + { + ExceptionHandler = (c) => + { + c.SetEndpoint(newEndpoint); + return Task.CompletedTask; + } + }); + app.Run(context => + { + context.SetEndpoint(originalEndpoint); + throw new Exception("Test exception"); + }); + + }); + }).Build(); + + await host.StartAsync(); + + var server = host.GetTestServer(); + + // Act + var response = await server.CreateClient().GetAsync("/path"); + Assert.Equal(HttpStatusCode.InternalServerError, response.StatusCode); + + await requestDurationCollector.WaitForMeasurementsAsync(minCount: 1).DefaultTimeout(); + + // Assert + Assert.Collection( + requestDurationCollector.GetMeasurementSnapshot(), + m => + { + Assert.True(m.Value > 0); + Assert.Equal(500, (int)m.Tags["http.response.status_code"]); + Assert.Equal("System.Exception", (string)m.Tags["error.type"]); + Assert.Equal("/new", (string)m.Tags["http.route"]); + }); + Assert.Collection(requestExceptionCollector.GetMeasurementSnapshot(), + m => AssertRequestException(m, "System.Exception", "handled")); + } + [Fact] public async Task Metrics_ExceptionThrown_Unhandled_Reported() { diff --git a/src/Shared/HttpExtensions.cs b/src/Shared/HttpExtensions.cs index 166bb53bcfaf..4a0d50de25fd 100644 --- a/src/Shared/HttpExtensions.cs +++ b/src/Shared/HttpExtensions.cs @@ -1,6 +1,8 @@ // Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. + using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Http.Features; internal static class HttpExtensions { @@ -10,6 +12,9 @@ internal static class HttpExtensions internal static bool IsValidHttpMethodForForm(string method) => HttpMethods.IsPost(method) || HttpMethods.IsPut(method) || HttpMethods.IsPatch(method); + // Key is a string so shared code works across different assemblies (hosting, error handling middleware, etc). + internal const string OriginalEndpointKey = "__OriginalEndpoint"; + internal static bool IsValidContentTypeForForm(string? contentType) { if (contentType == null) @@ -27,4 +32,36 @@ internal static bool IsValidContentTypeForForm(string? contentType) return contentType.Equals(UrlEncodedFormContentType, StringComparison.OrdinalIgnoreCase) || contentType.StartsWith(MultipartFormContentType, StringComparison.OrdinalIgnoreCase); } + + internal static Endpoint? GetOriginalEndpoint(HttpContext context) + { + var endpoint = context.GetEndpoint(); + + // Some middleware re-execute the middleware pipeline with the HttpContext. Before they do this, they clear state from context, such as the previously matched endpoint. + // The original endpoint is stashed with a known key in HttpContext.Items. Use it as a fallback. + if (endpoint == null && context.Items.TryGetValue(OriginalEndpointKey, out var e) && e is Endpoint originalEndpoint) + { + endpoint = originalEndpoint; + } + return endpoint; + } + + internal static void ClearEndpoint(HttpContext context) + { + var endpoint = context.GetEndpoint(); + if (endpoint != null) + { + context.Items[OriginalEndpointKey] = endpoint; + + // An endpoint may have already been set. Since we're going to re-invoke the middleware pipeline we need to reset + // the endpoint and route values to ensure things are re-calculated. + context.SetEndpoint(endpoint: null); + } + + var routeValuesFeature = context.Features.Get(); + if (routeValuesFeature != null) + { + routeValuesFeature.RouteValues = null!; + } + } } From ea2a01b3ee9a96065eb7f670fb2ad9c4fe5c737b Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 3 Jan 2024 20:52:15 -0800 Subject: [PATCH 069/391] Fix auto import of proto files when gRPC JSON transcoding is a transitive reference (#52470) Co-authored-by: James Newton-King --- .../Microsoft.AspNetCore.Grpc.JsonTranscoding.csproj | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/Grpc/JsonTranscoding/src/Microsoft.AspNetCore.Grpc.JsonTranscoding/Microsoft.AspNetCore.Grpc.JsonTranscoding.csproj b/src/Grpc/JsonTranscoding/src/Microsoft.AspNetCore.Grpc.JsonTranscoding/Microsoft.AspNetCore.Grpc.JsonTranscoding.csproj index 55ea891a5017..bd5e0791aec8 100644 --- a/src/Grpc/JsonTranscoding/src/Microsoft.AspNetCore.Grpc.JsonTranscoding/Microsoft.AspNetCore.Grpc.JsonTranscoding.csproj +++ b/src/Grpc/JsonTranscoding/src/Microsoft.AspNetCore.Grpc.JsonTranscoding/Microsoft.AspNetCore.Grpc.JsonTranscoding.csproj @@ -34,9 +34,12 @@ true content + + + true - build + build;buildTransitive From 599595c7ffb96475894e7f88a0eff3b733fbed3a Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 3 Jan 2024 20:52:25 -0800 Subject: [PATCH 070/391] [release/8.0] Fix reading null struct property value in gRPC JSON transcoding (#52469) * Fix reading null struct property value * Better fix --------- Co-authored-by: James Newton-King --- .../Internal/Json/ValueConverter.cs | 2 + .../ConverterTests/JsonConverterReadTests.cs | 40 +++++++++++++++++++ .../ConverterTests/JsonConverterWriteTests.cs | 25 ++++++++++++ 3 files changed, 67 insertions(+) diff --git a/src/Grpc/JsonTranscoding/src/Microsoft.AspNetCore.Grpc.JsonTranscoding/Internal/Json/ValueConverter.cs b/src/Grpc/JsonTranscoding/src/Microsoft.AspNetCore.Grpc.JsonTranscoding/Internal/Json/ValueConverter.cs index 6d740ec300cd..7a09078606da 100644 --- a/src/Grpc/JsonTranscoding/src/Microsoft.AspNetCore.Grpc.JsonTranscoding/Internal/Json/ValueConverter.cs +++ b/src/Grpc/JsonTranscoding/src/Microsoft.AspNetCore.Grpc.JsonTranscoding/Internal/Json/ValueConverter.cs @@ -10,6 +10,8 @@ namespace Microsoft.AspNetCore.Grpc.JsonTranscoding.Internal.Json; internal sealed class ValueConverter : SettingsConverterBase where TMessage : IMessage, new() { + public override bool HandleNull => true; + public ValueConverter(JsonContext context) : base(context) { } diff --git a/src/Grpc/JsonTranscoding/test/Microsoft.AspNetCore.Grpc.JsonTranscoding.Tests/ConverterTests/JsonConverterReadTests.cs b/src/Grpc/JsonTranscoding/test/Microsoft.AspNetCore.Grpc.JsonTranscoding.Tests/ConverterTests/JsonConverterReadTests.cs index 0215b7536189..08cd4265b783 100644 --- a/src/Grpc/JsonTranscoding/test/Microsoft.AspNetCore.Grpc.JsonTranscoding.Tests/ConverterTests/JsonConverterReadTests.cs +++ b/src/Grpc/JsonTranscoding/test/Microsoft.AspNetCore.Grpc.JsonTranscoding.Tests/ConverterTests/JsonConverterReadTests.cs @@ -84,6 +84,46 @@ public void RepeatedStrings() AssertReadJson(json); } + [Fact] + public void Struct_NullProperty() + { + var json = @"{ ""prop"": null }"; + + AssertReadJson(json); + } + + [Fact] + public void Value_Null() + { + var json = "null"; + + AssertReadJson(json); + } + + [Fact] + public void Value_Integer() + { + var json = "1"; + + AssertReadJson(json); + } + + [Fact] + public void Value_String() + { + var json = @"""string!"""; + + AssertReadJson(json); + } + + [Fact] + public void Value_Boolean() + { + var json = "true"; + + AssertReadJson(json); + } + [Fact] public void DataTypes_DefaultValues() { diff --git a/src/Grpc/JsonTranscoding/test/Microsoft.AspNetCore.Grpc.JsonTranscoding.Tests/ConverterTests/JsonConverterWriteTests.cs b/src/Grpc/JsonTranscoding/test/Microsoft.AspNetCore.Grpc.JsonTranscoding.Tests/ConverterTests/JsonConverterWriteTests.cs index 28a675726c66..e693dc40fa63 100644 --- a/src/Grpc/JsonTranscoding/test/Microsoft.AspNetCore.Grpc.JsonTranscoding.Tests/ConverterTests/JsonConverterWriteTests.cs +++ b/src/Grpc/JsonTranscoding/test/Microsoft.AspNetCore.Grpc.JsonTranscoding.Tests/ConverterTests/JsonConverterWriteTests.cs @@ -334,6 +334,23 @@ public void Value_Nested() AssertWrittenJson(helloRequest); } + [Fact] + public void Struct_NullValue() + { + var helloRequest = new HelloRequest + { + ValueValue = Value.ForStruct(new Struct + { + Fields = + { + ["prop"] = Value.ForNull() + } + }) + }; + + AssertWrittenJson(helloRequest); + } + [Fact] public void Value_Root() { @@ -351,6 +368,14 @@ public void Value_Root() AssertWrittenJson(value); } + [Fact] + public void Value_Null() + { + var value = Value.ForNull(); + + AssertWrittenJson(value); + } + [Fact] public void Struct_Nested() { From c655f85a3ab3f872b1033840a7a43166267526a8 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 3 Jan 2024 20:52:34 -0800 Subject: [PATCH 071/391] Fix deserializing null properties to Protobuf types (#52468) Co-authored-by: James Newton-King --- .../Internal/Json/JsonConverterHelper.cs | 31 ++++----- .../Internal/Json/MessageTypeInfoResolver.cs | 16 ++++- .../ConverterTests/JsonConverterReadTests.cs | 64 +++++++++++++++++++ 3 files changed, 91 insertions(+), 20 deletions(-) diff --git a/src/Grpc/JsonTranscoding/src/Microsoft.AspNetCore.Grpc.JsonTranscoding/Internal/Json/JsonConverterHelper.cs b/src/Grpc/JsonTranscoding/src/Microsoft.AspNetCore.Grpc.JsonTranscoding/Internal/Json/JsonConverterHelper.cs index b86535fca29b..0f5ebefdce18 100644 --- a/src/Grpc/JsonTranscoding/src/Microsoft.AspNetCore.Grpc.JsonTranscoding/Internal/Json/JsonConverterHelper.cs +++ b/src/Grpc/JsonTranscoding/src/Microsoft.AspNetCore.Grpc.JsonTranscoding/Internal/Json/JsonConverterHelper.cs @@ -78,51 +78,46 @@ internal static Type GetFieldType(FieldDescriptor descriptor) } else { - return GetFieldTypeCore(descriptor); - } + // Return nullable field types so the serializer can successfully deserialize null value. + return GetFieldTypeCore(descriptor, nullableType: true); + } } - private static Type GetFieldTypeCore(FieldDescriptor descriptor) + private static Type GetFieldTypeCore(FieldDescriptor descriptor, bool nullableType = false) { switch (descriptor.FieldType) { case FieldType.Bool: - return typeof(bool); + return nullableType ? typeof(bool?) : typeof(bool); case FieldType.Bytes: return typeof(ByteString); case FieldType.String: return typeof(string); case FieldType.Double: - return typeof(double); + return nullableType ? typeof(double?) : typeof(double); case FieldType.SInt32: case FieldType.Int32: case FieldType.SFixed32: - return typeof(int); + return nullableType ? typeof(int?) : typeof(int); case FieldType.Enum: - return descriptor.EnumType.ClrType; + return nullableType ? typeof(Nullable<>).MakeGenericType(descriptor.EnumType.ClrType) : descriptor.EnumType.ClrType; case FieldType.Fixed32: case FieldType.UInt32: - return typeof(uint); + return nullableType ? typeof(uint?) : typeof(uint); case FieldType.Fixed64: case FieldType.UInt64: - return typeof(ulong); + return nullableType ? typeof(ulong?) : typeof(ulong); case FieldType.SFixed64: case FieldType.Int64: case FieldType.SInt64: - return typeof(long); + return nullableType ? typeof(long?) : typeof(long); case FieldType.Float: - return typeof(float); + return nullableType ? typeof(float?) : typeof(float); case FieldType.Message: case FieldType.Group: // Never expect to get this, but... if (ServiceDescriptorHelpers.IsWrapperType(descriptor.MessageType)) { - var t = GetFieldType(descriptor.MessageType.Fields[WrapperValueFieldNumber]); - if (t.IsValueType) - { - return typeof(Nullable<>).MakeGenericType(t); - } - - return t; + return GetFieldType(descriptor.MessageType.Fields[WrapperValueFieldNumber]); } return descriptor.MessageType.ClrType; diff --git a/src/Grpc/JsonTranscoding/src/Microsoft.AspNetCore.Grpc.JsonTranscoding/Internal/Json/MessageTypeInfoResolver.cs b/src/Grpc/JsonTranscoding/src/Microsoft.AspNetCore.Grpc.JsonTranscoding/Internal/Json/MessageTypeInfoResolver.cs index b7c680d93d71..8835897b001f 100644 --- a/src/Grpc/JsonTranscoding/src/Microsoft.AspNetCore.Grpc.JsonTranscoding/Internal/Json/MessageTypeInfoResolver.cs +++ b/src/Grpc/JsonTranscoding/src/Microsoft.AspNetCore.Grpc.JsonTranscoding/Internal/Json/MessageTypeInfoResolver.cs @@ -135,14 +135,26 @@ private JsonPropertyInfo CreatePropertyInfo(JsonTypeInfo typeInfo, string name, throw new InvalidOperationException($"Multiple values specified for oneof {field.RealContainingOneof.Name}."); } - field.Accessor.SetValue((IMessage)o, v); + SetFieldValue(field, (IMessage)o, v); }; } return (o, v) => { - field.Accessor.SetValue((IMessage)o, v); + SetFieldValue(field, (IMessage)o, v); }; + + static void SetFieldValue(FieldDescriptor field, IMessage m, object? v) + { + if (v != null) + { + field.Accessor.SetValue(m, v); + } + else + { + field.Accessor.Clear(m); + } + } } private static Dictionary CreateJsonFieldMap(IList fields) diff --git a/src/Grpc/JsonTranscoding/test/Microsoft.AspNetCore.Grpc.JsonTranscoding.Tests/ConverterTests/JsonConverterReadTests.cs b/src/Grpc/JsonTranscoding/test/Microsoft.AspNetCore.Grpc.JsonTranscoding.Tests/ConverterTests/JsonConverterReadTests.cs index 08cd4265b783..f247d038a1e3 100644 --- a/src/Grpc/JsonTranscoding/test/Microsoft.AspNetCore.Grpc.JsonTranscoding.Tests/ConverterTests/JsonConverterReadTests.cs +++ b/src/Grpc/JsonTranscoding/test/Microsoft.AspNetCore.Grpc.JsonTranscoding.Tests/ConverterTests/JsonConverterReadTests.cs @@ -69,6 +69,42 @@ public void ReadObjectProperties() AssertReadJson(json); } + [Fact] + public void ReadNullStringProperty() + { + var json = @"{ + ""name"": null +}"; + + AssertReadJson(json); + } + + [Fact] + public void ReadNullIntProperty() + { + var json = @"{ + ""age"": null +}"; + + AssertReadJson(json); + } + + [Fact] + public void ReadNullProperties() + { + var json = @"{ + ""age"": null, + ""nullValue"": null, + ""json_customized_name"": null, + ""field_name"": null, + ""oneof_name1"": null, + ""sub"": null, + ""timestamp_value"": null +}"; + + AssertReadJson(json); + } + [Fact] public void RepeatedStrings() { @@ -152,6 +188,34 @@ public void DataTypes_DefaultValues() AssertReadJson(json, descriptorRegistry: serviceDescriptorRegistry); } + [Fact] + public void DataTypes_NullValues() + { + var json = @"{ + ""singleInt32"": null, + ""singleInt64"": null, + ""singleUint32"": null, + ""singleUint64"": null, + ""singleSint32"": null, + ""singleSint64"": null, + ""singleFixed32"": null, + ""singleFixed64"": null, + ""singleSfixed32"": null, + ""singleSfixed64"": null, + ""singleFloat"": null, + ""singleDouble"": null, + ""singleBool"": null, + ""singleString"": null, + ""singleBytes"": null, + ""singleEnum"": null +}"; + + var serviceDescriptorRegistry = new DescriptorRegistry(); + serviceDescriptorRegistry.RegisterFileDescriptor(JsonTranscodingGreeter.Descriptor.File); + + AssertReadJson(json, descriptorRegistry: serviceDescriptorRegistry); + } + [Theory] [InlineData(1)] [InlineData(-1)] From 3a4cdc7d9bddacdb0c18b1fc943d5dd6418f5ad9 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 4 Jan 2024 09:18:30 -0800 Subject: [PATCH 072/391] [release/8.0] Fix handling of default values for struct types in RDG (#53047) * Fix handling of default values in RDG * Address feedback * Cover more test scenarios * Add tests for culture + decimal * Add UseCulture test attribute * Fix formatting --------- Co-authored-by: Safia Abdalla --- ...questDelegateCreationTests.SpecialTypes.cs | 135 ++++++++++++++++++ src/Shared/RoslynUtils/SymbolExtensions.cs | 23 ++- src/Testing/src/UseCultureAttribute.cs | 42 ++++++ 3 files changed, 199 insertions(+), 1 deletion(-) create mode 100644 src/Testing/src/UseCultureAttribute.cs diff --git a/src/Http/Http.Extensions/test/RequestDelegateGenerator/RequestDelegateCreationTests.SpecialTypes.cs b/src/Http/Http.Extensions/test/RequestDelegateGenerator/RequestDelegateCreationTests.SpecialTypes.cs index f74c5e367c1a..4b3199d04523 100644 --- a/src/Http/Http.Extensions/test/RequestDelegateGenerator/RequestDelegateCreationTests.SpecialTypes.cs +++ b/src/Http/Http.Extensions/test/RequestDelegateGenerator/RequestDelegateCreationTests.SpecialTypes.cs @@ -13,6 +13,7 @@ using System.Text.Json; using Microsoft.AspNetCore.Http.Features; using Microsoft.AspNetCore.Http.RequestDelegateGenerator.StaticRouteHandlerModel; +using Microsoft.AspNetCore.Testing; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Primitives; @@ -148,4 +149,138 @@ static void TestAction([AsParameters] ParametersListWithHttpContext args) Assert.Same(httpContext.Request, httpContext.Items["request"]); Assert.Same(httpContext.Response, httpContext.Items["response"]); } + + public static object[][] DefaultValues + { + get + { + return new[] + { + new object[] { "string?", "default", default(string), true }, + new object[] { "string", "\"test\"", "test", true }, + new object[] { "string", "\"a\" + \"b\"", "ab", true }, + new object[] { "DateOnly?", "default", default(DateOnly?), false }, + new object[] { "bool", "default", default(bool), true }, + new object[] { "bool", "false", false, true }, + new object[] { "bool", "true", true, true}, + new object[] { "System.Threading.CancellationToken", "default", default(CancellationToken), false }, + new object[] { "Todo?", "default", default(Todo), false }, + new object[] { "char", "\'a\'", 'a', true }, + new object[] { "int", "default", 0, true }, + new object[] { "int", "1234", 1234, true }, + new object[] { "int", "1234 * 4", 1234 * 4, true }, + new object[] { "double", "1.0", 1.0, true }, + new object[] { "double", "double.NaN", double.NaN, true }, + new object[] { "double", "double.PositiveInfinity", double.PositiveInfinity, true }, + new object[] { "double", "double.NegativeInfinity", double.NegativeInfinity, true }, + new object[] { "double", "double.E", double.E, true }, + new object[] { "double", "double.Epsilon", double.Epsilon, true }, + new object[] { "double", "double.NegativeZero", double.NegativeZero, true }, + new object[] { "double", "double.MaxValue", double.MaxValue, true }, + new object[] { "double", "double.MinValue", double.MinValue, true }, + new object[] { "double", "double.Pi", double.Pi, true }, + new object[] { "double", "double.Tau", double.Tau, true }, + new object[] { "float", "float.NaN", float.NaN, true }, + new object[] { "float", "float.PositiveInfinity", float.PositiveInfinity, true }, + new object[] { "float", "float.NegativeInfinity", float.NegativeInfinity, true }, + new object[] { "float", "float.E", float.E, true }, + new object[] { "float", "float.Epsilon", float.Epsilon, true }, + new object[] { "float", "float.NegativeZero", float.NegativeZero, true }, + new object[] { "float", "float.MaxValue", float.MaxValue, true }, + new object[] { "float", "float.MinValue", float.MinValue, true }, + new object[] { "float", "float.Pi", float.Pi, true }, + new object[] { "float", "float.Tau", float.Tau, true }, + new object[] {"decimal", "decimal.MaxValue", decimal.MaxValue, true }, + new object[] {"decimal", "decimal.MinusOne", decimal.MinusOne, true }, + new object[] {"decimal", "decimal.MinValue", decimal.MinValue, true }, + new object[] {"decimal", "decimal.One", decimal.One, true }, + new object[] {"decimal", "decimal.Zero", decimal.Zero, true }, + new object[] {"long", "long.MaxValue", long.MaxValue, true }, + new object[] {"long", "long.MinValue", long.MinValue, true }, + new object[] {"short", "short.MaxValue", short.MaxValue, true }, + new object[] {"short", "short.MinValue", short.MinValue, true }, + new object[] {"ulong", "ulong.MaxValue", ulong.MaxValue, true }, + new object[] {"ulong", "ulong.MinValue", ulong.MinValue, true }, + new object[] {"ushort", "ushort.MaxValue", ushort.MaxValue, true }, + new object[] {"ushort", "ushort.MinValue", ushort.MinValue, true }, + }; + } + } + + [Theory] + [MemberData(nameof(DefaultValues))] + public async Task RequestDelegatePopulatesParametersWithDefaultValues(string type, string defaultValue, object expectedValue, bool declareConst) + { + var source = string.Empty; + if (declareConst) + { + source = $$""" +const {{type}} defaultConst = {{defaultValue}}; +static void TestAction( + HttpContext context, + {{type}} parameterWithDefault = {{defaultValue}}, + {{type}} parameterWithConst = defaultConst) +{ + context.Items.Add("parameterWithDefault", parameterWithDefault); + context.Items.Add("parameterWithConst", parameterWithConst); +} +app.MapPost("/", TestAction); +"""; + } + else + { + source = $$""" +static void TestAction( +HttpContext context, +{{type}} parameterWithDefault = {{defaultValue}}) +{ +context.Items.Add("parameterWithDefault", parameterWithDefault); +} +app.MapPost("/", TestAction); +"""; + } + + var (_, compilation) = await RunGeneratorAsync(source); + var endpoint = GetEndpointFromCompilation(compilation); + + var httpContext = CreateHttpContext(); + httpContext.User = new ClaimsPrincipal(); + + await endpoint.RequestDelegate(httpContext); + + Assert.Equal(expectedValue, httpContext.Items["parameterWithDefault"]); + if (declareConst) + { + Assert.Equal(expectedValue, httpContext.Items["parameterWithConst"]); + } + } + + [Fact] + [UseCulture("fr-FR")] + public async Task RequestDelegatePopulatesDecimalWithDefaultValuesAndCultureSet() + { + var source = $$""" + const decimal defaultConst = 3.15m; + static void TestAction( + HttpContext context, + decimal parameterWithDefault = 2.15m, + decimal parameterWithConst = defaultConst) + { + context.Items.Add("parameterWithDefault", parameterWithDefault); + context.Items.Add("parameterWithConst", parameterWithConst); + } + app.MapPost("/", TestAction); + """; + + var (_, compilation) = await RunGeneratorAsync(source); + var endpoint = GetEndpointFromCompilation(compilation); + + var httpContext = CreateHttpContext(); + httpContext.User = new ClaimsPrincipal(); + + await endpoint.RequestDelegate(httpContext); + + Assert.Equal(2.15m, httpContext.Items["parameterWithDefault"]); + Assert.Equal(3.15m, httpContext.Items["parameterWithConst"]); + } } diff --git a/src/Shared/RoslynUtils/SymbolExtensions.cs b/src/Shared/RoslynUtils/SymbolExtensions.cs index 58ec2bfe36d6..cb41458638fc 100644 --- a/src/Shared/RoslynUtils/SymbolExtensions.cs +++ b/src/Shared/RoslynUtils/SymbolExtensions.cs @@ -6,6 +6,7 @@ using System.Collections.Immutable; using System.Diagnostics; using System.Diagnostics.CodeAnalysis; +using System.Globalization; using System.Linq; using System.Reflection.PortableExecutable; using Microsoft.CodeAnalysis; @@ -176,7 +177,27 @@ public static string GetDefaultValueString(this IParameterSymbol parameterSymbol { return !parameterSymbol.HasExplicitDefaultValue ? "null" - : SymbolDisplay.FormatLiteral((parameterSymbol.ExplicitDefaultValue ?? "null").ToString(), parameterSymbol.ExplicitDefaultValue is string); + : InnerGetDefaultValueString(parameterSymbol.ExplicitDefaultValue); + } + + private static string InnerGetDefaultValueString(object? defaultValue) + { + return defaultValue switch + { + string s => SymbolDisplay.FormatLiteral(s, true), + char c => SymbolDisplay.FormatLiteral(c, true), + bool b => b ? "true" : "false", + null => "default", + float f when f is float.NegativeInfinity => "float.NegativeInfinity", + float f when f is float.PositiveInfinity => "float.PositiveInfinity", + float f when f is float.NaN => "float.NaN", + float f => $"{SymbolDisplay.FormatPrimitive(f, false, false)}F", + double d when d is double.NegativeInfinity => "double.NegativeInfinity", + double d when d is double.PositiveInfinity => "double.PositiveInfinity", + double d when d is double.NaN => "double.NaN", + decimal d => $"{SymbolDisplay.FormatPrimitive(d, false, false)}M", + _ => SymbolDisplay.FormatPrimitive(defaultValue, false, false), + }; } public static bool TryGetNamedArgumentValue(this AttributeData attribute, string argumentName, out T? argumentValue) diff --git a/src/Testing/src/UseCultureAttribute.cs b/src/Testing/src/UseCultureAttribute.cs new file mode 100644 index 000000000000..5017855a7918 --- /dev/null +++ b/src/Testing/src/UseCultureAttribute.cs @@ -0,0 +1,42 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. +using System; +using System.Globalization; +using System.Reflection; +using Xunit.Sdk; + +namespace Microsoft.AspNetCore.Testing; + +[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method)] +public sealed class UseCultureAttribute : BeforeAfterTestAttribute +{ + private CultureInfo _originalCulture; + private CultureInfo _originalUiCulture; + public UseCultureAttribute(string culture) + : this(culture, culture) + { + } + + public UseCultureAttribute(string culture, string uiCulture) + { + Culture = new CultureInfo(culture); + UiCulture = new CultureInfo(uiCulture); + } + + public CultureInfo Culture { get; } + public CultureInfo UiCulture { get; } + + public override void Before(MethodInfo methodUnderTest) + { + _originalCulture = CultureInfo.CurrentCulture; + _originalUiCulture = CultureInfo.CurrentUICulture; + CultureInfo.CurrentCulture = Culture; + CultureInfo.CurrentUICulture = UiCulture; + } + + public override void After(MethodInfo methodUnderTest) + { + CultureInfo.CurrentCulture = _originalCulture; + CultureInfo.CurrentUICulture = _originalUiCulture; + } +} From c6fb4b6825376e45d63c9087a5472effc404f840 Mon Sep 17 00:00:00 2001 From: Mackinnon Buck Date: Thu, 4 Jan 2024 14:23:38 -0800 Subject: [PATCH 073/391] Quarantine Microsoft.AspNetCore.Components.E2ETest.Tests.EventTest.Cancel_CanTrigger (#53147) --- src/Components/test/E2ETest/Tests/EventTest.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/src/Components/test/E2ETest/Tests/EventTest.cs b/src/Components/test/E2ETest/Tests/EventTest.cs index 58f30e5f7276..6788aa5bf597 100644 --- a/src/Components/test/E2ETest/Tests/EventTest.cs +++ b/src/Components/test/E2ETest/Tests/EventTest.cs @@ -201,6 +201,7 @@ public void Close_CanTrigger() } [Fact] + [QuarantinedTest("https://github.com/dotnet/aspnetcore/issues/52783")] public void Cancel_CanTrigger() { Browser.MountTestComponent(); From 2a7ea535bb620d44d8c395cf3a79fa44c64c0cac Mon Sep 17 00:00:00 2001 From: Javier Calvarro Nelson Date: Tue, 9 Jan 2024 17:30:50 +0100 Subject: [PATCH 074/391] Disable Yarn in Source Build in 8.0 (#53234) --- .azure/pipelines/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.azure/pipelines/ci.yml b/.azure/pipelines/ci.yml index b6f74001a1a7..b184f7cef685 100644 --- a/.azure/pipelines/ci.yml +++ b/.azure/pipelines/ci.yml @@ -731,7 +731,7 @@ stages: platform: name: 'Managed' container: 'mcr.microsoft.com/dotnet-buildtools/prereqs:centos-stream8' - buildScript: './eng/build.sh $(_PublishArgs) --no-build-repo-tasks $(_InternalRuntimeDownloadArgs)' + buildScript: './eng/build.sh $(_PublishArgs) --no-build-nodejs --no-build-repo-tasks $(_InternalRuntimeDownloadArgs)' skipPublishValidation: true jobProperties: timeoutInMinutes: 120 From 1e788419c2796499e7f0706b1493c24dccfde0d8 Mon Sep 17 00:00:00 2001 From: wtgodbe Date: Tue, 9 Jan 2024 12:50:03 -0800 Subject: [PATCH 075/391] Update Baseline, SDK --- eng/Baseline.Designer.props | 520 ++++++++++++++++++------------------ eng/Baseline.xml | 212 +++++++-------- global.json | 4 +- 3 files changed, 368 insertions(+), 368 deletions(-) diff --git a/eng/Baseline.Designer.props b/eng/Baseline.Designer.props index 9effde6fbf51..e1ede3cc8caf 100644 --- a/eng/Baseline.Designer.props +++ b/eng/Baseline.Designer.props @@ -2,398 +2,398 @@ $(MSBuildAllProjects);$(MSBuildThisFileFullPath) - 8.0.0 + 8.0.1 - 8.0.0 + 8.0.1 - 8.0.0 + 8.0.1 - 8.0.0 + 8.0.1 - 8.0.0 + 8.0.1 - 8.0.0 + 8.0.1 - 8.0.0 + 8.0.1 - 8.0.0 + 8.0.1 - 8.0.0 + 8.0.1 - 8.0.0 + 8.0.1 - 8.0.0 + 8.0.1 - 8.0.0 + 8.0.1 - 8.0.0 + 8.0.1 - 8.0.0 + 8.0.1 - 8.0.0 + 8.0.1 - 8.0.0 + 8.0.1 - 8.0.0 + 8.0.1 - 8.0.0 + 8.0.1 - 8.0.0 + 8.0.1 - 8.0.0 + 8.0.1 - + - 8.0.0 + 8.0.1 - 8.0.0 + 8.0.1 - + - 8.0.0 + 8.0.1 - + - 8.0.0 + 8.0.1 - 8.0.0 + 8.0.1 - - + + - 8.0.0 + 8.0.1 - + - + - + - + - + - + - 8.0.0 + 8.0.1 - + - 8.0.0 + 8.0.1 - 8.0.0 + 8.0.1 - + - 8.0.0 + 8.0.1 - - + + - 8.0.0 + 8.0.1 - 8.0.0 + 8.0.1 - - + + - 8.0.0 + 8.0.1 - + - 8.0.0 + 8.0.1 - + - 8.0.0 + 8.0.1 - + - 8.0.0 + 8.0.1 - - + + - 8.0.0 + 8.0.1 - - - + + + - 8.0.0 + 8.0.1 - - - + + + - 8.0.0 + 8.0.1 - - + + - 8.0.0 + 8.0.1 - 8.0.0 + 8.0.1 - 8.0.0 + 8.0.1 - - - + + + - 8.0.0 + 8.0.1 - + - 8.0.0 + 8.0.1 - + - + - + - + - 8.0.0 + 8.0.1 - 8.0.0 + 8.0.1 - + - + - + - 8.0.0 + 8.0.1 - - + + - + - - + + - + - - + + - + - 8.0.0 + 8.0.1 - 8.0.0 + 8.0.1 - - + + - 8.0.0 + 8.0.1 - + - + - + - 8.0.0 + 8.0.1 - + - + - + - 8.0.0 + 8.0.1 - + - 8.0.0 + 8.0.1 @@ -402,7 +402,7 @@ - 8.0.0 + 8.0.1 @@ -410,71 +410,71 @@ - 8.0.0 + 8.0.1 - 8.0.0 + 8.0.1 - + - + - + - + - + - + - + - + - 8.0.0 + 8.0.1 - - + + - + - - + + - 8.0.0 + 8.0.1 - - + + - 8.0.0 + 8.0.1 - - + + - 8.0.0 + 8.0.1 @@ -490,27 +490,27 @@ - 8.0.0 + 8.0.1 - 8.0.0 + 8.0.1 - 8.0.0 + 8.0.1 - + - 8.0.0 + 8.0.1 @@ -519,270 +519,270 @@ - 8.0.0 + 8.0.1 - + - 8.0.0 + 8.0.1 - 8.0.0 + 8.0.1 - + - 8.0.0 + 8.0.1 - 8.0.0 + 8.0.1 - - + + - - + + - - + + - 8.0.0 + 8.0.1 - - - + + + - - + + - - - + + + - - - + + + - 8.0.0 + 8.0.1 - - + + - + - - + + - - - + + + - 8.0.0 + 8.0.1 - + - + - + - 8.0.0 + 8.0.1 - + - + - + - 8.0.0 + 8.0.1 - + - + - + - 8.0.0 + 8.0.1 - - - - + + + + - 8.0.0 + 8.0.1 - + - 8.0.0 + 8.0.1 - 8.0.0 + 8.0.1 - 8.0.0 + 8.0.1 - 8.0.0 + 8.0.1 - + - 8.0.0 + 8.0.1 - + - 8.0.0 + 8.0.1 - 8.0.0 + 8.0.1 - 8.0.0 + 8.0.1 - 8.0.0 + 8.0.1 - 8.0.0 + 8.0.1 - 8.0.0 + 8.0.1 - 8.0.0 + 8.0.1 - + - + - + - 8.0.0 + 8.0.1 - + - + - + - 8.0.0 + 8.0.1 @@ -798,48 +798,48 @@ - 8.0.0 + 8.0.1 - + - + - + - + - + - + - 8.0.0 + 8.0.1 - 8.0.0 + 8.0.1 - - - + + + - 8.0.0 + 8.0.1 - 8.0.0 + 8.0.1 @@ -849,7 +849,7 @@ - 8.0.0 + 8.0.1 @@ -858,73 +858,73 @@ - 8.0.0 + 8.0.1 - + - + - + - + - + - + - 8.0.0 + 8.0.1 - + - + - + - 8.0.0 + 8.0.1 - + - + - + - + - + - + - 8.0.0 + 8.0.1 - 8.0.0 + 8.0.1 @@ -953,40 +953,40 @@ - 8.0.0 + 8.0.1 - 8.0.0 + 8.0.1 - + - + - + - 8.0.0 + 8.0.1 - 8.0.0 + 8.0.1 - + - 8.0.0 + 8.0.1 diff --git a/eng/Baseline.xml b/eng/Baseline.xml index b3315cab1b06..f88c76c8f57b 100644 --- a/eng/Baseline.xml +++ b/eng/Baseline.xml @@ -4,110 +4,110 @@ This file contains a list of all the packages and their versions which were rele Update this list when preparing for a new patch. --> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/global.json b/global.json index 87ae878e6e2e..4b213d8953aa 100644 --- a/global.json +++ b/global.json @@ -1,9 +1,9 @@ { "sdk": { - "version": "8.0.100" + "version": "8.0.101" }, "tools": { - "dotnet": "8.0.100", + "dotnet": "8.0.101", "runtimes": { "dotnet/x86": [ "$(MicrosoftNETCoreBrowserDebugHostTransportVersion)" From 6b17d15843fe38f132b6dadf66776ccf8ca9642a Mon Sep 17 00:00:00 2001 From: Nikola Milosavljevic Date: Wed, 10 Jan 2024 09:34:49 -0800 Subject: [PATCH 076/391] Use SHA256 for RPM digest (#53157) --- src/Installers/Rpm/Directory.Build.targets | 1 + 1 file changed, 1 insertion(+) diff --git a/src/Installers/Rpm/Directory.Build.targets b/src/Installers/Rpm/Directory.Build.targets index 07d01bb46ed6..30d705abb1dc 100644 --- a/src/Installers/Rpm/Directory.Build.targets +++ b/src/Installers/Rpm/Directory.Build.targets @@ -76,6 +76,7 @@ + From a4fd5febbb4c9977976a3cd800c14288050f3eae Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" <42748379+dotnet-maestro[bot]@users.noreply.github.com> Date: Wed, 10 Jan 2024 19:03:30 +0000 Subject: [PATCH 077/391] Update dependencies from https://github.com/dotnet/arcade build 20240109.4 (#53273) Microsoft.DotNet.Arcade.Sdk , Microsoft.DotNet.Build.Tasks.Installers , Microsoft.DotNet.Build.Tasks.Templating , Microsoft.DotNet.Helix.Sdk , Microsoft.DotNet.RemoteExecutor From Version 8.0.0-beta.23564.4 -> To Version 8.0.0-beta.24059.4 Co-authored-by: dotnet-maestro[bot] --- NuGet.config | 6 ++++-- eng/Version.Details.xml | 20 +++++++++---------- eng/Versions.props | 6 +++--- eng/common/darc-init.ps1 | 2 +- eng/common/darc-init.sh | 2 +- .../post-build/add-build-to-channel.ps1 | 2 +- eng/common/post-build/publish-using-darc.ps1 | 2 +- .../post-build/trigger-subscriptions.ps1 | 2 +- eng/common/templates/job/job.yml | 2 +- .../templates/job/publish-build-assets.yml | 4 ++-- .../templates/post-build/common-variables.yml | 2 +- .../templates/post-build/post-build.yml | 4 ++-- eng/common/tools.ps1 | 10 +++++++++- eng/common/tools.sh | 7 ++++++- global.json | 4 ++-- 15 files changed, 45 insertions(+), 30 deletions(-) diff --git a/NuGet.config b/NuGet.config index 7b2e138cae5a..0f7340218bcc 100644 --- a/NuGet.config +++ b/NuGet.config @@ -6,10 +6,11 @@ - + + @@ -30,9 +31,10 @@ - + + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 69af04ddbf53..db3c1d07938e 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -376,26 +376,26 @@ https://github.com/dotnet/winforms abda8e3bfa78319363526b5a5f86863ec979940e
- + https://github.com/dotnet/arcade - 0aaeafef60933f87b0b50350313bb2fd77defb5d + 61ae141d2bf3534619265c8f691fd55dc3e75147 - + https://github.com/dotnet/arcade - 0aaeafef60933f87b0b50350313bb2fd77defb5d + 61ae141d2bf3534619265c8f691fd55dc3e75147 - + https://github.com/dotnet/arcade - 0aaeafef60933f87b0b50350313bb2fd77defb5d + 61ae141d2bf3534619265c8f691fd55dc3e75147 - + https://github.com/dotnet/arcade - 0aaeafef60933f87b0b50350313bb2fd77defb5d + 61ae141d2bf3534619265c8f691fd55dc3e75147 - + https://github.com/dotnet/arcade - 0aaeafef60933f87b0b50350313bb2fd77defb5d + 61ae141d2bf3534619265c8f691fd55dc3e75147 https://github.com/dotnet/extensions diff --git a/eng/Versions.props b/eng/Versions.props index e417c939aeb6..dd2616f9e095 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -161,9 +161,9 @@ 6.2.4 6.2.4 - 8.0.0-beta.23564.4 - 8.0.0-beta.23564.4 - 8.0.0-beta.23564.4 + 8.0.0-beta.24059.4 + 8.0.0-beta.24059.4 + 8.0.0-beta.24059.4 8.0.0-alpha.1.23577.6 diff --git a/eng/common/darc-init.ps1 b/eng/common/darc-init.ps1 index 435e7641341b..8fda30bdce2b 100644 --- a/eng/common/darc-init.ps1 +++ b/eng/common/darc-init.ps1 @@ -1,6 +1,6 @@ param ( $darcVersion = $null, - $versionEndpoint = 'https://maestro-prod.westus2.cloudapp.azure.com/api/assets/darc-version?api-version=2019-01-16', + $versionEndpoint = 'https://maestro.dot.net/api/assets/darc-version?api-version=2019-01-16', $verbosity = 'minimal', $toolpath = $null ) diff --git a/eng/common/darc-init.sh b/eng/common/darc-init.sh index 84c1d0cc2e75..c305ae6bd771 100755 --- a/eng/common/darc-init.sh +++ b/eng/common/darc-init.sh @@ -2,7 +2,7 @@ source="${BASH_SOURCE[0]}" darcVersion='' -versionEndpoint='https://maestro-prod.westus2.cloudapp.azure.com/api/assets/darc-version?api-version=2019-01-16' +versionEndpoint='https://maestro.dot.net/api/assets/darc-version?api-version=2019-01-16' verbosity='minimal' while [[ $# > 0 ]]; do diff --git a/eng/common/post-build/add-build-to-channel.ps1 b/eng/common/post-build/add-build-to-channel.ps1 index de2d957922a6..49938f0c89f7 100644 --- a/eng/common/post-build/add-build-to-channel.ps1 +++ b/eng/common/post-build/add-build-to-channel.ps1 @@ -2,7 +2,7 @@ param( [Parameter(Mandatory=$true)][int] $BuildId, [Parameter(Mandatory=$true)][int] $ChannelId, [Parameter(Mandatory=$true)][string] $MaestroApiAccessToken, - [Parameter(Mandatory=$false)][string] $MaestroApiEndPoint = 'https://maestro-prod.westus2.cloudapp.azure.com/', + [Parameter(Mandatory=$false)][string] $MaestroApiEndPoint = 'https://maestro.dot.net/', [Parameter(Mandatory=$false)][string] $MaestroApiVersion = '2019-01-16' ) diff --git a/eng/common/post-build/publish-using-darc.ps1 b/eng/common/post-build/publish-using-darc.ps1 index 8508397d7764..1e779fec4dd1 100644 --- a/eng/common/post-build/publish-using-darc.ps1 +++ b/eng/common/post-build/publish-using-darc.ps1 @@ -3,7 +3,7 @@ param( [Parameter(Mandatory=$true)][int] $PublishingInfraVersion, [Parameter(Mandatory=$true)][string] $AzdoToken, [Parameter(Mandatory=$true)][string] $MaestroToken, - [Parameter(Mandatory=$false)][string] $MaestroApiEndPoint = 'https://maestro-prod.westus2.cloudapp.azure.com/', + [Parameter(Mandatory=$false)][string] $MaestroApiEndPoint = 'https://maestro.dot.net/', [Parameter(Mandatory=$true)][string] $WaitPublishingFinish, [Parameter(Mandatory=$false)][string] $ArtifactsPublishingAdditionalParameters, [Parameter(Mandatory=$false)][string] $SymbolPublishingAdditionalParameters diff --git a/eng/common/post-build/trigger-subscriptions.ps1 b/eng/common/post-build/trigger-subscriptions.ps1 index 55dea518ac58..ac9a95778fcd 100644 --- a/eng/common/post-build/trigger-subscriptions.ps1 +++ b/eng/common/post-build/trigger-subscriptions.ps1 @@ -2,7 +2,7 @@ param( [Parameter(Mandatory=$true)][string] $SourceRepo, [Parameter(Mandatory=$true)][int] $ChannelId, [Parameter(Mandatory=$true)][string] $MaestroApiAccessToken, - [Parameter(Mandatory=$false)][string] $MaestroApiEndPoint = 'https://maestro-prod.westus2.cloudapp.azure.com/', + [Parameter(Mandatory=$false)][string] $MaestroApiEndPoint = 'https://maestro.dot.net/', [Parameter(Mandatory=$false)][string] $MaestroApiVersion = '2019-01-16' ) diff --git a/eng/common/templates/job/job.yml b/eng/common/templates/job/job.yml index e20ee3a983cb..e24ca2f46f98 100644 --- a/eng/common/templates/job/job.yml +++ b/eng/common/templates/job/job.yml @@ -136,7 +136,7 @@ jobs: condition: and(succeeded(), in(variables['_SignType'], 'real', 'test'), eq(variables['Agent.Os'], 'Windows_NT')) - ${{ if and(eq(parameters.runAsPublic, 'false'), eq(variables['System.TeamProject'], 'internal')) }}: - - task: NuGetAuthenticate@0 + - task: NuGetAuthenticate@1 - ${{ if and(ne(parameters.artifacts.download, 'false'), ne(parameters.artifacts.download, '')) }}: - task: DownloadPipelineArtifact@2 diff --git a/eng/common/templates/job/publish-build-assets.yml b/eng/common/templates/job/publish-build-assets.yml index 42017109f374..fa5446c093dd 100644 --- a/eng/common/templates/job/publish-build-assets.yml +++ b/eng/common/templates/job/publish-build-assets.yml @@ -72,7 +72,7 @@ jobs: condition: ${{ parameters.condition }} continueOnError: ${{ parameters.continueOnError }} - - task: NuGetAuthenticate@0 + - task: NuGetAuthenticate@1 - task: PowerShell@2 displayName: Publish Build Assets @@ -81,7 +81,7 @@ jobs: arguments: -task PublishBuildAssets -restore -msbuildEngine dotnet /p:ManifestsPath='$(Build.StagingDirectory)/Download/AssetManifests' /p:BuildAssetRegistryToken=$(MaestroAccessToken) - /p:MaestroApiEndpoint=https://maestro-prod.westus2.cloudapp.azure.com + /p:MaestroApiEndpoint=https://maestro.dot.net /p:PublishUsingPipelines=${{ parameters.publishUsingPipelines }} /p:OfficialBuildId=$(Build.BuildNumber) condition: ${{ parameters.condition }} diff --git a/eng/common/templates/post-build/common-variables.yml b/eng/common/templates/post-build/common-variables.yml index c24193acfc98..173914f2364a 100644 --- a/eng/common/templates/post-build/common-variables.yml +++ b/eng/common/templates/post-build/common-variables.yml @@ -7,7 +7,7 @@ variables: # Default Maestro++ API Endpoint and API Version - name: MaestroApiEndPoint - value: "https://maestro-prod.westus2.cloudapp.azure.com/" + value: "https://maestro.dot.net/" - name: MaestroApiAccessToken value: $(MaestroAccessToken) - name: MaestroApiVersion diff --git a/eng/common/templates/post-build/post-build.yml b/eng/common/templates/post-build/post-build.yml index ef720f9d7819..3f74abf7ce0f 100644 --- a/eng/common/templates/post-build/post-build.yml +++ b/eng/common/templates/post-build/post-build.yml @@ -169,7 +169,7 @@ stages: # This is necessary whenever we want to publish/restore to an AzDO private feed # Since sdk-task.ps1 tries to restore packages we need to do this authentication here # otherwise it'll complain about accessing a private feed. - - task: NuGetAuthenticate@0 + - task: NuGetAuthenticate@1 displayName: 'Authenticate to AzDO Feeds' # Signing validation will optionally work with the buildmanifest file which is downloaded from @@ -266,7 +266,7 @@ stages: BARBuildId: ${{ parameters.BARBuildId }} PromoteToChannelIds: ${{ parameters.PromoteToChannelIds }} - - task: NuGetAuthenticate@0 + - task: NuGetAuthenticate@1 - task: PowerShell@2 displayName: Publish Using Darc diff --git a/eng/common/tools.ps1 b/eng/common/tools.ps1 index fdd0cbb91f85..eb188cfda415 100644 --- a/eng/common/tools.ps1 +++ b/eng/common/tools.ps1 @@ -601,7 +601,15 @@ function InitializeBuildTool() { ExitWithExitCode 1 } $dotnetPath = Join-Path $dotnetRoot (GetExecutableFileName 'dotnet') - $buildTool = @{ Path = $dotnetPath; Command = 'msbuild'; Tool = 'dotnet'; Framework = 'net8.0' } + + # Use override if it exists - commonly set by source-build + if ($null -eq $env:_OverrideArcadeInitializeBuildToolFramework) { + $initializeBuildToolFramework="net8.0" + } else { + $initializeBuildToolFramework=$env:_OverrideArcadeInitializeBuildToolFramework + } + + $buildTool = @{ Path = $dotnetPath; Command = 'msbuild'; Tool = 'dotnet'; Framework = $initializeBuildToolFramework } } elseif ($msbuildEngine -eq "vs") { try { $msbuildPath = InitializeVisualStudioMSBuild -install:$restore diff --git a/eng/common/tools.sh b/eng/common/tools.sh index e8d478943341..3392e3a99921 100755 --- a/eng/common/tools.sh +++ b/eng/common/tools.sh @@ -341,7 +341,12 @@ function InitializeBuildTool { # return values _InitializeBuildTool="$_InitializeDotNetCli/dotnet" _InitializeBuildToolCommand="msbuild" - _InitializeBuildToolFramework="net8.0" + # use override if it exists - commonly set by source-build + if [[ "${_OverrideArcadeInitializeBuildToolFramework:-x}" == "x" ]]; then + _InitializeBuildToolFramework="net8.0" + else + _InitializeBuildToolFramework="${_OverrideArcadeInitializeBuildToolFramework}" + fi } # Set RestoreNoCache as a workaround for https://github.com/NuGet/Home/issues/3116 diff --git a/global.json b/global.json index 4b213d8953aa..eb4b2917f6e4 100644 --- a/global.json +++ b/global.json @@ -27,7 +27,7 @@ }, "msbuild-sdks": { "Yarn.MSBuild": "1.22.10", - "Microsoft.DotNet.Arcade.Sdk": "8.0.0-beta.23564.4", - "Microsoft.DotNet.Helix.Sdk": "8.0.0-beta.23564.4" + "Microsoft.DotNet.Arcade.Sdk": "8.0.0-beta.24059.4", + "Microsoft.DotNet.Helix.Sdk": "8.0.0-beta.24059.4" } } From 19258e56af33bcde9156f70155cab8966efa639a Mon Sep 17 00:00:00 2001 From: Surayya Huseyn Zada <114938397+surayya-MS@users.noreply.github.com> Date: Wed, 10 Jan 2024 20:21:14 +0100 Subject: [PATCH 078/391] [release/8.0] Fix NavigationManager.Refresh() on SSR-only pages (#52767) * Fix NavigationManager.Refresh() on SSR-only pages (#52559) * implement NavigationManager.Refresh() on ssr pages --------- Co-authored-by: Steve Sanderson * update blazor js files * small fix --------- Co-authored-by: Steve Sanderson Co-authored-by: Mackinnon Buck --- .../HttpNavigationManager.cs | 2 +- .../src/Circuits/RemoteNavigationManager.cs | 6 ++ .../Web.JS/dist/Release/blazor.web.js | 2 +- .../src/Services/NavigationEnhancement.ts | 4 +- .../FormWithParentBindingContextTest.cs | 20 ++++++ .../ServerRenderingTests/InteractivityTest.cs | 16 +++++ .../NoInteractivityTest.cs | 43 +++++++++++++ ...omponentEndpointsNoInteractivityStartup.cs | 64 +++++++++++++++++++ ...ormThatCallsNavigationManagerRefresh.razor | 27 ++++++++ 9 files changed, 181 insertions(+), 3 deletions(-) create mode 100644 src/Components/test/E2ETest/ServerRenderingTests/NoInteractivityTest.cs create mode 100644 src/Components/test/testassets/Components.TestServer/RazorComponentEndpointsNoInteractivityStartup.cs create mode 100644 src/Components/test/testassets/Components.TestServer/RazorComponents/Pages/Forms/FormThatCallsNavigationManagerRefresh.razor diff --git a/src/Components/Endpoints/src/DependencyInjection/HttpNavigationManager.cs b/src/Components/Endpoints/src/DependencyInjection/HttpNavigationManager.cs index 8098deb3b6ce..3edcb925a6fb 100644 --- a/src/Components/Endpoints/src/DependencyInjection/HttpNavigationManager.cs +++ b/src/Components/Endpoints/src/DependencyInjection/HttpNavigationManager.cs @@ -9,7 +9,7 @@ internal sealed class HttpNavigationManager : NavigationManager, IHostEnvironmen { void IHostEnvironmentNavigationManager.Initialize(string baseUri, string uri) => Initialize(baseUri, uri); - protected override void NavigateToCore(string uri, bool forceLoad) + protected override void NavigateToCore(string uri, NavigationOptions options) { var absoluteUriString = ToAbsoluteUri(uri).ToString(); throw new NavigationException(absoluteUriString); diff --git a/src/Components/Server/src/Circuits/RemoteNavigationManager.cs b/src/Components/Server/src/Circuits/RemoteNavigationManager.cs index cd3b8b26104e..4841f8f58417 100644 --- a/src/Components/Server/src/Circuits/RemoteNavigationManager.cs +++ b/src/Components/Server/src/Circuits/RemoteNavigationManager.cs @@ -120,6 +120,12 @@ async Task PerformNavigationAsync() /// public override void Refresh(bool forceReload = false) { + if (_jsRuntime == null) + { + var absoluteUriString = ToAbsoluteUri(Uri).ToString(); + throw new NavigationException(absoluteUriString); + } + _ = RefreshAsync(); async Task RefreshAsync() diff --git a/src/Components/Web.JS/dist/Release/blazor.web.js b/src/Components/Web.JS/dist/Release/blazor.web.js index d8455b37aac1..40ca03e6781e 100644 --- a/src/Components/Web.JS/dist/Release/blazor.web.js +++ b/src/Components/Web.JS/dist/Release/blazor.web.js @@ -1 +1 @@ -(()=>{var e={778:()=>{},77:()=>{},203:()=>{},200:()=>{},628:()=>{},321:()=>{}},t={};function n(o){var r=t[o];if(void 0!==r)return r.exports;var i=t[o]={exports:{}};return e[o](i,i.exports,n),i.exports}n.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),(()=>{"use strict";var e,t,o;!function(e){const t=[],n="__jsObjectId",o="__dotNetObject",r="__byte[]",i="__dotNetStream",s="__jsStreamReferenceLength";let a,c;class l{constructor(e){this._jsObject=e,this._cachedFunctions=new Map}findFunction(e){const t=this._cachedFunctions.get(e);if(t)return t;let n,o=this._jsObject;if(e.split(".").forEach((t=>{if(!(t in o))throw new Error(`Could not find '${e}' ('${t}' was undefined).`);n=o,o=o[t]})),o instanceof Function)return o=o.bind(n),this._cachedFunctions.set(e,o),o;throw new Error(`The value '${e}' is not a function.`)}getWrappedObject(){return this._jsObject}}const h={0:new l(window)};h[0]._cachedFunctions.set("import",(e=>("string"==typeof e&&e.startsWith("./")&&(e=new URL(e.substr(2),document.baseURI).toString()),import(e))));let d,u=1;function p(e){t.push(e)}function f(e){if(e&&"object"==typeof e){h[u]=new l(e);const t={[n]:u};return u++,t}throw new Error(`Cannot create a JSObjectReference from the value '${e}'.`)}function g(e){let t=-1;if(e instanceof ArrayBuffer&&(e=new Uint8Array(e)),e instanceof Blob)t=e.size;else{if(!(e.buffer instanceof ArrayBuffer))throw new Error("Supplied value is not a typed array or blob.");if(void 0===e.byteLength)throw new Error(`Cannot create a JSStreamReference from the value '${e}' as it doesn't have a byteLength.`);t=e.byteLength}const o={[s]:t};try{const t=f(e);o[n]=t[n]}catch(t){throw new Error(`Cannot create a JSStreamReference from the value '${e}'.`)}return o}function m(e,n){c=e;const o=n?JSON.parse(n,((e,n)=>t.reduce(((t,n)=>n(e,t)),n))):null;return c=void 0,o}function v(){if(void 0===a)throw new Error("No call dispatcher has been set.");if(null===a)throw new Error("There are multiple .NET runtimes present, so a default dispatcher could not be resolved. Use DotNetObject to invoke .NET instance methods.");return a}e.attachDispatcher=function(e){const t=new y(e);return void 0===a?a=t:a&&(a=null),t},e.attachReviver=p,e.invokeMethod=function(e,t,...n){return v().invokeDotNetStaticMethod(e,t,...n)},e.invokeMethodAsync=function(e,t,...n){return v().invokeDotNetStaticMethodAsync(e,t,...n)},e.createJSObjectReference=f,e.createJSStreamReference=g,e.disposeJSObjectReference=function(e){const t=e&&e[n];"number"==typeof t&&_(t)},function(e){e[e.Default=0]="Default",e[e.JSObjectReference=1]="JSObjectReference",e[e.JSStreamReference=2]="JSStreamReference",e[e.JSVoidResult=3]="JSVoidResult"}(d=e.JSCallResultType||(e.JSCallResultType={}));class y{constructor(e){this._dotNetCallDispatcher=e,this._byteArraysToBeRevived=new Map,this._pendingDotNetToJSStreams=new Map,this._pendingAsyncCalls={},this._nextAsyncCallId=1}getDotNetCallDispatcher(){return this._dotNetCallDispatcher}invokeJSFromDotNet(e,t,n,o){const r=m(this,t),i=I(b(e,o)(...r||[]),n);return null==i?null:T(this,i)}beginInvokeJSFromDotNet(e,t,n,o,r){const i=new Promise((e=>{const o=m(this,n);e(b(t,r)(...o||[]))}));e&&i.then((t=>T(this,[e,!0,I(t,o)]))).then((t=>this._dotNetCallDispatcher.endInvokeJSFromDotNet(e,!0,t)),(t=>this._dotNetCallDispatcher.endInvokeJSFromDotNet(e,!1,JSON.stringify([e,!1,w(t)]))))}endInvokeDotNetFromJS(e,t,n){const o=t?m(this,n):new Error(n);this.completePendingCall(parseInt(e,10),t,o)}invokeDotNetStaticMethod(e,t,...n){return this.invokeDotNetMethod(e,t,null,n)}invokeDotNetStaticMethodAsync(e,t,...n){return this.invokeDotNetMethodAsync(e,t,null,n)}invokeDotNetMethod(e,t,n,o){if(this._dotNetCallDispatcher.invokeDotNetFromJS){const r=T(this,o),i=this._dotNetCallDispatcher.invokeDotNetFromJS(e,t,n,r);return i?m(this,i):null}throw new Error("The current dispatcher does not support synchronous calls from JS to .NET. Use invokeDotNetMethodAsync instead.")}invokeDotNetMethodAsync(e,t,n,o){if(e&&n)throw new Error(`For instance method calls, assemblyName should be null. Received '${e}'.`);const r=this._nextAsyncCallId++,i=new Promise(((e,t)=>{this._pendingAsyncCalls[r]={resolve:e,reject:t}}));try{const i=T(this,o);this._dotNetCallDispatcher.beginInvokeDotNetFromJS(r,e,t,n,i)}catch(e){this.completePendingCall(r,!1,e)}return i}receiveByteArray(e,t){this._byteArraysToBeRevived.set(e,t)}processByteArray(e){const t=this._byteArraysToBeRevived.get(e);return t?(this._byteArraysToBeRevived.delete(e),t):null}supplyDotNetStream(e,t){if(this._pendingDotNetToJSStreams.has(e)){const n=this._pendingDotNetToJSStreams.get(e);this._pendingDotNetToJSStreams.delete(e),n.resolve(t)}else{const n=new E;n.resolve(t),this._pendingDotNetToJSStreams.set(e,n)}}getDotNetStreamPromise(e){let t;if(this._pendingDotNetToJSStreams.has(e))t=this._pendingDotNetToJSStreams.get(e).streamPromise,this._pendingDotNetToJSStreams.delete(e);else{const n=new E;this._pendingDotNetToJSStreams.set(e,n),t=n.streamPromise}return t}completePendingCall(e,t,n){if(!this._pendingAsyncCalls.hasOwnProperty(e))throw new Error(`There is no pending async call with ID ${e}.`);const o=this._pendingAsyncCalls[e];delete this._pendingAsyncCalls[e],t?o.resolve(n):o.reject(n)}}function w(e){return e instanceof Error?`${e.message}\n${e.stack}`:e?e.toString():"null"}function b(e,t){const n=h[t];if(n)return n.findFunction(e);throw new Error(`JS object instance with ID ${t} does not exist (has it been disposed?).`)}function _(e){delete h[e]}e.findJSFunction=b,e.disposeJSObjectReferenceById=_;class S{constructor(e,t){this._id=e,this._callDispatcher=t}invokeMethod(e,...t){return this._callDispatcher.invokeDotNetMethod(null,e,this._id,t)}invokeMethodAsync(e,...t){return this._callDispatcher.invokeDotNetMethodAsync(null,e,this._id,t)}dispose(){this._callDispatcher.invokeDotNetMethodAsync(null,"__Dispose",this._id,null).catch((e=>console.error(e)))}serializeAsArg(){return{[o]:this._id}}}e.DotNetObject=S,p((function(e,t){if(t&&"object"==typeof t){if(t.hasOwnProperty(o))return new S(t[o],c);if(t.hasOwnProperty(n)){const e=t[n],o=h[e];if(o)return o.getWrappedObject();throw new Error(`JS object instance with Id '${e}' does not exist. It may have been disposed.`)}if(t.hasOwnProperty(r)){const e=t[r],n=c.processByteArray(e);if(void 0===n)throw new Error(`Byte array index '${e}' does not exist.`);return n}if(t.hasOwnProperty(i)){const e=t[i],n=c.getDotNetStreamPromise(e);return new C(n)}}return t}));class C{constructor(e){this._streamPromise=e}stream(){return this._streamPromise}async arrayBuffer(){return new Response(await this.stream()).arrayBuffer()}}class E{constructor(){this.streamPromise=new Promise(((e,t)=>{this.resolve=e,this.reject=t}))}}function I(e,t){switch(t){case d.Default:return e;case d.JSObjectReference:return f(e);case d.JSStreamReference:return g(e);case d.JSVoidResult:return null;default:throw new Error(`Invalid JS call result type '${t}'.`)}}let k=0;function T(e,t){k=0,c=e;const n=JSON.stringify(t,R);return c=void 0,n}function R(e,t){if(t instanceof S)return t.serializeAsArg();if(t instanceof Uint8Array){c.getDotNetCallDispatcher().sendByteArray(k,t);const e={[r]:k};return k++,e}return t}}(e||(e={})),function(e){e[e.prependFrame=1]="prependFrame",e[e.removeFrame=2]="removeFrame",e[e.setAttribute=3]="setAttribute",e[e.removeAttribute=4]="removeAttribute",e[e.updateText=5]="updateText",e[e.stepIn=6]="stepIn",e[e.stepOut=7]="stepOut",e[e.updateMarkup=8]="updateMarkup",e[e.permutationListEntry=9]="permutationListEntry",e[e.permutationListEnd=10]="permutationListEnd"}(t||(t={})),function(e){e[e.element=1]="element",e[e.text=2]="text",e[e.attribute=3]="attribute",e[e.component=4]="component",e[e.region=5]="region",e[e.elementReferenceCapture=6]="elementReferenceCapture",e[e.markup=8]="markup",e[e.namedEvent=10]="namedEvent"}(o||(o={}));class r{constructor(e,t){this.componentId=e,this.fieldValue=t}static fromEvent(e,t){const n=t.target;if(n instanceof Element){const t=function(e){return e instanceof HTMLInputElement?e.type&&"checkbox"===e.type.toLowerCase()?{value:e.checked}:{value:e.value}:e instanceof HTMLSelectElement||e instanceof HTMLTextAreaElement?{value:e.value}:null}(n);if(t)return new r(e,t.value)}return null}}const i=new Map,s=new Map,a=[];function c(e){return i.get(e)}function l(e){const t=i.get(e);return(null==t?void 0:t.browserEventName)||e}function h(e,t){e.forEach((e=>i.set(e,t)))}function d(e){const t=[];for(let n=0;ne.selected)).map((e=>e.value))}}{const e=function(e){return!!e&&"INPUT"===e.tagName&&"checkbox"===e.getAttribute("type")}(t);return{value:e?!!t.checked:t.value}}}}),h(["copy","cut","paste"],{createEventArgs:e=>({type:e.type})}),h(["drag","dragend","dragenter","dragleave","dragover","dragstart","drop"],{createEventArgs:e=>{return{...u(t=e),dataTransfer:t.dataTransfer?{dropEffect:t.dataTransfer.dropEffect,effectAllowed:t.dataTransfer.effectAllowed,files:Array.from(t.dataTransfer.files).map((e=>e.name)),items:Array.from(t.dataTransfer.items).map((e=>({kind:e.kind,type:e.type}))),types:t.dataTransfer.types}:null};var t}}),h(["focus","blur","focusin","focusout"],{createEventArgs:e=>({type:e.type})}),h(["keydown","keyup","keypress"],{createEventArgs:e=>{return{key:(t=e).key,code:t.code,location:t.location,repeat:t.repeat,ctrlKey:t.ctrlKey,shiftKey:t.shiftKey,altKey:t.altKey,metaKey:t.metaKey,type:t.type};var t}}),h(["contextmenu","click","mouseover","mouseout","mousemove","mousedown","mouseup","mouseleave","mouseenter","dblclick"],{createEventArgs:e=>u(e)}),h(["error"],{createEventArgs:e=>{return{message:(t=e).message,filename:t.filename,lineno:t.lineno,colno:t.colno,type:t.type};var t}}),h(["loadstart","timeout","abort","load","loadend","progress"],{createEventArgs:e=>{return{lengthComputable:(t=e).lengthComputable,loaded:t.loaded,total:t.total,type:t.type};var t}}),h(["touchcancel","touchend","touchmove","touchenter","touchleave","touchstart"],{createEventArgs:e=>{return{detail:(t=e).detail,touches:d(t.touches),targetTouches:d(t.targetTouches),changedTouches:d(t.changedTouches),ctrlKey:t.ctrlKey,shiftKey:t.shiftKey,altKey:t.altKey,metaKey:t.metaKey,type:t.type};var t}}),h(["gotpointercapture","lostpointercapture","pointercancel","pointerdown","pointerenter","pointerleave","pointermove","pointerout","pointerover","pointerup"],{createEventArgs:e=>{return{...u(t=e),pointerId:t.pointerId,width:t.width,height:t.height,pressure:t.pressure,tiltX:t.tiltX,tiltY:t.tiltY,pointerType:t.pointerType,isPrimary:t.isPrimary};var t}}),h(["wheel","mousewheel"],{createEventArgs:e=>{return{...u(t=e),deltaX:t.deltaX,deltaY:t.deltaY,deltaZ:t.deltaZ,deltaMode:t.deltaMode};var t}}),h(["cancel","close","toggle"],{createEventArgs:()=>({})});const p=["date","datetime-local","month","time","week"],f=new Map;let g,m,v=0;const y={async add(e,t,n){if(!n)throw new Error("initialParameters must be an object, even if empty.");const o="__bl-dynamic-root:"+(++v).toString();f.set(o,e);const r=await S().invokeMethodAsync("AddRootComponent",t,o),i=new _(r,m[t]);return await i.setParameters(n),i}};function w(e){const t=f.get(e);if(t)return f.delete(e),t}class b{invoke(e){return this._callback(e)}setCallback(t){this._selfJSObjectReference||(this._selfJSObjectReference=e.createJSObjectReference(this)),this._callback=t}getJSObjectReference(){return this._selfJSObjectReference}dispose(){this._selfJSObjectReference&&e.disposeJSObjectReference(this._selfJSObjectReference)}}class _{constructor(e,t){this._jsEventCallbackWrappers=new Map,this._componentId=e;for(const e of t)"eventcallback"===e.type&&this._jsEventCallbackWrappers.set(e.name.toLowerCase(),new b)}setParameters(e){const t={},n=Object.entries(e||{}),o=n.length;for(const[e,o]of n){const n=this._jsEventCallbackWrappers.get(e.toLowerCase());n&&o?(n.setCallback(o),t[e]=n.getJSObjectReference()):t[e]=o}return S().invokeMethodAsync("SetRootComponentParameters",this._componentId,o,t)}async dispose(){if(null!==this._componentId){await S().invokeMethodAsync("RemoveRootComponent",this._componentId),this._componentId=null;for(const e of this._jsEventCallbackWrappers.values())e.dispose()}}}function S(){if(!g)throw new Error("Dynamic root components have not been enabled in this application.");return g}const C=new Map,E=[],I=new Map;function k(t,n,o,r){var i,s;if(C.has(t))throw new Error(`Interop methods are already registered for renderer ${t}`);C.set(t,n),o&&r&&Object.keys(o).length>0&&function(t,n,o){if(g)throw new Error("Dynamic root components have already been enabled.");g=t,m=n;for(const[t,r]of Object.entries(o)){const o=e.findJSFunction(t,0);for(const e of r)o(e,n[e])}}(A(t),o,r),null===(s=null===(i=I.get(t))||void 0===i?void 0:i[0])||void 0===s||s.call(i),function(e){for(const t of E)t(e)}(t)}function T(e){return C.has(e)}function R(e,t,n){return D(e,t.eventHandlerId,(()=>A(e).invokeMethodAsync("DispatchEventAsync",t,n)))}function A(e){const t=C.get(e);if(!t)throw new Error(`No interop methods are registered for renderer ${e}`);return t}let D=(e,t,n)=>n();const x=B(["abort","blur","cancel","canplay","canplaythrough","change","close","cuechange","durationchange","emptied","ended","error","focus","load","loadeddata","loadedmetadata","loadend","loadstart","mouseenter","mouseleave","pointerenter","pointerleave","pause","play","playing","progress","ratechange","reset","scroll","seeked","seeking","stalled","submit","suspend","timeupdate","toggle","unload","volumechange","waiting","DOMNodeInsertedIntoDocument","DOMNodeRemovedFromDocument"]),N={submit:!0},P=B(["click","dblclick","mousedown","mousemove","mouseup"]);class M{constructor(e){this.browserRendererId=e,this.afterClickCallbacks=[];const t=++M.nextEventDelegatorId;this.eventsCollectionKey=`_blazorEvents_${t}`,this.eventInfoStore=new U(this.onGlobalEvent.bind(this))}setListener(e,t,n,o){const r=this.getEventHandlerInfosForElement(e,!0),i=r.getHandler(t);if(i)this.eventInfoStore.update(i.eventHandlerId,n);else{const i={element:e,eventName:t,eventHandlerId:n,renderingComponentId:o};this.eventInfoStore.add(i),r.setHandler(t,i)}}getHandler(e){return this.eventInfoStore.get(e)}removeListener(e){const t=this.eventInfoStore.remove(e);if(t){const e=t.element,n=this.getEventHandlerInfosForElement(e,!1);n&&n.removeHandler(t.eventName)}}notifyAfterClick(e){this.afterClickCallbacks.push(e),this.eventInfoStore.addGlobalListener("click")}setStopPropagation(e,t,n){this.getEventHandlerInfosForElement(e,!0).stopPropagation(t,n)}setPreventDefault(e,t,n){this.getEventHandlerInfosForElement(e,!0).preventDefault(t,n)}onGlobalEvent(e){if(!(e.target instanceof Element))return;this.dispatchGlobalEventToAllElements(e.type,e);const t=(n=e.type,s.get(n));var n;t&&t.forEach((t=>this.dispatchGlobalEventToAllElements(t,e))),"click"===e.type&&this.afterClickCallbacks.forEach((t=>t(e)))}dispatchGlobalEventToAllElements(e,t){const n=t.composedPath();let o=n.shift(),i=null,s=!1;const a=Object.prototype.hasOwnProperty.call(x,e);let l=!1;for(;o;){const u=o,p=this.getEventHandlerInfosForElement(u,!1);if(p){const n=p.getHandler(e);if(n&&(h=u,d=t.type,!((h instanceof HTMLButtonElement||h instanceof HTMLInputElement||h instanceof HTMLTextAreaElement||h instanceof HTMLSelectElement)&&Object.prototype.hasOwnProperty.call(P,d)&&h.disabled))){if(!s){const n=c(e);i=(null==n?void 0:n.createEventArgs)?n.createEventArgs(t):{},s=!0}Object.prototype.hasOwnProperty.call(N,t.type)&&t.preventDefault(),R(this.browserRendererId,{eventHandlerId:n.eventHandlerId,eventName:e,eventFieldInfo:r.fromEvent(n.renderingComponentId,t)},i)}p.stopPropagation(e)&&(l=!0),p.preventDefault(e)&&t.preventDefault()}o=a||l?void 0:n.shift()}var h,d}getEventHandlerInfosForElement(e,t){return Object.prototype.hasOwnProperty.call(e,this.eventsCollectionKey)?e[this.eventsCollectionKey]:t?e[this.eventsCollectionKey]=new L:null}}M.nextEventDelegatorId=0;class U{constructor(e){this.globalListener=e,this.infosByEventHandlerId={},this.countByEventName={},a.push(this.handleEventNameAliasAdded.bind(this))}add(e){if(this.infosByEventHandlerId[e.eventHandlerId])throw new Error(`Event ${e.eventHandlerId} is already tracked`);this.infosByEventHandlerId[e.eventHandlerId]=e,this.addGlobalListener(e.eventName)}get(e){return this.infosByEventHandlerId[e]}addGlobalListener(e){if(e=l(e),Object.prototype.hasOwnProperty.call(this.countByEventName,e))this.countByEventName[e]++;else{this.countByEventName[e]=1;const t=Object.prototype.hasOwnProperty.call(x,e);document.addEventListener(e,this.globalListener,t)}}update(e,t){if(Object.prototype.hasOwnProperty.call(this.infosByEventHandlerId,t))throw new Error(`Event ${t} is already tracked`);const n=this.infosByEventHandlerId[e];delete this.infosByEventHandlerId[e],n.eventHandlerId=t,this.infosByEventHandlerId[t]=n}remove(e){const t=this.infosByEventHandlerId[e];if(t){delete this.infosByEventHandlerId[e];const n=l(t.eventName);0==--this.countByEventName[n]&&(delete this.countByEventName[n],document.removeEventListener(n,this.globalListener))}return t}handleEventNameAliasAdded(e,t){if(Object.prototype.hasOwnProperty.call(this.countByEventName,e)){const n=this.countByEventName[e];delete this.countByEventName[e],document.removeEventListener(e,this.globalListener),this.addGlobalListener(t),this.countByEventName[t]+=n-1}}}class L{constructor(){this.handlers={},this.preventDefaultFlags=null,this.stopPropagationFlags=null}getHandler(e){return Object.prototype.hasOwnProperty.call(this.handlers,e)?this.handlers[e]:null}setHandler(e,t){this.handlers[e]=t}removeHandler(e){delete this.handlers[e]}preventDefault(e,t){return void 0!==t&&(this.preventDefaultFlags=this.preventDefaultFlags||{},this.preventDefaultFlags[e]=t),!!this.preventDefaultFlags&&this.preventDefaultFlags[e]}stopPropagation(e,t){return void 0!==t&&(this.stopPropagationFlags=this.stopPropagationFlags||{},this.stopPropagationFlags[e]=t),!!this.stopPropagationFlags&&this.stopPropagationFlags[e]}}function B(e){const t={};return e.forEach((e=>{t[e]=!0})),t}const O=Symbol(),F=Symbol(),$=Symbol();function H(e){const{start:t,end:n}=e,o=t[$];if(o){if(o!==e)throw new Error("The start component comment was already associated with another component descriptor.");return t}const r=t.parentNode;if(!r)throw new Error(`Comment not connected to the DOM ${t.textContent}`);const i=W(r,!0),s=Y(i);t[F]=i,t[$]=e;const a=W(t);if(n){const e=Y(a),o=Array.prototype.indexOf.call(s,a)+1;let r=null;for(;r!==n;){const n=s.splice(o,1)[0];if(!n)throw new Error("Could not find the end component comment in the parent logical node list");n[F]=t,e.push(n),r=n}}return a}function W(e,t){if(O in e)return e;const n=[];if(e.childNodes.length>0){if(!t)throw new Error("New logical elements must start empty, or allowExistingContents must be true");e.childNodes.forEach((t=>{const o=W(t,!0);o[F]=e,n.push(o)}))}return e[O]=n,e}function j(e){const t=Y(e);for(;t.length;)J(e,0)}function z(e,t){const n=document.createComment("!");return q(n,e,t),n}function q(e,t,n){const o=e;let r=e;if(Z(e)){const t=oe(o);if(t!==e){const n=new Range;n.setStartBefore(e),n.setEndAfter(t),r=n.extractContents()}}const i=K(o);if(i){const e=Y(i),t=Array.prototype.indexOf.call(e,o);e.splice(t,1),delete o[F]}const s=Y(t);if(n0;)J(n,0)}const o=n;o.parentNode.removeChild(o)}function K(e){return e[F]||null}function V(e,t){return Y(e)[t]}function X(e){return e[$]||null}function G(e){const t=te(e);return"http://www.w3.org/2000/svg"===t.namespaceURI&&"foreignObject"!==t.tagName}function Y(e){return e[O]}function Q(e){const t=Y(K(e));return t[Array.prototype.indexOf.call(t,e)+1]||null}function Z(e){return O in e}function ee(e,t){const n=Y(e);t.forEach((e=>{e.moveRangeStart=n[e.fromSiblingIndex],e.moveRangeEnd=oe(e.moveRangeStart)})),t.forEach((t=>{const o=document.createComment("marker");t.moveToBeforeMarker=o;const r=n[t.toSiblingIndex+1];r?r.parentNode.insertBefore(o,r):ne(o,e)})),t.forEach((e=>{const t=e.moveToBeforeMarker,n=t.parentNode,o=e.moveRangeStart,r=e.moveRangeEnd;let i=o;for(;i;){const e=i.nextSibling;if(n.insertBefore(i,t),i===r)break;i=e}n.removeChild(t)})),t.forEach((e=>{n[e.toSiblingIndex]=e.moveRangeStart}))}function te(e){if(e instanceof Element||e instanceof DocumentFragment)return e;if(e instanceof Comment)return e.parentNode;throw new Error("Not a valid logical element")}function ne(e,t){if(t instanceof Element||t instanceof DocumentFragment)t.appendChild(e);else{if(!(t instanceof Comment))throw new Error(`Cannot append node because the parent is not a valid logical element. Parent: ${t}`);{const n=Q(t);n?n.parentNode.insertBefore(e,n):ne(e,K(t))}}}function oe(e){if(e instanceof Element||e instanceof DocumentFragment)return e;const t=Q(e);if(t)return t.previousSibling;{const t=K(e);return t instanceof Element||t instanceof DocumentFragment?t.lastChild:oe(t)}}function re(e){return`_bl_${e}`}const ie="__internalId";e.attachReviver(((e,t)=>t&&"object"==typeof t&&Object.prototype.hasOwnProperty.call(t,ie)&&"string"==typeof t[ie]?function(e){const t=`[${re(e)}]`;return document.querySelector(t)}(t[ie]):t));const se="_blazorDeferredValue";function ae(e){e instanceof HTMLOptionElement?de(e):se in e&&he(e,e[se])}function ce(e){return"select-multiple"===e.type}function le(e,t){e.value=t||""}function he(e,t){e instanceof HTMLSelectElement?ce(e)?function(e,t){t||(t=[]);for(let n=0;n{Oe()&&Ne(e,(e=>{Xe(e,!0,!1)}))}))}getRootComponentCount(){return this.rootComponentIds.size}attachRootComponentToLogicalElement(e,t,n){if(we(t))throw new Error(`Root component '${e}' could not be attached because its target element is already associated with a root component`);n&&(t=z(t,Y(t).length)),ye(t,!0),this.attachComponentToElement(e,t),this.rootComponentIds.add(e),fe.add(t)}updateComponent(e,t,n,o){var r;const i=this.childComponentLocations[t];if(!i)throw new Error(`No element is currently associated with component ${t}`);fe.delete(i)&&(j(i),i instanceof Comment&&(i.textContent="!"));const s=null===(r=te(i))||void 0===r?void 0:r.getRootNode(),a=s&&s.activeElement;this.applyEdits(e,t,i,0,n,o),a instanceof HTMLElement&&s&&s.activeElement!==a&&a.focus()}disposeComponent(e){if(this.rootComponentIds.delete(e)){const t=this.childComponentLocations[e];ye(t,!1),!0===t[me]?fe.add(t):j(t)}delete this.childComponentLocations[e]}disposeEventHandler(e){this.eventDelegator.removeListener(e)}attachComponentToElement(e,t){this.childComponentLocations[e]=t}applyEdits(e,n,o,r,i,s){let a,c=0,l=r;const h=e.arrayBuilderSegmentReader,d=e.editReader,u=e.frameReader,p=h.values(i),f=h.offset(i),g=f+h.count(i);for(let i=f;i{const t=document.createElement("script");t.textContent=e.textContent,e.getAttributeNames().forEach((n=>{t.setAttribute(n,e.getAttribute(n))})),e.parentNode.replaceChild(t,e)})),ue.content));var s;let a=0;for(;i.firstChild;)q(i.firstChild,r,a++)}applyAttribute(e,t,n,o){const r=e.frameReader,i=r.attributeName(o),s=r.attributeEventHandlerId(o);if(s){const e=Se(i);return void this.eventDelegator.setListener(n,e,s,t)}const a=r.attributeValue(o);this.setOrRemoveAttributeOrProperty(n,i,a)}insertFrameRange(e,t,n,o,r,i,s){const a=o;for(let a=i;a{et(t,e)})},enableNavigationInterception:function(e){if(void 0!==Ee&&Ee!==e)throw new Error("Only one interactive runtime may enable navigation interception at a time.");Ee=e},setHasLocationChangingListeners:function(e,t){const n=je.get(e);if(!n)throw new Error(`Renderer with ID '${e}' is not listening for navigation events`);n.hasLocationChangingEventListeners=t},endLocationChanging:function(e,t){qe&&e===We&&(qe(t),qe=null)},navigateTo:function(e,t){Ve(e,t,!0)},refresh:function(e){!e&&Me()?Ue(location.href,!0):location.reload()},getBaseURI:()=>document.baseURI,getLocationHref:()=>location.href,scrollToElement:Ke};function Ke(e){const t=document.getElementById(e);return!!t&&(t.scrollIntoView(),!0)}function Ve(e,t,n=!1){const o=Le(e),r=ot();if(t.forceLoad||!Pe(o)||"serverside-fullpageload"===r)!function(e,t){if(location.href===e){const t=e+"?";history.replaceState(null,"",t),location.replace(e)}else t?location.replace(e):location.href=e}(e,t.replaceHistoryEntry);else if("clientside-router"===r)Xe(o,!1,t.replaceHistoryEntry,t.historyEntryState,n);else{if("serverside-enhanced"!==r)throw new Error(`Unsupported page load mechanism: ${r}`);Ue(o,t.replaceHistoryEntry)}}async function Xe(e,t,n,o=void 0,r=!1){if(Qe(),function(e){const t=e.indexOf("#");return t>-1&&location.href.replace(location.hash,"")===e.substring(0,t)}(e))return void function(e,t,n){Ge(e,t,n);const o=e.indexOf("#");o!==e.length-1&&Ke(e.substring(o+1))}(e,n,o);const i=nt();(r||!(null==i?void 0:i.hasLocationChangingEventListeners)||await Ze(e,o,t,i))&&(Re=!0,Ge(e,n,o),await et(t))}function Ge(e,t,n=void 0){t?history.replaceState({userState:n,_index:He},"",e):(He++,history.pushState({userState:n,_index:He},"",e))}function Ye(e){return new Promise((t=>{const n=ze;ze=()=>{ze=n,t()},history.go(e)}))}function Qe(){qe&&(qe(!1),qe=null)}function Ze(e,t,n,o){return new Promise((r=>{Qe(),We++,qe=r,o.locationChanging(We,e,t,n)}))}async function et(e,t){const n=null!=t?t:location.href;await Promise.all(Array.from(je,(async([t,o])=>{var r;T(t)&&await o.locationChanged(n,null===(r=history.state)||void 0===r?void 0:r.userState,e)})))}async function tt(e){var t,n;ze&&"serverside-enhanced"!==ot()&&await ze(e),He=null!==(n=null===(t=history.state)||void 0===t?void 0:t._index)&&void 0!==n?n:0}function nt(){const e=Fe();if(void 0!==e)return je.get(e)}function ot(){return Oe()?"clientside-router":Me()?"serverside-enhanced":window.Blazor._internal.isBlazorWeb?"serverside-fullpageload":"clientside-router"}const rt={focus:function(e,t){if(e instanceof HTMLElement)e.focus({preventScroll:t});else{if(!(e instanceof SVGElement))throw new Error("Unable to focus an invalid element.");if(!e.hasAttribute("tabindex"))throw new Error("Unable to focus an SVG element that does not have a tabindex.");e.focus({preventScroll:t})}},focusBySelector:function(e,t){const n=document.querySelector(e);n&&(n.hasAttribute("tabindex")||(n.tabIndex=-1),n.focus({preventScroll:!0}))}},it={init:function(e,t,n,o=50){const r=at(t);(r||document.documentElement).style.overflowAnchor="none";const i=document.createRange();u(n.parentElement)&&(t.style.display="table-row",n.style.display="table-row");const s=new IntersectionObserver((function(o){o.forEach((o=>{var r;if(!o.isIntersecting)return;i.setStartAfter(t),i.setEndBefore(n);const s=i.getBoundingClientRect().height,a=null===(r=o.rootBounds)||void 0===r?void 0:r.height;o.target===t?e.invokeMethodAsync("OnSpacerBeforeVisible",o.intersectionRect.top-o.boundingClientRect.top,s,a):o.target===n&&n.offsetHeight>0&&e.invokeMethodAsync("OnSpacerAfterVisible",o.boundingClientRect.bottom-o.intersectionRect.bottom,s,a)}))}),{root:r,rootMargin:`${o}px`});s.observe(t),s.observe(n);const a=d(t),c=d(n),{observersByDotNetObjectId:l,id:h}=ct(e);function d(e){const t={attributes:!0},n=new MutationObserver(((n,o)=>{u(e.parentElement)&&(o.disconnect(),e.style.display="table-row",o.observe(e,t)),s.unobserve(e),s.observe(e)}));return n.observe(e,t),n}function u(e){return null!==e&&(e instanceof HTMLTableElement&&""===e.style.display||"table"===e.style.display||e instanceof HTMLTableSectionElement&&""===e.style.display||"table-row-group"===e.style.display)}l[h]={intersectionObserver:s,mutationObserverBefore:a,mutationObserverAfter:c}},dispose:function(e){const{observersByDotNetObjectId:t,id:n}=ct(e),o=t[n];o&&(o.intersectionObserver.disconnect(),o.mutationObserverBefore.disconnect(),o.mutationObserverAfter.disconnect(),e.dispose(),delete t[n])}},st=Symbol();function at(e){return e&&e!==document.body&&e!==document.documentElement?"visible"!==getComputedStyle(e).overflowY?e:at(e.parentElement):null}function ct(e){var t;const n=e._callDispatcher,o=e._id;return null!==(t=n[st])&&void 0!==t||(n[st]={}),{observersByDotNetObjectId:n[st],id:o}}const lt={getAndRemoveExistingTitle:function(){var e;const t=document.head?document.head.getElementsByTagName("title"):[];if(0===t.length)return null;let n=null;for(let o=t.length-1;o>=0;o--){const r=t[o],i=r.previousSibling;i instanceof Comment&&null!==K(i)||(null===n&&(n=r.textContent),null===(e=r.parentNode)||void 0===e||e.removeChild(r))}return n}},ht={init:function(e,t){t._blazorInputFileNextFileId=0,t.addEventListener("click",(function(){t.value=""})),t.addEventListener("change",(function(){t._blazorFilesById={};const n=Array.prototype.map.call(t.files,(function(e){const n={id:++t._blazorInputFileNextFileId,lastModified:new Date(e.lastModified).toISOString(),name:e.name,size:e.size,contentType:e.type,readPromise:void 0,arrayBuffer:void 0,blob:e};return t._blazorFilesById[n.id]=n,n}));e.invokeMethodAsync("NotifyChange",n)}))},toImageFile:async function(e,t,n,o,r){const i=dt(e,t),s=await new Promise((function(e){const t=new Image;t.onload=function(){URL.revokeObjectURL(t.src),e(t)},t.onerror=function(){t.onerror=null,URL.revokeObjectURL(t.src)},t.src=URL.createObjectURL(i.blob)})),a=await new Promise((function(e){var t;const i=Math.min(1,o/s.width),a=Math.min(1,r/s.height),c=Math.min(i,a),l=document.createElement("canvas");l.width=Math.round(s.width*c),l.height=Math.round(s.height*c),null===(t=l.getContext("2d"))||void 0===t||t.drawImage(s,0,0,l.width,l.height),l.toBlob(e,n)})),c={id:++e._blazorInputFileNextFileId,lastModified:i.lastModified,name:i.name,size:(null==a?void 0:a.size)||0,contentType:n,blob:a||i.blob};return e._blazorFilesById[c.id]=c,c},readFileData:async function(e,t){return dt(e,t).blob}};function dt(e,t){const n=e._blazorFilesById[t];if(!n)throw new Error(`There is no file with ID ${t}. The file list may have changed. See https://aka.ms/aspnet/blazor-input-file-multiple-selections.`);return n}const ut=new Set,pt={enableNavigationPrompt:function(e){0===ut.size&&window.addEventListener("beforeunload",ft),ut.add(e)},disableNavigationPrompt:function(e){ut.delete(e),0===ut.size&&window.removeEventListener("beforeunload",ft)}};function ft(e){e.preventDefault(),e.returnValue=!0}async function gt(e,t,n){return e instanceof Blob?await async function(e,t,n){const o=e.slice(t,t+n),r=await o.arrayBuffer();return new Uint8Array(r)}(e,t,n):function(e,t,n){return new Uint8Array(e.buffer,e.byteOffset+t,n)}(e,t,n)}const mt=new Map,vt={navigateTo:function(e,t,n=!1){Ve(e,t instanceof Object?t:{forceLoad:t,replaceHistoryEntry:n})},registerCustomEventType:function(e,t){if(!t)throw new Error("The options parameter is required.");if(i.has(e))throw new Error(`The event '${e}' is already registered.`);if(t.browserEventName){const n=s.get(t.browserEventName);n?n.push(e):s.set(t.browserEventName,[e]),a.forEach((n=>n(e,t.browserEventName)))}i.set(e,t)},rootComponents:y,runtime:{},_internal:{navigationManager:Je,domWrapper:rt,Virtualize:it,PageTitle:lt,InputFile:ht,NavigationLock:pt,getJSDataStreamChunk:gt,attachWebRendererInterop:k}};var yt;window.Blazor=vt,function(e){e[e.Trace=0]="Trace",e[e.Debug=1]="Debug",e[e.Information=2]="Information",e[e.Warning=3]="Warning",e[e.Error=4]="Error",e[e.Critical=5]="Critical",e[e.None=6]="None"}(yt||(yt={}));class wt{log(e,t){}}wt.instance=new wt;class bt{constructor(e){this.minLevel=e}log(e,t){if(e>=this.minLevel){const n=`[${(new Date).toISOString()}] ${yt[e]}: ${t}`;switch(e){case yt.Critical:case yt.Error:console.error(n);break;case yt.Warning:console.warn(n);break;case yt.Information:console.info(n);break;default:console.log(n)}}}}function _t(e,t){switch(t){case"webassembly":return Tt(e,"webassembly");case"server":return function(e){return Tt(e,"server").sort(((e,t)=>e.sequence-t.sequence))}(e);case"auto":return Tt(e,"auto")}}const St=/^\s*Blazor-Server-Component-State:(?[a-zA-Z0-9+/=]+)$/,Ct=/^\s*Blazor-WebAssembly-Component-State:(?[a-zA-Z0-9+/=]+)$/,Et=/^\s*Blazor-Web-Initializers:(?[a-zA-Z0-9+/=]+)$/;function It(e){return kt(e,St)}function kt(e,t,n="state"){var o;if(e.nodeType===Node.COMMENT_NODE){const r=e.textContent||"",i=t.exec(r),s=i&&i.groups&&i.groups[n];return s&&(null===(o=e.parentNode)||void 0===o||o.removeChild(e)),s}if(!e.hasChildNodes())return;const r=e.childNodes;for(let e=0;e.*)$/);function At(e,t){const n=e.currentElement;var o,r,i;if(n&&n.nodeType===Node.COMMENT_NODE&&n.textContent){const s=Rt.exec(n.textContent),a=s&&s.groups&&s.groups.descriptor;if(!a)return;!function(e){if(e.parentNode instanceof Document)throw new Error("Root components cannot be marked as interactive. The element must be rendered statically so that scripts are not evaluated multiple times.")}(n);try{const s=function(e){const t=JSON.parse(e),{type:n}=t;if("server"!==n&&"webassembly"!==n&&"auto"!==n)throw new Error(`Invalid component type '${n}'.`);return t}(a),c=function(e,t,n){const{prerenderId:o}=e;if(o){for(;n.next()&&n.currentElement;){const e=n.currentElement;if(e.nodeType!==Node.COMMENT_NODE)continue;if(!e.textContent)continue;const t=Rt.exec(e.textContent),r=t&&t[1];if(r)return Pt(r,o),e}throw new Error(`Could not find an end component comment for '${t}'.`)}}(s,n,e);if(t!==s.type)return;switch(s.type){case"webassembly":return r=n,i=c,Nt(o=s),{...o,uniqueId:Dt++,start:r,end:i};case"server":return function(e,t,n){return xt(e),{...e,uniqueId:Dt++,start:t,end:n}}(s,n,c);case"auto":return function(e,t,n){return xt(e),Nt(e),{...e,uniqueId:Dt++,start:t,end:n}}(s,n,c)}}catch(e){throw new Error(`Found malformed component comment at ${n.textContent}`)}}}let Dt=0;function xt(e){const{descriptor:t,sequence:n}=e;if(!t)throw new Error("descriptor must be defined when using a descriptor.");if(void 0===n)throw new Error("sequence must be defined when using a descriptor.");if(!Number.isInteger(n))throw new Error(`Error parsing the sequence '${n}' for component '${JSON.stringify(e)}'`)}function Nt(e){const{assembly:t,typeName:n}=e;if(!t)throw new Error("assembly must be defined when using a descriptor.");if(!n)throw new Error("typeName must be defined when using a descriptor.");e.parameterDefinitions=e.parameterDefinitions&&atob(e.parameterDefinitions),e.parameterValues=e.parameterValues&&atob(e.parameterValues)}function Pt(e,t){const n=JSON.parse(e);if(1!==Object.keys(n).length)throw new Error(`Invalid end of component comment: '${e}'`);const o=n.prerenderId;if(!o)throw new Error(`End of component comment must have a value for the prerendered property: '${e}'`);if(o!==t)throw new Error(`End of component comment prerendered property must match the start comment prerender id: '${t}', '${o}'`)}class Mt{constructor(e){this.childNodes=e,this.currentIndex=-1,this.length=e.length}next(){return this.currentIndex++,this.currentIndex{n+=`0x${e<16?"0":""}${e.toString(16)} `})),n.substr(0,n.length-1)}(e)}'`)):"string"==typeof e&&(n=`String data of length ${e.length}`,t&&(n+=`. Content: '${e}'`)),n}function zt(e){return e&&"undefined"!=typeof ArrayBuffer&&(e instanceof ArrayBuffer||e.constructor&&"ArrayBuffer"===e.constructor.name)}async function qt(e,t,n,o,r,i){const s={},[a,c]=Vt();s[a]=c,e.log(Ot.Trace,`(${t} transport) sending data. ${jt(r,i.logMessageContent)}.`);const l=zt(r)?"arraybuffer":"text",h=await n.post(o,{content:r,headers:{...s,...i.headers},responseType:l,timeout:i.timeout,withCredentials:i.withCredentials});e.log(Ot.Trace,`(${t} transport) request complete. Response status: ${h.statusCode}.`)}class Jt{constructor(e,t){this._subject=e,this._observer=t}dispose(){const e=this._subject.observers.indexOf(this._observer);e>-1&&this._subject.observers.splice(e,1),0===this._subject.observers.length&&this._subject.cancelCallback&&this._subject.cancelCallback().catch((e=>{}))}}class Kt{constructor(e){this._minLevel=e,this.out=console}log(e,t){if(e>=this._minLevel){const n=`[${(new Date).toISOString()}] ${Ot[e]}: ${t}`;switch(e){case Ot.Critical:case Ot.Error:this.out.error(n);break;case Ot.Warning:this.out.warn(n);break;case Ot.Information:this.out.info(n);break;default:this.out.log(n)}}}}function Vt(){let e="X-SignalR-User-Agent";return Wt.isNode&&(e="User-Agent"),[e,Xt($t,Gt(),Wt.isNode?"NodeJS":"Browser",Yt())]}function Xt(e,t,n,o){let r="Microsoft SignalR/";const i=e.split(".");return r+=`${i[0]}.${i[1]}`,r+=` (${e}; `,r+=t&&""!==t?`${t}; `:"Unknown OS; ",r+=`${n}`,r+=o?`; ${o}`:"; Unknown Runtime Version",r+=")",r}function Gt(){if(!Wt.isNode)return"";switch(process.platform){case"win32":return"Windows NT";case"darwin":return"macOS";case"linux":return"Linux";default:return process.platform}}function Yt(){if(Wt.isNode)return process.versions.node}function Qt(e){return e.stack?e.stack:e.message?e.message:`${e}`}class Zt{writeHandshakeRequest(e){return Bt.write(JSON.stringify(e))}parseHandshakeResponse(e){let t,n;if(zt(e)){const o=new Uint8Array(e),r=o.indexOf(Bt.RecordSeparatorCode);if(-1===r)throw new Error("Message is incomplete.");const i=r+1;t=String.fromCharCode.apply(null,Array.prototype.slice.call(o.slice(0,i))),n=o.byteLength>i?o.slice(i).buffer:null}else{const o=e,r=o.indexOf(Bt.RecordSeparator);if(-1===r)throw new Error("Message is incomplete.");const i=r+1;t=o.substring(0,i),n=o.length>i?o.substring(i):null}const o=Bt.parse(t),r=JSON.parse(o[0]);if(r.type)throw new Error("Expected a handshake response from the server.");return[n,r]}}class en extends Error{constructor(e,t){const n=new.target.prototype;super(`${e}: Status code '${t}'`),this.statusCode=t,this.__proto__=n}}class tn extends Error{constructor(e="A timeout occurred."){const t=new.target.prototype;super(e),this.__proto__=t}}class nn extends Error{constructor(e="An abort occurred."){const t=new.target.prototype;super(e),this.__proto__=t}}class on extends Error{constructor(e,t){const n=new.target.prototype;super(e),this.transport=t,this.errorType="UnsupportedTransportError",this.__proto__=n}}class rn extends Error{constructor(e,t){const n=new.target.prototype;super(e),this.transport=t,this.errorType="DisabledTransportError",this.__proto__=n}}class sn extends Error{constructor(e,t){const n=new.target.prototype;super(e),this.transport=t,this.errorType="FailedToStartTransportError",this.__proto__=n}}class an extends Error{constructor(e){const t=new.target.prototype;super(e),this.errorType="FailedToNegotiateWithServerError",this.__proto__=t}}class cn extends Error{constructor(e,t){const n=new.target.prototype;super(e),this.innerErrors=t,this.__proto__=n}}var ln,hn;!function(e){e[e.Invocation=1]="Invocation",e[e.StreamItem=2]="StreamItem",e[e.Completion=3]="Completion",e[e.StreamInvocation=4]="StreamInvocation",e[e.CancelInvocation=5]="CancelInvocation",e[e.Ping=6]="Ping",e[e.Close=7]="Close",e[e.Ack=8]="Ack",e[e.Sequence=9]="Sequence"}(ln||(ln={}));class dn{constructor(){this.observers=[]}next(e){for(const t of this.observers)t.next(e)}error(e){for(const t of this.observers)t.error&&t.error(e)}complete(){for(const e of this.observers)e.complete&&e.complete()}subscribe(e){return this.observers.push(e),new Jt(this,e)}}class un{constructor(e,t,n){this._bufferSize=1e5,this._messages=[],this._totalMessageCount=0,this._waitForSequenceMessage=!1,this._nextReceivingSequenceId=1,this._latestReceivedSequenceId=0,this._bufferedByteCount=0,this._reconnectInProgress=!1,this._protocol=e,this._connection=t,this._bufferSize=n}async _send(e){const t=this._protocol.writeMessage(e);let n=Promise.resolve();if(this._isInvocationMessage(e)){this._totalMessageCount++;let e=()=>{},o=()=>{};zt(t)?this._bufferedByteCount+=t.byteLength:this._bufferedByteCount+=t.length,this._bufferedByteCount>=this._bufferSize&&(n=new Promise(((t,n)=>{e=t,o=n}))),this._messages.push(new pn(t,this._totalMessageCount,e,o))}try{this._reconnectInProgress||await this._connection.send(t)}catch{this._disconnected()}await n}_ack(e){let t=-1;for(let n=0;nthis._nextReceivingSequenceId?this._connection.stop(new Error("Sequence ID greater than amount of messages we've received.")):this._nextReceivingSequenceId=e.sequenceId}_disconnected(){this._reconnectInProgress=!0,this._waitForSequenceMessage=!0}async _resend(){const e=0!==this._messages.length?this._messages[0]._id:this._totalMessageCount+1;await this._connection.send(this._protocol.writeMessage({type:ln.Sequence,sequenceId:e}));const t=this._messages;for(const e of t)await this._connection.send(e._message);this._reconnectInProgress=!1}_dispose(e){null!=e||(e=new Error("Unable to reconnect to server."));for(const t of this._messages)t._rejector(e)}_isInvocationMessage(e){switch(e.type){case ln.Invocation:case ln.StreamItem:case ln.Completion:case ln.StreamInvocation:case ln.CancelInvocation:return!0;case ln.Close:case ln.Sequence:case ln.Ping:case ln.Ack:return!1}}_ackTimer(){void 0===this._ackTimerHandle&&(this._ackTimerHandle=setTimeout((async()=>{try{this._reconnectInProgress||await this._connection.send(this._protocol.writeMessage({type:ln.Ack,sequenceId:this._latestReceivedSequenceId}))}catch{}clearTimeout(this._ackTimerHandle),this._ackTimerHandle=void 0}),1e3))}}class pn{constructor(e,t,n,o){this._message=e,this._id=t,this._resolver=n,this._rejector=o}}!function(e){e.Disconnected="Disconnected",e.Connecting="Connecting",e.Connected="Connected",e.Disconnecting="Disconnecting",e.Reconnecting="Reconnecting"}(hn||(hn={}));class fn{static create(e,t,n,o,r,i,s){return new fn(e,t,n,o,r,i,s)}constructor(e,t,n,o,r,i,s){this._nextKeepAlive=0,this._freezeEventListener=()=>{this._logger.log(Ot.Warning,"The page is being frozen, this will likely lead to the connection being closed and messages being lost. For more information see the docs at https://learn.microsoft.com/aspnet/core/signalr/javascript-client#bsleep")},Ht.isRequired(e,"connection"),Ht.isRequired(t,"logger"),Ht.isRequired(n,"protocol"),this.serverTimeoutInMilliseconds=null!=r?r:3e4,this.keepAliveIntervalInMilliseconds=null!=i?i:15e3,this._statefulReconnectBufferSize=null!=s?s:1e5,this._logger=t,this._protocol=n,this.connection=e,this._reconnectPolicy=o,this._handshakeProtocol=new Zt,this.connection.onreceive=e=>this._processIncomingData(e),this.connection.onclose=e=>this._connectionClosed(e),this._callbacks={},this._methods={},this._closedCallbacks=[],this._reconnectingCallbacks=[],this._reconnectedCallbacks=[],this._invocationId=0,this._receivedHandshakeResponse=!1,this._connectionState=hn.Disconnected,this._connectionStarted=!1,this._cachedPingMessage=this._protocol.writeMessage({type:ln.Ping})}get state(){return this._connectionState}get connectionId(){return this.connection&&this.connection.connectionId||null}get baseUrl(){return this.connection.baseUrl||""}set baseUrl(e){if(this._connectionState!==hn.Disconnected&&this._connectionState!==hn.Reconnecting)throw new Error("The HubConnection must be in the Disconnected or Reconnecting state to change the url.");if(!e)throw new Error("The HubConnection url must be a valid url.");this.connection.baseUrl=e}start(){return this._startPromise=this._startWithStateTransitions(),this._startPromise}async _startWithStateTransitions(){if(this._connectionState!==hn.Disconnected)return Promise.reject(new Error("Cannot start a HubConnection that is not in the 'Disconnected' state."));this._connectionState=hn.Connecting,this._logger.log(Ot.Debug,"Starting HubConnection.");try{await this._startInternal(),Wt.isBrowser&&window.document.addEventListener("freeze",this._freezeEventListener),this._connectionState=hn.Connected,this._connectionStarted=!0,this._logger.log(Ot.Debug,"HubConnection connected successfully.")}catch(e){return this._connectionState=hn.Disconnected,this._logger.log(Ot.Debug,`HubConnection failed to start successfully because of error '${e}'.`),Promise.reject(e)}}async _startInternal(){this._stopDuringStartError=void 0,this._receivedHandshakeResponse=!1;const e=new Promise(((e,t)=>{this._handshakeResolver=e,this._handshakeRejecter=t}));await this.connection.start(this._protocol.transferFormat);try{let t=this._protocol.version;this.connection.features.reconnect||(t=1);const n={protocol:this._protocol.name,version:t};if(this._logger.log(Ot.Debug,"Sending handshake request."),await this._sendMessage(this._handshakeProtocol.writeHandshakeRequest(n)),this._logger.log(Ot.Information,`Using HubProtocol '${this._protocol.name}'.`),this._cleanupTimeout(),this._resetTimeoutPeriod(),this._resetKeepAliveInterval(),await e,this._stopDuringStartError)throw this._stopDuringStartError;!!this.connection.features.reconnect&&(this._messageBuffer=new un(this._protocol,this.connection,this._statefulReconnectBufferSize),this.connection.features.disconnected=this._messageBuffer._disconnected.bind(this._messageBuffer),this.connection.features.resend=()=>{if(this._messageBuffer)return this._messageBuffer._resend()}),this.connection.features.inherentKeepAlive||await this._sendMessage(this._cachedPingMessage)}catch(e){throw this._logger.log(Ot.Debug,`Hub handshake failed with error '${e}' during start(). Stopping HubConnection.`),this._cleanupTimeout(),this._cleanupPingTimer(),await this.connection.stop(e),e}}async stop(){const e=this._startPromise;this.connection.features.reconnect=!1,this._stopPromise=this._stopInternal(),await this._stopPromise;try{await e}catch(e){}}_stopInternal(e){if(this._connectionState===hn.Disconnected)return this._logger.log(Ot.Debug,`Call to HubConnection.stop(${e}) ignored because it is already in the disconnected state.`),Promise.resolve();if(this._connectionState===hn.Disconnecting)return this._logger.log(Ot.Debug,`Call to HttpConnection.stop(${e}) ignored because the connection is already in the disconnecting state.`),this._stopPromise;const t=this._connectionState;return this._connectionState=hn.Disconnecting,this._logger.log(Ot.Debug,"Stopping HubConnection."),this._reconnectDelayHandle?(this._logger.log(Ot.Debug,"Connection stopped during reconnect delay. Done reconnecting."),clearTimeout(this._reconnectDelayHandle),this._reconnectDelayHandle=void 0,this._completeClose(),Promise.resolve()):(t===hn.Connected&&this._sendCloseMessage(),this._cleanupTimeout(),this._cleanupPingTimer(),this._stopDuringStartError=e||new nn("The connection was stopped before the hub handshake could complete."),this.connection.stop(e))}async _sendCloseMessage(){try{await this._sendWithProtocol(this._createCloseMessage())}catch{}}stream(e,...t){const[n,o]=this._replaceStreamingParams(t),r=this._createStreamInvocation(e,t,o);let i;const s=new dn;return s.cancelCallback=()=>{const e=this._createCancelInvocation(r.invocationId);return delete this._callbacks[r.invocationId],i.then((()=>this._sendWithProtocol(e)))},this._callbacks[r.invocationId]=(e,t)=>{t?s.error(t):e&&(e.type===ln.Completion?e.error?s.error(new Error(e.error)):s.complete():s.next(e.item))},i=this._sendWithProtocol(r).catch((e=>{s.error(e),delete this._callbacks[r.invocationId]})),this._launchStreams(n,i),s}_sendMessage(e){return this._resetKeepAliveInterval(),this.connection.send(e)}_sendWithProtocol(e){return this._messageBuffer?this._messageBuffer._send(e):this._sendMessage(this._protocol.writeMessage(e))}send(e,...t){const[n,o]=this._replaceStreamingParams(t),r=this._sendWithProtocol(this._createInvocation(e,t,!0,o));return this._launchStreams(n,r),r}invoke(e,...t){const[n,o]=this._replaceStreamingParams(t),r=this._createInvocation(e,t,!1,o);return new Promise(((e,t)=>{this._callbacks[r.invocationId]=(n,o)=>{o?t(o):n&&(n.type===ln.Completion?n.error?t(new Error(n.error)):e(n.result):t(new Error(`Unexpected message type: ${n.type}`)))};const o=this._sendWithProtocol(r).catch((e=>{t(e),delete this._callbacks[r.invocationId]}));this._launchStreams(n,o)}))}on(e,t){e&&t&&(e=e.toLowerCase(),this._methods[e]||(this._methods[e]=[]),-1===this._methods[e].indexOf(t)&&this._methods[e].push(t))}off(e,t){if(!e)return;e=e.toLowerCase();const n=this._methods[e];if(n)if(t){const o=n.indexOf(t);-1!==o&&(n.splice(o,1),0===n.length&&delete this._methods[e])}else delete this._methods[e]}onclose(e){e&&this._closedCallbacks.push(e)}onreconnecting(e){e&&this._reconnectingCallbacks.push(e)}onreconnected(e){e&&this._reconnectedCallbacks.push(e)}_processIncomingData(e){if(this._cleanupTimeout(),this._receivedHandshakeResponse||(e=this._processHandshakeResponse(e),this._receivedHandshakeResponse=!0),e){const t=this._protocol.parseMessages(e,this._logger);for(const e of t)if(!this._messageBuffer||this._messageBuffer._shouldProcessMessage(e))switch(e.type){case ln.Invocation:this._invokeClientMethod(e);break;case ln.StreamItem:case ln.Completion:{const t=this._callbacks[e.invocationId];if(t){e.type===ln.Completion&&delete this._callbacks[e.invocationId];try{t(e)}catch(e){this._logger.log(Ot.Error,`Stream callback threw error: ${Qt(e)}`)}}break}case ln.Ping:break;case ln.Close:{this._logger.log(Ot.Information,"Close message received from server.");const t=e.error?new Error("Server returned an error on close: "+e.error):void 0;!0===e.allowReconnect?this.connection.stop(t):this._stopPromise=this._stopInternal(t);break}case ln.Ack:this._messageBuffer&&this._messageBuffer._ack(e);break;case ln.Sequence:this._messageBuffer&&this._messageBuffer._resetSequence(e);break;default:this._logger.log(Ot.Warning,`Invalid message type: ${e.type}.`)}}this._resetTimeoutPeriod()}_processHandshakeResponse(e){let t,n;try{[n,t]=this._handshakeProtocol.parseHandshakeResponse(e)}catch(e){const t="Error parsing handshake response: "+e;this._logger.log(Ot.Error,t);const n=new Error(t);throw this._handshakeRejecter(n),n}if(t.error){const e="Server returned handshake error: "+t.error;this._logger.log(Ot.Error,e);const n=new Error(e);throw this._handshakeRejecter(n),n}return this._logger.log(Ot.Debug,"Server handshake complete."),this._handshakeResolver(),n}_resetKeepAliveInterval(){this.connection.features.inherentKeepAlive||(this._nextKeepAlive=(new Date).getTime()+this.keepAliveIntervalInMilliseconds,this._cleanupPingTimer())}_resetTimeoutPeriod(){if(!(this.connection.features&&this.connection.features.inherentKeepAlive||(this._timeoutHandle=setTimeout((()=>this.serverTimeout()),this.serverTimeoutInMilliseconds),void 0!==this._pingServerHandle))){let e=this._nextKeepAlive-(new Date).getTime();e<0&&(e=0),this._pingServerHandle=setTimeout((async()=>{if(this._connectionState===hn.Connected)try{await this._sendMessage(this._cachedPingMessage)}catch{this._cleanupPingTimer()}}),e)}}serverTimeout(){this.connection.stop(new Error("Server timeout elapsed without receiving a message from the server."))}async _invokeClientMethod(e){const t=e.target.toLowerCase(),n=this._methods[t];if(!n)return this._logger.log(Ot.Warning,`No client method with the name '${t}' found.`),void(e.invocationId&&(this._logger.log(Ot.Warning,`No result given for '${t}' method and invocation ID '${e.invocationId}'.`),await this._sendWithProtocol(this._createCompletionMessage(e.invocationId,"Client didn't provide a result.",null))));const o=n.slice(),r=!!e.invocationId;let i,s,a;for(const n of o)try{const o=i;i=await n.apply(this,e.arguments),r&&i&&o&&(this._logger.log(Ot.Error,`Multiple results provided for '${t}'. Sending error to server.`),a=this._createCompletionMessage(e.invocationId,"Client provided multiple results.",null)),s=void 0}catch(e){s=e,this._logger.log(Ot.Error,`A callback for the method '${t}' threw error '${e}'.`)}a?await this._sendWithProtocol(a):r?(s?a=this._createCompletionMessage(e.invocationId,`${s}`,null):void 0!==i?a=this._createCompletionMessage(e.invocationId,null,i):(this._logger.log(Ot.Warning,`No result given for '${t}' method and invocation ID '${e.invocationId}'.`),a=this._createCompletionMessage(e.invocationId,"Client didn't provide a result.",null)),await this._sendWithProtocol(a)):i&&this._logger.log(Ot.Error,`Result given for '${t}' method but server is not expecting a result.`)}_connectionClosed(e){this._logger.log(Ot.Debug,`HubConnection.connectionClosed(${e}) called while in state ${this._connectionState}.`),this._stopDuringStartError=this._stopDuringStartError||e||new nn("The underlying connection was closed before the hub handshake could complete."),this._handshakeResolver&&this._handshakeResolver(),this._cancelCallbacksWithError(e||new Error("Invocation canceled due to the underlying connection being closed.")),this._cleanupTimeout(),this._cleanupPingTimer(),this._connectionState===hn.Disconnecting?this._completeClose(e):this._connectionState===hn.Connected&&this._reconnectPolicy?this._reconnect(e):this._connectionState===hn.Connected&&this._completeClose(e)}_completeClose(e){if(this._connectionStarted){this._connectionState=hn.Disconnected,this._connectionStarted=!1,this._messageBuffer&&(this._messageBuffer._dispose(null!=e?e:new Error("Connection closed.")),this._messageBuffer=void 0),Wt.isBrowser&&window.document.removeEventListener("freeze",this._freezeEventListener);try{this._closedCallbacks.forEach((t=>t.apply(this,[e])))}catch(t){this._logger.log(Ot.Error,`An onclose callback called with error '${e}' threw error '${t}'.`)}}}async _reconnect(e){const t=Date.now();let n=0,o=void 0!==e?e:new Error("Attempting to reconnect due to a unknown error."),r=this._getNextRetryDelay(n++,0,o);if(null===r)return this._logger.log(Ot.Debug,"Connection not reconnecting because the IRetryPolicy returned null on the first reconnect attempt."),void this._completeClose(e);if(this._connectionState=hn.Reconnecting,e?this._logger.log(Ot.Information,`Connection reconnecting because of error '${e}'.`):this._logger.log(Ot.Information,"Connection reconnecting."),0!==this._reconnectingCallbacks.length){try{this._reconnectingCallbacks.forEach((t=>t.apply(this,[e])))}catch(t){this._logger.log(Ot.Error,`An onreconnecting callback called with error '${e}' threw error '${t}'.`)}if(this._connectionState!==hn.Reconnecting)return void this._logger.log(Ot.Debug,"Connection left the reconnecting state in onreconnecting callback. Done reconnecting.")}for(;null!==r;){if(this._logger.log(Ot.Information,`Reconnect attempt number ${n} will start in ${r} ms.`),await new Promise((e=>{this._reconnectDelayHandle=setTimeout(e,r)})),this._reconnectDelayHandle=void 0,this._connectionState!==hn.Reconnecting)return void this._logger.log(Ot.Debug,"Connection left the reconnecting state during reconnect delay. Done reconnecting.");try{if(await this._startInternal(),this._connectionState=hn.Connected,this._logger.log(Ot.Information,"HubConnection reconnected successfully."),0!==this._reconnectedCallbacks.length)try{this._reconnectedCallbacks.forEach((e=>e.apply(this,[this.connection.connectionId])))}catch(e){this._logger.log(Ot.Error,`An onreconnected callback called with connectionId '${this.connection.connectionId}; threw error '${e}'.`)}return}catch(e){if(this._logger.log(Ot.Information,`Reconnect attempt failed because of error '${e}'.`),this._connectionState!==hn.Reconnecting)return this._logger.log(Ot.Debug,`Connection moved to the '${this._connectionState}' from the reconnecting state during reconnect attempt. Done reconnecting.`),void(this._connectionState===hn.Disconnecting&&this._completeClose());o=e instanceof Error?e:new Error(e.toString()),r=this._getNextRetryDelay(n++,Date.now()-t,o)}}this._logger.log(Ot.Information,`Reconnect retries have been exhausted after ${Date.now()-t} ms and ${n} failed attempts. Connection disconnecting.`),this._completeClose()}_getNextRetryDelay(e,t,n){try{return this._reconnectPolicy.nextRetryDelayInMilliseconds({elapsedMilliseconds:t,previousRetryCount:e,retryReason:n})}catch(n){return this._logger.log(Ot.Error,`IRetryPolicy.nextRetryDelayInMilliseconds(${e}, ${t}) threw error '${n}'.`),null}}_cancelCallbacksWithError(e){const t=this._callbacks;this._callbacks={},Object.keys(t).forEach((n=>{const o=t[n];try{o(null,e)}catch(t){this._logger.log(Ot.Error,`Stream 'error' callback called with '${e}' threw error: ${Qt(t)}`)}}))}_cleanupPingTimer(){this._pingServerHandle&&(clearTimeout(this._pingServerHandle),this._pingServerHandle=void 0)}_cleanupTimeout(){this._timeoutHandle&&clearTimeout(this._timeoutHandle)}_createInvocation(e,t,n,o){if(n)return 0!==o.length?{arguments:t,streamIds:o,target:e,type:ln.Invocation}:{arguments:t,target:e,type:ln.Invocation};{const n=this._invocationId;return this._invocationId++,0!==o.length?{arguments:t,invocationId:n.toString(),streamIds:o,target:e,type:ln.Invocation}:{arguments:t,invocationId:n.toString(),target:e,type:ln.Invocation}}}_launchStreams(e,t){if(0!==e.length){t||(t=Promise.resolve());for(const n in e)e[n].subscribe({complete:()=>{t=t.then((()=>this._sendWithProtocol(this._createCompletionMessage(n))))},error:e=>{let o;o=e instanceof Error?e.message:e&&e.toString?e.toString():"Unknown error",t=t.then((()=>this._sendWithProtocol(this._createCompletionMessage(n,o))))},next:e=>{t=t.then((()=>this._sendWithProtocol(this._createStreamItemMessage(n,e))))}})}}_replaceStreamingParams(e){const t=[],n=[];for(let o=0;o0)&&(t=!1,this._accessToken=await this._accessTokenFactory()),this._setAuthorizationHeader(e);const n=await this._innerClient.send(e);return t&&401===n.statusCode&&this._accessTokenFactory?(this._accessToken=await this._accessTokenFactory(),this._setAuthorizationHeader(e),await this._innerClient.send(e)):n}_setAuthorizationHeader(e){e.headers||(e.headers={}),this._accessToken?e.headers[vn.Authorization]=`Bearer ${this._accessToken}`:this._accessTokenFactory&&e.headers[vn.Authorization]&&delete e.headers[vn.Authorization]}getCookieString(e){return this._innerClient.getCookieString(e)}}class _n extends wn{constructor(e){super(),this._logger=e;const t={_fetchType:void 0,_jar:void 0};var o;o=t,"undefined"==typeof fetch&&(o._jar=new(n(628).CookieJar),"undefined"==typeof fetch?o._fetchType=n(200):o._fetchType=fetch,o._fetchType=n(203)(o._fetchType,o._jar),1)?(this._fetchType=t._fetchType,this._jar=t._jar):this._fetchType=fetch.bind(function(){if("undefined"!=typeof globalThis)return globalThis;if("undefined"!=typeof self)return self;if("undefined"!=typeof window)return window;if(void 0!==n.g)return n.g;throw new Error("could not find global")}()),this._abortControllerType=AbortController;const r={_abortControllerType:this._abortControllerType};(function(e){return"undefined"==typeof AbortController&&(e._abortControllerType=n(778),!0)})(r)&&(this._abortControllerType=r._abortControllerType)}async send(e){if(e.abortSignal&&e.abortSignal.aborted)throw new nn;if(!e.method)throw new Error("No method defined.");if(!e.url)throw new Error("No url defined.");const t=new this._abortControllerType;let n;e.abortSignal&&(e.abortSignal.onabort=()=>{t.abort(),n=new nn});let o,r=null;if(e.timeout){const o=e.timeout;r=setTimeout((()=>{t.abort(),this._logger.log(Ot.Warning,"Timeout from HTTP request."),n=new tn}),o)}""===e.content&&(e.content=void 0),e.content&&(e.headers=e.headers||{},zt(e.content)?e.headers["Content-Type"]="application/octet-stream":e.headers["Content-Type"]="text/plain;charset=UTF-8");try{o=await this._fetchType(e.url,{body:e.content,cache:"no-cache",credentials:!0===e.withCredentials?"include":"same-origin",headers:{"X-Requested-With":"XMLHttpRequest",...e.headers},method:e.method,mode:"cors",redirect:"follow",signal:t.signal})}catch(e){if(n)throw n;throw this._logger.log(Ot.Warning,`Error from HTTP request. ${e}.`),e}finally{r&&clearTimeout(r),e.abortSignal&&(e.abortSignal.onabort=null)}if(!o.ok){const e=await Sn(o,"text");throw new en(e||o.statusText,o.status)}const i=Sn(o,e.responseType),s=await i;return new yn(o.status,o.statusText,s)}getCookieString(e){return""}}function Sn(e,t){let n;switch(t){case"arraybuffer":n=e.arrayBuffer();break;case"text":default:n=e.text();break;case"blob":case"document":case"json":throw new Error(`${t} is not supported.`)}return n}class Cn extends wn{constructor(e){super(),this._logger=e}send(e){return e.abortSignal&&e.abortSignal.aborted?Promise.reject(new nn):e.method?e.url?new Promise(((t,n)=>{const o=new XMLHttpRequest;o.open(e.method,e.url,!0),o.withCredentials=void 0===e.withCredentials||e.withCredentials,o.setRequestHeader("X-Requested-With","XMLHttpRequest"),""===e.content&&(e.content=void 0),e.content&&(zt(e.content)?o.setRequestHeader("Content-Type","application/octet-stream"):o.setRequestHeader("Content-Type","text/plain;charset=UTF-8"));const r=e.headers;r&&Object.keys(r).forEach((e=>{o.setRequestHeader(e,r[e])})),e.responseType&&(o.responseType=e.responseType),e.abortSignal&&(e.abortSignal.onabort=()=>{o.abort(),n(new nn)}),e.timeout&&(o.timeout=e.timeout),o.onload=()=>{e.abortSignal&&(e.abortSignal.onabort=null),o.status>=200&&o.status<300?t(new yn(o.status,o.statusText,o.response||o.responseText)):n(new en(o.response||o.responseText||o.statusText,o.status))},o.onerror=()=>{this._logger.log(Ot.Warning,`Error from HTTP request. ${o.status}: ${o.statusText}.`),n(new en(o.statusText,o.status))},o.ontimeout=()=>{this._logger.log(Ot.Warning,"Timeout from HTTP request."),n(new tn)},o.send(e.content)})):Promise.reject(new Error("No url defined.")):Promise.reject(new Error("No method defined."))}}class En extends wn{constructor(e){if(super(),"undefined"!=typeof fetch)this._httpClient=new _n(e);else{if("undefined"==typeof XMLHttpRequest)throw new Error("No usable HttpClient found.");this._httpClient=new Cn(e)}}send(e){return e.abortSignal&&e.abortSignal.aborted?Promise.reject(new nn):e.method?e.url?this._httpClient.send(e):Promise.reject(new Error("No url defined.")):Promise.reject(new Error("No method defined."))}getCookieString(e){return this._httpClient.getCookieString(e)}}var In,kn;!function(e){e[e.None=0]="None",e[e.WebSockets=1]="WebSockets",e[e.ServerSentEvents=2]="ServerSentEvents",e[e.LongPolling=4]="LongPolling"}(In||(In={})),function(e){e[e.Text=1]="Text",e[e.Binary=2]="Binary"}(kn||(kn={}));class Tn{constructor(){this._isAborted=!1,this.onabort=null}abort(){this._isAborted||(this._isAborted=!0,this.onabort&&this.onabort())}get signal(){return this}get aborted(){return this._isAborted}}class Rn{get pollAborted(){return this._pollAbort.aborted}constructor(e,t,n){this._httpClient=e,this._logger=t,this._pollAbort=new Tn,this._options=n,this._running=!1,this.onreceive=null,this.onclose=null}async connect(e,t){if(Ht.isRequired(e,"url"),Ht.isRequired(t,"transferFormat"),Ht.isIn(t,kn,"transferFormat"),this._url=e,this._logger.log(Ot.Trace,"(LongPolling transport) Connecting."),t===kn.Binary&&"undefined"!=typeof XMLHttpRequest&&"string"!=typeof(new XMLHttpRequest).responseType)throw new Error("Binary protocols over XmlHttpRequest not implementing advanced features are not supported.");const[n,o]=Vt(),r={[n]:o,...this._options.headers},i={abortSignal:this._pollAbort.signal,headers:r,timeout:1e5,withCredentials:this._options.withCredentials};t===kn.Binary&&(i.responseType="arraybuffer");const s=`${e}&_=${Date.now()}`;this._logger.log(Ot.Trace,`(LongPolling transport) polling: ${s}.`);const a=await this._httpClient.get(s,i);200!==a.statusCode?(this._logger.log(Ot.Error,`(LongPolling transport) Unexpected response code: ${a.statusCode}.`),this._closeError=new en(a.statusText||"",a.statusCode),this._running=!1):this._running=!0,this._receiving=this._poll(this._url,i)}async _poll(e,t){try{for(;this._running;)try{const n=`${e}&_=${Date.now()}`;this._logger.log(Ot.Trace,`(LongPolling transport) polling: ${n}.`);const o=await this._httpClient.get(n,t);204===o.statusCode?(this._logger.log(Ot.Information,"(LongPolling transport) Poll terminated by server."),this._running=!1):200!==o.statusCode?(this._logger.log(Ot.Error,`(LongPolling transport) Unexpected response code: ${o.statusCode}.`),this._closeError=new en(o.statusText||"",o.statusCode),this._running=!1):o.content?(this._logger.log(Ot.Trace,`(LongPolling transport) data received. ${jt(o.content,this._options.logMessageContent)}.`),this.onreceive&&this.onreceive(o.content)):this._logger.log(Ot.Trace,"(LongPolling transport) Poll timed out, reissuing.")}catch(e){this._running?e instanceof tn?this._logger.log(Ot.Trace,"(LongPolling transport) Poll timed out, reissuing."):(this._closeError=e,this._running=!1):this._logger.log(Ot.Trace,`(LongPolling transport) Poll errored after shutdown: ${e.message}`)}}finally{this._logger.log(Ot.Trace,"(LongPolling transport) Polling complete."),this.pollAborted||this._raiseOnClose()}}async send(e){return this._running?qt(this._logger,"LongPolling",this._httpClient,this._url,e,this._options):Promise.reject(new Error("Cannot send until the transport is connected"))}async stop(){this._logger.log(Ot.Trace,"(LongPolling transport) Stopping polling."),this._running=!1,this._pollAbort.abort();try{await this._receiving,this._logger.log(Ot.Trace,`(LongPolling transport) sending DELETE request to ${this._url}.`);const e={},[t,n]=Vt();e[t]=n;const o={headers:{...e,...this._options.headers},timeout:this._options.timeout,withCredentials:this._options.withCredentials};let r;try{await this._httpClient.delete(this._url,o)}catch(e){r=e}r?r instanceof en&&(404===r.statusCode?this._logger.log(Ot.Trace,"(LongPolling transport) A 404 response was returned from sending a DELETE request."):this._logger.log(Ot.Trace,`(LongPolling transport) Error sending a DELETE request: ${r}`)):this._logger.log(Ot.Trace,"(LongPolling transport) DELETE request accepted.")}finally{this._logger.log(Ot.Trace,"(LongPolling transport) Stop finished."),this._raiseOnClose()}}_raiseOnClose(){if(this.onclose){let e="(LongPolling transport) Firing onclose event.";this._closeError&&(e+=" Error: "+this._closeError),this._logger.log(Ot.Trace,e),this.onclose(this._closeError)}}}class An{constructor(e,t,n,o){this._httpClient=e,this._accessToken=t,this._logger=n,this._options=o,this.onreceive=null,this.onclose=null}async connect(e,t){return Ht.isRequired(e,"url"),Ht.isRequired(t,"transferFormat"),Ht.isIn(t,kn,"transferFormat"),this._logger.log(Ot.Trace,"(SSE transport) Connecting."),this._url=e,this._accessToken&&(e+=(e.indexOf("?")<0?"?":"&")+`access_token=${encodeURIComponent(this._accessToken)}`),new Promise(((n,o)=>{let r,i=!1;if(t===kn.Text){if(Wt.isBrowser||Wt.isWebWorker)r=new this._options.EventSource(e,{withCredentials:this._options.withCredentials});else{const t=this._httpClient.getCookieString(e),n={};n.Cookie=t;const[o,i]=Vt();n[o]=i,r=new this._options.EventSource(e,{withCredentials:this._options.withCredentials,headers:{...n,...this._options.headers}})}try{r.onmessage=e=>{if(this.onreceive)try{this._logger.log(Ot.Trace,`(SSE transport) data received. ${jt(e.data,this._options.logMessageContent)}.`),this.onreceive(e.data)}catch(e){return void this._close(e)}},r.onerror=e=>{i?this._close():o(new Error("EventSource failed to connect. The connection could not be found on the server, either the connection ID is not present on the server, or a proxy is refusing/buffering the connection. If you have multiple servers check that sticky sessions are enabled."))},r.onopen=()=>{this._logger.log(Ot.Information,`SSE connected to ${this._url}`),this._eventSource=r,i=!0,n()}}catch(e){return void o(e)}}else o(new Error("The Server-Sent Events transport only supports the 'Text' transfer format"))}))}async send(e){return this._eventSource?qt(this._logger,"SSE",this._httpClient,this._url,e,this._options):Promise.reject(new Error("Cannot send until the transport is connected"))}stop(){return this._close(),Promise.resolve()}_close(e){this._eventSource&&(this._eventSource.close(),this._eventSource=void 0,this.onclose&&this.onclose(e))}}class Dn{constructor(e,t,n,o,r,i){this._logger=n,this._accessTokenFactory=t,this._logMessageContent=o,this._webSocketConstructor=r,this._httpClient=e,this.onreceive=null,this.onclose=null,this._headers=i}async connect(e,t){let n;return Ht.isRequired(e,"url"),Ht.isRequired(t,"transferFormat"),Ht.isIn(t,kn,"transferFormat"),this._logger.log(Ot.Trace,"(WebSockets transport) Connecting."),this._accessTokenFactory&&(n=await this._accessTokenFactory()),new Promise(((o,r)=>{let i;e=e.replace(/^http/,"ws");const s=this._httpClient.getCookieString(e);let a=!1;if(Wt.isReactNative){const t={},[o,r]=Vt();t[o]=r,n&&(t[vn.Authorization]=`Bearer ${n}`),s&&(t[vn.Cookie]=s),i=new this._webSocketConstructor(e,void 0,{headers:{...t,...this._headers}})}else n&&(e+=(e.indexOf("?")<0?"?":"&")+`access_token=${encodeURIComponent(n)}`);i||(i=new this._webSocketConstructor(e)),t===kn.Binary&&(i.binaryType="arraybuffer"),i.onopen=t=>{this._logger.log(Ot.Information,`WebSocket connected to ${e}.`),this._webSocket=i,a=!0,o()},i.onerror=e=>{let t=null;t="undefined"!=typeof ErrorEvent&&e instanceof ErrorEvent?e.error:"There was an error with the transport",this._logger.log(Ot.Information,`(WebSockets transport) ${t}.`)},i.onmessage=e=>{if(this._logger.log(Ot.Trace,`(WebSockets transport) data received. ${jt(e.data,this._logMessageContent)}.`),this.onreceive)try{this.onreceive(e.data)}catch(e){return void this._close(e)}},i.onclose=e=>{if(a)this._close(e);else{let t=null;t="undefined"!=typeof ErrorEvent&&e instanceof ErrorEvent?e.error:"WebSocket failed to connect. The connection could not be found on the server, either the endpoint may not be a SignalR endpoint, the connection ID is not present on the server, or there is a proxy blocking WebSockets. If you have multiple servers check that sticky sessions are enabled.",r(new Error(t))}}}))}send(e){return this._webSocket&&this._webSocket.readyState===this._webSocketConstructor.OPEN?(this._logger.log(Ot.Trace,`(WebSockets transport) sending data. ${jt(e,this._logMessageContent)}.`),this._webSocket.send(e),Promise.resolve()):Promise.reject("WebSocket is not in the OPEN state")}stop(){return this._webSocket&&this._close(void 0),Promise.resolve()}_close(e){this._webSocket&&(this._webSocket.onclose=()=>{},this._webSocket.onmessage=()=>{},this._webSocket.onerror=()=>{},this._webSocket.close(),this._webSocket=void 0),this._logger.log(Ot.Trace,"(WebSockets transport) socket closed."),this.onclose&&(!this._isCloseEvent(e)||!1!==e.wasClean&&1e3===e.code?e instanceof Error?this.onclose(e):this.onclose():this.onclose(new Error(`WebSocket closed with status code: ${e.code} (${e.reason||"no reason given"}).`)))}_isCloseEvent(e){return e&&"boolean"==typeof e.wasClean&&"number"==typeof e.code}}class xn{constructor(e,t={}){if(this._stopPromiseResolver=()=>{},this.features={},this._negotiateVersion=1,Ht.isRequired(e,"url"),this._logger=function(e){return void 0===e?new Kt(Ot.Information):null===e?Ft.instance:void 0!==e.log?e:new Kt(e)}(t.logger),this.baseUrl=this._resolveUrl(e),(t=t||{}).logMessageContent=void 0!==t.logMessageContent&&t.logMessageContent,"boolean"!=typeof t.withCredentials&&void 0!==t.withCredentials)throw new Error("withCredentials option was not a 'boolean' or 'undefined' value");t.withCredentials=void 0===t.withCredentials||t.withCredentials,t.timeout=void 0===t.timeout?1e5:t.timeout,"undefined"==typeof WebSocket||t.WebSocket||(t.WebSocket=WebSocket),"undefined"==typeof EventSource||t.EventSource||(t.EventSource=EventSource),this._httpClient=new bn(t.httpClient||new En(this._logger),t.accessTokenFactory),this._connectionState="Disconnected",this._connectionStarted=!1,this._options=t,this.onreceive=null,this.onclose=null}async start(e){if(e=e||kn.Binary,Ht.isIn(e,kn,"transferFormat"),this._logger.log(Ot.Debug,`Starting connection with transfer format '${kn[e]}'.`),"Disconnected"!==this._connectionState)return Promise.reject(new Error("Cannot start an HttpConnection that is not in the 'Disconnected' state."));if(this._connectionState="Connecting",this._startInternalPromise=this._startInternal(e),await this._startInternalPromise,"Disconnecting"===this._connectionState){const e="Failed to start the HttpConnection before stop() was called.";return this._logger.log(Ot.Error,e),await this._stopPromise,Promise.reject(new nn(e))}if("Connected"!==this._connectionState){const e="HttpConnection.startInternal completed gracefully but didn't enter the connection into the connected state!";return this._logger.log(Ot.Error,e),Promise.reject(new nn(e))}this._connectionStarted=!0}send(e){return"Connected"!==this._connectionState?Promise.reject(new Error("Cannot send data if the connection is not in the 'Connected' State.")):(this._sendQueue||(this._sendQueue=new Nn(this.transport)),this._sendQueue.send(e))}async stop(e){return"Disconnected"===this._connectionState?(this._logger.log(Ot.Debug,`Call to HttpConnection.stop(${e}) ignored because the connection is already in the disconnected state.`),Promise.resolve()):"Disconnecting"===this._connectionState?(this._logger.log(Ot.Debug,`Call to HttpConnection.stop(${e}) ignored because the connection is already in the disconnecting state.`),this._stopPromise):(this._connectionState="Disconnecting",this._stopPromise=new Promise((e=>{this._stopPromiseResolver=e})),await this._stopInternal(e),void await this._stopPromise)}async _stopInternal(e){this._stopError=e;try{await this._startInternalPromise}catch(e){}if(this.transport){try{await this.transport.stop()}catch(e){this._logger.log(Ot.Error,`HttpConnection.transport.stop() threw error '${e}'.`),this._stopConnection()}this.transport=void 0}else this._logger.log(Ot.Debug,"HttpConnection.transport is undefined in HttpConnection.stop() because start() failed.")}async _startInternal(e){let t=this.baseUrl;this._accessTokenFactory=this._options.accessTokenFactory,this._httpClient._accessTokenFactory=this._accessTokenFactory;try{if(this._options.skipNegotiation){if(this._options.transport!==In.WebSockets)throw new Error("Negotiation can only be skipped when using the WebSocket transport directly.");this.transport=this._constructTransport(In.WebSockets),await this._startTransport(t,e)}else{let n=null,o=0;do{if(n=await this._getNegotiationResponse(t),"Disconnecting"===this._connectionState||"Disconnected"===this._connectionState)throw new nn("The connection was stopped during negotiation.");if(n.error)throw new Error(n.error);if(n.ProtocolVersion)throw new Error("Detected a connection attempt to an ASP.NET SignalR Server. This client only supports connecting to an ASP.NET Core SignalR Server. See https://aka.ms/signalr-core-differences for details.");if(n.url&&(t=n.url),n.accessToken){const e=n.accessToken;this._accessTokenFactory=()=>e,this._httpClient._accessToken=e,this._httpClient._accessTokenFactory=void 0}o++}while(n.url&&o<100);if(100===o&&n.url)throw new Error("Negotiate redirection limit exceeded.");await this._createTransport(t,this._options.transport,n,e)}this.transport instanceof Rn&&(this.features.inherentKeepAlive=!0),"Connecting"===this._connectionState&&(this._logger.log(Ot.Debug,"The HttpConnection connected successfully."),this._connectionState="Connected")}catch(e){return this._logger.log(Ot.Error,"Failed to start the connection: "+e),this._connectionState="Disconnected",this.transport=void 0,this._stopPromiseResolver(),Promise.reject(e)}}async _getNegotiationResponse(e){const t={},[n,o]=Vt();t[n]=o;const r=this._resolveNegotiateUrl(e);this._logger.log(Ot.Debug,`Sending negotiation request: ${r}.`);try{const e=await this._httpClient.post(r,{content:"",headers:{...t,...this._options.headers},timeout:this._options.timeout,withCredentials:this._options.withCredentials});if(200!==e.statusCode)return Promise.reject(new Error(`Unexpected status code returned from negotiate '${e.statusCode}'`));const n=JSON.parse(e.content);return(!n.negotiateVersion||n.negotiateVersion<1)&&(n.connectionToken=n.connectionId),n.useStatefulReconnect&&!0!==this._options._useStatefulReconnect?Promise.reject(new an("Client didn't negotiate Stateful Reconnect but the server did.")):n}catch(e){let t="Failed to complete negotiation with the server: "+e;return e instanceof en&&404===e.statusCode&&(t+=" Either this is not a SignalR endpoint or there is a proxy blocking the connection."),this._logger.log(Ot.Error,t),Promise.reject(new an(t))}}_createConnectUrl(e,t){return t?e+(-1===e.indexOf("?")?"?":"&")+`id=${t}`:e}async _createTransport(e,t,n,o){let r=this._createConnectUrl(e,n.connectionToken);if(this._isITransport(t))return this._logger.log(Ot.Debug,"Connection was provided an instance of ITransport, using that directly."),this.transport=t,await this._startTransport(r,o),void(this.connectionId=n.connectionId);const i=[],s=n.availableTransports||[];let a=n;for(const n of s){const s=this._resolveTransportOrError(n,t,o,!0===(null==a?void 0:a.useStatefulReconnect));if(s instanceof Error)i.push(`${n.transport} failed:`),i.push(s);else if(this._isITransport(s)){if(this.transport=s,!a){try{a=await this._getNegotiationResponse(e)}catch(e){return Promise.reject(e)}r=this._createConnectUrl(e,a.connectionToken)}try{return await this._startTransport(r,o),void(this.connectionId=a.connectionId)}catch(e){if(this._logger.log(Ot.Error,`Failed to start the transport '${n.transport}': ${e}`),a=void 0,i.push(new sn(`${n.transport} failed: ${e}`,In[n.transport])),"Connecting"!==this._connectionState){const e="Failed to select transport before stop() was called.";return this._logger.log(Ot.Debug,e),Promise.reject(new nn(e))}}}}return i.length>0?Promise.reject(new cn(`Unable to connect to the server with any of the available transports. ${i.join(" ")}`,i)):Promise.reject(new Error("None of the transports supported by the client are supported by the server."))}_constructTransport(e){switch(e){case In.WebSockets:if(!this._options.WebSocket)throw new Error("'WebSocket' is not supported in your environment.");return new Dn(this._httpClient,this._accessTokenFactory,this._logger,this._options.logMessageContent,this._options.WebSocket,this._options.headers||{});case In.ServerSentEvents:if(!this._options.EventSource)throw new Error("'EventSource' is not supported in your environment.");return new An(this._httpClient,this._httpClient._accessToken,this._logger,this._options);case In.LongPolling:return new Rn(this._httpClient,this._logger,this._options);default:throw new Error(`Unknown transport: ${e}.`)}}_startTransport(e,t){return this.transport.onreceive=this.onreceive,this.features.reconnect?this.transport.onclose=async n=>{let o=!1;if(this.features.reconnect){try{this.features.disconnected(),await this.transport.connect(e,t),await this.features.resend()}catch{o=!0}o&&this._stopConnection(n)}else this._stopConnection(n)}:this.transport.onclose=e=>this._stopConnection(e),this.transport.connect(e,t)}_resolveTransportOrError(e,t,n,o){const r=In[e.transport];if(null==r)return this._logger.log(Ot.Debug,`Skipping transport '${e.transport}' because it is not supported by this client.`),new Error(`Skipping transport '${e.transport}' because it is not supported by this client.`);if(!function(e,t){return!e||0!=(t&e)}(t,r))return this._logger.log(Ot.Debug,`Skipping transport '${In[r]}' because it was disabled by the client.`),new rn(`'${In[r]}' is disabled by the client.`,r);if(!(e.transferFormats.map((e=>kn[e])).indexOf(n)>=0))return this._logger.log(Ot.Debug,`Skipping transport '${In[r]}' because it does not support the requested transfer format '${kn[n]}'.`),new Error(`'${In[r]}' does not support ${kn[n]}.`);if(r===In.WebSockets&&!this._options.WebSocket||r===In.ServerSentEvents&&!this._options.EventSource)return this._logger.log(Ot.Debug,`Skipping transport '${In[r]}' because it is not supported in your environment.'`),new on(`'${In[r]}' is not supported in your environment.`,r);this._logger.log(Ot.Debug,`Selecting transport '${In[r]}'.`);try{return this.features.reconnect=r===In.WebSockets?o:void 0,this._constructTransport(r)}catch(e){return e}}_isITransport(e){return e&&"object"==typeof e&&"connect"in e}_stopConnection(e){if(this._logger.log(Ot.Debug,`HttpConnection.stopConnection(${e}) called while in state ${this._connectionState}.`),this.transport=void 0,e=this._stopError||e,this._stopError=void 0,"Disconnected"!==this._connectionState){if("Connecting"===this._connectionState)throw this._logger.log(Ot.Warning,`Call to HttpConnection.stopConnection(${e}) was ignored because the connection is still in the connecting state.`),new Error(`HttpConnection.stopConnection(${e}) was called while the connection is still in the connecting state.`);if("Disconnecting"===this._connectionState&&this._stopPromiseResolver(),e?this._logger.log(Ot.Error,`Connection disconnected with error '${e}'.`):this._logger.log(Ot.Information,"Connection disconnected."),this._sendQueue&&(this._sendQueue.stop().catch((e=>{this._logger.log(Ot.Error,`TransportSendQueue.stop() threw error '${e}'.`)})),this._sendQueue=void 0),this.connectionId=void 0,this._connectionState="Disconnected",this._connectionStarted){this._connectionStarted=!1;try{this.onclose&&this.onclose(e)}catch(t){this._logger.log(Ot.Error,`HttpConnection.onclose(${e}) threw error '${t}'.`)}}}else this._logger.log(Ot.Debug,`Call to HttpConnection.stopConnection(${e}) was ignored because the connection is already in the disconnected state.`)}_resolveUrl(e){if(0===e.lastIndexOf("https://",0)||0===e.lastIndexOf("http://",0))return e;if(!Wt.isBrowser)throw new Error(`Cannot resolve '${e}'.`);const t=window.document.createElement("a");return t.href=e,this._logger.log(Ot.Information,`Normalizing '${e}' to '${t.href}'.`),t.href}_resolveNegotiateUrl(e){const t=new URL(e);t.pathname.endsWith("/")?t.pathname+="negotiate":t.pathname+="/negotiate";const n=new URLSearchParams(t.searchParams);return n.has("negotiateVersion")||n.append("negotiateVersion",this._negotiateVersion.toString()),n.has("useStatefulReconnect")?"true"===n.get("useStatefulReconnect")&&(this._options._useStatefulReconnect=!0):!0===this._options._useStatefulReconnect&&n.append("useStatefulReconnect","true"),t.search=n.toString(),t.toString()}}class Nn{constructor(e){this._transport=e,this._buffer=[],this._executing=!0,this._sendBufferedData=new Pn,this._transportResult=new Pn,this._sendLoopPromise=this._sendLoop()}send(e){return this._bufferData(e),this._transportResult||(this._transportResult=new Pn),this._transportResult.promise}stop(){return this._executing=!1,this._sendBufferedData.resolve(),this._sendLoopPromise}_bufferData(e){if(this._buffer.length&&typeof this._buffer[0]!=typeof e)throw new Error(`Expected data to be of type ${typeof this._buffer} but was of type ${typeof e}`);this._buffer.push(e),this._sendBufferedData.resolve()}async _sendLoop(){for(;;){if(await this._sendBufferedData.promise,!this._executing){this._transportResult&&this._transportResult.reject("Connection stopped.");break}this._sendBufferedData=new Pn;const e=this._transportResult;this._transportResult=void 0;const t="string"==typeof this._buffer[0]?this._buffer.join(""):Nn._concatBuffers(this._buffer);this._buffer.length=0;try{await this._transport.send(t),e.resolve()}catch(t){e.reject(t)}}}static _concatBuffers(e){const t=e.map((e=>e.byteLength)).reduce(((e,t)=>e+t)),n=new Uint8Array(t);let o=0;for(const t of e)n.set(new Uint8Array(t),o),o+=t.byteLength;return n.buffer}}class Pn{constructor(){this.promise=new Promise(((e,t)=>[this._resolver,this._rejecter]=[e,t]))}resolve(){this._resolver()}reject(e){this._rejecter(e)}}class Mn{constructor(){this.name="json",this.version=2,this.transferFormat=kn.Text}parseMessages(e,t){if("string"!=typeof e)throw new Error("Invalid input for JSON hub protocol. Expected a string.");if(!e)return[];null===t&&(t=Ft.instance);const n=Bt.parse(e),o=[];for(const e of n){const n=JSON.parse(e);if("number"!=typeof n.type)throw new Error("Invalid payload.");switch(n.type){case ln.Invocation:this._isInvocationMessage(n);break;case ln.StreamItem:this._isStreamItemMessage(n);break;case ln.Completion:this._isCompletionMessage(n);break;case ln.Ping:case ln.Close:break;case ln.Ack:this._isAckMessage(n);break;case ln.Sequence:this._isSequenceMessage(n);break;default:t.log(Ot.Information,"Unknown message type '"+n.type+"' ignored.");continue}o.push(n)}return o}writeMessage(e){return Bt.write(JSON.stringify(e))}_isInvocationMessage(e){this._assertNotEmptyString(e.target,"Invalid payload for Invocation message."),void 0!==e.invocationId&&this._assertNotEmptyString(e.invocationId,"Invalid payload for Invocation message.")}_isStreamItemMessage(e){if(this._assertNotEmptyString(e.invocationId,"Invalid payload for StreamItem message."),void 0===e.item)throw new Error("Invalid payload for StreamItem message.")}_isCompletionMessage(e){if(e.result&&e.error)throw new Error("Invalid payload for Completion message.");!e.result&&e.error&&this._assertNotEmptyString(e.error,"Invalid payload for Completion message."),this._assertNotEmptyString(e.invocationId,"Invalid payload for Completion message.")}_isAckMessage(e){if("number"!=typeof e.sequenceId)throw new Error("Invalid SequenceId for Ack message.")}_isSequenceMessage(e){if("number"!=typeof e.sequenceId)throw new Error("Invalid SequenceId for Sequence message.")}_assertNotEmptyString(e,t){if("string"!=typeof e||""===e)throw new Error(t)}}const Un={trace:Ot.Trace,debug:Ot.Debug,info:Ot.Information,information:Ot.Information,warn:Ot.Warning,warning:Ot.Warning,error:Ot.Error,critical:Ot.Critical,none:Ot.None};class Ln{configureLogging(e){if(Ht.isRequired(e,"logging"),function(e){return void 0!==e.log}(e))this.logger=e;else if("string"==typeof e){const t=function(e){const t=Un[e.toLowerCase()];if(void 0!==t)return t;throw new Error(`Unknown log level: ${e}`)}(e);this.logger=new Kt(t)}else this.logger=new Kt(e);return this}withUrl(e,t){return Ht.isRequired(e,"url"),Ht.isNotEmpty(e,"url"),this.url=e,this.httpConnectionOptions="object"==typeof t?{...this.httpConnectionOptions,...t}:{...this.httpConnectionOptions,transport:t},this}withHubProtocol(e){return Ht.isRequired(e,"protocol"),this.protocol=e,this}withAutomaticReconnect(e){if(this.reconnectPolicy)throw new Error("A reconnectPolicy has already been set.");return e?Array.isArray(e)?this.reconnectPolicy=new mn(e):this.reconnectPolicy=e:this.reconnectPolicy=new mn,this}withServerTimeout(e){return Ht.isRequired(e,"milliseconds"),this._serverTimeoutInMilliseconds=e,this}withKeepAliveInterval(e){return Ht.isRequired(e,"milliseconds"),this._keepAliveIntervalInMilliseconds=e,this}withStatefulReconnect(e){return void 0===this.httpConnectionOptions&&(this.httpConnectionOptions={}),this.httpConnectionOptions._useStatefulReconnect=!0,this._statefulReconnectBufferSize=null==e?void 0:e.bufferSize,this}build(){const e=this.httpConnectionOptions||{};if(void 0===e.logger&&(e.logger=this.logger),!this.url)throw new Error("The 'HubConnectionBuilder.withUrl' method must be called before building the connection.");const t=new xn(this.url,e);return fn.create(t,this.logger||Ft.instance,this.protocol||new Mn,this.reconnectPolicy,this._serverTimeoutInMilliseconds,this._keepAliveIntervalInMilliseconds,this._statefulReconnectBufferSize)}}var Bn;!function(e){e[e.Default=0]="Default",e[e.Server=1]="Server",e[e.WebAssembly=2]="WebAssembly",e[e.WebView=3]="WebView"}(Bn||(Bn={}));var On,Fn,$n,Hn=4294967295;function Wn(e,t,n){var o=Math.floor(n/4294967296),r=n;e.setUint32(t,o),e.setUint32(t+4,r)}function jn(e,t){return 4294967296*e.getInt32(t)+e.getUint32(t+4)}var zn=("undefined"==typeof process||"never"!==(null===(On=null===process||void 0===process?void 0:process.env)||void 0===On?void 0:On.TEXT_ENCODING))&&"undefined"!=typeof TextEncoder&&"undefined"!=typeof TextDecoder;function qn(e){for(var t=e.length,n=0,o=0;o=55296&&r<=56319&&o65535&&(h-=65536,i.push(h>>>10&1023|55296),h=56320|1023&h),i.push(h)}else i.push(a);i.length>=4096&&(s+=String.fromCharCode.apply(String,i),i.length=0)}return i.length>0&&(s+=String.fromCharCode.apply(String,i)),s}var Gn,Yn=zn?new TextDecoder:null,Qn=zn?"undefined"!=typeof process&&"force"!==(null===($n=null===process||void 0===process?void 0:process.env)||void 0===$n?void 0:$n.TEXT_DECODER)?200:0:Hn,Zn=function(e,t){this.type=e,this.data=t},eo=(Gn=function(e,t){return Gn=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},Gn(e,t)},function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function n(){this.constructor=e}Gn(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}),to=function(e){function t(n){var o=e.call(this,n)||this,r=Object.create(t.prototype);return Object.setPrototypeOf(o,r),Object.defineProperty(o,"name",{configurable:!0,enumerable:!1,value:t.name}),o}return eo(t,e),t}(Error),no={type:-1,encode:function(e){var t,n,o,r;return e instanceof Date?function(e){var t,n=e.sec,o=e.nsec;if(n>=0&&o>=0&&n<=17179869183){if(0===o&&n<=4294967295){var r=new Uint8Array(4);return(t=new DataView(r.buffer)).setUint32(0,n),r}var i=n/4294967296,s=4294967295&n;return r=new Uint8Array(8),(t=new DataView(r.buffer)).setUint32(0,o<<2|3&i),t.setUint32(4,s),r}return r=new Uint8Array(12),(t=new DataView(r.buffer)).setUint32(0,o),Wn(t,4,n),r}((o=1e6*((t=e.getTime())-1e3*(n=Math.floor(t/1e3))),{sec:n+(r=Math.floor(o/1e9)),nsec:o-1e9*r})):null},decode:function(e){var t=function(e){var t=new DataView(e.buffer,e.byteOffset,e.byteLength);switch(e.byteLength){case 4:return{sec:t.getUint32(0),nsec:0};case 8:var n=t.getUint32(0);return{sec:4294967296*(3&n)+t.getUint32(4),nsec:n>>>2};case 12:return{sec:jn(t,4),nsec:t.getUint32(0)};default:throw new to("Unrecognized data size for timestamp (expected 4, 8, or 12): ".concat(e.length))}}(e);return new Date(1e3*t.sec+t.nsec/1e6)}},oo=function(){function e(){this.builtInEncoders=[],this.builtInDecoders=[],this.encoders=[],this.decoders=[],this.register(no)}return e.prototype.register=function(e){var t=e.type,n=e.encode,o=e.decode;if(t>=0)this.encoders[t]=n,this.decoders[t]=o;else{var r=1+t;this.builtInEncoders[r]=n,this.builtInDecoders[r]=o}},e.prototype.tryToEncode=function(e,t){for(var n=0;nthis.maxDepth)throw new Error("Too deep objects in depth ".concat(t));null==e?this.encodeNil():"boolean"==typeof e?this.encodeBoolean(e):"number"==typeof e?this.encodeNumber(e):"string"==typeof e?this.encodeString(e):this.encodeObject(e,t)},e.prototype.ensureBufferSizeToWrite=function(e){var t=this.pos+e;this.view.byteLength=0?e<128?this.writeU8(e):e<256?(this.writeU8(204),this.writeU8(e)):e<65536?(this.writeU8(205),this.writeU16(e)):e<4294967296?(this.writeU8(206),this.writeU32(e)):(this.writeU8(207),this.writeU64(e)):e>=-32?this.writeU8(224|e+32):e>=-128?(this.writeU8(208),this.writeI8(e)):e>=-32768?(this.writeU8(209),this.writeI16(e)):e>=-2147483648?(this.writeU8(210),this.writeI32(e)):(this.writeU8(211),this.writeI64(e)):this.forceFloat32?(this.writeU8(202),this.writeF32(e)):(this.writeU8(203),this.writeF64(e))},e.prototype.writeStringHeader=function(e){if(e<32)this.writeU8(160+e);else if(e<256)this.writeU8(217),this.writeU8(e);else if(e<65536)this.writeU8(218),this.writeU16(e);else{if(!(e<4294967296))throw new Error("Too long string: ".concat(e," bytes in UTF-8"));this.writeU8(219),this.writeU32(e)}},e.prototype.encodeString=function(e){if(e.length>Kn){var t=qn(e);this.ensureBufferSizeToWrite(5+t),this.writeStringHeader(t),Vn(e,this.bytes,this.pos),this.pos+=t}else t=qn(e),this.ensureBufferSizeToWrite(5+t),this.writeStringHeader(t),function(e,t,n){for(var o=e.length,r=n,i=0;i>6&31|192;else{if(s>=55296&&s<=56319&&i>12&15|224,t[r++]=s>>6&63|128):(t[r++]=s>>18&7|240,t[r++]=s>>12&63|128,t[r++]=s>>6&63|128)}t[r++]=63&s|128}else t[r++]=s}}(e,this.bytes,this.pos),this.pos+=t},e.prototype.encodeObject=function(e,t){var n=this.extensionCodec.tryToEncode(e,this.context);if(null!=n)this.encodeExtension(n);else if(Array.isArray(e))this.encodeArray(e,t);else if(ArrayBuffer.isView(e))this.encodeBinary(e);else{if("object"!=typeof e)throw new Error("Unrecognized object: ".concat(Object.prototype.toString.apply(e)));this.encodeMap(e,t)}},e.prototype.encodeBinary=function(e){var t=e.byteLength;if(t<256)this.writeU8(196),this.writeU8(t);else if(t<65536)this.writeU8(197),this.writeU16(t);else{if(!(t<4294967296))throw new Error("Too large binary: ".concat(t));this.writeU8(198),this.writeU32(t)}var n=ro(e);this.writeU8a(n)},e.prototype.encodeArray=function(e,t){var n=e.length;if(n<16)this.writeU8(144+n);else if(n<65536)this.writeU8(220),this.writeU16(n);else{if(!(n<4294967296))throw new Error("Too large array: ".concat(n));this.writeU8(221),this.writeU32(n)}for(var o=0,r=e;o0&&e<=this.maxKeyLength},e.prototype.find=function(e,t,n){e:for(var o=0,r=this.caches[n-1];o=this.maxLengthPerKey?n[Math.random()*n.length|0]=o:n.push(o)},e.prototype.decode=function(e,t,n){var o=this.find(e,t,n);if(null!=o)return this.hit++,o;this.miss++;var r=Xn(e,t,n),i=Uint8Array.prototype.slice.call(e,t,t+n);return this.store(i,r),r},e}(),co=function(e,t){var n,o,r,i,s={label:0,sent:function(){if(1&r[0])throw r[1];return r[1]},trys:[],ops:[]};return i={next:a(0),throw:a(1),return:a(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function a(i){return function(a){return function(i){if(n)throw new TypeError("Generator is already executing.");for(;s;)try{if(n=1,o&&(r=2&i[0]?o.return:i[0]?o.throw||((r=o.return)&&r.call(o),0):o.next)&&!(r=r.call(o,i[1])).done)return r;switch(o=0,r&&(i=[2&i[0],r.value]),i[0]){case 0:case 1:r=i;break;case 4:return s.label++,{value:i[1],done:!1};case 5:s.label++,o=i[1],i=[0];continue;case 7:i=s.ops.pop(),s.trys.pop();continue;default:if(!((r=(r=s.trys).length>0&&r[r.length-1])||6!==i[0]&&2!==i[0])){s=0;continue}if(3===i[0]&&(!r||i[1]>r[0]&&i[1]=e},e.prototype.createExtraByteError=function(e){var t=this.view,n=this.pos;return new RangeError("Extra ".concat(t.byteLength-n," of ").concat(t.byteLength," byte(s) found at buffer[").concat(e,"]"))},e.prototype.decode=function(e){this.reinitializeState(),this.setBuffer(e);var t=this.doDecodeSync();if(this.hasRemaining(1))throw this.createExtraByteError(this.pos);return t},e.prototype.decodeMulti=function(e){return co(this,(function(t){switch(t.label){case 0:this.reinitializeState(),this.setBuffer(e),t.label=1;case 1:return this.hasRemaining(1)?[4,this.doDecodeSync()]:[3,3];case 2:return t.sent(),[3,1];case 3:return[2]}}))},e.prototype.decodeAsync=function(e){var t,n,o,r,i,s,a;return i=this,void 0,a=function(){var i,s,a,c,l,h,d,u;return co(this,(function(p){switch(p.label){case 0:i=!1,p.label=1;case 1:p.trys.push([1,6,7,12]),t=lo(e),p.label=2;case 2:return[4,t.next()];case 3:if((n=p.sent()).done)return[3,5];if(a=n.value,i)throw this.createExtraByteError(this.totalPos);this.appendBuffer(a);try{s=this.doDecodeSync(),i=!0}catch(e){if(!(e instanceof fo))throw e}this.totalPos+=this.pos,p.label=4;case 4:return[3,2];case 5:return[3,12];case 6:return c=p.sent(),o={error:c},[3,12];case 7:return p.trys.push([7,,10,11]),n&&!n.done&&(r=t.return)?[4,r.call(t)]:[3,9];case 8:p.sent(),p.label=9;case 9:return[3,11];case 10:if(o)throw o.error;return[7];case 11:return[7];case 12:if(i){if(this.hasRemaining(1))throw this.createExtraByteError(this.totalPos);return[2,s]}throw h=(l=this).headByte,d=l.pos,u=l.totalPos,new RangeError("Insufficient data in parsing ".concat(so(h)," at ").concat(u," (").concat(d," in the current buffer)"))}}))},new((s=void 0)||(s=Promise))((function(e,t){function n(e){try{r(a.next(e))}catch(e){t(e)}}function o(e){try{r(a.throw(e))}catch(e){t(e)}}function r(t){var r;t.done?e(t.value):(r=t.value,r instanceof s?r:new s((function(e){e(r)}))).then(n,o)}r((a=a.apply(i,[])).next())}))},e.prototype.decodeArrayStream=function(e){return this.decodeMultiAsync(e,!0)},e.prototype.decodeStream=function(e){return this.decodeMultiAsync(e,!1)},e.prototype.decodeMultiAsync=function(e,t){return function(n,o,r){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var i,s=function(){var n,o,r,i,s,a,c,l,h;return co(this,(function(d){switch(d.label){case 0:n=t,o=-1,d.label=1;case 1:d.trys.push([1,13,14,19]),r=lo(e),d.label=2;case 2:return[4,ho(r.next())];case 3:if((i=d.sent()).done)return[3,12];if(s=i.value,t&&0===o)throw this.createExtraByteError(this.totalPos);this.appendBuffer(s),n&&(o=this.readArraySize(),n=!1,this.complete()),d.label=4;case 4:d.trys.push([4,9,,10]),d.label=5;case 5:return[4,ho(this.doDecodeSync())];case 6:return[4,d.sent()];case 7:return d.sent(),0==--o?[3,8]:[3,5];case 8:return[3,10];case 9:if(!((a=d.sent())instanceof fo))throw a;return[3,10];case 10:this.totalPos+=this.pos,d.label=11;case 11:return[3,2];case 12:return[3,19];case 13:return c=d.sent(),l={error:c},[3,19];case 14:return d.trys.push([14,,17,18]),i&&!i.done&&(h=r.return)?[4,ho(h.call(r))]:[3,16];case 15:d.sent(),d.label=16;case 16:return[3,18];case 17:if(l)throw l.error;return[7];case 18:return[7];case 19:return[2]}}))}.apply(n,o||[]),a=[];return i={},c("next"),c("throw"),c("return"),i[Symbol.asyncIterator]=function(){return this},i;function c(e){s[e]&&(i[e]=function(t){return new Promise((function(n,o){a.push([e,t,n,o])>1||l(e,t)}))})}function l(e,t){try{(n=s[e](t)).value instanceof ho?Promise.resolve(n.value.v).then(h,d):u(a[0][2],n)}catch(e){u(a[0][3],e)}var n}function h(e){l("next",e)}function d(e){l("throw",e)}function u(e,t){e(t),a.shift(),a.length&&l(a[0][0],a[0][1])}}(this,arguments)},e.prototype.doDecodeSync=function(){e:for(;;){var e=this.readHeadByte(),t=void 0;if(e>=224)t=e-256;else if(e<192)if(e<128)t=e;else if(e<144){if(0!=(o=e-128)){this.pushMapState(o),this.complete();continue e}t={}}else if(e<160){if(0!=(o=e-144)){this.pushArrayState(o),this.complete();continue e}t=[]}else{var n=e-160;t=this.decodeUtf8String(n,0)}else if(192===e)t=null;else if(194===e)t=!1;else if(195===e)t=!0;else if(202===e)t=this.readF32();else if(203===e)t=this.readF64();else if(204===e)t=this.readU8();else if(205===e)t=this.readU16();else if(206===e)t=this.readU32();else if(207===e)t=this.readU64();else if(208===e)t=this.readI8();else if(209===e)t=this.readI16();else if(210===e)t=this.readI32();else if(211===e)t=this.readI64();else if(217===e)n=this.lookU8(),t=this.decodeUtf8String(n,1);else if(218===e)n=this.lookU16(),t=this.decodeUtf8String(n,2);else if(219===e)n=this.lookU32(),t=this.decodeUtf8String(n,4);else if(220===e){if(0!==(o=this.readU16())){this.pushArrayState(o),this.complete();continue e}t=[]}else if(221===e){if(0!==(o=this.readU32())){this.pushArrayState(o),this.complete();continue e}t=[]}else if(222===e){if(0!==(o=this.readU16())){this.pushMapState(o),this.complete();continue e}t={}}else if(223===e){if(0!==(o=this.readU32())){this.pushMapState(o),this.complete();continue e}t={}}else if(196===e){var o=this.lookU8();t=this.decodeBinary(o,1)}else if(197===e)o=this.lookU16(),t=this.decodeBinary(o,2);else if(198===e)o=this.lookU32(),t=this.decodeBinary(o,4);else if(212===e)t=this.decodeExtension(1,0);else if(213===e)t=this.decodeExtension(2,0);else if(214===e)t=this.decodeExtension(4,0);else if(215===e)t=this.decodeExtension(8,0);else if(216===e)t=this.decodeExtension(16,0);else if(199===e)o=this.lookU8(),t=this.decodeExtension(o,1);else if(200===e)o=this.lookU16(),t=this.decodeExtension(o,2);else{if(201!==e)throw new to("Unrecognized type byte: ".concat(so(e)));o=this.lookU32(),t=this.decodeExtension(o,4)}this.complete();for(var r=this.stack;r.length>0;){var i=r[r.length-1];if(0===i.type){if(i.array[i.position]=t,i.position++,i.position!==i.size)continue e;r.pop(),t=i.array}else{if(1===i.type){if("string"!=(s=typeof t)&&"number"!==s)throw new to("The type of key must be string or number but "+typeof t);if("__proto__"===t)throw new to("The key __proto__ is not allowed");i.key=t,i.type=2;continue e}if(i.map[i.key]=t,i.readCount++,i.readCount!==i.size){i.key=null,i.type=1;continue e}r.pop(),t=i.map}}return t}var s},e.prototype.readHeadByte=function(){return-1===this.headByte&&(this.headByte=this.readU8()),this.headByte},e.prototype.complete=function(){this.headByte=-1},e.prototype.readArraySize=function(){var e=this.readHeadByte();switch(e){case 220:return this.readU16();case 221:return this.readU32();default:if(e<160)return e-144;throw new to("Unrecognized array type byte: ".concat(so(e)))}},e.prototype.pushMapState=function(e){if(e>this.maxMapLength)throw new to("Max length exceeded: map length (".concat(e,") > maxMapLengthLength (").concat(this.maxMapLength,")"));this.stack.push({type:1,size:e,key:null,readCount:0,map:{}})},e.prototype.pushArrayState=function(e){if(e>this.maxArrayLength)throw new to("Max length exceeded: array length (".concat(e,") > maxArrayLength (").concat(this.maxArrayLength,")"));this.stack.push({type:0,size:e,array:new Array(e),position:0})},e.prototype.decodeUtf8String=function(e,t){var n;if(e>this.maxStrLength)throw new to("Max length exceeded: UTF-8 byte length (".concat(e,") > maxStrLength (").concat(this.maxStrLength,")"));if(this.bytes.byteLengthQn?function(e,t,n){var o=e.subarray(t,t+n);return Yn.decode(o)}(this.bytes,r,e):Xn(this.bytes,r,e),this.pos+=t+e,o},e.prototype.stateIsMapKey=function(){return this.stack.length>0&&1===this.stack[this.stack.length-1].type},e.prototype.decodeBinary=function(e,t){if(e>this.maxBinLength)throw new to("Max length exceeded: bin length (".concat(e,") > maxBinLength (").concat(this.maxBinLength,")"));if(!this.hasRemaining(e+t))throw go;var n=this.pos+t,o=this.bytes.subarray(n,n+e);return this.pos+=t+e,o},e.prototype.decodeExtension=function(e,t){if(e>this.maxExtLength)throw new to("Max length exceeded: ext length (".concat(e,") > maxExtLength (").concat(this.maxExtLength,")"));var n=this.view.getInt8(this.pos+t),o=this.decodeBinary(e,t+1);return this.extensionCodec.decode(o,n,this.context)},e.prototype.lookU8=function(){return this.view.getUint8(this.pos)},e.prototype.lookU16=function(){return this.view.getUint16(this.pos)},e.prototype.lookU32=function(){return this.view.getUint32(this.pos)},e.prototype.readU8=function(){var e=this.view.getUint8(this.pos);return this.pos++,e},e.prototype.readI8=function(){var e=this.view.getInt8(this.pos);return this.pos++,e},e.prototype.readU16=function(){var e=this.view.getUint16(this.pos);return this.pos+=2,e},e.prototype.readI16=function(){var e=this.view.getInt16(this.pos);return this.pos+=2,e},e.prototype.readU32=function(){var e=this.view.getUint32(this.pos);return this.pos+=4,e},e.prototype.readI32=function(){var e=this.view.getInt32(this.pos);return this.pos+=4,e},e.prototype.readU64=function(){var e,t,n=(e=this.view,t=this.pos,4294967296*e.getUint32(t)+e.getUint32(t+4));return this.pos+=8,n},e.prototype.readI64=function(){var e=jn(this.view,this.pos);return this.pos+=8,e},e.prototype.readF32=function(){var e=this.view.getFloat32(this.pos);return this.pos+=4,e},e.prototype.readF64=function(){var e=this.view.getFloat64(this.pos);return this.pos+=8,e},e}();class yo{static write(e){let t=e.byteLength||e.length;const n=[];do{let e=127&t;t>>=7,t>0&&(e|=128),n.push(e)}while(t>0);t=e.byteLength||e.length;const o=new Uint8Array(n.length+t);return o.set(n,0),o.set(e,n.length),o.buffer}static parse(e){const t=[],n=new Uint8Array(e),o=[0,7,14,21,28];for(let r=0;r7)throw new Error("Messages bigger than 2GB are not supported.");if(!(n.byteLength>=r+s+a))throw new Error("Incomplete message.");t.push(n.slice?n.slice(r+s,r+s+a):n.subarray(r+s,r+s+a)),r=r+s+a}return t}}const wo=new Uint8Array([145,ln.Ping]);class bo{constructor(e){this.name="messagepack",this.version=2,this.transferFormat=kn.Binary,this._errorResult=1,this._voidResult=2,this._nonVoidResult=3,e=e||{},this._encoder=new io(e.extensionCodec,e.context,e.maxDepth,e.initialBufferSize,e.sortKeys,e.forceFloat32,e.ignoreUndefined,e.forceIntegerToFloat),this._decoder=new vo(e.extensionCodec,e.context,e.maxStrLength,e.maxBinLength,e.maxArrayLength,e.maxMapLength,e.maxExtLength)}parseMessages(e,t){if(!(n=e)||"undefined"==typeof ArrayBuffer||!(n instanceof ArrayBuffer||n.constructor&&"ArrayBuffer"===n.constructor.name))throw new Error("Invalid input for MessagePack hub protocol. Expected an ArrayBuffer.");var n;null===t&&(t=Ft.instance);const o=yo.parse(e),r=[];for(const e of o){const n=this._parseMessage(e,t);n&&r.push(n)}return r}writeMessage(e){switch(e.type){case ln.Invocation:return this._writeInvocation(e);case ln.StreamInvocation:return this._writeStreamInvocation(e);case ln.StreamItem:return this._writeStreamItem(e);case ln.Completion:return this._writeCompletion(e);case ln.Ping:return yo.write(wo);case ln.CancelInvocation:return this._writeCancelInvocation(e);case ln.Close:return this._writeClose();case ln.Ack:return this._writeAck(e);case ln.Sequence:return this._writeSequence(e);default:throw new Error("Invalid message type.")}}_parseMessage(e,t){if(0===e.length)throw new Error("Invalid payload.");const n=this._decoder.decode(e);if(0===n.length||!(n instanceof Array))throw new Error("Invalid payload.");const o=n[0];switch(o){case ln.Invocation:return this._createInvocationMessage(this._readHeaders(n),n);case ln.StreamItem:return this._createStreamItemMessage(this._readHeaders(n),n);case ln.Completion:return this._createCompletionMessage(this._readHeaders(n),n);case ln.Ping:return this._createPingMessage(n);case ln.Close:return this._createCloseMessage(n);case ln.Ack:return this._createAckMessage(n);case ln.Sequence:return this._createSequenceMessage(n);default:return t.log(Ot.Information,"Unknown message type '"+o+"' ignored."),null}}_createCloseMessage(e){if(e.length<2)throw new Error("Invalid payload for Close message.");return{allowReconnect:e.length>=3?e[2]:void 0,error:e[1],type:ln.Close}}_createPingMessage(e){if(e.length<1)throw new Error("Invalid payload for Ping message.");return{type:ln.Ping}}_createInvocationMessage(e,t){if(t.length<5)throw new Error("Invalid payload for Invocation message.");const n=t[2];return n?{arguments:t[4],headers:e,invocationId:n,streamIds:[],target:t[3],type:ln.Invocation}:{arguments:t[4],headers:e,streamIds:[],target:t[3],type:ln.Invocation}}_createStreamItemMessage(e,t){if(t.length<4)throw new Error("Invalid payload for StreamItem message.");return{headers:e,invocationId:t[2],item:t[3],type:ln.StreamItem}}_createCompletionMessage(e,t){if(t.length<4)throw new Error("Invalid payload for Completion message.");const n=t[3];if(n!==this._voidResult&&t.length<5)throw new Error("Invalid payload for Completion message.");let o,r;switch(n){case this._errorResult:o=t[4];break;case this._nonVoidResult:r=t[4]}return{error:o,headers:e,invocationId:t[2],result:r,type:ln.Completion}}_createAckMessage(e){if(e.length<1)throw new Error("Invalid payload for Ack message.");return{sequenceId:e[1],type:ln.Ack}}_createSequenceMessage(e){if(e.length<1)throw new Error("Invalid payload for Sequence message.");return{sequenceId:e[1],type:ln.Sequence}}_writeInvocation(e){let t;return t=e.streamIds?this._encoder.encode([ln.Invocation,e.headers||{},e.invocationId||null,e.target,e.arguments,e.streamIds]):this._encoder.encode([ln.Invocation,e.headers||{},e.invocationId||null,e.target,e.arguments]),yo.write(t.slice())}_writeStreamInvocation(e){let t;return t=e.streamIds?this._encoder.encode([ln.StreamInvocation,e.headers||{},e.invocationId,e.target,e.arguments,e.streamIds]):this._encoder.encode([ln.StreamInvocation,e.headers||{},e.invocationId,e.target,e.arguments]),yo.write(t.slice())}_writeStreamItem(e){const t=this._encoder.encode([ln.StreamItem,e.headers||{},e.invocationId,e.item]);return yo.write(t.slice())}_writeCompletion(e){const t=e.error?this._errorResult:void 0!==e.result?this._nonVoidResult:this._voidResult;let n;switch(t){case this._errorResult:n=this._encoder.encode([ln.Completion,e.headers||{},e.invocationId,t,e.error]);break;case this._voidResult:n=this._encoder.encode([ln.Completion,e.headers||{},e.invocationId,t]);break;case this._nonVoidResult:n=this._encoder.encode([ln.Completion,e.headers||{},e.invocationId,t,e.result])}return yo.write(n.slice())}_writeCancelInvocation(e){const t=this._encoder.encode([ln.CancelInvocation,e.headers||{},e.invocationId]);return yo.write(t.slice())}_writeClose(){const e=this._encoder.encode([ln.Close,null]);return yo.write(e.slice())}_writeAck(e){const t=this._encoder.encode([ln.Ack,e.sequenceId]);return yo.write(t.slice())}_writeSequence(e){const t=this._encoder.encode([ln.Sequence,e.sequenceId]);return yo.write(t.slice())}_readHeaders(e){const t=e[1];if("object"!=typeof t)throw new Error("Invalid headers.");return t}}const _o="function"==typeof TextDecoder?new TextDecoder("utf-8"):null,So=_o?_o.decode.bind(_o):function(e){let t=0;const n=e.length,o=[],r=[];for(;t65535&&(r-=65536,o.push(r>>>10&1023|55296),r=56320|1023&r),o.push(r)}o.length>1024&&(r.push(String.fromCharCode.apply(null,o)),o.length=0)}return r.push(String.fromCharCode.apply(null,o)),r.join("")},Co=Math.pow(2,32),Eo=Math.pow(2,21)-1;function Io(e,t){return e[t]|e[t+1]<<8|e[t+2]<<16|e[t+3]<<24}function ko(e,t){return e[t]+(e[t+1]<<8)+(e[t+2]<<16)+(e[t+3]<<24>>>0)}function To(e,t){const n=ko(e,t+4);if(n>Eo)throw new Error(`Cannot read uint64 with high order part ${n}, because the result would exceed Number.MAX_SAFE_INTEGER.`);return n*Co+ko(e,t)}class Ro{constructor(e){this.batchData=e;const t=new No(e);this.arrayRangeReader=new Po(e),this.arrayBuilderSegmentReader=new Mo(e),this.diffReader=new Ao(e),this.editReader=new Do(e,t),this.frameReader=new xo(e,t)}updatedComponents(){return Io(this.batchData,this.batchData.length-20)}referenceFrames(){return Io(this.batchData,this.batchData.length-16)}disposedComponentIds(){return Io(this.batchData,this.batchData.length-12)}disposedEventHandlerIds(){return Io(this.batchData,this.batchData.length-8)}updatedComponentsEntry(e,t){const n=e+4*t;return Io(this.batchData,n)}referenceFramesEntry(e,t){return e+20*t}disposedComponentIdsEntry(e,t){const n=e+4*t;return Io(this.batchData,n)}disposedEventHandlerIdsEntry(e,t){const n=e+8*t;return To(this.batchData,n)}}class Ao{constructor(e){this.batchDataUint8=e}componentId(e){return Io(this.batchDataUint8,e)}edits(e){return e+4}editsEntry(e,t){return e+16*t}}class Do{constructor(e,t){this.batchDataUint8=e,this.stringReader=t}editType(e){return Io(this.batchDataUint8,e)}siblingIndex(e){return Io(this.batchDataUint8,e+4)}newTreeIndex(e){return Io(this.batchDataUint8,e+8)}moveToSiblingIndex(e){return Io(this.batchDataUint8,e+8)}removedAttributeName(e){const t=Io(this.batchDataUint8,e+12);return this.stringReader.readString(t)}}class xo{constructor(e,t){this.batchDataUint8=e,this.stringReader=t}frameType(e){return Io(this.batchDataUint8,e)}subtreeLength(e){return Io(this.batchDataUint8,e+4)}elementReferenceCaptureId(e){const t=Io(this.batchDataUint8,e+4);return this.stringReader.readString(t)}componentId(e){return Io(this.batchDataUint8,e+8)}elementName(e){const t=Io(this.batchDataUint8,e+8);return this.stringReader.readString(t)}textContent(e){const t=Io(this.batchDataUint8,e+4);return this.stringReader.readString(t)}markupContent(e){const t=Io(this.batchDataUint8,e+4);return this.stringReader.readString(t)}attributeName(e){const t=Io(this.batchDataUint8,e+4);return this.stringReader.readString(t)}attributeValue(e){const t=Io(this.batchDataUint8,e+8);return this.stringReader.readString(t)}attributeEventHandlerId(e){return To(this.batchDataUint8,e+12)}}class No{constructor(e){this.batchDataUint8=e,this.stringTableStartIndex=Io(e,e.length-4)}readString(e){if(-1===e)return null;{const n=Io(this.batchDataUint8,this.stringTableStartIndex+4*e),o=function(e,t){let n=0,o=0;for(let r=0;r<4;r++){const i=e[t+r];if(n|=(127&i)<this.nextBatchId)return this.fatalError?(this.logger.log(yt.Debug,`Received a new batch ${e} but errored out on a previous batch ${this.nextBatchId-1}`),void await n.send("OnRenderCompleted",this.nextBatchId-1,this.fatalError.toString())):void this.logger.log(yt.Debug,`Waiting for batch ${this.nextBatchId}. Batch ${e} not processed.`);try{this.nextBatchId++,this.logger.log(yt.Debug,`Applying batch ${e}.`),xe(Bn.Server,new Ro(t)),await this.completeBatch(n,e)}catch(t){throw this.fatalError=t.toString(),this.logger.log(yt.Error,`There was an error applying batch ${e}.`),n.send("OnRenderCompleted",e,t.toString()),t}}getLastBatchid(){return this.nextBatchId-1}async completeBatch(e,t){try{await e.send("OnRenderCompleted",t,null)}catch{this.logger.log(yt.Warning,`Failed to deliver completion notification for render '${t}'.`)}}}let Lo=!1;function Bo(){const e=document.querySelector("#blazor-error-ui");e&&(e.style.display="block"),Lo||(Lo=!0,document.querySelectorAll("#blazor-error-ui .reload").forEach((e=>{e.onclick=function(e){location.reload(),e.preventDefault()}})),document.querySelectorAll("#blazor-error-ui .dismiss").forEach((e=>{e.onclick=function(e){const t=document.querySelector("#blazor-error-ui");t&&(t.style.display="none"),e.preventDefault()}})))}class Oo{constructor(t,n,o,r){this._firstUpdate=!0,this._renderingFailed=!1,this._disposed=!1,this._circuitId=void 0,this._applicationState=n,this._componentManager=t,this._options=o,this._logger=r,this._renderQueue=new Uo(this._logger),this._dispatcher=e.attachDispatcher(this)}start(){if(this.isDisposedOrDisposing())throw new Error("Cannot start a disposed circuit.");return this._startPromise||(this._startPromise=this.startCore()),this._startPromise}updateRootComponents(e){var t,n;return this._firstUpdate?(this._firstUpdate=!1,null===(t=this._connection)||void 0===t?void 0:t.send("UpdateRootComponents",e,this._applicationState)):null===(n=this._connection)||void 0===n?void 0:n.send("UpdateRootComponents",e,"")}async startCore(){if(this._connection=await this.startConnection(),this._connection.state!==hn.Connected)return!1;const e=JSON.stringify(this._componentManager.initialComponents.map((e=>Ut(e))));if(this._circuitId=await this._connection.invoke("StartCircuit",Je.getBaseURI(),Je.getLocationHref(),e,this._applicationState||""),!this._circuitId)return!1;for(const e of this._options.circuitHandlers)e.onCircuitOpened&&e.onCircuitOpened();return!0}async startConnection(){var e,t;const n=new bo;n.name="blazorpack";const o=(new Ln).withUrl("_blazor").withHubProtocol(n);this._options.configureSignalR(o);const r=o.build();r.on("JS.AttachComponent",((e,t)=>Ae(Bn.Server,this.resolveElement(t),e,!1))),r.on("JS.BeginInvokeJS",this._dispatcher.beginInvokeJSFromDotNet.bind(this._dispatcher)),r.on("JS.EndInvokeDotNet",this._dispatcher.endInvokeDotNetFromJS.bind(this._dispatcher)),r.on("JS.ReceiveByteArray",this._dispatcher.receiveByteArray.bind(this._dispatcher)),r.on("JS.BeginTransmitStream",(e=>{const t=new ReadableStream({start:t=>{r.stream("SendDotNetStreamToJS",e).subscribe({next:e=>t.enqueue(e),complete:()=>t.close(),error:e=>t.error(e)})}});this._dispatcher.supplyDotNetStream(e,t)})),r.on("JS.RenderBatch",(async(e,t)=>{var n,o;this._logger.log(Ot.Debug,`Received render batch with id ${e} and ${t.byteLength} bytes.`),await this._renderQueue.processBatch(e,t,this._connection),null===(o=(n=this._componentManager).onAfterRenderBatch)||void 0===o||o.call(n,Bn.Server)})),r.on("JS.EndUpdateRootComponents",(e=>{var t,n;null===(n=(t=this._componentManager).onAfterUpdateRootComponents)||void 0===n||n.call(t,e)})),r.on("JS.EndLocationChanging",vt._internal.navigationManager.endLocationChanging),r.onclose((e=>{this._interopMethodsForReconnection=function(e){const t=C.get(e);if(!t)throw new Error(`Interop methods are not registered for renderer ${e}`);return C.delete(e),t}(Bn.Server),this._disposed||this._renderingFailed||this._options.reconnectionHandler.onConnectionDown(this._options.reconnectionOptions,e)})),r.on("JS.Error",(e=>{this._renderingFailed=!0,this.unhandledError(e),Bo()}));try{await r.start()}catch(e){if(this.unhandledError(e),"FailedToNegotiateWithServerError"===e.errorType)throw e;Bo(),e.innerErrors&&(e.innerErrors.some((e=>"UnsupportedTransportError"===e.errorType&&e.transport===In.WebSockets))?this._logger.log(Ot.Error,"Unable to connect, please ensure you are using an updated browser that supports WebSockets."):e.innerErrors.some((e=>"FailedToStartTransportError"===e.errorType&&e.transport===In.WebSockets))?this._logger.log(Ot.Error,"Unable to connect, please ensure WebSockets are available. A VPN or proxy may be blocking the connection."):e.innerErrors.some((e=>"DisabledTransportError"===e.errorType&&e.transport===In.LongPolling))&&this._logger.log(Ot.Error,"Unable to initiate a SignalR connection to the server. This might be because the server is not configured to support WebSockets. For additional details, visit https://aka.ms/blazor-server-websockets-error."))}return(null===(t=null===(e=r.connection)||void 0===e?void 0:e.features)||void 0===t?void 0:t.inherentKeepAlive)&&this._logger.log(Ot.Warning,"Failed to connect via WebSockets, using the Long Polling fallback transport. This may be due to a VPN or proxy blocking the connection. To troubleshoot this, visit https://aka.ms/blazor-server-using-fallback-long-polling."),r}async disconnect(){var e;await(null===(e=this._connection)||void 0===e?void 0:e.stop())}async reconnect(){if(!this._circuitId)throw new Error("Circuit host not initialized.");return this._connection.state===hn.Connected||(this._connection=await this.startConnection(),this._interopMethodsForReconnection&&(k(Bn.Server,this._interopMethodsForReconnection),this._interopMethodsForReconnection=void 0),!!await this._connection.invoke("ConnectCircuit",this._circuitId)&&(this._options.reconnectionHandler.onConnectionUp(),!0))}beginInvokeDotNetFromJS(e,t,n,o,r){this.throwIfDispatchingWhenDisposed(),this._connection.send("BeginInvokeDotNetFromJS",e?e.toString():null,t,n,o||0,r)}endInvokeJSFromDotNet(e,t,n){this.throwIfDispatchingWhenDisposed(),this._connection.send("EndInvokeJSFromDotNet",e,t,n)}sendByteArray(e,t){this.throwIfDispatchingWhenDisposed(),this._connection.send("ReceiveByteArray",e,t)}throwIfDispatchingWhenDisposed(){if(this._disposed)throw new Error("The circuit associated with this dispatcher is no longer available.")}sendLocationChanged(e,t,n){return this._connection.send("OnLocationChanged",e,t,n)}sendLocationChanging(e,t,n,o){return this._connection.send("OnLocationChanging",e,t,n,o)}sendJsDataStream(e,t,n){return function(e,t,n,o){setTimeout((async()=>{let r=5,i=(new Date).valueOf();try{const s=t instanceof Blob?t.size:t.byteLength;let a=0,c=0;for(;a1)await e.send("ReceiveJSDataChunk",n,c,h,null);else{if(!await e.invoke("ReceiveJSDataChunk",n,c,h,null))break;const t=(new Date).valueOf(),o=t-i;i=t,r=Math.max(1,Math.round(500/Math.max(1,o)))}a+=l,c++}}catch(t){await e.send("ReceiveJSDataChunk",n,-1,null,t.toString())}}),0)}(this._connection,e,t,n)}resolveElement(e){const t=w(e);if(t)return W(t,!0);const n=Number.parseInt(e);if(!Number.isNaN(n))return H(this._componentManager.resolveRootComponent(n));throw new Error(`Invalid sequence number or identifier '${e}'.`)}getRootComponentManager(){return this._componentManager}unhandledError(e){this._logger.log(Ot.Error,e),this.disconnect()}getDisconnectFormData(){const e=new FormData,t=this._circuitId;return e.append("circuitId",t),e}didRenderingFail(){return this._renderingFailed}isDisposedOrDisposing(){return void 0!==this._disposePromise}sendDisconnectBeacon(){if(this._disposed)return;const e=this.getDisconnectFormData();this._disposed=navigator.sendBeacon("_blazor/disconnect",e)}dispose(){return this._disposePromise||(this._disposePromise=this.disposeCore()),this._disposePromise}async disposeCore(){var e;if(!this._startPromise)return void(this._disposed=!0);await this._startPromise,this._disposed=!0,null===(e=this._connection)||void 0===e||e.stop();const t=this.getDisconnectFormData();fetch("http://github.com/_blazor/disconnect",{method:"POST",body:t});for(const e of this._options.circuitHandlers)e.onCircuitClosed&&e.onCircuitClosed()}}function Fo(e){const t={...$o,...e};return e&&e.reconnectionOptions&&(t.reconnectionOptions={...$o.reconnectionOptions,...e.reconnectionOptions}),t}const $o={configureSignalR:e=>{},logLevel:yt.Warning,initializers:void 0,circuitHandlers:[],reconnectionOptions:{maxRetries:8,retryIntervalMilliseconds:2e4,dialogId:"components-reconnect-modal"}};class Ho{constructor(e,t,n,o){this.maxRetries=t,this.document=n,this.logger=o,this.modal=this.document.createElement("div"),this.modal.id=e,this.maxRetries=t,this.modal.style.cssText=["position: fixed","top: 0","right: 0","bottom: 0","left: 0","z-index: 1050","display: none","overflow: hidden","background-color: #fff","opacity: 0.8","text-align: center","font-weight: bold","transition: visibility 0s linear 500ms"].join(";"),this.message=this.document.createElement("h5"),this.message.style.cssText="margin-top: 20px",this.button=this.document.createElement("button"),this.button.style.cssText="margin:5px auto 5px",this.button.textContent="Retry";const r=this.document.createElement("a");r.addEventListener("click",(()=>location.reload())),r.textContent="reload",this.reloadParagraph=this.document.createElement("p"),this.reloadParagraph.textContent="Alternatively, ",this.reloadParagraph.appendChild(r),this.modal.appendChild(this.message),this.modal.appendChild(this.button),this.modal.appendChild(this.reloadParagraph),this.loader=this.getLoader(),this.message.after(this.loader),this.button.addEventListener("click",(async()=>{this.show();try{await vt.reconnect()||this.rejected()}catch(e){this.logger.log(yt.Error,e),this.failed()}}))}show(){this.document.contains(this.modal)||this.document.body.appendChild(this.modal),this.modal.style.display="block",this.loader.style.display="inline-block",this.button.style.display="none",this.reloadParagraph.style.display="none",this.message.textContent="Attempting to reconnect to the server...",this.modal.style.visibility="hidden",setTimeout((()=>{this.modal.style.visibility="visible"}),0)}update(e){this.message.textContent=`Attempting to reconnect to the server: ${e} of ${this.maxRetries}`}hide(){this.modal.style.display="none"}failed(){this.button.style.display="block",this.reloadParagraph.style.display="none",this.loader.style.display="none";const e=this.document.createTextNode("Reconnection failed. Try "),t=this.document.createElement("a");t.textContent="reloading",t.setAttribute("href",""),t.addEventListener("click",(()=>location.reload()));const n=this.document.createTextNode(" the page if you're unable to reconnect.");this.message.replaceChildren(e,t,n)}rejected(){this.button.style.display="none",this.reloadParagraph.style.display="none",this.loader.style.display="none";const e=this.document.createTextNode("Could not reconnect to the server. "),t=this.document.createElement("a");t.textContent="Reload",t.setAttribute("href",""),t.addEventListener("click",(()=>location.reload()));const n=this.document.createTextNode(" the page to restore functionality.");this.message.replaceChildren(e,t,n)}getLoader(){const e=this.document.createElement("div");return e.style.cssText=["border: 0.3em solid #f3f3f3","border-top: 0.3em solid #3498db","border-radius: 50%","width: 2em","height: 2em","display: inline-block"].join(";"),e.animate([{transform:"rotate(0deg)"},{transform:"rotate(360deg)"}],{duration:2e3,iterations:1/0}),e}}class Wo{constructor(e,t,n){this.dialog=e,this.maxRetries=t,this.document=n,this.document=n;const o=this.document.getElementById(Wo.MaxRetriesId);o&&(o.innerText=this.maxRetries.toString())}show(){this.removeClasses(),this.dialog.classList.add(Wo.ShowClassName)}update(e){const t=this.document.getElementById(Wo.CurrentAttemptId);t&&(t.innerText=e.toString())}hide(){this.removeClasses(),this.dialog.classList.add(Wo.HideClassName)}failed(){this.removeClasses(),this.dialog.classList.add(Wo.FailedClassName)}rejected(){this.removeClasses(),this.dialog.classList.add(Wo.RejectedClassName)}removeClasses(){this.dialog.classList.remove(Wo.ShowClassName,Wo.HideClassName,Wo.FailedClassName,Wo.RejectedClassName)}}Wo.ShowClassName="components-reconnect-show",Wo.HideClassName="components-reconnect-hide",Wo.FailedClassName="components-reconnect-failed",Wo.RejectedClassName="components-reconnect-rejected",Wo.MaxRetriesId="components-reconnect-max-retries",Wo.CurrentAttemptId="components-reconnect-current-attempt";class jo{constructor(e,t,n){this._currentReconnectionProcess=null,this._logger=e,this._reconnectionDisplay=t,this._reconnectCallback=n||vt.reconnect}onConnectionDown(e,t){if(!this._reconnectionDisplay){const t=document.getElementById(e.dialogId);this._reconnectionDisplay=t?new Wo(t,e.maxRetries,document):new Ho(e.dialogId,e.maxRetries,document,this._logger)}this._currentReconnectionProcess||(this._currentReconnectionProcess=new zo(e,this._logger,this._reconnectCallback,this._reconnectionDisplay))}onConnectionUp(){this._currentReconnectionProcess&&(this._currentReconnectionProcess.dispose(),this._currentReconnectionProcess=null)}}class zo{constructor(e,t,n,o){this.logger=t,this.reconnectCallback=n,this.isDisposed=!1,this.reconnectDisplay=o,this.reconnectDisplay.show(),this.attemptPeriodicReconnection(e)}dispose(){this.isDisposed=!0,this.reconnectDisplay.hide()}async attemptPeriodicReconnection(e){for(let t=0;tzo.MaximumFirstRetryInterval?zo.MaximumFirstRetryInterval:e.retryIntervalMilliseconds;if(await this.delay(n),this.isDisposed)break;try{return await this.reconnectCallback()?void 0:void this.reconnectDisplay.rejected()}catch(e){this.logger.log(yt.Error,e)}}this.reconnectDisplay.failed()}delay(e){return new Promise((t=>setTimeout(t,e)))}}zo.MaximumFirstRetryInterval=3e3;class qo{constructor(e=!0,t,n,o=0){this.singleRuntime=e,this.logger=t,this.webRendererId=o,this.afterStartedCallbacks=[],n&&this.afterStartedCallbacks.push(...n)}async importInitializersAsync(e,t){await Promise.all(e.map((e=>async function(e,n){const o=function(e){const t=document.baseURI;return t.endsWith("/")?`${t}${e}`:`${t}/${e}`}(n),r=await import(o);if(void 0!==r){if(e.singleRuntime){const{beforeStart:n,afterStarted:o,beforeWebAssemblyStart:s,afterWebAssemblyStarted:a,beforeServerStart:c,afterServerStarted:l}=r;let h=n;e.webRendererId===Bn.Server&&c&&(h=c),e.webRendererId===Bn.WebAssembly&&s&&(h=s);let d=o;return e.webRendererId===Bn.Server&&l&&(d=l),e.webRendererId===Bn.WebAssembly&&a&&(d=a),i(e,h,d,t)}return function(e,t,n){var r;const s=n[0],{beforeStart:a,afterStarted:c,beforeWebStart:l,afterWebStarted:h,beforeWebAssemblyStart:d,afterWebAssemblyStarted:u,beforeServerStart:p,afterServerStarted:f}=t,g=!(l||h||d||u||p||f||!a&&!c),m=g&&s.enableClassicInitializers;if(g&&!s.enableClassicInitializers)null===(r=e.logger)||void 0===r||r.log(yt.Warning,`Initializer '${o}' will be ignored because multiple runtimes are available. use 'before(web|webAssembly|server)Start' and 'after(web|webAssembly|server)Started?' instead.)`);else if(m)return i(e,a,c,n);if(function(e){e.webAssembly?e.webAssembly.initializers||(e.webAssembly.initializers={beforeStart:[],afterStarted:[]}):e.webAssembly={initializers:{beforeStart:[],afterStarted:[]}},e.circuit?e.circuit.initializers||(e.circuit.initializers={beforeStart:[],afterStarted:[]}):e.circuit={initializers:{beforeStart:[],afterStarted:[]}}}(s),d&&s.webAssembly.initializers.beforeStart.push(d),u&&s.webAssembly.initializers.afterStarted.push(u),p&&s.circuit.initializers.beforeStart.push(p),f&&s.circuit.initializers.afterStarted.push(f),h&&e.afterStartedCallbacks.push(h),l)return l(s)}(e,r,t)}function i(e,t,n,o){if(n&&e.afterStartedCallbacks.push(n),t)return t(...o)}}(this,e))))}async invokeAfterStartedCallbacks(e){const t=function(e){var t;return null===(t=I.get(e))||void 0===t?void 0:t[1]}(this.webRendererId);t&&await t,await Promise.all(this.afterStartedCallbacks.map((t=>t(e))))}}let Jo,Ko,Vo,Xo,Go,Yo,Qo,Zo;function er(e){if(Xo)throw new Error("Circuit options have already been configured.");if(Xo)throw new Error("WebAssembly options have already been configured.");Jo=async function(e){const t=await e;Xo=Fo(t)}(e)}function tr(e){if(void 0!==Yo)throw new Error("Blazor Server has already started.");return Yo=new Promise(nr.bind(null,e)),Yo}async function nr(e,t,n){await Jo;const o=await async function(e){if(e.initializers)return await Promise.all(e.initializers.beforeStart.map((t=>t(e)))),new qo(!1,void 0,e.initializers.afterStarted,Bn.Server);const t=await fetch("http://github.com/_blazor/initializers",{method:"GET",credentials:"include",cache:"no-cache"}),n=await t.json(),o=new qo(!0,void 0,void 0,Bn.Server);return await o.importInitializersAsync(n,[e]),o}(Xo);if(Ko=It(document)||"",Go=new bt(Xo.logLevel),Vo=new Oo(e,Ko,Xo,Go),Go.log(yt.Information,"Starting up Blazor server-side application."),vt.reconnect=async()=>!(Vo.didRenderingFail()||!await Vo.reconnect()&&(Go.log(yt.Information,"Reconnection attempt to the circuit was rejected by the server. This may indicate that the associated state is no longer available on the server."),1)),vt.defaultReconnectionHandler=new jo(Go),Xo.reconnectionHandler=Xo.reconnectionHandler||vt.defaultReconnectionHandler,vt._internal.navigationManager.listenForNavigationEvents(Bn.Server,((e,t,n)=>Vo.sendLocationChanged(e,t,n)),((e,t,n,o)=>Vo.sendLocationChanging(e,t,n,o))),vt._internal.forceCloseConnection=()=>Vo.disconnect(),vt._internal.sendJSDataStream=(e,t,n)=>Vo.sendJsDataStream(e,t,n),!await Vo.start())return Go.log(yt.Error,"Failed to start the circuit."),void t();const r=()=>{Vo.sendDisconnectBeacon()};vt.disconnect=r,window.addEventListener("unload",r,{capture:!1,once:!0}),Go.log(yt.Information,"Blazor server-side application started."),o.invokeAfterStartedCallbacks(vt),t()}async function or(){if(!Yo)throw new Error("Cannot start the circuit until Blazor Server has started.");return!(!Vo||Vo.isDisposedOrDisposing())||(Qo?await Qo:(await Yo,(!Vo||!Vo.didRenderingFail())&&(Vo&&Vo.isDisposedOrDisposing()&&(Ko=It(document)||"",Vo=new Oo(Vo.getRootComponentManager(),Ko,Xo,Go)),Qo=Vo.start(),async function(e){await e,Qo===e&&(Qo=void 0)}(Qo),Qo)))}function rr(e){if(Vo&&!Vo.isDisposedOrDisposing())return Vo.updateRootComponents(e);!async function(e){await Yo,await or()&&Vo.updateRootComponents(e)}(e)}function ir(e){return Zo=e,Zo}var sr,ar;const cr=navigator,lr=cr.userAgentData&&cr.userAgentData.brands,hr=lr&&lr.length>0?lr.some((e=>"Google Chrome"===e.brand||"Microsoft Edge"===e.brand||"Chromium"===e.brand)):window.chrome,dr=null!==(ar=null===(sr=cr.userAgentData)||void 0===sr?void 0:sr.platform)&&void 0!==ar?ar:navigator.platform;function ur(e){return 0!==e.debugLevel&&(hr||navigator.userAgent.includes("Firefox"))}let pr,fr,gr,mr,vr,yr,wr;const br=Math.pow(2,32),_r=Math.pow(2,21)-1;let Sr=null;function Cr(e){return fr.getI32(e)}const Er={load:function(e,t){return async function(e,t){const{dotnet:n}=await async function(e){if("undefined"==typeof WebAssembly||!WebAssembly.validate)throw new Error("This browser does not support WebAssembly.");let t="_framework/dotnet.js";if(e.loadBootResource){const n="dotnetjs",o=e.loadBootResource(n,"dotnet.js",t,"","js-module-dotnet");if("string"==typeof o)t=o;else if(o)throw new Error(`For a ${n} resource, custom loaders must supply a URI string.`)}const n=new URL(t,document.baseURI).toString();return await import(n)}(e),o=function(e,t){const n={maxParallelDownloads:1e6,enableDownloadRetry:!1,applicationEnvironment:e.environment},o={...window.Module||{},onConfigLoaded:async n=>{n.environmentVariables||(n.environmentVariables={}),"sharded"===n.globalizationMode&&(n.environmentVariables.__BLAZOR_SHARDED_ICU="1"),vt._internal.getApplicationEnvironment=()=>n.applicationEnvironment,null==t||t(n),wr=await async function(e,t){var n,o,r;if(e.initializers)return await Promise.all(e.initializers.beforeStart.map((t=>t(e)))),new qo(!1,void 0,e.initializers.afterStarted,Bn.WebAssembly);{const i=[e,null!==(o=null===(n=t.resources)||void 0===n?void 0:n.extensions)&&void 0!==o?o:{}],s=new qo(!0,void 0,void 0,Bn.WebAssembly),a=Object.keys((null===(r=null==t?void 0:t.resources)||void 0===r?void 0:r.libraryInitializers)||{});return await s.importInitializersAsync(a,i),s}}(e,n)},onDownloadResourceProgress:Ir,config:n,disableDotnet6Compatibility:!1,out:Tr,err:Rr};return o}(e,t);e.applicationCulture&&n.withApplicationCulture(e.applicationCulture),e.environment&&n.withApplicationEnvironment(e.environment),e.loadBootResource&&n.withResourceLoader(e.loadBootResource),n.withModuleConfig(o),e.configureRuntime&&e.configureRuntime(n),yr=await n.create()}(e,t)},start:function(){return async function(){if(!yr)throw new Error("The runtime must be loaded it gets configured.");const{MONO:t,BINDING:n,Module:o,setModuleImports:r,INTERNAL:i,getConfig:s,invokeLibraryInitializers:a}=yr;gr=o,pr=n,fr=t,vr=i,function(e){const t=dr.match(/^Mac/i)?"Cmd":"Alt";ur(e)&&console.info(`Debugging hotkey: Shift+${t}+D (when application has focus)`),document.addEventListener("keydown",(t=>{t.shiftKey&&(t.metaKey||t.altKey)&&"KeyD"===t.code&&(ur(e)?navigator.userAgent.includes("Firefox")?async function(){const e=await fetch(`_framework/debug?url=${encodeURIComponent(location.href)}&isFirefox=true`);200!==e.status&&console.warn(await e.text())}():hr?function(){const e=document.createElement("a");e.href=`_framework/debug?url=${encodeURIComponent(location.href)}`,e.target="_blank",e.rel="noopener noreferrer",e.click()}():console.error("Currently, only Microsoft Edge (80+), Google Chrome, or Chromium, are supported for debugging."):console.error("Cannot start debugging, because the application was not compiled with debugging enabled."))}))}(s()),vt.runtime=yr,vt._internal.dotNetCriticalError=Rr,r("blazor-internal",{Blazor:{_internal:vt._internal}});const c=await yr.getAssemblyExports("Microsoft.AspNetCore.Components.WebAssembly");return Object.assign(vt._internal,{dotNetExports:{...c.Microsoft.AspNetCore.Components.WebAssembly.Services.DefaultWebAssemblyJSRuntime}}),mr=e.attachDispatcher({beginInvokeDotNetFromJS:(e,t,n,o,r)=>{if(Dr(),!o&&!t)throw new Error("Either assemblyName or dotNetObjectId must have a non null value.");const i=o?o.toString():t;vt._internal.dotNetExports.BeginInvokeDotNet(e?e.toString():null,i,n,r)},endInvokeJSFromDotNet:(e,t,n)=>{vt._internal.dotNetExports.EndInvokeJS(n)},sendByteArray:(e,t)=>{vt._internal.dotNetExports.ReceiveByteArrayFromJS(e,t)},invokeDotNetFromJS:(e,t,n,o)=>(Dr(),vt._internal.dotNetExports.InvokeDotNet(e||null,t,null!=n?n:0,o))}),{invokeLibraryInitializers:a}}()},callEntryPoint:async function(){try{await yr.runMain(yr.getConfig().mainAssemblyName,[])}catch(e){console.error(e),Bo()}},toUint8Array:function(e){const t=Ar(e),n=Cr(t),o=new Uint8Array(n);return o.set(gr.HEAPU8.subarray(t+4,t+4+n)),o},getArrayLength:function(e){return Cr(Ar(e))},getArrayEntryPtr:function(e,t,n){return Ar(e)+4+t*n},getObjectFieldsBaseAddress:function(e){return e+8},readInt16Field:function(e,t){return n=e+(t||0),fr.getI16(n);var n},readInt32Field:function(e,t){return Cr(e+(t||0))},readUint64Field:function(e,t){return function(e){const t=e>>2,n=gr.HEAPU32[t+1];if(n>_r)throw new Error(`Cannot read uint64 with high order part ${n}, because the result would exceed Number.MAX_SAFE_INTEGER.`);return n*br+gr.HEAPU32[t]}(e+(t||0))},readFloatField:function(e,t){return n=e+(t||0),fr.getF32(n);var n},readObjectField:function(e,t){return Cr(e+(t||0))},readStringField:function(e,t,n){const o=Cr(e+(t||0));if(0===o)return null;if(n){const e=pr.unbox_mono_obj(o);return"boolean"==typeof e?e?"":null:e}return pr.conv_string(o)},readStructField:function(e,t){return e+(t||0)},beginHeapLock:function(){return Dr(),Sr=xr.create(),Sr},invokeWhenHeapUnlocked:function(e){Sr?Sr.enqueuePostReleaseAction(e):e()}};function Ir(e,t){const n=e/t*100;document.documentElement.style.setProperty("--blazor-load-percentage",`${n}%`),document.documentElement.style.setProperty("--blazor-load-percentage-text",`"${Math.floor(n)}%"`)}const kr=["DEBUGGING ENABLED"],Tr=e=>kr.indexOf(e)<0&&console.log(e),Rr=e=>{console.error(e||"(null)"),Bo()};function Ar(e){return e+12}function Dr(){if(Sr)throw new Error("Assertion failed - heap is currently locked")}class xr{enqueuePostReleaseAction(e){this.postReleaseActions||(this.postReleaseActions=[]),this.postReleaseActions.push(e)}release(){var e;if(Sr!==this)throw new Error("Trying to release a lock which isn't current");for(vr.mono_wasm_gc_unlock(),Sr=null;null===(e=this.postReleaseActions)||void 0===e?void 0:e.length;)this.postReleaseActions.shift()(),Dr()}static create(){return vr.mono_wasm_gc_lock(),new xr}}class Nr{constructor(e){this.batchAddress=e,this.arrayRangeReader=Pr,this.arrayBuilderSegmentReader=Mr,this.diffReader=Ur,this.editReader=Lr,this.frameReader=Br}updatedComponents(){return Zo.readStructField(this.batchAddress,0)}referenceFrames(){return Zo.readStructField(this.batchAddress,Pr.structLength)}disposedComponentIds(){return Zo.readStructField(this.batchAddress,2*Pr.structLength)}disposedEventHandlerIds(){return Zo.readStructField(this.batchAddress,3*Pr.structLength)}updatedComponentsEntry(e,t){return Or(e,t,Ur.structLength)}referenceFramesEntry(e,t){return Or(e,t,Br.structLength)}disposedComponentIdsEntry(e,t){const n=Or(e,t,4);return Zo.readInt32Field(n)}disposedEventHandlerIdsEntry(e,t){const n=Or(e,t,8);return Zo.readUint64Field(n)}}const Pr={structLength:8,values:e=>Zo.readObjectField(e,0),count:e=>Zo.readInt32Field(e,4)},Mr={structLength:12,values:e=>{const t=Zo.readObjectField(e,0),n=Zo.getObjectFieldsBaseAddress(t);return Zo.readObjectField(n,0)},offset:e=>Zo.readInt32Field(e,4),count:e=>Zo.readInt32Field(e,8)},Ur={structLength:4+Mr.structLength,componentId:e=>Zo.readInt32Field(e,0),edits:e=>Zo.readStructField(e,4),editsEntry:(e,t)=>Or(e,t,Lr.structLength)},Lr={structLength:20,editType:e=>Zo.readInt32Field(e,0),siblingIndex:e=>Zo.readInt32Field(e,4),newTreeIndex:e=>Zo.readInt32Field(e,8),moveToSiblingIndex:e=>Zo.readInt32Field(e,8),removedAttributeName:e=>Zo.readStringField(e,16)},Br={structLength:36,frameType:e=>Zo.readInt16Field(e,4),subtreeLength:e=>Zo.readInt32Field(e,8),elementReferenceCaptureId:e=>Zo.readStringField(e,16),componentId:e=>Zo.readInt32Field(e,12),elementName:e=>Zo.readStringField(e,16),textContent:e=>Zo.readStringField(e,16),markupContent:e=>Zo.readStringField(e,16),attributeName:e=>Zo.readStringField(e,16),attributeValue:e=>Zo.readStringField(e,24,!0),attributeEventHandlerId:e=>Zo.readUint64Field(e,8)};function Or(e,t,n){return Zo.getArrayEntryPtr(e,t,n)}class Fr{constructor(e){this.componentManager=e}resolveRegisteredElement(e){const t=Number.parseInt(e);if(!Number.isNaN(t))return H(this.componentManager.resolveRootComponent(t))}getParameterValues(e){return this.componentManager.initialComponents[e].parameterValues}getParameterDefinitions(e){return this.componentManager.initialComponents[e].parameterDefinitions}getTypeName(e){return this.componentManager.initialComponents[e].typeName}getAssembly(e){return this.componentManager.initialComponents[e].assembly}getCount(){return this.componentManager.initialComponents.length}}let $r,Hr,Wr,jr,zr,qr=!1,Jr=!1,Kr=!0,Vr=!1;const Xr=new Promise((e=>{zr=e}));let Gr;const Yr=new Promise((e=>{Gr=e}));let Qr;function Zr(e){if(void 0!==jr)throw new Error("Blazor WebAssembly has already started.");return jr=new Promise(ei.bind(null,e)),jr}async function ei(e,t,n){(function(){if(window.parent!==window&&!window.opener&&window.frameElement){const e=window.sessionStorage&&window.sessionStorage["Microsoft.AspNetCore.Components.WebAssembly.Authentication.CachedAuthSettings"],t=e&&JSON.parse(e);return t&&t.redirect_uri&&location.href.startsWith(t.redirect_uri)}return!1})()&&await new Promise((()=>{}));const o=ti();!function(e){const t=D;D=(e,n,o)=>{((e,t,n)=>{const o=De(e);(null==o?void 0:o.eventDelegator.getHandler(t))&&Er.invokeWhenHeapUnlocked(n)})(e,n,(()=>t(e,n,o)))}}(),vt._internal.applyHotReload=(e,t,n,o)=>{mr.invokeDotNetStaticMethod("Microsoft.AspNetCore.Components.WebAssembly","ApplyHotReloadDelta",e,t,n,o)},vt._internal.getApplyUpdateCapabilities=()=>mr.invokeDotNetStaticMethod("Microsoft.AspNetCore.Components.WebAssembly","GetApplyUpdateCapabilities"),vt._internal.invokeJSFromDotNet=oi,vt._internal.invokeJSJson=ri,vt._internal.endInvokeDotNetFromJS=ii,vt._internal.receiveWebAssemblyDotNetDataStream=si,vt._internal.receiveByteArray=ai;const r=ir(Er);vt.platform=r,vt._internal.renderBatch=(e,t)=>{const n=Er.beginHeapLock();try{xe(e,new Nr(t))}finally{n.release()}},vt._internal.navigationManager.listenForNavigationEvents(Bn.WebAssembly,(async(e,t,n)=>{await mr.invokeDotNetStaticMethodAsync("Microsoft.AspNetCore.Components.WebAssembly","NotifyLocationChanged",e,t,n)}),(async(e,t,n,o)=>{const r=await mr.invokeDotNetStaticMethodAsync("Microsoft.AspNetCore.Components.WebAssembly","NotifyLocationChangingAsync",t,n,o);vt._internal.navigationManager.endLocationChanging(e,r)}));const i=new Fr(e);let s;vt._internal.registeredComponents={getRegisteredComponentsCount:()=>i.getCount(),getAssembly:e=>i.getAssembly(e),getTypeName:e=>i.getTypeName(e),getParameterDefinitions:e=>i.getParameterDefinitions(e)||"",getParameterValues:e=>i.getParameterValues(e)||""},vt._internal.getPersistedState=()=>kt(document,Ct)||"",vt._internal.getInitialComponentsUpdate=()=>Yr,vt._internal.updateRootComponents=e=>{var t;return null===(t=vt._internal.dotNetExports)||void 0===t?void 0:t.UpdateRootComponentsCore(e)},vt._internal.endUpdateRootComponents=t=>{var n;return null===(n=e.onAfterUpdateRootComponents)||void 0===n?void 0:n.call(e,t)},vt._internal.attachRootComponentToElement=(e,t,n)=>{const o=i.resolveRegisteredElement(e);o?Ae(n,o,t,!1):function(e,t,n){const o="::before";let r=!1;if(e.endsWith("::after"))e=e.slice(0,-7),r=!0;else if(e.endsWith(o))throw new Error(`The '${o}' selector is not supported.`);const i=w(e)||document.querySelector(e);if(!i)throw new Error(`Could not find any element matching selector '${e}'.`);Ae(n,W(i,!0),t,r)}(e,t,n)};try{await o,s=await r.start()}catch(e){throw new Error(`Failed to start platform. Reason: ${e}`)}r.callEntryPoint(),wr.invokeAfterStartedCallbacks(vt),Jr=!0,t()}function ti(){return null!=Wr||(Wr=(async()=>{await Hr;const e=null!=$r?$r:{},t=null==$r?void 0:$r.configureRuntime;e.configureRuntime=e=>{null==t||t(e),Vr&&e.withEnvironmentVariable("__BLAZOR_WEBASSEMBLY_WAIT_FOR_ROOT_COMPONENTS","true")},await Er.load(e,zr),qr=!0})()),Wr}function ni(){return qr}function oi(t,n,o,r){const i=Er.readStringField(t,0),s=Er.readInt32Field(t,4),a=Er.readStringField(t,8),c=Er.readUint64Field(t,20);if(null!==a){const e=Er.readUint64Field(t,12);if(0!==e)return mr.beginInvokeJSFromDotNet(e,i,a,s,c),0;{const e=mr.invokeJSFromDotNet(i,a,s,c);return null===e?0:pr.js_string_to_mono_string(e)}}{const t=e.findJSFunction(i,c).call(null,n,o,r);switch(s){case e.JSCallResultType.Default:return t;case e.JSCallResultType.JSObjectReference:return e.createJSObjectReference(t).__jsObjectId;case e.JSCallResultType.JSStreamReference:{const n=e.createJSStreamReference(t),o=JSON.stringify(n);return pr.js_string_to_mono_string(o)}case e.JSCallResultType.JSVoidResult:return null;default:throw new Error(`Invalid JS call result type '${s}'.`)}}}function ri(e,t,n,o,r){return 0!==r?(mr.beginInvokeJSFromDotNet(r,e,o,n,t),null):mr.invokeJSFromDotNet(e,o,n,t)}function ii(e,t,n){mr.endInvokeDotNetFromJS(e,t,n)}function si(e,t,n,o){!function(e,t,n,o,r){let i=mt.get(t);if(!i){const n=new ReadableStream({start(e){mt.set(t,e),i=e}});e.supplyDotNetStream(t,n)}r?(i.error(r),mt.delete(t)):0===o?(i.close(),mt.delete(t)):i.enqueue(n.length===o?n:n.subarray(0,o))}(mr,e,t,n,o)}function ai(e,t){mr.receiveByteArray(e,t)}function ci(e,t){t.namespaceURI?e.setAttributeNS(t.namespaceURI,t.name,t.value):e.setAttribute(t.name,t.value)}Hr=new Promise((e=>{Qr=e}));const li="data-permanent";var hi,di;!function(e){e[e.None=0]="None",e[e.Some=1]="Some",e[e.Infinite=2]="Infinite"}(hi||(hi={})),function(e){e.Keep="keep",e.Update="update",e.Insert="insert",e.Delete="delete"}(di||(di={}));class ui{static create(e,t,n){return 0===t&&n===e.length?e:new ui(e,t,n)}constructor(e,t,n){this.source=e,this.startIndex=t,this.length=n}item(e){return this.source.item(e+this.startIndex)}forEach(e,t){for(let t=0;t=n&&s>=o&&r(e.item(i),t.item(s))===hi.None;)i--,s--,a++;return a}(e,t,o,o,n),i=function(e){var t;const n=[];let o=e.length-1,r=(null===(t=e[o])||void 0===t?void 0:t.length)-1;for(;o>0||r>0;){const t=0===o?di.Insert:0===r?di.Delete:e[o][r];switch(n.unshift(t),t){case di.Keep:case di.Update:o--,r--;break;case di.Insert:r--;break;case di.Delete:o--}}return n}(function(e,t,n){const o=[],r=[],i=e.length,s=t.length;if(0===i&&0===s)return[];for(let e=0;e<=i;e++)(o[e]=Array(s+1))[0]=e,r[e]=Array(s+1);const a=o[0];for(let e=1;e<=s;e++)a[e]=e;for(let a=1;a<=i;a++)for(let i=1;i<=s;i++){const s=n(e.item(a-1),t.item(i-1)),c=o[a-1][i]+1,l=o[a][i-1]+1;let h;switch(s){case hi.None:h=o[a-1][i-1];break;case hi.Some:h=o[a-1][i-1]+1;break;case hi.Infinite:h=Number.MAX_VALUE}h{history.pushState(null,"",e),Ui(e,!0)}))}function Pi(e){Oe()||Ui(location.href,!1)}function Mi(e){var t,n,o,r,i;if(Oe()||e.defaultPrevented)return;const s=e.target;if(s instanceof HTMLFormElement){if(!function(e){const t=e.getAttribute("data-enhance");return"string"==typeof t&&""===t||"true"===(null==t?void 0:t.toLowerCase())}(s))return;const a=(null===(t=e.submitter)||void 0===t?void 0:t.getAttribute("formmethod"))||s.method;if("dialog"===a)return void console.warn('A form cannot be enhanced when its method is "dialog".');const c=(null===(n=e.submitter)||void 0===n?void 0:n.getAttribute("formtarget"))||s.target;if(""!==c&&"_self"!==c)return void console.warn('A form cannot be enhanced when its target is different from the default value "_self".');e.preventDefault();const l=new URL((null===(o=e.submitter)||void 0===o?void 0:o.getAttribute("formaction"))||s.action,document.baseURI),h={method:a},d=new FormData(s),u=null===(r=e.submitter)||void 0===r?void 0:r.getAttribute("name"),p=e.submitter.getAttribute("value");u&&p&&d.append(u,p);const f=new URLSearchParams(d).toString();if("get"===h.method)l.search=f,history.pushState(null,"",l.toString());else{const t=(null===(i=e.submitter)||void 0===i?void 0:i.getAttribute("formenctype"))||s.enctype;"multipart/form-data"===t?h.body=d:(h.body=f,h.headers={"content-type":t,accept:Ii})}Ui(l.toString(),!1,h)}}async function Ui(e,t,n){Ri=!0,null==ki||ki.abort(),function(e,t){null==ke||ke(e,t)}(e,t),ki=new AbortController;const o=ki.signal,r=fetch(e,Object.assign({signal:o,mode:"no-cors",headers:{accept:Ii}},n));let i=null;if(await async function(e,t,n,o){let r;try{if(r=await e,!r.body)return void n(r,"");const t=r.headers.get("ssr-framing");if(!t){const e=await r.text();return void n(r,e)}let o=!0;await r.body.pipeThrough(new TextDecoderStream).pipeThrough(function(e){let t="";return new TransformStream({transform(n,o){if(t+=n,t.indexOf(e,t.length-n.length-e.length)>=0){const n=t.split(e);n.slice(0,-1).forEach((e=>o.enqueue(e))),t=n[n.length-1]}},flush(e){e.enqueue(t)}})}(`\x3c!--${t}--\x3e`)).pipeTo(new WritableStream({write(e){o?(o=!1,n(r,e)):(e=>{const t=document.createRange().createContextualFragment(e);for(;t.firstChild;)document.body.appendChild(t.firstChild)})(e)}}))}catch(e){if("AbortError"===e.name&&t.aborted)return;throw e}}(r,o,((t,o)=>{const r=!(null==n?void 0:n.method)||"get"===n.method,s=t.status>=200&&t.status<300;if("opaque"===t.type){if(r)return void Bi(e);throw new Error("Enhanced navigation does not support making a non-GET request to an endpoint that redirects to an external origin. Avoid enabling enhanced navigation for form posts that may perform external redirections.")}if(s&&"allow"!==t.headers.get("blazor-enhanced-nav")){if(r)return void Bi(e);throw new Error("Enhanced navigation does not support making a non-GET request to a non-Blazor endpoint. Avoid enabling enhanced navigation for forms that post to a non-Blazor endpoint.")}t.redirected&&(r?history.replaceState(null,"",t.url):history.pushState(null,"",t.url),e=t.url);const a=t.headers.get("blazor-enhanced-nav-redirect-location");if(a)return void location.replace(a);t.redirected||r||!s||(function(e){const t=new URL(e.url),n=new URL(Ai);return t.protocol===n.protocol&&t.host===n.host&&t.port===n.port&&t.pathname===n.pathname}(t)?location.href!==Ai&&history.pushState(null,"",Ai):i=`Cannot perform enhanced form submission that changes the URL (except via a redirection), because then back/forward would not work. Either remove this form's 'action' attribute, or change its method to 'get', or do not mark it as enhanced.\nOld URL: ${location.href}\nNew URL: ${t.url}`),Ai=t.url;const c=t.headers.get("content-type");if((null==c?void 0:c.startsWith("text/html"))&&o){const e=(new DOMParser).parseFromString(o,"text/html");fi(document,e),Ti.documentUpdated()}else(null==c?void 0:c.startsWith("text/"))&&o?Li(o):s||o?r?Bi(e):Li(`Error: ${n.method} request to ${e} returned non-HTML content of type ${c||"unspecified"}.`):Li(`Error: ${t.status} ${t.statusText}`)})),!o.aborted){const t=e.indexOf("#");if(t>=0){const n=e.substring(t+1),o=document.getElementById(n);null==o||o.scrollIntoView()}if(Ri=!1,Ti.enhancedNavigationCompleted(),i)throw new Error(i)}}function Li(e){document.documentElement.textContent=e;const t=document.documentElement.style;t.fontFamily="consolas, monospace",t.whiteSpace="pre-wrap",t.padding="1rem"}function Bi(e){history.replaceState(null,"",e+"?"),location.replace(e)}let Oi,Fi=!0;class $i extends HTMLElement{connectedCallback(){var e;const t=this.parentNode;null===(e=t.parentNode)||void 0===e||e.removeChild(t),t.childNodes.forEach((e=>{if(e instanceof HTMLTemplateElement){const t=e.getAttribute("blazor-component-id");if(t)"true"!==e.getAttribute("enhanced-nav")&&ki||function(e,t){const n=function(e){const t=`bl:${e}`,n=document.createNodeIterator(document,NodeFilter.SHOW_COMMENT);let o=null;for(;(o=n.nextNode())&&o.textContent!==t;);if(!o)return null;const r=`/bl:${e}`;let i=null;for(;(i=n.nextNode())&&i.textContent!==r;);return i?{startMarker:o,endMarker:i}:null}(e);if(n){const{startMarker:e,endMarker:o}=n;if(Fi)fi({startExclusive:e,endExclusive:o},t);else{const n=o.parentNode,r=new Range;for(r.setStart(e,e.textContent.length),r.setEnd(o,0),r.deleteContents();t.childNodes[0];)n.insertBefore(t.childNodes[0],o)}Oi.documentUpdated()}}(t,e.content);else switch(e.getAttribute("type")){case"redirection":const t=Le(e.content.textContent),n="form-post"===e.getAttribute("from");"true"===e.getAttribute("enhanced")&&Pe(t)?(n?history.pushState(null,"",t):history.replaceState(null,"",t),Ui(t,!1)):n?location.assign(t):location.replace(t);break;case"error":Li(e.content.textContent||"Error")}}}))}}class Hi{constructor(e){var t;this._circuitInactivityTimeoutMs=e,this._rootComponentsBySsrComponentId=new Map,this._seenDescriptors=new Set,this._pendingOperationBatches={},this._nextOperationBatchId=1,this._nextSsrComponentId=1,this._didWebAssemblyFailToLoadQuickly=!1,this._isComponentRefreshPending=!1,this.initialComponents=[],t=()=>{this.rootComponentsMayRequireRefresh()},E.push(t)}onAfterRenderBatch(e){e===Bn.Server&&this.circuitMayHaveNoRootComponents()}onDocumentUpdated(){this.rootComponentsMayRequireRefresh()}onEnhancedNavigationCompleted(){this.rootComponentsMayRequireRefresh()}registerComponent(e){if(this._seenDescriptors.has(e))return;"auto"!==e.type&&"webassembly"!==e.type||this.startLoadingWebAssemblyIfNotStarted();const t=this._nextSsrComponentId++;this._seenDescriptors.add(e),this._rootComponentsBySsrComponentId.set(t,{descriptor:e,ssrComponentId:t})}unregisterComponent(e){this._seenDescriptors.delete(e.descriptor),this._rootComponentsBySsrComponentId.delete(e.ssrComponentId),this.circuitMayHaveNoRootComponents()}async startLoadingWebAssemblyIfNotStarted(){if(void 0!==Wr)return;Vr=!0;const e=ti();setTimeout((()=>{ni()||this.onWebAssemblyFailedToLoadQuickly()}),vt._internal.loadWebAssemblyQuicklyTimeout);const t=await Xr;(function(e){if(!e.cacheBootResources)return!1;const t=Wi(e);if(!t)return!1;const n=window.localStorage.getItem(t.key);return t.value===n})(t)||this.onWebAssemblyFailedToLoadQuickly(),await e,function(e){const t=Wi(e);t&&window.localStorage.setItem(t.key,t.value)}(t),this.rootComponentsMayRequireRefresh()}onWebAssemblyFailedToLoadQuickly(){this._didWebAssemblyFailToLoadQuickly||(this._didWebAssemblyFailToLoadQuickly=!0,this.rootComponentsMayRequireRefresh())}startCircutIfNotStarted(){return void 0===Yo?tr(this):!Vo||Vo.isDisposedOrDisposing()?or():void 0}async startWebAssemblyIfNotStarted(){this.startLoadingWebAssemblyIfNotStarted(),void 0===jr&&await Zr(this)}rootComponentsMayRequireRefresh(){this._isComponentRefreshPending||(this._isComponentRefreshPending=!0,setTimeout((()=>{this._isComponentRefreshPending=!1,this.refreshRootComponents(this._rootComponentsBySsrComponentId.values())}),0))}circuitMayHaveNoRootComponents(){if(this.rendererHasExistingOrPendingComponents(Bn.Server,"server","auto"))return clearTimeout(this._circuitInactivityTimeoutId),void(this._circuitInactivityTimeoutId=void 0);void 0===this._circuitInactivityTimeoutId&&(this._circuitInactivityTimeoutId=setTimeout((()=>{this.rendererHasExistingOrPendingComponents(Bn.Server,"server","auto")||(async function(){await(null==Vo?void 0:Vo.dispose())}(),this._circuitInactivityTimeoutId=void 0)}),this._circuitInactivityTimeoutMs))}rendererHasComponents(e){const t=De(e);return void 0!==t&&t.getRootComponentCount()>0}rendererHasExistingOrPendingComponents(e,...t){if(this.rendererHasComponents(e))return!0;for(const{descriptor:{type:n},assignedRendererId:o}of this._rootComponentsBySsrComponentId.values()){if(o===e)return!0;if(void 0===o&&-1!==t.indexOf(n))return!0}return!1}refreshRootComponents(e){const t=new Map;for(const n of e){const e=this.determinePendingOperation(n);if(!e)continue;const o=n.assignedRendererId;if(!o)throw new Error("Descriptors must be assigned a renderer ID before getting used as root components");let r=t.get(o);r||(r=[],t.set(o,r)),r.push(e)}for(const[e,n]of t){const t={batchId:this._nextOperationBatchId++,operations:n};this._pendingOperationBatches[t.batchId]=t;const o=JSON.stringify(t);e===Bn.Server?rr(o):this.updateWebAssemblyRootComponents(o)}}updateWebAssemblyRootComponents(e){Kr?(Gr(e),Kr=!1):function(e){if(!jr)throw new Error("Blazor WebAssembly has not started.");if(!vt._internal.updateRootComponents)throw new Error("Blazor WebAssembly has not initialized.");Jr?vt._internal.updateRootComponents(e):async function(e){if(await jr,!vt._internal.updateRootComponents)throw new Error("Blazor WebAssembly has not initialized.");vt._internal.updateRootComponents(e)}(e)}(e)}resolveRendererIdForDescriptor(e){switch("auto"===e.type?this.getAutoRenderMode():e.type){case"server":return this.startCircutIfNotStarted(),Bn.Server;case"webassembly":return this.startWebAssemblyIfNotStarted(),Bn.WebAssembly;case null:return null}}getAutoRenderMode(){return this.rendererHasExistingOrPendingComponents(Bn.WebAssembly,"webassembly")?"webassembly":this.rendererHasExistingOrPendingComponents(Bn.Server,"server")?"server":ni()?"webassembly":this._didWebAssemblyFailToLoadQuickly?"server":null}determinePendingOperation(e){if(t=e.descriptor,document.contains(t.start)){if(void 0===e.assignedRendererId){if(Ri||"loading"===document.readyState)return null;const t=this.resolveRendererIdForDescriptor(e.descriptor);return null===t?null:T(t)?(be(e.descriptor.start,!0),e.assignedRendererId=t,e.uniqueIdAtLastUpdate=e.descriptor.uniqueId,{type:"add",ssrComponentId:e.ssrComponentId,marker:Ut(e.descriptor)}):null}return T(e.assignedRendererId)?e.uniqueIdAtLastUpdate===e.descriptor.uniqueId?null:(e.uniqueIdAtLastUpdate=e.descriptor.uniqueId,{type:"update",ssrComponentId:e.ssrComponentId,marker:Ut(e.descriptor)}):null}return e.hasPendingRemoveOperation?null:void 0===e.assignedRendererId?(this.unregisterComponent(e),null):T(e.assignedRendererId)?(be(e.descriptor.start,!1),e.hasPendingRemoveOperation=!0,{type:"remove",ssrComponentId:e.ssrComponentId}):null;var t}resolveRootComponent(e){const t=this._rootComponentsBySsrComponentId.get(e);if(!t)throw new Error(`Could not resolve a root component with SSR component ID '${e}'.`);return t.descriptor}onAfterUpdateRootComponents(e){const t=this._pendingOperationBatches[e];delete this._pendingOperationBatches[e];for(const e of t.operations)switch(e.type){case"remove":{const t=this._rootComponentsBySsrComponentId.get(e.ssrComponentId);t&&this.unregisterComponent(t);break}}}}function Wi(e){var t;const n=null===(t=e.resources)||void 0===t?void 0:t.hash,o=e.mainAssemblyName;return n&&o?{key:`blazor-resource-hash:${o}`,value:n}:null}class ji{constructor(){this._eventListeners=new Map}static create(e){const t=new ji;return e.addEventListener=t.addEventListener.bind(t),e.removeEventListener=t.removeEventListener.bind(t),t}addEventListener(e,t){let n=this._eventListeners.get(e);n||(n=new Set,this._eventListeners.set(e,n)),n.add(t)}removeEventListener(e,t){var n;null===(n=this._eventListeners.get(e))||void 0===n||n.delete(t)}dispatchEvent(e,t){const n=this._eventListeners.get(e);if(!n)return;const o={...t,type:e};for(const e of n)e(o)}}let zi,qi=!1;function Ji(e){var t,n,o,r;if(qi)throw new Error("Blazor has already started.");qi=!0,null!==(t=(e=e||{}).logLevel)&&void 0!==t||(e.logLevel=yt.Error),vt._internal.loadWebAssemblyQuicklyTimeout=3e3,vt._internal.isBlazorWeb=!0,vt._internal.hotReloadApplied=()=>{Me()&&Ue(location.href,!0)},zi=new Hi(null!==(o=null===(n=null==e?void 0:e.ssr)||void 0===n?void 0:n.circuitInactivityTimeoutMs)&&void 0!==o?o:2e3);const i=ji.create(vt),s={documentUpdated:()=>{zi.onDocumentUpdated(),i.dispatchEvent("enhancedload",{})},enhancedNavigationCompleted(){zi.onEnhancedNavigationCompleted()}};return pi=zi,function(e,t){Oi=t,(null==e?void 0:e.disableDomPreservation)&&(Fi=!1),customElements.define("blazor-ssr-end",$i)}(null==e?void 0:e.ssr,s),(null===(r=null==e?void 0:e.ssr)||void 0===r?void 0:r.disableDomPreservation)||Di(s),"loading"===document.readyState?document.addEventListener("DOMContentLoaded",Ki.bind(null,e)):Ki(e),Promise.resolve()}function Ki(e){const t=Fo((null==e?void 0:e.circuit)||{});e.circuit=t;const n=async function(e,t){var n;const o=kt(document,Et,"initializers");if(!o)return new qo(!1,t);const r=null!==(n=JSON.parse(atob(o)))&&void 0!==n?n:[],i=new qo(!1,t);return await i.importInitializersAsync(r,[e]),i}(e,new bt(t.logLevel));er(Vi(n,t)),function(e){if($r)throw new Error("WebAssembly options have already been configured.");!async function(e){const t=await e;$r=t,Qr()}(e)}(Vi(n,(null==e?void 0:e.webAssembly)||{})),function(e){const t=bi(document);for(const e of t)null==pi||pi.registerComponent(e)}(),zi.onDocumentUpdated(),async function(e){const t=await e;await t.invokeAfterStartedCallbacks(vt)}(n)}async function Vi(e,t){return await e,t}vt.start=Ji,window.DotNet=e,document&&document.currentScript&&"false"!==document.currentScript.getAttribute("autostart")&&Ji()})()})(); \ No newline at end of file +(()=>{var e={778:()=>{},77:()=>{},203:()=>{},200:()=>{},628:()=>{},321:()=>{}},t={};function n(o){var r=t[o];if(void 0!==r)return r.exports;var i=t[o]={exports:{}};return e[o](i,i.exports,n),i.exports}n.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),(()=>{"use strict";var e,t,o;!function(e){const t=[],n="__jsObjectId",o="__dotNetObject",r="__byte[]",i="__dotNetStream",s="__jsStreamReferenceLength";let a,c;class l{constructor(e){this._jsObject=e,this._cachedFunctions=new Map}findFunction(e){const t=this._cachedFunctions.get(e);if(t)return t;let n,o=this._jsObject;if(e.split(".").forEach((t=>{if(!(t in o))throw new Error(`Could not find '${e}' ('${t}' was undefined).`);n=o,o=o[t]})),o instanceof Function)return o=o.bind(n),this._cachedFunctions.set(e,o),o;throw new Error(`The value '${e}' is not a function.`)}getWrappedObject(){return this._jsObject}}const h={0:new l(window)};h[0]._cachedFunctions.set("import",(e=>("string"==typeof e&&e.startsWith("./")&&(e=new URL(e.substr(2),document.baseURI).toString()),import(e))));let d,u=1;function p(e){t.push(e)}function f(e){if(e&&"object"==typeof e){h[u]=new l(e);const t={[n]:u};return u++,t}throw new Error(`Cannot create a JSObjectReference from the value '${e}'.`)}function g(e){let t=-1;if(e instanceof ArrayBuffer&&(e=new Uint8Array(e)),e instanceof Blob)t=e.size;else{if(!(e.buffer instanceof ArrayBuffer))throw new Error("Supplied value is not a typed array or blob.");if(void 0===e.byteLength)throw new Error(`Cannot create a JSStreamReference from the value '${e}' as it doesn't have a byteLength.`);t=e.byteLength}const o={[s]:t};try{const t=f(e);o[n]=t[n]}catch(t){throw new Error(`Cannot create a JSStreamReference from the value '${e}'.`)}return o}function m(e,n){c=e;const o=n?JSON.parse(n,((e,n)=>t.reduce(((t,n)=>n(e,t)),n))):null;return c=void 0,o}function v(){if(void 0===a)throw new Error("No call dispatcher has been set.");if(null===a)throw new Error("There are multiple .NET runtimes present, so a default dispatcher could not be resolved. Use DotNetObject to invoke .NET instance methods.");return a}e.attachDispatcher=function(e){const t=new y(e);return void 0===a?a=t:a&&(a=null),t},e.attachReviver=p,e.invokeMethod=function(e,t,...n){return v().invokeDotNetStaticMethod(e,t,...n)},e.invokeMethodAsync=function(e,t,...n){return v().invokeDotNetStaticMethodAsync(e,t,...n)},e.createJSObjectReference=f,e.createJSStreamReference=g,e.disposeJSObjectReference=function(e){const t=e&&e[n];"number"==typeof t&&_(t)},function(e){e[e.Default=0]="Default",e[e.JSObjectReference=1]="JSObjectReference",e[e.JSStreamReference=2]="JSStreamReference",e[e.JSVoidResult=3]="JSVoidResult"}(d=e.JSCallResultType||(e.JSCallResultType={}));class y{constructor(e){this._dotNetCallDispatcher=e,this._byteArraysToBeRevived=new Map,this._pendingDotNetToJSStreams=new Map,this._pendingAsyncCalls={},this._nextAsyncCallId=1}getDotNetCallDispatcher(){return this._dotNetCallDispatcher}invokeJSFromDotNet(e,t,n,o){const r=m(this,t),i=I(b(e,o)(...r||[]),n);return null==i?null:T(this,i)}beginInvokeJSFromDotNet(e,t,n,o,r){const i=new Promise((e=>{const o=m(this,n);e(b(t,r)(...o||[]))}));e&&i.then((t=>T(this,[e,!0,I(t,o)]))).then((t=>this._dotNetCallDispatcher.endInvokeJSFromDotNet(e,!0,t)),(t=>this._dotNetCallDispatcher.endInvokeJSFromDotNet(e,!1,JSON.stringify([e,!1,w(t)]))))}endInvokeDotNetFromJS(e,t,n){const o=t?m(this,n):new Error(n);this.completePendingCall(parseInt(e,10),t,o)}invokeDotNetStaticMethod(e,t,...n){return this.invokeDotNetMethod(e,t,null,n)}invokeDotNetStaticMethodAsync(e,t,...n){return this.invokeDotNetMethodAsync(e,t,null,n)}invokeDotNetMethod(e,t,n,o){if(this._dotNetCallDispatcher.invokeDotNetFromJS){const r=T(this,o),i=this._dotNetCallDispatcher.invokeDotNetFromJS(e,t,n,r);return i?m(this,i):null}throw new Error("The current dispatcher does not support synchronous calls from JS to .NET. Use invokeDotNetMethodAsync instead.")}invokeDotNetMethodAsync(e,t,n,o){if(e&&n)throw new Error(`For instance method calls, assemblyName should be null. Received '${e}'.`);const r=this._nextAsyncCallId++,i=new Promise(((e,t)=>{this._pendingAsyncCalls[r]={resolve:e,reject:t}}));try{const i=T(this,o);this._dotNetCallDispatcher.beginInvokeDotNetFromJS(r,e,t,n,i)}catch(e){this.completePendingCall(r,!1,e)}return i}receiveByteArray(e,t){this._byteArraysToBeRevived.set(e,t)}processByteArray(e){const t=this._byteArraysToBeRevived.get(e);return t?(this._byteArraysToBeRevived.delete(e),t):null}supplyDotNetStream(e,t){if(this._pendingDotNetToJSStreams.has(e)){const n=this._pendingDotNetToJSStreams.get(e);this._pendingDotNetToJSStreams.delete(e),n.resolve(t)}else{const n=new E;n.resolve(t),this._pendingDotNetToJSStreams.set(e,n)}}getDotNetStreamPromise(e){let t;if(this._pendingDotNetToJSStreams.has(e))t=this._pendingDotNetToJSStreams.get(e).streamPromise,this._pendingDotNetToJSStreams.delete(e);else{const n=new E;this._pendingDotNetToJSStreams.set(e,n),t=n.streamPromise}return t}completePendingCall(e,t,n){if(!this._pendingAsyncCalls.hasOwnProperty(e))throw new Error(`There is no pending async call with ID ${e}.`);const o=this._pendingAsyncCalls[e];delete this._pendingAsyncCalls[e],t?o.resolve(n):o.reject(n)}}function w(e){return e instanceof Error?`${e.message}\n${e.stack}`:e?e.toString():"null"}function b(e,t){const n=h[t];if(n)return n.findFunction(e);throw new Error(`JS object instance with ID ${t} does not exist (has it been disposed?).`)}function _(e){delete h[e]}e.findJSFunction=b,e.disposeJSObjectReferenceById=_;class S{constructor(e,t){this._id=e,this._callDispatcher=t}invokeMethod(e,...t){return this._callDispatcher.invokeDotNetMethod(null,e,this._id,t)}invokeMethodAsync(e,...t){return this._callDispatcher.invokeDotNetMethodAsync(null,e,this._id,t)}dispose(){this._callDispatcher.invokeDotNetMethodAsync(null,"__Dispose",this._id,null).catch((e=>console.error(e)))}serializeAsArg(){return{[o]:this._id}}}e.DotNetObject=S,p((function(e,t){if(t&&"object"==typeof t){if(t.hasOwnProperty(o))return new S(t[o],c);if(t.hasOwnProperty(n)){const e=t[n],o=h[e];if(o)return o.getWrappedObject();throw new Error(`JS object instance with Id '${e}' does not exist. It may have been disposed.`)}if(t.hasOwnProperty(r)){const e=t[r],n=c.processByteArray(e);if(void 0===n)throw new Error(`Byte array index '${e}' does not exist.`);return n}if(t.hasOwnProperty(i)){const e=t[i],n=c.getDotNetStreamPromise(e);return new C(n)}}return t}));class C{constructor(e){this._streamPromise=e}stream(){return this._streamPromise}async arrayBuffer(){return new Response(await this.stream()).arrayBuffer()}}class E{constructor(){this.streamPromise=new Promise(((e,t)=>{this.resolve=e,this.reject=t}))}}function I(e,t){switch(t){case d.Default:return e;case d.JSObjectReference:return f(e);case d.JSStreamReference:return g(e);case d.JSVoidResult:return null;default:throw new Error(`Invalid JS call result type '${t}'.`)}}let k=0;function T(e,t){k=0,c=e;const n=JSON.stringify(t,R);return c=void 0,n}function R(e,t){if(t instanceof S)return t.serializeAsArg();if(t instanceof Uint8Array){c.getDotNetCallDispatcher().sendByteArray(k,t);const e={[r]:k};return k++,e}return t}}(e||(e={})),function(e){e[e.prependFrame=1]="prependFrame",e[e.removeFrame=2]="removeFrame",e[e.setAttribute=3]="setAttribute",e[e.removeAttribute=4]="removeAttribute",e[e.updateText=5]="updateText",e[e.stepIn=6]="stepIn",e[e.stepOut=7]="stepOut",e[e.updateMarkup=8]="updateMarkup",e[e.permutationListEntry=9]="permutationListEntry",e[e.permutationListEnd=10]="permutationListEnd"}(t||(t={})),function(e){e[e.element=1]="element",e[e.text=2]="text",e[e.attribute=3]="attribute",e[e.component=4]="component",e[e.region=5]="region",e[e.elementReferenceCapture=6]="elementReferenceCapture",e[e.markup=8]="markup",e[e.namedEvent=10]="namedEvent"}(o||(o={}));class r{constructor(e,t){this.componentId=e,this.fieldValue=t}static fromEvent(e,t){const n=t.target;if(n instanceof Element){const t=function(e){return e instanceof HTMLInputElement?e.type&&"checkbox"===e.type.toLowerCase()?{value:e.checked}:{value:e.value}:e instanceof HTMLSelectElement||e instanceof HTMLTextAreaElement?{value:e.value}:null}(n);if(t)return new r(e,t.value)}return null}}const i=new Map,s=new Map,a=[];function c(e){return i.get(e)}function l(e){const t=i.get(e);return(null==t?void 0:t.browserEventName)||e}function h(e,t){e.forEach((e=>i.set(e,t)))}function d(e){const t=[];for(let n=0;ne.selected)).map((e=>e.value))}}{const e=function(e){return!!e&&"INPUT"===e.tagName&&"checkbox"===e.getAttribute("type")}(t);return{value:e?!!t.checked:t.value}}}}),h(["copy","cut","paste"],{createEventArgs:e=>({type:e.type})}),h(["drag","dragend","dragenter","dragleave","dragover","dragstart","drop"],{createEventArgs:e=>{return{...u(t=e),dataTransfer:t.dataTransfer?{dropEffect:t.dataTransfer.dropEffect,effectAllowed:t.dataTransfer.effectAllowed,files:Array.from(t.dataTransfer.files).map((e=>e.name)),items:Array.from(t.dataTransfer.items).map((e=>({kind:e.kind,type:e.type}))),types:t.dataTransfer.types}:null};var t}}),h(["focus","blur","focusin","focusout"],{createEventArgs:e=>({type:e.type})}),h(["keydown","keyup","keypress"],{createEventArgs:e=>{return{key:(t=e).key,code:t.code,location:t.location,repeat:t.repeat,ctrlKey:t.ctrlKey,shiftKey:t.shiftKey,altKey:t.altKey,metaKey:t.metaKey,type:t.type};var t}}),h(["contextmenu","click","mouseover","mouseout","mousemove","mousedown","mouseup","mouseleave","mouseenter","dblclick"],{createEventArgs:e=>u(e)}),h(["error"],{createEventArgs:e=>{return{message:(t=e).message,filename:t.filename,lineno:t.lineno,colno:t.colno,type:t.type};var t}}),h(["loadstart","timeout","abort","load","loadend","progress"],{createEventArgs:e=>{return{lengthComputable:(t=e).lengthComputable,loaded:t.loaded,total:t.total,type:t.type};var t}}),h(["touchcancel","touchend","touchmove","touchenter","touchleave","touchstart"],{createEventArgs:e=>{return{detail:(t=e).detail,touches:d(t.touches),targetTouches:d(t.targetTouches),changedTouches:d(t.changedTouches),ctrlKey:t.ctrlKey,shiftKey:t.shiftKey,altKey:t.altKey,metaKey:t.metaKey,type:t.type};var t}}),h(["gotpointercapture","lostpointercapture","pointercancel","pointerdown","pointerenter","pointerleave","pointermove","pointerout","pointerover","pointerup"],{createEventArgs:e=>{return{...u(t=e),pointerId:t.pointerId,width:t.width,height:t.height,pressure:t.pressure,tiltX:t.tiltX,tiltY:t.tiltY,pointerType:t.pointerType,isPrimary:t.isPrimary};var t}}),h(["wheel","mousewheel"],{createEventArgs:e=>{return{...u(t=e),deltaX:t.deltaX,deltaY:t.deltaY,deltaZ:t.deltaZ,deltaMode:t.deltaMode};var t}}),h(["cancel","close","toggle"],{createEventArgs:()=>({})});const p=["date","datetime-local","month","time","week"],f=new Map;let g,m,v=0;const y={async add(e,t,n){if(!n)throw new Error("initialParameters must be an object, even if empty.");const o="__bl-dynamic-root:"+(++v).toString();f.set(o,e);const r=await S().invokeMethodAsync("AddRootComponent",t,o),i=new _(r,m[t]);return await i.setParameters(n),i}};function w(e){const t=f.get(e);if(t)return f.delete(e),t}class b{invoke(e){return this._callback(e)}setCallback(t){this._selfJSObjectReference||(this._selfJSObjectReference=e.createJSObjectReference(this)),this._callback=t}getJSObjectReference(){return this._selfJSObjectReference}dispose(){this._selfJSObjectReference&&e.disposeJSObjectReference(this._selfJSObjectReference)}}class _{constructor(e,t){this._jsEventCallbackWrappers=new Map,this._componentId=e;for(const e of t)"eventcallback"===e.type&&this._jsEventCallbackWrappers.set(e.name.toLowerCase(),new b)}setParameters(e){const t={},n=Object.entries(e||{}),o=n.length;for(const[e,o]of n){const n=this._jsEventCallbackWrappers.get(e.toLowerCase());n&&o?(n.setCallback(o),t[e]=n.getJSObjectReference()):t[e]=o}return S().invokeMethodAsync("SetRootComponentParameters",this._componentId,o,t)}async dispose(){if(null!==this._componentId){await S().invokeMethodAsync("RemoveRootComponent",this._componentId),this._componentId=null;for(const e of this._jsEventCallbackWrappers.values())e.dispose()}}}function S(){if(!g)throw new Error("Dynamic root components have not been enabled in this application.");return g}const C=new Map,E=[],I=new Map;function k(t,n,o,r){var i,s;if(C.has(t))throw new Error(`Interop methods are already registered for renderer ${t}`);C.set(t,n),o&&r&&Object.keys(o).length>0&&function(t,n,o){if(g)throw new Error("Dynamic root components have already been enabled.");g=t,m=n;for(const[t,r]of Object.entries(o)){const o=e.findJSFunction(t,0);for(const e of r)o(e,n[e])}}(A(t),o,r),null===(s=null===(i=I.get(t))||void 0===i?void 0:i[0])||void 0===s||s.call(i),function(e){for(const t of E)t(e)}(t)}function T(e){return C.has(e)}function R(e,t,n){return D(e,t.eventHandlerId,(()=>A(e).invokeMethodAsync("DispatchEventAsync",t,n)))}function A(e){const t=C.get(e);if(!t)throw new Error(`No interop methods are registered for renderer ${e}`);return t}let D=(e,t,n)=>n();const x=B(["abort","blur","cancel","canplay","canplaythrough","change","close","cuechange","durationchange","emptied","ended","error","focus","load","loadeddata","loadedmetadata","loadend","loadstart","mouseenter","mouseleave","pointerenter","pointerleave","pause","play","playing","progress","ratechange","reset","scroll","seeked","seeking","stalled","submit","suspend","timeupdate","toggle","unload","volumechange","waiting","DOMNodeInsertedIntoDocument","DOMNodeRemovedFromDocument"]),N={submit:!0},P=B(["click","dblclick","mousedown","mousemove","mouseup"]);class M{constructor(e){this.browserRendererId=e,this.afterClickCallbacks=[];const t=++M.nextEventDelegatorId;this.eventsCollectionKey=`_blazorEvents_${t}`,this.eventInfoStore=new U(this.onGlobalEvent.bind(this))}setListener(e,t,n,o){const r=this.getEventHandlerInfosForElement(e,!0),i=r.getHandler(t);if(i)this.eventInfoStore.update(i.eventHandlerId,n);else{const i={element:e,eventName:t,eventHandlerId:n,renderingComponentId:o};this.eventInfoStore.add(i),r.setHandler(t,i)}}getHandler(e){return this.eventInfoStore.get(e)}removeListener(e){const t=this.eventInfoStore.remove(e);if(t){const e=t.element,n=this.getEventHandlerInfosForElement(e,!1);n&&n.removeHandler(t.eventName)}}notifyAfterClick(e){this.afterClickCallbacks.push(e),this.eventInfoStore.addGlobalListener("click")}setStopPropagation(e,t,n){this.getEventHandlerInfosForElement(e,!0).stopPropagation(t,n)}setPreventDefault(e,t,n){this.getEventHandlerInfosForElement(e,!0).preventDefault(t,n)}onGlobalEvent(e){if(!(e.target instanceof Element))return;this.dispatchGlobalEventToAllElements(e.type,e);const t=(n=e.type,s.get(n));var n;t&&t.forEach((t=>this.dispatchGlobalEventToAllElements(t,e))),"click"===e.type&&this.afterClickCallbacks.forEach((t=>t(e)))}dispatchGlobalEventToAllElements(e,t){const n=t.composedPath();let o=n.shift(),i=null,s=!1;const a=Object.prototype.hasOwnProperty.call(x,e);let l=!1;for(;o;){const u=o,p=this.getEventHandlerInfosForElement(u,!1);if(p){const n=p.getHandler(e);if(n&&(h=u,d=t.type,!((h instanceof HTMLButtonElement||h instanceof HTMLInputElement||h instanceof HTMLTextAreaElement||h instanceof HTMLSelectElement)&&Object.prototype.hasOwnProperty.call(P,d)&&h.disabled))){if(!s){const n=c(e);i=(null==n?void 0:n.createEventArgs)?n.createEventArgs(t):{},s=!0}Object.prototype.hasOwnProperty.call(N,t.type)&&t.preventDefault(),R(this.browserRendererId,{eventHandlerId:n.eventHandlerId,eventName:e,eventFieldInfo:r.fromEvent(n.renderingComponentId,t)},i)}p.stopPropagation(e)&&(l=!0),p.preventDefault(e)&&t.preventDefault()}o=a||l?void 0:n.shift()}var h,d}getEventHandlerInfosForElement(e,t){return Object.prototype.hasOwnProperty.call(e,this.eventsCollectionKey)?e[this.eventsCollectionKey]:t?e[this.eventsCollectionKey]=new L:null}}M.nextEventDelegatorId=0;class U{constructor(e){this.globalListener=e,this.infosByEventHandlerId={},this.countByEventName={},a.push(this.handleEventNameAliasAdded.bind(this))}add(e){if(this.infosByEventHandlerId[e.eventHandlerId])throw new Error(`Event ${e.eventHandlerId} is already tracked`);this.infosByEventHandlerId[e.eventHandlerId]=e,this.addGlobalListener(e.eventName)}get(e){return this.infosByEventHandlerId[e]}addGlobalListener(e){if(e=l(e),Object.prototype.hasOwnProperty.call(this.countByEventName,e))this.countByEventName[e]++;else{this.countByEventName[e]=1;const t=Object.prototype.hasOwnProperty.call(x,e);document.addEventListener(e,this.globalListener,t)}}update(e,t){if(Object.prototype.hasOwnProperty.call(this.infosByEventHandlerId,t))throw new Error(`Event ${t} is already tracked`);const n=this.infosByEventHandlerId[e];delete this.infosByEventHandlerId[e],n.eventHandlerId=t,this.infosByEventHandlerId[t]=n}remove(e){const t=this.infosByEventHandlerId[e];if(t){delete this.infosByEventHandlerId[e];const n=l(t.eventName);0==--this.countByEventName[n]&&(delete this.countByEventName[n],document.removeEventListener(n,this.globalListener))}return t}handleEventNameAliasAdded(e,t){if(Object.prototype.hasOwnProperty.call(this.countByEventName,e)){const n=this.countByEventName[e];delete this.countByEventName[e],document.removeEventListener(e,this.globalListener),this.addGlobalListener(t),this.countByEventName[t]+=n-1}}}class L{constructor(){this.handlers={},this.preventDefaultFlags=null,this.stopPropagationFlags=null}getHandler(e){return Object.prototype.hasOwnProperty.call(this.handlers,e)?this.handlers[e]:null}setHandler(e,t){this.handlers[e]=t}removeHandler(e){delete this.handlers[e]}preventDefault(e,t){return void 0!==t&&(this.preventDefaultFlags=this.preventDefaultFlags||{},this.preventDefaultFlags[e]=t),!!this.preventDefaultFlags&&this.preventDefaultFlags[e]}stopPropagation(e,t){return void 0!==t&&(this.stopPropagationFlags=this.stopPropagationFlags||{},this.stopPropagationFlags[e]=t),!!this.stopPropagationFlags&&this.stopPropagationFlags[e]}}function B(e){const t={};return e.forEach((e=>{t[e]=!0})),t}const O=Symbol(),F=Symbol(),$=Symbol();function H(e){const{start:t,end:n}=e,o=t[$];if(o){if(o!==e)throw new Error("The start component comment was already associated with another component descriptor.");return t}const r=t.parentNode;if(!r)throw new Error(`Comment not connected to the DOM ${t.textContent}`);const i=W(r,!0),s=Y(i);t[F]=i,t[$]=e;const a=W(t);if(n){const e=Y(a),o=Array.prototype.indexOf.call(s,a)+1;let r=null;for(;r!==n;){const n=s.splice(o,1)[0];if(!n)throw new Error("Could not find the end component comment in the parent logical node list");n[F]=t,e.push(n),r=n}}return a}function W(e,t){if(O in e)return e;const n=[];if(e.childNodes.length>0){if(!t)throw new Error("New logical elements must start empty, or allowExistingContents must be true");e.childNodes.forEach((t=>{const o=W(t,!0);o[F]=e,n.push(o)}))}return e[O]=n,e}function j(e){const t=Y(e);for(;t.length;)J(e,0)}function z(e,t){const n=document.createComment("!");return q(n,e,t),n}function q(e,t,n){const o=e;let r=e;if(Z(e)){const t=oe(o);if(t!==e){const n=new Range;n.setStartBefore(e),n.setEndAfter(t),r=n.extractContents()}}const i=K(o);if(i){const e=Y(i),t=Array.prototype.indexOf.call(e,o);e.splice(t,1),delete o[F]}const s=Y(t);if(n0;)J(n,0)}const o=n;o.parentNode.removeChild(o)}function K(e){return e[F]||null}function V(e,t){return Y(e)[t]}function X(e){return e[$]||null}function G(e){const t=te(e);return"http://www.w3.org/2000/svg"===t.namespaceURI&&"foreignObject"!==t.tagName}function Y(e){return e[O]}function Q(e){const t=Y(K(e));return t[Array.prototype.indexOf.call(t,e)+1]||null}function Z(e){return O in e}function ee(e,t){const n=Y(e);t.forEach((e=>{e.moveRangeStart=n[e.fromSiblingIndex],e.moveRangeEnd=oe(e.moveRangeStart)})),t.forEach((t=>{const o=document.createComment("marker");t.moveToBeforeMarker=o;const r=n[t.toSiblingIndex+1];r?r.parentNode.insertBefore(o,r):ne(o,e)})),t.forEach((e=>{const t=e.moveToBeforeMarker,n=t.parentNode,o=e.moveRangeStart,r=e.moveRangeEnd;let i=o;for(;i;){const e=i.nextSibling;if(n.insertBefore(i,t),i===r)break;i=e}n.removeChild(t)})),t.forEach((e=>{n[e.toSiblingIndex]=e.moveRangeStart}))}function te(e){if(e instanceof Element||e instanceof DocumentFragment)return e;if(e instanceof Comment)return e.parentNode;throw new Error("Not a valid logical element")}function ne(e,t){if(t instanceof Element||t instanceof DocumentFragment)t.appendChild(e);else{if(!(t instanceof Comment))throw new Error(`Cannot append node because the parent is not a valid logical element. Parent: ${t}`);{const n=Q(t);n?n.parentNode.insertBefore(e,n):ne(e,K(t))}}}function oe(e){if(e instanceof Element||e instanceof DocumentFragment)return e;const t=Q(e);if(t)return t.previousSibling;{const t=K(e);return t instanceof Element||t instanceof DocumentFragment?t.lastChild:oe(t)}}function re(e){return`_bl_${e}`}const ie="__internalId";e.attachReviver(((e,t)=>t&&"object"==typeof t&&Object.prototype.hasOwnProperty.call(t,ie)&&"string"==typeof t[ie]?function(e){const t=`[${re(e)}]`;return document.querySelector(t)}(t[ie]):t));const se="_blazorDeferredValue";function ae(e){e instanceof HTMLOptionElement?de(e):se in e&&he(e,e[se])}function ce(e){return"select-multiple"===e.type}function le(e,t){e.value=t||""}function he(e,t){e instanceof HTMLSelectElement?ce(e)?function(e,t){t||(t=[]);for(let n=0;n{Oe()&&Ne(e,(e=>{Xe(e,!0,!1)}))}))}getRootComponentCount(){return this.rootComponentIds.size}attachRootComponentToLogicalElement(e,t,n){if(we(t))throw new Error(`Root component '${e}' could not be attached because its target element is already associated with a root component`);n&&(t=z(t,Y(t).length)),ye(t,!0),this.attachComponentToElement(e,t),this.rootComponentIds.add(e),fe.add(t)}updateComponent(e,t,n,o){var r;const i=this.childComponentLocations[t];if(!i)throw new Error(`No element is currently associated with component ${t}`);fe.delete(i)&&(j(i),i instanceof Comment&&(i.textContent="!"));const s=null===(r=te(i))||void 0===r?void 0:r.getRootNode(),a=s&&s.activeElement;this.applyEdits(e,t,i,0,n,o),a instanceof HTMLElement&&s&&s.activeElement!==a&&a.focus()}disposeComponent(e){if(this.rootComponentIds.delete(e)){const t=this.childComponentLocations[e];ye(t,!1),!0===t[me]?fe.add(t):j(t)}delete this.childComponentLocations[e]}disposeEventHandler(e){this.eventDelegator.removeListener(e)}attachComponentToElement(e,t){this.childComponentLocations[e]=t}applyEdits(e,n,o,r,i,s){let a,c=0,l=r;const h=e.arrayBuilderSegmentReader,d=e.editReader,u=e.frameReader,p=h.values(i),f=h.offset(i),g=f+h.count(i);for(let i=f;i{const t=document.createElement("script");t.textContent=e.textContent,e.getAttributeNames().forEach((n=>{t.setAttribute(n,e.getAttribute(n))})),e.parentNode.replaceChild(t,e)})),ue.content));var s;let a=0;for(;i.firstChild;)q(i.firstChild,r,a++)}applyAttribute(e,t,n,o){const r=e.frameReader,i=r.attributeName(o),s=r.attributeEventHandlerId(o);if(s){const e=Se(i);return void this.eventDelegator.setListener(n,e,s,t)}const a=r.attributeValue(o);this.setOrRemoveAttributeOrProperty(n,i,a)}insertFrameRange(e,t,n,o,r,i,s){const a=o;for(let a=i;a{et(t,e)})},enableNavigationInterception:function(e){if(void 0!==Ee&&Ee!==e)throw new Error("Only one interactive runtime may enable navigation interception at a time.");Ee=e},setHasLocationChangingListeners:function(e,t){const n=je.get(e);if(!n)throw new Error(`Renderer with ID '${e}' is not listening for navigation events`);n.hasLocationChangingEventListeners=t},endLocationChanging:function(e,t){qe&&e===We&&(qe(t),qe=null)},navigateTo:function(e,t){Ve(e,t,!0)},refresh:function(e){!e&&Me()?Ue(location.href,!0):location.reload()},getBaseURI:()=>document.baseURI,getLocationHref:()=>location.href,scrollToElement:Ke};function Ke(e){const t=document.getElementById(e);return!!t&&(t.scrollIntoView(),!0)}function Ve(e,t,n=!1){const o=Le(e),r=ot();if(t.forceLoad||!Pe(o)||"serverside-fullpageload"===r)!function(e,t){if(location.href===e){const t=e+"?";history.replaceState(null,"",t),location.replace(e)}else t?location.replace(e):location.href=e}(e,t.replaceHistoryEntry);else if("clientside-router"===r)Xe(o,!1,t.replaceHistoryEntry,t.historyEntryState,n);else{if("serverside-enhanced"!==r)throw new Error(`Unsupported page load mechanism: ${r}`);Ue(o,t.replaceHistoryEntry)}}async function Xe(e,t,n,o=void 0,r=!1){if(Qe(),function(e){const t=e.indexOf("#");return t>-1&&location.href.replace(location.hash,"")===e.substring(0,t)}(e))return void function(e,t,n){Ge(e,t,n);const o=e.indexOf("#");o!==e.length-1&&Ke(e.substring(o+1))}(e,n,o);const i=nt();(r||!(null==i?void 0:i.hasLocationChangingEventListeners)||await Ze(e,o,t,i))&&(Re=!0,Ge(e,n,o),await et(t))}function Ge(e,t,n=void 0){t?history.replaceState({userState:n,_index:He},"",e):(He++,history.pushState({userState:n,_index:He},"",e))}function Ye(e){return new Promise((t=>{const n=ze;ze=()=>{ze=n,t()},history.go(e)}))}function Qe(){qe&&(qe(!1),qe=null)}function Ze(e,t,n,o){return new Promise((r=>{Qe(),We++,qe=r,o.locationChanging(We,e,t,n)}))}async function et(e,t){const n=null!=t?t:location.href;await Promise.all(Array.from(je,(async([t,o])=>{var r;T(t)&&await o.locationChanged(n,null===(r=history.state)||void 0===r?void 0:r.userState,e)})))}async function tt(e){var t,n;ze&&"serverside-enhanced"!==ot()&&await ze(e),He=null!==(n=null===(t=history.state)||void 0===t?void 0:t._index)&&void 0!==n?n:0}function nt(){const e=Fe();if(void 0!==e)return je.get(e)}function ot(){return Oe()?"clientside-router":Me()?"serverside-enhanced":window.Blazor._internal.isBlazorWeb?"serverside-fullpageload":"clientside-router"}const rt={focus:function(e,t){if(e instanceof HTMLElement)e.focus({preventScroll:t});else{if(!(e instanceof SVGElement))throw new Error("Unable to focus an invalid element.");if(!e.hasAttribute("tabindex"))throw new Error("Unable to focus an SVG element that does not have a tabindex.");e.focus({preventScroll:t})}},focusBySelector:function(e,t){const n=document.querySelector(e);n&&(n.hasAttribute("tabindex")||(n.tabIndex=-1),n.focus({preventScroll:!0}))}},it={init:function(e,t,n,o=50){const r=at(t);(r||document.documentElement).style.overflowAnchor="none";const i=document.createRange();u(n.parentElement)&&(t.style.display="table-row",n.style.display="table-row");const s=new IntersectionObserver((function(o){o.forEach((o=>{var r;if(!o.isIntersecting)return;i.setStartAfter(t),i.setEndBefore(n);const s=i.getBoundingClientRect().height,a=null===(r=o.rootBounds)||void 0===r?void 0:r.height;o.target===t?e.invokeMethodAsync("OnSpacerBeforeVisible",o.intersectionRect.top-o.boundingClientRect.top,s,a):o.target===n&&n.offsetHeight>0&&e.invokeMethodAsync("OnSpacerAfterVisible",o.boundingClientRect.bottom-o.intersectionRect.bottom,s,a)}))}),{root:r,rootMargin:`${o}px`});s.observe(t),s.observe(n);const a=d(t),c=d(n),{observersByDotNetObjectId:l,id:h}=ct(e);function d(e){const t={attributes:!0},n=new MutationObserver(((n,o)=>{u(e.parentElement)&&(o.disconnect(),e.style.display="table-row",o.observe(e,t)),s.unobserve(e),s.observe(e)}));return n.observe(e,t),n}function u(e){return null!==e&&(e instanceof HTMLTableElement&&""===e.style.display||"table"===e.style.display||e instanceof HTMLTableSectionElement&&""===e.style.display||"table-row-group"===e.style.display)}l[h]={intersectionObserver:s,mutationObserverBefore:a,mutationObserverAfter:c}},dispose:function(e){const{observersByDotNetObjectId:t,id:n}=ct(e),o=t[n];o&&(o.intersectionObserver.disconnect(),o.mutationObserverBefore.disconnect(),o.mutationObserverAfter.disconnect(),e.dispose(),delete t[n])}},st=Symbol();function at(e){return e&&e!==document.body&&e!==document.documentElement?"visible"!==getComputedStyle(e).overflowY?e:at(e.parentElement):null}function ct(e){var t;const n=e._callDispatcher,o=e._id;return null!==(t=n[st])&&void 0!==t||(n[st]={}),{observersByDotNetObjectId:n[st],id:o}}const lt={getAndRemoveExistingTitle:function(){var e;const t=document.head?document.head.getElementsByTagName("title"):[];if(0===t.length)return null;let n=null;for(let o=t.length-1;o>=0;o--){const r=t[o],i=r.previousSibling;i instanceof Comment&&null!==K(i)||(null===n&&(n=r.textContent),null===(e=r.parentNode)||void 0===e||e.removeChild(r))}return n}},ht={init:function(e,t){t._blazorInputFileNextFileId=0,t.addEventListener("click",(function(){t.value=""})),t.addEventListener("change",(function(){t._blazorFilesById={};const n=Array.prototype.map.call(t.files,(function(e){const n={id:++t._blazorInputFileNextFileId,lastModified:new Date(e.lastModified).toISOString(),name:e.name,size:e.size,contentType:e.type,readPromise:void 0,arrayBuffer:void 0,blob:e};return t._blazorFilesById[n.id]=n,n}));e.invokeMethodAsync("NotifyChange",n)}))},toImageFile:async function(e,t,n,o,r){const i=dt(e,t),s=await new Promise((function(e){const t=new Image;t.onload=function(){URL.revokeObjectURL(t.src),e(t)},t.onerror=function(){t.onerror=null,URL.revokeObjectURL(t.src)},t.src=URL.createObjectURL(i.blob)})),a=await new Promise((function(e){var t;const i=Math.min(1,o/s.width),a=Math.min(1,r/s.height),c=Math.min(i,a),l=document.createElement("canvas");l.width=Math.round(s.width*c),l.height=Math.round(s.height*c),null===(t=l.getContext("2d"))||void 0===t||t.drawImage(s,0,0,l.width,l.height),l.toBlob(e,n)})),c={id:++e._blazorInputFileNextFileId,lastModified:i.lastModified,name:i.name,size:(null==a?void 0:a.size)||0,contentType:n,blob:a||i.blob};return e._blazorFilesById[c.id]=c,c},readFileData:async function(e,t){return dt(e,t).blob}};function dt(e,t){const n=e._blazorFilesById[t];if(!n)throw new Error(`There is no file with ID ${t}. The file list may have changed. See https://aka.ms/aspnet/blazor-input-file-multiple-selections.`);return n}const ut=new Set,pt={enableNavigationPrompt:function(e){0===ut.size&&window.addEventListener("beforeunload",ft),ut.add(e)},disableNavigationPrompt:function(e){ut.delete(e),0===ut.size&&window.removeEventListener("beforeunload",ft)}};function ft(e){e.preventDefault(),e.returnValue=!0}async function gt(e,t,n){return e instanceof Blob?await async function(e,t,n){const o=e.slice(t,t+n),r=await o.arrayBuffer();return new Uint8Array(r)}(e,t,n):function(e,t,n){return new Uint8Array(e.buffer,e.byteOffset+t,n)}(e,t,n)}const mt=new Map,vt={navigateTo:function(e,t,n=!1){Ve(e,t instanceof Object?t:{forceLoad:t,replaceHistoryEntry:n})},registerCustomEventType:function(e,t){if(!t)throw new Error("The options parameter is required.");if(i.has(e))throw new Error(`The event '${e}' is already registered.`);if(t.browserEventName){const n=s.get(t.browserEventName);n?n.push(e):s.set(t.browserEventName,[e]),a.forEach((n=>n(e,t.browserEventName)))}i.set(e,t)},rootComponents:y,runtime:{},_internal:{navigationManager:Je,domWrapper:rt,Virtualize:it,PageTitle:lt,InputFile:ht,NavigationLock:pt,getJSDataStreamChunk:gt,attachWebRendererInterop:k}};var yt;window.Blazor=vt,function(e){e[e.Trace=0]="Trace",e[e.Debug=1]="Debug",e[e.Information=2]="Information",e[e.Warning=3]="Warning",e[e.Error=4]="Error",e[e.Critical=5]="Critical",e[e.None=6]="None"}(yt||(yt={}));class wt{log(e,t){}}wt.instance=new wt;class bt{constructor(e){this.minLevel=e}log(e,t){if(e>=this.minLevel){const n=`[${(new Date).toISOString()}] ${yt[e]}: ${t}`;switch(e){case yt.Critical:case yt.Error:console.error(n);break;case yt.Warning:console.warn(n);break;case yt.Information:console.info(n);break;default:console.log(n)}}}}function _t(e,t){switch(t){case"webassembly":return Tt(e,"webassembly");case"server":return function(e){return Tt(e,"server").sort(((e,t)=>e.sequence-t.sequence))}(e);case"auto":return Tt(e,"auto")}}const St=/^\s*Blazor-Server-Component-State:(?[a-zA-Z0-9+/=]+)$/,Ct=/^\s*Blazor-WebAssembly-Component-State:(?[a-zA-Z0-9+/=]+)$/,Et=/^\s*Blazor-Web-Initializers:(?[a-zA-Z0-9+/=]+)$/;function It(e){return kt(e,St)}function kt(e,t,n="state"){var o;if(e.nodeType===Node.COMMENT_NODE){const r=e.textContent||"",i=t.exec(r),s=i&&i.groups&&i.groups[n];return s&&(null===(o=e.parentNode)||void 0===o||o.removeChild(e)),s}if(!e.hasChildNodes())return;const r=e.childNodes;for(let e=0;e.*)$/);function At(e,t){const n=e.currentElement;var o,r,i;if(n&&n.nodeType===Node.COMMENT_NODE&&n.textContent){const s=Rt.exec(n.textContent),a=s&&s.groups&&s.groups.descriptor;if(!a)return;!function(e){if(e.parentNode instanceof Document)throw new Error("Root components cannot be marked as interactive. The element must be rendered statically so that scripts are not evaluated multiple times.")}(n);try{const s=function(e){const t=JSON.parse(e),{type:n}=t;if("server"!==n&&"webassembly"!==n&&"auto"!==n)throw new Error(`Invalid component type '${n}'.`);return t}(a),c=function(e,t,n){const{prerenderId:o}=e;if(o){for(;n.next()&&n.currentElement;){const e=n.currentElement;if(e.nodeType!==Node.COMMENT_NODE)continue;if(!e.textContent)continue;const t=Rt.exec(e.textContent),r=t&&t[1];if(r)return Pt(r,o),e}throw new Error(`Could not find an end component comment for '${t}'.`)}}(s,n,e);if(t!==s.type)return;switch(s.type){case"webassembly":return r=n,i=c,Nt(o=s),{...o,uniqueId:Dt++,start:r,end:i};case"server":return function(e,t,n){return xt(e),{...e,uniqueId:Dt++,start:t,end:n}}(s,n,c);case"auto":return function(e,t,n){return xt(e),Nt(e),{...e,uniqueId:Dt++,start:t,end:n}}(s,n,c)}}catch(e){throw new Error(`Found malformed component comment at ${n.textContent}`)}}}let Dt=0;function xt(e){const{descriptor:t,sequence:n}=e;if(!t)throw new Error("descriptor must be defined when using a descriptor.");if(void 0===n)throw new Error("sequence must be defined when using a descriptor.");if(!Number.isInteger(n))throw new Error(`Error parsing the sequence '${n}' for component '${JSON.stringify(e)}'`)}function Nt(e){const{assembly:t,typeName:n}=e;if(!t)throw new Error("assembly must be defined when using a descriptor.");if(!n)throw new Error("typeName must be defined when using a descriptor.");e.parameterDefinitions=e.parameterDefinitions&&atob(e.parameterDefinitions),e.parameterValues=e.parameterValues&&atob(e.parameterValues)}function Pt(e,t){const n=JSON.parse(e);if(1!==Object.keys(n).length)throw new Error(`Invalid end of component comment: '${e}'`);const o=n.prerenderId;if(!o)throw new Error(`End of component comment must have a value for the prerendered property: '${e}'`);if(o!==t)throw new Error(`End of component comment prerendered property must match the start comment prerender id: '${t}', '${o}'`)}class Mt{constructor(e){this.childNodes=e,this.currentIndex=-1,this.length=e.length}next(){return this.currentIndex++,this.currentIndex{n+=`0x${e<16?"0":""}${e.toString(16)} `})),n.substr(0,n.length-1)}(e)}'`)):"string"==typeof e&&(n=`String data of length ${e.length}`,t&&(n+=`. Content: '${e}'`)),n}function zt(e){return e&&"undefined"!=typeof ArrayBuffer&&(e instanceof ArrayBuffer||e.constructor&&"ArrayBuffer"===e.constructor.name)}async function qt(e,t,n,o,r,i){const s={},[a,c]=Vt();s[a]=c,e.log(Ot.Trace,`(${t} transport) sending data. ${jt(r,i.logMessageContent)}.`);const l=zt(r)?"arraybuffer":"text",h=await n.post(o,{content:r,headers:{...s,...i.headers},responseType:l,timeout:i.timeout,withCredentials:i.withCredentials});e.log(Ot.Trace,`(${t} transport) request complete. Response status: ${h.statusCode}.`)}class Jt{constructor(e,t){this._subject=e,this._observer=t}dispose(){const e=this._subject.observers.indexOf(this._observer);e>-1&&this._subject.observers.splice(e,1),0===this._subject.observers.length&&this._subject.cancelCallback&&this._subject.cancelCallback().catch((e=>{}))}}class Kt{constructor(e){this._minLevel=e,this.out=console}log(e,t){if(e>=this._minLevel){const n=`[${(new Date).toISOString()}] ${Ot[e]}: ${t}`;switch(e){case Ot.Critical:case Ot.Error:this.out.error(n);break;case Ot.Warning:this.out.warn(n);break;case Ot.Information:this.out.info(n);break;default:this.out.log(n)}}}}function Vt(){let e="X-SignalR-User-Agent";return Wt.isNode&&(e="User-Agent"),[e,Xt($t,Gt(),Wt.isNode?"NodeJS":"Browser",Yt())]}function Xt(e,t,n,o){let r="Microsoft SignalR/";const i=e.split(".");return r+=`${i[0]}.${i[1]}`,r+=` (${e}; `,r+=t&&""!==t?`${t}; `:"Unknown OS; ",r+=`${n}`,r+=o?`; ${o}`:"; Unknown Runtime Version",r+=")",r}function Gt(){if(!Wt.isNode)return"";switch(process.platform){case"win32":return"Windows NT";case"darwin":return"macOS";case"linux":return"Linux";default:return process.platform}}function Yt(){if(Wt.isNode)return process.versions.node}function Qt(e){return e.stack?e.stack:e.message?e.message:`${e}`}class Zt{writeHandshakeRequest(e){return Bt.write(JSON.stringify(e))}parseHandshakeResponse(e){let t,n;if(zt(e)){const o=new Uint8Array(e),r=o.indexOf(Bt.RecordSeparatorCode);if(-1===r)throw new Error("Message is incomplete.");const i=r+1;t=String.fromCharCode.apply(null,Array.prototype.slice.call(o.slice(0,i))),n=o.byteLength>i?o.slice(i).buffer:null}else{const o=e,r=o.indexOf(Bt.RecordSeparator);if(-1===r)throw new Error("Message is incomplete.");const i=r+1;t=o.substring(0,i),n=o.length>i?o.substring(i):null}const o=Bt.parse(t),r=JSON.parse(o[0]);if(r.type)throw new Error("Expected a handshake response from the server.");return[n,r]}}class en extends Error{constructor(e,t){const n=new.target.prototype;super(`${e}: Status code '${t}'`),this.statusCode=t,this.__proto__=n}}class tn extends Error{constructor(e="A timeout occurred."){const t=new.target.prototype;super(e),this.__proto__=t}}class nn extends Error{constructor(e="An abort occurred."){const t=new.target.prototype;super(e),this.__proto__=t}}class on extends Error{constructor(e,t){const n=new.target.prototype;super(e),this.transport=t,this.errorType="UnsupportedTransportError",this.__proto__=n}}class rn extends Error{constructor(e,t){const n=new.target.prototype;super(e),this.transport=t,this.errorType="DisabledTransportError",this.__proto__=n}}class sn extends Error{constructor(e,t){const n=new.target.prototype;super(e),this.transport=t,this.errorType="FailedToStartTransportError",this.__proto__=n}}class an extends Error{constructor(e){const t=new.target.prototype;super(e),this.errorType="FailedToNegotiateWithServerError",this.__proto__=t}}class cn extends Error{constructor(e,t){const n=new.target.prototype;super(e),this.innerErrors=t,this.__proto__=n}}var ln,hn;!function(e){e[e.Invocation=1]="Invocation",e[e.StreamItem=2]="StreamItem",e[e.Completion=3]="Completion",e[e.StreamInvocation=4]="StreamInvocation",e[e.CancelInvocation=5]="CancelInvocation",e[e.Ping=6]="Ping",e[e.Close=7]="Close",e[e.Ack=8]="Ack",e[e.Sequence=9]="Sequence"}(ln||(ln={}));class dn{constructor(){this.observers=[]}next(e){for(const t of this.observers)t.next(e)}error(e){for(const t of this.observers)t.error&&t.error(e)}complete(){for(const e of this.observers)e.complete&&e.complete()}subscribe(e){return this.observers.push(e),new Jt(this,e)}}class un{constructor(e,t,n){this._bufferSize=1e5,this._messages=[],this._totalMessageCount=0,this._waitForSequenceMessage=!1,this._nextReceivingSequenceId=1,this._latestReceivedSequenceId=0,this._bufferedByteCount=0,this._reconnectInProgress=!1,this._protocol=e,this._connection=t,this._bufferSize=n}async _send(e){const t=this._protocol.writeMessage(e);let n=Promise.resolve();if(this._isInvocationMessage(e)){this._totalMessageCount++;let e=()=>{},o=()=>{};zt(t)?this._bufferedByteCount+=t.byteLength:this._bufferedByteCount+=t.length,this._bufferedByteCount>=this._bufferSize&&(n=new Promise(((t,n)=>{e=t,o=n}))),this._messages.push(new pn(t,this._totalMessageCount,e,o))}try{this._reconnectInProgress||await this._connection.send(t)}catch{this._disconnected()}await n}_ack(e){let t=-1;for(let n=0;nthis._nextReceivingSequenceId?this._connection.stop(new Error("Sequence ID greater than amount of messages we've received.")):this._nextReceivingSequenceId=e.sequenceId}_disconnected(){this._reconnectInProgress=!0,this._waitForSequenceMessage=!0}async _resend(){const e=0!==this._messages.length?this._messages[0]._id:this._totalMessageCount+1;await this._connection.send(this._protocol.writeMessage({type:ln.Sequence,sequenceId:e}));const t=this._messages;for(const e of t)await this._connection.send(e._message);this._reconnectInProgress=!1}_dispose(e){null!=e||(e=new Error("Unable to reconnect to server."));for(const t of this._messages)t._rejector(e)}_isInvocationMessage(e){switch(e.type){case ln.Invocation:case ln.StreamItem:case ln.Completion:case ln.StreamInvocation:case ln.CancelInvocation:return!0;case ln.Close:case ln.Sequence:case ln.Ping:case ln.Ack:return!1}}_ackTimer(){void 0===this._ackTimerHandle&&(this._ackTimerHandle=setTimeout((async()=>{try{this._reconnectInProgress||await this._connection.send(this._protocol.writeMessage({type:ln.Ack,sequenceId:this._latestReceivedSequenceId}))}catch{}clearTimeout(this._ackTimerHandle),this._ackTimerHandle=void 0}),1e3))}}class pn{constructor(e,t,n,o){this._message=e,this._id=t,this._resolver=n,this._rejector=o}}!function(e){e.Disconnected="Disconnected",e.Connecting="Connecting",e.Connected="Connected",e.Disconnecting="Disconnecting",e.Reconnecting="Reconnecting"}(hn||(hn={}));class fn{static create(e,t,n,o,r,i,s){return new fn(e,t,n,o,r,i,s)}constructor(e,t,n,o,r,i,s){this._nextKeepAlive=0,this._freezeEventListener=()=>{this._logger.log(Ot.Warning,"The page is being frozen, this will likely lead to the connection being closed and messages being lost. For more information see the docs at https://learn.microsoft.com/aspnet/core/signalr/javascript-client#bsleep")},Ht.isRequired(e,"connection"),Ht.isRequired(t,"logger"),Ht.isRequired(n,"protocol"),this.serverTimeoutInMilliseconds=null!=r?r:3e4,this.keepAliveIntervalInMilliseconds=null!=i?i:15e3,this._statefulReconnectBufferSize=null!=s?s:1e5,this._logger=t,this._protocol=n,this.connection=e,this._reconnectPolicy=o,this._handshakeProtocol=new Zt,this.connection.onreceive=e=>this._processIncomingData(e),this.connection.onclose=e=>this._connectionClosed(e),this._callbacks={},this._methods={},this._closedCallbacks=[],this._reconnectingCallbacks=[],this._reconnectedCallbacks=[],this._invocationId=0,this._receivedHandshakeResponse=!1,this._connectionState=hn.Disconnected,this._connectionStarted=!1,this._cachedPingMessage=this._protocol.writeMessage({type:ln.Ping})}get state(){return this._connectionState}get connectionId(){return this.connection&&this.connection.connectionId||null}get baseUrl(){return this.connection.baseUrl||""}set baseUrl(e){if(this._connectionState!==hn.Disconnected&&this._connectionState!==hn.Reconnecting)throw new Error("The HubConnection must be in the Disconnected or Reconnecting state to change the url.");if(!e)throw new Error("The HubConnection url must be a valid url.");this.connection.baseUrl=e}start(){return this._startPromise=this._startWithStateTransitions(),this._startPromise}async _startWithStateTransitions(){if(this._connectionState!==hn.Disconnected)return Promise.reject(new Error("Cannot start a HubConnection that is not in the 'Disconnected' state."));this._connectionState=hn.Connecting,this._logger.log(Ot.Debug,"Starting HubConnection.");try{await this._startInternal(),Wt.isBrowser&&window.document.addEventListener("freeze",this._freezeEventListener),this._connectionState=hn.Connected,this._connectionStarted=!0,this._logger.log(Ot.Debug,"HubConnection connected successfully.")}catch(e){return this._connectionState=hn.Disconnected,this._logger.log(Ot.Debug,`HubConnection failed to start successfully because of error '${e}'.`),Promise.reject(e)}}async _startInternal(){this._stopDuringStartError=void 0,this._receivedHandshakeResponse=!1;const e=new Promise(((e,t)=>{this._handshakeResolver=e,this._handshakeRejecter=t}));await this.connection.start(this._protocol.transferFormat);try{let t=this._protocol.version;this.connection.features.reconnect||(t=1);const n={protocol:this._protocol.name,version:t};if(this._logger.log(Ot.Debug,"Sending handshake request."),await this._sendMessage(this._handshakeProtocol.writeHandshakeRequest(n)),this._logger.log(Ot.Information,`Using HubProtocol '${this._protocol.name}'.`),this._cleanupTimeout(),this._resetTimeoutPeriod(),this._resetKeepAliveInterval(),await e,this._stopDuringStartError)throw this._stopDuringStartError;!!this.connection.features.reconnect&&(this._messageBuffer=new un(this._protocol,this.connection,this._statefulReconnectBufferSize),this.connection.features.disconnected=this._messageBuffer._disconnected.bind(this._messageBuffer),this.connection.features.resend=()=>{if(this._messageBuffer)return this._messageBuffer._resend()}),this.connection.features.inherentKeepAlive||await this._sendMessage(this._cachedPingMessage)}catch(e){throw this._logger.log(Ot.Debug,`Hub handshake failed with error '${e}' during start(). Stopping HubConnection.`),this._cleanupTimeout(),this._cleanupPingTimer(),await this.connection.stop(e),e}}async stop(){const e=this._startPromise;this.connection.features.reconnect=!1,this._stopPromise=this._stopInternal(),await this._stopPromise;try{await e}catch(e){}}_stopInternal(e){if(this._connectionState===hn.Disconnected)return this._logger.log(Ot.Debug,`Call to HubConnection.stop(${e}) ignored because it is already in the disconnected state.`),Promise.resolve();if(this._connectionState===hn.Disconnecting)return this._logger.log(Ot.Debug,`Call to HttpConnection.stop(${e}) ignored because the connection is already in the disconnecting state.`),this._stopPromise;const t=this._connectionState;return this._connectionState=hn.Disconnecting,this._logger.log(Ot.Debug,"Stopping HubConnection."),this._reconnectDelayHandle?(this._logger.log(Ot.Debug,"Connection stopped during reconnect delay. Done reconnecting."),clearTimeout(this._reconnectDelayHandle),this._reconnectDelayHandle=void 0,this._completeClose(),Promise.resolve()):(t===hn.Connected&&this._sendCloseMessage(),this._cleanupTimeout(),this._cleanupPingTimer(),this._stopDuringStartError=e||new nn("The connection was stopped before the hub handshake could complete."),this.connection.stop(e))}async _sendCloseMessage(){try{await this._sendWithProtocol(this._createCloseMessage())}catch{}}stream(e,...t){const[n,o]=this._replaceStreamingParams(t),r=this._createStreamInvocation(e,t,o);let i;const s=new dn;return s.cancelCallback=()=>{const e=this._createCancelInvocation(r.invocationId);return delete this._callbacks[r.invocationId],i.then((()=>this._sendWithProtocol(e)))},this._callbacks[r.invocationId]=(e,t)=>{t?s.error(t):e&&(e.type===ln.Completion?e.error?s.error(new Error(e.error)):s.complete():s.next(e.item))},i=this._sendWithProtocol(r).catch((e=>{s.error(e),delete this._callbacks[r.invocationId]})),this._launchStreams(n,i),s}_sendMessage(e){return this._resetKeepAliveInterval(),this.connection.send(e)}_sendWithProtocol(e){return this._messageBuffer?this._messageBuffer._send(e):this._sendMessage(this._protocol.writeMessage(e))}send(e,...t){const[n,o]=this._replaceStreamingParams(t),r=this._sendWithProtocol(this._createInvocation(e,t,!0,o));return this._launchStreams(n,r),r}invoke(e,...t){const[n,o]=this._replaceStreamingParams(t),r=this._createInvocation(e,t,!1,o);return new Promise(((e,t)=>{this._callbacks[r.invocationId]=(n,o)=>{o?t(o):n&&(n.type===ln.Completion?n.error?t(new Error(n.error)):e(n.result):t(new Error(`Unexpected message type: ${n.type}`)))};const o=this._sendWithProtocol(r).catch((e=>{t(e),delete this._callbacks[r.invocationId]}));this._launchStreams(n,o)}))}on(e,t){e&&t&&(e=e.toLowerCase(),this._methods[e]||(this._methods[e]=[]),-1===this._methods[e].indexOf(t)&&this._methods[e].push(t))}off(e,t){if(!e)return;e=e.toLowerCase();const n=this._methods[e];if(n)if(t){const o=n.indexOf(t);-1!==o&&(n.splice(o,1),0===n.length&&delete this._methods[e])}else delete this._methods[e]}onclose(e){e&&this._closedCallbacks.push(e)}onreconnecting(e){e&&this._reconnectingCallbacks.push(e)}onreconnected(e){e&&this._reconnectedCallbacks.push(e)}_processIncomingData(e){if(this._cleanupTimeout(),this._receivedHandshakeResponse||(e=this._processHandshakeResponse(e),this._receivedHandshakeResponse=!0),e){const t=this._protocol.parseMessages(e,this._logger);for(const e of t)if(!this._messageBuffer||this._messageBuffer._shouldProcessMessage(e))switch(e.type){case ln.Invocation:this._invokeClientMethod(e);break;case ln.StreamItem:case ln.Completion:{const t=this._callbacks[e.invocationId];if(t){e.type===ln.Completion&&delete this._callbacks[e.invocationId];try{t(e)}catch(e){this._logger.log(Ot.Error,`Stream callback threw error: ${Qt(e)}`)}}break}case ln.Ping:break;case ln.Close:{this._logger.log(Ot.Information,"Close message received from server.");const t=e.error?new Error("Server returned an error on close: "+e.error):void 0;!0===e.allowReconnect?this.connection.stop(t):this._stopPromise=this._stopInternal(t);break}case ln.Ack:this._messageBuffer&&this._messageBuffer._ack(e);break;case ln.Sequence:this._messageBuffer&&this._messageBuffer._resetSequence(e);break;default:this._logger.log(Ot.Warning,`Invalid message type: ${e.type}.`)}}this._resetTimeoutPeriod()}_processHandshakeResponse(e){let t,n;try{[n,t]=this._handshakeProtocol.parseHandshakeResponse(e)}catch(e){const t="Error parsing handshake response: "+e;this._logger.log(Ot.Error,t);const n=new Error(t);throw this._handshakeRejecter(n),n}if(t.error){const e="Server returned handshake error: "+t.error;this._logger.log(Ot.Error,e);const n=new Error(e);throw this._handshakeRejecter(n),n}return this._logger.log(Ot.Debug,"Server handshake complete."),this._handshakeResolver(),n}_resetKeepAliveInterval(){this.connection.features.inherentKeepAlive||(this._nextKeepAlive=(new Date).getTime()+this.keepAliveIntervalInMilliseconds,this._cleanupPingTimer())}_resetTimeoutPeriod(){if(!(this.connection.features&&this.connection.features.inherentKeepAlive||(this._timeoutHandle=setTimeout((()=>this.serverTimeout()),this.serverTimeoutInMilliseconds),void 0!==this._pingServerHandle))){let e=this._nextKeepAlive-(new Date).getTime();e<0&&(e=0),this._pingServerHandle=setTimeout((async()=>{if(this._connectionState===hn.Connected)try{await this._sendMessage(this._cachedPingMessage)}catch{this._cleanupPingTimer()}}),e)}}serverTimeout(){this.connection.stop(new Error("Server timeout elapsed without receiving a message from the server."))}async _invokeClientMethod(e){const t=e.target.toLowerCase(),n=this._methods[t];if(!n)return this._logger.log(Ot.Warning,`No client method with the name '${t}' found.`),void(e.invocationId&&(this._logger.log(Ot.Warning,`No result given for '${t}' method and invocation ID '${e.invocationId}'.`),await this._sendWithProtocol(this._createCompletionMessage(e.invocationId,"Client didn't provide a result.",null))));const o=n.slice(),r=!!e.invocationId;let i,s,a;for(const n of o)try{const o=i;i=await n.apply(this,e.arguments),r&&i&&o&&(this._logger.log(Ot.Error,`Multiple results provided for '${t}'. Sending error to server.`),a=this._createCompletionMessage(e.invocationId,"Client provided multiple results.",null)),s=void 0}catch(e){s=e,this._logger.log(Ot.Error,`A callback for the method '${t}' threw error '${e}'.`)}a?await this._sendWithProtocol(a):r?(s?a=this._createCompletionMessage(e.invocationId,`${s}`,null):void 0!==i?a=this._createCompletionMessage(e.invocationId,null,i):(this._logger.log(Ot.Warning,`No result given for '${t}' method and invocation ID '${e.invocationId}'.`),a=this._createCompletionMessage(e.invocationId,"Client didn't provide a result.",null)),await this._sendWithProtocol(a)):i&&this._logger.log(Ot.Error,`Result given for '${t}' method but server is not expecting a result.`)}_connectionClosed(e){this._logger.log(Ot.Debug,`HubConnection.connectionClosed(${e}) called while in state ${this._connectionState}.`),this._stopDuringStartError=this._stopDuringStartError||e||new nn("The underlying connection was closed before the hub handshake could complete."),this._handshakeResolver&&this._handshakeResolver(),this._cancelCallbacksWithError(e||new Error("Invocation canceled due to the underlying connection being closed.")),this._cleanupTimeout(),this._cleanupPingTimer(),this._connectionState===hn.Disconnecting?this._completeClose(e):this._connectionState===hn.Connected&&this._reconnectPolicy?this._reconnect(e):this._connectionState===hn.Connected&&this._completeClose(e)}_completeClose(e){if(this._connectionStarted){this._connectionState=hn.Disconnected,this._connectionStarted=!1,this._messageBuffer&&(this._messageBuffer._dispose(null!=e?e:new Error("Connection closed.")),this._messageBuffer=void 0),Wt.isBrowser&&window.document.removeEventListener("freeze",this._freezeEventListener);try{this._closedCallbacks.forEach((t=>t.apply(this,[e])))}catch(t){this._logger.log(Ot.Error,`An onclose callback called with error '${e}' threw error '${t}'.`)}}}async _reconnect(e){const t=Date.now();let n=0,o=void 0!==e?e:new Error("Attempting to reconnect due to a unknown error."),r=this._getNextRetryDelay(n++,0,o);if(null===r)return this._logger.log(Ot.Debug,"Connection not reconnecting because the IRetryPolicy returned null on the first reconnect attempt."),void this._completeClose(e);if(this._connectionState=hn.Reconnecting,e?this._logger.log(Ot.Information,`Connection reconnecting because of error '${e}'.`):this._logger.log(Ot.Information,"Connection reconnecting."),0!==this._reconnectingCallbacks.length){try{this._reconnectingCallbacks.forEach((t=>t.apply(this,[e])))}catch(t){this._logger.log(Ot.Error,`An onreconnecting callback called with error '${e}' threw error '${t}'.`)}if(this._connectionState!==hn.Reconnecting)return void this._logger.log(Ot.Debug,"Connection left the reconnecting state in onreconnecting callback. Done reconnecting.")}for(;null!==r;){if(this._logger.log(Ot.Information,`Reconnect attempt number ${n} will start in ${r} ms.`),await new Promise((e=>{this._reconnectDelayHandle=setTimeout(e,r)})),this._reconnectDelayHandle=void 0,this._connectionState!==hn.Reconnecting)return void this._logger.log(Ot.Debug,"Connection left the reconnecting state during reconnect delay. Done reconnecting.");try{if(await this._startInternal(),this._connectionState=hn.Connected,this._logger.log(Ot.Information,"HubConnection reconnected successfully."),0!==this._reconnectedCallbacks.length)try{this._reconnectedCallbacks.forEach((e=>e.apply(this,[this.connection.connectionId])))}catch(e){this._logger.log(Ot.Error,`An onreconnected callback called with connectionId '${this.connection.connectionId}; threw error '${e}'.`)}return}catch(e){if(this._logger.log(Ot.Information,`Reconnect attempt failed because of error '${e}'.`),this._connectionState!==hn.Reconnecting)return this._logger.log(Ot.Debug,`Connection moved to the '${this._connectionState}' from the reconnecting state during reconnect attempt. Done reconnecting.`),void(this._connectionState===hn.Disconnecting&&this._completeClose());o=e instanceof Error?e:new Error(e.toString()),r=this._getNextRetryDelay(n++,Date.now()-t,o)}}this._logger.log(Ot.Information,`Reconnect retries have been exhausted after ${Date.now()-t} ms and ${n} failed attempts. Connection disconnecting.`),this._completeClose()}_getNextRetryDelay(e,t,n){try{return this._reconnectPolicy.nextRetryDelayInMilliseconds({elapsedMilliseconds:t,previousRetryCount:e,retryReason:n})}catch(n){return this._logger.log(Ot.Error,`IRetryPolicy.nextRetryDelayInMilliseconds(${e}, ${t}) threw error '${n}'.`),null}}_cancelCallbacksWithError(e){const t=this._callbacks;this._callbacks={},Object.keys(t).forEach((n=>{const o=t[n];try{o(null,e)}catch(t){this._logger.log(Ot.Error,`Stream 'error' callback called with '${e}' threw error: ${Qt(t)}`)}}))}_cleanupPingTimer(){this._pingServerHandle&&(clearTimeout(this._pingServerHandle),this._pingServerHandle=void 0)}_cleanupTimeout(){this._timeoutHandle&&clearTimeout(this._timeoutHandle)}_createInvocation(e,t,n,o){if(n)return 0!==o.length?{arguments:t,streamIds:o,target:e,type:ln.Invocation}:{arguments:t,target:e,type:ln.Invocation};{const n=this._invocationId;return this._invocationId++,0!==o.length?{arguments:t,invocationId:n.toString(),streamIds:o,target:e,type:ln.Invocation}:{arguments:t,invocationId:n.toString(),target:e,type:ln.Invocation}}}_launchStreams(e,t){if(0!==e.length){t||(t=Promise.resolve());for(const n in e)e[n].subscribe({complete:()=>{t=t.then((()=>this._sendWithProtocol(this._createCompletionMessage(n))))},error:e=>{let o;o=e instanceof Error?e.message:e&&e.toString?e.toString():"Unknown error",t=t.then((()=>this._sendWithProtocol(this._createCompletionMessage(n,o))))},next:e=>{t=t.then((()=>this._sendWithProtocol(this._createStreamItemMessage(n,e))))}})}}_replaceStreamingParams(e){const t=[],n=[];for(let o=0;o0)&&(t=!1,this._accessToken=await this._accessTokenFactory()),this._setAuthorizationHeader(e);const n=await this._innerClient.send(e);return t&&401===n.statusCode&&this._accessTokenFactory?(this._accessToken=await this._accessTokenFactory(),this._setAuthorizationHeader(e),await this._innerClient.send(e)):n}_setAuthorizationHeader(e){e.headers||(e.headers={}),this._accessToken?e.headers[vn.Authorization]=`Bearer ${this._accessToken}`:this._accessTokenFactory&&e.headers[vn.Authorization]&&delete e.headers[vn.Authorization]}getCookieString(e){return this._innerClient.getCookieString(e)}}class _n extends wn{constructor(e){super(),this._logger=e;const t={_fetchType:void 0,_jar:void 0};var o;o=t,"undefined"==typeof fetch&&(o._jar=new(n(628).CookieJar),"undefined"==typeof fetch?o._fetchType=n(200):o._fetchType=fetch,o._fetchType=n(203)(o._fetchType,o._jar),1)?(this._fetchType=t._fetchType,this._jar=t._jar):this._fetchType=fetch.bind(function(){if("undefined"!=typeof globalThis)return globalThis;if("undefined"!=typeof self)return self;if("undefined"!=typeof window)return window;if(void 0!==n.g)return n.g;throw new Error("could not find global")}()),this._abortControllerType=AbortController;const r={_abortControllerType:this._abortControllerType};(function(e){return"undefined"==typeof AbortController&&(e._abortControllerType=n(778),!0)})(r)&&(this._abortControllerType=r._abortControllerType)}async send(e){if(e.abortSignal&&e.abortSignal.aborted)throw new nn;if(!e.method)throw new Error("No method defined.");if(!e.url)throw new Error("No url defined.");const t=new this._abortControllerType;let n;e.abortSignal&&(e.abortSignal.onabort=()=>{t.abort(),n=new nn});let o,r=null;if(e.timeout){const o=e.timeout;r=setTimeout((()=>{t.abort(),this._logger.log(Ot.Warning,"Timeout from HTTP request."),n=new tn}),o)}""===e.content&&(e.content=void 0),e.content&&(e.headers=e.headers||{},zt(e.content)?e.headers["Content-Type"]="application/octet-stream":e.headers["Content-Type"]="text/plain;charset=UTF-8");try{o=await this._fetchType(e.url,{body:e.content,cache:"no-cache",credentials:!0===e.withCredentials?"include":"same-origin",headers:{"X-Requested-With":"XMLHttpRequest",...e.headers},method:e.method,mode:"cors",redirect:"follow",signal:t.signal})}catch(e){if(n)throw n;throw this._logger.log(Ot.Warning,`Error from HTTP request. ${e}.`),e}finally{r&&clearTimeout(r),e.abortSignal&&(e.abortSignal.onabort=null)}if(!o.ok){const e=await Sn(o,"text");throw new en(e||o.statusText,o.status)}const i=Sn(o,e.responseType),s=await i;return new yn(o.status,o.statusText,s)}getCookieString(e){return""}}function Sn(e,t){let n;switch(t){case"arraybuffer":n=e.arrayBuffer();break;case"text":default:n=e.text();break;case"blob":case"document":case"json":throw new Error(`${t} is not supported.`)}return n}class Cn extends wn{constructor(e){super(),this._logger=e}send(e){return e.abortSignal&&e.abortSignal.aborted?Promise.reject(new nn):e.method?e.url?new Promise(((t,n)=>{const o=new XMLHttpRequest;o.open(e.method,e.url,!0),o.withCredentials=void 0===e.withCredentials||e.withCredentials,o.setRequestHeader("X-Requested-With","XMLHttpRequest"),""===e.content&&(e.content=void 0),e.content&&(zt(e.content)?o.setRequestHeader("Content-Type","application/octet-stream"):o.setRequestHeader("Content-Type","text/plain;charset=UTF-8"));const r=e.headers;r&&Object.keys(r).forEach((e=>{o.setRequestHeader(e,r[e])})),e.responseType&&(o.responseType=e.responseType),e.abortSignal&&(e.abortSignal.onabort=()=>{o.abort(),n(new nn)}),e.timeout&&(o.timeout=e.timeout),o.onload=()=>{e.abortSignal&&(e.abortSignal.onabort=null),o.status>=200&&o.status<300?t(new yn(o.status,o.statusText,o.response||o.responseText)):n(new en(o.response||o.responseText||o.statusText,o.status))},o.onerror=()=>{this._logger.log(Ot.Warning,`Error from HTTP request. ${o.status}: ${o.statusText}.`),n(new en(o.statusText,o.status))},o.ontimeout=()=>{this._logger.log(Ot.Warning,"Timeout from HTTP request."),n(new tn)},o.send(e.content)})):Promise.reject(new Error("No url defined.")):Promise.reject(new Error("No method defined."))}}class En extends wn{constructor(e){if(super(),"undefined"!=typeof fetch)this._httpClient=new _n(e);else{if("undefined"==typeof XMLHttpRequest)throw new Error("No usable HttpClient found.");this._httpClient=new Cn(e)}}send(e){return e.abortSignal&&e.abortSignal.aborted?Promise.reject(new nn):e.method?e.url?this._httpClient.send(e):Promise.reject(new Error("No url defined.")):Promise.reject(new Error("No method defined."))}getCookieString(e){return this._httpClient.getCookieString(e)}}var In,kn;!function(e){e[e.None=0]="None",e[e.WebSockets=1]="WebSockets",e[e.ServerSentEvents=2]="ServerSentEvents",e[e.LongPolling=4]="LongPolling"}(In||(In={})),function(e){e[e.Text=1]="Text",e[e.Binary=2]="Binary"}(kn||(kn={}));class Tn{constructor(){this._isAborted=!1,this.onabort=null}abort(){this._isAborted||(this._isAborted=!0,this.onabort&&this.onabort())}get signal(){return this}get aborted(){return this._isAborted}}class Rn{get pollAborted(){return this._pollAbort.aborted}constructor(e,t,n){this._httpClient=e,this._logger=t,this._pollAbort=new Tn,this._options=n,this._running=!1,this.onreceive=null,this.onclose=null}async connect(e,t){if(Ht.isRequired(e,"url"),Ht.isRequired(t,"transferFormat"),Ht.isIn(t,kn,"transferFormat"),this._url=e,this._logger.log(Ot.Trace,"(LongPolling transport) Connecting."),t===kn.Binary&&"undefined"!=typeof XMLHttpRequest&&"string"!=typeof(new XMLHttpRequest).responseType)throw new Error("Binary protocols over XmlHttpRequest not implementing advanced features are not supported.");const[n,o]=Vt(),r={[n]:o,...this._options.headers},i={abortSignal:this._pollAbort.signal,headers:r,timeout:1e5,withCredentials:this._options.withCredentials};t===kn.Binary&&(i.responseType="arraybuffer");const s=`${e}&_=${Date.now()}`;this._logger.log(Ot.Trace,`(LongPolling transport) polling: ${s}.`);const a=await this._httpClient.get(s,i);200!==a.statusCode?(this._logger.log(Ot.Error,`(LongPolling transport) Unexpected response code: ${a.statusCode}.`),this._closeError=new en(a.statusText||"",a.statusCode),this._running=!1):this._running=!0,this._receiving=this._poll(this._url,i)}async _poll(e,t){try{for(;this._running;)try{const n=`${e}&_=${Date.now()}`;this._logger.log(Ot.Trace,`(LongPolling transport) polling: ${n}.`);const o=await this._httpClient.get(n,t);204===o.statusCode?(this._logger.log(Ot.Information,"(LongPolling transport) Poll terminated by server."),this._running=!1):200!==o.statusCode?(this._logger.log(Ot.Error,`(LongPolling transport) Unexpected response code: ${o.statusCode}.`),this._closeError=new en(o.statusText||"",o.statusCode),this._running=!1):o.content?(this._logger.log(Ot.Trace,`(LongPolling transport) data received. ${jt(o.content,this._options.logMessageContent)}.`),this.onreceive&&this.onreceive(o.content)):this._logger.log(Ot.Trace,"(LongPolling transport) Poll timed out, reissuing.")}catch(e){this._running?e instanceof tn?this._logger.log(Ot.Trace,"(LongPolling transport) Poll timed out, reissuing."):(this._closeError=e,this._running=!1):this._logger.log(Ot.Trace,`(LongPolling transport) Poll errored after shutdown: ${e.message}`)}}finally{this._logger.log(Ot.Trace,"(LongPolling transport) Polling complete."),this.pollAborted||this._raiseOnClose()}}async send(e){return this._running?qt(this._logger,"LongPolling",this._httpClient,this._url,e,this._options):Promise.reject(new Error("Cannot send until the transport is connected"))}async stop(){this._logger.log(Ot.Trace,"(LongPolling transport) Stopping polling."),this._running=!1,this._pollAbort.abort();try{await this._receiving,this._logger.log(Ot.Trace,`(LongPolling transport) sending DELETE request to ${this._url}.`);const e={},[t,n]=Vt();e[t]=n;const o={headers:{...e,...this._options.headers},timeout:this._options.timeout,withCredentials:this._options.withCredentials};let r;try{await this._httpClient.delete(this._url,o)}catch(e){r=e}r?r instanceof en&&(404===r.statusCode?this._logger.log(Ot.Trace,"(LongPolling transport) A 404 response was returned from sending a DELETE request."):this._logger.log(Ot.Trace,`(LongPolling transport) Error sending a DELETE request: ${r}`)):this._logger.log(Ot.Trace,"(LongPolling transport) DELETE request accepted.")}finally{this._logger.log(Ot.Trace,"(LongPolling transport) Stop finished."),this._raiseOnClose()}}_raiseOnClose(){if(this.onclose){let e="(LongPolling transport) Firing onclose event.";this._closeError&&(e+=" Error: "+this._closeError),this._logger.log(Ot.Trace,e),this.onclose(this._closeError)}}}class An{constructor(e,t,n,o){this._httpClient=e,this._accessToken=t,this._logger=n,this._options=o,this.onreceive=null,this.onclose=null}async connect(e,t){return Ht.isRequired(e,"url"),Ht.isRequired(t,"transferFormat"),Ht.isIn(t,kn,"transferFormat"),this._logger.log(Ot.Trace,"(SSE transport) Connecting."),this._url=e,this._accessToken&&(e+=(e.indexOf("?")<0?"?":"&")+`access_token=${encodeURIComponent(this._accessToken)}`),new Promise(((n,o)=>{let r,i=!1;if(t===kn.Text){if(Wt.isBrowser||Wt.isWebWorker)r=new this._options.EventSource(e,{withCredentials:this._options.withCredentials});else{const t=this._httpClient.getCookieString(e),n={};n.Cookie=t;const[o,i]=Vt();n[o]=i,r=new this._options.EventSource(e,{withCredentials:this._options.withCredentials,headers:{...n,...this._options.headers}})}try{r.onmessage=e=>{if(this.onreceive)try{this._logger.log(Ot.Trace,`(SSE transport) data received. ${jt(e.data,this._options.logMessageContent)}.`),this.onreceive(e.data)}catch(e){return void this._close(e)}},r.onerror=e=>{i?this._close():o(new Error("EventSource failed to connect. The connection could not be found on the server, either the connection ID is not present on the server, or a proxy is refusing/buffering the connection. If you have multiple servers check that sticky sessions are enabled."))},r.onopen=()=>{this._logger.log(Ot.Information,`SSE connected to ${this._url}`),this._eventSource=r,i=!0,n()}}catch(e){return void o(e)}}else o(new Error("The Server-Sent Events transport only supports the 'Text' transfer format"))}))}async send(e){return this._eventSource?qt(this._logger,"SSE",this._httpClient,this._url,e,this._options):Promise.reject(new Error("Cannot send until the transport is connected"))}stop(){return this._close(),Promise.resolve()}_close(e){this._eventSource&&(this._eventSource.close(),this._eventSource=void 0,this.onclose&&this.onclose(e))}}class Dn{constructor(e,t,n,o,r,i){this._logger=n,this._accessTokenFactory=t,this._logMessageContent=o,this._webSocketConstructor=r,this._httpClient=e,this.onreceive=null,this.onclose=null,this._headers=i}async connect(e,t){let n;return Ht.isRequired(e,"url"),Ht.isRequired(t,"transferFormat"),Ht.isIn(t,kn,"transferFormat"),this._logger.log(Ot.Trace,"(WebSockets transport) Connecting."),this._accessTokenFactory&&(n=await this._accessTokenFactory()),new Promise(((o,r)=>{let i;e=e.replace(/^http/,"ws");const s=this._httpClient.getCookieString(e);let a=!1;if(Wt.isReactNative){const t={},[o,r]=Vt();t[o]=r,n&&(t[vn.Authorization]=`Bearer ${n}`),s&&(t[vn.Cookie]=s),i=new this._webSocketConstructor(e,void 0,{headers:{...t,...this._headers}})}else n&&(e+=(e.indexOf("?")<0?"?":"&")+`access_token=${encodeURIComponent(n)}`);i||(i=new this._webSocketConstructor(e)),t===kn.Binary&&(i.binaryType="arraybuffer"),i.onopen=t=>{this._logger.log(Ot.Information,`WebSocket connected to ${e}.`),this._webSocket=i,a=!0,o()},i.onerror=e=>{let t=null;t="undefined"!=typeof ErrorEvent&&e instanceof ErrorEvent?e.error:"There was an error with the transport",this._logger.log(Ot.Information,`(WebSockets transport) ${t}.`)},i.onmessage=e=>{if(this._logger.log(Ot.Trace,`(WebSockets transport) data received. ${jt(e.data,this._logMessageContent)}.`),this.onreceive)try{this.onreceive(e.data)}catch(e){return void this._close(e)}},i.onclose=e=>{if(a)this._close(e);else{let t=null;t="undefined"!=typeof ErrorEvent&&e instanceof ErrorEvent?e.error:"WebSocket failed to connect. The connection could not be found on the server, either the endpoint may not be a SignalR endpoint, the connection ID is not present on the server, or there is a proxy blocking WebSockets. If you have multiple servers check that sticky sessions are enabled.",r(new Error(t))}}}))}send(e){return this._webSocket&&this._webSocket.readyState===this._webSocketConstructor.OPEN?(this._logger.log(Ot.Trace,`(WebSockets transport) sending data. ${jt(e,this._logMessageContent)}.`),this._webSocket.send(e),Promise.resolve()):Promise.reject("WebSocket is not in the OPEN state")}stop(){return this._webSocket&&this._close(void 0),Promise.resolve()}_close(e){this._webSocket&&(this._webSocket.onclose=()=>{},this._webSocket.onmessage=()=>{},this._webSocket.onerror=()=>{},this._webSocket.close(),this._webSocket=void 0),this._logger.log(Ot.Trace,"(WebSockets transport) socket closed."),this.onclose&&(!this._isCloseEvent(e)||!1!==e.wasClean&&1e3===e.code?e instanceof Error?this.onclose(e):this.onclose():this.onclose(new Error(`WebSocket closed with status code: ${e.code} (${e.reason||"no reason given"}).`)))}_isCloseEvent(e){return e&&"boolean"==typeof e.wasClean&&"number"==typeof e.code}}class xn{constructor(e,t={}){if(this._stopPromiseResolver=()=>{},this.features={},this._negotiateVersion=1,Ht.isRequired(e,"url"),this._logger=function(e){return void 0===e?new Kt(Ot.Information):null===e?Ft.instance:void 0!==e.log?e:new Kt(e)}(t.logger),this.baseUrl=this._resolveUrl(e),(t=t||{}).logMessageContent=void 0!==t.logMessageContent&&t.logMessageContent,"boolean"!=typeof t.withCredentials&&void 0!==t.withCredentials)throw new Error("withCredentials option was not a 'boolean' or 'undefined' value");t.withCredentials=void 0===t.withCredentials||t.withCredentials,t.timeout=void 0===t.timeout?1e5:t.timeout,"undefined"==typeof WebSocket||t.WebSocket||(t.WebSocket=WebSocket),"undefined"==typeof EventSource||t.EventSource||(t.EventSource=EventSource),this._httpClient=new bn(t.httpClient||new En(this._logger),t.accessTokenFactory),this._connectionState="Disconnected",this._connectionStarted=!1,this._options=t,this.onreceive=null,this.onclose=null}async start(e){if(e=e||kn.Binary,Ht.isIn(e,kn,"transferFormat"),this._logger.log(Ot.Debug,`Starting connection with transfer format '${kn[e]}'.`),"Disconnected"!==this._connectionState)return Promise.reject(new Error("Cannot start an HttpConnection that is not in the 'Disconnected' state."));if(this._connectionState="Connecting",this._startInternalPromise=this._startInternal(e),await this._startInternalPromise,"Disconnecting"===this._connectionState){const e="Failed to start the HttpConnection before stop() was called.";return this._logger.log(Ot.Error,e),await this._stopPromise,Promise.reject(new nn(e))}if("Connected"!==this._connectionState){const e="HttpConnection.startInternal completed gracefully but didn't enter the connection into the connected state!";return this._logger.log(Ot.Error,e),Promise.reject(new nn(e))}this._connectionStarted=!0}send(e){return"Connected"!==this._connectionState?Promise.reject(new Error("Cannot send data if the connection is not in the 'Connected' State.")):(this._sendQueue||(this._sendQueue=new Nn(this.transport)),this._sendQueue.send(e))}async stop(e){return"Disconnected"===this._connectionState?(this._logger.log(Ot.Debug,`Call to HttpConnection.stop(${e}) ignored because the connection is already in the disconnected state.`),Promise.resolve()):"Disconnecting"===this._connectionState?(this._logger.log(Ot.Debug,`Call to HttpConnection.stop(${e}) ignored because the connection is already in the disconnecting state.`),this._stopPromise):(this._connectionState="Disconnecting",this._stopPromise=new Promise((e=>{this._stopPromiseResolver=e})),await this._stopInternal(e),void await this._stopPromise)}async _stopInternal(e){this._stopError=e;try{await this._startInternalPromise}catch(e){}if(this.transport){try{await this.transport.stop()}catch(e){this._logger.log(Ot.Error,`HttpConnection.transport.stop() threw error '${e}'.`),this._stopConnection()}this.transport=void 0}else this._logger.log(Ot.Debug,"HttpConnection.transport is undefined in HttpConnection.stop() because start() failed.")}async _startInternal(e){let t=this.baseUrl;this._accessTokenFactory=this._options.accessTokenFactory,this._httpClient._accessTokenFactory=this._accessTokenFactory;try{if(this._options.skipNegotiation){if(this._options.transport!==In.WebSockets)throw new Error("Negotiation can only be skipped when using the WebSocket transport directly.");this.transport=this._constructTransport(In.WebSockets),await this._startTransport(t,e)}else{let n=null,o=0;do{if(n=await this._getNegotiationResponse(t),"Disconnecting"===this._connectionState||"Disconnected"===this._connectionState)throw new nn("The connection was stopped during negotiation.");if(n.error)throw new Error(n.error);if(n.ProtocolVersion)throw new Error("Detected a connection attempt to an ASP.NET SignalR Server. This client only supports connecting to an ASP.NET Core SignalR Server. See https://aka.ms/signalr-core-differences for details.");if(n.url&&(t=n.url),n.accessToken){const e=n.accessToken;this._accessTokenFactory=()=>e,this._httpClient._accessToken=e,this._httpClient._accessTokenFactory=void 0}o++}while(n.url&&o<100);if(100===o&&n.url)throw new Error("Negotiate redirection limit exceeded.");await this._createTransport(t,this._options.transport,n,e)}this.transport instanceof Rn&&(this.features.inherentKeepAlive=!0),"Connecting"===this._connectionState&&(this._logger.log(Ot.Debug,"The HttpConnection connected successfully."),this._connectionState="Connected")}catch(e){return this._logger.log(Ot.Error,"Failed to start the connection: "+e),this._connectionState="Disconnected",this.transport=void 0,this._stopPromiseResolver(),Promise.reject(e)}}async _getNegotiationResponse(e){const t={},[n,o]=Vt();t[n]=o;const r=this._resolveNegotiateUrl(e);this._logger.log(Ot.Debug,`Sending negotiation request: ${r}.`);try{const e=await this._httpClient.post(r,{content:"",headers:{...t,...this._options.headers},timeout:this._options.timeout,withCredentials:this._options.withCredentials});if(200!==e.statusCode)return Promise.reject(new Error(`Unexpected status code returned from negotiate '${e.statusCode}'`));const n=JSON.parse(e.content);return(!n.negotiateVersion||n.negotiateVersion<1)&&(n.connectionToken=n.connectionId),n.useStatefulReconnect&&!0!==this._options._useStatefulReconnect?Promise.reject(new an("Client didn't negotiate Stateful Reconnect but the server did.")):n}catch(e){let t="Failed to complete negotiation with the server: "+e;return e instanceof en&&404===e.statusCode&&(t+=" Either this is not a SignalR endpoint or there is a proxy blocking the connection."),this._logger.log(Ot.Error,t),Promise.reject(new an(t))}}_createConnectUrl(e,t){return t?e+(-1===e.indexOf("?")?"?":"&")+`id=${t}`:e}async _createTransport(e,t,n,o){let r=this._createConnectUrl(e,n.connectionToken);if(this._isITransport(t))return this._logger.log(Ot.Debug,"Connection was provided an instance of ITransport, using that directly."),this.transport=t,await this._startTransport(r,o),void(this.connectionId=n.connectionId);const i=[],s=n.availableTransports||[];let a=n;for(const n of s){const s=this._resolveTransportOrError(n,t,o,!0===(null==a?void 0:a.useStatefulReconnect));if(s instanceof Error)i.push(`${n.transport} failed:`),i.push(s);else if(this._isITransport(s)){if(this.transport=s,!a){try{a=await this._getNegotiationResponse(e)}catch(e){return Promise.reject(e)}r=this._createConnectUrl(e,a.connectionToken)}try{return await this._startTransport(r,o),void(this.connectionId=a.connectionId)}catch(e){if(this._logger.log(Ot.Error,`Failed to start the transport '${n.transport}': ${e}`),a=void 0,i.push(new sn(`${n.transport} failed: ${e}`,In[n.transport])),"Connecting"!==this._connectionState){const e="Failed to select transport before stop() was called.";return this._logger.log(Ot.Debug,e),Promise.reject(new nn(e))}}}}return i.length>0?Promise.reject(new cn(`Unable to connect to the server with any of the available transports. ${i.join(" ")}`,i)):Promise.reject(new Error("None of the transports supported by the client are supported by the server."))}_constructTransport(e){switch(e){case In.WebSockets:if(!this._options.WebSocket)throw new Error("'WebSocket' is not supported in your environment.");return new Dn(this._httpClient,this._accessTokenFactory,this._logger,this._options.logMessageContent,this._options.WebSocket,this._options.headers||{});case In.ServerSentEvents:if(!this._options.EventSource)throw new Error("'EventSource' is not supported in your environment.");return new An(this._httpClient,this._httpClient._accessToken,this._logger,this._options);case In.LongPolling:return new Rn(this._httpClient,this._logger,this._options);default:throw new Error(`Unknown transport: ${e}.`)}}_startTransport(e,t){return this.transport.onreceive=this.onreceive,this.features.reconnect?this.transport.onclose=async n=>{let o=!1;if(this.features.reconnect){try{this.features.disconnected(),await this.transport.connect(e,t),await this.features.resend()}catch{o=!0}o&&this._stopConnection(n)}else this._stopConnection(n)}:this.transport.onclose=e=>this._stopConnection(e),this.transport.connect(e,t)}_resolveTransportOrError(e,t,n,o){const r=In[e.transport];if(null==r)return this._logger.log(Ot.Debug,`Skipping transport '${e.transport}' because it is not supported by this client.`),new Error(`Skipping transport '${e.transport}' because it is not supported by this client.`);if(!function(e,t){return!e||0!=(t&e)}(t,r))return this._logger.log(Ot.Debug,`Skipping transport '${In[r]}' because it was disabled by the client.`),new rn(`'${In[r]}' is disabled by the client.`,r);if(!(e.transferFormats.map((e=>kn[e])).indexOf(n)>=0))return this._logger.log(Ot.Debug,`Skipping transport '${In[r]}' because it does not support the requested transfer format '${kn[n]}'.`),new Error(`'${In[r]}' does not support ${kn[n]}.`);if(r===In.WebSockets&&!this._options.WebSocket||r===In.ServerSentEvents&&!this._options.EventSource)return this._logger.log(Ot.Debug,`Skipping transport '${In[r]}' because it is not supported in your environment.'`),new on(`'${In[r]}' is not supported in your environment.`,r);this._logger.log(Ot.Debug,`Selecting transport '${In[r]}'.`);try{return this.features.reconnect=r===In.WebSockets?o:void 0,this._constructTransport(r)}catch(e){return e}}_isITransport(e){return e&&"object"==typeof e&&"connect"in e}_stopConnection(e){if(this._logger.log(Ot.Debug,`HttpConnection.stopConnection(${e}) called while in state ${this._connectionState}.`),this.transport=void 0,e=this._stopError||e,this._stopError=void 0,"Disconnected"!==this._connectionState){if("Connecting"===this._connectionState)throw this._logger.log(Ot.Warning,`Call to HttpConnection.stopConnection(${e}) was ignored because the connection is still in the connecting state.`),new Error(`HttpConnection.stopConnection(${e}) was called while the connection is still in the connecting state.`);if("Disconnecting"===this._connectionState&&this._stopPromiseResolver(),e?this._logger.log(Ot.Error,`Connection disconnected with error '${e}'.`):this._logger.log(Ot.Information,"Connection disconnected."),this._sendQueue&&(this._sendQueue.stop().catch((e=>{this._logger.log(Ot.Error,`TransportSendQueue.stop() threw error '${e}'.`)})),this._sendQueue=void 0),this.connectionId=void 0,this._connectionState="Disconnected",this._connectionStarted){this._connectionStarted=!1;try{this.onclose&&this.onclose(e)}catch(t){this._logger.log(Ot.Error,`HttpConnection.onclose(${e}) threw error '${t}'.`)}}}else this._logger.log(Ot.Debug,`Call to HttpConnection.stopConnection(${e}) was ignored because the connection is already in the disconnected state.`)}_resolveUrl(e){if(0===e.lastIndexOf("https://",0)||0===e.lastIndexOf("http://",0))return e;if(!Wt.isBrowser)throw new Error(`Cannot resolve '${e}'.`);const t=window.document.createElement("a");return t.href=e,this._logger.log(Ot.Information,`Normalizing '${e}' to '${t.href}'.`),t.href}_resolveNegotiateUrl(e){const t=new URL(e);t.pathname.endsWith("/")?t.pathname+="negotiate":t.pathname+="/negotiate";const n=new URLSearchParams(t.searchParams);return n.has("negotiateVersion")||n.append("negotiateVersion",this._negotiateVersion.toString()),n.has("useStatefulReconnect")?"true"===n.get("useStatefulReconnect")&&(this._options._useStatefulReconnect=!0):!0===this._options._useStatefulReconnect&&n.append("useStatefulReconnect","true"),t.search=n.toString(),t.toString()}}class Nn{constructor(e){this._transport=e,this._buffer=[],this._executing=!0,this._sendBufferedData=new Pn,this._transportResult=new Pn,this._sendLoopPromise=this._sendLoop()}send(e){return this._bufferData(e),this._transportResult||(this._transportResult=new Pn),this._transportResult.promise}stop(){return this._executing=!1,this._sendBufferedData.resolve(),this._sendLoopPromise}_bufferData(e){if(this._buffer.length&&typeof this._buffer[0]!=typeof e)throw new Error(`Expected data to be of type ${typeof this._buffer} but was of type ${typeof e}`);this._buffer.push(e),this._sendBufferedData.resolve()}async _sendLoop(){for(;;){if(await this._sendBufferedData.promise,!this._executing){this._transportResult&&this._transportResult.reject("Connection stopped.");break}this._sendBufferedData=new Pn;const e=this._transportResult;this._transportResult=void 0;const t="string"==typeof this._buffer[0]?this._buffer.join(""):Nn._concatBuffers(this._buffer);this._buffer.length=0;try{await this._transport.send(t),e.resolve()}catch(t){e.reject(t)}}}static _concatBuffers(e){const t=e.map((e=>e.byteLength)).reduce(((e,t)=>e+t)),n=new Uint8Array(t);let o=0;for(const t of e)n.set(new Uint8Array(t),o),o+=t.byteLength;return n.buffer}}class Pn{constructor(){this.promise=new Promise(((e,t)=>[this._resolver,this._rejecter]=[e,t]))}resolve(){this._resolver()}reject(e){this._rejecter(e)}}class Mn{constructor(){this.name="json",this.version=2,this.transferFormat=kn.Text}parseMessages(e,t){if("string"!=typeof e)throw new Error("Invalid input for JSON hub protocol. Expected a string.");if(!e)return[];null===t&&(t=Ft.instance);const n=Bt.parse(e),o=[];for(const e of n){const n=JSON.parse(e);if("number"!=typeof n.type)throw new Error("Invalid payload.");switch(n.type){case ln.Invocation:this._isInvocationMessage(n);break;case ln.StreamItem:this._isStreamItemMessage(n);break;case ln.Completion:this._isCompletionMessage(n);break;case ln.Ping:case ln.Close:break;case ln.Ack:this._isAckMessage(n);break;case ln.Sequence:this._isSequenceMessage(n);break;default:t.log(Ot.Information,"Unknown message type '"+n.type+"' ignored.");continue}o.push(n)}return o}writeMessage(e){return Bt.write(JSON.stringify(e))}_isInvocationMessage(e){this._assertNotEmptyString(e.target,"Invalid payload for Invocation message."),void 0!==e.invocationId&&this._assertNotEmptyString(e.invocationId,"Invalid payload for Invocation message.")}_isStreamItemMessage(e){if(this._assertNotEmptyString(e.invocationId,"Invalid payload for StreamItem message."),void 0===e.item)throw new Error("Invalid payload for StreamItem message.")}_isCompletionMessage(e){if(e.result&&e.error)throw new Error("Invalid payload for Completion message.");!e.result&&e.error&&this._assertNotEmptyString(e.error,"Invalid payload for Completion message."),this._assertNotEmptyString(e.invocationId,"Invalid payload for Completion message.")}_isAckMessage(e){if("number"!=typeof e.sequenceId)throw new Error("Invalid SequenceId for Ack message.")}_isSequenceMessage(e){if("number"!=typeof e.sequenceId)throw new Error("Invalid SequenceId for Sequence message.")}_assertNotEmptyString(e,t){if("string"!=typeof e||""===e)throw new Error(t)}}const Un={trace:Ot.Trace,debug:Ot.Debug,info:Ot.Information,information:Ot.Information,warn:Ot.Warning,warning:Ot.Warning,error:Ot.Error,critical:Ot.Critical,none:Ot.None};class Ln{configureLogging(e){if(Ht.isRequired(e,"logging"),function(e){return void 0!==e.log}(e))this.logger=e;else if("string"==typeof e){const t=function(e){const t=Un[e.toLowerCase()];if(void 0!==t)return t;throw new Error(`Unknown log level: ${e}`)}(e);this.logger=new Kt(t)}else this.logger=new Kt(e);return this}withUrl(e,t){return Ht.isRequired(e,"url"),Ht.isNotEmpty(e,"url"),this.url=e,this.httpConnectionOptions="object"==typeof t?{...this.httpConnectionOptions,...t}:{...this.httpConnectionOptions,transport:t},this}withHubProtocol(e){return Ht.isRequired(e,"protocol"),this.protocol=e,this}withAutomaticReconnect(e){if(this.reconnectPolicy)throw new Error("A reconnectPolicy has already been set.");return e?Array.isArray(e)?this.reconnectPolicy=new mn(e):this.reconnectPolicy=e:this.reconnectPolicy=new mn,this}withServerTimeout(e){return Ht.isRequired(e,"milliseconds"),this._serverTimeoutInMilliseconds=e,this}withKeepAliveInterval(e){return Ht.isRequired(e,"milliseconds"),this._keepAliveIntervalInMilliseconds=e,this}withStatefulReconnect(e){return void 0===this.httpConnectionOptions&&(this.httpConnectionOptions={}),this.httpConnectionOptions._useStatefulReconnect=!0,this._statefulReconnectBufferSize=null==e?void 0:e.bufferSize,this}build(){const e=this.httpConnectionOptions||{};if(void 0===e.logger&&(e.logger=this.logger),!this.url)throw new Error("The 'HubConnectionBuilder.withUrl' method must be called before building the connection.");const t=new xn(this.url,e);return fn.create(t,this.logger||Ft.instance,this.protocol||new Mn,this.reconnectPolicy,this._serverTimeoutInMilliseconds,this._keepAliveIntervalInMilliseconds,this._statefulReconnectBufferSize)}}var Bn;!function(e){e[e.Default=0]="Default",e[e.Server=1]="Server",e[e.WebAssembly=2]="WebAssembly",e[e.WebView=3]="WebView"}(Bn||(Bn={}));var On,Fn,$n,Hn=4294967295;function Wn(e,t,n){var o=Math.floor(n/4294967296),r=n;e.setUint32(t,o),e.setUint32(t+4,r)}function jn(e,t){return 4294967296*e.getInt32(t)+e.getUint32(t+4)}var zn=("undefined"==typeof process||"never"!==(null===(On=null===process||void 0===process?void 0:process.env)||void 0===On?void 0:On.TEXT_ENCODING))&&"undefined"!=typeof TextEncoder&&"undefined"!=typeof TextDecoder;function qn(e){for(var t=e.length,n=0,o=0;o=55296&&r<=56319&&o65535&&(h-=65536,i.push(h>>>10&1023|55296),h=56320|1023&h),i.push(h)}else i.push(a);i.length>=4096&&(s+=String.fromCharCode.apply(String,i),i.length=0)}return i.length>0&&(s+=String.fromCharCode.apply(String,i)),s}var Gn,Yn=zn?new TextDecoder:null,Qn=zn?"undefined"!=typeof process&&"force"!==(null===($n=null===process||void 0===process?void 0:process.env)||void 0===$n?void 0:$n.TEXT_DECODER)?200:0:Hn,Zn=function(e,t){this.type=e,this.data=t},eo=(Gn=function(e,t){return Gn=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},Gn(e,t)},function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function n(){this.constructor=e}Gn(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}),to=function(e){function t(n){var o=e.call(this,n)||this,r=Object.create(t.prototype);return Object.setPrototypeOf(o,r),Object.defineProperty(o,"name",{configurable:!0,enumerable:!1,value:t.name}),o}return eo(t,e),t}(Error),no={type:-1,encode:function(e){var t,n,o,r;return e instanceof Date?function(e){var t,n=e.sec,o=e.nsec;if(n>=0&&o>=0&&n<=17179869183){if(0===o&&n<=4294967295){var r=new Uint8Array(4);return(t=new DataView(r.buffer)).setUint32(0,n),r}var i=n/4294967296,s=4294967295&n;return r=new Uint8Array(8),(t=new DataView(r.buffer)).setUint32(0,o<<2|3&i),t.setUint32(4,s),r}return r=new Uint8Array(12),(t=new DataView(r.buffer)).setUint32(0,o),Wn(t,4,n),r}((o=1e6*((t=e.getTime())-1e3*(n=Math.floor(t/1e3))),{sec:n+(r=Math.floor(o/1e9)),nsec:o-1e9*r})):null},decode:function(e){var t=function(e){var t=new DataView(e.buffer,e.byteOffset,e.byteLength);switch(e.byteLength){case 4:return{sec:t.getUint32(0),nsec:0};case 8:var n=t.getUint32(0);return{sec:4294967296*(3&n)+t.getUint32(4),nsec:n>>>2};case 12:return{sec:jn(t,4),nsec:t.getUint32(0)};default:throw new to("Unrecognized data size for timestamp (expected 4, 8, or 12): ".concat(e.length))}}(e);return new Date(1e3*t.sec+t.nsec/1e6)}},oo=function(){function e(){this.builtInEncoders=[],this.builtInDecoders=[],this.encoders=[],this.decoders=[],this.register(no)}return e.prototype.register=function(e){var t=e.type,n=e.encode,o=e.decode;if(t>=0)this.encoders[t]=n,this.decoders[t]=o;else{var r=1+t;this.builtInEncoders[r]=n,this.builtInDecoders[r]=o}},e.prototype.tryToEncode=function(e,t){for(var n=0;nthis.maxDepth)throw new Error("Too deep objects in depth ".concat(t));null==e?this.encodeNil():"boolean"==typeof e?this.encodeBoolean(e):"number"==typeof e?this.encodeNumber(e):"string"==typeof e?this.encodeString(e):this.encodeObject(e,t)},e.prototype.ensureBufferSizeToWrite=function(e){var t=this.pos+e;this.view.byteLength=0?e<128?this.writeU8(e):e<256?(this.writeU8(204),this.writeU8(e)):e<65536?(this.writeU8(205),this.writeU16(e)):e<4294967296?(this.writeU8(206),this.writeU32(e)):(this.writeU8(207),this.writeU64(e)):e>=-32?this.writeU8(224|e+32):e>=-128?(this.writeU8(208),this.writeI8(e)):e>=-32768?(this.writeU8(209),this.writeI16(e)):e>=-2147483648?(this.writeU8(210),this.writeI32(e)):(this.writeU8(211),this.writeI64(e)):this.forceFloat32?(this.writeU8(202),this.writeF32(e)):(this.writeU8(203),this.writeF64(e))},e.prototype.writeStringHeader=function(e){if(e<32)this.writeU8(160+e);else if(e<256)this.writeU8(217),this.writeU8(e);else if(e<65536)this.writeU8(218),this.writeU16(e);else{if(!(e<4294967296))throw new Error("Too long string: ".concat(e," bytes in UTF-8"));this.writeU8(219),this.writeU32(e)}},e.prototype.encodeString=function(e){if(e.length>Kn){var t=qn(e);this.ensureBufferSizeToWrite(5+t),this.writeStringHeader(t),Vn(e,this.bytes,this.pos),this.pos+=t}else t=qn(e),this.ensureBufferSizeToWrite(5+t),this.writeStringHeader(t),function(e,t,n){for(var o=e.length,r=n,i=0;i>6&31|192;else{if(s>=55296&&s<=56319&&i>12&15|224,t[r++]=s>>6&63|128):(t[r++]=s>>18&7|240,t[r++]=s>>12&63|128,t[r++]=s>>6&63|128)}t[r++]=63&s|128}else t[r++]=s}}(e,this.bytes,this.pos),this.pos+=t},e.prototype.encodeObject=function(e,t){var n=this.extensionCodec.tryToEncode(e,this.context);if(null!=n)this.encodeExtension(n);else if(Array.isArray(e))this.encodeArray(e,t);else if(ArrayBuffer.isView(e))this.encodeBinary(e);else{if("object"!=typeof e)throw new Error("Unrecognized object: ".concat(Object.prototype.toString.apply(e)));this.encodeMap(e,t)}},e.prototype.encodeBinary=function(e){var t=e.byteLength;if(t<256)this.writeU8(196),this.writeU8(t);else if(t<65536)this.writeU8(197),this.writeU16(t);else{if(!(t<4294967296))throw new Error("Too large binary: ".concat(t));this.writeU8(198),this.writeU32(t)}var n=ro(e);this.writeU8a(n)},e.prototype.encodeArray=function(e,t){var n=e.length;if(n<16)this.writeU8(144+n);else if(n<65536)this.writeU8(220),this.writeU16(n);else{if(!(n<4294967296))throw new Error("Too large array: ".concat(n));this.writeU8(221),this.writeU32(n)}for(var o=0,r=e;o0&&e<=this.maxKeyLength},e.prototype.find=function(e,t,n){e:for(var o=0,r=this.caches[n-1];o=this.maxLengthPerKey?n[Math.random()*n.length|0]=o:n.push(o)},e.prototype.decode=function(e,t,n){var o=this.find(e,t,n);if(null!=o)return this.hit++,o;this.miss++;var r=Xn(e,t,n),i=Uint8Array.prototype.slice.call(e,t,t+n);return this.store(i,r),r},e}(),co=function(e,t){var n,o,r,i,s={label:0,sent:function(){if(1&r[0])throw r[1];return r[1]},trys:[],ops:[]};return i={next:a(0),throw:a(1),return:a(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function a(i){return function(a){return function(i){if(n)throw new TypeError("Generator is already executing.");for(;s;)try{if(n=1,o&&(r=2&i[0]?o.return:i[0]?o.throw||((r=o.return)&&r.call(o),0):o.next)&&!(r=r.call(o,i[1])).done)return r;switch(o=0,r&&(i=[2&i[0],r.value]),i[0]){case 0:case 1:r=i;break;case 4:return s.label++,{value:i[1],done:!1};case 5:s.label++,o=i[1],i=[0];continue;case 7:i=s.ops.pop(),s.trys.pop();continue;default:if(!((r=(r=s.trys).length>0&&r[r.length-1])||6!==i[0]&&2!==i[0])){s=0;continue}if(3===i[0]&&(!r||i[1]>r[0]&&i[1]=e},e.prototype.createExtraByteError=function(e){var t=this.view,n=this.pos;return new RangeError("Extra ".concat(t.byteLength-n," of ").concat(t.byteLength," byte(s) found at buffer[").concat(e,"]"))},e.prototype.decode=function(e){this.reinitializeState(),this.setBuffer(e);var t=this.doDecodeSync();if(this.hasRemaining(1))throw this.createExtraByteError(this.pos);return t},e.prototype.decodeMulti=function(e){return co(this,(function(t){switch(t.label){case 0:this.reinitializeState(),this.setBuffer(e),t.label=1;case 1:return this.hasRemaining(1)?[4,this.doDecodeSync()]:[3,3];case 2:return t.sent(),[3,1];case 3:return[2]}}))},e.prototype.decodeAsync=function(e){var t,n,o,r,i,s,a;return i=this,void 0,a=function(){var i,s,a,c,l,h,d,u;return co(this,(function(p){switch(p.label){case 0:i=!1,p.label=1;case 1:p.trys.push([1,6,7,12]),t=lo(e),p.label=2;case 2:return[4,t.next()];case 3:if((n=p.sent()).done)return[3,5];if(a=n.value,i)throw this.createExtraByteError(this.totalPos);this.appendBuffer(a);try{s=this.doDecodeSync(),i=!0}catch(e){if(!(e instanceof fo))throw e}this.totalPos+=this.pos,p.label=4;case 4:return[3,2];case 5:return[3,12];case 6:return c=p.sent(),o={error:c},[3,12];case 7:return p.trys.push([7,,10,11]),n&&!n.done&&(r=t.return)?[4,r.call(t)]:[3,9];case 8:p.sent(),p.label=9;case 9:return[3,11];case 10:if(o)throw o.error;return[7];case 11:return[7];case 12:if(i){if(this.hasRemaining(1))throw this.createExtraByteError(this.totalPos);return[2,s]}throw h=(l=this).headByte,d=l.pos,u=l.totalPos,new RangeError("Insufficient data in parsing ".concat(so(h)," at ").concat(u," (").concat(d," in the current buffer)"))}}))},new((s=void 0)||(s=Promise))((function(e,t){function n(e){try{r(a.next(e))}catch(e){t(e)}}function o(e){try{r(a.throw(e))}catch(e){t(e)}}function r(t){var r;t.done?e(t.value):(r=t.value,r instanceof s?r:new s((function(e){e(r)}))).then(n,o)}r((a=a.apply(i,[])).next())}))},e.prototype.decodeArrayStream=function(e){return this.decodeMultiAsync(e,!0)},e.prototype.decodeStream=function(e){return this.decodeMultiAsync(e,!1)},e.prototype.decodeMultiAsync=function(e,t){return function(n,o,r){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var i,s=function(){var n,o,r,i,s,a,c,l,h;return co(this,(function(d){switch(d.label){case 0:n=t,o=-1,d.label=1;case 1:d.trys.push([1,13,14,19]),r=lo(e),d.label=2;case 2:return[4,ho(r.next())];case 3:if((i=d.sent()).done)return[3,12];if(s=i.value,t&&0===o)throw this.createExtraByteError(this.totalPos);this.appendBuffer(s),n&&(o=this.readArraySize(),n=!1,this.complete()),d.label=4;case 4:d.trys.push([4,9,,10]),d.label=5;case 5:return[4,ho(this.doDecodeSync())];case 6:return[4,d.sent()];case 7:return d.sent(),0==--o?[3,8]:[3,5];case 8:return[3,10];case 9:if(!((a=d.sent())instanceof fo))throw a;return[3,10];case 10:this.totalPos+=this.pos,d.label=11;case 11:return[3,2];case 12:return[3,19];case 13:return c=d.sent(),l={error:c},[3,19];case 14:return d.trys.push([14,,17,18]),i&&!i.done&&(h=r.return)?[4,ho(h.call(r))]:[3,16];case 15:d.sent(),d.label=16;case 16:return[3,18];case 17:if(l)throw l.error;return[7];case 18:return[7];case 19:return[2]}}))}.apply(n,o||[]),a=[];return i={},c("next"),c("throw"),c("return"),i[Symbol.asyncIterator]=function(){return this},i;function c(e){s[e]&&(i[e]=function(t){return new Promise((function(n,o){a.push([e,t,n,o])>1||l(e,t)}))})}function l(e,t){try{(n=s[e](t)).value instanceof ho?Promise.resolve(n.value.v).then(h,d):u(a[0][2],n)}catch(e){u(a[0][3],e)}var n}function h(e){l("next",e)}function d(e){l("throw",e)}function u(e,t){e(t),a.shift(),a.length&&l(a[0][0],a[0][1])}}(this,arguments)},e.prototype.doDecodeSync=function(){e:for(;;){var e=this.readHeadByte(),t=void 0;if(e>=224)t=e-256;else if(e<192)if(e<128)t=e;else if(e<144){if(0!=(o=e-128)){this.pushMapState(o),this.complete();continue e}t={}}else if(e<160){if(0!=(o=e-144)){this.pushArrayState(o),this.complete();continue e}t=[]}else{var n=e-160;t=this.decodeUtf8String(n,0)}else if(192===e)t=null;else if(194===e)t=!1;else if(195===e)t=!0;else if(202===e)t=this.readF32();else if(203===e)t=this.readF64();else if(204===e)t=this.readU8();else if(205===e)t=this.readU16();else if(206===e)t=this.readU32();else if(207===e)t=this.readU64();else if(208===e)t=this.readI8();else if(209===e)t=this.readI16();else if(210===e)t=this.readI32();else if(211===e)t=this.readI64();else if(217===e)n=this.lookU8(),t=this.decodeUtf8String(n,1);else if(218===e)n=this.lookU16(),t=this.decodeUtf8String(n,2);else if(219===e)n=this.lookU32(),t=this.decodeUtf8String(n,4);else if(220===e){if(0!==(o=this.readU16())){this.pushArrayState(o),this.complete();continue e}t=[]}else if(221===e){if(0!==(o=this.readU32())){this.pushArrayState(o),this.complete();continue e}t=[]}else if(222===e){if(0!==(o=this.readU16())){this.pushMapState(o),this.complete();continue e}t={}}else if(223===e){if(0!==(o=this.readU32())){this.pushMapState(o),this.complete();continue e}t={}}else if(196===e){var o=this.lookU8();t=this.decodeBinary(o,1)}else if(197===e)o=this.lookU16(),t=this.decodeBinary(o,2);else if(198===e)o=this.lookU32(),t=this.decodeBinary(o,4);else if(212===e)t=this.decodeExtension(1,0);else if(213===e)t=this.decodeExtension(2,0);else if(214===e)t=this.decodeExtension(4,0);else if(215===e)t=this.decodeExtension(8,0);else if(216===e)t=this.decodeExtension(16,0);else if(199===e)o=this.lookU8(),t=this.decodeExtension(o,1);else if(200===e)o=this.lookU16(),t=this.decodeExtension(o,2);else{if(201!==e)throw new to("Unrecognized type byte: ".concat(so(e)));o=this.lookU32(),t=this.decodeExtension(o,4)}this.complete();for(var r=this.stack;r.length>0;){var i=r[r.length-1];if(0===i.type){if(i.array[i.position]=t,i.position++,i.position!==i.size)continue e;r.pop(),t=i.array}else{if(1===i.type){if("string"!=(s=typeof t)&&"number"!==s)throw new to("The type of key must be string or number but "+typeof t);if("__proto__"===t)throw new to("The key __proto__ is not allowed");i.key=t,i.type=2;continue e}if(i.map[i.key]=t,i.readCount++,i.readCount!==i.size){i.key=null,i.type=1;continue e}r.pop(),t=i.map}}return t}var s},e.prototype.readHeadByte=function(){return-1===this.headByte&&(this.headByte=this.readU8()),this.headByte},e.prototype.complete=function(){this.headByte=-1},e.prototype.readArraySize=function(){var e=this.readHeadByte();switch(e){case 220:return this.readU16();case 221:return this.readU32();default:if(e<160)return e-144;throw new to("Unrecognized array type byte: ".concat(so(e)))}},e.prototype.pushMapState=function(e){if(e>this.maxMapLength)throw new to("Max length exceeded: map length (".concat(e,") > maxMapLengthLength (").concat(this.maxMapLength,")"));this.stack.push({type:1,size:e,key:null,readCount:0,map:{}})},e.prototype.pushArrayState=function(e){if(e>this.maxArrayLength)throw new to("Max length exceeded: array length (".concat(e,") > maxArrayLength (").concat(this.maxArrayLength,")"));this.stack.push({type:0,size:e,array:new Array(e),position:0})},e.prototype.decodeUtf8String=function(e,t){var n;if(e>this.maxStrLength)throw new to("Max length exceeded: UTF-8 byte length (".concat(e,") > maxStrLength (").concat(this.maxStrLength,")"));if(this.bytes.byteLengthQn?function(e,t,n){var o=e.subarray(t,t+n);return Yn.decode(o)}(this.bytes,r,e):Xn(this.bytes,r,e),this.pos+=t+e,o},e.prototype.stateIsMapKey=function(){return this.stack.length>0&&1===this.stack[this.stack.length-1].type},e.prototype.decodeBinary=function(e,t){if(e>this.maxBinLength)throw new to("Max length exceeded: bin length (".concat(e,") > maxBinLength (").concat(this.maxBinLength,")"));if(!this.hasRemaining(e+t))throw go;var n=this.pos+t,o=this.bytes.subarray(n,n+e);return this.pos+=t+e,o},e.prototype.decodeExtension=function(e,t){if(e>this.maxExtLength)throw new to("Max length exceeded: ext length (".concat(e,") > maxExtLength (").concat(this.maxExtLength,")"));var n=this.view.getInt8(this.pos+t),o=this.decodeBinary(e,t+1);return this.extensionCodec.decode(o,n,this.context)},e.prototype.lookU8=function(){return this.view.getUint8(this.pos)},e.prototype.lookU16=function(){return this.view.getUint16(this.pos)},e.prototype.lookU32=function(){return this.view.getUint32(this.pos)},e.prototype.readU8=function(){var e=this.view.getUint8(this.pos);return this.pos++,e},e.prototype.readI8=function(){var e=this.view.getInt8(this.pos);return this.pos++,e},e.prototype.readU16=function(){var e=this.view.getUint16(this.pos);return this.pos+=2,e},e.prototype.readI16=function(){var e=this.view.getInt16(this.pos);return this.pos+=2,e},e.prototype.readU32=function(){var e=this.view.getUint32(this.pos);return this.pos+=4,e},e.prototype.readI32=function(){var e=this.view.getInt32(this.pos);return this.pos+=4,e},e.prototype.readU64=function(){var e,t,n=(e=this.view,t=this.pos,4294967296*e.getUint32(t)+e.getUint32(t+4));return this.pos+=8,n},e.prototype.readI64=function(){var e=jn(this.view,this.pos);return this.pos+=8,e},e.prototype.readF32=function(){var e=this.view.getFloat32(this.pos);return this.pos+=4,e},e.prototype.readF64=function(){var e=this.view.getFloat64(this.pos);return this.pos+=8,e},e}();class yo{static write(e){let t=e.byteLength||e.length;const n=[];do{let e=127&t;t>>=7,t>0&&(e|=128),n.push(e)}while(t>0);t=e.byteLength||e.length;const o=new Uint8Array(n.length+t);return o.set(n,0),o.set(e,n.length),o.buffer}static parse(e){const t=[],n=new Uint8Array(e),o=[0,7,14,21,28];for(let r=0;r7)throw new Error("Messages bigger than 2GB are not supported.");if(!(n.byteLength>=r+s+a))throw new Error("Incomplete message.");t.push(n.slice?n.slice(r+s,r+s+a):n.subarray(r+s,r+s+a)),r=r+s+a}return t}}const wo=new Uint8Array([145,ln.Ping]);class bo{constructor(e){this.name="messagepack",this.version=2,this.transferFormat=kn.Binary,this._errorResult=1,this._voidResult=2,this._nonVoidResult=3,e=e||{},this._encoder=new io(e.extensionCodec,e.context,e.maxDepth,e.initialBufferSize,e.sortKeys,e.forceFloat32,e.ignoreUndefined,e.forceIntegerToFloat),this._decoder=new vo(e.extensionCodec,e.context,e.maxStrLength,e.maxBinLength,e.maxArrayLength,e.maxMapLength,e.maxExtLength)}parseMessages(e,t){if(!(n=e)||"undefined"==typeof ArrayBuffer||!(n instanceof ArrayBuffer||n.constructor&&"ArrayBuffer"===n.constructor.name))throw new Error("Invalid input for MessagePack hub protocol. Expected an ArrayBuffer.");var n;null===t&&(t=Ft.instance);const o=yo.parse(e),r=[];for(const e of o){const n=this._parseMessage(e,t);n&&r.push(n)}return r}writeMessage(e){switch(e.type){case ln.Invocation:return this._writeInvocation(e);case ln.StreamInvocation:return this._writeStreamInvocation(e);case ln.StreamItem:return this._writeStreamItem(e);case ln.Completion:return this._writeCompletion(e);case ln.Ping:return yo.write(wo);case ln.CancelInvocation:return this._writeCancelInvocation(e);case ln.Close:return this._writeClose();case ln.Ack:return this._writeAck(e);case ln.Sequence:return this._writeSequence(e);default:throw new Error("Invalid message type.")}}_parseMessage(e,t){if(0===e.length)throw new Error("Invalid payload.");const n=this._decoder.decode(e);if(0===n.length||!(n instanceof Array))throw new Error("Invalid payload.");const o=n[0];switch(o){case ln.Invocation:return this._createInvocationMessage(this._readHeaders(n),n);case ln.StreamItem:return this._createStreamItemMessage(this._readHeaders(n),n);case ln.Completion:return this._createCompletionMessage(this._readHeaders(n),n);case ln.Ping:return this._createPingMessage(n);case ln.Close:return this._createCloseMessage(n);case ln.Ack:return this._createAckMessage(n);case ln.Sequence:return this._createSequenceMessage(n);default:return t.log(Ot.Information,"Unknown message type '"+o+"' ignored."),null}}_createCloseMessage(e){if(e.length<2)throw new Error("Invalid payload for Close message.");return{allowReconnect:e.length>=3?e[2]:void 0,error:e[1],type:ln.Close}}_createPingMessage(e){if(e.length<1)throw new Error("Invalid payload for Ping message.");return{type:ln.Ping}}_createInvocationMessage(e,t){if(t.length<5)throw new Error("Invalid payload for Invocation message.");const n=t[2];return n?{arguments:t[4],headers:e,invocationId:n,streamIds:[],target:t[3],type:ln.Invocation}:{arguments:t[4],headers:e,streamIds:[],target:t[3],type:ln.Invocation}}_createStreamItemMessage(e,t){if(t.length<4)throw new Error("Invalid payload for StreamItem message.");return{headers:e,invocationId:t[2],item:t[3],type:ln.StreamItem}}_createCompletionMessage(e,t){if(t.length<4)throw new Error("Invalid payload for Completion message.");const n=t[3];if(n!==this._voidResult&&t.length<5)throw new Error("Invalid payload for Completion message.");let o,r;switch(n){case this._errorResult:o=t[4];break;case this._nonVoidResult:r=t[4]}return{error:o,headers:e,invocationId:t[2],result:r,type:ln.Completion}}_createAckMessage(e){if(e.length<1)throw new Error("Invalid payload for Ack message.");return{sequenceId:e[1],type:ln.Ack}}_createSequenceMessage(e){if(e.length<1)throw new Error("Invalid payload for Sequence message.");return{sequenceId:e[1],type:ln.Sequence}}_writeInvocation(e){let t;return t=e.streamIds?this._encoder.encode([ln.Invocation,e.headers||{},e.invocationId||null,e.target,e.arguments,e.streamIds]):this._encoder.encode([ln.Invocation,e.headers||{},e.invocationId||null,e.target,e.arguments]),yo.write(t.slice())}_writeStreamInvocation(e){let t;return t=e.streamIds?this._encoder.encode([ln.StreamInvocation,e.headers||{},e.invocationId,e.target,e.arguments,e.streamIds]):this._encoder.encode([ln.StreamInvocation,e.headers||{},e.invocationId,e.target,e.arguments]),yo.write(t.slice())}_writeStreamItem(e){const t=this._encoder.encode([ln.StreamItem,e.headers||{},e.invocationId,e.item]);return yo.write(t.slice())}_writeCompletion(e){const t=e.error?this._errorResult:void 0!==e.result?this._nonVoidResult:this._voidResult;let n;switch(t){case this._errorResult:n=this._encoder.encode([ln.Completion,e.headers||{},e.invocationId,t,e.error]);break;case this._voidResult:n=this._encoder.encode([ln.Completion,e.headers||{},e.invocationId,t]);break;case this._nonVoidResult:n=this._encoder.encode([ln.Completion,e.headers||{},e.invocationId,t,e.result])}return yo.write(n.slice())}_writeCancelInvocation(e){const t=this._encoder.encode([ln.CancelInvocation,e.headers||{},e.invocationId]);return yo.write(t.slice())}_writeClose(){const e=this._encoder.encode([ln.Close,null]);return yo.write(e.slice())}_writeAck(e){const t=this._encoder.encode([ln.Ack,e.sequenceId]);return yo.write(t.slice())}_writeSequence(e){const t=this._encoder.encode([ln.Sequence,e.sequenceId]);return yo.write(t.slice())}_readHeaders(e){const t=e[1];if("object"!=typeof t)throw new Error("Invalid headers.");return t}}const _o="function"==typeof TextDecoder?new TextDecoder("utf-8"):null,So=_o?_o.decode.bind(_o):function(e){let t=0;const n=e.length,o=[],r=[];for(;t65535&&(r-=65536,o.push(r>>>10&1023|55296),r=56320|1023&r),o.push(r)}o.length>1024&&(r.push(String.fromCharCode.apply(null,o)),o.length=0)}return r.push(String.fromCharCode.apply(null,o)),r.join("")},Co=Math.pow(2,32),Eo=Math.pow(2,21)-1;function Io(e,t){return e[t]|e[t+1]<<8|e[t+2]<<16|e[t+3]<<24}function ko(e,t){return e[t]+(e[t+1]<<8)+(e[t+2]<<16)+(e[t+3]<<24>>>0)}function To(e,t){const n=ko(e,t+4);if(n>Eo)throw new Error(`Cannot read uint64 with high order part ${n}, because the result would exceed Number.MAX_SAFE_INTEGER.`);return n*Co+ko(e,t)}class Ro{constructor(e){this.batchData=e;const t=new No(e);this.arrayRangeReader=new Po(e),this.arrayBuilderSegmentReader=new Mo(e),this.diffReader=new Ao(e),this.editReader=new Do(e,t),this.frameReader=new xo(e,t)}updatedComponents(){return Io(this.batchData,this.batchData.length-20)}referenceFrames(){return Io(this.batchData,this.batchData.length-16)}disposedComponentIds(){return Io(this.batchData,this.batchData.length-12)}disposedEventHandlerIds(){return Io(this.batchData,this.batchData.length-8)}updatedComponentsEntry(e,t){const n=e+4*t;return Io(this.batchData,n)}referenceFramesEntry(e,t){return e+20*t}disposedComponentIdsEntry(e,t){const n=e+4*t;return Io(this.batchData,n)}disposedEventHandlerIdsEntry(e,t){const n=e+8*t;return To(this.batchData,n)}}class Ao{constructor(e){this.batchDataUint8=e}componentId(e){return Io(this.batchDataUint8,e)}edits(e){return e+4}editsEntry(e,t){return e+16*t}}class Do{constructor(e,t){this.batchDataUint8=e,this.stringReader=t}editType(e){return Io(this.batchDataUint8,e)}siblingIndex(e){return Io(this.batchDataUint8,e+4)}newTreeIndex(e){return Io(this.batchDataUint8,e+8)}moveToSiblingIndex(e){return Io(this.batchDataUint8,e+8)}removedAttributeName(e){const t=Io(this.batchDataUint8,e+12);return this.stringReader.readString(t)}}class xo{constructor(e,t){this.batchDataUint8=e,this.stringReader=t}frameType(e){return Io(this.batchDataUint8,e)}subtreeLength(e){return Io(this.batchDataUint8,e+4)}elementReferenceCaptureId(e){const t=Io(this.batchDataUint8,e+4);return this.stringReader.readString(t)}componentId(e){return Io(this.batchDataUint8,e+8)}elementName(e){const t=Io(this.batchDataUint8,e+8);return this.stringReader.readString(t)}textContent(e){const t=Io(this.batchDataUint8,e+4);return this.stringReader.readString(t)}markupContent(e){const t=Io(this.batchDataUint8,e+4);return this.stringReader.readString(t)}attributeName(e){const t=Io(this.batchDataUint8,e+4);return this.stringReader.readString(t)}attributeValue(e){const t=Io(this.batchDataUint8,e+8);return this.stringReader.readString(t)}attributeEventHandlerId(e){return To(this.batchDataUint8,e+12)}}class No{constructor(e){this.batchDataUint8=e,this.stringTableStartIndex=Io(e,e.length-4)}readString(e){if(-1===e)return null;{const n=Io(this.batchDataUint8,this.stringTableStartIndex+4*e),o=function(e,t){let n=0,o=0;for(let r=0;r<4;r++){const i=e[t+r];if(n|=(127&i)<this.nextBatchId)return this.fatalError?(this.logger.log(yt.Debug,`Received a new batch ${e} but errored out on a previous batch ${this.nextBatchId-1}`),void await n.send("OnRenderCompleted",this.nextBatchId-1,this.fatalError.toString())):void this.logger.log(yt.Debug,`Waiting for batch ${this.nextBatchId}. Batch ${e} not processed.`);try{this.nextBatchId++,this.logger.log(yt.Debug,`Applying batch ${e}.`),xe(Bn.Server,new Ro(t)),await this.completeBatch(n,e)}catch(t){throw this.fatalError=t.toString(),this.logger.log(yt.Error,`There was an error applying batch ${e}.`),n.send("OnRenderCompleted",e,t.toString()),t}}getLastBatchid(){return this.nextBatchId-1}async completeBatch(e,t){try{await e.send("OnRenderCompleted",t,null)}catch{this.logger.log(yt.Warning,`Failed to deliver completion notification for render '${t}'.`)}}}let Lo=!1;function Bo(){const e=document.querySelector("#blazor-error-ui");e&&(e.style.display="block"),Lo||(Lo=!0,document.querySelectorAll("#blazor-error-ui .reload").forEach((e=>{e.onclick=function(e){location.reload(),e.preventDefault()}})),document.querySelectorAll("#blazor-error-ui .dismiss").forEach((e=>{e.onclick=function(e){const t=document.querySelector("#blazor-error-ui");t&&(t.style.display="none"),e.preventDefault()}})))}class Oo{constructor(t,n,o,r){this._firstUpdate=!0,this._renderingFailed=!1,this._disposed=!1,this._circuitId=void 0,this._applicationState=n,this._componentManager=t,this._options=o,this._logger=r,this._renderQueue=new Uo(this._logger),this._dispatcher=e.attachDispatcher(this)}start(){if(this.isDisposedOrDisposing())throw new Error("Cannot start a disposed circuit.");return this._startPromise||(this._startPromise=this.startCore()),this._startPromise}updateRootComponents(e){var t,n;return this._firstUpdate?(this._firstUpdate=!1,null===(t=this._connection)||void 0===t?void 0:t.send("UpdateRootComponents",e,this._applicationState)):null===(n=this._connection)||void 0===n?void 0:n.send("UpdateRootComponents",e,"")}async startCore(){if(this._connection=await this.startConnection(),this._connection.state!==hn.Connected)return!1;const e=JSON.stringify(this._componentManager.initialComponents.map((e=>Ut(e))));if(this._circuitId=await this._connection.invoke("StartCircuit",Je.getBaseURI(),Je.getLocationHref(),e,this._applicationState||""),!this._circuitId)return!1;for(const e of this._options.circuitHandlers)e.onCircuitOpened&&e.onCircuitOpened();return!0}async startConnection(){var e,t;const n=new bo;n.name="blazorpack";const o=(new Ln).withUrl("_blazor").withHubProtocol(n);this._options.configureSignalR(o);const r=o.build();r.on("JS.AttachComponent",((e,t)=>Ae(Bn.Server,this.resolveElement(t),e,!1))),r.on("JS.BeginInvokeJS",this._dispatcher.beginInvokeJSFromDotNet.bind(this._dispatcher)),r.on("JS.EndInvokeDotNet",this._dispatcher.endInvokeDotNetFromJS.bind(this._dispatcher)),r.on("JS.ReceiveByteArray",this._dispatcher.receiveByteArray.bind(this._dispatcher)),r.on("JS.BeginTransmitStream",(e=>{const t=new ReadableStream({start:t=>{r.stream("SendDotNetStreamToJS",e).subscribe({next:e=>t.enqueue(e),complete:()=>t.close(),error:e=>t.error(e)})}});this._dispatcher.supplyDotNetStream(e,t)})),r.on("JS.RenderBatch",(async(e,t)=>{var n,o;this._logger.log(Ot.Debug,`Received render batch with id ${e} and ${t.byteLength} bytes.`),await this._renderQueue.processBatch(e,t,this._connection),null===(o=(n=this._componentManager).onAfterRenderBatch)||void 0===o||o.call(n,Bn.Server)})),r.on("JS.EndUpdateRootComponents",(e=>{var t,n;null===(n=(t=this._componentManager).onAfterUpdateRootComponents)||void 0===n||n.call(t,e)})),r.on("JS.EndLocationChanging",vt._internal.navigationManager.endLocationChanging),r.onclose((e=>{this._interopMethodsForReconnection=function(e){const t=C.get(e);if(!t)throw new Error(`Interop methods are not registered for renderer ${e}`);return C.delete(e),t}(Bn.Server),this._disposed||this._renderingFailed||this._options.reconnectionHandler.onConnectionDown(this._options.reconnectionOptions,e)})),r.on("JS.Error",(e=>{this._renderingFailed=!0,this.unhandledError(e),Bo()}));try{await r.start()}catch(e){if(this.unhandledError(e),"FailedToNegotiateWithServerError"===e.errorType)throw e;Bo(),e.innerErrors&&(e.innerErrors.some((e=>"UnsupportedTransportError"===e.errorType&&e.transport===In.WebSockets))?this._logger.log(Ot.Error,"Unable to connect, please ensure you are using an updated browser that supports WebSockets."):e.innerErrors.some((e=>"FailedToStartTransportError"===e.errorType&&e.transport===In.WebSockets))?this._logger.log(Ot.Error,"Unable to connect, please ensure WebSockets are available. A VPN or proxy may be blocking the connection."):e.innerErrors.some((e=>"DisabledTransportError"===e.errorType&&e.transport===In.LongPolling))&&this._logger.log(Ot.Error,"Unable to initiate a SignalR connection to the server. This might be because the server is not configured to support WebSockets. For additional details, visit https://aka.ms/blazor-server-websockets-error."))}return(null===(t=null===(e=r.connection)||void 0===e?void 0:e.features)||void 0===t?void 0:t.inherentKeepAlive)&&this._logger.log(Ot.Warning,"Failed to connect via WebSockets, using the Long Polling fallback transport. This may be due to a VPN or proxy blocking the connection. To troubleshoot this, visit https://aka.ms/blazor-server-using-fallback-long-polling."),r}async disconnect(){var e;await(null===(e=this._connection)||void 0===e?void 0:e.stop())}async reconnect(){if(!this._circuitId)throw new Error("Circuit host not initialized.");return this._connection.state===hn.Connected||(this._connection=await this.startConnection(),this._interopMethodsForReconnection&&(k(Bn.Server,this._interopMethodsForReconnection),this._interopMethodsForReconnection=void 0),!!await this._connection.invoke("ConnectCircuit",this._circuitId)&&(this._options.reconnectionHandler.onConnectionUp(),!0))}beginInvokeDotNetFromJS(e,t,n,o,r){this.throwIfDispatchingWhenDisposed(),this._connection.send("BeginInvokeDotNetFromJS",e?e.toString():null,t,n,o||0,r)}endInvokeJSFromDotNet(e,t,n){this.throwIfDispatchingWhenDisposed(),this._connection.send("EndInvokeJSFromDotNet",e,t,n)}sendByteArray(e,t){this.throwIfDispatchingWhenDisposed(),this._connection.send("ReceiveByteArray",e,t)}throwIfDispatchingWhenDisposed(){if(this._disposed)throw new Error("The circuit associated with this dispatcher is no longer available.")}sendLocationChanged(e,t,n){return this._connection.send("OnLocationChanged",e,t,n)}sendLocationChanging(e,t,n,o){return this._connection.send("OnLocationChanging",e,t,n,o)}sendJsDataStream(e,t,n){return function(e,t,n,o){setTimeout((async()=>{let r=5,i=(new Date).valueOf();try{const s=t instanceof Blob?t.size:t.byteLength;let a=0,c=0;for(;a1)await e.send("ReceiveJSDataChunk",n,c,h,null);else{if(!await e.invoke("ReceiveJSDataChunk",n,c,h,null))break;const t=(new Date).valueOf(),o=t-i;i=t,r=Math.max(1,Math.round(500/Math.max(1,o)))}a+=l,c++}}catch(t){await e.send("ReceiveJSDataChunk",n,-1,null,t.toString())}}),0)}(this._connection,e,t,n)}resolveElement(e){const t=w(e);if(t)return W(t,!0);const n=Number.parseInt(e);if(!Number.isNaN(n))return H(this._componentManager.resolveRootComponent(n));throw new Error(`Invalid sequence number or identifier '${e}'.`)}getRootComponentManager(){return this._componentManager}unhandledError(e){this._logger.log(Ot.Error,e),this.disconnect()}getDisconnectFormData(){const e=new FormData,t=this._circuitId;return e.append("circuitId",t),e}didRenderingFail(){return this._renderingFailed}isDisposedOrDisposing(){return void 0!==this._disposePromise}sendDisconnectBeacon(){if(this._disposed)return;const e=this.getDisconnectFormData();this._disposed=navigator.sendBeacon("_blazor/disconnect",e)}dispose(){return this._disposePromise||(this._disposePromise=this.disposeCore()),this._disposePromise}async disposeCore(){var e;if(!this._startPromise)return void(this._disposed=!0);await this._startPromise,this._disposed=!0,null===(e=this._connection)||void 0===e||e.stop();const t=this.getDisconnectFormData();fetch("http://github.com/_blazor/disconnect",{method:"POST",body:t});for(const e of this._options.circuitHandlers)e.onCircuitClosed&&e.onCircuitClosed()}}function Fo(e){const t={...$o,...e};return e&&e.reconnectionOptions&&(t.reconnectionOptions={...$o.reconnectionOptions,...e.reconnectionOptions}),t}const $o={configureSignalR:e=>{},logLevel:yt.Warning,initializers:void 0,circuitHandlers:[],reconnectionOptions:{maxRetries:8,retryIntervalMilliseconds:2e4,dialogId:"components-reconnect-modal"}};class Ho{constructor(e,t,n,o){this.maxRetries=t,this.document=n,this.logger=o,this.modal=this.document.createElement("div"),this.modal.id=e,this.maxRetries=t,this.modal.style.cssText=["position: fixed","top: 0","right: 0","bottom: 0","left: 0","z-index: 1050","display: none","overflow: hidden","background-color: #fff","opacity: 0.8","text-align: center","font-weight: bold","transition: visibility 0s linear 500ms"].join(";"),this.message=this.document.createElement("h5"),this.message.style.cssText="margin-top: 20px",this.button=this.document.createElement("button"),this.button.style.cssText="margin:5px auto 5px",this.button.textContent="Retry";const r=this.document.createElement("a");r.addEventListener("click",(()=>location.reload())),r.textContent="reload",this.reloadParagraph=this.document.createElement("p"),this.reloadParagraph.textContent="Alternatively, ",this.reloadParagraph.appendChild(r),this.modal.appendChild(this.message),this.modal.appendChild(this.button),this.modal.appendChild(this.reloadParagraph),this.loader=this.getLoader(),this.message.after(this.loader),this.button.addEventListener("click",(async()=>{this.show();try{await vt.reconnect()||this.rejected()}catch(e){this.logger.log(yt.Error,e),this.failed()}}))}show(){this.document.contains(this.modal)||this.document.body.appendChild(this.modal),this.modal.style.display="block",this.loader.style.display="inline-block",this.button.style.display="none",this.reloadParagraph.style.display="none",this.message.textContent="Attempting to reconnect to the server...",this.modal.style.visibility="hidden",setTimeout((()=>{this.modal.style.visibility="visible"}),0)}update(e){this.message.textContent=`Attempting to reconnect to the server: ${e} of ${this.maxRetries}`}hide(){this.modal.style.display="none"}failed(){this.button.style.display="block",this.reloadParagraph.style.display="none",this.loader.style.display="none";const e=this.document.createTextNode("Reconnection failed. Try "),t=this.document.createElement("a");t.textContent="reloading",t.setAttribute("href",""),t.addEventListener("click",(()=>location.reload()));const n=this.document.createTextNode(" the page if you're unable to reconnect.");this.message.replaceChildren(e,t,n)}rejected(){this.button.style.display="none",this.reloadParagraph.style.display="none",this.loader.style.display="none";const e=this.document.createTextNode("Could not reconnect to the server. "),t=this.document.createElement("a");t.textContent="Reload",t.setAttribute("href",""),t.addEventListener("click",(()=>location.reload()));const n=this.document.createTextNode(" the page to restore functionality.");this.message.replaceChildren(e,t,n)}getLoader(){const e=this.document.createElement("div");return e.style.cssText=["border: 0.3em solid #f3f3f3","border-top: 0.3em solid #3498db","border-radius: 50%","width: 2em","height: 2em","display: inline-block"].join(";"),e.animate([{transform:"rotate(0deg)"},{transform:"rotate(360deg)"}],{duration:2e3,iterations:1/0}),e}}class Wo{constructor(e,t,n){this.dialog=e,this.maxRetries=t,this.document=n,this.document=n;const o=this.document.getElementById(Wo.MaxRetriesId);o&&(o.innerText=this.maxRetries.toString())}show(){this.removeClasses(),this.dialog.classList.add(Wo.ShowClassName)}update(e){const t=this.document.getElementById(Wo.CurrentAttemptId);t&&(t.innerText=e.toString())}hide(){this.removeClasses(),this.dialog.classList.add(Wo.HideClassName)}failed(){this.removeClasses(),this.dialog.classList.add(Wo.FailedClassName)}rejected(){this.removeClasses(),this.dialog.classList.add(Wo.RejectedClassName)}removeClasses(){this.dialog.classList.remove(Wo.ShowClassName,Wo.HideClassName,Wo.FailedClassName,Wo.RejectedClassName)}}Wo.ShowClassName="components-reconnect-show",Wo.HideClassName="components-reconnect-hide",Wo.FailedClassName="components-reconnect-failed",Wo.RejectedClassName="components-reconnect-rejected",Wo.MaxRetriesId="components-reconnect-max-retries",Wo.CurrentAttemptId="components-reconnect-current-attempt";class jo{constructor(e,t,n){this._currentReconnectionProcess=null,this._logger=e,this._reconnectionDisplay=t,this._reconnectCallback=n||vt.reconnect}onConnectionDown(e,t){if(!this._reconnectionDisplay){const t=document.getElementById(e.dialogId);this._reconnectionDisplay=t?new Wo(t,e.maxRetries,document):new Ho(e.dialogId,e.maxRetries,document,this._logger)}this._currentReconnectionProcess||(this._currentReconnectionProcess=new zo(e,this._logger,this._reconnectCallback,this._reconnectionDisplay))}onConnectionUp(){this._currentReconnectionProcess&&(this._currentReconnectionProcess.dispose(),this._currentReconnectionProcess=null)}}class zo{constructor(e,t,n,o){this.logger=t,this.reconnectCallback=n,this.isDisposed=!1,this.reconnectDisplay=o,this.reconnectDisplay.show(),this.attemptPeriodicReconnection(e)}dispose(){this.isDisposed=!0,this.reconnectDisplay.hide()}async attemptPeriodicReconnection(e){for(let t=0;tzo.MaximumFirstRetryInterval?zo.MaximumFirstRetryInterval:e.retryIntervalMilliseconds;if(await this.delay(n),this.isDisposed)break;try{return await this.reconnectCallback()?void 0:void this.reconnectDisplay.rejected()}catch(e){this.logger.log(yt.Error,e)}}this.reconnectDisplay.failed()}delay(e){return new Promise((t=>setTimeout(t,e)))}}zo.MaximumFirstRetryInterval=3e3;class qo{constructor(e=!0,t,n,o=0){this.singleRuntime=e,this.logger=t,this.webRendererId=o,this.afterStartedCallbacks=[],n&&this.afterStartedCallbacks.push(...n)}async importInitializersAsync(e,t){await Promise.all(e.map((e=>async function(e,n){const o=function(e){const t=document.baseURI;return t.endsWith("/")?`${t}${e}`:`${t}/${e}`}(n),r=await import(o);if(void 0!==r){if(e.singleRuntime){const{beforeStart:n,afterStarted:o,beforeWebAssemblyStart:s,afterWebAssemblyStarted:a,beforeServerStart:c,afterServerStarted:l}=r;let h=n;e.webRendererId===Bn.Server&&c&&(h=c),e.webRendererId===Bn.WebAssembly&&s&&(h=s);let d=o;return e.webRendererId===Bn.Server&&l&&(d=l),e.webRendererId===Bn.WebAssembly&&a&&(d=a),i(e,h,d,t)}return function(e,t,n){var r;const s=n[0],{beforeStart:a,afterStarted:c,beforeWebStart:l,afterWebStarted:h,beforeWebAssemblyStart:d,afterWebAssemblyStarted:u,beforeServerStart:p,afterServerStarted:f}=t,g=!(l||h||d||u||p||f||!a&&!c),m=g&&s.enableClassicInitializers;if(g&&!s.enableClassicInitializers)null===(r=e.logger)||void 0===r||r.log(yt.Warning,`Initializer '${o}' will be ignored because multiple runtimes are available. use 'before(web|webAssembly|server)Start' and 'after(web|webAssembly|server)Started?' instead.)`);else if(m)return i(e,a,c,n);if(function(e){e.webAssembly?e.webAssembly.initializers||(e.webAssembly.initializers={beforeStart:[],afterStarted:[]}):e.webAssembly={initializers:{beforeStart:[],afterStarted:[]}},e.circuit?e.circuit.initializers||(e.circuit.initializers={beforeStart:[],afterStarted:[]}):e.circuit={initializers:{beforeStart:[],afterStarted:[]}}}(s),d&&s.webAssembly.initializers.beforeStart.push(d),u&&s.webAssembly.initializers.afterStarted.push(u),p&&s.circuit.initializers.beforeStart.push(p),f&&s.circuit.initializers.afterStarted.push(f),h&&e.afterStartedCallbacks.push(h),l)return l(s)}(e,r,t)}function i(e,t,n,o){if(n&&e.afterStartedCallbacks.push(n),t)return t(...o)}}(this,e))))}async invokeAfterStartedCallbacks(e){const t=function(e){var t;return null===(t=I.get(e))||void 0===t?void 0:t[1]}(this.webRendererId);t&&await t,await Promise.all(this.afterStartedCallbacks.map((t=>t(e))))}}let Jo,Ko,Vo,Xo,Go,Yo,Qo,Zo;function er(e){if(Xo)throw new Error("Circuit options have already been configured.");if(Xo)throw new Error("WebAssembly options have already been configured.");Jo=async function(e){const t=await e;Xo=Fo(t)}(e)}function tr(e){if(void 0!==Yo)throw new Error("Blazor Server has already started.");return Yo=new Promise(nr.bind(null,e)),Yo}async function nr(e,t,n){await Jo;const o=await async function(e){if(e.initializers)return await Promise.all(e.initializers.beforeStart.map((t=>t(e)))),new qo(!1,void 0,e.initializers.afterStarted,Bn.Server);const t=await fetch("http://github.com/_blazor/initializers",{method:"GET",credentials:"include",cache:"no-cache"}),n=await t.json(),o=new qo(!0,void 0,void 0,Bn.Server);return await o.importInitializersAsync(n,[e]),o}(Xo);if(Ko=It(document)||"",Go=new bt(Xo.logLevel),Vo=new Oo(e,Ko,Xo,Go),Go.log(yt.Information,"Starting up Blazor server-side application."),vt.reconnect=async()=>!(Vo.didRenderingFail()||!await Vo.reconnect()&&(Go.log(yt.Information,"Reconnection attempt to the circuit was rejected by the server. This may indicate that the associated state is no longer available on the server."),1)),vt.defaultReconnectionHandler=new jo(Go),Xo.reconnectionHandler=Xo.reconnectionHandler||vt.defaultReconnectionHandler,vt._internal.navigationManager.listenForNavigationEvents(Bn.Server,((e,t,n)=>Vo.sendLocationChanged(e,t,n)),((e,t,n,o)=>Vo.sendLocationChanging(e,t,n,o))),vt._internal.forceCloseConnection=()=>Vo.disconnect(),vt._internal.sendJSDataStream=(e,t,n)=>Vo.sendJsDataStream(e,t,n),!await Vo.start())return Go.log(yt.Error,"Failed to start the circuit."),void t();const r=()=>{Vo.sendDisconnectBeacon()};vt.disconnect=r,window.addEventListener("unload",r,{capture:!1,once:!0}),Go.log(yt.Information,"Blazor server-side application started."),o.invokeAfterStartedCallbacks(vt),t()}async function or(){if(!Yo)throw new Error("Cannot start the circuit until Blazor Server has started.");return!(!Vo||Vo.isDisposedOrDisposing())||(Qo?await Qo:(await Yo,(!Vo||!Vo.didRenderingFail())&&(Vo&&Vo.isDisposedOrDisposing()&&(Ko=It(document)||"",Vo=new Oo(Vo.getRootComponentManager(),Ko,Xo,Go)),Qo=Vo.start(),async function(e){await e,Qo===e&&(Qo=void 0)}(Qo),Qo)))}function rr(e){if(Vo&&!Vo.isDisposedOrDisposing())return Vo.updateRootComponents(e);!async function(e){await Yo,await or()&&Vo.updateRootComponents(e)}(e)}function ir(e){return Zo=e,Zo}var sr,ar;const cr=navigator,lr=cr.userAgentData&&cr.userAgentData.brands,hr=lr&&lr.length>0?lr.some((e=>"Google Chrome"===e.brand||"Microsoft Edge"===e.brand||"Chromium"===e.brand)):window.chrome,dr=null!==(ar=null===(sr=cr.userAgentData)||void 0===sr?void 0:sr.platform)&&void 0!==ar?ar:navigator.platform;function ur(e){return 0!==e.debugLevel&&(hr||navigator.userAgent.includes("Firefox"))}let pr,fr,gr,mr,vr,yr,wr;const br=Math.pow(2,32),_r=Math.pow(2,21)-1;let Sr=null;function Cr(e){return fr.getI32(e)}const Er={load:function(e,t){return async function(e,t){const{dotnet:n}=await async function(e){if("undefined"==typeof WebAssembly||!WebAssembly.validate)throw new Error("This browser does not support WebAssembly.");let t="_framework/dotnet.js";if(e.loadBootResource){const n="dotnetjs",o=e.loadBootResource(n,"dotnet.js",t,"","js-module-dotnet");if("string"==typeof o)t=o;else if(o)throw new Error(`For a ${n} resource, custom loaders must supply a URI string.`)}const n=new URL(t,document.baseURI).toString();return await import(n)}(e),o=function(e,t){const n={maxParallelDownloads:1e6,enableDownloadRetry:!1,applicationEnvironment:e.environment},o={...window.Module||{},onConfigLoaded:async n=>{n.environmentVariables||(n.environmentVariables={}),"sharded"===n.globalizationMode&&(n.environmentVariables.__BLAZOR_SHARDED_ICU="1"),vt._internal.getApplicationEnvironment=()=>n.applicationEnvironment,null==t||t(n),wr=await async function(e,t){var n,o,r;if(e.initializers)return await Promise.all(e.initializers.beforeStart.map((t=>t(e)))),new qo(!1,void 0,e.initializers.afterStarted,Bn.WebAssembly);{const i=[e,null!==(o=null===(n=t.resources)||void 0===n?void 0:n.extensions)&&void 0!==o?o:{}],s=new qo(!0,void 0,void 0,Bn.WebAssembly),a=Object.keys((null===(r=null==t?void 0:t.resources)||void 0===r?void 0:r.libraryInitializers)||{});return await s.importInitializersAsync(a,i),s}}(e,n)},onDownloadResourceProgress:Ir,config:n,disableDotnet6Compatibility:!1,out:Tr,err:Rr};return o}(e,t);e.applicationCulture&&n.withApplicationCulture(e.applicationCulture),e.environment&&n.withApplicationEnvironment(e.environment),e.loadBootResource&&n.withResourceLoader(e.loadBootResource),n.withModuleConfig(o),e.configureRuntime&&e.configureRuntime(n),yr=await n.create()}(e,t)},start:function(){return async function(){if(!yr)throw new Error("The runtime must be loaded it gets configured.");const{MONO:t,BINDING:n,Module:o,setModuleImports:r,INTERNAL:i,getConfig:s,invokeLibraryInitializers:a}=yr;gr=o,pr=n,fr=t,vr=i,function(e){const t=dr.match(/^Mac/i)?"Cmd":"Alt";ur(e)&&console.info(`Debugging hotkey: Shift+${t}+D (when application has focus)`),document.addEventListener("keydown",(t=>{t.shiftKey&&(t.metaKey||t.altKey)&&"KeyD"===t.code&&(ur(e)?navigator.userAgent.includes("Firefox")?async function(){const e=await fetch(`_framework/debug?url=${encodeURIComponent(location.href)}&isFirefox=true`);200!==e.status&&console.warn(await e.text())}():hr?function(){const e=document.createElement("a");e.href=`_framework/debug?url=${encodeURIComponent(location.href)}`,e.target="_blank",e.rel="noopener noreferrer",e.click()}():console.error("Currently, only Microsoft Edge (80+), Google Chrome, or Chromium, are supported for debugging."):console.error("Cannot start debugging, because the application was not compiled with debugging enabled."))}))}(s()),vt.runtime=yr,vt._internal.dotNetCriticalError=Rr,r("blazor-internal",{Blazor:{_internal:vt._internal}});const c=await yr.getAssemblyExports("Microsoft.AspNetCore.Components.WebAssembly");return Object.assign(vt._internal,{dotNetExports:{...c.Microsoft.AspNetCore.Components.WebAssembly.Services.DefaultWebAssemblyJSRuntime}}),mr=e.attachDispatcher({beginInvokeDotNetFromJS:(e,t,n,o,r)=>{if(Dr(),!o&&!t)throw new Error("Either assemblyName or dotNetObjectId must have a non null value.");const i=o?o.toString():t;vt._internal.dotNetExports.BeginInvokeDotNet(e?e.toString():null,i,n,r)},endInvokeJSFromDotNet:(e,t,n)=>{vt._internal.dotNetExports.EndInvokeJS(n)},sendByteArray:(e,t)=>{vt._internal.dotNetExports.ReceiveByteArrayFromJS(e,t)},invokeDotNetFromJS:(e,t,n,o)=>(Dr(),vt._internal.dotNetExports.InvokeDotNet(e||null,t,null!=n?n:0,o))}),{invokeLibraryInitializers:a}}()},callEntryPoint:async function(){try{await yr.runMain(yr.getConfig().mainAssemblyName,[])}catch(e){console.error(e),Bo()}},toUint8Array:function(e){const t=Ar(e),n=Cr(t),o=new Uint8Array(n);return o.set(gr.HEAPU8.subarray(t+4,t+4+n)),o},getArrayLength:function(e){return Cr(Ar(e))},getArrayEntryPtr:function(e,t,n){return Ar(e)+4+t*n},getObjectFieldsBaseAddress:function(e){return e+8},readInt16Field:function(e,t){return n=e+(t||0),fr.getI16(n);var n},readInt32Field:function(e,t){return Cr(e+(t||0))},readUint64Field:function(e,t){return function(e){const t=e>>2,n=gr.HEAPU32[t+1];if(n>_r)throw new Error(`Cannot read uint64 with high order part ${n}, because the result would exceed Number.MAX_SAFE_INTEGER.`);return n*br+gr.HEAPU32[t]}(e+(t||0))},readFloatField:function(e,t){return n=e+(t||0),fr.getF32(n);var n},readObjectField:function(e,t){return Cr(e+(t||0))},readStringField:function(e,t,n){const o=Cr(e+(t||0));if(0===o)return null;if(n){const e=pr.unbox_mono_obj(o);return"boolean"==typeof e?e?"":null:e}return pr.conv_string(o)},readStructField:function(e,t){return e+(t||0)},beginHeapLock:function(){return Dr(),Sr=xr.create(),Sr},invokeWhenHeapUnlocked:function(e){Sr?Sr.enqueuePostReleaseAction(e):e()}};function Ir(e,t){const n=e/t*100;document.documentElement.style.setProperty("--blazor-load-percentage",`${n}%`),document.documentElement.style.setProperty("--blazor-load-percentage-text",`"${Math.floor(n)}%"`)}const kr=["DEBUGGING ENABLED"],Tr=e=>kr.indexOf(e)<0&&console.log(e),Rr=e=>{console.error(e||"(null)"),Bo()};function Ar(e){return e+12}function Dr(){if(Sr)throw new Error("Assertion failed - heap is currently locked")}class xr{enqueuePostReleaseAction(e){this.postReleaseActions||(this.postReleaseActions=[]),this.postReleaseActions.push(e)}release(){var e;if(Sr!==this)throw new Error("Trying to release a lock which isn't current");for(vr.mono_wasm_gc_unlock(),Sr=null;null===(e=this.postReleaseActions)||void 0===e?void 0:e.length;)this.postReleaseActions.shift()(),Dr()}static create(){return vr.mono_wasm_gc_lock(),new xr}}class Nr{constructor(e){this.batchAddress=e,this.arrayRangeReader=Pr,this.arrayBuilderSegmentReader=Mr,this.diffReader=Ur,this.editReader=Lr,this.frameReader=Br}updatedComponents(){return Zo.readStructField(this.batchAddress,0)}referenceFrames(){return Zo.readStructField(this.batchAddress,Pr.structLength)}disposedComponentIds(){return Zo.readStructField(this.batchAddress,2*Pr.structLength)}disposedEventHandlerIds(){return Zo.readStructField(this.batchAddress,3*Pr.structLength)}updatedComponentsEntry(e,t){return Or(e,t,Ur.structLength)}referenceFramesEntry(e,t){return Or(e,t,Br.structLength)}disposedComponentIdsEntry(e,t){const n=Or(e,t,4);return Zo.readInt32Field(n)}disposedEventHandlerIdsEntry(e,t){const n=Or(e,t,8);return Zo.readUint64Field(n)}}const Pr={structLength:8,values:e=>Zo.readObjectField(e,0),count:e=>Zo.readInt32Field(e,4)},Mr={structLength:12,values:e=>{const t=Zo.readObjectField(e,0),n=Zo.getObjectFieldsBaseAddress(t);return Zo.readObjectField(n,0)},offset:e=>Zo.readInt32Field(e,4),count:e=>Zo.readInt32Field(e,8)},Ur={structLength:4+Mr.structLength,componentId:e=>Zo.readInt32Field(e,0),edits:e=>Zo.readStructField(e,4),editsEntry:(e,t)=>Or(e,t,Lr.structLength)},Lr={structLength:20,editType:e=>Zo.readInt32Field(e,0),siblingIndex:e=>Zo.readInt32Field(e,4),newTreeIndex:e=>Zo.readInt32Field(e,8),moveToSiblingIndex:e=>Zo.readInt32Field(e,8),removedAttributeName:e=>Zo.readStringField(e,16)},Br={structLength:36,frameType:e=>Zo.readInt16Field(e,4),subtreeLength:e=>Zo.readInt32Field(e,8),elementReferenceCaptureId:e=>Zo.readStringField(e,16),componentId:e=>Zo.readInt32Field(e,12),elementName:e=>Zo.readStringField(e,16),textContent:e=>Zo.readStringField(e,16),markupContent:e=>Zo.readStringField(e,16),attributeName:e=>Zo.readStringField(e,16),attributeValue:e=>Zo.readStringField(e,24,!0),attributeEventHandlerId:e=>Zo.readUint64Field(e,8)};function Or(e,t,n){return Zo.getArrayEntryPtr(e,t,n)}class Fr{constructor(e){this.componentManager=e}resolveRegisteredElement(e){const t=Number.parseInt(e);if(!Number.isNaN(t))return H(this.componentManager.resolveRootComponent(t))}getParameterValues(e){return this.componentManager.initialComponents[e].parameterValues}getParameterDefinitions(e){return this.componentManager.initialComponents[e].parameterDefinitions}getTypeName(e){return this.componentManager.initialComponents[e].typeName}getAssembly(e){return this.componentManager.initialComponents[e].assembly}getCount(){return this.componentManager.initialComponents.length}}let $r,Hr,Wr,jr,zr,qr=!1,Jr=!1,Kr=!0,Vr=!1;const Xr=new Promise((e=>{zr=e}));let Gr;const Yr=new Promise((e=>{Gr=e}));let Qr;function Zr(e){if(void 0!==jr)throw new Error("Blazor WebAssembly has already started.");return jr=new Promise(ei.bind(null,e)),jr}async function ei(e,t,n){(function(){if(window.parent!==window&&!window.opener&&window.frameElement){const e=window.sessionStorage&&window.sessionStorage["Microsoft.AspNetCore.Components.WebAssembly.Authentication.CachedAuthSettings"],t=e&&JSON.parse(e);return t&&t.redirect_uri&&location.href.startsWith(t.redirect_uri)}return!1})()&&await new Promise((()=>{}));const o=ti();!function(e){const t=D;D=(e,n,o)=>{((e,t,n)=>{const o=De(e);(null==o?void 0:o.eventDelegator.getHandler(t))&&Er.invokeWhenHeapUnlocked(n)})(e,n,(()=>t(e,n,o)))}}(),vt._internal.applyHotReload=(e,t,n,o)=>{mr.invokeDotNetStaticMethod("Microsoft.AspNetCore.Components.WebAssembly","ApplyHotReloadDelta",e,t,n,o)},vt._internal.getApplyUpdateCapabilities=()=>mr.invokeDotNetStaticMethod("Microsoft.AspNetCore.Components.WebAssembly","GetApplyUpdateCapabilities"),vt._internal.invokeJSFromDotNet=oi,vt._internal.invokeJSJson=ri,vt._internal.endInvokeDotNetFromJS=ii,vt._internal.receiveWebAssemblyDotNetDataStream=si,vt._internal.receiveByteArray=ai;const r=ir(Er);vt.platform=r,vt._internal.renderBatch=(e,t)=>{const n=Er.beginHeapLock();try{xe(e,new Nr(t))}finally{n.release()}},vt._internal.navigationManager.listenForNavigationEvents(Bn.WebAssembly,(async(e,t,n)=>{await mr.invokeDotNetStaticMethodAsync("Microsoft.AspNetCore.Components.WebAssembly","NotifyLocationChanged",e,t,n)}),(async(e,t,n,o)=>{const r=await mr.invokeDotNetStaticMethodAsync("Microsoft.AspNetCore.Components.WebAssembly","NotifyLocationChangingAsync",t,n,o);vt._internal.navigationManager.endLocationChanging(e,r)}));const i=new Fr(e);let s;vt._internal.registeredComponents={getRegisteredComponentsCount:()=>i.getCount(),getAssembly:e=>i.getAssembly(e),getTypeName:e=>i.getTypeName(e),getParameterDefinitions:e=>i.getParameterDefinitions(e)||"",getParameterValues:e=>i.getParameterValues(e)||""},vt._internal.getPersistedState=()=>kt(document,Ct)||"",vt._internal.getInitialComponentsUpdate=()=>Yr,vt._internal.updateRootComponents=e=>{var t;return null===(t=vt._internal.dotNetExports)||void 0===t?void 0:t.UpdateRootComponentsCore(e)},vt._internal.endUpdateRootComponents=t=>{var n;return null===(n=e.onAfterUpdateRootComponents)||void 0===n?void 0:n.call(e,t)},vt._internal.attachRootComponentToElement=(e,t,n)=>{const o=i.resolveRegisteredElement(e);o?Ae(n,o,t,!1):function(e,t,n){const o="::before";let r=!1;if(e.endsWith("::after"))e=e.slice(0,-7),r=!0;else if(e.endsWith(o))throw new Error(`The '${o}' selector is not supported.`);const i=w(e)||document.querySelector(e);if(!i)throw new Error(`Could not find any element matching selector '${e}'.`);Ae(n,W(i,!0),t,r)}(e,t,n)};try{await o,s=await r.start()}catch(e){throw new Error(`Failed to start platform. Reason: ${e}`)}r.callEntryPoint(),wr.invokeAfterStartedCallbacks(vt),Jr=!0,t()}function ti(){return null!=Wr||(Wr=(async()=>{await Hr;const e=null!=$r?$r:{},t=null==$r?void 0:$r.configureRuntime;e.configureRuntime=e=>{null==t||t(e),Vr&&e.withEnvironmentVariable("__BLAZOR_WEBASSEMBLY_WAIT_FOR_ROOT_COMPONENTS","true")},await Er.load(e,zr),qr=!0})()),Wr}function ni(){return qr}function oi(t,n,o,r){const i=Er.readStringField(t,0),s=Er.readInt32Field(t,4),a=Er.readStringField(t,8),c=Er.readUint64Field(t,20);if(null!==a){const e=Er.readUint64Field(t,12);if(0!==e)return mr.beginInvokeJSFromDotNet(e,i,a,s,c),0;{const e=mr.invokeJSFromDotNet(i,a,s,c);return null===e?0:pr.js_string_to_mono_string(e)}}{const t=e.findJSFunction(i,c).call(null,n,o,r);switch(s){case e.JSCallResultType.Default:return t;case e.JSCallResultType.JSObjectReference:return e.createJSObjectReference(t).__jsObjectId;case e.JSCallResultType.JSStreamReference:{const n=e.createJSStreamReference(t),o=JSON.stringify(n);return pr.js_string_to_mono_string(o)}case e.JSCallResultType.JSVoidResult:return null;default:throw new Error(`Invalid JS call result type '${s}'.`)}}}function ri(e,t,n,o,r){return 0!==r?(mr.beginInvokeJSFromDotNet(r,e,o,n,t),null):mr.invokeJSFromDotNet(e,o,n,t)}function ii(e,t,n){mr.endInvokeDotNetFromJS(e,t,n)}function si(e,t,n,o){!function(e,t,n,o,r){let i=mt.get(t);if(!i){const n=new ReadableStream({start(e){mt.set(t,e),i=e}});e.supplyDotNetStream(t,n)}r?(i.error(r),mt.delete(t)):0===o?(i.close(),mt.delete(t)):i.enqueue(n.length===o?n:n.subarray(0,o))}(mr,e,t,n,o)}function ai(e,t){mr.receiveByteArray(e,t)}function ci(e,t){t.namespaceURI?e.setAttributeNS(t.namespaceURI,t.name,t.value):e.setAttribute(t.name,t.value)}Hr=new Promise((e=>{Qr=e}));const li="data-permanent";var hi,di;!function(e){e[e.None=0]="None",e[e.Some=1]="Some",e[e.Infinite=2]="Infinite"}(hi||(hi={})),function(e){e.Keep="keep",e.Update="update",e.Insert="insert",e.Delete="delete"}(di||(di={}));class ui{static create(e,t,n){return 0===t&&n===e.length?e:new ui(e,t,n)}constructor(e,t,n){this.source=e,this.startIndex=t,this.length=n}item(e){return this.source.item(e+this.startIndex)}forEach(e,t){for(let t=0;t=n&&s>=o&&r(e.item(i),t.item(s))===hi.None;)i--,s--,a++;return a}(e,t,o,o,n),i=function(e){var t;const n=[];let o=e.length-1,r=(null===(t=e[o])||void 0===t?void 0:t.length)-1;for(;o>0||r>0;){const t=0===o?di.Insert:0===r?di.Delete:e[o][r];switch(n.unshift(t),t){case di.Keep:case di.Update:o--,r--;break;case di.Insert:r--;break;case di.Delete:o--}}return n}(function(e,t,n){const o=[],r=[],i=e.length,s=t.length;if(0===i&&0===s)return[];for(let e=0;e<=i;e++)(o[e]=Array(s+1))[0]=e,r[e]=Array(s+1);const a=o[0];for(let e=1;e<=s;e++)a[e]=e;for(let a=1;a<=i;a++)for(let i=1;i<=s;i++){const s=n(e.item(a-1),t.item(i-1)),c=o[a-1][i]+1,l=o[a][i-1]+1;let h;switch(s){case hi.None:h=o[a-1][i-1];break;case hi.Some:h=o[a-1][i-1]+1;break;case hi.Infinite:h=Number.MAX_VALUE}h{history.pushState(null,"",e),Ui(e,!0)}))}function Pi(e){Oe()||Ui(location.href,!1)}function Mi(e){var t,n,o,r,i;if(Oe()||e.defaultPrevented)return;const s=e.target;if(s instanceof HTMLFormElement){if(!function(e){const t=e.getAttribute("data-enhance");return"string"==typeof t&&""===t||"true"===(null==t?void 0:t.toLowerCase())}(s))return;const a=(null===(t=e.submitter)||void 0===t?void 0:t.getAttribute("formmethod"))||s.method;if("dialog"===a)return void console.warn('A form cannot be enhanced when its method is "dialog".');const c=(null===(n=e.submitter)||void 0===n?void 0:n.getAttribute("formtarget"))||s.target;if(""!==c&&"_self"!==c)return void console.warn('A form cannot be enhanced when its target is different from the default value "_self".');e.preventDefault();const l=new URL((null===(o=e.submitter)||void 0===o?void 0:o.getAttribute("formaction"))||s.action,document.baseURI),h={method:a},d=new FormData(s),u=null===(r=e.submitter)||void 0===r?void 0:r.getAttribute("name"),p=e.submitter.getAttribute("value");u&&p&&d.append(u,p);const f=new URLSearchParams(d).toString();if("get"===h.method)l.search=f,history.pushState(null,"",l.toString());else{const t=(null===(i=e.submitter)||void 0===i?void 0:i.getAttribute("formenctype"))||s.enctype;"multipart/form-data"===t?h.body=d:(h.body=f,h.headers={"content-type":t,accept:Ii})}Ui(l.toString(),!1,h)}}async function Ui(e,t,n){Ri=!0,null==ki||ki.abort(),function(e,t){null==ke||ke(e,t)}(e,t),ki=new AbortController;const o=ki.signal,r=fetch(e,Object.assign({signal:o,mode:"no-cors",headers:{accept:Ii}},n));let i=null;if(await async function(e,t,n,o){let r;try{if(r=await e,!r.body)return void n(r,"");const t=r.headers.get("ssr-framing");if(!t){const e=await r.text();return void n(r,e)}let o=!0;await r.body.pipeThrough(new TextDecoderStream).pipeThrough(function(e){let t="";return new TransformStream({transform(n,o){if(t+=n,t.indexOf(e,t.length-n.length-e.length)>=0){const n=t.split(e);n.slice(0,-1).forEach((e=>o.enqueue(e))),t=n[n.length-1]}},flush(e){e.enqueue(t)}})}(`\x3c!--${t}--\x3e`)).pipeTo(new WritableStream({write(e){o?(o=!1,n(r,e)):(e=>{const t=document.createRange().createContextualFragment(e);for(;t.firstChild;)document.body.appendChild(t.firstChild)})(e)}}))}catch(e){if("AbortError"===e.name&&t.aborted)return;throw e}}(r,o,((t,o)=>{const r=!(null==n?void 0:n.method)||"get"===n.method,s=t.status>=200&&t.status<300;if("opaque"===t.type){if(r)return void Bi(e);throw new Error("Enhanced navigation does not support making a non-GET request to an endpoint that redirects to an external origin. Avoid enabling enhanced navigation for form posts that may perform external redirections.")}if(s&&"allow"!==t.headers.get("blazor-enhanced-nav")){if(r)return void Bi(e);throw new Error("Enhanced navigation does not support making a non-GET request to a non-Blazor endpoint. Avoid enabling enhanced navigation for forms that post to a non-Blazor endpoint.")}t.redirected&&(r?history.replaceState(null,"",t.url):t.url!==location.href&&history.pushState(null,"",t.url),e=t.url);const a=t.headers.get("blazor-enhanced-nav-redirect-location");if(a)return void location.replace(a);t.redirected||r||!s||(function(e){const t=new URL(e.url),n=new URL(Ai);return t.protocol===n.protocol&&t.host===n.host&&t.port===n.port&&t.pathname===n.pathname}(t)?location.href!==Ai&&history.pushState(null,"",Ai):i=`Cannot perform enhanced form submission that changes the URL (except via a redirection), because then back/forward would not work. Either remove this form's 'action' attribute, or change its method to 'get', or do not mark it as enhanced.\nOld URL: ${location.href}\nNew URL: ${t.url}`),Ai=t.url;const c=t.headers.get("content-type");if((null==c?void 0:c.startsWith("text/html"))&&o){const e=(new DOMParser).parseFromString(o,"text/html");fi(document,e),Ti.documentUpdated()}else(null==c?void 0:c.startsWith("text/"))&&o?Li(o):s||o?r?Bi(e):Li(`Error: ${n.method} request to ${e} returned non-HTML content of type ${c||"unspecified"}.`):Li(`Error: ${t.status} ${t.statusText}`)})),!o.aborted){const t=e.indexOf("#");if(t>=0){const n=e.substring(t+1),o=document.getElementById(n);null==o||o.scrollIntoView()}if(Ri=!1,Ti.enhancedNavigationCompleted(),i)throw new Error(i)}}function Li(e){document.documentElement.textContent=e;const t=document.documentElement.style;t.fontFamily="consolas, monospace",t.whiteSpace="pre-wrap",t.padding="1rem"}function Bi(e){history.replaceState(null,"",e+"?"),location.replace(e)}let Oi,Fi=!0;class $i extends HTMLElement{connectedCallback(){var e;const t=this.parentNode;null===(e=t.parentNode)||void 0===e||e.removeChild(t),t.childNodes.forEach((e=>{if(e instanceof HTMLTemplateElement){const t=e.getAttribute("blazor-component-id");if(t)"true"!==e.getAttribute("enhanced-nav")&&ki||function(e,t){const n=function(e){const t=`bl:${e}`,n=document.createNodeIterator(document,NodeFilter.SHOW_COMMENT);let o=null;for(;(o=n.nextNode())&&o.textContent!==t;);if(!o)return null;const r=`/bl:${e}`;let i=null;for(;(i=n.nextNode())&&i.textContent!==r;);return i?{startMarker:o,endMarker:i}:null}(e);if(n){const{startMarker:e,endMarker:o}=n;if(Fi)fi({startExclusive:e,endExclusive:o},t);else{const n=o.parentNode,r=new Range;for(r.setStart(e,e.textContent.length),r.setEnd(o,0),r.deleteContents();t.childNodes[0];)n.insertBefore(t.childNodes[0],o)}Oi.documentUpdated()}}(t,e.content);else switch(e.getAttribute("type")){case"redirection":const t=Le(e.content.textContent),n="form-post"===e.getAttribute("from");"true"===e.getAttribute("enhanced")&&Pe(t)?(n?history.pushState(null,"",t):history.replaceState(null,"",t),Ui(t,!1)):n?location.assign(t):location.replace(t);break;case"error":Li(e.content.textContent||"Error")}}}))}}class Hi{constructor(e){var t;this._circuitInactivityTimeoutMs=e,this._rootComponentsBySsrComponentId=new Map,this._seenDescriptors=new Set,this._pendingOperationBatches={},this._nextOperationBatchId=1,this._nextSsrComponentId=1,this._didWebAssemblyFailToLoadQuickly=!1,this._isComponentRefreshPending=!1,this.initialComponents=[],t=()=>{this.rootComponentsMayRequireRefresh()},E.push(t)}onAfterRenderBatch(e){e===Bn.Server&&this.circuitMayHaveNoRootComponents()}onDocumentUpdated(){this.rootComponentsMayRequireRefresh()}onEnhancedNavigationCompleted(){this.rootComponentsMayRequireRefresh()}registerComponent(e){if(this._seenDescriptors.has(e))return;"auto"!==e.type&&"webassembly"!==e.type||this.startLoadingWebAssemblyIfNotStarted();const t=this._nextSsrComponentId++;this._seenDescriptors.add(e),this._rootComponentsBySsrComponentId.set(t,{descriptor:e,ssrComponentId:t})}unregisterComponent(e){this._seenDescriptors.delete(e.descriptor),this._rootComponentsBySsrComponentId.delete(e.ssrComponentId),this.circuitMayHaveNoRootComponents()}async startLoadingWebAssemblyIfNotStarted(){if(void 0!==Wr)return;Vr=!0;const e=ti();setTimeout((()=>{ni()||this.onWebAssemblyFailedToLoadQuickly()}),vt._internal.loadWebAssemblyQuicklyTimeout);const t=await Xr;(function(e){if(!e.cacheBootResources)return!1;const t=Wi(e);if(!t)return!1;const n=window.localStorage.getItem(t.key);return t.value===n})(t)||this.onWebAssemblyFailedToLoadQuickly(),await e,function(e){const t=Wi(e);t&&window.localStorage.setItem(t.key,t.value)}(t),this.rootComponentsMayRequireRefresh()}onWebAssemblyFailedToLoadQuickly(){this._didWebAssemblyFailToLoadQuickly||(this._didWebAssemblyFailToLoadQuickly=!0,this.rootComponentsMayRequireRefresh())}startCircutIfNotStarted(){return void 0===Yo?tr(this):!Vo||Vo.isDisposedOrDisposing()?or():void 0}async startWebAssemblyIfNotStarted(){this.startLoadingWebAssemblyIfNotStarted(),void 0===jr&&await Zr(this)}rootComponentsMayRequireRefresh(){this._isComponentRefreshPending||(this._isComponentRefreshPending=!0,setTimeout((()=>{this._isComponentRefreshPending=!1,this.refreshRootComponents(this._rootComponentsBySsrComponentId.values())}),0))}circuitMayHaveNoRootComponents(){if(this.rendererHasExistingOrPendingComponents(Bn.Server,"server","auto"))return clearTimeout(this._circuitInactivityTimeoutId),void(this._circuitInactivityTimeoutId=void 0);void 0===this._circuitInactivityTimeoutId&&(this._circuitInactivityTimeoutId=setTimeout((()=>{this.rendererHasExistingOrPendingComponents(Bn.Server,"server","auto")||(async function(){await(null==Vo?void 0:Vo.dispose())}(),this._circuitInactivityTimeoutId=void 0)}),this._circuitInactivityTimeoutMs))}rendererHasComponents(e){const t=De(e);return void 0!==t&&t.getRootComponentCount()>0}rendererHasExistingOrPendingComponents(e,...t){if(this.rendererHasComponents(e))return!0;for(const{descriptor:{type:n},assignedRendererId:o}of this._rootComponentsBySsrComponentId.values()){if(o===e)return!0;if(void 0===o&&-1!==t.indexOf(n))return!0}return!1}refreshRootComponents(e){const t=new Map;for(const n of e){const e=this.determinePendingOperation(n);if(!e)continue;const o=n.assignedRendererId;if(!o)throw new Error("Descriptors must be assigned a renderer ID before getting used as root components");let r=t.get(o);r||(r=[],t.set(o,r)),r.push(e)}for(const[e,n]of t){const t={batchId:this._nextOperationBatchId++,operations:n};this._pendingOperationBatches[t.batchId]=t;const o=JSON.stringify(t);e===Bn.Server?rr(o):this.updateWebAssemblyRootComponents(o)}}updateWebAssemblyRootComponents(e){Kr?(Gr(e),Kr=!1):function(e){if(!jr)throw new Error("Blazor WebAssembly has not started.");if(!vt._internal.updateRootComponents)throw new Error("Blazor WebAssembly has not initialized.");Jr?vt._internal.updateRootComponents(e):async function(e){if(await jr,!vt._internal.updateRootComponents)throw new Error("Blazor WebAssembly has not initialized.");vt._internal.updateRootComponents(e)}(e)}(e)}resolveRendererIdForDescriptor(e){switch("auto"===e.type?this.getAutoRenderMode():e.type){case"server":return this.startCircutIfNotStarted(),Bn.Server;case"webassembly":return this.startWebAssemblyIfNotStarted(),Bn.WebAssembly;case null:return null}}getAutoRenderMode(){return this.rendererHasExistingOrPendingComponents(Bn.WebAssembly,"webassembly")?"webassembly":this.rendererHasExistingOrPendingComponents(Bn.Server,"server")?"server":ni()?"webassembly":this._didWebAssemblyFailToLoadQuickly?"server":null}determinePendingOperation(e){if(t=e.descriptor,document.contains(t.start)){if(void 0===e.assignedRendererId){if(Ri||"loading"===document.readyState)return null;const t=this.resolveRendererIdForDescriptor(e.descriptor);return null===t?null:T(t)?(be(e.descriptor.start,!0),e.assignedRendererId=t,e.uniqueIdAtLastUpdate=e.descriptor.uniqueId,{type:"add",ssrComponentId:e.ssrComponentId,marker:Ut(e.descriptor)}):null}return T(e.assignedRendererId)?e.uniqueIdAtLastUpdate===e.descriptor.uniqueId?null:(e.uniqueIdAtLastUpdate=e.descriptor.uniqueId,{type:"update",ssrComponentId:e.ssrComponentId,marker:Ut(e.descriptor)}):null}return e.hasPendingRemoveOperation?null:void 0===e.assignedRendererId?(this.unregisterComponent(e),null):T(e.assignedRendererId)?(be(e.descriptor.start,!1),e.hasPendingRemoveOperation=!0,{type:"remove",ssrComponentId:e.ssrComponentId}):null;var t}resolveRootComponent(e){const t=this._rootComponentsBySsrComponentId.get(e);if(!t)throw new Error(`Could not resolve a root component with SSR component ID '${e}'.`);return t.descriptor}onAfterUpdateRootComponents(e){const t=this._pendingOperationBatches[e];delete this._pendingOperationBatches[e];for(const e of t.operations)switch(e.type){case"remove":{const t=this._rootComponentsBySsrComponentId.get(e.ssrComponentId);t&&this.unregisterComponent(t);break}}}}function Wi(e){var t;const n=null===(t=e.resources)||void 0===t?void 0:t.hash,o=e.mainAssemblyName;return n&&o?{key:`blazor-resource-hash:${o}`,value:n}:null}class ji{constructor(){this._eventListeners=new Map}static create(e){const t=new ji;return e.addEventListener=t.addEventListener.bind(t),e.removeEventListener=t.removeEventListener.bind(t),t}addEventListener(e,t){let n=this._eventListeners.get(e);n||(n=new Set,this._eventListeners.set(e,n)),n.add(t)}removeEventListener(e,t){var n;null===(n=this._eventListeners.get(e))||void 0===n||n.delete(t)}dispatchEvent(e,t){const n=this._eventListeners.get(e);if(!n)return;const o={...t,type:e};for(const e of n)e(o)}}let zi,qi=!1;function Ji(e){var t,n,o,r;if(qi)throw new Error("Blazor has already started.");qi=!0,null!==(t=(e=e||{}).logLevel)&&void 0!==t||(e.logLevel=yt.Error),vt._internal.loadWebAssemblyQuicklyTimeout=3e3,vt._internal.isBlazorWeb=!0,vt._internal.hotReloadApplied=()=>{Me()&&Ue(location.href,!0)},zi=new Hi(null!==(o=null===(n=null==e?void 0:e.ssr)||void 0===n?void 0:n.circuitInactivityTimeoutMs)&&void 0!==o?o:2e3);const i=ji.create(vt),s={documentUpdated:()=>{zi.onDocumentUpdated(),i.dispatchEvent("enhancedload",{})},enhancedNavigationCompleted(){zi.onEnhancedNavigationCompleted()}};return pi=zi,function(e,t){Oi=t,(null==e?void 0:e.disableDomPreservation)&&(Fi=!1),customElements.define("blazor-ssr-end",$i)}(null==e?void 0:e.ssr,s),(null===(r=null==e?void 0:e.ssr)||void 0===r?void 0:r.disableDomPreservation)||Di(s),"loading"===document.readyState?document.addEventListener("DOMContentLoaded",Ki.bind(null,e)):Ki(e),Promise.resolve()}function Ki(e){const t=Fo((null==e?void 0:e.circuit)||{});e.circuit=t;const n=async function(e,t){var n;const o=kt(document,Et,"initializers");if(!o)return new qo(!1,t);const r=null!==(n=JSON.parse(atob(o)))&&void 0!==n?n:[],i=new qo(!1,t);return await i.importInitializersAsync(r,[e]),i}(e,new bt(t.logLevel));er(Vi(n,t)),function(e){if($r)throw new Error("WebAssembly options have already been configured.");!async function(e){const t=await e;$r=t,Qr()}(e)}(Vi(n,(null==e?void 0:e.webAssembly)||{})),function(e){const t=bi(document);for(const e of t)null==pi||pi.registerComponent(e)}(),zi.onDocumentUpdated(),async function(e){const t=await e;await t.invokeAfterStartedCallbacks(vt)}(n)}async function Vi(e,t){return await e,t}vt.start=Ji,window.DotNet=e,document&&document.currentScript&&"false"!==document.currentScript.getAttribute("autostart")&&Ji()})()})(); \ No newline at end of file diff --git a/src/Components/Web.JS/src/Services/NavigationEnhancement.ts b/src/Components/Web.JS/src/Services/NavigationEnhancement.ts index 1a1de6b98298..a5d6b9c324e0 100644 --- a/src/Components/Web.JS/src/Services/NavigationEnhancement.ts +++ b/src/Components/Web.JS/src/Services/NavigationEnhancement.ts @@ -239,7 +239,9 @@ export async function performEnhancedPageLoad(internalDestinationHref: string, i history.replaceState(null, '', response.url); } else { // For non-gets, we're still on the source page, so need to append a whole new history entry - history.pushState(null, '', response.url); + if (response.url !== location.href) { + history.pushState(null, '', response.url); + } } internalDestinationHref = response.url; } diff --git a/src/Components/test/E2ETest/ServerRenderingTests/FormHandlingTests/FormWithParentBindingContextTest.cs b/src/Components/test/E2ETest/ServerRenderingTests/FormHandlingTests/FormWithParentBindingContextTest.cs index d0098cdd38d0..b2e025fdf868 100644 --- a/src/Components/test/E2ETest/ServerRenderingTests/FormHandlingTests/FormWithParentBindingContextTest.cs +++ b/src/Components/test/E2ETest/ServerRenderingTests/FormHandlingTests/FormWithParentBindingContextTest.cs @@ -1463,6 +1463,26 @@ public void SubmitButtonFormenctypeAttributeOverridesEnhancedFormEnctype() Browser.Equal("application/x-www-form-urlencoded", () => Browser.Exists(By.Id("content-type")).Text); } + [Fact] + public void EnhancedFormThatCallsNavigationManagerRefreshDoesNotPushHistoryEntry() + { + var startUrl = Browser.Url; + GoTo("forms/form-that-calls-navigation-manager-refresh"); + var guid = Browser.Exists(By.Id("guid")).Text; + + Browser.Exists(By.Id("submit-button")).Click(); + + // Checking that the page was refreshed. + // The redirect request method is GET. + // Providing a Guid to check that it is not the initial GET request for the page + Browser.NotEqual(guid, () => Browser.Exists(By.Id("guid")).Text); + Browser.Equal("GET", () => Browser.Exists(By.Id("method")).Text); + + // Checking that the history entry was not pushed + Browser.Navigate().Back(); + Browser.Equal(startUrl, () => Browser.Url); + } + // Can't just use GetAttribute or GetDomAttribute because they both auto-resolve it // to an absolute URL. We want to be able to assert about the attribute's literal value. private string ReadFormActionAttribute(IWebElement form) diff --git a/src/Components/test/E2ETest/ServerRenderingTests/InteractivityTest.cs b/src/Components/test/E2ETest/ServerRenderingTests/InteractivityTest.cs index 37dc684c2e74..df2c4b906661 100644 --- a/src/Components/test/E2ETest/ServerRenderingTests/InteractivityTest.cs +++ b/src/Components/test/E2ETest/ServerRenderingTests/InteractivityTest.cs @@ -1143,6 +1143,22 @@ public void CanPerformNavigateToFromInteractiveEventHandler(bool suppressEnhance Assert.Equal(shouldPreserveElements, !EnhancedNavigationTestUtil.IsElementStale(originalNavElem)); } + [Fact] + public void NavigationManagerCanRefreshSSRPageWhenServerInteractivityEnabled() + { + Navigate($"{ServerPathBase}/forms/form-that-calls-navigation-manager-refresh"); + + var guid = Browser.Exists(By.Id("guid")).Text; + + Browser.Exists(By.Id("submit-button")).Click(); + + // Checking that the page was refreshed. + // The redirect request method is GET. + // Providing a Guid to check that it is not the initial GET request for the page + Browser.NotEqual(guid, () => Browser.Exists(By.Id("guid")).Text); + Browser.Equal("GET", () => Browser.Exists(By.Id("method")).Text); + } + private void BlockWebAssemblyResourceLoad() { ((IJavaScriptExecutor)Browser).ExecuteScript("sessionStorage.setItem('block-load-boot-resource', 'true')"); diff --git a/src/Components/test/E2ETest/ServerRenderingTests/NoInteractivityTest.cs b/src/Components/test/E2ETest/ServerRenderingTests/NoInteractivityTest.cs new file mode 100644 index 000000000000..ad7ba5958013 --- /dev/null +++ b/src/Components/test/E2ETest/ServerRenderingTests/NoInteractivityTest.cs @@ -0,0 +1,43 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. + +using Components.TestServer.RazorComponents; +using Microsoft.AspNetCore.Components.E2ETest.Infrastructure; +using Microsoft.AspNetCore.Components.E2ETest.Infrastructure.ServerFixtures; +using Microsoft.AspNetCore.E2ETesting; +using OpenQA.Selenium; +using TestServer; +using Xunit.Abstractions; + +namespace Microsoft.AspNetCore.Components.E2ETests.ServerRenderingTests; + +[CollectionDefinition(nameof(InteractivityTest), DisableParallelization = true)] +public class NoInteractivityTest : ServerTestBase>> +{ + public NoInteractivityTest( + BrowserFixture browserFixture, + BasicTestAppServerSiteFixture> serverFixture, + ITestOutputHelper output) + : base(browserFixture, serverFixture, output) + { + } + + public override Task InitializeAsync() + => InitializeAsync(BrowserFixture.StreamingContext); + + [Fact] + public void NavigationManagerCanRefreshSSRPageWhenInteractivityNotPresent() + { + Navigate($"{ServerPathBase}/forms/form-that-calls-navigation-manager-refresh"); + + var guid = Browser.Exists(By.Id("guid")).Text; + + Browser.Exists(By.Id("submit-button")).Click(); + + // Checking that the page was refreshed. + // The redirect request method is GET. + // Providing a Guid to check that it is not the initial GET request for the page + Browser.NotEqual(guid, () => Browser.Exists(By.Id("guid")).Text); + Browser.Equal("GET", () => Browser.Exists(By.Id("method")).Text); + } +} diff --git a/src/Components/test/testassets/Components.TestServer/RazorComponentEndpointsNoInteractivityStartup.cs b/src/Components/test/testassets/Components.TestServer/RazorComponentEndpointsNoInteractivityStartup.cs new file mode 100644 index 000000000000..00c9fe461b31 --- /dev/null +++ b/src/Components/test/testassets/Components.TestServer/RazorComponentEndpointsNoInteractivityStartup.cs @@ -0,0 +1,64 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. + +using System.Globalization; +using System.Reflection; +using System.Security.Claims; +using System.Web; +using Components.TestServer.RazorComponents; +using Components.TestServer.RazorComponents.Pages.Forms; +using Components.TestServer.Services; +using Microsoft.AspNetCore.Mvc; + +namespace TestServer; + +public class RazorComponentEndpointsNoInteractivityStartup +{ + public RazorComponentEndpointsNoInteractivityStartup(IConfiguration configuration) + { + Configuration = configuration; + } + + public IConfiguration Configuration { get; } + + // This method gets called by the runtime. Use this method to add services to the container. + public void ConfigureServices(IServiceCollection services) + { + services.AddRazorComponents(options => + { + options.MaxFormMappingErrorCount = 10; + options.MaxFormMappingRecursionDepth = 5; + options.MaxFormMappingCollectionSize = 100; + }); + services.AddHttpContextAccessor(); + } + + // This method gets called by the runtime. Use this method to configure the HTTP request pipeline. + public void Configure(IApplicationBuilder app, IWebHostEnvironment env) + { + var enUs = new CultureInfo("en-US"); + CultureInfo.DefaultThreadCurrentCulture = enUs; + CultureInfo.DefaultThreadCurrentUICulture = enUs; + + if (env.IsDevelopment()) + { + app.UseDeveloperExceptionPage(); + } + + app.Map("/subdir", app => + { + if (!env.IsDevelopment()) + { + app.UseExceptionHandler("/Error", createScopeForErrors: true); + } + + app.UseStaticFiles(); + app.UseRouting(); + app.UseAntiforgery(); + app.UseEndpoints(endpoints => + { + endpoints.MapRazorComponents(); + }); + }); + } +} diff --git a/src/Components/test/testassets/Components.TestServer/RazorComponents/Pages/Forms/FormThatCallsNavigationManagerRefresh.razor b/src/Components/test/testassets/Components.TestServer/RazorComponents/Pages/Forms/FormThatCallsNavigationManagerRefresh.razor new file mode 100644 index 000000000000..f1de050e7343 --- /dev/null +++ b/src/Components/test/testassets/Components.TestServer/RazorComponents/Pages/Forms/FormThatCallsNavigationManagerRefresh.razor @@ -0,0 +1,27 @@ +@page "/forms/form-that-calls-navigation-manager-refresh" +@using Microsoft.AspNetCore.Components.Forms +@inject NavigationManager Nav +@inject IHttpContextAccessor HttpContextAccessor + +

Form That Calls NavigationManager.Refresh()

+ +
+ + + + +

Method: @_method

+ +

Guid: @Guid

+ +@code { + private string? _method = ""; + + private Guid Guid = Guid.NewGuid(); + + protected override void OnInitialized() + { + var httpContext = HttpContextAccessor.HttpContext; + _method = httpContext?.Request.Method; + } +} From 3b0689860149279cb45c6f01d02b93420e25476f Mon Sep 17 00:00:00 2001 From: DotNet-Bot Date: Wed, 10 Jan 2024 21:38:14 +0000 Subject: [PATCH 079/391] Update dependencies from https://dev.azure.com/dnceng/internal/_git/dotnet-efcore build 20240110.10 dotnet-ef , Microsoft.EntityFrameworkCore , Microsoft.EntityFrameworkCore.Design , Microsoft.EntityFrameworkCore.InMemory , Microsoft.EntityFrameworkCore.Relational , Microsoft.EntityFrameworkCore.Sqlite , Microsoft.EntityFrameworkCore.SqlServer , Microsoft.EntityFrameworkCore.Tools From Version 8.0.2 -> To Version 8.0.2 --- NuGet.config | 4 ++-- eng/Version.Details.xml | 16 ++++++++-------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/NuGet.config b/NuGet.config index bccf28e0c12f..0dbeddac132f 100644 --- a/NuGet.config +++ b/NuGet.config @@ -6,7 +6,7 @@ - + @@ -32,7 +32,7 @@ - + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 8f130c1603c6..2c86fd97e677 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -11,35 +11,35 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 856a15f40b4f27ab0f996e044b68943b9a9c75c0 + 1c9152ea533a90226306519f9c22e23add6b932c https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 856a15f40b4f27ab0f996e044b68943b9a9c75c0 + 1c9152ea533a90226306519f9c22e23add6b932c https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 856a15f40b4f27ab0f996e044b68943b9a9c75c0 + 1c9152ea533a90226306519f9c22e23add6b932c https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 856a15f40b4f27ab0f996e044b68943b9a9c75c0 + 1c9152ea533a90226306519f9c22e23add6b932c https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 856a15f40b4f27ab0f996e044b68943b9a9c75c0 + 1c9152ea533a90226306519f9c22e23add6b932c https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 856a15f40b4f27ab0f996e044b68943b9a9c75c0 + 1c9152ea533a90226306519f9c22e23add6b932c https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 856a15f40b4f27ab0f996e044b68943b9a9c75c0 + 1c9152ea533a90226306519f9c22e23add6b932c https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 856a15f40b4f27ab0f996e044b68943b9a9c75c0 + 1c9152ea533a90226306519f9c22e23add6b932c https://dev.azure.com/dnceng/internal/_git/dotnet-runtime From a07fe32cb8be8e0284343b66497095b0a9e481ac Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" <42748379+dotnet-maestro[bot]@users.noreply.github.com> Date: Wed, 10 Jan 2024 21:56:29 +0000 Subject: [PATCH 080/391] [release/8.0] Update dependencies from dotnet/source-build-externals (#53151) * Update dependencies from https://github.com/dotnet/source-build-externals build 20240104.1 Microsoft.SourceBuild.Intermediate.source-build-externals From Version 8.0.0-alpha.1.23570.1 -> To Version 8.0.0-alpha.1.24054.1 * Update dependencies from https://github.com/dotnet/source-build-externals build 20240109.4 Microsoft.SourceBuild.Intermediate.source-build-externals From Version 8.0.0-alpha.1.23570.1 -> To Version 8.0.0-alpha.1.24059.4 --------- Co-authored-by: dotnet-maestro[bot] Co-authored-by: William Godbe --- eng/Version.Details.xml | 6 +++--- eng/Versions.props | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index db3c1d07938e..f9d0d1e97000 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -189,9 +189,9 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime bf5e279d9239bfef5bb1b8d6212f1b971c434606 - - https://dev.azure.com/dnceng/internal/_git/dotnet-source-build-externals - 0f0f1f0f33830f27ed0ff357145d2464b96b1a3e + + https://github.com/dotnet/source-build-externals + 7134e53b6b1210a1ce8838b12b8f6071e0a3433b diff --git a/eng/Versions.props b/eng/Versions.props index dd2616f9e095..f4563ebc0b7e 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -165,7 +165,7 @@ 8.0.0-beta.24059.4 8.0.0-beta.24059.4 - 8.0.0-alpha.1.23577.6 + 8.0.0-alpha.1.24059.4 8.0.0-alpha.1.23565.1 From 158d0481a7c0dc2fa4ffed93a80199ac8fa50fb2 Mon Sep 17 00:00:00 2001 From: Mackinnon Buck Date: Wed, 10 Jan 2024 15:00:43 -0800 Subject: [PATCH 081/391] Fix misdetection of component comments (#52647) (#52744) --- .../Web.JS/dist/Release/blazor.server.js | 2 +- .../Web.JS/dist/Release/blazor.web.js | 2 +- .../Web.JS/dist/Release/blazor.webview.js | 2 +- .../Web.JS/src/Rendering/LogicalElements.ts | 9 ++--- .../StreamingRenderingTest.cs | 33 +++++++++++++++++++ .../LayoutWithInteractiveComponent.razor | 9 +++++ .../NonStreamingPage.razor | 6 ++++ .../StreamingPage.razor | 20 +++++++++++ 8 files changed, 76 insertions(+), 7 deletions(-) create mode 100644 src/Components/test/testassets/Components.TestServer/RazorComponents/Pages/StreamingRendering/InteractiveComponentInLayout/LayoutWithInteractiveComponent.razor create mode 100644 src/Components/test/testassets/Components.TestServer/RazorComponents/Pages/StreamingRendering/InteractiveComponentInLayout/NonStreamingPage.razor create mode 100644 src/Components/test/testassets/Components.TestServer/RazorComponents/Pages/StreamingRendering/InteractiveComponentInLayout/StreamingPage.razor diff --git a/src/Components/Web.JS/dist/Release/blazor.server.js b/src/Components/Web.JS/dist/Release/blazor.server.js index ba09c85d88d1..7b118ea39bf9 100644 --- a/src/Components/Web.JS/dist/Release/blazor.server.js +++ b/src/Components/Web.JS/dist/Release/blazor.server.js @@ -1 +1 @@ -(()=>{var e={778:()=>{},77:()=>{},203:()=>{},200:()=>{},628:()=>{},321:()=>{}},t={};function n(r){var o=t[r];if(void 0!==o)return o.exports;var s=t[r]={exports:{}};return e[r](s,s.exports,n),s.exports}n.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),(()=>{"use strict";var e,t,r;!function(e){const t=[],n="__jsObjectId",r="__dotNetObject",o="__byte[]",s="__dotNetStream",i="__jsStreamReferenceLength";let a,c;class l{constructor(e){this._jsObject=e,this._cachedFunctions=new Map}findFunction(e){const t=this._cachedFunctions.get(e);if(t)return t;let n,r=this._jsObject;if(e.split(".").forEach((t=>{if(!(t in r))throw new Error(`Could not find '${e}' ('${t}' was undefined).`);n=r,r=r[t]})),r instanceof Function)return r=r.bind(n),this._cachedFunctions.set(e,r),r;throw new Error(`The value '${e}' is not a function.`)}getWrappedObject(){return this._jsObject}}const h={0:new l(window)};h[0]._cachedFunctions.set("import",(e=>("string"==typeof e&&e.startsWith("./")&&(e=new URL(e.substr(2),document.baseURI).toString()),import(e))));let d,u=1;function p(e){t.push(e)}function f(e){if(e&&"object"==typeof e){h[u]=new l(e);const t={[n]:u};return u++,t}throw new Error(`Cannot create a JSObjectReference from the value '${e}'.`)}function g(e){let t=-1;if(e instanceof ArrayBuffer&&(e=new Uint8Array(e)),e instanceof Blob)t=e.size;else{if(!(e.buffer instanceof ArrayBuffer))throw new Error("Supplied value is not a typed array or blob.");if(void 0===e.byteLength)throw new Error(`Cannot create a JSStreamReference from the value '${e}' as it doesn't have a byteLength.`);t=e.byteLength}const r={[i]:t};try{const t=f(e);r[n]=t[n]}catch(t){throw new Error(`Cannot create a JSStreamReference from the value '${e}'.`)}return r}function m(e,n){c=e;const r=n?JSON.parse(n,((e,n)=>t.reduce(((t,n)=>n(e,t)),n))):null;return c=void 0,r}function v(){if(void 0===a)throw new Error("No call dispatcher has been set.");if(null===a)throw new Error("There are multiple .NET runtimes present, so a default dispatcher could not be resolved. Use DotNetObject to invoke .NET instance methods.");return a}e.attachDispatcher=function(e){const t=new y(e);return void 0===a?a=t:a&&(a=null),t},e.attachReviver=p,e.invokeMethod=function(e,t,...n){return v().invokeDotNetStaticMethod(e,t,...n)},e.invokeMethodAsync=function(e,t,...n){return v().invokeDotNetStaticMethodAsync(e,t,...n)},e.createJSObjectReference=f,e.createJSStreamReference=g,e.disposeJSObjectReference=function(e){const t=e&&e[n];"number"==typeof t&&b(t)},function(e){e[e.Default=0]="Default",e[e.JSObjectReference=1]="JSObjectReference",e[e.JSStreamReference=2]="JSStreamReference",e[e.JSVoidResult=3]="JSVoidResult"}(d=e.JSCallResultType||(e.JSCallResultType={}));class y{constructor(e){this._dotNetCallDispatcher=e,this._byteArraysToBeRevived=new Map,this._pendingDotNetToJSStreams=new Map,this._pendingAsyncCalls={},this._nextAsyncCallId=1}getDotNetCallDispatcher(){return this._dotNetCallDispatcher}invokeJSFromDotNet(e,t,n,r){const o=m(this,t),s=I(_(e,r)(...o||[]),n);return null==s?null:T(this,s)}beginInvokeJSFromDotNet(e,t,n,r,o){const s=new Promise((e=>{const r=m(this,n);e(_(t,o)(...r||[]))}));e&&s.then((t=>T(this,[e,!0,I(t,r)]))).then((t=>this._dotNetCallDispatcher.endInvokeJSFromDotNet(e,!0,t)),(t=>this._dotNetCallDispatcher.endInvokeJSFromDotNet(e,!1,JSON.stringify([e,!1,w(t)]))))}endInvokeDotNetFromJS(e,t,n){const r=t?m(this,n):new Error(n);this.completePendingCall(parseInt(e,10),t,r)}invokeDotNetStaticMethod(e,t,...n){return this.invokeDotNetMethod(e,t,null,n)}invokeDotNetStaticMethodAsync(e,t,...n){return this.invokeDotNetMethodAsync(e,t,null,n)}invokeDotNetMethod(e,t,n,r){if(this._dotNetCallDispatcher.invokeDotNetFromJS){const o=T(this,r),s=this._dotNetCallDispatcher.invokeDotNetFromJS(e,t,n,o);return s?m(this,s):null}throw new Error("The current dispatcher does not support synchronous calls from JS to .NET. Use invokeDotNetMethodAsync instead.")}invokeDotNetMethodAsync(e,t,n,r){if(e&&n)throw new Error(`For instance method calls, assemblyName should be null. Received '${e}'.`);const o=this._nextAsyncCallId++,s=new Promise(((e,t)=>{this._pendingAsyncCalls[o]={resolve:e,reject:t}}));try{const s=T(this,r);this._dotNetCallDispatcher.beginInvokeDotNetFromJS(o,e,t,n,s)}catch(e){this.completePendingCall(o,!1,e)}return s}receiveByteArray(e,t){this._byteArraysToBeRevived.set(e,t)}processByteArray(e){const t=this._byteArraysToBeRevived.get(e);return t?(this._byteArraysToBeRevived.delete(e),t):null}supplyDotNetStream(e,t){if(this._pendingDotNetToJSStreams.has(e)){const n=this._pendingDotNetToJSStreams.get(e);this._pendingDotNetToJSStreams.delete(e),n.resolve(t)}else{const n=new C;n.resolve(t),this._pendingDotNetToJSStreams.set(e,n)}}getDotNetStreamPromise(e){let t;if(this._pendingDotNetToJSStreams.has(e))t=this._pendingDotNetToJSStreams.get(e).streamPromise,this._pendingDotNetToJSStreams.delete(e);else{const n=new C;this._pendingDotNetToJSStreams.set(e,n),t=n.streamPromise}return t}completePendingCall(e,t,n){if(!this._pendingAsyncCalls.hasOwnProperty(e))throw new Error(`There is no pending async call with ID ${e}.`);const r=this._pendingAsyncCalls[e];delete this._pendingAsyncCalls[e],t?r.resolve(n):r.reject(n)}}function w(e){return e instanceof Error?`${e.message}\n${e.stack}`:e?e.toString():"null"}function _(e,t){const n=h[t];if(n)return n.findFunction(e);throw new Error(`JS object instance with ID ${t} does not exist (has it been disposed?).`)}function b(e){delete h[e]}e.findJSFunction=_,e.disposeJSObjectReferenceById=b;class S{constructor(e,t){this._id=e,this._callDispatcher=t}invokeMethod(e,...t){return this._callDispatcher.invokeDotNetMethod(null,e,this._id,t)}invokeMethodAsync(e,...t){return this._callDispatcher.invokeDotNetMethodAsync(null,e,this._id,t)}dispose(){this._callDispatcher.invokeDotNetMethodAsync(null,"__Dispose",this._id,null).catch((e=>console.error(e)))}serializeAsArg(){return{[r]:this._id}}}e.DotNetObject=S,p((function(e,t){if(t&&"object"==typeof t){if(t.hasOwnProperty(r))return new S(t[r],c);if(t.hasOwnProperty(n)){const e=t[n],r=h[e];if(r)return r.getWrappedObject();throw new Error(`JS object instance with Id '${e}' does not exist. It may have been disposed.`)}if(t.hasOwnProperty(o)){const e=t[o],n=c.processByteArray(e);if(void 0===n)throw new Error(`Byte array index '${e}' does not exist.`);return n}if(t.hasOwnProperty(s)){const e=t[s],n=c.getDotNetStreamPromise(e);return new E(n)}}return t}));class E{constructor(e){this._streamPromise=e}stream(){return this._streamPromise}async arrayBuffer(){return new Response(await this.stream()).arrayBuffer()}}class C{constructor(){this.streamPromise=new Promise(((e,t)=>{this.resolve=e,this.reject=t}))}}function I(e,t){switch(t){case d.Default:return e;case d.JSObjectReference:return f(e);case d.JSStreamReference:return g(e);case d.JSVoidResult:return null;default:throw new Error(`Invalid JS call result type '${t}'.`)}}let k=0;function T(e,t){k=0,c=e;const n=JSON.stringify(t,D);return c=void 0,n}function D(e,t){if(t instanceof S)return t.serializeAsArg();if(t instanceof Uint8Array){c.getDotNetCallDispatcher().sendByteArray(k,t);const e={[o]:k};return k++,e}return t}}(e||(e={})),function(e){e[e.prependFrame=1]="prependFrame",e[e.removeFrame=2]="removeFrame",e[e.setAttribute=3]="setAttribute",e[e.removeAttribute=4]="removeAttribute",e[e.updateText=5]="updateText",e[e.stepIn=6]="stepIn",e[e.stepOut=7]="stepOut",e[e.updateMarkup=8]="updateMarkup",e[e.permutationListEntry=9]="permutationListEntry",e[e.permutationListEnd=10]="permutationListEnd"}(t||(t={})),function(e){e[e.element=1]="element",e[e.text=2]="text",e[e.attribute=3]="attribute",e[e.component=4]="component",e[e.region=5]="region",e[e.elementReferenceCapture=6]="elementReferenceCapture",e[e.markup=8]="markup",e[e.namedEvent=10]="namedEvent"}(r||(r={}));class o{constructor(e,t){this.componentId=e,this.fieldValue=t}static fromEvent(e,t){const n=t.target;if(n instanceof Element){const t=function(e){return e instanceof HTMLInputElement?e.type&&"checkbox"===e.type.toLowerCase()?{value:e.checked}:{value:e.value}:e instanceof HTMLSelectElement||e instanceof HTMLTextAreaElement?{value:e.value}:null}(n);if(t)return new o(e,t.value)}return null}}const s=new Map,i=new Map,a=[];function c(e){return s.get(e)}function l(e){const t=s.get(e);return(null==t?void 0:t.browserEventName)||e}function h(e,t){e.forEach((e=>s.set(e,t)))}function d(e){const t=[];for(let n=0;ne.selected)).map((e=>e.value))}}{const e=function(e){return!!e&&"INPUT"===e.tagName&&"checkbox"===e.getAttribute("type")}(t);return{value:e?!!t.checked:t.value}}}}),h(["copy","cut","paste"],{createEventArgs:e=>({type:e.type})}),h(["drag","dragend","dragenter","dragleave","dragover","dragstart","drop"],{createEventArgs:e=>{return{...u(t=e),dataTransfer:t.dataTransfer?{dropEffect:t.dataTransfer.dropEffect,effectAllowed:t.dataTransfer.effectAllowed,files:Array.from(t.dataTransfer.files).map((e=>e.name)),items:Array.from(t.dataTransfer.items).map((e=>({kind:e.kind,type:e.type}))),types:t.dataTransfer.types}:null};var t}}),h(["focus","blur","focusin","focusout"],{createEventArgs:e=>({type:e.type})}),h(["keydown","keyup","keypress"],{createEventArgs:e=>{return{key:(t=e).key,code:t.code,location:t.location,repeat:t.repeat,ctrlKey:t.ctrlKey,shiftKey:t.shiftKey,altKey:t.altKey,metaKey:t.metaKey,type:t.type};var t}}),h(["contextmenu","click","mouseover","mouseout","mousemove","mousedown","mouseup","mouseleave","mouseenter","dblclick"],{createEventArgs:e=>u(e)}),h(["error"],{createEventArgs:e=>{return{message:(t=e).message,filename:t.filename,lineno:t.lineno,colno:t.colno,type:t.type};var t}}),h(["loadstart","timeout","abort","load","loadend","progress"],{createEventArgs:e=>{return{lengthComputable:(t=e).lengthComputable,loaded:t.loaded,total:t.total,type:t.type};var t}}),h(["touchcancel","touchend","touchmove","touchenter","touchleave","touchstart"],{createEventArgs:e=>{return{detail:(t=e).detail,touches:d(t.touches),targetTouches:d(t.targetTouches),changedTouches:d(t.changedTouches),ctrlKey:t.ctrlKey,shiftKey:t.shiftKey,altKey:t.altKey,metaKey:t.metaKey,type:t.type};var t}}),h(["gotpointercapture","lostpointercapture","pointercancel","pointerdown","pointerenter","pointerleave","pointermove","pointerout","pointerover","pointerup"],{createEventArgs:e=>{return{...u(t=e),pointerId:t.pointerId,width:t.width,height:t.height,pressure:t.pressure,tiltX:t.tiltX,tiltY:t.tiltY,pointerType:t.pointerType,isPrimary:t.isPrimary};var t}}),h(["wheel","mousewheel"],{createEventArgs:e=>{return{...u(t=e),deltaX:t.deltaX,deltaY:t.deltaY,deltaZ:t.deltaZ,deltaMode:t.deltaMode};var t}}),h(["cancel","close","toggle"],{createEventArgs:()=>({})});const p=["date","datetime-local","month","time","week"],f=new Map;let g,m,v=0;const y={async add(e,t,n){if(!n)throw new Error("initialParameters must be an object, even if empty.");const r="__bl-dynamic-root:"+(++v).toString();f.set(r,e);const o=await b().invokeMethodAsync("AddRootComponent",t,r),s=new _(o,m[t]);return await s.setParameters(n),s}};class w{invoke(e){return this._callback(e)}setCallback(t){this._selfJSObjectReference||(this._selfJSObjectReference=e.createJSObjectReference(this)),this._callback=t}getJSObjectReference(){return this._selfJSObjectReference}dispose(){this._selfJSObjectReference&&e.disposeJSObjectReference(this._selfJSObjectReference)}}class _{constructor(e,t){this._jsEventCallbackWrappers=new Map,this._componentId=e;for(const e of t)"eventcallback"===e.type&&this._jsEventCallbackWrappers.set(e.name.toLowerCase(),new w)}setParameters(e){const t={},n=Object.entries(e||{}),r=n.length;for(const[e,r]of n){const n=this._jsEventCallbackWrappers.get(e.toLowerCase());n&&r?(n.setCallback(r),t[e]=n.getJSObjectReference()):t[e]=r}return b().invokeMethodAsync("SetRootComponentParameters",this._componentId,r,t)}async dispose(){if(null!==this._componentId){await b().invokeMethodAsync("RemoveRootComponent",this._componentId),this._componentId=null;for(const e of this._jsEventCallbackWrappers.values())e.dispose()}}}function b(){if(!g)throw new Error("Dynamic root components have not been enabled in this application.");return g}const S=new Map,E=[],C=new Map;function I(t,n,r,o){var s,i;if(S.has(t))throw new Error(`Interop methods are already registered for renderer ${t}`);S.set(t,n),r&&o&&Object.keys(r).length>0&&function(t,n,r){if(g)throw new Error("Dynamic root components have already been enabled.");g=t,m=n;for(const[t,o]of Object.entries(r)){const r=e.findJSFunction(t,0);for(const e of o)r(e,n[e])}}(T(t),r,o),null===(i=null===(s=C.get(t))||void 0===s?void 0:s[0])||void 0===i||i.call(s),function(e){for(const t of E)t(e)}(t)}function k(e,t,n){return D(e,t.eventHandlerId,(()=>T(e).invokeMethodAsync("DispatchEventAsync",t,n)))}function T(e){const t=S.get(e);if(!t)throw new Error(`No interop methods are registered for renderer ${e}`);return t}let D=(e,t,n)=>n();const R=M(["abort","blur","cancel","canplay","canplaythrough","change","close","cuechange","durationchange","emptied","ended","error","focus","load","loadeddata","loadedmetadata","loadend","loadstart","mouseenter","mouseleave","pointerenter","pointerleave","pause","play","playing","progress","ratechange","reset","scroll","seeked","seeking","stalled","submit","suspend","timeupdate","toggle","unload","volumechange","waiting","DOMNodeInsertedIntoDocument","DOMNodeRemovedFromDocument"]),x={submit:!0},A=M(["click","dblclick","mousedown","mousemove","mouseup"]);class P{constructor(e){this.browserRendererId=e,this.afterClickCallbacks=[];const t=++P.nextEventDelegatorId;this.eventsCollectionKey=`_blazorEvents_${t}`,this.eventInfoStore=new N(this.onGlobalEvent.bind(this))}setListener(e,t,n,r){const o=this.getEventHandlerInfosForElement(e,!0),s=o.getHandler(t);if(s)this.eventInfoStore.update(s.eventHandlerId,n);else{const s={element:e,eventName:t,eventHandlerId:n,renderingComponentId:r};this.eventInfoStore.add(s),o.setHandler(t,s)}}getHandler(e){return this.eventInfoStore.get(e)}removeListener(e){const t=this.eventInfoStore.remove(e);if(t){const e=t.element,n=this.getEventHandlerInfosForElement(e,!1);n&&n.removeHandler(t.eventName)}}notifyAfterClick(e){this.afterClickCallbacks.push(e),this.eventInfoStore.addGlobalListener("click")}setStopPropagation(e,t,n){this.getEventHandlerInfosForElement(e,!0).stopPropagation(t,n)}setPreventDefault(e,t,n){this.getEventHandlerInfosForElement(e,!0).preventDefault(t,n)}onGlobalEvent(e){if(!(e.target instanceof Element))return;this.dispatchGlobalEventToAllElements(e.type,e);const t=(n=e.type,i.get(n));var n;t&&t.forEach((t=>this.dispatchGlobalEventToAllElements(t,e))),"click"===e.type&&this.afterClickCallbacks.forEach((t=>t(e)))}dispatchGlobalEventToAllElements(e,t){const n=t.composedPath();let r=n.shift(),s=null,i=!1;const a=Object.prototype.hasOwnProperty.call(R,e);let l=!1;for(;r;){const u=r,p=this.getEventHandlerInfosForElement(u,!1);if(p){const n=p.getHandler(e);if(n&&(h=u,d=t.type,!((h instanceof HTMLButtonElement||h instanceof HTMLInputElement||h instanceof HTMLTextAreaElement||h instanceof HTMLSelectElement)&&Object.prototype.hasOwnProperty.call(A,d)&&h.disabled))){if(!i){const n=c(e);s=(null==n?void 0:n.createEventArgs)?n.createEventArgs(t):{},i=!0}Object.prototype.hasOwnProperty.call(x,t.type)&&t.preventDefault(),k(this.browserRendererId,{eventHandlerId:n.eventHandlerId,eventName:e,eventFieldInfo:o.fromEvent(n.renderingComponentId,t)},s)}p.stopPropagation(e)&&(l=!0),p.preventDefault(e)&&t.preventDefault()}r=a||l?void 0:n.shift()}var h,d}getEventHandlerInfosForElement(e,t){return Object.prototype.hasOwnProperty.call(e,this.eventsCollectionKey)?e[this.eventsCollectionKey]:t?e[this.eventsCollectionKey]=new U:null}}P.nextEventDelegatorId=0;class N{constructor(e){this.globalListener=e,this.infosByEventHandlerId={},this.countByEventName={},a.push(this.handleEventNameAliasAdded.bind(this))}add(e){if(this.infosByEventHandlerId[e.eventHandlerId])throw new Error(`Event ${e.eventHandlerId} is already tracked`);this.infosByEventHandlerId[e.eventHandlerId]=e,this.addGlobalListener(e.eventName)}get(e){return this.infosByEventHandlerId[e]}addGlobalListener(e){if(e=l(e),Object.prototype.hasOwnProperty.call(this.countByEventName,e))this.countByEventName[e]++;else{this.countByEventName[e]=1;const t=Object.prototype.hasOwnProperty.call(R,e);document.addEventListener(e,this.globalListener,t)}}update(e,t){if(Object.prototype.hasOwnProperty.call(this.infosByEventHandlerId,t))throw new Error(`Event ${t} is already tracked`);const n=this.infosByEventHandlerId[e];delete this.infosByEventHandlerId[e],n.eventHandlerId=t,this.infosByEventHandlerId[t]=n}remove(e){const t=this.infosByEventHandlerId[e];if(t){delete this.infosByEventHandlerId[e];const n=l(t.eventName);0==--this.countByEventName[n]&&(delete this.countByEventName[n],document.removeEventListener(n,this.globalListener))}return t}handleEventNameAliasAdded(e,t){if(Object.prototype.hasOwnProperty.call(this.countByEventName,e)){const n=this.countByEventName[e];delete this.countByEventName[e],document.removeEventListener(e,this.globalListener),this.addGlobalListener(t),this.countByEventName[t]+=n-1}}}class U{constructor(){this.handlers={},this.preventDefaultFlags=null,this.stopPropagationFlags=null}getHandler(e){return Object.prototype.hasOwnProperty.call(this.handlers,e)?this.handlers[e]:null}setHandler(e,t){this.handlers[e]=t}removeHandler(e){delete this.handlers[e]}preventDefault(e,t){return void 0!==t&&(this.preventDefaultFlags=this.preventDefaultFlags||{},this.preventDefaultFlags[e]=t),!!this.preventDefaultFlags&&this.preventDefaultFlags[e]}stopPropagation(e,t){return void 0!==t&&(this.stopPropagationFlags=this.stopPropagationFlags||{},this.stopPropagationFlags[e]=t),!!this.stopPropagationFlags&&this.stopPropagationFlags[e]}}function M(e){const t={};return e.forEach((e=>{t[e]=!0})),t}const B=Symbol(),L=Symbol(),$=Symbol();function O(e,t){if(B in e)return e;const n=[];if(e.childNodes.length>0){if(!t)throw new Error("New logical elements must start empty, or allowExistingContents must be true");e.childNodes.forEach((t=>{const r=O(t,!0);r[L]=e,n.push(r)}))}return e[B]=n,e}function F(e){const t=K(e);for(;t.length;)W(e,0)}function H(e,t){const n=document.createComment("!");return j(n,e,t),n}function j(e,t,n){const r=e;let o=e;if(B in e){const t=Q(r);if(t!==e){const n=new Range;n.setStartBefore(e),n.setEndAfter(t),o=n.extractContents()}}const s=z(r);if(s){const e=K(s),t=Array.prototype.indexOf.call(e,r);e.splice(t,1),delete r[L]}const i=K(t);if(n0;)W(n,0)}const r=n;r.parentNode.removeChild(r)}function z(e){return e[L]||null}function q(e,t){return K(e)[t]}function J(e){const t=Y(e);return"http://www.w3.org/2000/svg"===t.namespaceURI&&"foreignObject"!==t.tagName}function K(e){return e[B]}function V(e){const t=K(z(e));return t[Array.prototype.indexOf.call(t,e)+1]||null}function X(e,t){const n=K(e);t.forEach((e=>{e.moveRangeStart=n[e.fromSiblingIndex],e.moveRangeEnd=Q(e.moveRangeStart)})),t.forEach((t=>{const r=document.createComment("marker");t.moveToBeforeMarker=r;const o=n[t.toSiblingIndex+1];o?o.parentNode.insertBefore(r,o):G(r,e)})),t.forEach((e=>{const t=e.moveToBeforeMarker,n=t.parentNode,r=e.moveRangeStart,o=e.moveRangeEnd;let s=r;for(;s;){const e=s.nextSibling;if(n.insertBefore(s,t),s===o)break;s=e}n.removeChild(t)})),t.forEach((e=>{n[e.toSiblingIndex]=e.moveRangeStart}))}function Y(e){if(e instanceof Element||e instanceof DocumentFragment)return e;if(e instanceof Comment)return e.parentNode;throw new Error("Not a valid logical element")}function G(e,t){if(t instanceof Element||t instanceof DocumentFragment)t.appendChild(e);else{if(!(t instanceof Comment))throw new Error(`Cannot append node because the parent is not a valid logical element. Parent: ${t}`);{const n=V(t);n?n.parentNode.insertBefore(e,n):G(e,z(t))}}}function Q(e){if(e instanceof Element||e instanceof DocumentFragment)return e;const t=V(e);if(t)return t.previousSibling;{const t=z(e);return t instanceof Element||t instanceof DocumentFragment?t.lastChild:Q(t)}}function Z(e){return`_bl_${e}`}const ee="__internalId";e.attachReviver(((e,t)=>t&&"object"==typeof t&&Object.prototype.hasOwnProperty.call(t,ee)&&"string"==typeof t[ee]?function(e){const t=`[${Z(e)}]`;return document.querySelector(t)}(t[ee]):t));const te="_blazorDeferredValue";function ne(e){return"select-multiple"===e.type}function re(e,t){e.value=t||""}function oe(e,t){e instanceof HTMLSelectElement?ne(e)?function(e,t){t||(t=[]);for(let n=0;n{ke()&&function(e,t){if(0!==e.button||function(e){return e.ctrlKey||e.shiftKey||e.altKey||e.metaKey}(e))return;if(e.defaultPrevented)return;const n=function(e){const t=!window._blazorDisableComposedPath&&e.composedPath&&e.composedPath();if(t){for(let e=0;e{const t=document.createElement("script");t.textContent=e.textContent,e.getAttributeNames().forEach((n=>{t.setAttribute(n,e.getAttribute(n))})),e.parentNode.replaceChild(t,e)})),ie.content));var i;let a=0;for(;s.firstChild;)j(s.firstChild,o,a++)}applyAttribute(e,t,n,r){const o=e.frameReader,s=o.attributeName(r),i=o.attributeEventHandlerId(r);if(i){const e=fe(s);return void this.eventDelegator.setListener(n,e,i,t)}const a=o.attributeValue(r);this.setOrRemoveAttributeOrProperty(n,s,a)}insertFrameRange(e,t,n,r,o,s,i){const a=r;for(let a=s;a{je(t,e)})},enableNavigationInterception:function(e){if(void 0!==me&&me!==e)throw new Error("Only one interactive runtime may enable navigation interception at a time.");me=e},setHasLocationChangingListeners:function(e,t){const n=Ae.get(e);if(!n)throw new Error(`Renderer with ID '${e}' is not listening for navigation events`);n.hasLocationChangingEventListeners=t},endLocationChanging:function(e,t){Ne&&e===xe&&(Ne(t),Ne=null)},navigateTo:function(e,t){Be(e,t,!0)},refresh:function(e){!e&&Se()?Ee(location.href,!0):location.reload()},getBaseURI:()=>document.baseURI,getLocationHref:()=>location.href,scrollToElement:Me};function Me(e){const t=document.getElementById(e);return!!t&&(t.scrollIntoView(),!0)}function Be(e,t,n=!1){const r=Ce(e),o=qe();if(t.forceLoad||!be(r)||"serverside-fullpageload"===o)!function(e,t){if(location.href===e){const t=e+"?";history.replaceState(null,"",t),location.replace(e)}else t?location.replace(e):location.href=e}(e,t.replaceHistoryEntry);else if("clientside-router"===o)Le(r,!1,t.replaceHistoryEntry,t.historyEntryState,n);else{if("serverside-enhanced"!==o)throw new Error(`Unsupported page load mechanism: ${o}`);Ee(r,t.replaceHistoryEntry)}}async function Le(e,t,n,r=void 0,o=!1){if(Fe(),function(e){const t=e.indexOf("#");return t>-1&&location.href.replace(location.hash,"")===e.substring(0,t)}(e))return void function(e,t,n){$e(e,t,n);const r=e.indexOf("#");r!==e.length-1&&Me(e.substring(r+1))}(e,n,r);const s=ze();(o||!(null==s?void 0:s.hasLocationChangingEventListeners)||await He(e,r,t,s))&&(_e=!0,$e(e,n,r),await je(t))}function $e(e,t,n=void 0){t?history.replaceState({userState:n,_index:Re},"",e):(Re++,history.pushState({userState:n,_index:Re},"",e))}function Oe(e){return new Promise((t=>{const n=Pe;Pe=()=>{Pe=n,t()},history.go(e)}))}function Fe(){Ne&&(Ne(!1),Ne=null)}function He(e,t,n,r){return new Promise((o=>{Fe(),xe++,Ne=o,r.locationChanging(xe,e,t,n)}))}async function je(e,t){const n=null!=t?t:location.href;await Promise.all(Array.from(Ae,(async([t,r])=>{var o,s;s=t,S.has(s)&&await r.locationChanged(n,null===(o=history.state)||void 0===o?void 0:o.userState,e)})))}async function We(e){var t,n;Pe&&"serverside-enhanced"!==qe()&&await Pe(e),Re=null!==(n=null===(t=history.state)||void 0===t?void 0:t._index)&&void 0!==n?n:0}function ze(){const e=Te();if(void 0!==e)return Ae.get(e)}function qe(){return ke()?"clientside-router":Se()?"serverside-enhanced":window.Blazor._internal.isBlazorWeb?"serverside-fullpageload":"clientside-router"}const Je={focus:function(e,t){if(e instanceof HTMLElement)e.focus({preventScroll:t});else{if(!(e instanceof SVGElement))throw new Error("Unable to focus an invalid element.");if(!e.hasAttribute("tabindex"))throw new Error("Unable to focus an SVG element that does not have a tabindex.");e.focus({preventScroll:t})}},focusBySelector:function(e,t){const n=document.querySelector(e);n&&(n.hasAttribute("tabindex")||(n.tabIndex=-1),n.focus({preventScroll:!0}))}},Ke={init:function(e,t,n,r=50){const o=Xe(t);(o||document.documentElement).style.overflowAnchor="none";const s=document.createRange();u(n.parentElement)&&(t.style.display="table-row",n.style.display="table-row");const i=new IntersectionObserver((function(r){r.forEach((r=>{var o;if(!r.isIntersecting)return;s.setStartAfter(t),s.setEndBefore(n);const i=s.getBoundingClientRect().height,a=null===(o=r.rootBounds)||void 0===o?void 0:o.height;r.target===t?e.invokeMethodAsync("OnSpacerBeforeVisible",r.intersectionRect.top-r.boundingClientRect.top,i,a):r.target===n&&n.offsetHeight>0&&e.invokeMethodAsync("OnSpacerAfterVisible",r.boundingClientRect.bottom-r.intersectionRect.bottom,i,a)}))}),{root:o,rootMargin:`${r}px`});i.observe(t),i.observe(n);const a=d(t),c=d(n),{observersByDotNetObjectId:l,id:h}=Ye(e);function d(e){const t={attributes:!0},n=new MutationObserver(((n,r)=>{u(e.parentElement)&&(r.disconnect(),e.style.display="table-row",r.observe(e,t)),i.unobserve(e),i.observe(e)}));return n.observe(e,t),n}function u(e){return null!==e&&(e instanceof HTMLTableElement&&""===e.style.display||"table"===e.style.display||e instanceof HTMLTableSectionElement&&""===e.style.display||"table-row-group"===e.style.display)}l[h]={intersectionObserver:i,mutationObserverBefore:a,mutationObserverAfter:c}},dispose:function(e){const{observersByDotNetObjectId:t,id:n}=Ye(e),r=t[n];r&&(r.intersectionObserver.disconnect(),r.mutationObserverBefore.disconnect(),r.mutationObserverAfter.disconnect(),e.dispose(),delete t[n])}},Ve=Symbol();function Xe(e){return e&&e!==document.body&&e!==document.documentElement?"visible"!==getComputedStyle(e).overflowY?e:Xe(e.parentElement):null}function Ye(e){var t;const n=e._callDispatcher,r=e._id;return null!==(t=n[Ve])&&void 0!==t||(n[Ve]={}),{observersByDotNetObjectId:n[Ve],id:r}}const Ge={getAndRemoveExistingTitle:function(){var e;const t=document.head?document.head.getElementsByTagName("title"):[];if(0===t.length)return null;let n=null;for(let r=t.length-1;r>=0;r--){const o=t[r],s=o.previousSibling;s instanceof Comment&&null!==z(s)||(null===n&&(n=o.textContent),null===(e=o.parentNode)||void 0===e||e.removeChild(o))}return n}},Qe={init:function(e,t){t._blazorInputFileNextFileId=0,t.addEventListener("click",(function(){t.value=""})),t.addEventListener("change",(function(){t._blazorFilesById={};const n=Array.prototype.map.call(t.files,(function(e){const n={id:++t._blazorInputFileNextFileId,lastModified:new Date(e.lastModified).toISOString(),name:e.name,size:e.size,contentType:e.type,readPromise:void 0,arrayBuffer:void 0,blob:e};return t._blazorFilesById[n.id]=n,n}));e.invokeMethodAsync("NotifyChange",n)}))},toImageFile:async function(e,t,n,r,o){const s=Ze(e,t),i=await new Promise((function(e){const t=new Image;t.onload=function(){URL.revokeObjectURL(t.src),e(t)},t.onerror=function(){t.onerror=null,URL.revokeObjectURL(t.src)},t.src=URL.createObjectURL(s.blob)})),a=await new Promise((function(e){var t;const s=Math.min(1,r/i.width),a=Math.min(1,o/i.height),c=Math.min(s,a),l=document.createElement("canvas");l.width=Math.round(i.width*c),l.height=Math.round(i.height*c),null===(t=l.getContext("2d"))||void 0===t||t.drawImage(i,0,0,l.width,l.height),l.toBlob(e,n)})),c={id:++e._blazorInputFileNextFileId,lastModified:s.lastModified,name:s.name,size:(null==a?void 0:a.size)||0,contentType:n,blob:a||s.blob};return e._blazorFilesById[c.id]=c,c},readFileData:async function(e,t){return Ze(e,t).blob}};function Ze(e,t){const n=e._blazorFilesById[t];if(!n)throw new Error(`There is no file with ID ${t}. The file list may have changed. See https://aka.ms/aspnet/blazor-input-file-multiple-selections.`);return n}const et=new Set,tt={enableNavigationPrompt:function(e){0===et.size&&window.addEventListener("beforeunload",nt),et.add(e)},disableNavigationPrompt:function(e){et.delete(e),0===et.size&&window.removeEventListener("beforeunload",nt)}};function nt(e){e.preventDefault(),e.returnValue=!0}async function rt(e,t,n){return e instanceof Blob?await async function(e,t,n){const r=e.slice(t,t+n),o=await r.arrayBuffer();return new Uint8Array(o)}(e,t,n):function(e,t,n){return new Uint8Array(e.buffer,e.byteOffset+t,n)}(e,t,n)}new Map;const ot={navigateTo:function(e,t,n=!1){Be(e,t instanceof Object?t:{forceLoad:t,replaceHistoryEntry:n})},registerCustomEventType:function(e,t){if(!t)throw new Error("The options parameter is required.");if(s.has(e))throw new Error(`The event '${e}' is already registered.`);if(t.browserEventName){const n=i.get(t.browserEventName);n?n.push(e):i.set(t.browserEventName,[e]),a.forEach((n=>n(e,t.browserEventName)))}s.set(e,t)},rootComponents:y,runtime:{},_internal:{navigationManager:Ue,domWrapper:Je,Virtualize:Ke,PageTitle:Ge,InputFile:Qe,NavigationLock:tt,getJSDataStreamChunk:rt,attachWebRendererInterop:I}};var st;function it(e){const t={...at,...e};return e&&e.reconnectionOptions&&(t.reconnectionOptions={...at.reconnectionOptions,...e.reconnectionOptions}),t}window.Blazor=ot,function(e){e[e.Trace=0]="Trace",e[e.Debug=1]="Debug",e[e.Information=2]="Information",e[e.Warning=3]="Warning",e[e.Error=4]="Error",e[e.Critical=5]="Critical",e[e.None=6]="None"}(st||(st={}));const at={configureSignalR:e=>{},logLevel:st.Warning,initializers:void 0,circuitHandlers:[],reconnectionOptions:{maxRetries:8,retryIntervalMilliseconds:2e4,dialogId:"components-reconnect-modal"}};class ct{log(e,t){}}ct.instance=new ct;class lt{constructor(e){this.minLevel=e}log(e,t){if(e>=this.minLevel){const n=`[${(new Date).toISOString()}] ${st[e]}: ${t}`;switch(e){case st.Critical:case st.Error:console.error(n);break;case st.Warning:console.warn(n);break;case st.Information:console.info(n);break;default:console.log(n)}}}}const ht=/^\s*Blazor-Server-Component-State:(?[a-zA-Z0-9+/=]+)$/;function dt(e,t,n="state"){var r;if(e.nodeType===Node.COMMENT_NODE){const o=e.textContent||"",s=t.exec(o),i=s&&s.groups&&s.groups[n];return i&&(null===(r=e.parentNode)||void 0===r||r.removeChild(e)),i}if(!e.hasChildNodes())return;const o=e.childNodes;for(let e=0;e.*)$/);function ft(e,t){const n=e.currentElement;var r,o,s;if(n&&n.nodeType===Node.COMMENT_NODE&&n.textContent){const i=pt.exec(n.textContent),a=i&&i.groups&&i.groups.descriptor;if(!a)return;!function(e){if(e.parentNode instanceof Document)throw new Error("Root components cannot be marked as interactive. The element must be rendered statically so that scripts are not evaluated multiple times.")}(n);try{const i=function(e){const t=JSON.parse(e),{type:n}=t;if("server"!==n&&"webassembly"!==n&&"auto"!==n)throw new Error(`Invalid component type '${n}'.`);return t}(a),c=function(e,t,n){const{prerenderId:r}=e;if(r){for(;n.next()&&n.currentElement;){const e=n.currentElement;if(e.nodeType!==Node.COMMENT_NODE)continue;if(!e.textContent)continue;const t=pt.exec(e.textContent),o=t&&t[1];if(o)return yt(o,r),e}throw new Error(`Could not find an end component comment for '${t}'.`)}}(i,n,e);if(t!==i.type)return;switch(i.type){case"webassembly":return o=n,s=c,vt(r=i),{...r,uniqueId:gt++,start:o,end:s};case"server":return function(e,t,n){return mt(e),{...e,uniqueId:gt++,start:t,end:n}}(i,n,c);case"auto":return function(e,t,n){return mt(e),vt(e),{...e,uniqueId:gt++,start:t,end:n}}(i,n,c)}}catch(e){throw new Error(`Found malformed component comment at ${n.textContent}`)}}}let gt=0;function mt(e){const{descriptor:t,sequence:n}=e;if(!t)throw new Error("descriptor must be defined when using a descriptor.");if(void 0===n)throw new Error("sequence must be defined when using a descriptor.");if(!Number.isInteger(n))throw new Error(`Error parsing the sequence '${n}' for component '${JSON.stringify(e)}'`)}function vt(e){const{assembly:t,typeName:n}=e;if(!t)throw new Error("assembly must be defined when using a descriptor.");if(!n)throw new Error("typeName must be defined when using a descriptor.");e.parameterDefinitions=e.parameterDefinitions&&atob(e.parameterDefinitions),e.parameterValues=e.parameterValues&&atob(e.parameterValues)}function yt(e,t){const n=JSON.parse(e);if(1!==Object.keys(n).length)throw new Error(`Invalid end of component comment: '${e}'`);const r=n.prerenderId;if(!r)throw new Error(`End of component comment must have a value for the prerendered property: '${e}'`);if(r!==t)throw new Error(`End of component comment prerendered property must match the start comment prerender id: '${t}', '${r}'`)}class wt{constructor(e){this.childNodes=e,this.currentIndex=-1,this.length=e.length}next(){return this.currentIndex++,this.currentIndex{n+=`0x${e<16?"0":""}${e.toString(16)} `})),n.substr(0,n.length-1)}(e)}'`)):"string"==typeof e&&(n=`String data of length ${e.length}`,t&&(n+=`. Content: '${e}'`)),n}function Tt(e){return e&&"undefined"!=typeof ArrayBuffer&&(e instanceof ArrayBuffer||e.constructor&&"ArrayBuffer"===e.constructor.name)}async function Dt(e,t,n,r,o,s){const i={},[a,c]=At();i[a]=c,e.log(bt.Trace,`(${t} transport) sending data. ${kt(o,s.logMessageContent)}.`);const l=Tt(o)?"arraybuffer":"text",h=await n.post(r,{content:o,headers:{...i,...s.headers},responseType:l,timeout:s.timeout,withCredentials:s.withCredentials});e.log(bt.Trace,`(${t} transport) request complete. Response status: ${h.statusCode}.`)}class Rt{constructor(e,t){this._subject=e,this._observer=t}dispose(){const e=this._subject.observers.indexOf(this._observer);e>-1&&this._subject.observers.splice(e,1),0===this._subject.observers.length&&this._subject.cancelCallback&&this._subject.cancelCallback().catch((e=>{}))}}class xt{constructor(e){this._minLevel=e,this.out=console}log(e,t){if(e>=this._minLevel){const n=`[${(new Date).toISOString()}] ${bt[e]}: ${t}`;switch(e){case bt.Critical:case bt.Error:this.out.error(n);break;case bt.Warning:this.out.warn(n);break;case bt.Information:this.out.info(n);break;default:this.out.log(n)}}}}function At(){let e="X-SignalR-User-Agent";return It.isNode&&(e="User-Agent"),[e,Pt(Et,Nt(),It.isNode?"NodeJS":"Browser",Ut())]}function Pt(e,t,n,r){let o="Microsoft SignalR/";const s=e.split(".");return o+=`${s[0]}.${s[1]}`,o+=` (${e}; `,o+=t&&""!==t?`${t}; `:"Unknown OS; ",o+=`${n}`,o+=r?`; ${r}`:"; Unknown Runtime Version",o+=")",o}function Nt(){if(!It.isNode)return"";switch(process.platform){case"win32":return"Windows NT";case"darwin":return"macOS";case"linux":return"Linux";default:return process.platform}}function Ut(){if(It.isNode)return process.versions.node}function Mt(e){return e.stack?e.stack:e.message?e.message:`${e}`}class Bt{writeHandshakeRequest(e){return _t.write(JSON.stringify(e))}parseHandshakeResponse(e){let t,n;if(Tt(e)){const r=new Uint8Array(e),o=r.indexOf(_t.RecordSeparatorCode);if(-1===o)throw new Error("Message is incomplete.");const s=o+1;t=String.fromCharCode.apply(null,Array.prototype.slice.call(r.slice(0,s))),n=r.byteLength>s?r.slice(s).buffer:null}else{const r=e,o=r.indexOf(_t.RecordSeparator);if(-1===o)throw new Error("Message is incomplete.");const s=o+1;t=r.substring(0,s),n=r.length>s?r.substring(s):null}const r=_t.parse(t),o=JSON.parse(r[0]);if(o.type)throw new Error("Expected a handshake response from the server.");return[n,o]}}class Lt extends Error{constructor(e,t){const n=new.target.prototype;super(`${e}: Status code '${t}'`),this.statusCode=t,this.__proto__=n}}class $t extends Error{constructor(e="A timeout occurred."){const t=new.target.prototype;super(e),this.__proto__=t}}class Ot extends Error{constructor(e="An abort occurred."){const t=new.target.prototype;super(e),this.__proto__=t}}class Ft extends Error{constructor(e,t){const n=new.target.prototype;super(e),this.transport=t,this.errorType="UnsupportedTransportError",this.__proto__=n}}class Ht extends Error{constructor(e,t){const n=new.target.prototype;super(e),this.transport=t,this.errorType="DisabledTransportError",this.__proto__=n}}class jt extends Error{constructor(e,t){const n=new.target.prototype;super(e),this.transport=t,this.errorType="FailedToStartTransportError",this.__proto__=n}}class Wt extends Error{constructor(e){const t=new.target.prototype;super(e),this.errorType="FailedToNegotiateWithServerError",this.__proto__=t}}class zt extends Error{constructor(e,t){const n=new.target.prototype;super(e),this.innerErrors=t,this.__proto__=n}}var qt,Jt;!function(e){e[e.Invocation=1]="Invocation",e[e.StreamItem=2]="StreamItem",e[e.Completion=3]="Completion",e[e.StreamInvocation=4]="StreamInvocation",e[e.CancelInvocation=5]="CancelInvocation",e[e.Ping=6]="Ping",e[e.Close=7]="Close",e[e.Ack=8]="Ack",e[e.Sequence=9]="Sequence"}(qt||(qt={}));class Kt{constructor(){this.observers=[]}next(e){for(const t of this.observers)t.next(e)}error(e){for(const t of this.observers)t.error&&t.error(e)}complete(){for(const e of this.observers)e.complete&&e.complete()}subscribe(e){return this.observers.push(e),new Rt(this,e)}}class Vt{constructor(e,t,n){this._bufferSize=1e5,this._messages=[],this._totalMessageCount=0,this._waitForSequenceMessage=!1,this._nextReceivingSequenceId=1,this._latestReceivedSequenceId=0,this._bufferedByteCount=0,this._reconnectInProgress=!1,this._protocol=e,this._connection=t,this._bufferSize=n}async _send(e){const t=this._protocol.writeMessage(e);let n=Promise.resolve();if(this._isInvocationMessage(e)){this._totalMessageCount++;let e=()=>{},r=()=>{};Tt(t)?this._bufferedByteCount+=t.byteLength:this._bufferedByteCount+=t.length,this._bufferedByteCount>=this._bufferSize&&(n=new Promise(((t,n)=>{e=t,r=n}))),this._messages.push(new Xt(t,this._totalMessageCount,e,r))}try{this._reconnectInProgress||await this._connection.send(t)}catch{this._disconnected()}await n}_ack(e){let t=-1;for(let n=0;nthis._nextReceivingSequenceId?this._connection.stop(new Error("Sequence ID greater than amount of messages we've received.")):this._nextReceivingSequenceId=e.sequenceId}_disconnected(){this._reconnectInProgress=!0,this._waitForSequenceMessage=!0}async _resend(){const e=0!==this._messages.length?this._messages[0]._id:this._totalMessageCount+1;await this._connection.send(this._protocol.writeMessage({type:qt.Sequence,sequenceId:e}));const t=this._messages;for(const e of t)await this._connection.send(e._message);this._reconnectInProgress=!1}_dispose(e){null!=e||(e=new Error("Unable to reconnect to server."));for(const t of this._messages)t._rejector(e)}_isInvocationMessage(e){switch(e.type){case qt.Invocation:case qt.StreamItem:case qt.Completion:case qt.StreamInvocation:case qt.CancelInvocation:return!0;case qt.Close:case qt.Sequence:case qt.Ping:case qt.Ack:return!1}}_ackTimer(){void 0===this._ackTimerHandle&&(this._ackTimerHandle=setTimeout((async()=>{try{this._reconnectInProgress||await this._connection.send(this._protocol.writeMessage({type:qt.Ack,sequenceId:this._latestReceivedSequenceId}))}catch{}clearTimeout(this._ackTimerHandle),this._ackTimerHandle=void 0}),1e3))}}class Xt{constructor(e,t,n,r){this._message=e,this._id=t,this._resolver=n,this._rejector=r}}!function(e){e.Disconnected="Disconnected",e.Connecting="Connecting",e.Connected="Connected",e.Disconnecting="Disconnecting",e.Reconnecting="Reconnecting"}(Jt||(Jt={}));class Yt{static create(e,t,n,r,o,s,i){return new Yt(e,t,n,r,o,s,i)}constructor(e,t,n,r,o,s,i){this._nextKeepAlive=0,this._freezeEventListener=()=>{this._logger.log(bt.Warning,"The page is being frozen, this will likely lead to the connection being closed and messages being lost. For more information see the docs at https://learn.microsoft.com/aspnet/core/signalr/javascript-client#bsleep")},Ct.isRequired(e,"connection"),Ct.isRequired(t,"logger"),Ct.isRequired(n,"protocol"),this.serverTimeoutInMilliseconds=null!=o?o:3e4,this.keepAliveIntervalInMilliseconds=null!=s?s:15e3,this._statefulReconnectBufferSize=null!=i?i:1e5,this._logger=t,this._protocol=n,this.connection=e,this._reconnectPolicy=r,this._handshakeProtocol=new Bt,this.connection.onreceive=e=>this._processIncomingData(e),this.connection.onclose=e=>this._connectionClosed(e),this._callbacks={},this._methods={},this._closedCallbacks=[],this._reconnectingCallbacks=[],this._reconnectedCallbacks=[],this._invocationId=0,this._receivedHandshakeResponse=!1,this._connectionState=Jt.Disconnected,this._connectionStarted=!1,this._cachedPingMessage=this._protocol.writeMessage({type:qt.Ping})}get state(){return this._connectionState}get connectionId(){return this.connection&&this.connection.connectionId||null}get baseUrl(){return this.connection.baseUrl||""}set baseUrl(e){if(this._connectionState!==Jt.Disconnected&&this._connectionState!==Jt.Reconnecting)throw new Error("The HubConnection must be in the Disconnected or Reconnecting state to change the url.");if(!e)throw new Error("The HubConnection url must be a valid url.");this.connection.baseUrl=e}start(){return this._startPromise=this._startWithStateTransitions(),this._startPromise}async _startWithStateTransitions(){if(this._connectionState!==Jt.Disconnected)return Promise.reject(new Error("Cannot start a HubConnection that is not in the 'Disconnected' state."));this._connectionState=Jt.Connecting,this._logger.log(bt.Debug,"Starting HubConnection.");try{await this._startInternal(),It.isBrowser&&window.document.addEventListener("freeze",this._freezeEventListener),this._connectionState=Jt.Connected,this._connectionStarted=!0,this._logger.log(bt.Debug,"HubConnection connected successfully.")}catch(e){return this._connectionState=Jt.Disconnected,this._logger.log(bt.Debug,`HubConnection failed to start successfully because of error '${e}'.`),Promise.reject(e)}}async _startInternal(){this._stopDuringStartError=void 0,this._receivedHandshakeResponse=!1;const e=new Promise(((e,t)=>{this._handshakeResolver=e,this._handshakeRejecter=t}));await this.connection.start(this._protocol.transferFormat);try{let t=this._protocol.version;this.connection.features.reconnect||(t=1);const n={protocol:this._protocol.name,version:t};if(this._logger.log(bt.Debug,"Sending handshake request."),await this._sendMessage(this._handshakeProtocol.writeHandshakeRequest(n)),this._logger.log(bt.Information,`Using HubProtocol '${this._protocol.name}'.`),this._cleanupTimeout(),this._resetTimeoutPeriod(),this._resetKeepAliveInterval(),await e,this._stopDuringStartError)throw this._stopDuringStartError;!!this.connection.features.reconnect&&(this._messageBuffer=new Vt(this._protocol,this.connection,this._statefulReconnectBufferSize),this.connection.features.disconnected=this._messageBuffer._disconnected.bind(this._messageBuffer),this.connection.features.resend=()=>{if(this._messageBuffer)return this._messageBuffer._resend()}),this.connection.features.inherentKeepAlive||await this._sendMessage(this._cachedPingMessage)}catch(e){throw this._logger.log(bt.Debug,`Hub handshake failed with error '${e}' during start(). Stopping HubConnection.`),this._cleanupTimeout(),this._cleanupPingTimer(),await this.connection.stop(e),e}}async stop(){const e=this._startPromise;this.connection.features.reconnect=!1,this._stopPromise=this._stopInternal(),await this._stopPromise;try{await e}catch(e){}}_stopInternal(e){if(this._connectionState===Jt.Disconnected)return this._logger.log(bt.Debug,`Call to HubConnection.stop(${e}) ignored because it is already in the disconnected state.`),Promise.resolve();if(this._connectionState===Jt.Disconnecting)return this._logger.log(bt.Debug,`Call to HttpConnection.stop(${e}) ignored because the connection is already in the disconnecting state.`),this._stopPromise;const t=this._connectionState;return this._connectionState=Jt.Disconnecting,this._logger.log(bt.Debug,"Stopping HubConnection."),this._reconnectDelayHandle?(this._logger.log(bt.Debug,"Connection stopped during reconnect delay. Done reconnecting."),clearTimeout(this._reconnectDelayHandle),this._reconnectDelayHandle=void 0,this._completeClose(),Promise.resolve()):(t===Jt.Connected&&this._sendCloseMessage(),this._cleanupTimeout(),this._cleanupPingTimer(),this._stopDuringStartError=e||new Ot("The connection was stopped before the hub handshake could complete."),this.connection.stop(e))}async _sendCloseMessage(){try{await this._sendWithProtocol(this._createCloseMessage())}catch{}}stream(e,...t){const[n,r]=this._replaceStreamingParams(t),o=this._createStreamInvocation(e,t,r);let s;const i=new Kt;return i.cancelCallback=()=>{const e=this._createCancelInvocation(o.invocationId);return delete this._callbacks[o.invocationId],s.then((()=>this._sendWithProtocol(e)))},this._callbacks[o.invocationId]=(e,t)=>{t?i.error(t):e&&(e.type===qt.Completion?e.error?i.error(new Error(e.error)):i.complete():i.next(e.item))},s=this._sendWithProtocol(o).catch((e=>{i.error(e),delete this._callbacks[o.invocationId]})),this._launchStreams(n,s),i}_sendMessage(e){return this._resetKeepAliveInterval(),this.connection.send(e)}_sendWithProtocol(e){return this._messageBuffer?this._messageBuffer._send(e):this._sendMessage(this._protocol.writeMessage(e))}send(e,...t){const[n,r]=this._replaceStreamingParams(t),o=this._sendWithProtocol(this._createInvocation(e,t,!0,r));return this._launchStreams(n,o),o}invoke(e,...t){const[n,r]=this._replaceStreamingParams(t),o=this._createInvocation(e,t,!1,r);return new Promise(((e,t)=>{this._callbacks[o.invocationId]=(n,r)=>{r?t(r):n&&(n.type===qt.Completion?n.error?t(new Error(n.error)):e(n.result):t(new Error(`Unexpected message type: ${n.type}`)))};const r=this._sendWithProtocol(o).catch((e=>{t(e),delete this._callbacks[o.invocationId]}));this._launchStreams(n,r)}))}on(e,t){e&&t&&(e=e.toLowerCase(),this._methods[e]||(this._methods[e]=[]),-1===this._methods[e].indexOf(t)&&this._methods[e].push(t))}off(e,t){if(!e)return;e=e.toLowerCase();const n=this._methods[e];if(n)if(t){const r=n.indexOf(t);-1!==r&&(n.splice(r,1),0===n.length&&delete this._methods[e])}else delete this._methods[e]}onclose(e){e&&this._closedCallbacks.push(e)}onreconnecting(e){e&&this._reconnectingCallbacks.push(e)}onreconnected(e){e&&this._reconnectedCallbacks.push(e)}_processIncomingData(e){if(this._cleanupTimeout(),this._receivedHandshakeResponse||(e=this._processHandshakeResponse(e),this._receivedHandshakeResponse=!0),e){const t=this._protocol.parseMessages(e,this._logger);for(const e of t)if(!this._messageBuffer||this._messageBuffer._shouldProcessMessage(e))switch(e.type){case qt.Invocation:this._invokeClientMethod(e);break;case qt.StreamItem:case qt.Completion:{const t=this._callbacks[e.invocationId];if(t){e.type===qt.Completion&&delete this._callbacks[e.invocationId];try{t(e)}catch(e){this._logger.log(bt.Error,`Stream callback threw error: ${Mt(e)}`)}}break}case qt.Ping:break;case qt.Close:{this._logger.log(bt.Information,"Close message received from server.");const t=e.error?new Error("Server returned an error on close: "+e.error):void 0;!0===e.allowReconnect?this.connection.stop(t):this._stopPromise=this._stopInternal(t);break}case qt.Ack:this._messageBuffer&&this._messageBuffer._ack(e);break;case qt.Sequence:this._messageBuffer&&this._messageBuffer._resetSequence(e);break;default:this._logger.log(bt.Warning,`Invalid message type: ${e.type}.`)}}this._resetTimeoutPeriod()}_processHandshakeResponse(e){let t,n;try{[n,t]=this._handshakeProtocol.parseHandshakeResponse(e)}catch(e){const t="Error parsing handshake response: "+e;this._logger.log(bt.Error,t);const n=new Error(t);throw this._handshakeRejecter(n),n}if(t.error){const e="Server returned handshake error: "+t.error;this._logger.log(bt.Error,e);const n=new Error(e);throw this._handshakeRejecter(n),n}return this._logger.log(bt.Debug,"Server handshake complete."),this._handshakeResolver(),n}_resetKeepAliveInterval(){this.connection.features.inherentKeepAlive||(this._nextKeepAlive=(new Date).getTime()+this.keepAliveIntervalInMilliseconds,this._cleanupPingTimer())}_resetTimeoutPeriod(){if(!(this.connection.features&&this.connection.features.inherentKeepAlive||(this._timeoutHandle=setTimeout((()=>this.serverTimeout()),this.serverTimeoutInMilliseconds),void 0!==this._pingServerHandle))){let e=this._nextKeepAlive-(new Date).getTime();e<0&&(e=0),this._pingServerHandle=setTimeout((async()=>{if(this._connectionState===Jt.Connected)try{await this._sendMessage(this._cachedPingMessage)}catch{this._cleanupPingTimer()}}),e)}}serverTimeout(){this.connection.stop(new Error("Server timeout elapsed without receiving a message from the server."))}async _invokeClientMethod(e){const t=e.target.toLowerCase(),n=this._methods[t];if(!n)return this._logger.log(bt.Warning,`No client method with the name '${t}' found.`),void(e.invocationId&&(this._logger.log(bt.Warning,`No result given for '${t}' method and invocation ID '${e.invocationId}'.`),await this._sendWithProtocol(this._createCompletionMessage(e.invocationId,"Client didn't provide a result.",null))));const r=n.slice(),o=!!e.invocationId;let s,i,a;for(const n of r)try{const r=s;s=await n.apply(this,e.arguments),o&&s&&r&&(this._logger.log(bt.Error,`Multiple results provided for '${t}'. Sending error to server.`),a=this._createCompletionMessage(e.invocationId,"Client provided multiple results.",null)),i=void 0}catch(e){i=e,this._logger.log(bt.Error,`A callback for the method '${t}' threw error '${e}'.`)}a?await this._sendWithProtocol(a):o?(i?a=this._createCompletionMessage(e.invocationId,`${i}`,null):void 0!==s?a=this._createCompletionMessage(e.invocationId,null,s):(this._logger.log(bt.Warning,`No result given for '${t}' method and invocation ID '${e.invocationId}'.`),a=this._createCompletionMessage(e.invocationId,"Client didn't provide a result.",null)),await this._sendWithProtocol(a)):s&&this._logger.log(bt.Error,`Result given for '${t}' method but server is not expecting a result.`)}_connectionClosed(e){this._logger.log(bt.Debug,`HubConnection.connectionClosed(${e}) called while in state ${this._connectionState}.`),this._stopDuringStartError=this._stopDuringStartError||e||new Ot("The underlying connection was closed before the hub handshake could complete."),this._handshakeResolver&&this._handshakeResolver(),this._cancelCallbacksWithError(e||new Error("Invocation canceled due to the underlying connection being closed.")),this._cleanupTimeout(),this._cleanupPingTimer(),this._connectionState===Jt.Disconnecting?this._completeClose(e):this._connectionState===Jt.Connected&&this._reconnectPolicy?this._reconnect(e):this._connectionState===Jt.Connected&&this._completeClose(e)}_completeClose(e){if(this._connectionStarted){this._connectionState=Jt.Disconnected,this._connectionStarted=!1,this._messageBuffer&&(this._messageBuffer._dispose(null!=e?e:new Error("Connection closed.")),this._messageBuffer=void 0),It.isBrowser&&window.document.removeEventListener("freeze",this._freezeEventListener);try{this._closedCallbacks.forEach((t=>t.apply(this,[e])))}catch(t){this._logger.log(bt.Error,`An onclose callback called with error '${e}' threw error '${t}'.`)}}}async _reconnect(e){const t=Date.now();let n=0,r=void 0!==e?e:new Error("Attempting to reconnect due to a unknown error."),o=this._getNextRetryDelay(n++,0,r);if(null===o)return this._logger.log(bt.Debug,"Connection not reconnecting because the IRetryPolicy returned null on the first reconnect attempt."),void this._completeClose(e);if(this._connectionState=Jt.Reconnecting,e?this._logger.log(bt.Information,`Connection reconnecting because of error '${e}'.`):this._logger.log(bt.Information,"Connection reconnecting."),0!==this._reconnectingCallbacks.length){try{this._reconnectingCallbacks.forEach((t=>t.apply(this,[e])))}catch(t){this._logger.log(bt.Error,`An onreconnecting callback called with error '${e}' threw error '${t}'.`)}if(this._connectionState!==Jt.Reconnecting)return void this._logger.log(bt.Debug,"Connection left the reconnecting state in onreconnecting callback. Done reconnecting.")}for(;null!==o;){if(this._logger.log(bt.Information,`Reconnect attempt number ${n} will start in ${o} ms.`),await new Promise((e=>{this._reconnectDelayHandle=setTimeout(e,o)})),this._reconnectDelayHandle=void 0,this._connectionState!==Jt.Reconnecting)return void this._logger.log(bt.Debug,"Connection left the reconnecting state during reconnect delay. Done reconnecting.");try{if(await this._startInternal(),this._connectionState=Jt.Connected,this._logger.log(bt.Information,"HubConnection reconnected successfully."),0!==this._reconnectedCallbacks.length)try{this._reconnectedCallbacks.forEach((e=>e.apply(this,[this.connection.connectionId])))}catch(e){this._logger.log(bt.Error,`An onreconnected callback called with connectionId '${this.connection.connectionId}; threw error '${e}'.`)}return}catch(e){if(this._logger.log(bt.Information,`Reconnect attempt failed because of error '${e}'.`),this._connectionState!==Jt.Reconnecting)return this._logger.log(bt.Debug,`Connection moved to the '${this._connectionState}' from the reconnecting state during reconnect attempt. Done reconnecting.`),void(this._connectionState===Jt.Disconnecting&&this._completeClose());r=e instanceof Error?e:new Error(e.toString()),o=this._getNextRetryDelay(n++,Date.now()-t,r)}}this._logger.log(bt.Information,`Reconnect retries have been exhausted after ${Date.now()-t} ms and ${n} failed attempts. Connection disconnecting.`),this._completeClose()}_getNextRetryDelay(e,t,n){try{return this._reconnectPolicy.nextRetryDelayInMilliseconds({elapsedMilliseconds:t,previousRetryCount:e,retryReason:n})}catch(n){return this._logger.log(bt.Error,`IRetryPolicy.nextRetryDelayInMilliseconds(${e}, ${t}) threw error '${n}'.`),null}}_cancelCallbacksWithError(e){const t=this._callbacks;this._callbacks={},Object.keys(t).forEach((n=>{const r=t[n];try{r(null,e)}catch(t){this._logger.log(bt.Error,`Stream 'error' callback called with '${e}' threw error: ${Mt(t)}`)}}))}_cleanupPingTimer(){this._pingServerHandle&&(clearTimeout(this._pingServerHandle),this._pingServerHandle=void 0)}_cleanupTimeout(){this._timeoutHandle&&clearTimeout(this._timeoutHandle)}_createInvocation(e,t,n,r){if(n)return 0!==r.length?{arguments:t,streamIds:r,target:e,type:qt.Invocation}:{arguments:t,target:e,type:qt.Invocation};{const n=this._invocationId;return this._invocationId++,0!==r.length?{arguments:t,invocationId:n.toString(),streamIds:r,target:e,type:qt.Invocation}:{arguments:t,invocationId:n.toString(),target:e,type:qt.Invocation}}}_launchStreams(e,t){if(0!==e.length){t||(t=Promise.resolve());for(const n in e)e[n].subscribe({complete:()=>{t=t.then((()=>this._sendWithProtocol(this._createCompletionMessage(n))))},error:e=>{let r;r=e instanceof Error?e.message:e&&e.toString?e.toString():"Unknown error",t=t.then((()=>this._sendWithProtocol(this._createCompletionMessage(n,r))))},next:e=>{t=t.then((()=>this._sendWithProtocol(this._createStreamItemMessage(n,e))))}})}}_replaceStreamingParams(e){const t=[],n=[];for(let r=0;r0)&&(t=!1,this._accessToken=await this._accessTokenFactory()),this._setAuthorizationHeader(e);const n=await this._innerClient.send(e);return t&&401===n.statusCode&&this._accessTokenFactory?(this._accessToken=await this._accessTokenFactory(),this._setAuthorizationHeader(e),await this._innerClient.send(e)):n}_setAuthorizationHeader(e){e.headers||(e.headers={}),this._accessToken?e.headers[Zt.Authorization]=`Bearer ${this._accessToken}`:this._accessTokenFactory&&e.headers[Zt.Authorization]&&delete e.headers[Zt.Authorization]}getCookieString(e){return this._innerClient.getCookieString(e)}}class rn extends tn{constructor(e){super(),this._logger=e;const t={_fetchType:void 0,_jar:void 0};var r;r=t,"undefined"==typeof fetch&&(r._jar=new(n(628).CookieJar),"undefined"==typeof fetch?r._fetchType=n(200):r._fetchType=fetch,r._fetchType=n(203)(r._fetchType,r._jar),1)?(this._fetchType=t._fetchType,this._jar=t._jar):this._fetchType=fetch.bind(function(){if("undefined"!=typeof globalThis)return globalThis;if("undefined"!=typeof self)return self;if("undefined"!=typeof window)return window;if(void 0!==n.g)return n.g;throw new Error("could not find global")}()),this._abortControllerType=AbortController;const o={_abortControllerType:this._abortControllerType};(function(e){return"undefined"==typeof AbortController&&(e._abortControllerType=n(778),!0)})(o)&&(this._abortControllerType=o._abortControllerType)}async send(e){if(e.abortSignal&&e.abortSignal.aborted)throw new Ot;if(!e.method)throw new Error("No method defined.");if(!e.url)throw new Error("No url defined.");const t=new this._abortControllerType;let n;e.abortSignal&&(e.abortSignal.onabort=()=>{t.abort(),n=new Ot});let r,o=null;if(e.timeout){const r=e.timeout;o=setTimeout((()=>{t.abort(),this._logger.log(bt.Warning,"Timeout from HTTP request."),n=new $t}),r)}""===e.content&&(e.content=void 0),e.content&&(e.headers=e.headers||{},Tt(e.content)?e.headers["Content-Type"]="application/octet-stream":e.headers["Content-Type"]="text/plain;charset=UTF-8");try{r=await this._fetchType(e.url,{body:e.content,cache:"no-cache",credentials:!0===e.withCredentials?"include":"same-origin",headers:{"X-Requested-With":"XMLHttpRequest",...e.headers},method:e.method,mode:"cors",redirect:"follow",signal:t.signal})}catch(e){if(n)throw n;throw this._logger.log(bt.Warning,`Error from HTTP request. ${e}.`),e}finally{o&&clearTimeout(o),e.abortSignal&&(e.abortSignal.onabort=null)}if(!r.ok){const e=await on(r,"text");throw new Lt(e||r.statusText,r.status)}const s=on(r,e.responseType),i=await s;return new en(r.status,r.statusText,i)}getCookieString(e){return""}}function on(e,t){let n;switch(t){case"arraybuffer":n=e.arrayBuffer();break;case"text":default:n=e.text();break;case"blob":case"document":case"json":throw new Error(`${t} is not supported.`)}return n}class sn extends tn{constructor(e){super(),this._logger=e}send(e){return e.abortSignal&&e.abortSignal.aborted?Promise.reject(new Ot):e.method?e.url?new Promise(((t,n)=>{const r=new XMLHttpRequest;r.open(e.method,e.url,!0),r.withCredentials=void 0===e.withCredentials||e.withCredentials,r.setRequestHeader("X-Requested-With","XMLHttpRequest"),""===e.content&&(e.content=void 0),e.content&&(Tt(e.content)?r.setRequestHeader("Content-Type","application/octet-stream"):r.setRequestHeader("Content-Type","text/plain;charset=UTF-8"));const o=e.headers;o&&Object.keys(o).forEach((e=>{r.setRequestHeader(e,o[e])})),e.responseType&&(r.responseType=e.responseType),e.abortSignal&&(e.abortSignal.onabort=()=>{r.abort(),n(new Ot)}),e.timeout&&(r.timeout=e.timeout),r.onload=()=>{e.abortSignal&&(e.abortSignal.onabort=null),r.status>=200&&r.status<300?t(new en(r.status,r.statusText,r.response||r.responseText)):n(new Lt(r.response||r.responseText||r.statusText,r.status))},r.onerror=()=>{this._logger.log(bt.Warning,`Error from HTTP request. ${r.status}: ${r.statusText}.`),n(new Lt(r.statusText,r.status))},r.ontimeout=()=>{this._logger.log(bt.Warning,"Timeout from HTTP request."),n(new $t)},r.send(e.content)})):Promise.reject(new Error("No url defined.")):Promise.reject(new Error("No method defined."))}}class an extends tn{constructor(e){if(super(),"undefined"!=typeof fetch)this._httpClient=new rn(e);else{if("undefined"==typeof XMLHttpRequest)throw new Error("No usable HttpClient found.");this._httpClient=new sn(e)}}send(e){return e.abortSignal&&e.abortSignal.aborted?Promise.reject(new Ot):e.method?e.url?this._httpClient.send(e):Promise.reject(new Error("No url defined.")):Promise.reject(new Error("No method defined."))}getCookieString(e){return this._httpClient.getCookieString(e)}}var cn,ln;!function(e){e[e.None=0]="None",e[e.WebSockets=1]="WebSockets",e[e.ServerSentEvents=2]="ServerSentEvents",e[e.LongPolling=4]="LongPolling"}(cn||(cn={})),function(e){e[e.Text=1]="Text",e[e.Binary=2]="Binary"}(ln||(ln={}));class hn{constructor(){this._isAborted=!1,this.onabort=null}abort(){this._isAborted||(this._isAborted=!0,this.onabort&&this.onabort())}get signal(){return this}get aborted(){return this._isAborted}}class dn{get pollAborted(){return this._pollAbort.aborted}constructor(e,t,n){this._httpClient=e,this._logger=t,this._pollAbort=new hn,this._options=n,this._running=!1,this.onreceive=null,this.onclose=null}async connect(e,t){if(Ct.isRequired(e,"url"),Ct.isRequired(t,"transferFormat"),Ct.isIn(t,ln,"transferFormat"),this._url=e,this._logger.log(bt.Trace,"(LongPolling transport) Connecting."),t===ln.Binary&&"undefined"!=typeof XMLHttpRequest&&"string"!=typeof(new XMLHttpRequest).responseType)throw new Error("Binary protocols over XmlHttpRequest not implementing advanced features are not supported.");const[n,r]=At(),o={[n]:r,...this._options.headers},s={abortSignal:this._pollAbort.signal,headers:o,timeout:1e5,withCredentials:this._options.withCredentials};t===ln.Binary&&(s.responseType="arraybuffer");const i=`${e}&_=${Date.now()}`;this._logger.log(bt.Trace,`(LongPolling transport) polling: ${i}.`);const a=await this._httpClient.get(i,s);200!==a.statusCode?(this._logger.log(bt.Error,`(LongPolling transport) Unexpected response code: ${a.statusCode}.`),this._closeError=new Lt(a.statusText||"",a.statusCode),this._running=!1):this._running=!0,this._receiving=this._poll(this._url,s)}async _poll(e,t){try{for(;this._running;)try{const n=`${e}&_=${Date.now()}`;this._logger.log(bt.Trace,`(LongPolling transport) polling: ${n}.`);const r=await this._httpClient.get(n,t);204===r.statusCode?(this._logger.log(bt.Information,"(LongPolling transport) Poll terminated by server."),this._running=!1):200!==r.statusCode?(this._logger.log(bt.Error,`(LongPolling transport) Unexpected response code: ${r.statusCode}.`),this._closeError=new Lt(r.statusText||"",r.statusCode),this._running=!1):r.content?(this._logger.log(bt.Trace,`(LongPolling transport) data received. ${kt(r.content,this._options.logMessageContent)}.`),this.onreceive&&this.onreceive(r.content)):this._logger.log(bt.Trace,"(LongPolling transport) Poll timed out, reissuing.")}catch(e){this._running?e instanceof $t?this._logger.log(bt.Trace,"(LongPolling transport) Poll timed out, reissuing."):(this._closeError=e,this._running=!1):this._logger.log(bt.Trace,`(LongPolling transport) Poll errored after shutdown: ${e.message}`)}}finally{this._logger.log(bt.Trace,"(LongPolling transport) Polling complete."),this.pollAborted||this._raiseOnClose()}}async send(e){return this._running?Dt(this._logger,"LongPolling",this._httpClient,this._url,e,this._options):Promise.reject(new Error("Cannot send until the transport is connected"))}async stop(){this._logger.log(bt.Trace,"(LongPolling transport) Stopping polling."),this._running=!1,this._pollAbort.abort();try{await this._receiving,this._logger.log(bt.Trace,`(LongPolling transport) sending DELETE request to ${this._url}.`);const e={},[t,n]=At();e[t]=n;const r={headers:{...e,...this._options.headers},timeout:this._options.timeout,withCredentials:this._options.withCredentials};let o;try{await this._httpClient.delete(this._url,r)}catch(e){o=e}o?o instanceof Lt&&(404===o.statusCode?this._logger.log(bt.Trace,"(LongPolling transport) A 404 response was returned from sending a DELETE request."):this._logger.log(bt.Trace,`(LongPolling transport) Error sending a DELETE request: ${o}`)):this._logger.log(bt.Trace,"(LongPolling transport) DELETE request accepted.")}finally{this._logger.log(bt.Trace,"(LongPolling transport) Stop finished."),this._raiseOnClose()}}_raiseOnClose(){if(this.onclose){let e="(LongPolling transport) Firing onclose event.";this._closeError&&(e+=" Error: "+this._closeError),this._logger.log(bt.Trace,e),this.onclose(this._closeError)}}}class un{constructor(e,t,n,r){this._httpClient=e,this._accessToken=t,this._logger=n,this._options=r,this.onreceive=null,this.onclose=null}async connect(e,t){return Ct.isRequired(e,"url"),Ct.isRequired(t,"transferFormat"),Ct.isIn(t,ln,"transferFormat"),this._logger.log(bt.Trace,"(SSE transport) Connecting."),this._url=e,this._accessToken&&(e+=(e.indexOf("?")<0?"?":"&")+`access_token=${encodeURIComponent(this._accessToken)}`),new Promise(((n,r)=>{let o,s=!1;if(t===ln.Text){if(It.isBrowser||It.isWebWorker)o=new this._options.EventSource(e,{withCredentials:this._options.withCredentials});else{const t=this._httpClient.getCookieString(e),n={};n.Cookie=t;const[r,s]=At();n[r]=s,o=new this._options.EventSource(e,{withCredentials:this._options.withCredentials,headers:{...n,...this._options.headers}})}try{o.onmessage=e=>{if(this.onreceive)try{this._logger.log(bt.Trace,`(SSE transport) data received. ${kt(e.data,this._options.logMessageContent)}.`),this.onreceive(e.data)}catch(e){return void this._close(e)}},o.onerror=e=>{s?this._close():r(new Error("EventSource failed to connect. The connection could not be found on the server, either the connection ID is not present on the server, or a proxy is refusing/buffering the connection. If you have multiple servers check that sticky sessions are enabled."))},o.onopen=()=>{this._logger.log(bt.Information,`SSE connected to ${this._url}`),this._eventSource=o,s=!0,n()}}catch(e){return void r(e)}}else r(new Error("The Server-Sent Events transport only supports the 'Text' transfer format"))}))}async send(e){return this._eventSource?Dt(this._logger,"SSE",this._httpClient,this._url,e,this._options):Promise.reject(new Error("Cannot send until the transport is connected"))}stop(){return this._close(),Promise.resolve()}_close(e){this._eventSource&&(this._eventSource.close(),this._eventSource=void 0,this.onclose&&this.onclose(e))}}class pn{constructor(e,t,n,r,o,s){this._logger=n,this._accessTokenFactory=t,this._logMessageContent=r,this._webSocketConstructor=o,this._httpClient=e,this.onreceive=null,this.onclose=null,this._headers=s}async connect(e,t){let n;return Ct.isRequired(e,"url"),Ct.isRequired(t,"transferFormat"),Ct.isIn(t,ln,"transferFormat"),this._logger.log(bt.Trace,"(WebSockets transport) Connecting."),this._accessTokenFactory&&(n=await this._accessTokenFactory()),new Promise(((r,o)=>{let s;e=e.replace(/^http/,"ws");const i=this._httpClient.getCookieString(e);let a=!1;if(It.isReactNative){const t={},[r,o]=At();t[r]=o,n&&(t[Zt.Authorization]=`Bearer ${n}`),i&&(t[Zt.Cookie]=i),s=new this._webSocketConstructor(e,void 0,{headers:{...t,...this._headers}})}else n&&(e+=(e.indexOf("?")<0?"?":"&")+`access_token=${encodeURIComponent(n)}`);s||(s=new this._webSocketConstructor(e)),t===ln.Binary&&(s.binaryType="arraybuffer"),s.onopen=t=>{this._logger.log(bt.Information,`WebSocket connected to ${e}.`),this._webSocket=s,a=!0,r()},s.onerror=e=>{let t=null;t="undefined"!=typeof ErrorEvent&&e instanceof ErrorEvent?e.error:"There was an error with the transport",this._logger.log(bt.Information,`(WebSockets transport) ${t}.`)},s.onmessage=e=>{if(this._logger.log(bt.Trace,`(WebSockets transport) data received. ${kt(e.data,this._logMessageContent)}.`),this.onreceive)try{this.onreceive(e.data)}catch(e){return void this._close(e)}},s.onclose=e=>{if(a)this._close(e);else{let t=null;t="undefined"!=typeof ErrorEvent&&e instanceof ErrorEvent?e.error:"WebSocket failed to connect. The connection could not be found on the server, either the endpoint may not be a SignalR endpoint, the connection ID is not present on the server, or there is a proxy blocking WebSockets. If you have multiple servers check that sticky sessions are enabled.",o(new Error(t))}}}))}send(e){return this._webSocket&&this._webSocket.readyState===this._webSocketConstructor.OPEN?(this._logger.log(bt.Trace,`(WebSockets transport) sending data. ${kt(e,this._logMessageContent)}.`),this._webSocket.send(e),Promise.resolve()):Promise.reject("WebSocket is not in the OPEN state")}stop(){return this._webSocket&&this._close(void 0),Promise.resolve()}_close(e){this._webSocket&&(this._webSocket.onclose=()=>{},this._webSocket.onmessage=()=>{},this._webSocket.onerror=()=>{},this._webSocket.close(),this._webSocket=void 0),this._logger.log(bt.Trace,"(WebSockets transport) socket closed."),this.onclose&&(!this._isCloseEvent(e)||!1!==e.wasClean&&1e3===e.code?e instanceof Error?this.onclose(e):this.onclose():this.onclose(new Error(`WebSocket closed with status code: ${e.code} (${e.reason||"no reason given"}).`)))}_isCloseEvent(e){return e&&"boolean"==typeof e.wasClean&&"number"==typeof e.code}}class fn{constructor(e,t={}){if(this._stopPromiseResolver=()=>{},this.features={},this._negotiateVersion=1,Ct.isRequired(e,"url"),this._logger=function(e){return void 0===e?new xt(bt.Information):null===e?St.instance:void 0!==e.log?e:new xt(e)}(t.logger),this.baseUrl=this._resolveUrl(e),(t=t||{}).logMessageContent=void 0!==t.logMessageContent&&t.logMessageContent,"boolean"!=typeof t.withCredentials&&void 0!==t.withCredentials)throw new Error("withCredentials option was not a 'boolean' or 'undefined' value");t.withCredentials=void 0===t.withCredentials||t.withCredentials,t.timeout=void 0===t.timeout?1e5:t.timeout,"undefined"==typeof WebSocket||t.WebSocket||(t.WebSocket=WebSocket),"undefined"==typeof EventSource||t.EventSource||(t.EventSource=EventSource),this._httpClient=new nn(t.httpClient||new an(this._logger),t.accessTokenFactory),this._connectionState="Disconnected",this._connectionStarted=!1,this._options=t,this.onreceive=null,this.onclose=null}async start(e){if(e=e||ln.Binary,Ct.isIn(e,ln,"transferFormat"),this._logger.log(bt.Debug,`Starting connection with transfer format '${ln[e]}'.`),"Disconnected"!==this._connectionState)return Promise.reject(new Error("Cannot start an HttpConnection that is not in the 'Disconnected' state."));if(this._connectionState="Connecting",this._startInternalPromise=this._startInternal(e),await this._startInternalPromise,"Disconnecting"===this._connectionState){const e="Failed to start the HttpConnection before stop() was called.";return this._logger.log(bt.Error,e),await this._stopPromise,Promise.reject(new Ot(e))}if("Connected"!==this._connectionState){const e="HttpConnection.startInternal completed gracefully but didn't enter the connection into the connected state!";return this._logger.log(bt.Error,e),Promise.reject(new Ot(e))}this._connectionStarted=!0}send(e){return"Connected"!==this._connectionState?Promise.reject(new Error("Cannot send data if the connection is not in the 'Connected' State.")):(this._sendQueue||(this._sendQueue=new gn(this.transport)),this._sendQueue.send(e))}async stop(e){return"Disconnected"===this._connectionState?(this._logger.log(bt.Debug,`Call to HttpConnection.stop(${e}) ignored because the connection is already in the disconnected state.`),Promise.resolve()):"Disconnecting"===this._connectionState?(this._logger.log(bt.Debug,`Call to HttpConnection.stop(${e}) ignored because the connection is already in the disconnecting state.`),this._stopPromise):(this._connectionState="Disconnecting",this._stopPromise=new Promise((e=>{this._stopPromiseResolver=e})),await this._stopInternal(e),void await this._stopPromise)}async _stopInternal(e){this._stopError=e;try{await this._startInternalPromise}catch(e){}if(this.transport){try{await this.transport.stop()}catch(e){this._logger.log(bt.Error,`HttpConnection.transport.stop() threw error '${e}'.`),this._stopConnection()}this.transport=void 0}else this._logger.log(bt.Debug,"HttpConnection.transport is undefined in HttpConnection.stop() because start() failed.")}async _startInternal(e){let t=this.baseUrl;this._accessTokenFactory=this._options.accessTokenFactory,this._httpClient._accessTokenFactory=this._accessTokenFactory;try{if(this._options.skipNegotiation){if(this._options.transport!==cn.WebSockets)throw new Error("Negotiation can only be skipped when using the WebSocket transport directly.");this.transport=this._constructTransport(cn.WebSockets),await this._startTransport(t,e)}else{let n=null,r=0;do{if(n=await this._getNegotiationResponse(t),"Disconnecting"===this._connectionState||"Disconnected"===this._connectionState)throw new Ot("The connection was stopped during negotiation.");if(n.error)throw new Error(n.error);if(n.ProtocolVersion)throw new Error("Detected a connection attempt to an ASP.NET SignalR Server. This client only supports connecting to an ASP.NET Core SignalR Server. See https://aka.ms/signalr-core-differences for details.");if(n.url&&(t=n.url),n.accessToken){const e=n.accessToken;this._accessTokenFactory=()=>e,this._httpClient._accessToken=e,this._httpClient._accessTokenFactory=void 0}r++}while(n.url&&r<100);if(100===r&&n.url)throw new Error("Negotiate redirection limit exceeded.");await this._createTransport(t,this._options.transport,n,e)}this.transport instanceof dn&&(this.features.inherentKeepAlive=!0),"Connecting"===this._connectionState&&(this._logger.log(bt.Debug,"The HttpConnection connected successfully."),this._connectionState="Connected")}catch(e){return this._logger.log(bt.Error,"Failed to start the connection: "+e),this._connectionState="Disconnected",this.transport=void 0,this._stopPromiseResolver(),Promise.reject(e)}}async _getNegotiationResponse(e){const t={},[n,r]=At();t[n]=r;const o=this._resolveNegotiateUrl(e);this._logger.log(bt.Debug,`Sending negotiation request: ${o}.`);try{const e=await this._httpClient.post(o,{content:"",headers:{...t,...this._options.headers},timeout:this._options.timeout,withCredentials:this._options.withCredentials});if(200!==e.statusCode)return Promise.reject(new Error(`Unexpected status code returned from negotiate '${e.statusCode}'`));const n=JSON.parse(e.content);return(!n.negotiateVersion||n.negotiateVersion<1)&&(n.connectionToken=n.connectionId),n.useStatefulReconnect&&!0!==this._options._useStatefulReconnect?Promise.reject(new Wt("Client didn't negotiate Stateful Reconnect but the server did.")):n}catch(e){let t="Failed to complete negotiation with the server: "+e;return e instanceof Lt&&404===e.statusCode&&(t+=" Either this is not a SignalR endpoint or there is a proxy blocking the connection."),this._logger.log(bt.Error,t),Promise.reject(new Wt(t))}}_createConnectUrl(e,t){return t?e+(-1===e.indexOf("?")?"?":"&")+`id=${t}`:e}async _createTransport(e,t,n,r){let o=this._createConnectUrl(e,n.connectionToken);if(this._isITransport(t))return this._logger.log(bt.Debug,"Connection was provided an instance of ITransport, using that directly."),this.transport=t,await this._startTransport(o,r),void(this.connectionId=n.connectionId);const s=[],i=n.availableTransports||[];let a=n;for(const n of i){const i=this._resolveTransportOrError(n,t,r,!0===(null==a?void 0:a.useStatefulReconnect));if(i instanceof Error)s.push(`${n.transport} failed:`),s.push(i);else if(this._isITransport(i)){if(this.transport=i,!a){try{a=await this._getNegotiationResponse(e)}catch(e){return Promise.reject(e)}o=this._createConnectUrl(e,a.connectionToken)}try{return await this._startTransport(o,r),void(this.connectionId=a.connectionId)}catch(e){if(this._logger.log(bt.Error,`Failed to start the transport '${n.transport}': ${e}`),a=void 0,s.push(new jt(`${n.transport} failed: ${e}`,cn[n.transport])),"Connecting"!==this._connectionState){const e="Failed to select transport before stop() was called.";return this._logger.log(bt.Debug,e),Promise.reject(new Ot(e))}}}}return s.length>0?Promise.reject(new zt(`Unable to connect to the server with any of the available transports. ${s.join(" ")}`,s)):Promise.reject(new Error("None of the transports supported by the client are supported by the server."))}_constructTransport(e){switch(e){case cn.WebSockets:if(!this._options.WebSocket)throw new Error("'WebSocket' is not supported in your environment.");return new pn(this._httpClient,this._accessTokenFactory,this._logger,this._options.logMessageContent,this._options.WebSocket,this._options.headers||{});case cn.ServerSentEvents:if(!this._options.EventSource)throw new Error("'EventSource' is not supported in your environment.");return new un(this._httpClient,this._httpClient._accessToken,this._logger,this._options);case cn.LongPolling:return new dn(this._httpClient,this._logger,this._options);default:throw new Error(`Unknown transport: ${e}.`)}}_startTransport(e,t){return this.transport.onreceive=this.onreceive,this.features.reconnect?this.transport.onclose=async n=>{let r=!1;if(this.features.reconnect){try{this.features.disconnected(),await this.transport.connect(e,t),await this.features.resend()}catch{r=!0}r&&this._stopConnection(n)}else this._stopConnection(n)}:this.transport.onclose=e=>this._stopConnection(e),this.transport.connect(e,t)}_resolveTransportOrError(e,t,n,r){const o=cn[e.transport];if(null==o)return this._logger.log(bt.Debug,`Skipping transport '${e.transport}' because it is not supported by this client.`),new Error(`Skipping transport '${e.transport}' because it is not supported by this client.`);if(!function(e,t){return!e||0!=(t&e)}(t,o))return this._logger.log(bt.Debug,`Skipping transport '${cn[o]}' because it was disabled by the client.`),new Ht(`'${cn[o]}' is disabled by the client.`,o);if(!(e.transferFormats.map((e=>ln[e])).indexOf(n)>=0))return this._logger.log(bt.Debug,`Skipping transport '${cn[o]}' because it does not support the requested transfer format '${ln[n]}'.`),new Error(`'${cn[o]}' does not support ${ln[n]}.`);if(o===cn.WebSockets&&!this._options.WebSocket||o===cn.ServerSentEvents&&!this._options.EventSource)return this._logger.log(bt.Debug,`Skipping transport '${cn[o]}' because it is not supported in your environment.'`),new Ft(`'${cn[o]}' is not supported in your environment.`,o);this._logger.log(bt.Debug,`Selecting transport '${cn[o]}'.`);try{return this.features.reconnect=o===cn.WebSockets?r:void 0,this._constructTransport(o)}catch(e){return e}}_isITransport(e){return e&&"object"==typeof e&&"connect"in e}_stopConnection(e){if(this._logger.log(bt.Debug,`HttpConnection.stopConnection(${e}) called while in state ${this._connectionState}.`),this.transport=void 0,e=this._stopError||e,this._stopError=void 0,"Disconnected"!==this._connectionState){if("Connecting"===this._connectionState)throw this._logger.log(bt.Warning,`Call to HttpConnection.stopConnection(${e}) was ignored because the connection is still in the connecting state.`),new Error(`HttpConnection.stopConnection(${e}) was called while the connection is still in the connecting state.`);if("Disconnecting"===this._connectionState&&this._stopPromiseResolver(),e?this._logger.log(bt.Error,`Connection disconnected with error '${e}'.`):this._logger.log(bt.Information,"Connection disconnected."),this._sendQueue&&(this._sendQueue.stop().catch((e=>{this._logger.log(bt.Error,`TransportSendQueue.stop() threw error '${e}'.`)})),this._sendQueue=void 0),this.connectionId=void 0,this._connectionState="Disconnected",this._connectionStarted){this._connectionStarted=!1;try{this.onclose&&this.onclose(e)}catch(t){this._logger.log(bt.Error,`HttpConnection.onclose(${e}) threw error '${t}'.`)}}}else this._logger.log(bt.Debug,`Call to HttpConnection.stopConnection(${e}) was ignored because the connection is already in the disconnected state.`)}_resolveUrl(e){if(0===e.lastIndexOf("https://",0)||0===e.lastIndexOf("http://",0))return e;if(!It.isBrowser)throw new Error(`Cannot resolve '${e}'.`);const t=window.document.createElement("a");return t.href=e,this._logger.log(bt.Information,`Normalizing '${e}' to '${t.href}'.`),t.href}_resolveNegotiateUrl(e){const t=new URL(e);t.pathname.endsWith("/")?t.pathname+="negotiate":t.pathname+="/negotiate";const n=new URLSearchParams(t.searchParams);return n.has("negotiateVersion")||n.append("negotiateVersion",this._negotiateVersion.toString()),n.has("useStatefulReconnect")?"true"===n.get("useStatefulReconnect")&&(this._options._useStatefulReconnect=!0):!0===this._options._useStatefulReconnect&&n.append("useStatefulReconnect","true"),t.search=n.toString(),t.toString()}}class gn{constructor(e){this._transport=e,this._buffer=[],this._executing=!0,this._sendBufferedData=new mn,this._transportResult=new mn,this._sendLoopPromise=this._sendLoop()}send(e){return this._bufferData(e),this._transportResult||(this._transportResult=new mn),this._transportResult.promise}stop(){return this._executing=!1,this._sendBufferedData.resolve(),this._sendLoopPromise}_bufferData(e){if(this._buffer.length&&typeof this._buffer[0]!=typeof e)throw new Error(`Expected data to be of type ${typeof this._buffer} but was of type ${typeof e}`);this._buffer.push(e),this._sendBufferedData.resolve()}async _sendLoop(){for(;;){if(await this._sendBufferedData.promise,!this._executing){this._transportResult&&this._transportResult.reject("Connection stopped.");break}this._sendBufferedData=new mn;const e=this._transportResult;this._transportResult=void 0;const t="string"==typeof this._buffer[0]?this._buffer.join(""):gn._concatBuffers(this._buffer);this._buffer.length=0;try{await this._transport.send(t),e.resolve()}catch(t){e.reject(t)}}}static _concatBuffers(e){const t=e.map((e=>e.byteLength)).reduce(((e,t)=>e+t)),n=new Uint8Array(t);let r=0;for(const t of e)n.set(new Uint8Array(t),r),r+=t.byteLength;return n.buffer}}class mn{constructor(){this.promise=new Promise(((e,t)=>[this._resolver,this._rejecter]=[e,t]))}resolve(){this._resolver()}reject(e){this._rejecter(e)}}class vn{constructor(){this.name="json",this.version=2,this.transferFormat=ln.Text}parseMessages(e,t){if("string"!=typeof e)throw new Error("Invalid input for JSON hub protocol. Expected a string.");if(!e)return[];null===t&&(t=St.instance);const n=_t.parse(e),r=[];for(const e of n){const n=JSON.parse(e);if("number"!=typeof n.type)throw new Error("Invalid payload.");switch(n.type){case qt.Invocation:this._isInvocationMessage(n);break;case qt.StreamItem:this._isStreamItemMessage(n);break;case qt.Completion:this._isCompletionMessage(n);break;case qt.Ping:case qt.Close:break;case qt.Ack:this._isAckMessage(n);break;case qt.Sequence:this._isSequenceMessage(n);break;default:t.log(bt.Information,"Unknown message type '"+n.type+"' ignored.");continue}r.push(n)}return r}writeMessage(e){return _t.write(JSON.stringify(e))}_isInvocationMessage(e){this._assertNotEmptyString(e.target,"Invalid payload for Invocation message."),void 0!==e.invocationId&&this._assertNotEmptyString(e.invocationId,"Invalid payload for Invocation message.")}_isStreamItemMessage(e){if(this._assertNotEmptyString(e.invocationId,"Invalid payload for StreamItem message."),void 0===e.item)throw new Error("Invalid payload for StreamItem message.")}_isCompletionMessage(e){if(e.result&&e.error)throw new Error("Invalid payload for Completion message.");!e.result&&e.error&&this._assertNotEmptyString(e.error,"Invalid payload for Completion message."),this._assertNotEmptyString(e.invocationId,"Invalid payload for Completion message.")}_isAckMessage(e){if("number"!=typeof e.sequenceId)throw new Error("Invalid SequenceId for Ack message.")}_isSequenceMessage(e){if("number"!=typeof e.sequenceId)throw new Error("Invalid SequenceId for Sequence message.")}_assertNotEmptyString(e,t){if("string"!=typeof e||""===e)throw new Error(t)}}const yn={trace:bt.Trace,debug:bt.Debug,info:bt.Information,information:bt.Information,warn:bt.Warning,warning:bt.Warning,error:bt.Error,critical:bt.Critical,none:bt.None};class wn{configureLogging(e){if(Ct.isRequired(e,"logging"),function(e){return void 0!==e.log}(e))this.logger=e;else if("string"==typeof e){const t=function(e){const t=yn[e.toLowerCase()];if(void 0!==t)return t;throw new Error(`Unknown log level: ${e}`)}(e);this.logger=new xt(t)}else this.logger=new xt(e);return this}withUrl(e,t){return Ct.isRequired(e,"url"),Ct.isNotEmpty(e,"url"),this.url=e,this.httpConnectionOptions="object"==typeof t?{...this.httpConnectionOptions,...t}:{...this.httpConnectionOptions,transport:t},this}withHubProtocol(e){return Ct.isRequired(e,"protocol"),this.protocol=e,this}withAutomaticReconnect(e){if(this.reconnectPolicy)throw new Error("A reconnectPolicy has already been set.");return e?Array.isArray(e)?this.reconnectPolicy=new Qt(e):this.reconnectPolicy=e:this.reconnectPolicy=new Qt,this}withServerTimeout(e){return Ct.isRequired(e,"milliseconds"),this._serverTimeoutInMilliseconds=e,this}withKeepAliveInterval(e){return Ct.isRequired(e,"milliseconds"),this._keepAliveIntervalInMilliseconds=e,this}withStatefulReconnect(e){return void 0===this.httpConnectionOptions&&(this.httpConnectionOptions={}),this.httpConnectionOptions._useStatefulReconnect=!0,this._statefulReconnectBufferSize=null==e?void 0:e.bufferSize,this}build(){const e=this.httpConnectionOptions||{};if(void 0===e.logger&&(e.logger=this.logger),!this.url)throw new Error("The 'HubConnectionBuilder.withUrl' method must be called before building the connection.");const t=new fn(this.url,e);return Yt.create(t,this.logger||St.instance,this.protocol||new vn,this.reconnectPolicy,this._serverTimeoutInMilliseconds,this._keepAliveIntervalInMilliseconds,this._statefulReconnectBufferSize)}}var _n;!function(e){e[e.Default=0]="Default",e[e.Server=1]="Server",e[e.WebAssembly=2]="WebAssembly",e[e.WebView=3]="WebView"}(_n||(_n={}));var bn,Sn,En,Cn=4294967295;function In(e,t,n){var r=Math.floor(n/4294967296),o=n;e.setUint32(t,r),e.setUint32(t+4,o)}function kn(e,t){return 4294967296*e.getInt32(t)+e.getUint32(t+4)}var Tn=("undefined"==typeof process||"never"!==(null===(bn=null===process||void 0===process?void 0:process.env)||void 0===bn?void 0:bn.TEXT_ENCODING))&&"undefined"!=typeof TextEncoder&&"undefined"!=typeof TextDecoder;function Dn(e){for(var t=e.length,n=0,r=0;r=55296&&o<=56319&&r65535&&(h-=65536,s.push(h>>>10&1023|55296),h=56320|1023&h),s.push(h)}else s.push(a);s.length>=4096&&(i+=String.fromCharCode.apply(String,s),s.length=0)}return s.length>0&&(i+=String.fromCharCode.apply(String,s)),i}var Nn,Un=Tn?new TextDecoder:null,Mn=Tn?"undefined"!=typeof process&&"force"!==(null===(En=null===process||void 0===process?void 0:process.env)||void 0===En?void 0:En.TEXT_DECODER)?200:0:Cn,Bn=function(e,t){this.type=e,this.data=t},Ln=(Nn=function(e,t){return Nn=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},Nn(e,t)},function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function n(){this.constructor=e}Nn(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}),$n=function(e){function t(n){var r=e.call(this,n)||this,o=Object.create(t.prototype);return Object.setPrototypeOf(r,o),Object.defineProperty(r,"name",{configurable:!0,enumerable:!1,value:t.name}),r}return Ln(t,e),t}(Error),On={type:-1,encode:function(e){var t,n,r,o;return e instanceof Date?function(e){var t,n=e.sec,r=e.nsec;if(n>=0&&r>=0&&n<=17179869183){if(0===r&&n<=4294967295){var o=new Uint8Array(4);return(t=new DataView(o.buffer)).setUint32(0,n),o}var s=n/4294967296,i=4294967295&n;return o=new Uint8Array(8),(t=new DataView(o.buffer)).setUint32(0,r<<2|3&s),t.setUint32(4,i),o}return o=new Uint8Array(12),(t=new DataView(o.buffer)).setUint32(0,r),In(t,4,n),o}((r=1e6*((t=e.getTime())-1e3*(n=Math.floor(t/1e3))),{sec:n+(o=Math.floor(r/1e9)),nsec:r-1e9*o})):null},decode:function(e){var t=function(e){var t=new DataView(e.buffer,e.byteOffset,e.byteLength);switch(e.byteLength){case 4:return{sec:t.getUint32(0),nsec:0};case 8:var n=t.getUint32(0);return{sec:4294967296*(3&n)+t.getUint32(4),nsec:n>>>2};case 12:return{sec:kn(t,4),nsec:t.getUint32(0)};default:throw new $n("Unrecognized data size for timestamp (expected 4, 8, or 12): ".concat(e.length))}}(e);return new Date(1e3*t.sec+t.nsec/1e6)}},Fn=function(){function e(){this.builtInEncoders=[],this.builtInDecoders=[],this.encoders=[],this.decoders=[],this.register(On)}return e.prototype.register=function(e){var t=e.type,n=e.encode,r=e.decode;if(t>=0)this.encoders[t]=n,this.decoders[t]=r;else{var o=1+t;this.builtInEncoders[o]=n,this.builtInDecoders[o]=r}},e.prototype.tryToEncode=function(e,t){for(var n=0;nthis.maxDepth)throw new Error("Too deep objects in depth ".concat(t));null==e?this.encodeNil():"boolean"==typeof e?this.encodeBoolean(e):"number"==typeof e?this.encodeNumber(e):"string"==typeof e?this.encodeString(e):this.encodeObject(e,t)},e.prototype.ensureBufferSizeToWrite=function(e){var t=this.pos+e;this.view.byteLength=0?e<128?this.writeU8(e):e<256?(this.writeU8(204),this.writeU8(e)):e<65536?(this.writeU8(205),this.writeU16(e)):e<4294967296?(this.writeU8(206),this.writeU32(e)):(this.writeU8(207),this.writeU64(e)):e>=-32?this.writeU8(224|e+32):e>=-128?(this.writeU8(208),this.writeI8(e)):e>=-32768?(this.writeU8(209),this.writeI16(e)):e>=-2147483648?(this.writeU8(210),this.writeI32(e)):(this.writeU8(211),this.writeI64(e)):this.forceFloat32?(this.writeU8(202),this.writeF32(e)):(this.writeU8(203),this.writeF64(e))},e.prototype.writeStringHeader=function(e){if(e<32)this.writeU8(160+e);else if(e<256)this.writeU8(217),this.writeU8(e);else if(e<65536)this.writeU8(218),this.writeU16(e);else{if(!(e<4294967296))throw new Error("Too long string: ".concat(e," bytes in UTF-8"));this.writeU8(219),this.writeU32(e)}},e.prototype.encodeString=function(e){if(e.length>xn){var t=Dn(e);this.ensureBufferSizeToWrite(5+t),this.writeStringHeader(t),An(e,this.bytes,this.pos),this.pos+=t}else t=Dn(e),this.ensureBufferSizeToWrite(5+t),this.writeStringHeader(t),function(e,t,n){for(var r=e.length,o=n,s=0;s>6&31|192;else{if(i>=55296&&i<=56319&&s>12&15|224,t[o++]=i>>6&63|128):(t[o++]=i>>18&7|240,t[o++]=i>>12&63|128,t[o++]=i>>6&63|128)}t[o++]=63&i|128}else t[o++]=i}}(e,this.bytes,this.pos),this.pos+=t},e.prototype.encodeObject=function(e,t){var n=this.extensionCodec.tryToEncode(e,this.context);if(null!=n)this.encodeExtension(n);else if(Array.isArray(e))this.encodeArray(e,t);else if(ArrayBuffer.isView(e))this.encodeBinary(e);else{if("object"!=typeof e)throw new Error("Unrecognized object: ".concat(Object.prototype.toString.apply(e)));this.encodeMap(e,t)}},e.prototype.encodeBinary=function(e){var t=e.byteLength;if(t<256)this.writeU8(196),this.writeU8(t);else if(t<65536)this.writeU8(197),this.writeU16(t);else{if(!(t<4294967296))throw new Error("Too large binary: ".concat(t));this.writeU8(198),this.writeU32(t)}var n=Hn(e);this.writeU8a(n)},e.prototype.encodeArray=function(e,t){var n=e.length;if(n<16)this.writeU8(144+n);else if(n<65536)this.writeU8(220),this.writeU16(n);else{if(!(n<4294967296))throw new Error("Too large array: ".concat(n));this.writeU8(221),this.writeU32(n)}for(var r=0,o=e;r0&&e<=this.maxKeyLength},e.prototype.find=function(e,t,n){e:for(var r=0,o=this.caches[n-1];r=this.maxLengthPerKey?n[Math.random()*n.length|0]=r:n.push(r)},e.prototype.decode=function(e,t,n){var r=this.find(e,t,n);if(null!=r)return this.hit++,r;this.miss++;var o=Pn(e,t,n),s=Uint8Array.prototype.slice.call(e,t,t+n);return this.store(s,o),o},e}(),qn=function(e,t){var n,r,o,s,i={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return s={next:a(0),throw:a(1),return:a(2)},"function"==typeof Symbol&&(s[Symbol.iterator]=function(){return this}),s;function a(s){return function(a){return function(s){if(n)throw new TypeError("Generator is already executing.");for(;i;)try{if(n=1,r&&(o=2&s[0]?r.return:s[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,s[1])).done)return o;switch(r=0,o&&(s=[2&s[0],o.value]),s[0]){case 0:case 1:o=s;break;case 4:return i.label++,{value:s[1],done:!1};case 5:i.label++,r=s[1],s=[0];continue;case 7:s=i.ops.pop(),i.trys.pop();continue;default:if(!((o=(o=i.trys).length>0&&o[o.length-1])||6!==s[0]&&2!==s[0])){i=0;continue}if(3===s[0]&&(!o||s[1]>o[0]&&s[1]=e},e.prototype.createExtraByteError=function(e){var t=this.view,n=this.pos;return new RangeError("Extra ".concat(t.byteLength-n," of ").concat(t.byteLength," byte(s) found at buffer[").concat(e,"]"))},e.prototype.decode=function(e){this.reinitializeState(),this.setBuffer(e);var t=this.doDecodeSync();if(this.hasRemaining(1))throw this.createExtraByteError(this.pos);return t},e.prototype.decodeMulti=function(e){return qn(this,(function(t){switch(t.label){case 0:this.reinitializeState(),this.setBuffer(e),t.label=1;case 1:return this.hasRemaining(1)?[4,this.doDecodeSync()]:[3,3];case 2:return t.sent(),[3,1];case 3:return[2]}}))},e.prototype.decodeAsync=function(e){var t,n,r,o,s,i,a;return s=this,void 0,a=function(){var s,i,a,c,l,h,d,u;return qn(this,(function(p){switch(p.label){case 0:s=!1,p.label=1;case 1:p.trys.push([1,6,7,12]),t=Jn(e),p.label=2;case 2:return[4,t.next()];case 3:if((n=p.sent()).done)return[3,5];if(a=n.value,s)throw this.createExtraByteError(this.totalPos);this.appendBuffer(a);try{i=this.doDecodeSync(),s=!0}catch(e){if(!(e instanceof Yn))throw e}this.totalPos+=this.pos,p.label=4;case 4:return[3,2];case 5:return[3,12];case 6:return c=p.sent(),r={error:c},[3,12];case 7:return p.trys.push([7,,10,11]),n&&!n.done&&(o=t.return)?[4,o.call(t)]:[3,9];case 8:p.sent(),p.label=9;case 9:return[3,11];case 10:if(r)throw r.error;return[7];case 11:return[7];case 12:if(s){if(this.hasRemaining(1))throw this.createExtraByteError(this.totalPos);return[2,i]}throw h=(l=this).headByte,d=l.pos,u=l.totalPos,new RangeError("Insufficient data in parsing ".concat(Wn(h)," at ").concat(u," (").concat(d," in the current buffer)"))}}))},new((i=void 0)||(i=Promise))((function(e,t){function n(e){try{o(a.next(e))}catch(e){t(e)}}function r(e){try{o(a.throw(e))}catch(e){t(e)}}function o(t){var o;t.done?e(t.value):(o=t.value,o instanceof i?o:new i((function(e){e(o)}))).then(n,r)}o((a=a.apply(s,[])).next())}))},e.prototype.decodeArrayStream=function(e){return this.decodeMultiAsync(e,!0)},e.prototype.decodeStream=function(e){return this.decodeMultiAsync(e,!1)},e.prototype.decodeMultiAsync=function(e,t){return function(n,r,o){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var s,i=function(){var n,r,o,s,i,a,c,l,h;return qn(this,(function(d){switch(d.label){case 0:n=t,r=-1,d.label=1;case 1:d.trys.push([1,13,14,19]),o=Jn(e),d.label=2;case 2:return[4,Kn(o.next())];case 3:if((s=d.sent()).done)return[3,12];if(i=s.value,t&&0===r)throw this.createExtraByteError(this.totalPos);this.appendBuffer(i),n&&(r=this.readArraySize(),n=!1,this.complete()),d.label=4;case 4:d.trys.push([4,9,,10]),d.label=5;case 5:return[4,Kn(this.doDecodeSync())];case 6:return[4,d.sent()];case 7:return d.sent(),0==--r?[3,8]:[3,5];case 8:return[3,10];case 9:if(!((a=d.sent())instanceof Yn))throw a;return[3,10];case 10:this.totalPos+=this.pos,d.label=11;case 11:return[3,2];case 12:return[3,19];case 13:return c=d.sent(),l={error:c},[3,19];case 14:return d.trys.push([14,,17,18]),s&&!s.done&&(h=o.return)?[4,Kn(h.call(o))]:[3,16];case 15:d.sent(),d.label=16;case 16:return[3,18];case 17:if(l)throw l.error;return[7];case 18:return[7];case 19:return[2]}}))}.apply(n,r||[]),a=[];return s={},c("next"),c("throw"),c("return"),s[Symbol.asyncIterator]=function(){return this},s;function c(e){i[e]&&(s[e]=function(t){return new Promise((function(n,r){a.push([e,t,n,r])>1||l(e,t)}))})}function l(e,t){try{(n=i[e](t)).value instanceof Kn?Promise.resolve(n.value.v).then(h,d):u(a[0][2],n)}catch(e){u(a[0][3],e)}var n}function h(e){l("next",e)}function d(e){l("throw",e)}function u(e,t){e(t),a.shift(),a.length&&l(a[0][0],a[0][1])}}(this,arguments)},e.prototype.doDecodeSync=function(){e:for(;;){var e=this.readHeadByte(),t=void 0;if(e>=224)t=e-256;else if(e<192)if(e<128)t=e;else if(e<144){if(0!=(r=e-128)){this.pushMapState(r),this.complete();continue e}t={}}else if(e<160){if(0!=(r=e-144)){this.pushArrayState(r),this.complete();continue e}t=[]}else{var n=e-160;t=this.decodeUtf8String(n,0)}else if(192===e)t=null;else if(194===e)t=!1;else if(195===e)t=!0;else if(202===e)t=this.readF32();else if(203===e)t=this.readF64();else if(204===e)t=this.readU8();else if(205===e)t=this.readU16();else if(206===e)t=this.readU32();else if(207===e)t=this.readU64();else if(208===e)t=this.readI8();else if(209===e)t=this.readI16();else if(210===e)t=this.readI32();else if(211===e)t=this.readI64();else if(217===e)n=this.lookU8(),t=this.decodeUtf8String(n,1);else if(218===e)n=this.lookU16(),t=this.decodeUtf8String(n,2);else if(219===e)n=this.lookU32(),t=this.decodeUtf8String(n,4);else if(220===e){if(0!==(r=this.readU16())){this.pushArrayState(r),this.complete();continue e}t=[]}else if(221===e){if(0!==(r=this.readU32())){this.pushArrayState(r),this.complete();continue e}t=[]}else if(222===e){if(0!==(r=this.readU16())){this.pushMapState(r),this.complete();continue e}t={}}else if(223===e){if(0!==(r=this.readU32())){this.pushMapState(r),this.complete();continue e}t={}}else if(196===e){var r=this.lookU8();t=this.decodeBinary(r,1)}else if(197===e)r=this.lookU16(),t=this.decodeBinary(r,2);else if(198===e)r=this.lookU32(),t=this.decodeBinary(r,4);else if(212===e)t=this.decodeExtension(1,0);else if(213===e)t=this.decodeExtension(2,0);else if(214===e)t=this.decodeExtension(4,0);else if(215===e)t=this.decodeExtension(8,0);else if(216===e)t=this.decodeExtension(16,0);else if(199===e)r=this.lookU8(),t=this.decodeExtension(r,1);else if(200===e)r=this.lookU16(),t=this.decodeExtension(r,2);else{if(201!==e)throw new $n("Unrecognized type byte: ".concat(Wn(e)));r=this.lookU32(),t=this.decodeExtension(r,4)}this.complete();for(var o=this.stack;o.length>0;){var s=o[o.length-1];if(0===s.type){if(s.array[s.position]=t,s.position++,s.position!==s.size)continue e;o.pop(),t=s.array}else{if(1===s.type){if("string"!=(i=typeof t)&&"number"!==i)throw new $n("The type of key must be string or number but "+typeof t);if("__proto__"===t)throw new $n("The key __proto__ is not allowed");s.key=t,s.type=2;continue e}if(s.map[s.key]=t,s.readCount++,s.readCount!==s.size){s.key=null,s.type=1;continue e}o.pop(),t=s.map}}return t}var i},e.prototype.readHeadByte=function(){return-1===this.headByte&&(this.headByte=this.readU8()),this.headByte},e.prototype.complete=function(){this.headByte=-1},e.prototype.readArraySize=function(){var e=this.readHeadByte();switch(e){case 220:return this.readU16();case 221:return this.readU32();default:if(e<160)return e-144;throw new $n("Unrecognized array type byte: ".concat(Wn(e)))}},e.prototype.pushMapState=function(e){if(e>this.maxMapLength)throw new $n("Max length exceeded: map length (".concat(e,") > maxMapLengthLength (").concat(this.maxMapLength,")"));this.stack.push({type:1,size:e,key:null,readCount:0,map:{}})},e.prototype.pushArrayState=function(e){if(e>this.maxArrayLength)throw new $n("Max length exceeded: array length (".concat(e,") > maxArrayLength (").concat(this.maxArrayLength,")"));this.stack.push({type:0,size:e,array:new Array(e),position:0})},e.prototype.decodeUtf8String=function(e,t){var n;if(e>this.maxStrLength)throw new $n("Max length exceeded: UTF-8 byte length (".concat(e,") > maxStrLength (").concat(this.maxStrLength,")"));if(this.bytes.byteLengthMn?function(e,t,n){var r=e.subarray(t,t+n);return Un.decode(r)}(this.bytes,o,e):Pn(this.bytes,o,e),this.pos+=t+e,r},e.prototype.stateIsMapKey=function(){return this.stack.length>0&&1===this.stack[this.stack.length-1].type},e.prototype.decodeBinary=function(e,t){if(e>this.maxBinLength)throw new $n("Max length exceeded: bin length (".concat(e,") > maxBinLength (").concat(this.maxBinLength,")"));if(!this.hasRemaining(e+t))throw Gn;var n=this.pos+t,r=this.bytes.subarray(n,n+e);return this.pos+=t+e,r},e.prototype.decodeExtension=function(e,t){if(e>this.maxExtLength)throw new $n("Max length exceeded: ext length (".concat(e,") > maxExtLength (").concat(this.maxExtLength,")"));var n=this.view.getInt8(this.pos+t),r=this.decodeBinary(e,t+1);return this.extensionCodec.decode(r,n,this.context)},e.prototype.lookU8=function(){return this.view.getUint8(this.pos)},e.prototype.lookU16=function(){return this.view.getUint16(this.pos)},e.prototype.lookU32=function(){return this.view.getUint32(this.pos)},e.prototype.readU8=function(){var e=this.view.getUint8(this.pos);return this.pos++,e},e.prototype.readI8=function(){var e=this.view.getInt8(this.pos);return this.pos++,e},e.prototype.readU16=function(){var e=this.view.getUint16(this.pos);return this.pos+=2,e},e.prototype.readI16=function(){var e=this.view.getInt16(this.pos);return this.pos+=2,e},e.prototype.readU32=function(){var e=this.view.getUint32(this.pos);return this.pos+=4,e},e.prototype.readI32=function(){var e=this.view.getInt32(this.pos);return this.pos+=4,e},e.prototype.readU64=function(){var e,t,n=(e=this.view,t=this.pos,4294967296*e.getUint32(t)+e.getUint32(t+4));return this.pos+=8,n},e.prototype.readI64=function(){var e=kn(this.view,this.pos);return this.pos+=8,e},e.prototype.readF32=function(){var e=this.view.getFloat32(this.pos);return this.pos+=4,e},e.prototype.readF64=function(){var e=this.view.getFloat64(this.pos);return this.pos+=8,e},e}();class er{static write(e){let t=e.byteLength||e.length;const n=[];do{let e=127&t;t>>=7,t>0&&(e|=128),n.push(e)}while(t>0);t=e.byteLength||e.length;const r=new Uint8Array(n.length+t);return r.set(n,0),r.set(e,n.length),r.buffer}static parse(e){const t=[],n=new Uint8Array(e),r=[0,7,14,21,28];for(let o=0;o7)throw new Error("Messages bigger than 2GB are not supported.");if(!(n.byteLength>=o+i+a))throw new Error("Incomplete message.");t.push(n.slice?n.slice(o+i,o+i+a):n.subarray(o+i,o+i+a)),o=o+i+a}return t}}const tr=new Uint8Array([145,qt.Ping]);class nr{constructor(e){this.name="messagepack",this.version=2,this.transferFormat=ln.Binary,this._errorResult=1,this._voidResult=2,this._nonVoidResult=3,e=e||{},this._encoder=new jn(e.extensionCodec,e.context,e.maxDepth,e.initialBufferSize,e.sortKeys,e.forceFloat32,e.ignoreUndefined,e.forceIntegerToFloat),this._decoder=new Zn(e.extensionCodec,e.context,e.maxStrLength,e.maxBinLength,e.maxArrayLength,e.maxMapLength,e.maxExtLength)}parseMessages(e,t){if(!(n=e)||"undefined"==typeof ArrayBuffer||!(n instanceof ArrayBuffer||n.constructor&&"ArrayBuffer"===n.constructor.name))throw new Error("Invalid input for MessagePack hub protocol. Expected an ArrayBuffer.");var n;null===t&&(t=St.instance);const r=er.parse(e),o=[];for(const e of r){const n=this._parseMessage(e,t);n&&o.push(n)}return o}writeMessage(e){switch(e.type){case qt.Invocation:return this._writeInvocation(e);case qt.StreamInvocation:return this._writeStreamInvocation(e);case qt.StreamItem:return this._writeStreamItem(e);case qt.Completion:return this._writeCompletion(e);case qt.Ping:return er.write(tr);case qt.CancelInvocation:return this._writeCancelInvocation(e);case qt.Close:return this._writeClose();case qt.Ack:return this._writeAck(e);case qt.Sequence:return this._writeSequence(e);default:throw new Error("Invalid message type.")}}_parseMessage(e,t){if(0===e.length)throw new Error("Invalid payload.");const n=this._decoder.decode(e);if(0===n.length||!(n instanceof Array))throw new Error("Invalid payload.");const r=n[0];switch(r){case qt.Invocation:return this._createInvocationMessage(this._readHeaders(n),n);case qt.StreamItem:return this._createStreamItemMessage(this._readHeaders(n),n);case qt.Completion:return this._createCompletionMessage(this._readHeaders(n),n);case qt.Ping:return this._createPingMessage(n);case qt.Close:return this._createCloseMessage(n);case qt.Ack:return this._createAckMessage(n);case qt.Sequence:return this._createSequenceMessage(n);default:return t.log(bt.Information,"Unknown message type '"+r+"' ignored."),null}}_createCloseMessage(e){if(e.length<2)throw new Error("Invalid payload for Close message.");return{allowReconnect:e.length>=3?e[2]:void 0,error:e[1],type:qt.Close}}_createPingMessage(e){if(e.length<1)throw new Error("Invalid payload for Ping message.");return{type:qt.Ping}}_createInvocationMessage(e,t){if(t.length<5)throw new Error("Invalid payload for Invocation message.");const n=t[2];return n?{arguments:t[4],headers:e,invocationId:n,streamIds:[],target:t[3],type:qt.Invocation}:{arguments:t[4],headers:e,streamIds:[],target:t[3],type:qt.Invocation}}_createStreamItemMessage(e,t){if(t.length<4)throw new Error("Invalid payload for StreamItem message.");return{headers:e,invocationId:t[2],item:t[3],type:qt.StreamItem}}_createCompletionMessage(e,t){if(t.length<4)throw new Error("Invalid payload for Completion message.");const n=t[3];if(n!==this._voidResult&&t.length<5)throw new Error("Invalid payload for Completion message.");let r,o;switch(n){case this._errorResult:r=t[4];break;case this._nonVoidResult:o=t[4]}return{error:r,headers:e,invocationId:t[2],result:o,type:qt.Completion}}_createAckMessage(e){if(e.length<1)throw new Error("Invalid payload for Ack message.");return{sequenceId:e[1],type:qt.Ack}}_createSequenceMessage(e){if(e.length<1)throw new Error("Invalid payload for Sequence message.");return{sequenceId:e[1],type:qt.Sequence}}_writeInvocation(e){let t;return t=e.streamIds?this._encoder.encode([qt.Invocation,e.headers||{},e.invocationId||null,e.target,e.arguments,e.streamIds]):this._encoder.encode([qt.Invocation,e.headers||{},e.invocationId||null,e.target,e.arguments]),er.write(t.slice())}_writeStreamInvocation(e){let t;return t=e.streamIds?this._encoder.encode([qt.StreamInvocation,e.headers||{},e.invocationId,e.target,e.arguments,e.streamIds]):this._encoder.encode([qt.StreamInvocation,e.headers||{},e.invocationId,e.target,e.arguments]),er.write(t.slice())}_writeStreamItem(e){const t=this._encoder.encode([qt.StreamItem,e.headers||{},e.invocationId,e.item]);return er.write(t.slice())}_writeCompletion(e){const t=e.error?this._errorResult:void 0!==e.result?this._nonVoidResult:this._voidResult;let n;switch(t){case this._errorResult:n=this._encoder.encode([qt.Completion,e.headers||{},e.invocationId,t,e.error]);break;case this._voidResult:n=this._encoder.encode([qt.Completion,e.headers||{},e.invocationId,t]);break;case this._nonVoidResult:n=this._encoder.encode([qt.Completion,e.headers||{},e.invocationId,t,e.result])}return er.write(n.slice())}_writeCancelInvocation(e){const t=this._encoder.encode([qt.CancelInvocation,e.headers||{},e.invocationId]);return er.write(t.slice())}_writeClose(){const e=this._encoder.encode([qt.Close,null]);return er.write(e.slice())}_writeAck(e){const t=this._encoder.encode([qt.Ack,e.sequenceId]);return er.write(t.slice())}_writeSequence(e){const t=this._encoder.encode([qt.Sequence,e.sequenceId]);return er.write(t.slice())}_readHeaders(e){const t=e[1];if("object"!=typeof t)throw new Error("Invalid headers.");return t}}const rr="function"==typeof TextDecoder?new TextDecoder("utf-8"):null,or=rr?rr.decode.bind(rr):function(e){let t=0;const n=e.length,r=[],o=[];for(;t65535&&(o-=65536,r.push(o>>>10&1023|55296),o=56320|1023&o),r.push(o)}r.length>1024&&(o.push(String.fromCharCode.apply(null,r)),r.length=0)}return o.push(String.fromCharCode.apply(null,r)),o.join("")},sr=Math.pow(2,32),ir=Math.pow(2,21)-1;function ar(e,t){return e[t]|e[t+1]<<8|e[t+2]<<16|e[t+3]<<24}function cr(e,t){return e[t]+(e[t+1]<<8)+(e[t+2]<<16)+(e[t+3]<<24>>>0)}function lr(e,t){const n=cr(e,t+4);if(n>ir)throw new Error(`Cannot read uint64 with high order part ${n}, because the result would exceed Number.MAX_SAFE_INTEGER.`);return n*sr+cr(e,t)}class hr{constructor(e){this.batchData=e;const t=new fr(e);this.arrayRangeReader=new gr(e),this.arrayBuilderSegmentReader=new mr(e),this.diffReader=new dr(e),this.editReader=new ur(e,t),this.frameReader=new pr(e,t)}updatedComponents(){return ar(this.batchData,this.batchData.length-20)}referenceFrames(){return ar(this.batchData,this.batchData.length-16)}disposedComponentIds(){return ar(this.batchData,this.batchData.length-12)}disposedEventHandlerIds(){return ar(this.batchData,this.batchData.length-8)}updatedComponentsEntry(e,t){const n=e+4*t;return ar(this.batchData,n)}referenceFramesEntry(e,t){return e+20*t}disposedComponentIdsEntry(e,t){const n=e+4*t;return ar(this.batchData,n)}disposedEventHandlerIdsEntry(e,t){const n=e+8*t;return lr(this.batchData,n)}}class dr{constructor(e){this.batchDataUint8=e}componentId(e){return ar(this.batchDataUint8,e)}edits(e){return e+4}editsEntry(e,t){return e+16*t}}class ur{constructor(e,t){this.batchDataUint8=e,this.stringReader=t}editType(e){return ar(this.batchDataUint8,e)}siblingIndex(e){return ar(this.batchDataUint8,e+4)}newTreeIndex(e){return ar(this.batchDataUint8,e+8)}moveToSiblingIndex(e){return ar(this.batchDataUint8,e+8)}removedAttributeName(e){const t=ar(this.batchDataUint8,e+12);return this.stringReader.readString(t)}}class pr{constructor(e,t){this.batchDataUint8=e,this.stringReader=t}frameType(e){return ar(this.batchDataUint8,e)}subtreeLength(e){return ar(this.batchDataUint8,e+4)}elementReferenceCaptureId(e){const t=ar(this.batchDataUint8,e+4);return this.stringReader.readString(t)}componentId(e){return ar(this.batchDataUint8,e+8)}elementName(e){const t=ar(this.batchDataUint8,e+8);return this.stringReader.readString(t)}textContent(e){const t=ar(this.batchDataUint8,e+4);return this.stringReader.readString(t)}markupContent(e){const t=ar(this.batchDataUint8,e+4);return this.stringReader.readString(t)}attributeName(e){const t=ar(this.batchDataUint8,e+4);return this.stringReader.readString(t)}attributeValue(e){const t=ar(this.batchDataUint8,e+8);return this.stringReader.readString(t)}attributeEventHandlerId(e){return lr(this.batchDataUint8,e+12)}}class fr{constructor(e){this.batchDataUint8=e,this.stringTableStartIndex=ar(e,e.length-4)}readString(e){if(-1===e)return null;{const n=ar(this.batchDataUint8,this.stringTableStartIndex+4*e),r=function(e,t){let n=0,r=0;for(let o=0;o<4;o++){const s=e[t+o];if(n|=(127&s)<this.nextBatchId)return this.fatalError?(this.logger.log(st.Debug,`Received a new batch ${e} but errored out on a previous batch ${this.nextBatchId-1}`),void await n.send("OnRenderCompleted",this.nextBatchId-1,this.fatalError.toString())):void this.logger.log(st.Debug,`Waiting for batch ${this.nextBatchId}. Batch ${e} not processed.`);try{this.nextBatchId++,this.logger.log(st.Debug,`Applying batch ${e}.`),function(e,t){const n=ge[e];if(!n)throw new Error(`There is no browser renderer with ID ${e}.`);const r=t.arrayRangeReader,o=t.updatedComponents(),s=r.values(o),i=r.count(o),a=t.referenceFrames(),c=r.values(a),l=t.diffReader;for(let e=0;e{e.onclick=function(e){location.reload(),e.preventDefault()}})),document.querySelectorAll("#blazor-error-ui .dismiss").forEach((e=>{e.onclick=function(e){const t=document.querySelector("#blazor-error-ui");t&&(t.style.display="none"),e.preventDefault()}})))}class kr{constructor(t,n,r,o){this._firstUpdate=!0,this._renderingFailed=!1,this._disposed=!1,this._circuitId=void 0,this._applicationState=n,this._componentManager=t,this._options=r,this._logger=o,this._renderQueue=new vr(this._logger),this._dispatcher=e.attachDispatcher(this)}start(){if(this.isDisposedOrDisposing())throw new Error("Cannot start a disposed circuit.");return this._startPromise||(this._startPromise=this.startCore()),this._startPromise}updateRootComponents(e){var t,n;return this._firstUpdate?(this._firstUpdate=!1,null===(t=this._connection)||void 0===t?void 0:t.send("UpdateRootComponents",e,this._applicationState)):null===(n=this._connection)||void 0===n?void 0:n.send("UpdateRootComponents",e,"")}async startCore(){if(this._connection=await this.startConnection(),this._connection.state!==Jt.Connected)return!1;const e=JSON.stringify(this._componentManager.initialComponents.map((e=>{return t=e,{...t,start:void 0,end:void 0};var t})));if(this._circuitId=await this._connection.invoke("StartCircuit",Ue.getBaseURI(),Ue.getLocationHref(),e,this._applicationState||""),!this._circuitId)return!1;for(const e of this._options.circuitHandlers)e.onCircuitOpened&&e.onCircuitOpened();return!0}async startConnection(){var e,t;const n=new nr;n.name="blazorpack";const r=(new wn).withUrl("_blazor").withHubProtocol(n);this._options.configureSignalR(r);const o=r.build();o.on("JS.AttachComponent",((e,t)=>function(e,t,n,r){let o=ge[e];o||(o=new de(e),ge[e]=o),o.attachRootComponentToLogicalElement(n,t,!1)}(_n.Server,this.resolveElement(t),e))),o.on("JS.BeginInvokeJS",this._dispatcher.beginInvokeJSFromDotNet.bind(this._dispatcher)),o.on("JS.EndInvokeDotNet",this._dispatcher.endInvokeDotNetFromJS.bind(this._dispatcher)),o.on("JS.ReceiveByteArray",this._dispatcher.receiveByteArray.bind(this._dispatcher)),o.on("JS.BeginTransmitStream",(e=>{const t=new ReadableStream({start:t=>{o.stream("SendDotNetStreamToJS",e).subscribe({next:e=>t.enqueue(e),complete:()=>t.close(),error:e=>t.error(e)})}});this._dispatcher.supplyDotNetStream(e,t)})),o.on("JS.RenderBatch",(async(e,t)=>{var n,r;this._logger.log(bt.Debug,`Received render batch with id ${e} and ${t.byteLength} bytes.`),await this._renderQueue.processBatch(e,t,this._connection),null===(r=(n=this._componentManager).onAfterRenderBatch)||void 0===r||r.call(n,_n.Server)})),o.on("JS.EndUpdateRootComponents",(e=>{var t,n;null===(n=(t=this._componentManager).onAfterUpdateRootComponents)||void 0===n||n.call(t,e)})),o.on("JS.EndLocationChanging",ot._internal.navigationManager.endLocationChanging),o.onclose((e=>{this._interopMethodsForReconnection=function(e){const t=S.get(e);if(!t)throw new Error(`Interop methods are not registered for renderer ${e}`);return S.delete(e),t}(_n.Server),this._disposed||this._renderingFailed||this._options.reconnectionHandler.onConnectionDown(this._options.reconnectionOptions,e)})),o.on("JS.Error",(e=>{this._renderingFailed=!0,this.unhandledError(e),Ir()}));try{await o.start()}catch(e){if(this.unhandledError(e),"FailedToNegotiateWithServerError"===e.errorType)throw e;Ir(),e.innerErrors&&(e.innerErrors.some((e=>"UnsupportedTransportError"===e.errorType&&e.transport===cn.WebSockets))?this._logger.log(bt.Error,"Unable to connect, please ensure you are using an updated browser that supports WebSockets."):e.innerErrors.some((e=>"FailedToStartTransportError"===e.errorType&&e.transport===cn.WebSockets))?this._logger.log(bt.Error,"Unable to connect, please ensure WebSockets are available. A VPN or proxy may be blocking the connection."):e.innerErrors.some((e=>"DisabledTransportError"===e.errorType&&e.transport===cn.LongPolling))&&this._logger.log(bt.Error,"Unable to initiate a SignalR connection to the server. This might be because the server is not configured to support WebSockets. For additional details, visit https://aka.ms/blazor-server-websockets-error."))}return(null===(t=null===(e=o.connection)||void 0===e?void 0:e.features)||void 0===t?void 0:t.inherentKeepAlive)&&this._logger.log(bt.Warning,"Failed to connect via WebSockets, using the Long Polling fallback transport. This may be due to a VPN or proxy blocking the connection. To troubleshoot this, visit https://aka.ms/blazor-server-using-fallback-long-polling."),o}async disconnect(){var e;await(null===(e=this._connection)||void 0===e?void 0:e.stop())}async reconnect(){if(!this._circuitId)throw new Error("Circuit host not initialized.");return this._connection.state===Jt.Connected||(this._connection=await this.startConnection(),this._interopMethodsForReconnection&&(I(_n.Server,this._interopMethodsForReconnection),this._interopMethodsForReconnection=void 0),!!await this._connection.invoke("ConnectCircuit",this._circuitId)&&(this._options.reconnectionHandler.onConnectionUp(),!0))}beginInvokeDotNetFromJS(e,t,n,r,o){this.throwIfDispatchingWhenDisposed(),this._connection.send("BeginInvokeDotNetFromJS",e?e.toString():null,t,n,r||0,o)}endInvokeJSFromDotNet(e,t,n){this.throwIfDispatchingWhenDisposed(),this._connection.send("EndInvokeJSFromDotNet",e,t,n)}sendByteArray(e,t){this.throwIfDispatchingWhenDisposed(),this._connection.send("ReceiveByteArray",e,t)}throwIfDispatchingWhenDisposed(){if(this._disposed)throw new Error("The circuit associated with this dispatcher is no longer available.")}sendLocationChanged(e,t,n){return this._connection.send("OnLocationChanged",e,t,n)}sendLocationChanging(e,t,n,r){return this._connection.send("OnLocationChanging",e,t,n,r)}sendJsDataStream(e,t,n){return function(e,t,n,r){setTimeout((async()=>{let o=5,s=(new Date).valueOf();try{const i=t instanceof Blob?t.size:t.byteLength;let a=0,c=0;for(;a1)await e.send("ReceiveJSDataChunk",n,c,h,null);else{if(!await e.invoke("ReceiveJSDataChunk",n,c,h,null))break;const t=(new Date).valueOf(),r=t-s;s=t,o=Math.max(1,Math.round(500/Math.max(1,r)))}a+=l,c++}}catch(t){await e.send("ReceiveJSDataChunk",n,-1,null,t.toString())}}),0)}(this._connection,e,t,n)}resolveElement(e){const t=function(e){const t=f.get(e);if(t)return f.delete(e),t}(e);if(t)return O(t,!0);const n=Number.parseInt(e);if(!Number.isNaN(n))return function(e){const{start:t,end:n}=e,r=t[$];if(r){if(r!==e)throw new Error("The start component comment was already associated with another component descriptor.");return t}const o=t.parentNode;if(!o)throw new Error(`Comment not connected to the DOM ${t.textContent}`);const s=O(o,!0),i=K(s);t[L]=s,t[$]=e;const a=O(t);if(n){const e=K(a),r=Array.prototype.indexOf.call(i,a)+1;let o=null;for(;o!==n;){const n=i.splice(r,1)[0];if(!n)throw new Error("Could not find the end component comment in the parent logical node list");n[L]=t,e.push(n),o=n}}return a}(this._componentManager.resolveRootComponent(n));throw new Error(`Invalid sequence number or identifier '${e}'.`)}getRootComponentManager(){return this._componentManager}unhandledError(e){this._logger.log(bt.Error,e),this.disconnect()}getDisconnectFormData(){const e=new FormData,t=this._circuitId;return e.append("circuitId",t),e}didRenderingFail(){return this._renderingFailed}isDisposedOrDisposing(){return void 0!==this._disposePromise}sendDisconnectBeacon(){if(this._disposed)return;const e=this.getDisconnectFormData();this._disposed=navigator.sendBeacon("_blazor/disconnect",e)}dispose(){return this._disposePromise||(this._disposePromise=this.disposeCore()),this._disposePromise}async disposeCore(){var e;if(!this._startPromise)return void(this._disposed=!0);await this._startPromise,this._disposed=!0,null===(e=this._connection)||void 0===e||e.stop();const t=this.getDisconnectFormData();fetch("http://github.com/_blazor/disconnect",{method:"POST",body:t});for(const e of this._options.circuitHandlers)e.onCircuitClosed&&e.onCircuitClosed()}}class Tr{constructor(e,t,n,r){this.maxRetries=t,this.document=n,this.logger=r,this.modal=this.document.createElement("div"),this.modal.id=e,this.maxRetries=t,this.modal.style.cssText=["position: fixed","top: 0","right: 0","bottom: 0","left: 0","z-index: 1050","display: none","overflow: hidden","background-color: #fff","opacity: 0.8","text-align: center","font-weight: bold","transition: visibility 0s linear 500ms"].join(";"),this.message=this.document.createElement("h5"),this.message.style.cssText="margin-top: 20px",this.button=this.document.createElement("button"),this.button.style.cssText="margin:5px auto 5px",this.button.textContent="Retry";const o=this.document.createElement("a");o.addEventListener("click",(()=>location.reload())),o.textContent="reload",this.reloadParagraph=this.document.createElement("p"),this.reloadParagraph.textContent="Alternatively, ",this.reloadParagraph.appendChild(o),this.modal.appendChild(this.message),this.modal.appendChild(this.button),this.modal.appendChild(this.reloadParagraph),this.loader=this.getLoader(),this.message.after(this.loader),this.button.addEventListener("click",(async()=>{this.show();try{await ot.reconnect()||this.rejected()}catch(e){this.logger.log(st.Error,e),this.failed()}}))}show(){this.document.contains(this.modal)||this.document.body.appendChild(this.modal),this.modal.style.display="block",this.loader.style.display="inline-block",this.button.style.display="none",this.reloadParagraph.style.display="none",this.message.textContent="Attempting to reconnect to the server...",this.modal.style.visibility="hidden",setTimeout((()=>{this.modal.style.visibility="visible"}),0)}update(e){this.message.textContent=`Attempting to reconnect to the server: ${e} of ${this.maxRetries}`}hide(){this.modal.style.display="none"}failed(){this.button.style.display="block",this.reloadParagraph.style.display="none",this.loader.style.display="none";const e=this.document.createTextNode("Reconnection failed. Try "),t=this.document.createElement("a");t.textContent="reloading",t.setAttribute("href",""),t.addEventListener("click",(()=>location.reload()));const n=this.document.createTextNode(" the page if you're unable to reconnect.");this.message.replaceChildren(e,t,n)}rejected(){this.button.style.display="none",this.reloadParagraph.style.display="none",this.loader.style.display="none";const e=this.document.createTextNode("Could not reconnect to the server. "),t=this.document.createElement("a");t.textContent="Reload",t.setAttribute("href",""),t.addEventListener("click",(()=>location.reload()));const n=this.document.createTextNode(" the page to restore functionality.");this.message.replaceChildren(e,t,n)}getLoader(){const e=this.document.createElement("div");return e.style.cssText=["border: 0.3em solid #f3f3f3","border-top: 0.3em solid #3498db","border-radius: 50%","width: 2em","height: 2em","display: inline-block"].join(";"),e.animate([{transform:"rotate(0deg)"},{transform:"rotate(360deg)"}],{duration:2e3,iterations:1/0}),e}}class Dr{constructor(e,t,n){this.dialog=e,this.maxRetries=t,this.document=n,this.document=n;const r=this.document.getElementById(Dr.MaxRetriesId);r&&(r.innerText=this.maxRetries.toString())}show(){this.removeClasses(),this.dialog.classList.add(Dr.ShowClassName)}update(e){const t=this.document.getElementById(Dr.CurrentAttemptId);t&&(t.innerText=e.toString())}hide(){this.removeClasses(),this.dialog.classList.add(Dr.HideClassName)}failed(){this.removeClasses(),this.dialog.classList.add(Dr.FailedClassName)}rejected(){this.removeClasses(),this.dialog.classList.add(Dr.RejectedClassName)}removeClasses(){this.dialog.classList.remove(Dr.ShowClassName,Dr.HideClassName,Dr.FailedClassName,Dr.RejectedClassName)}}Dr.ShowClassName="components-reconnect-show",Dr.HideClassName="components-reconnect-hide",Dr.FailedClassName="components-reconnect-failed",Dr.RejectedClassName="components-reconnect-rejected",Dr.MaxRetriesId="components-reconnect-max-retries",Dr.CurrentAttemptId="components-reconnect-current-attempt";class Rr{constructor(e,t,n){this._currentReconnectionProcess=null,this._logger=e,this._reconnectionDisplay=t,this._reconnectCallback=n||ot.reconnect}onConnectionDown(e,t){if(!this._reconnectionDisplay){const t=document.getElementById(e.dialogId);this._reconnectionDisplay=t?new Dr(t,e.maxRetries,document):new Tr(e.dialogId,e.maxRetries,document,this._logger)}this._currentReconnectionProcess||(this._currentReconnectionProcess=new xr(e,this._logger,this._reconnectCallback,this._reconnectionDisplay))}onConnectionUp(){this._currentReconnectionProcess&&(this._currentReconnectionProcess.dispose(),this._currentReconnectionProcess=null)}}class xr{constructor(e,t,n,r){this.logger=t,this.reconnectCallback=n,this.isDisposed=!1,this.reconnectDisplay=r,this.reconnectDisplay.show(),this.attemptPeriodicReconnection(e)}dispose(){this.isDisposed=!0,this.reconnectDisplay.hide()}async attemptPeriodicReconnection(e){for(let t=0;txr.MaximumFirstRetryInterval?xr.MaximumFirstRetryInterval:e.retryIntervalMilliseconds;if(await this.delay(n),this.isDisposed)break;try{return await this.reconnectCallback()?void 0:void this.reconnectDisplay.rejected()}catch(e){this.logger.log(st.Error,e)}}this.reconnectDisplay.failed()}delay(e){return new Promise((t=>setTimeout(t,e)))}}xr.MaximumFirstRetryInterval=3e3;class Ar{constructor(e=!0,t,n,r=0){this.singleRuntime=e,this.logger=t,this.webRendererId=r,this.afterStartedCallbacks=[],n&&this.afterStartedCallbacks.push(...n)}async importInitializersAsync(e,t){await Promise.all(e.map((e=>async function(e,n){const r=function(e){const t=document.baseURI;return t.endsWith("/")?`${t}${e}`:`${t}/${e}`}(n),o=await import(r);if(void 0!==o){if(e.singleRuntime){const{beforeStart:n,afterStarted:r,beforeWebAssemblyStart:i,afterWebAssemblyStarted:a,beforeServerStart:c,afterServerStarted:l}=o;let h=n;e.webRendererId===_n.Server&&c&&(h=c),e.webRendererId===_n.WebAssembly&&i&&(h=i);let d=r;return e.webRendererId===_n.Server&&l&&(d=l),e.webRendererId===_n.WebAssembly&&a&&(d=a),s(e,h,d,t)}return function(e,t,n){var o;const i=n[0],{beforeStart:a,afterStarted:c,beforeWebStart:l,afterWebStarted:h,beforeWebAssemblyStart:d,afterWebAssemblyStarted:u,beforeServerStart:p,afterServerStarted:f}=t,g=!(l||h||d||u||p||f||!a&&!c),m=g&&i.enableClassicInitializers;if(g&&!i.enableClassicInitializers)null===(o=e.logger)||void 0===o||o.log(st.Warning,`Initializer '${r}' will be ignored because multiple runtimes are available. use 'before(web|webAssembly|server)Start' and 'after(web|webAssembly|server)Started?' instead.)`);else if(m)return s(e,a,c,n);if(function(e){e.webAssembly?e.webAssembly.initializers||(e.webAssembly.initializers={beforeStart:[],afterStarted:[]}):e.webAssembly={initializers:{beforeStart:[],afterStarted:[]}},e.circuit?e.circuit.initializers||(e.circuit.initializers={beforeStart:[],afterStarted:[]}):e.circuit={initializers:{beforeStart:[],afterStarted:[]}}}(i),d&&i.webAssembly.initializers.beforeStart.push(d),u&&i.webAssembly.initializers.afterStarted.push(u),p&&i.circuit.initializers.beforeStart.push(p),f&&i.circuit.initializers.afterStarted.push(f),h&&e.afterStartedCallbacks.push(h),l)return l(i)}(e,o,t)}function s(e,t,n,r){if(n&&e.afterStartedCallbacks.push(n),t)return t(...r)}}(this,e))))}async invokeAfterStartedCallbacks(e){const t=function(e){var t;return null===(t=C.get(e))||void 0===t?void 0:t[1]}(this.webRendererId);t&&await t,await Promise.all(this.afterStartedCallbacks.map((t=>t(e))))}}function Pr(e){if(void 0!==Er)throw new Error("Blazor Server has already started.");return Er=new Promise(Nr.bind(null,e)),Er}async function Nr(e,t,n){await yr;const r=await async function(e){if(e.initializers)return await Promise.all(e.initializers.beforeStart.map((t=>t(e)))),new Ar(!1,void 0,e.initializers.afterStarted,_n.Server);const t=await fetch("http://github.com/_blazor/initializers",{method:"GET",credentials:"include",cache:"no-cache"}),n=await t.json(),r=new Ar(!0,void 0,void 0,_n.Server);return await r.importInitializersAsync(n,[e]),r}(br);var o;if(o=document,wr=dt(o,ht)||"",Sr=new lt(br.logLevel),_r=new kr(e,wr,br,Sr),Sr.log(st.Information,"Starting up Blazor server-side application."),ot.reconnect=async()=>!(_r.didRenderingFail()||!await _r.reconnect()&&(Sr.log(st.Information,"Reconnection attempt to the circuit was rejected by the server. This may indicate that the associated state is no longer available on the server."),1)),ot.defaultReconnectionHandler=new Rr(Sr),br.reconnectionHandler=br.reconnectionHandler||ot.defaultReconnectionHandler,ot._internal.navigationManager.listenForNavigationEvents(_n.Server,((e,t,n)=>_r.sendLocationChanged(e,t,n)),((e,t,n,r)=>_r.sendLocationChanging(e,t,n,r))),ot._internal.forceCloseConnection=()=>_r.disconnect(),ot._internal.sendJSDataStream=(e,t,n)=>_r.sendJsDataStream(e,t,n),!await _r.start())return Sr.log(st.Error,"Failed to start the circuit."),void t();const s=()=>{_r.sendDisconnectBeacon()};ot.disconnect=s,window.addEventListener("unload",s,{capture:!1,once:!0}),Sr.log(st.Information,"Blazor server-side application started."),r.invokeAfterStartedCallbacks(ot),t()}class Ur{constructor(e){this.initialComponents=e}resolveRootComponent(e){return this.initialComponents[e]}}class Mr{constructor(){this._eventListeners=new Map}static create(e){const t=new Mr;return e.addEventListener=t.addEventListener.bind(t),e.removeEventListener=t.removeEventListener.bind(t),t}addEventListener(e,t){let n=this._eventListeners.get(e);n||(n=new Set,this._eventListeners.set(e,n)),n.add(t)}removeEventListener(e,t){var n;null===(n=this._eventListeners.get(e))||void 0===n||n.delete(t)}dispatchEvent(e,t){const n=this._eventListeners.get(e);if(!n)return;const r={...t,type:e};for(const e of n)e(r)}}let Br=!1;function Lr(e){if(Br)throw new Error("Blazor has already started.");Br=!0;const t=it(e);!function(e){if(br)throw new Error("Circuit options have already been configured.");if(br)throw new Error("WebAssembly options have already been configured.");yr=async function(e){const t=await e;br=it(t)}(e)}(Promise.resolve(t||{})),Mr.create(ot);const n=function(e){return ut(e,"server").sort(((e,t)=>e.sequence-t.sequence))}(document);return Pr(new Ur(n))}ot.start=Lr,window.DotNet=e,document&&document.currentScript&&"false"!==document.currentScript.getAttribute("autostart")&&Lr()})()})(); \ No newline at end of file +(()=>{var e={778:()=>{},77:()=>{},203:()=>{},200:()=>{},628:()=>{},321:()=>{}},t={};function n(r){var o=t[r];if(void 0!==o)return o.exports;var s=t[r]={exports:{}};return e[r](s,s.exports,n),s.exports}n.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),(()=>{"use strict";var e,t,r;!function(e){const t=[],n="__jsObjectId",r="__dotNetObject",o="__byte[]",s="__dotNetStream",i="__jsStreamReferenceLength";let a,c;class l{constructor(e){this._jsObject=e,this._cachedFunctions=new Map}findFunction(e){const t=this._cachedFunctions.get(e);if(t)return t;let n,r=this._jsObject;if(e.split(".").forEach((t=>{if(!(t in r))throw new Error(`Could not find '${e}' ('${t}' was undefined).`);n=r,r=r[t]})),r instanceof Function)return r=r.bind(n),this._cachedFunctions.set(e,r),r;throw new Error(`The value '${e}' is not a function.`)}getWrappedObject(){return this._jsObject}}const h={0:new l(window)};h[0]._cachedFunctions.set("import",(e=>("string"==typeof e&&e.startsWith("./")&&(e=new URL(e.substr(2),document.baseURI).toString()),import(e))));let d,u=1;function p(e){t.push(e)}function f(e){if(e&&"object"==typeof e){h[u]=new l(e);const t={[n]:u};return u++,t}throw new Error(`Cannot create a JSObjectReference from the value '${e}'.`)}function g(e){let t=-1;if(e instanceof ArrayBuffer&&(e=new Uint8Array(e)),e instanceof Blob)t=e.size;else{if(!(e.buffer instanceof ArrayBuffer))throw new Error("Supplied value is not a typed array or blob.");if(void 0===e.byteLength)throw new Error(`Cannot create a JSStreamReference from the value '${e}' as it doesn't have a byteLength.`);t=e.byteLength}const r={[i]:t};try{const t=f(e);r[n]=t[n]}catch(t){throw new Error(`Cannot create a JSStreamReference from the value '${e}'.`)}return r}function m(e,n){c=e;const r=n?JSON.parse(n,((e,n)=>t.reduce(((t,n)=>n(e,t)),n))):null;return c=void 0,r}function v(){if(void 0===a)throw new Error("No call dispatcher has been set.");if(null===a)throw new Error("There are multiple .NET runtimes present, so a default dispatcher could not be resolved. Use DotNetObject to invoke .NET instance methods.");return a}e.attachDispatcher=function(e){const t=new y(e);return void 0===a?a=t:a&&(a=null),t},e.attachReviver=p,e.invokeMethod=function(e,t,...n){return v().invokeDotNetStaticMethod(e,t,...n)},e.invokeMethodAsync=function(e,t,...n){return v().invokeDotNetStaticMethodAsync(e,t,...n)},e.createJSObjectReference=f,e.createJSStreamReference=g,e.disposeJSObjectReference=function(e){const t=e&&e[n];"number"==typeof t&&b(t)},function(e){e[e.Default=0]="Default",e[e.JSObjectReference=1]="JSObjectReference",e[e.JSStreamReference=2]="JSStreamReference",e[e.JSVoidResult=3]="JSVoidResult"}(d=e.JSCallResultType||(e.JSCallResultType={}));class y{constructor(e){this._dotNetCallDispatcher=e,this._byteArraysToBeRevived=new Map,this._pendingDotNetToJSStreams=new Map,this._pendingAsyncCalls={},this._nextAsyncCallId=1}getDotNetCallDispatcher(){return this._dotNetCallDispatcher}invokeJSFromDotNet(e,t,n,r){const o=m(this,t),s=I(_(e,r)(...o||[]),n);return null==s?null:T(this,s)}beginInvokeJSFromDotNet(e,t,n,r,o){const s=new Promise((e=>{const r=m(this,n);e(_(t,o)(...r||[]))}));e&&s.then((t=>T(this,[e,!0,I(t,r)]))).then((t=>this._dotNetCallDispatcher.endInvokeJSFromDotNet(e,!0,t)),(t=>this._dotNetCallDispatcher.endInvokeJSFromDotNet(e,!1,JSON.stringify([e,!1,w(t)]))))}endInvokeDotNetFromJS(e,t,n){const r=t?m(this,n):new Error(n);this.completePendingCall(parseInt(e,10),t,r)}invokeDotNetStaticMethod(e,t,...n){return this.invokeDotNetMethod(e,t,null,n)}invokeDotNetStaticMethodAsync(e,t,...n){return this.invokeDotNetMethodAsync(e,t,null,n)}invokeDotNetMethod(e,t,n,r){if(this._dotNetCallDispatcher.invokeDotNetFromJS){const o=T(this,r),s=this._dotNetCallDispatcher.invokeDotNetFromJS(e,t,n,o);return s?m(this,s):null}throw new Error("The current dispatcher does not support synchronous calls from JS to .NET. Use invokeDotNetMethodAsync instead.")}invokeDotNetMethodAsync(e,t,n,r){if(e&&n)throw new Error(`For instance method calls, assemblyName should be null. Received '${e}'.`);const o=this._nextAsyncCallId++,s=new Promise(((e,t)=>{this._pendingAsyncCalls[o]={resolve:e,reject:t}}));try{const s=T(this,r);this._dotNetCallDispatcher.beginInvokeDotNetFromJS(o,e,t,n,s)}catch(e){this.completePendingCall(o,!1,e)}return s}receiveByteArray(e,t){this._byteArraysToBeRevived.set(e,t)}processByteArray(e){const t=this._byteArraysToBeRevived.get(e);return t?(this._byteArraysToBeRevived.delete(e),t):null}supplyDotNetStream(e,t){if(this._pendingDotNetToJSStreams.has(e)){const n=this._pendingDotNetToJSStreams.get(e);this._pendingDotNetToJSStreams.delete(e),n.resolve(t)}else{const n=new C;n.resolve(t),this._pendingDotNetToJSStreams.set(e,n)}}getDotNetStreamPromise(e){let t;if(this._pendingDotNetToJSStreams.has(e))t=this._pendingDotNetToJSStreams.get(e).streamPromise,this._pendingDotNetToJSStreams.delete(e);else{const n=new C;this._pendingDotNetToJSStreams.set(e,n),t=n.streamPromise}return t}completePendingCall(e,t,n){if(!this._pendingAsyncCalls.hasOwnProperty(e))throw new Error(`There is no pending async call with ID ${e}.`);const r=this._pendingAsyncCalls[e];delete this._pendingAsyncCalls[e],t?r.resolve(n):r.reject(n)}}function w(e){return e instanceof Error?`${e.message}\n${e.stack}`:e?e.toString():"null"}function _(e,t){const n=h[t];if(n)return n.findFunction(e);throw new Error(`JS object instance with ID ${t} does not exist (has it been disposed?).`)}function b(e){delete h[e]}e.findJSFunction=_,e.disposeJSObjectReferenceById=b;class S{constructor(e,t){this._id=e,this._callDispatcher=t}invokeMethod(e,...t){return this._callDispatcher.invokeDotNetMethod(null,e,this._id,t)}invokeMethodAsync(e,...t){return this._callDispatcher.invokeDotNetMethodAsync(null,e,this._id,t)}dispose(){this._callDispatcher.invokeDotNetMethodAsync(null,"__Dispose",this._id,null).catch((e=>console.error(e)))}serializeAsArg(){return{[r]:this._id}}}e.DotNetObject=S,p((function(e,t){if(t&&"object"==typeof t){if(t.hasOwnProperty(r))return new S(t[r],c);if(t.hasOwnProperty(n)){const e=t[n],r=h[e];if(r)return r.getWrappedObject();throw new Error(`JS object instance with Id '${e}' does not exist. It may have been disposed.`)}if(t.hasOwnProperty(o)){const e=t[o],n=c.processByteArray(e);if(void 0===n)throw new Error(`Byte array index '${e}' does not exist.`);return n}if(t.hasOwnProperty(s)){const e=t[s],n=c.getDotNetStreamPromise(e);return new E(n)}}return t}));class E{constructor(e){this._streamPromise=e}stream(){return this._streamPromise}async arrayBuffer(){return new Response(await this.stream()).arrayBuffer()}}class C{constructor(){this.streamPromise=new Promise(((e,t)=>{this.resolve=e,this.reject=t}))}}function I(e,t){switch(t){case d.Default:return e;case d.JSObjectReference:return f(e);case d.JSStreamReference:return g(e);case d.JSVoidResult:return null;default:throw new Error(`Invalid JS call result type '${t}'.`)}}let k=0;function T(e,t){k=0,c=e;const n=JSON.stringify(t,D);return c=void 0,n}function D(e,t){if(t instanceof S)return t.serializeAsArg();if(t instanceof Uint8Array){c.getDotNetCallDispatcher().sendByteArray(k,t);const e={[o]:k};return k++,e}return t}}(e||(e={})),function(e){e[e.prependFrame=1]="prependFrame",e[e.removeFrame=2]="removeFrame",e[e.setAttribute=3]="setAttribute",e[e.removeAttribute=4]="removeAttribute",e[e.updateText=5]="updateText",e[e.stepIn=6]="stepIn",e[e.stepOut=7]="stepOut",e[e.updateMarkup=8]="updateMarkup",e[e.permutationListEntry=9]="permutationListEntry",e[e.permutationListEnd=10]="permutationListEnd"}(t||(t={})),function(e){e[e.element=1]="element",e[e.text=2]="text",e[e.attribute=3]="attribute",e[e.component=4]="component",e[e.region=5]="region",e[e.elementReferenceCapture=6]="elementReferenceCapture",e[e.markup=8]="markup",e[e.namedEvent=10]="namedEvent"}(r||(r={}));class o{constructor(e,t){this.componentId=e,this.fieldValue=t}static fromEvent(e,t){const n=t.target;if(n instanceof Element){const t=function(e){return e instanceof HTMLInputElement?e.type&&"checkbox"===e.type.toLowerCase()?{value:e.checked}:{value:e.value}:e instanceof HTMLSelectElement||e instanceof HTMLTextAreaElement?{value:e.value}:null}(n);if(t)return new o(e,t.value)}return null}}const s=new Map,i=new Map,a=[];function c(e){return s.get(e)}function l(e){const t=s.get(e);return(null==t?void 0:t.browserEventName)||e}function h(e,t){e.forEach((e=>s.set(e,t)))}function d(e){const t=[];for(let n=0;ne.selected)).map((e=>e.value))}}{const e=function(e){return!!e&&"INPUT"===e.tagName&&"checkbox"===e.getAttribute("type")}(t);return{value:e?!!t.checked:t.value}}}}),h(["copy","cut","paste"],{createEventArgs:e=>({type:e.type})}),h(["drag","dragend","dragenter","dragleave","dragover","dragstart","drop"],{createEventArgs:e=>{return{...u(t=e),dataTransfer:t.dataTransfer?{dropEffect:t.dataTransfer.dropEffect,effectAllowed:t.dataTransfer.effectAllowed,files:Array.from(t.dataTransfer.files).map((e=>e.name)),items:Array.from(t.dataTransfer.items).map((e=>({kind:e.kind,type:e.type}))),types:t.dataTransfer.types}:null};var t}}),h(["focus","blur","focusin","focusout"],{createEventArgs:e=>({type:e.type})}),h(["keydown","keyup","keypress"],{createEventArgs:e=>{return{key:(t=e).key,code:t.code,location:t.location,repeat:t.repeat,ctrlKey:t.ctrlKey,shiftKey:t.shiftKey,altKey:t.altKey,metaKey:t.metaKey,type:t.type};var t}}),h(["contextmenu","click","mouseover","mouseout","mousemove","mousedown","mouseup","mouseleave","mouseenter","dblclick"],{createEventArgs:e=>u(e)}),h(["error"],{createEventArgs:e=>{return{message:(t=e).message,filename:t.filename,lineno:t.lineno,colno:t.colno,type:t.type};var t}}),h(["loadstart","timeout","abort","load","loadend","progress"],{createEventArgs:e=>{return{lengthComputable:(t=e).lengthComputable,loaded:t.loaded,total:t.total,type:t.type};var t}}),h(["touchcancel","touchend","touchmove","touchenter","touchleave","touchstart"],{createEventArgs:e=>{return{detail:(t=e).detail,touches:d(t.touches),targetTouches:d(t.targetTouches),changedTouches:d(t.changedTouches),ctrlKey:t.ctrlKey,shiftKey:t.shiftKey,altKey:t.altKey,metaKey:t.metaKey,type:t.type};var t}}),h(["gotpointercapture","lostpointercapture","pointercancel","pointerdown","pointerenter","pointerleave","pointermove","pointerout","pointerover","pointerup"],{createEventArgs:e=>{return{...u(t=e),pointerId:t.pointerId,width:t.width,height:t.height,pressure:t.pressure,tiltX:t.tiltX,tiltY:t.tiltY,pointerType:t.pointerType,isPrimary:t.isPrimary};var t}}),h(["wheel","mousewheel"],{createEventArgs:e=>{return{...u(t=e),deltaX:t.deltaX,deltaY:t.deltaY,deltaZ:t.deltaZ,deltaMode:t.deltaMode};var t}}),h(["cancel","close","toggle"],{createEventArgs:()=>({})});const p=["date","datetime-local","month","time","week"],f=new Map;let g,m,v=0;const y={async add(e,t,n){if(!n)throw new Error("initialParameters must be an object, even if empty.");const r="__bl-dynamic-root:"+(++v).toString();f.set(r,e);const o=await b().invokeMethodAsync("AddRootComponent",t,r),s=new _(o,m[t]);return await s.setParameters(n),s}};class w{invoke(e){return this._callback(e)}setCallback(t){this._selfJSObjectReference||(this._selfJSObjectReference=e.createJSObjectReference(this)),this._callback=t}getJSObjectReference(){return this._selfJSObjectReference}dispose(){this._selfJSObjectReference&&e.disposeJSObjectReference(this._selfJSObjectReference)}}class _{constructor(e,t){this._jsEventCallbackWrappers=new Map,this._componentId=e;for(const e of t)"eventcallback"===e.type&&this._jsEventCallbackWrappers.set(e.name.toLowerCase(),new w)}setParameters(e){const t={},n=Object.entries(e||{}),r=n.length;for(const[e,r]of n){const n=this._jsEventCallbackWrappers.get(e.toLowerCase());n&&r?(n.setCallback(r),t[e]=n.getJSObjectReference()):t[e]=r}return b().invokeMethodAsync("SetRootComponentParameters",this._componentId,r,t)}async dispose(){if(null!==this._componentId){await b().invokeMethodAsync("RemoveRootComponent",this._componentId),this._componentId=null;for(const e of this._jsEventCallbackWrappers.values())e.dispose()}}}function b(){if(!g)throw new Error("Dynamic root components have not been enabled in this application.");return g}const S=new Map,E=[],C=new Map;function I(t,n,r,o){var s,i;if(S.has(t))throw new Error(`Interop methods are already registered for renderer ${t}`);S.set(t,n),r&&o&&Object.keys(r).length>0&&function(t,n,r){if(g)throw new Error("Dynamic root components have already been enabled.");g=t,m=n;for(const[t,o]of Object.entries(r)){const r=e.findJSFunction(t,0);for(const e of o)r(e,n[e])}}(T(t),r,o),null===(i=null===(s=C.get(t))||void 0===s?void 0:s[0])||void 0===i||i.call(s),function(e){for(const t of E)t(e)}(t)}function k(e,t,n){return D(e,t.eventHandlerId,(()=>T(e).invokeMethodAsync("DispatchEventAsync",t,n)))}function T(e){const t=S.get(e);if(!t)throw new Error(`No interop methods are registered for renderer ${e}`);return t}let D=(e,t,n)=>n();const R=M(["abort","blur","cancel","canplay","canplaythrough","change","close","cuechange","durationchange","emptied","ended","error","focus","load","loadeddata","loadedmetadata","loadend","loadstart","mouseenter","mouseleave","pointerenter","pointerleave","pause","play","playing","progress","ratechange","reset","scroll","seeked","seeking","stalled","submit","suspend","timeupdate","toggle","unload","volumechange","waiting","DOMNodeInsertedIntoDocument","DOMNodeRemovedFromDocument"]),x={submit:!0},A=M(["click","dblclick","mousedown","mousemove","mouseup"]);class P{constructor(e){this.browserRendererId=e,this.afterClickCallbacks=[];const t=++P.nextEventDelegatorId;this.eventsCollectionKey=`_blazorEvents_${t}`,this.eventInfoStore=new N(this.onGlobalEvent.bind(this))}setListener(e,t,n,r){const o=this.getEventHandlerInfosForElement(e,!0),s=o.getHandler(t);if(s)this.eventInfoStore.update(s.eventHandlerId,n);else{const s={element:e,eventName:t,eventHandlerId:n,renderingComponentId:r};this.eventInfoStore.add(s),o.setHandler(t,s)}}getHandler(e){return this.eventInfoStore.get(e)}removeListener(e){const t=this.eventInfoStore.remove(e);if(t){const e=t.element,n=this.getEventHandlerInfosForElement(e,!1);n&&n.removeHandler(t.eventName)}}notifyAfterClick(e){this.afterClickCallbacks.push(e),this.eventInfoStore.addGlobalListener("click")}setStopPropagation(e,t,n){this.getEventHandlerInfosForElement(e,!0).stopPropagation(t,n)}setPreventDefault(e,t,n){this.getEventHandlerInfosForElement(e,!0).preventDefault(t,n)}onGlobalEvent(e){if(!(e.target instanceof Element))return;this.dispatchGlobalEventToAllElements(e.type,e);const t=(n=e.type,i.get(n));var n;t&&t.forEach((t=>this.dispatchGlobalEventToAllElements(t,e))),"click"===e.type&&this.afterClickCallbacks.forEach((t=>t(e)))}dispatchGlobalEventToAllElements(e,t){const n=t.composedPath();let r=n.shift(),s=null,i=!1;const a=Object.prototype.hasOwnProperty.call(R,e);let l=!1;for(;r;){const u=r,p=this.getEventHandlerInfosForElement(u,!1);if(p){const n=p.getHandler(e);if(n&&(h=u,d=t.type,!((h instanceof HTMLButtonElement||h instanceof HTMLInputElement||h instanceof HTMLTextAreaElement||h instanceof HTMLSelectElement)&&Object.prototype.hasOwnProperty.call(A,d)&&h.disabled))){if(!i){const n=c(e);s=(null==n?void 0:n.createEventArgs)?n.createEventArgs(t):{},i=!0}Object.prototype.hasOwnProperty.call(x,t.type)&&t.preventDefault(),k(this.browserRendererId,{eventHandlerId:n.eventHandlerId,eventName:e,eventFieldInfo:o.fromEvent(n.renderingComponentId,t)},s)}p.stopPropagation(e)&&(l=!0),p.preventDefault(e)&&t.preventDefault()}r=a||l?void 0:n.shift()}var h,d}getEventHandlerInfosForElement(e,t){return Object.prototype.hasOwnProperty.call(e,this.eventsCollectionKey)?e[this.eventsCollectionKey]:t?e[this.eventsCollectionKey]=new U:null}}P.nextEventDelegatorId=0;class N{constructor(e){this.globalListener=e,this.infosByEventHandlerId={},this.countByEventName={},a.push(this.handleEventNameAliasAdded.bind(this))}add(e){if(this.infosByEventHandlerId[e.eventHandlerId])throw new Error(`Event ${e.eventHandlerId} is already tracked`);this.infosByEventHandlerId[e.eventHandlerId]=e,this.addGlobalListener(e.eventName)}get(e){return this.infosByEventHandlerId[e]}addGlobalListener(e){if(e=l(e),Object.prototype.hasOwnProperty.call(this.countByEventName,e))this.countByEventName[e]++;else{this.countByEventName[e]=1;const t=Object.prototype.hasOwnProperty.call(R,e);document.addEventListener(e,this.globalListener,t)}}update(e,t){if(Object.prototype.hasOwnProperty.call(this.infosByEventHandlerId,t))throw new Error(`Event ${t} is already tracked`);const n=this.infosByEventHandlerId[e];delete this.infosByEventHandlerId[e],n.eventHandlerId=t,this.infosByEventHandlerId[t]=n}remove(e){const t=this.infosByEventHandlerId[e];if(t){delete this.infosByEventHandlerId[e];const n=l(t.eventName);0==--this.countByEventName[n]&&(delete this.countByEventName[n],document.removeEventListener(n,this.globalListener))}return t}handleEventNameAliasAdded(e,t){if(Object.prototype.hasOwnProperty.call(this.countByEventName,e)){const n=this.countByEventName[e];delete this.countByEventName[e],document.removeEventListener(e,this.globalListener),this.addGlobalListener(t),this.countByEventName[t]+=n-1}}}class U{constructor(){this.handlers={},this.preventDefaultFlags=null,this.stopPropagationFlags=null}getHandler(e){return Object.prototype.hasOwnProperty.call(this.handlers,e)?this.handlers[e]:null}setHandler(e,t){this.handlers[e]=t}removeHandler(e){delete this.handlers[e]}preventDefault(e,t){return void 0!==t&&(this.preventDefaultFlags=this.preventDefaultFlags||{},this.preventDefaultFlags[e]=t),!!this.preventDefaultFlags&&this.preventDefaultFlags[e]}stopPropagation(e,t){return void 0!==t&&(this.stopPropagationFlags=this.stopPropagationFlags||{},this.stopPropagationFlags[e]=t),!!this.stopPropagationFlags&&this.stopPropagationFlags[e]}}function M(e){const t={};return e.forEach((e=>{t[e]=!0})),t}const B=Symbol(),L=Symbol(),$=Symbol();function O(e,t){if(B in e)return e;const n=[];if(e.childNodes.length>0){if(!t)throw new Error("New logical elements must start empty, or allowExistingContents must be true");e.childNodes.forEach((t=>{const r=O(t,!0);r[L]=e,n.push(r)}))}return e[B]=n,e}function F(e){const t=K(e);for(;t.length;)W(e,0)}function H(e,t){const n=document.createComment("!");return j(n,e,t),n}function j(e,t,n){const r=e;let o=e;if(e instanceof Comment){const t=K(r);if((null==t?void 0:t.length)>0){const t=Q(r),n=new Range;n.setStartBefore(e),n.setEndAfter(t),o=n.extractContents()}}const s=z(r);if(s){const e=K(s),t=Array.prototype.indexOf.call(e,r);e.splice(t,1),delete r[L]}const i=K(t);if(n0;)W(n,0)}const r=n;r.parentNode.removeChild(r)}function z(e){return e[L]||null}function q(e,t){return K(e)[t]}function J(e){const t=Y(e);return"http://www.w3.org/2000/svg"===t.namespaceURI&&"foreignObject"!==t.tagName}function K(e){return e[B]}function V(e){const t=K(z(e));return t[Array.prototype.indexOf.call(t,e)+1]||null}function X(e,t){const n=K(e);t.forEach((e=>{e.moveRangeStart=n[e.fromSiblingIndex],e.moveRangeEnd=Q(e.moveRangeStart)})),t.forEach((t=>{const r=document.createComment("marker");t.moveToBeforeMarker=r;const o=n[t.toSiblingIndex+1];o?o.parentNode.insertBefore(r,o):G(r,e)})),t.forEach((e=>{const t=e.moveToBeforeMarker,n=t.parentNode,r=e.moveRangeStart,o=e.moveRangeEnd;let s=r;for(;s;){const e=s.nextSibling;if(n.insertBefore(s,t),s===o)break;s=e}n.removeChild(t)})),t.forEach((e=>{n[e.toSiblingIndex]=e.moveRangeStart}))}function Y(e){if(e instanceof Element||e instanceof DocumentFragment)return e;if(e instanceof Comment)return e.parentNode;throw new Error("Not a valid logical element")}function G(e,t){if(t instanceof Element||t instanceof DocumentFragment)t.appendChild(e);else{if(!(t instanceof Comment))throw new Error(`Cannot append node because the parent is not a valid logical element. Parent: ${t}`);{const n=V(t);n?n.parentNode.insertBefore(e,n):G(e,z(t))}}}function Q(e){if(e instanceof Element||e instanceof DocumentFragment)return e;const t=V(e);if(t)return t.previousSibling;{const t=z(e);return t instanceof Element||t instanceof DocumentFragment?t.lastChild:Q(t)}}function Z(e){return`_bl_${e}`}const ee="__internalId";e.attachReviver(((e,t)=>t&&"object"==typeof t&&Object.prototype.hasOwnProperty.call(t,ee)&&"string"==typeof t[ee]?function(e){const t=`[${Z(e)}]`;return document.querySelector(t)}(t[ee]):t));const te="_blazorDeferredValue";function ne(e){return"select-multiple"===e.type}function re(e,t){e.value=t||""}function oe(e,t){e instanceof HTMLSelectElement?ne(e)?function(e,t){t||(t=[]);for(let n=0;n{ke()&&function(e,t){if(0!==e.button||function(e){return e.ctrlKey||e.shiftKey||e.altKey||e.metaKey}(e))return;if(e.defaultPrevented)return;const n=function(e){const t=!window._blazorDisableComposedPath&&e.composedPath&&e.composedPath();if(t){for(let e=0;e{const t=document.createElement("script");t.textContent=e.textContent,e.getAttributeNames().forEach((n=>{t.setAttribute(n,e.getAttribute(n))})),e.parentNode.replaceChild(t,e)})),ie.content));var i;let a=0;for(;s.firstChild;)j(s.firstChild,o,a++)}applyAttribute(e,t,n,r){const o=e.frameReader,s=o.attributeName(r),i=o.attributeEventHandlerId(r);if(i){const e=fe(s);return void this.eventDelegator.setListener(n,e,i,t)}const a=o.attributeValue(r);this.setOrRemoveAttributeOrProperty(n,s,a)}insertFrameRange(e,t,n,r,o,s,i){const a=r;for(let a=s;a{je(t,e)})},enableNavigationInterception:function(e){if(void 0!==me&&me!==e)throw new Error("Only one interactive runtime may enable navigation interception at a time.");me=e},setHasLocationChangingListeners:function(e,t){const n=Ae.get(e);if(!n)throw new Error(`Renderer with ID '${e}' is not listening for navigation events`);n.hasLocationChangingEventListeners=t},endLocationChanging:function(e,t){Ne&&e===xe&&(Ne(t),Ne=null)},navigateTo:function(e,t){Be(e,t,!0)},refresh:function(e){!e&&Se()?Ee(location.href,!0):location.reload()},getBaseURI:()=>document.baseURI,getLocationHref:()=>location.href,scrollToElement:Me};function Me(e){const t=document.getElementById(e);return!!t&&(t.scrollIntoView(),!0)}function Be(e,t,n=!1){const r=Ce(e),o=qe();if(t.forceLoad||!be(r)||"serverside-fullpageload"===o)!function(e,t){if(location.href===e){const t=e+"?";history.replaceState(null,"",t),location.replace(e)}else t?location.replace(e):location.href=e}(e,t.replaceHistoryEntry);else if("clientside-router"===o)Le(r,!1,t.replaceHistoryEntry,t.historyEntryState,n);else{if("serverside-enhanced"!==o)throw new Error(`Unsupported page load mechanism: ${o}`);Ee(r,t.replaceHistoryEntry)}}async function Le(e,t,n,r=void 0,o=!1){if(Fe(),function(e){const t=e.indexOf("#");return t>-1&&location.href.replace(location.hash,"")===e.substring(0,t)}(e))return void function(e,t,n){$e(e,t,n);const r=e.indexOf("#");r!==e.length-1&&Me(e.substring(r+1))}(e,n,r);const s=ze();(o||!(null==s?void 0:s.hasLocationChangingEventListeners)||await He(e,r,t,s))&&(_e=!0,$e(e,n,r),await je(t))}function $e(e,t,n=void 0){t?history.replaceState({userState:n,_index:Re},"",e):(Re++,history.pushState({userState:n,_index:Re},"",e))}function Oe(e){return new Promise((t=>{const n=Pe;Pe=()=>{Pe=n,t()},history.go(e)}))}function Fe(){Ne&&(Ne(!1),Ne=null)}function He(e,t,n,r){return new Promise((o=>{Fe(),xe++,Ne=o,r.locationChanging(xe,e,t,n)}))}async function je(e,t){const n=null!=t?t:location.href;await Promise.all(Array.from(Ae,(async([t,r])=>{var o,s;s=t,S.has(s)&&await r.locationChanged(n,null===(o=history.state)||void 0===o?void 0:o.userState,e)})))}async function We(e){var t,n;Pe&&"serverside-enhanced"!==qe()&&await Pe(e),Re=null!==(n=null===(t=history.state)||void 0===t?void 0:t._index)&&void 0!==n?n:0}function ze(){const e=Te();if(void 0!==e)return Ae.get(e)}function qe(){return ke()?"clientside-router":Se()?"serverside-enhanced":window.Blazor._internal.isBlazorWeb?"serverside-fullpageload":"clientside-router"}const Je={focus:function(e,t){if(e instanceof HTMLElement)e.focus({preventScroll:t});else{if(!(e instanceof SVGElement))throw new Error("Unable to focus an invalid element.");if(!e.hasAttribute("tabindex"))throw new Error("Unable to focus an SVG element that does not have a tabindex.");e.focus({preventScroll:t})}},focusBySelector:function(e,t){const n=document.querySelector(e);n&&(n.hasAttribute("tabindex")||(n.tabIndex=-1),n.focus({preventScroll:!0}))}},Ke={init:function(e,t,n,r=50){const o=Xe(t);(o||document.documentElement).style.overflowAnchor="none";const s=document.createRange();u(n.parentElement)&&(t.style.display="table-row",n.style.display="table-row");const i=new IntersectionObserver((function(r){r.forEach((r=>{var o;if(!r.isIntersecting)return;s.setStartAfter(t),s.setEndBefore(n);const i=s.getBoundingClientRect().height,a=null===(o=r.rootBounds)||void 0===o?void 0:o.height;r.target===t?e.invokeMethodAsync("OnSpacerBeforeVisible",r.intersectionRect.top-r.boundingClientRect.top,i,a):r.target===n&&n.offsetHeight>0&&e.invokeMethodAsync("OnSpacerAfterVisible",r.boundingClientRect.bottom-r.intersectionRect.bottom,i,a)}))}),{root:o,rootMargin:`${r}px`});i.observe(t),i.observe(n);const a=d(t),c=d(n),{observersByDotNetObjectId:l,id:h}=Ye(e);function d(e){const t={attributes:!0},n=new MutationObserver(((n,r)=>{u(e.parentElement)&&(r.disconnect(),e.style.display="table-row",r.observe(e,t)),i.unobserve(e),i.observe(e)}));return n.observe(e,t),n}function u(e){return null!==e&&(e instanceof HTMLTableElement&&""===e.style.display||"table"===e.style.display||e instanceof HTMLTableSectionElement&&""===e.style.display||"table-row-group"===e.style.display)}l[h]={intersectionObserver:i,mutationObserverBefore:a,mutationObserverAfter:c}},dispose:function(e){const{observersByDotNetObjectId:t,id:n}=Ye(e),r=t[n];r&&(r.intersectionObserver.disconnect(),r.mutationObserverBefore.disconnect(),r.mutationObserverAfter.disconnect(),e.dispose(),delete t[n])}},Ve=Symbol();function Xe(e){return e&&e!==document.body&&e!==document.documentElement?"visible"!==getComputedStyle(e).overflowY?e:Xe(e.parentElement):null}function Ye(e){var t;const n=e._callDispatcher,r=e._id;return null!==(t=n[Ve])&&void 0!==t||(n[Ve]={}),{observersByDotNetObjectId:n[Ve],id:r}}const Ge={getAndRemoveExistingTitle:function(){var e;const t=document.head?document.head.getElementsByTagName("title"):[];if(0===t.length)return null;let n=null;for(let r=t.length-1;r>=0;r--){const o=t[r],s=o.previousSibling;s instanceof Comment&&null!==z(s)||(null===n&&(n=o.textContent),null===(e=o.parentNode)||void 0===e||e.removeChild(o))}return n}},Qe={init:function(e,t){t._blazorInputFileNextFileId=0,t.addEventListener("click",(function(){t.value=""})),t.addEventListener("change",(function(){t._blazorFilesById={};const n=Array.prototype.map.call(t.files,(function(e){const n={id:++t._blazorInputFileNextFileId,lastModified:new Date(e.lastModified).toISOString(),name:e.name,size:e.size,contentType:e.type,readPromise:void 0,arrayBuffer:void 0,blob:e};return t._blazorFilesById[n.id]=n,n}));e.invokeMethodAsync("NotifyChange",n)}))},toImageFile:async function(e,t,n,r,o){const s=Ze(e,t),i=await new Promise((function(e){const t=new Image;t.onload=function(){URL.revokeObjectURL(t.src),e(t)},t.onerror=function(){t.onerror=null,URL.revokeObjectURL(t.src)},t.src=URL.createObjectURL(s.blob)})),a=await new Promise((function(e){var t;const s=Math.min(1,r/i.width),a=Math.min(1,o/i.height),c=Math.min(s,a),l=document.createElement("canvas");l.width=Math.round(i.width*c),l.height=Math.round(i.height*c),null===(t=l.getContext("2d"))||void 0===t||t.drawImage(i,0,0,l.width,l.height),l.toBlob(e,n)})),c={id:++e._blazorInputFileNextFileId,lastModified:s.lastModified,name:s.name,size:(null==a?void 0:a.size)||0,contentType:n,blob:a||s.blob};return e._blazorFilesById[c.id]=c,c},readFileData:async function(e,t){return Ze(e,t).blob}};function Ze(e,t){const n=e._blazorFilesById[t];if(!n)throw new Error(`There is no file with ID ${t}. The file list may have changed. See https://aka.ms/aspnet/blazor-input-file-multiple-selections.`);return n}const et=new Set,tt={enableNavigationPrompt:function(e){0===et.size&&window.addEventListener("beforeunload",nt),et.add(e)},disableNavigationPrompt:function(e){et.delete(e),0===et.size&&window.removeEventListener("beforeunload",nt)}};function nt(e){e.preventDefault(),e.returnValue=!0}async function rt(e,t,n){return e instanceof Blob?await async function(e,t,n){const r=e.slice(t,t+n),o=await r.arrayBuffer();return new Uint8Array(o)}(e,t,n):function(e,t,n){return new Uint8Array(e.buffer,e.byteOffset+t,n)}(e,t,n)}new Map;const ot={navigateTo:function(e,t,n=!1){Be(e,t instanceof Object?t:{forceLoad:t,replaceHistoryEntry:n})},registerCustomEventType:function(e,t){if(!t)throw new Error("The options parameter is required.");if(s.has(e))throw new Error(`The event '${e}' is already registered.`);if(t.browserEventName){const n=i.get(t.browserEventName);n?n.push(e):i.set(t.browserEventName,[e]),a.forEach((n=>n(e,t.browserEventName)))}s.set(e,t)},rootComponents:y,runtime:{},_internal:{navigationManager:Ue,domWrapper:Je,Virtualize:Ke,PageTitle:Ge,InputFile:Qe,NavigationLock:tt,getJSDataStreamChunk:rt,attachWebRendererInterop:I}};var st;function it(e){const t={...at,...e};return e&&e.reconnectionOptions&&(t.reconnectionOptions={...at.reconnectionOptions,...e.reconnectionOptions}),t}window.Blazor=ot,function(e){e[e.Trace=0]="Trace",e[e.Debug=1]="Debug",e[e.Information=2]="Information",e[e.Warning=3]="Warning",e[e.Error=4]="Error",e[e.Critical=5]="Critical",e[e.None=6]="None"}(st||(st={}));const at={configureSignalR:e=>{},logLevel:st.Warning,initializers:void 0,circuitHandlers:[],reconnectionOptions:{maxRetries:8,retryIntervalMilliseconds:2e4,dialogId:"components-reconnect-modal"}};class ct{log(e,t){}}ct.instance=new ct;class lt{constructor(e){this.minLevel=e}log(e,t){if(e>=this.minLevel){const n=`[${(new Date).toISOString()}] ${st[e]}: ${t}`;switch(e){case st.Critical:case st.Error:console.error(n);break;case st.Warning:console.warn(n);break;case st.Information:console.info(n);break;default:console.log(n)}}}}const ht=/^\s*Blazor-Server-Component-State:(?[a-zA-Z0-9+/=]+)$/;function dt(e,t,n="state"){var r;if(e.nodeType===Node.COMMENT_NODE){const o=e.textContent||"",s=t.exec(o),i=s&&s.groups&&s.groups[n];return i&&(null===(r=e.parentNode)||void 0===r||r.removeChild(e)),i}if(!e.hasChildNodes())return;const o=e.childNodes;for(let e=0;e.*)$/);function ft(e,t){const n=e.currentElement;var r,o,s;if(n&&n.nodeType===Node.COMMENT_NODE&&n.textContent){const i=pt.exec(n.textContent),a=i&&i.groups&&i.groups.descriptor;if(!a)return;!function(e){if(e.parentNode instanceof Document)throw new Error("Root components cannot be marked as interactive. The element must be rendered statically so that scripts are not evaluated multiple times.")}(n);try{const i=function(e){const t=JSON.parse(e),{type:n}=t;if("server"!==n&&"webassembly"!==n&&"auto"!==n)throw new Error(`Invalid component type '${n}'.`);return t}(a),c=function(e,t,n){const{prerenderId:r}=e;if(r){for(;n.next()&&n.currentElement;){const e=n.currentElement;if(e.nodeType!==Node.COMMENT_NODE)continue;if(!e.textContent)continue;const t=pt.exec(e.textContent),o=t&&t[1];if(o)return yt(o,r),e}throw new Error(`Could not find an end component comment for '${t}'.`)}}(i,n,e);if(t!==i.type)return;switch(i.type){case"webassembly":return o=n,s=c,vt(r=i),{...r,uniqueId:gt++,start:o,end:s};case"server":return function(e,t,n){return mt(e),{...e,uniqueId:gt++,start:t,end:n}}(i,n,c);case"auto":return function(e,t,n){return mt(e),vt(e),{...e,uniqueId:gt++,start:t,end:n}}(i,n,c)}}catch(e){throw new Error(`Found malformed component comment at ${n.textContent}`)}}}let gt=0;function mt(e){const{descriptor:t,sequence:n}=e;if(!t)throw new Error("descriptor must be defined when using a descriptor.");if(void 0===n)throw new Error("sequence must be defined when using a descriptor.");if(!Number.isInteger(n))throw new Error(`Error parsing the sequence '${n}' for component '${JSON.stringify(e)}'`)}function vt(e){const{assembly:t,typeName:n}=e;if(!t)throw new Error("assembly must be defined when using a descriptor.");if(!n)throw new Error("typeName must be defined when using a descriptor.");e.parameterDefinitions=e.parameterDefinitions&&atob(e.parameterDefinitions),e.parameterValues=e.parameterValues&&atob(e.parameterValues)}function yt(e,t){const n=JSON.parse(e);if(1!==Object.keys(n).length)throw new Error(`Invalid end of component comment: '${e}'`);const r=n.prerenderId;if(!r)throw new Error(`End of component comment must have a value for the prerendered property: '${e}'`);if(r!==t)throw new Error(`End of component comment prerendered property must match the start comment prerender id: '${t}', '${r}'`)}class wt{constructor(e){this.childNodes=e,this.currentIndex=-1,this.length=e.length}next(){return this.currentIndex++,this.currentIndex{n+=`0x${e<16?"0":""}${e.toString(16)} `})),n.substr(0,n.length-1)}(e)}'`)):"string"==typeof e&&(n=`String data of length ${e.length}`,t&&(n+=`. Content: '${e}'`)),n}function Tt(e){return e&&"undefined"!=typeof ArrayBuffer&&(e instanceof ArrayBuffer||e.constructor&&"ArrayBuffer"===e.constructor.name)}async function Dt(e,t,n,r,o,s){const i={},[a,c]=At();i[a]=c,e.log(bt.Trace,`(${t} transport) sending data. ${kt(o,s.logMessageContent)}.`);const l=Tt(o)?"arraybuffer":"text",h=await n.post(r,{content:o,headers:{...i,...s.headers},responseType:l,timeout:s.timeout,withCredentials:s.withCredentials});e.log(bt.Trace,`(${t} transport) request complete. Response status: ${h.statusCode}.`)}class Rt{constructor(e,t){this._subject=e,this._observer=t}dispose(){const e=this._subject.observers.indexOf(this._observer);e>-1&&this._subject.observers.splice(e,1),0===this._subject.observers.length&&this._subject.cancelCallback&&this._subject.cancelCallback().catch((e=>{}))}}class xt{constructor(e){this._minLevel=e,this.out=console}log(e,t){if(e>=this._minLevel){const n=`[${(new Date).toISOString()}] ${bt[e]}: ${t}`;switch(e){case bt.Critical:case bt.Error:this.out.error(n);break;case bt.Warning:this.out.warn(n);break;case bt.Information:this.out.info(n);break;default:this.out.log(n)}}}}function At(){let e="X-SignalR-User-Agent";return It.isNode&&(e="User-Agent"),[e,Pt(Et,Nt(),It.isNode?"NodeJS":"Browser",Ut())]}function Pt(e,t,n,r){let o="Microsoft SignalR/";const s=e.split(".");return o+=`${s[0]}.${s[1]}`,o+=` (${e}; `,o+=t&&""!==t?`${t}; `:"Unknown OS; ",o+=`${n}`,o+=r?`; ${r}`:"; Unknown Runtime Version",o+=")",o}function Nt(){if(!It.isNode)return"";switch(process.platform){case"win32":return"Windows NT";case"darwin":return"macOS";case"linux":return"Linux";default:return process.platform}}function Ut(){if(It.isNode)return process.versions.node}function Mt(e){return e.stack?e.stack:e.message?e.message:`${e}`}class Bt{writeHandshakeRequest(e){return _t.write(JSON.stringify(e))}parseHandshakeResponse(e){let t,n;if(Tt(e)){const r=new Uint8Array(e),o=r.indexOf(_t.RecordSeparatorCode);if(-1===o)throw new Error("Message is incomplete.");const s=o+1;t=String.fromCharCode.apply(null,Array.prototype.slice.call(r.slice(0,s))),n=r.byteLength>s?r.slice(s).buffer:null}else{const r=e,o=r.indexOf(_t.RecordSeparator);if(-1===o)throw new Error("Message is incomplete.");const s=o+1;t=r.substring(0,s),n=r.length>s?r.substring(s):null}const r=_t.parse(t),o=JSON.parse(r[0]);if(o.type)throw new Error("Expected a handshake response from the server.");return[n,o]}}class Lt extends Error{constructor(e,t){const n=new.target.prototype;super(`${e}: Status code '${t}'`),this.statusCode=t,this.__proto__=n}}class $t extends Error{constructor(e="A timeout occurred."){const t=new.target.prototype;super(e),this.__proto__=t}}class Ot extends Error{constructor(e="An abort occurred."){const t=new.target.prototype;super(e),this.__proto__=t}}class Ft extends Error{constructor(e,t){const n=new.target.prototype;super(e),this.transport=t,this.errorType="UnsupportedTransportError",this.__proto__=n}}class Ht extends Error{constructor(e,t){const n=new.target.prototype;super(e),this.transport=t,this.errorType="DisabledTransportError",this.__proto__=n}}class jt extends Error{constructor(e,t){const n=new.target.prototype;super(e),this.transport=t,this.errorType="FailedToStartTransportError",this.__proto__=n}}class Wt extends Error{constructor(e){const t=new.target.prototype;super(e),this.errorType="FailedToNegotiateWithServerError",this.__proto__=t}}class zt extends Error{constructor(e,t){const n=new.target.prototype;super(e),this.innerErrors=t,this.__proto__=n}}var qt,Jt;!function(e){e[e.Invocation=1]="Invocation",e[e.StreamItem=2]="StreamItem",e[e.Completion=3]="Completion",e[e.StreamInvocation=4]="StreamInvocation",e[e.CancelInvocation=5]="CancelInvocation",e[e.Ping=6]="Ping",e[e.Close=7]="Close",e[e.Ack=8]="Ack",e[e.Sequence=9]="Sequence"}(qt||(qt={}));class Kt{constructor(){this.observers=[]}next(e){for(const t of this.observers)t.next(e)}error(e){for(const t of this.observers)t.error&&t.error(e)}complete(){for(const e of this.observers)e.complete&&e.complete()}subscribe(e){return this.observers.push(e),new Rt(this,e)}}class Vt{constructor(e,t,n){this._bufferSize=1e5,this._messages=[],this._totalMessageCount=0,this._waitForSequenceMessage=!1,this._nextReceivingSequenceId=1,this._latestReceivedSequenceId=0,this._bufferedByteCount=0,this._reconnectInProgress=!1,this._protocol=e,this._connection=t,this._bufferSize=n}async _send(e){const t=this._protocol.writeMessage(e);let n=Promise.resolve();if(this._isInvocationMessage(e)){this._totalMessageCount++;let e=()=>{},r=()=>{};Tt(t)?this._bufferedByteCount+=t.byteLength:this._bufferedByteCount+=t.length,this._bufferedByteCount>=this._bufferSize&&(n=new Promise(((t,n)=>{e=t,r=n}))),this._messages.push(new Xt(t,this._totalMessageCount,e,r))}try{this._reconnectInProgress||await this._connection.send(t)}catch{this._disconnected()}await n}_ack(e){let t=-1;for(let n=0;nthis._nextReceivingSequenceId?this._connection.stop(new Error("Sequence ID greater than amount of messages we've received.")):this._nextReceivingSequenceId=e.sequenceId}_disconnected(){this._reconnectInProgress=!0,this._waitForSequenceMessage=!0}async _resend(){const e=0!==this._messages.length?this._messages[0]._id:this._totalMessageCount+1;await this._connection.send(this._protocol.writeMessage({type:qt.Sequence,sequenceId:e}));const t=this._messages;for(const e of t)await this._connection.send(e._message);this._reconnectInProgress=!1}_dispose(e){null!=e||(e=new Error("Unable to reconnect to server."));for(const t of this._messages)t._rejector(e)}_isInvocationMessage(e){switch(e.type){case qt.Invocation:case qt.StreamItem:case qt.Completion:case qt.StreamInvocation:case qt.CancelInvocation:return!0;case qt.Close:case qt.Sequence:case qt.Ping:case qt.Ack:return!1}}_ackTimer(){void 0===this._ackTimerHandle&&(this._ackTimerHandle=setTimeout((async()=>{try{this._reconnectInProgress||await this._connection.send(this._protocol.writeMessage({type:qt.Ack,sequenceId:this._latestReceivedSequenceId}))}catch{}clearTimeout(this._ackTimerHandle),this._ackTimerHandle=void 0}),1e3))}}class Xt{constructor(e,t,n,r){this._message=e,this._id=t,this._resolver=n,this._rejector=r}}!function(e){e.Disconnected="Disconnected",e.Connecting="Connecting",e.Connected="Connected",e.Disconnecting="Disconnecting",e.Reconnecting="Reconnecting"}(Jt||(Jt={}));class Yt{static create(e,t,n,r,o,s,i){return new Yt(e,t,n,r,o,s,i)}constructor(e,t,n,r,o,s,i){this._nextKeepAlive=0,this._freezeEventListener=()=>{this._logger.log(bt.Warning,"The page is being frozen, this will likely lead to the connection being closed and messages being lost. For more information see the docs at https://learn.microsoft.com/aspnet/core/signalr/javascript-client#bsleep")},Ct.isRequired(e,"connection"),Ct.isRequired(t,"logger"),Ct.isRequired(n,"protocol"),this.serverTimeoutInMilliseconds=null!=o?o:3e4,this.keepAliveIntervalInMilliseconds=null!=s?s:15e3,this._statefulReconnectBufferSize=null!=i?i:1e5,this._logger=t,this._protocol=n,this.connection=e,this._reconnectPolicy=r,this._handshakeProtocol=new Bt,this.connection.onreceive=e=>this._processIncomingData(e),this.connection.onclose=e=>this._connectionClosed(e),this._callbacks={},this._methods={},this._closedCallbacks=[],this._reconnectingCallbacks=[],this._reconnectedCallbacks=[],this._invocationId=0,this._receivedHandshakeResponse=!1,this._connectionState=Jt.Disconnected,this._connectionStarted=!1,this._cachedPingMessage=this._protocol.writeMessage({type:qt.Ping})}get state(){return this._connectionState}get connectionId(){return this.connection&&this.connection.connectionId||null}get baseUrl(){return this.connection.baseUrl||""}set baseUrl(e){if(this._connectionState!==Jt.Disconnected&&this._connectionState!==Jt.Reconnecting)throw new Error("The HubConnection must be in the Disconnected or Reconnecting state to change the url.");if(!e)throw new Error("The HubConnection url must be a valid url.");this.connection.baseUrl=e}start(){return this._startPromise=this._startWithStateTransitions(),this._startPromise}async _startWithStateTransitions(){if(this._connectionState!==Jt.Disconnected)return Promise.reject(new Error("Cannot start a HubConnection that is not in the 'Disconnected' state."));this._connectionState=Jt.Connecting,this._logger.log(bt.Debug,"Starting HubConnection.");try{await this._startInternal(),It.isBrowser&&window.document.addEventListener("freeze",this._freezeEventListener),this._connectionState=Jt.Connected,this._connectionStarted=!0,this._logger.log(bt.Debug,"HubConnection connected successfully.")}catch(e){return this._connectionState=Jt.Disconnected,this._logger.log(bt.Debug,`HubConnection failed to start successfully because of error '${e}'.`),Promise.reject(e)}}async _startInternal(){this._stopDuringStartError=void 0,this._receivedHandshakeResponse=!1;const e=new Promise(((e,t)=>{this._handshakeResolver=e,this._handshakeRejecter=t}));await this.connection.start(this._protocol.transferFormat);try{let t=this._protocol.version;this.connection.features.reconnect||(t=1);const n={protocol:this._protocol.name,version:t};if(this._logger.log(bt.Debug,"Sending handshake request."),await this._sendMessage(this._handshakeProtocol.writeHandshakeRequest(n)),this._logger.log(bt.Information,`Using HubProtocol '${this._protocol.name}'.`),this._cleanupTimeout(),this._resetTimeoutPeriod(),this._resetKeepAliveInterval(),await e,this._stopDuringStartError)throw this._stopDuringStartError;!!this.connection.features.reconnect&&(this._messageBuffer=new Vt(this._protocol,this.connection,this._statefulReconnectBufferSize),this.connection.features.disconnected=this._messageBuffer._disconnected.bind(this._messageBuffer),this.connection.features.resend=()=>{if(this._messageBuffer)return this._messageBuffer._resend()}),this.connection.features.inherentKeepAlive||await this._sendMessage(this._cachedPingMessage)}catch(e){throw this._logger.log(bt.Debug,`Hub handshake failed with error '${e}' during start(). Stopping HubConnection.`),this._cleanupTimeout(),this._cleanupPingTimer(),await this.connection.stop(e),e}}async stop(){const e=this._startPromise;this.connection.features.reconnect=!1,this._stopPromise=this._stopInternal(),await this._stopPromise;try{await e}catch(e){}}_stopInternal(e){if(this._connectionState===Jt.Disconnected)return this._logger.log(bt.Debug,`Call to HubConnection.stop(${e}) ignored because it is already in the disconnected state.`),Promise.resolve();if(this._connectionState===Jt.Disconnecting)return this._logger.log(bt.Debug,`Call to HttpConnection.stop(${e}) ignored because the connection is already in the disconnecting state.`),this._stopPromise;const t=this._connectionState;return this._connectionState=Jt.Disconnecting,this._logger.log(bt.Debug,"Stopping HubConnection."),this._reconnectDelayHandle?(this._logger.log(bt.Debug,"Connection stopped during reconnect delay. Done reconnecting."),clearTimeout(this._reconnectDelayHandle),this._reconnectDelayHandle=void 0,this._completeClose(),Promise.resolve()):(t===Jt.Connected&&this._sendCloseMessage(),this._cleanupTimeout(),this._cleanupPingTimer(),this._stopDuringStartError=e||new Ot("The connection was stopped before the hub handshake could complete."),this.connection.stop(e))}async _sendCloseMessage(){try{await this._sendWithProtocol(this._createCloseMessage())}catch{}}stream(e,...t){const[n,r]=this._replaceStreamingParams(t),o=this._createStreamInvocation(e,t,r);let s;const i=new Kt;return i.cancelCallback=()=>{const e=this._createCancelInvocation(o.invocationId);return delete this._callbacks[o.invocationId],s.then((()=>this._sendWithProtocol(e)))},this._callbacks[o.invocationId]=(e,t)=>{t?i.error(t):e&&(e.type===qt.Completion?e.error?i.error(new Error(e.error)):i.complete():i.next(e.item))},s=this._sendWithProtocol(o).catch((e=>{i.error(e),delete this._callbacks[o.invocationId]})),this._launchStreams(n,s),i}_sendMessage(e){return this._resetKeepAliveInterval(),this.connection.send(e)}_sendWithProtocol(e){return this._messageBuffer?this._messageBuffer._send(e):this._sendMessage(this._protocol.writeMessage(e))}send(e,...t){const[n,r]=this._replaceStreamingParams(t),o=this._sendWithProtocol(this._createInvocation(e,t,!0,r));return this._launchStreams(n,o),o}invoke(e,...t){const[n,r]=this._replaceStreamingParams(t),o=this._createInvocation(e,t,!1,r);return new Promise(((e,t)=>{this._callbacks[o.invocationId]=(n,r)=>{r?t(r):n&&(n.type===qt.Completion?n.error?t(new Error(n.error)):e(n.result):t(new Error(`Unexpected message type: ${n.type}`)))};const r=this._sendWithProtocol(o).catch((e=>{t(e),delete this._callbacks[o.invocationId]}));this._launchStreams(n,r)}))}on(e,t){e&&t&&(e=e.toLowerCase(),this._methods[e]||(this._methods[e]=[]),-1===this._methods[e].indexOf(t)&&this._methods[e].push(t))}off(e,t){if(!e)return;e=e.toLowerCase();const n=this._methods[e];if(n)if(t){const r=n.indexOf(t);-1!==r&&(n.splice(r,1),0===n.length&&delete this._methods[e])}else delete this._methods[e]}onclose(e){e&&this._closedCallbacks.push(e)}onreconnecting(e){e&&this._reconnectingCallbacks.push(e)}onreconnected(e){e&&this._reconnectedCallbacks.push(e)}_processIncomingData(e){if(this._cleanupTimeout(),this._receivedHandshakeResponse||(e=this._processHandshakeResponse(e),this._receivedHandshakeResponse=!0),e){const t=this._protocol.parseMessages(e,this._logger);for(const e of t)if(!this._messageBuffer||this._messageBuffer._shouldProcessMessage(e))switch(e.type){case qt.Invocation:this._invokeClientMethod(e);break;case qt.StreamItem:case qt.Completion:{const t=this._callbacks[e.invocationId];if(t){e.type===qt.Completion&&delete this._callbacks[e.invocationId];try{t(e)}catch(e){this._logger.log(bt.Error,`Stream callback threw error: ${Mt(e)}`)}}break}case qt.Ping:break;case qt.Close:{this._logger.log(bt.Information,"Close message received from server.");const t=e.error?new Error("Server returned an error on close: "+e.error):void 0;!0===e.allowReconnect?this.connection.stop(t):this._stopPromise=this._stopInternal(t);break}case qt.Ack:this._messageBuffer&&this._messageBuffer._ack(e);break;case qt.Sequence:this._messageBuffer&&this._messageBuffer._resetSequence(e);break;default:this._logger.log(bt.Warning,`Invalid message type: ${e.type}.`)}}this._resetTimeoutPeriod()}_processHandshakeResponse(e){let t,n;try{[n,t]=this._handshakeProtocol.parseHandshakeResponse(e)}catch(e){const t="Error parsing handshake response: "+e;this._logger.log(bt.Error,t);const n=new Error(t);throw this._handshakeRejecter(n),n}if(t.error){const e="Server returned handshake error: "+t.error;this._logger.log(bt.Error,e);const n=new Error(e);throw this._handshakeRejecter(n),n}return this._logger.log(bt.Debug,"Server handshake complete."),this._handshakeResolver(),n}_resetKeepAliveInterval(){this.connection.features.inherentKeepAlive||(this._nextKeepAlive=(new Date).getTime()+this.keepAliveIntervalInMilliseconds,this._cleanupPingTimer())}_resetTimeoutPeriod(){if(!(this.connection.features&&this.connection.features.inherentKeepAlive||(this._timeoutHandle=setTimeout((()=>this.serverTimeout()),this.serverTimeoutInMilliseconds),void 0!==this._pingServerHandle))){let e=this._nextKeepAlive-(new Date).getTime();e<0&&(e=0),this._pingServerHandle=setTimeout((async()=>{if(this._connectionState===Jt.Connected)try{await this._sendMessage(this._cachedPingMessage)}catch{this._cleanupPingTimer()}}),e)}}serverTimeout(){this.connection.stop(new Error("Server timeout elapsed without receiving a message from the server."))}async _invokeClientMethod(e){const t=e.target.toLowerCase(),n=this._methods[t];if(!n)return this._logger.log(bt.Warning,`No client method with the name '${t}' found.`),void(e.invocationId&&(this._logger.log(bt.Warning,`No result given for '${t}' method and invocation ID '${e.invocationId}'.`),await this._sendWithProtocol(this._createCompletionMessage(e.invocationId,"Client didn't provide a result.",null))));const r=n.slice(),o=!!e.invocationId;let s,i,a;for(const n of r)try{const r=s;s=await n.apply(this,e.arguments),o&&s&&r&&(this._logger.log(bt.Error,`Multiple results provided for '${t}'. Sending error to server.`),a=this._createCompletionMessage(e.invocationId,"Client provided multiple results.",null)),i=void 0}catch(e){i=e,this._logger.log(bt.Error,`A callback for the method '${t}' threw error '${e}'.`)}a?await this._sendWithProtocol(a):o?(i?a=this._createCompletionMessage(e.invocationId,`${i}`,null):void 0!==s?a=this._createCompletionMessage(e.invocationId,null,s):(this._logger.log(bt.Warning,`No result given for '${t}' method and invocation ID '${e.invocationId}'.`),a=this._createCompletionMessage(e.invocationId,"Client didn't provide a result.",null)),await this._sendWithProtocol(a)):s&&this._logger.log(bt.Error,`Result given for '${t}' method but server is not expecting a result.`)}_connectionClosed(e){this._logger.log(bt.Debug,`HubConnection.connectionClosed(${e}) called while in state ${this._connectionState}.`),this._stopDuringStartError=this._stopDuringStartError||e||new Ot("The underlying connection was closed before the hub handshake could complete."),this._handshakeResolver&&this._handshakeResolver(),this._cancelCallbacksWithError(e||new Error("Invocation canceled due to the underlying connection being closed.")),this._cleanupTimeout(),this._cleanupPingTimer(),this._connectionState===Jt.Disconnecting?this._completeClose(e):this._connectionState===Jt.Connected&&this._reconnectPolicy?this._reconnect(e):this._connectionState===Jt.Connected&&this._completeClose(e)}_completeClose(e){if(this._connectionStarted){this._connectionState=Jt.Disconnected,this._connectionStarted=!1,this._messageBuffer&&(this._messageBuffer._dispose(null!=e?e:new Error("Connection closed.")),this._messageBuffer=void 0),It.isBrowser&&window.document.removeEventListener("freeze",this._freezeEventListener);try{this._closedCallbacks.forEach((t=>t.apply(this,[e])))}catch(t){this._logger.log(bt.Error,`An onclose callback called with error '${e}' threw error '${t}'.`)}}}async _reconnect(e){const t=Date.now();let n=0,r=void 0!==e?e:new Error("Attempting to reconnect due to a unknown error."),o=this._getNextRetryDelay(n++,0,r);if(null===o)return this._logger.log(bt.Debug,"Connection not reconnecting because the IRetryPolicy returned null on the first reconnect attempt."),void this._completeClose(e);if(this._connectionState=Jt.Reconnecting,e?this._logger.log(bt.Information,`Connection reconnecting because of error '${e}'.`):this._logger.log(bt.Information,"Connection reconnecting."),0!==this._reconnectingCallbacks.length){try{this._reconnectingCallbacks.forEach((t=>t.apply(this,[e])))}catch(t){this._logger.log(bt.Error,`An onreconnecting callback called with error '${e}' threw error '${t}'.`)}if(this._connectionState!==Jt.Reconnecting)return void this._logger.log(bt.Debug,"Connection left the reconnecting state in onreconnecting callback. Done reconnecting.")}for(;null!==o;){if(this._logger.log(bt.Information,`Reconnect attempt number ${n} will start in ${o} ms.`),await new Promise((e=>{this._reconnectDelayHandle=setTimeout(e,o)})),this._reconnectDelayHandle=void 0,this._connectionState!==Jt.Reconnecting)return void this._logger.log(bt.Debug,"Connection left the reconnecting state during reconnect delay. Done reconnecting.");try{if(await this._startInternal(),this._connectionState=Jt.Connected,this._logger.log(bt.Information,"HubConnection reconnected successfully."),0!==this._reconnectedCallbacks.length)try{this._reconnectedCallbacks.forEach((e=>e.apply(this,[this.connection.connectionId])))}catch(e){this._logger.log(bt.Error,`An onreconnected callback called with connectionId '${this.connection.connectionId}; threw error '${e}'.`)}return}catch(e){if(this._logger.log(bt.Information,`Reconnect attempt failed because of error '${e}'.`),this._connectionState!==Jt.Reconnecting)return this._logger.log(bt.Debug,`Connection moved to the '${this._connectionState}' from the reconnecting state during reconnect attempt. Done reconnecting.`),void(this._connectionState===Jt.Disconnecting&&this._completeClose());r=e instanceof Error?e:new Error(e.toString()),o=this._getNextRetryDelay(n++,Date.now()-t,r)}}this._logger.log(bt.Information,`Reconnect retries have been exhausted after ${Date.now()-t} ms and ${n} failed attempts. Connection disconnecting.`),this._completeClose()}_getNextRetryDelay(e,t,n){try{return this._reconnectPolicy.nextRetryDelayInMilliseconds({elapsedMilliseconds:t,previousRetryCount:e,retryReason:n})}catch(n){return this._logger.log(bt.Error,`IRetryPolicy.nextRetryDelayInMilliseconds(${e}, ${t}) threw error '${n}'.`),null}}_cancelCallbacksWithError(e){const t=this._callbacks;this._callbacks={},Object.keys(t).forEach((n=>{const r=t[n];try{r(null,e)}catch(t){this._logger.log(bt.Error,`Stream 'error' callback called with '${e}' threw error: ${Mt(t)}`)}}))}_cleanupPingTimer(){this._pingServerHandle&&(clearTimeout(this._pingServerHandle),this._pingServerHandle=void 0)}_cleanupTimeout(){this._timeoutHandle&&clearTimeout(this._timeoutHandle)}_createInvocation(e,t,n,r){if(n)return 0!==r.length?{arguments:t,streamIds:r,target:e,type:qt.Invocation}:{arguments:t,target:e,type:qt.Invocation};{const n=this._invocationId;return this._invocationId++,0!==r.length?{arguments:t,invocationId:n.toString(),streamIds:r,target:e,type:qt.Invocation}:{arguments:t,invocationId:n.toString(),target:e,type:qt.Invocation}}}_launchStreams(e,t){if(0!==e.length){t||(t=Promise.resolve());for(const n in e)e[n].subscribe({complete:()=>{t=t.then((()=>this._sendWithProtocol(this._createCompletionMessage(n))))},error:e=>{let r;r=e instanceof Error?e.message:e&&e.toString?e.toString():"Unknown error",t=t.then((()=>this._sendWithProtocol(this._createCompletionMessage(n,r))))},next:e=>{t=t.then((()=>this._sendWithProtocol(this._createStreamItemMessage(n,e))))}})}}_replaceStreamingParams(e){const t=[],n=[];for(let r=0;r0)&&(t=!1,this._accessToken=await this._accessTokenFactory()),this._setAuthorizationHeader(e);const n=await this._innerClient.send(e);return t&&401===n.statusCode&&this._accessTokenFactory?(this._accessToken=await this._accessTokenFactory(),this._setAuthorizationHeader(e),await this._innerClient.send(e)):n}_setAuthorizationHeader(e){e.headers||(e.headers={}),this._accessToken?e.headers[Zt.Authorization]=`Bearer ${this._accessToken}`:this._accessTokenFactory&&e.headers[Zt.Authorization]&&delete e.headers[Zt.Authorization]}getCookieString(e){return this._innerClient.getCookieString(e)}}class rn extends tn{constructor(e){super(),this._logger=e;const t={_fetchType:void 0,_jar:void 0};var r;r=t,"undefined"==typeof fetch&&(r._jar=new(n(628).CookieJar),"undefined"==typeof fetch?r._fetchType=n(200):r._fetchType=fetch,r._fetchType=n(203)(r._fetchType,r._jar),1)?(this._fetchType=t._fetchType,this._jar=t._jar):this._fetchType=fetch.bind(function(){if("undefined"!=typeof globalThis)return globalThis;if("undefined"!=typeof self)return self;if("undefined"!=typeof window)return window;if(void 0!==n.g)return n.g;throw new Error("could not find global")}()),this._abortControllerType=AbortController;const o={_abortControllerType:this._abortControllerType};(function(e){return"undefined"==typeof AbortController&&(e._abortControllerType=n(778),!0)})(o)&&(this._abortControllerType=o._abortControllerType)}async send(e){if(e.abortSignal&&e.abortSignal.aborted)throw new Ot;if(!e.method)throw new Error("No method defined.");if(!e.url)throw new Error("No url defined.");const t=new this._abortControllerType;let n;e.abortSignal&&(e.abortSignal.onabort=()=>{t.abort(),n=new Ot});let r,o=null;if(e.timeout){const r=e.timeout;o=setTimeout((()=>{t.abort(),this._logger.log(bt.Warning,"Timeout from HTTP request."),n=new $t}),r)}""===e.content&&(e.content=void 0),e.content&&(e.headers=e.headers||{},Tt(e.content)?e.headers["Content-Type"]="application/octet-stream":e.headers["Content-Type"]="text/plain;charset=UTF-8");try{r=await this._fetchType(e.url,{body:e.content,cache:"no-cache",credentials:!0===e.withCredentials?"include":"same-origin",headers:{"X-Requested-With":"XMLHttpRequest",...e.headers},method:e.method,mode:"cors",redirect:"follow",signal:t.signal})}catch(e){if(n)throw n;throw this._logger.log(bt.Warning,`Error from HTTP request. ${e}.`),e}finally{o&&clearTimeout(o),e.abortSignal&&(e.abortSignal.onabort=null)}if(!r.ok){const e=await on(r,"text");throw new Lt(e||r.statusText,r.status)}const s=on(r,e.responseType),i=await s;return new en(r.status,r.statusText,i)}getCookieString(e){return""}}function on(e,t){let n;switch(t){case"arraybuffer":n=e.arrayBuffer();break;case"text":default:n=e.text();break;case"blob":case"document":case"json":throw new Error(`${t} is not supported.`)}return n}class sn extends tn{constructor(e){super(),this._logger=e}send(e){return e.abortSignal&&e.abortSignal.aborted?Promise.reject(new Ot):e.method?e.url?new Promise(((t,n)=>{const r=new XMLHttpRequest;r.open(e.method,e.url,!0),r.withCredentials=void 0===e.withCredentials||e.withCredentials,r.setRequestHeader("X-Requested-With","XMLHttpRequest"),""===e.content&&(e.content=void 0),e.content&&(Tt(e.content)?r.setRequestHeader("Content-Type","application/octet-stream"):r.setRequestHeader("Content-Type","text/plain;charset=UTF-8"));const o=e.headers;o&&Object.keys(o).forEach((e=>{r.setRequestHeader(e,o[e])})),e.responseType&&(r.responseType=e.responseType),e.abortSignal&&(e.abortSignal.onabort=()=>{r.abort(),n(new Ot)}),e.timeout&&(r.timeout=e.timeout),r.onload=()=>{e.abortSignal&&(e.abortSignal.onabort=null),r.status>=200&&r.status<300?t(new en(r.status,r.statusText,r.response||r.responseText)):n(new Lt(r.response||r.responseText||r.statusText,r.status))},r.onerror=()=>{this._logger.log(bt.Warning,`Error from HTTP request. ${r.status}: ${r.statusText}.`),n(new Lt(r.statusText,r.status))},r.ontimeout=()=>{this._logger.log(bt.Warning,"Timeout from HTTP request."),n(new $t)},r.send(e.content)})):Promise.reject(new Error("No url defined.")):Promise.reject(new Error("No method defined."))}}class an extends tn{constructor(e){if(super(),"undefined"!=typeof fetch)this._httpClient=new rn(e);else{if("undefined"==typeof XMLHttpRequest)throw new Error("No usable HttpClient found.");this._httpClient=new sn(e)}}send(e){return e.abortSignal&&e.abortSignal.aborted?Promise.reject(new Ot):e.method?e.url?this._httpClient.send(e):Promise.reject(new Error("No url defined.")):Promise.reject(new Error("No method defined."))}getCookieString(e){return this._httpClient.getCookieString(e)}}var cn,ln;!function(e){e[e.None=0]="None",e[e.WebSockets=1]="WebSockets",e[e.ServerSentEvents=2]="ServerSentEvents",e[e.LongPolling=4]="LongPolling"}(cn||(cn={})),function(e){e[e.Text=1]="Text",e[e.Binary=2]="Binary"}(ln||(ln={}));class hn{constructor(){this._isAborted=!1,this.onabort=null}abort(){this._isAborted||(this._isAborted=!0,this.onabort&&this.onabort())}get signal(){return this}get aborted(){return this._isAborted}}class dn{get pollAborted(){return this._pollAbort.aborted}constructor(e,t,n){this._httpClient=e,this._logger=t,this._pollAbort=new hn,this._options=n,this._running=!1,this.onreceive=null,this.onclose=null}async connect(e,t){if(Ct.isRequired(e,"url"),Ct.isRequired(t,"transferFormat"),Ct.isIn(t,ln,"transferFormat"),this._url=e,this._logger.log(bt.Trace,"(LongPolling transport) Connecting."),t===ln.Binary&&"undefined"!=typeof XMLHttpRequest&&"string"!=typeof(new XMLHttpRequest).responseType)throw new Error("Binary protocols over XmlHttpRequest not implementing advanced features are not supported.");const[n,r]=At(),o={[n]:r,...this._options.headers},s={abortSignal:this._pollAbort.signal,headers:o,timeout:1e5,withCredentials:this._options.withCredentials};t===ln.Binary&&(s.responseType="arraybuffer");const i=`${e}&_=${Date.now()}`;this._logger.log(bt.Trace,`(LongPolling transport) polling: ${i}.`);const a=await this._httpClient.get(i,s);200!==a.statusCode?(this._logger.log(bt.Error,`(LongPolling transport) Unexpected response code: ${a.statusCode}.`),this._closeError=new Lt(a.statusText||"",a.statusCode),this._running=!1):this._running=!0,this._receiving=this._poll(this._url,s)}async _poll(e,t){try{for(;this._running;)try{const n=`${e}&_=${Date.now()}`;this._logger.log(bt.Trace,`(LongPolling transport) polling: ${n}.`);const r=await this._httpClient.get(n,t);204===r.statusCode?(this._logger.log(bt.Information,"(LongPolling transport) Poll terminated by server."),this._running=!1):200!==r.statusCode?(this._logger.log(bt.Error,`(LongPolling transport) Unexpected response code: ${r.statusCode}.`),this._closeError=new Lt(r.statusText||"",r.statusCode),this._running=!1):r.content?(this._logger.log(bt.Trace,`(LongPolling transport) data received. ${kt(r.content,this._options.logMessageContent)}.`),this.onreceive&&this.onreceive(r.content)):this._logger.log(bt.Trace,"(LongPolling transport) Poll timed out, reissuing.")}catch(e){this._running?e instanceof $t?this._logger.log(bt.Trace,"(LongPolling transport) Poll timed out, reissuing."):(this._closeError=e,this._running=!1):this._logger.log(bt.Trace,`(LongPolling transport) Poll errored after shutdown: ${e.message}`)}}finally{this._logger.log(bt.Trace,"(LongPolling transport) Polling complete."),this.pollAborted||this._raiseOnClose()}}async send(e){return this._running?Dt(this._logger,"LongPolling",this._httpClient,this._url,e,this._options):Promise.reject(new Error("Cannot send until the transport is connected"))}async stop(){this._logger.log(bt.Trace,"(LongPolling transport) Stopping polling."),this._running=!1,this._pollAbort.abort();try{await this._receiving,this._logger.log(bt.Trace,`(LongPolling transport) sending DELETE request to ${this._url}.`);const e={},[t,n]=At();e[t]=n;const r={headers:{...e,...this._options.headers},timeout:this._options.timeout,withCredentials:this._options.withCredentials};let o;try{await this._httpClient.delete(this._url,r)}catch(e){o=e}o?o instanceof Lt&&(404===o.statusCode?this._logger.log(bt.Trace,"(LongPolling transport) A 404 response was returned from sending a DELETE request."):this._logger.log(bt.Trace,`(LongPolling transport) Error sending a DELETE request: ${o}`)):this._logger.log(bt.Trace,"(LongPolling transport) DELETE request accepted.")}finally{this._logger.log(bt.Trace,"(LongPolling transport) Stop finished."),this._raiseOnClose()}}_raiseOnClose(){if(this.onclose){let e="(LongPolling transport) Firing onclose event.";this._closeError&&(e+=" Error: "+this._closeError),this._logger.log(bt.Trace,e),this.onclose(this._closeError)}}}class un{constructor(e,t,n,r){this._httpClient=e,this._accessToken=t,this._logger=n,this._options=r,this.onreceive=null,this.onclose=null}async connect(e,t){return Ct.isRequired(e,"url"),Ct.isRequired(t,"transferFormat"),Ct.isIn(t,ln,"transferFormat"),this._logger.log(bt.Trace,"(SSE transport) Connecting."),this._url=e,this._accessToken&&(e+=(e.indexOf("?")<0?"?":"&")+`access_token=${encodeURIComponent(this._accessToken)}`),new Promise(((n,r)=>{let o,s=!1;if(t===ln.Text){if(It.isBrowser||It.isWebWorker)o=new this._options.EventSource(e,{withCredentials:this._options.withCredentials});else{const t=this._httpClient.getCookieString(e),n={};n.Cookie=t;const[r,s]=At();n[r]=s,o=new this._options.EventSource(e,{withCredentials:this._options.withCredentials,headers:{...n,...this._options.headers}})}try{o.onmessage=e=>{if(this.onreceive)try{this._logger.log(bt.Trace,`(SSE transport) data received. ${kt(e.data,this._options.logMessageContent)}.`),this.onreceive(e.data)}catch(e){return void this._close(e)}},o.onerror=e=>{s?this._close():r(new Error("EventSource failed to connect. The connection could not be found on the server, either the connection ID is not present on the server, or a proxy is refusing/buffering the connection. If you have multiple servers check that sticky sessions are enabled."))},o.onopen=()=>{this._logger.log(bt.Information,`SSE connected to ${this._url}`),this._eventSource=o,s=!0,n()}}catch(e){return void r(e)}}else r(new Error("The Server-Sent Events transport only supports the 'Text' transfer format"))}))}async send(e){return this._eventSource?Dt(this._logger,"SSE",this._httpClient,this._url,e,this._options):Promise.reject(new Error("Cannot send until the transport is connected"))}stop(){return this._close(),Promise.resolve()}_close(e){this._eventSource&&(this._eventSource.close(),this._eventSource=void 0,this.onclose&&this.onclose(e))}}class pn{constructor(e,t,n,r,o,s){this._logger=n,this._accessTokenFactory=t,this._logMessageContent=r,this._webSocketConstructor=o,this._httpClient=e,this.onreceive=null,this.onclose=null,this._headers=s}async connect(e,t){let n;return Ct.isRequired(e,"url"),Ct.isRequired(t,"transferFormat"),Ct.isIn(t,ln,"transferFormat"),this._logger.log(bt.Trace,"(WebSockets transport) Connecting."),this._accessTokenFactory&&(n=await this._accessTokenFactory()),new Promise(((r,o)=>{let s;e=e.replace(/^http/,"ws");const i=this._httpClient.getCookieString(e);let a=!1;if(It.isReactNative){const t={},[r,o]=At();t[r]=o,n&&(t[Zt.Authorization]=`Bearer ${n}`),i&&(t[Zt.Cookie]=i),s=new this._webSocketConstructor(e,void 0,{headers:{...t,...this._headers}})}else n&&(e+=(e.indexOf("?")<0?"?":"&")+`access_token=${encodeURIComponent(n)}`);s||(s=new this._webSocketConstructor(e)),t===ln.Binary&&(s.binaryType="arraybuffer"),s.onopen=t=>{this._logger.log(bt.Information,`WebSocket connected to ${e}.`),this._webSocket=s,a=!0,r()},s.onerror=e=>{let t=null;t="undefined"!=typeof ErrorEvent&&e instanceof ErrorEvent?e.error:"There was an error with the transport",this._logger.log(bt.Information,`(WebSockets transport) ${t}.`)},s.onmessage=e=>{if(this._logger.log(bt.Trace,`(WebSockets transport) data received. ${kt(e.data,this._logMessageContent)}.`),this.onreceive)try{this.onreceive(e.data)}catch(e){return void this._close(e)}},s.onclose=e=>{if(a)this._close(e);else{let t=null;t="undefined"!=typeof ErrorEvent&&e instanceof ErrorEvent?e.error:"WebSocket failed to connect. The connection could not be found on the server, either the endpoint may not be a SignalR endpoint, the connection ID is not present on the server, or there is a proxy blocking WebSockets. If you have multiple servers check that sticky sessions are enabled.",o(new Error(t))}}}))}send(e){return this._webSocket&&this._webSocket.readyState===this._webSocketConstructor.OPEN?(this._logger.log(bt.Trace,`(WebSockets transport) sending data. ${kt(e,this._logMessageContent)}.`),this._webSocket.send(e),Promise.resolve()):Promise.reject("WebSocket is not in the OPEN state")}stop(){return this._webSocket&&this._close(void 0),Promise.resolve()}_close(e){this._webSocket&&(this._webSocket.onclose=()=>{},this._webSocket.onmessage=()=>{},this._webSocket.onerror=()=>{},this._webSocket.close(),this._webSocket=void 0),this._logger.log(bt.Trace,"(WebSockets transport) socket closed."),this.onclose&&(!this._isCloseEvent(e)||!1!==e.wasClean&&1e3===e.code?e instanceof Error?this.onclose(e):this.onclose():this.onclose(new Error(`WebSocket closed with status code: ${e.code} (${e.reason||"no reason given"}).`)))}_isCloseEvent(e){return e&&"boolean"==typeof e.wasClean&&"number"==typeof e.code}}class fn{constructor(e,t={}){if(this._stopPromiseResolver=()=>{},this.features={},this._negotiateVersion=1,Ct.isRequired(e,"url"),this._logger=function(e){return void 0===e?new xt(bt.Information):null===e?St.instance:void 0!==e.log?e:new xt(e)}(t.logger),this.baseUrl=this._resolveUrl(e),(t=t||{}).logMessageContent=void 0!==t.logMessageContent&&t.logMessageContent,"boolean"!=typeof t.withCredentials&&void 0!==t.withCredentials)throw new Error("withCredentials option was not a 'boolean' or 'undefined' value");t.withCredentials=void 0===t.withCredentials||t.withCredentials,t.timeout=void 0===t.timeout?1e5:t.timeout,"undefined"==typeof WebSocket||t.WebSocket||(t.WebSocket=WebSocket),"undefined"==typeof EventSource||t.EventSource||(t.EventSource=EventSource),this._httpClient=new nn(t.httpClient||new an(this._logger),t.accessTokenFactory),this._connectionState="Disconnected",this._connectionStarted=!1,this._options=t,this.onreceive=null,this.onclose=null}async start(e){if(e=e||ln.Binary,Ct.isIn(e,ln,"transferFormat"),this._logger.log(bt.Debug,`Starting connection with transfer format '${ln[e]}'.`),"Disconnected"!==this._connectionState)return Promise.reject(new Error("Cannot start an HttpConnection that is not in the 'Disconnected' state."));if(this._connectionState="Connecting",this._startInternalPromise=this._startInternal(e),await this._startInternalPromise,"Disconnecting"===this._connectionState){const e="Failed to start the HttpConnection before stop() was called.";return this._logger.log(bt.Error,e),await this._stopPromise,Promise.reject(new Ot(e))}if("Connected"!==this._connectionState){const e="HttpConnection.startInternal completed gracefully but didn't enter the connection into the connected state!";return this._logger.log(bt.Error,e),Promise.reject(new Ot(e))}this._connectionStarted=!0}send(e){return"Connected"!==this._connectionState?Promise.reject(new Error("Cannot send data if the connection is not in the 'Connected' State.")):(this._sendQueue||(this._sendQueue=new gn(this.transport)),this._sendQueue.send(e))}async stop(e){return"Disconnected"===this._connectionState?(this._logger.log(bt.Debug,`Call to HttpConnection.stop(${e}) ignored because the connection is already in the disconnected state.`),Promise.resolve()):"Disconnecting"===this._connectionState?(this._logger.log(bt.Debug,`Call to HttpConnection.stop(${e}) ignored because the connection is already in the disconnecting state.`),this._stopPromise):(this._connectionState="Disconnecting",this._stopPromise=new Promise((e=>{this._stopPromiseResolver=e})),await this._stopInternal(e),void await this._stopPromise)}async _stopInternal(e){this._stopError=e;try{await this._startInternalPromise}catch(e){}if(this.transport){try{await this.transport.stop()}catch(e){this._logger.log(bt.Error,`HttpConnection.transport.stop() threw error '${e}'.`),this._stopConnection()}this.transport=void 0}else this._logger.log(bt.Debug,"HttpConnection.transport is undefined in HttpConnection.stop() because start() failed.")}async _startInternal(e){let t=this.baseUrl;this._accessTokenFactory=this._options.accessTokenFactory,this._httpClient._accessTokenFactory=this._accessTokenFactory;try{if(this._options.skipNegotiation){if(this._options.transport!==cn.WebSockets)throw new Error("Negotiation can only be skipped when using the WebSocket transport directly.");this.transport=this._constructTransport(cn.WebSockets),await this._startTransport(t,e)}else{let n=null,r=0;do{if(n=await this._getNegotiationResponse(t),"Disconnecting"===this._connectionState||"Disconnected"===this._connectionState)throw new Ot("The connection was stopped during negotiation.");if(n.error)throw new Error(n.error);if(n.ProtocolVersion)throw new Error("Detected a connection attempt to an ASP.NET SignalR Server. This client only supports connecting to an ASP.NET Core SignalR Server. See https://aka.ms/signalr-core-differences for details.");if(n.url&&(t=n.url),n.accessToken){const e=n.accessToken;this._accessTokenFactory=()=>e,this._httpClient._accessToken=e,this._httpClient._accessTokenFactory=void 0}r++}while(n.url&&r<100);if(100===r&&n.url)throw new Error("Negotiate redirection limit exceeded.");await this._createTransport(t,this._options.transport,n,e)}this.transport instanceof dn&&(this.features.inherentKeepAlive=!0),"Connecting"===this._connectionState&&(this._logger.log(bt.Debug,"The HttpConnection connected successfully."),this._connectionState="Connected")}catch(e){return this._logger.log(bt.Error,"Failed to start the connection: "+e),this._connectionState="Disconnected",this.transport=void 0,this._stopPromiseResolver(),Promise.reject(e)}}async _getNegotiationResponse(e){const t={},[n,r]=At();t[n]=r;const o=this._resolveNegotiateUrl(e);this._logger.log(bt.Debug,`Sending negotiation request: ${o}.`);try{const e=await this._httpClient.post(o,{content:"",headers:{...t,...this._options.headers},timeout:this._options.timeout,withCredentials:this._options.withCredentials});if(200!==e.statusCode)return Promise.reject(new Error(`Unexpected status code returned from negotiate '${e.statusCode}'`));const n=JSON.parse(e.content);return(!n.negotiateVersion||n.negotiateVersion<1)&&(n.connectionToken=n.connectionId),n.useStatefulReconnect&&!0!==this._options._useStatefulReconnect?Promise.reject(new Wt("Client didn't negotiate Stateful Reconnect but the server did.")):n}catch(e){let t="Failed to complete negotiation with the server: "+e;return e instanceof Lt&&404===e.statusCode&&(t+=" Either this is not a SignalR endpoint or there is a proxy blocking the connection."),this._logger.log(bt.Error,t),Promise.reject(new Wt(t))}}_createConnectUrl(e,t){return t?e+(-1===e.indexOf("?")?"?":"&")+`id=${t}`:e}async _createTransport(e,t,n,r){let o=this._createConnectUrl(e,n.connectionToken);if(this._isITransport(t))return this._logger.log(bt.Debug,"Connection was provided an instance of ITransport, using that directly."),this.transport=t,await this._startTransport(o,r),void(this.connectionId=n.connectionId);const s=[],i=n.availableTransports||[];let a=n;for(const n of i){const i=this._resolveTransportOrError(n,t,r,!0===(null==a?void 0:a.useStatefulReconnect));if(i instanceof Error)s.push(`${n.transport} failed:`),s.push(i);else if(this._isITransport(i)){if(this.transport=i,!a){try{a=await this._getNegotiationResponse(e)}catch(e){return Promise.reject(e)}o=this._createConnectUrl(e,a.connectionToken)}try{return await this._startTransport(o,r),void(this.connectionId=a.connectionId)}catch(e){if(this._logger.log(bt.Error,`Failed to start the transport '${n.transport}': ${e}`),a=void 0,s.push(new jt(`${n.transport} failed: ${e}`,cn[n.transport])),"Connecting"!==this._connectionState){const e="Failed to select transport before stop() was called.";return this._logger.log(bt.Debug,e),Promise.reject(new Ot(e))}}}}return s.length>0?Promise.reject(new zt(`Unable to connect to the server with any of the available transports. ${s.join(" ")}`,s)):Promise.reject(new Error("None of the transports supported by the client are supported by the server."))}_constructTransport(e){switch(e){case cn.WebSockets:if(!this._options.WebSocket)throw new Error("'WebSocket' is not supported in your environment.");return new pn(this._httpClient,this._accessTokenFactory,this._logger,this._options.logMessageContent,this._options.WebSocket,this._options.headers||{});case cn.ServerSentEvents:if(!this._options.EventSource)throw new Error("'EventSource' is not supported in your environment.");return new un(this._httpClient,this._httpClient._accessToken,this._logger,this._options);case cn.LongPolling:return new dn(this._httpClient,this._logger,this._options);default:throw new Error(`Unknown transport: ${e}.`)}}_startTransport(e,t){return this.transport.onreceive=this.onreceive,this.features.reconnect?this.transport.onclose=async n=>{let r=!1;if(this.features.reconnect){try{this.features.disconnected(),await this.transport.connect(e,t),await this.features.resend()}catch{r=!0}r&&this._stopConnection(n)}else this._stopConnection(n)}:this.transport.onclose=e=>this._stopConnection(e),this.transport.connect(e,t)}_resolveTransportOrError(e,t,n,r){const o=cn[e.transport];if(null==o)return this._logger.log(bt.Debug,`Skipping transport '${e.transport}' because it is not supported by this client.`),new Error(`Skipping transport '${e.transport}' because it is not supported by this client.`);if(!function(e,t){return!e||0!=(t&e)}(t,o))return this._logger.log(bt.Debug,`Skipping transport '${cn[o]}' because it was disabled by the client.`),new Ht(`'${cn[o]}' is disabled by the client.`,o);if(!(e.transferFormats.map((e=>ln[e])).indexOf(n)>=0))return this._logger.log(bt.Debug,`Skipping transport '${cn[o]}' because it does not support the requested transfer format '${ln[n]}'.`),new Error(`'${cn[o]}' does not support ${ln[n]}.`);if(o===cn.WebSockets&&!this._options.WebSocket||o===cn.ServerSentEvents&&!this._options.EventSource)return this._logger.log(bt.Debug,`Skipping transport '${cn[o]}' because it is not supported in your environment.'`),new Ft(`'${cn[o]}' is not supported in your environment.`,o);this._logger.log(bt.Debug,`Selecting transport '${cn[o]}'.`);try{return this.features.reconnect=o===cn.WebSockets?r:void 0,this._constructTransport(o)}catch(e){return e}}_isITransport(e){return e&&"object"==typeof e&&"connect"in e}_stopConnection(e){if(this._logger.log(bt.Debug,`HttpConnection.stopConnection(${e}) called while in state ${this._connectionState}.`),this.transport=void 0,e=this._stopError||e,this._stopError=void 0,"Disconnected"!==this._connectionState){if("Connecting"===this._connectionState)throw this._logger.log(bt.Warning,`Call to HttpConnection.stopConnection(${e}) was ignored because the connection is still in the connecting state.`),new Error(`HttpConnection.stopConnection(${e}) was called while the connection is still in the connecting state.`);if("Disconnecting"===this._connectionState&&this._stopPromiseResolver(),e?this._logger.log(bt.Error,`Connection disconnected with error '${e}'.`):this._logger.log(bt.Information,"Connection disconnected."),this._sendQueue&&(this._sendQueue.stop().catch((e=>{this._logger.log(bt.Error,`TransportSendQueue.stop() threw error '${e}'.`)})),this._sendQueue=void 0),this.connectionId=void 0,this._connectionState="Disconnected",this._connectionStarted){this._connectionStarted=!1;try{this.onclose&&this.onclose(e)}catch(t){this._logger.log(bt.Error,`HttpConnection.onclose(${e}) threw error '${t}'.`)}}}else this._logger.log(bt.Debug,`Call to HttpConnection.stopConnection(${e}) was ignored because the connection is already in the disconnected state.`)}_resolveUrl(e){if(0===e.lastIndexOf("https://",0)||0===e.lastIndexOf("http://",0))return e;if(!It.isBrowser)throw new Error(`Cannot resolve '${e}'.`);const t=window.document.createElement("a");return t.href=e,this._logger.log(bt.Information,`Normalizing '${e}' to '${t.href}'.`),t.href}_resolveNegotiateUrl(e){const t=new URL(e);t.pathname.endsWith("/")?t.pathname+="negotiate":t.pathname+="/negotiate";const n=new URLSearchParams(t.searchParams);return n.has("negotiateVersion")||n.append("negotiateVersion",this._negotiateVersion.toString()),n.has("useStatefulReconnect")?"true"===n.get("useStatefulReconnect")&&(this._options._useStatefulReconnect=!0):!0===this._options._useStatefulReconnect&&n.append("useStatefulReconnect","true"),t.search=n.toString(),t.toString()}}class gn{constructor(e){this._transport=e,this._buffer=[],this._executing=!0,this._sendBufferedData=new mn,this._transportResult=new mn,this._sendLoopPromise=this._sendLoop()}send(e){return this._bufferData(e),this._transportResult||(this._transportResult=new mn),this._transportResult.promise}stop(){return this._executing=!1,this._sendBufferedData.resolve(),this._sendLoopPromise}_bufferData(e){if(this._buffer.length&&typeof this._buffer[0]!=typeof e)throw new Error(`Expected data to be of type ${typeof this._buffer} but was of type ${typeof e}`);this._buffer.push(e),this._sendBufferedData.resolve()}async _sendLoop(){for(;;){if(await this._sendBufferedData.promise,!this._executing){this._transportResult&&this._transportResult.reject("Connection stopped.");break}this._sendBufferedData=new mn;const e=this._transportResult;this._transportResult=void 0;const t="string"==typeof this._buffer[0]?this._buffer.join(""):gn._concatBuffers(this._buffer);this._buffer.length=0;try{await this._transport.send(t),e.resolve()}catch(t){e.reject(t)}}}static _concatBuffers(e){const t=e.map((e=>e.byteLength)).reduce(((e,t)=>e+t)),n=new Uint8Array(t);let r=0;for(const t of e)n.set(new Uint8Array(t),r),r+=t.byteLength;return n.buffer}}class mn{constructor(){this.promise=new Promise(((e,t)=>[this._resolver,this._rejecter]=[e,t]))}resolve(){this._resolver()}reject(e){this._rejecter(e)}}class vn{constructor(){this.name="json",this.version=2,this.transferFormat=ln.Text}parseMessages(e,t){if("string"!=typeof e)throw new Error("Invalid input for JSON hub protocol. Expected a string.");if(!e)return[];null===t&&(t=St.instance);const n=_t.parse(e),r=[];for(const e of n){const n=JSON.parse(e);if("number"!=typeof n.type)throw new Error("Invalid payload.");switch(n.type){case qt.Invocation:this._isInvocationMessage(n);break;case qt.StreamItem:this._isStreamItemMessage(n);break;case qt.Completion:this._isCompletionMessage(n);break;case qt.Ping:case qt.Close:break;case qt.Ack:this._isAckMessage(n);break;case qt.Sequence:this._isSequenceMessage(n);break;default:t.log(bt.Information,"Unknown message type '"+n.type+"' ignored.");continue}r.push(n)}return r}writeMessage(e){return _t.write(JSON.stringify(e))}_isInvocationMessage(e){this._assertNotEmptyString(e.target,"Invalid payload for Invocation message."),void 0!==e.invocationId&&this._assertNotEmptyString(e.invocationId,"Invalid payload for Invocation message.")}_isStreamItemMessage(e){if(this._assertNotEmptyString(e.invocationId,"Invalid payload for StreamItem message."),void 0===e.item)throw new Error("Invalid payload for StreamItem message.")}_isCompletionMessage(e){if(e.result&&e.error)throw new Error("Invalid payload for Completion message.");!e.result&&e.error&&this._assertNotEmptyString(e.error,"Invalid payload for Completion message."),this._assertNotEmptyString(e.invocationId,"Invalid payload for Completion message.")}_isAckMessage(e){if("number"!=typeof e.sequenceId)throw new Error("Invalid SequenceId for Ack message.")}_isSequenceMessage(e){if("number"!=typeof e.sequenceId)throw new Error("Invalid SequenceId for Sequence message.")}_assertNotEmptyString(e,t){if("string"!=typeof e||""===e)throw new Error(t)}}const yn={trace:bt.Trace,debug:bt.Debug,info:bt.Information,information:bt.Information,warn:bt.Warning,warning:bt.Warning,error:bt.Error,critical:bt.Critical,none:bt.None};class wn{configureLogging(e){if(Ct.isRequired(e,"logging"),function(e){return void 0!==e.log}(e))this.logger=e;else if("string"==typeof e){const t=function(e){const t=yn[e.toLowerCase()];if(void 0!==t)return t;throw new Error(`Unknown log level: ${e}`)}(e);this.logger=new xt(t)}else this.logger=new xt(e);return this}withUrl(e,t){return Ct.isRequired(e,"url"),Ct.isNotEmpty(e,"url"),this.url=e,this.httpConnectionOptions="object"==typeof t?{...this.httpConnectionOptions,...t}:{...this.httpConnectionOptions,transport:t},this}withHubProtocol(e){return Ct.isRequired(e,"protocol"),this.protocol=e,this}withAutomaticReconnect(e){if(this.reconnectPolicy)throw new Error("A reconnectPolicy has already been set.");return e?Array.isArray(e)?this.reconnectPolicy=new Qt(e):this.reconnectPolicy=e:this.reconnectPolicy=new Qt,this}withServerTimeout(e){return Ct.isRequired(e,"milliseconds"),this._serverTimeoutInMilliseconds=e,this}withKeepAliveInterval(e){return Ct.isRequired(e,"milliseconds"),this._keepAliveIntervalInMilliseconds=e,this}withStatefulReconnect(e){return void 0===this.httpConnectionOptions&&(this.httpConnectionOptions={}),this.httpConnectionOptions._useStatefulReconnect=!0,this._statefulReconnectBufferSize=null==e?void 0:e.bufferSize,this}build(){const e=this.httpConnectionOptions||{};if(void 0===e.logger&&(e.logger=this.logger),!this.url)throw new Error("The 'HubConnectionBuilder.withUrl' method must be called before building the connection.");const t=new fn(this.url,e);return Yt.create(t,this.logger||St.instance,this.protocol||new vn,this.reconnectPolicy,this._serverTimeoutInMilliseconds,this._keepAliveIntervalInMilliseconds,this._statefulReconnectBufferSize)}}var _n;!function(e){e[e.Default=0]="Default",e[e.Server=1]="Server",e[e.WebAssembly=2]="WebAssembly",e[e.WebView=3]="WebView"}(_n||(_n={}));var bn,Sn,En,Cn=4294967295;function In(e,t,n){var r=Math.floor(n/4294967296),o=n;e.setUint32(t,r),e.setUint32(t+4,o)}function kn(e,t){return 4294967296*e.getInt32(t)+e.getUint32(t+4)}var Tn=("undefined"==typeof process||"never"!==(null===(bn=null===process||void 0===process?void 0:process.env)||void 0===bn?void 0:bn.TEXT_ENCODING))&&"undefined"!=typeof TextEncoder&&"undefined"!=typeof TextDecoder;function Dn(e){for(var t=e.length,n=0,r=0;r=55296&&o<=56319&&r65535&&(h-=65536,s.push(h>>>10&1023|55296),h=56320|1023&h),s.push(h)}else s.push(a);s.length>=4096&&(i+=String.fromCharCode.apply(String,s),s.length=0)}return s.length>0&&(i+=String.fromCharCode.apply(String,s)),i}var Nn,Un=Tn?new TextDecoder:null,Mn=Tn?"undefined"!=typeof process&&"force"!==(null===(En=null===process||void 0===process?void 0:process.env)||void 0===En?void 0:En.TEXT_DECODER)?200:0:Cn,Bn=function(e,t){this.type=e,this.data=t},Ln=(Nn=function(e,t){return Nn=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},Nn(e,t)},function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function n(){this.constructor=e}Nn(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}),$n=function(e){function t(n){var r=e.call(this,n)||this,o=Object.create(t.prototype);return Object.setPrototypeOf(r,o),Object.defineProperty(r,"name",{configurable:!0,enumerable:!1,value:t.name}),r}return Ln(t,e),t}(Error),On={type:-1,encode:function(e){var t,n,r,o;return e instanceof Date?function(e){var t,n=e.sec,r=e.nsec;if(n>=0&&r>=0&&n<=17179869183){if(0===r&&n<=4294967295){var o=new Uint8Array(4);return(t=new DataView(o.buffer)).setUint32(0,n),o}var s=n/4294967296,i=4294967295&n;return o=new Uint8Array(8),(t=new DataView(o.buffer)).setUint32(0,r<<2|3&s),t.setUint32(4,i),o}return o=new Uint8Array(12),(t=new DataView(o.buffer)).setUint32(0,r),In(t,4,n),o}((r=1e6*((t=e.getTime())-1e3*(n=Math.floor(t/1e3))),{sec:n+(o=Math.floor(r/1e9)),nsec:r-1e9*o})):null},decode:function(e){var t=function(e){var t=new DataView(e.buffer,e.byteOffset,e.byteLength);switch(e.byteLength){case 4:return{sec:t.getUint32(0),nsec:0};case 8:var n=t.getUint32(0);return{sec:4294967296*(3&n)+t.getUint32(4),nsec:n>>>2};case 12:return{sec:kn(t,4),nsec:t.getUint32(0)};default:throw new $n("Unrecognized data size for timestamp (expected 4, 8, or 12): ".concat(e.length))}}(e);return new Date(1e3*t.sec+t.nsec/1e6)}},Fn=function(){function e(){this.builtInEncoders=[],this.builtInDecoders=[],this.encoders=[],this.decoders=[],this.register(On)}return e.prototype.register=function(e){var t=e.type,n=e.encode,r=e.decode;if(t>=0)this.encoders[t]=n,this.decoders[t]=r;else{var o=1+t;this.builtInEncoders[o]=n,this.builtInDecoders[o]=r}},e.prototype.tryToEncode=function(e,t){for(var n=0;nthis.maxDepth)throw new Error("Too deep objects in depth ".concat(t));null==e?this.encodeNil():"boolean"==typeof e?this.encodeBoolean(e):"number"==typeof e?this.encodeNumber(e):"string"==typeof e?this.encodeString(e):this.encodeObject(e,t)},e.prototype.ensureBufferSizeToWrite=function(e){var t=this.pos+e;this.view.byteLength=0?e<128?this.writeU8(e):e<256?(this.writeU8(204),this.writeU8(e)):e<65536?(this.writeU8(205),this.writeU16(e)):e<4294967296?(this.writeU8(206),this.writeU32(e)):(this.writeU8(207),this.writeU64(e)):e>=-32?this.writeU8(224|e+32):e>=-128?(this.writeU8(208),this.writeI8(e)):e>=-32768?(this.writeU8(209),this.writeI16(e)):e>=-2147483648?(this.writeU8(210),this.writeI32(e)):(this.writeU8(211),this.writeI64(e)):this.forceFloat32?(this.writeU8(202),this.writeF32(e)):(this.writeU8(203),this.writeF64(e))},e.prototype.writeStringHeader=function(e){if(e<32)this.writeU8(160+e);else if(e<256)this.writeU8(217),this.writeU8(e);else if(e<65536)this.writeU8(218),this.writeU16(e);else{if(!(e<4294967296))throw new Error("Too long string: ".concat(e," bytes in UTF-8"));this.writeU8(219),this.writeU32(e)}},e.prototype.encodeString=function(e){if(e.length>xn){var t=Dn(e);this.ensureBufferSizeToWrite(5+t),this.writeStringHeader(t),An(e,this.bytes,this.pos),this.pos+=t}else t=Dn(e),this.ensureBufferSizeToWrite(5+t),this.writeStringHeader(t),function(e,t,n){for(var r=e.length,o=n,s=0;s>6&31|192;else{if(i>=55296&&i<=56319&&s>12&15|224,t[o++]=i>>6&63|128):(t[o++]=i>>18&7|240,t[o++]=i>>12&63|128,t[o++]=i>>6&63|128)}t[o++]=63&i|128}else t[o++]=i}}(e,this.bytes,this.pos),this.pos+=t},e.prototype.encodeObject=function(e,t){var n=this.extensionCodec.tryToEncode(e,this.context);if(null!=n)this.encodeExtension(n);else if(Array.isArray(e))this.encodeArray(e,t);else if(ArrayBuffer.isView(e))this.encodeBinary(e);else{if("object"!=typeof e)throw new Error("Unrecognized object: ".concat(Object.prototype.toString.apply(e)));this.encodeMap(e,t)}},e.prototype.encodeBinary=function(e){var t=e.byteLength;if(t<256)this.writeU8(196),this.writeU8(t);else if(t<65536)this.writeU8(197),this.writeU16(t);else{if(!(t<4294967296))throw new Error("Too large binary: ".concat(t));this.writeU8(198),this.writeU32(t)}var n=Hn(e);this.writeU8a(n)},e.prototype.encodeArray=function(e,t){var n=e.length;if(n<16)this.writeU8(144+n);else if(n<65536)this.writeU8(220),this.writeU16(n);else{if(!(n<4294967296))throw new Error("Too large array: ".concat(n));this.writeU8(221),this.writeU32(n)}for(var r=0,o=e;r0&&e<=this.maxKeyLength},e.prototype.find=function(e,t,n){e:for(var r=0,o=this.caches[n-1];r=this.maxLengthPerKey?n[Math.random()*n.length|0]=r:n.push(r)},e.prototype.decode=function(e,t,n){var r=this.find(e,t,n);if(null!=r)return this.hit++,r;this.miss++;var o=Pn(e,t,n),s=Uint8Array.prototype.slice.call(e,t,t+n);return this.store(s,o),o},e}(),qn=function(e,t){var n,r,o,s,i={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return s={next:a(0),throw:a(1),return:a(2)},"function"==typeof Symbol&&(s[Symbol.iterator]=function(){return this}),s;function a(s){return function(a){return function(s){if(n)throw new TypeError("Generator is already executing.");for(;i;)try{if(n=1,r&&(o=2&s[0]?r.return:s[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,s[1])).done)return o;switch(r=0,o&&(s=[2&s[0],o.value]),s[0]){case 0:case 1:o=s;break;case 4:return i.label++,{value:s[1],done:!1};case 5:i.label++,r=s[1],s=[0];continue;case 7:s=i.ops.pop(),i.trys.pop();continue;default:if(!((o=(o=i.trys).length>0&&o[o.length-1])||6!==s[0]&&2!==s[0])){i=0;continue}if(3===s[0]&&(!o||s[1]>o[0]&&s[1]=e},e.prototype.createExtraByteError=function(e){var t=this.view,n=this.pos;return new RangeError("Extra ".concat(t.byteLength-n," of ").concat(t.byteLength," byte(s) found at buffer[").concat(e,"]"))},e.prototype.decode=function(e){this.reinitializeState(),this.setBuffer(e);var t=this.doDecodeSync();if(this.hasRemaining(1))throw this.createExtraByteError(this.pos);return t},e.prototype.decodeMulti=function(e){return qn(this,(function(t){switch(t.label){case 0:this.reinitializeState(),this.setBuffer(e),t.label=1;case 1:return this.hasRemaining(1)?[4,this.doDecodeSync()]:[3,3];case 2:return t.sent(),[3,1];case 3:return[2]}}))},e.prototype.decodeAsync=function(e){var t,n,r,o,s,i,a;return s=this,void 0,a=function(){var s,i,a,c,l,h,d,u;return qn(this,(function(p){switch(p.label){case 0:s=!1,p.label=1;case 1:p.trys.push([1,6,7,12]),t=Jn(e),p.label=2;case 2:return[4,t.next()];case 3:if((n=p.sent()).done)return[3,5];if(a=n.value,s)throw this.createExtraByteError(this.totalPos);this.appendBuffer(a);try{i=this.doDecodeSync(),s=!0}catch(e){if(!(e instanceof Yn))throw e}this.totalPos+=this.pos,p.label=4;case 4:return[3,2];case 5:return[3,12];case 6:return c=p.sent(),r={error:c},[3,12];case 7:return p.trys.push([7,,10,11]),n&&!n.done&&(o=t.return)?[4,o.call(t)]:[3,9];case 8:p.sent(),p.label=9;case 9:return[3,11];case 10:if(r)throw r.error;return[7];case 11:return[7];case 12:if(s){if(this.hasRemaining(1))throw this.createExtraByteError(this.totalPos);return[2,i]}throw h=(l=this).headByte,d=l.pos,u=l.totalPos,new RangeError("Insufficient data in parsing ".concat(Wn(h)," at ").concat(u," (").concat(d," in the current buffer)"))}}))},new((i=void 0)||(i=Promise))((function(e,t){function n(e){try{o(a.next(e))}catch(e){t(e)}}function r(e){try{o(a.throw(e))}catch(e){t(e)}}function o(t){var o;t.done?e(t.value):(o=t.value,o instanceof i?o:new i((function(e){e(o)}))).then(n,r)}o((a=a.apply(s,[])).next())}))},e.prototype.decodeArrayStream=function(e){return this.decodeMultiAsync(e,!0)},e.prototype.decodeStream=function(e){return this.decodeMultiAsync(e,!1)},e.prototype.decodeMultiAsync=function(e,t){return function(n,r,o){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var s,i=function(){var n,r,o,s,i,a,c,l,h;return qn(this,(function(d){switch(d.label){case 0:n=t,r=-1,d.label=1;case 1:d.trys.push([1,13,14,19]),o=Jn(e),d.label=2;case 2:return[4,Kn(o.next())];case 3:if((s=d.sent()).done)return[3,12];if(i=s.value,t&&0===r)throw this.createExtraByteError(this.totalPos);this.appendBuffer(i),n&&(r=this.readArraySize(),n=!1,this.complete()),d.label=4;case 4:d.trys.push([4,9,,10]),d.label=5;case 5:return[4,Kn(this.doDecodeSync())];case 6:return[4,d.sent()];case 7:return d.sent(),0==--r?[3,8]:[3,5];case 8:return[3,10];case 9:if(!((a=d.sent())instanceof Yn))throw a;return[3,10];case 10:this.totalPos+=this.pos,d.label=11;case 11:return[3,2];case 12:return[3,19];case 13:return c=d.sent(),l={error:c},[3,19];case 14:return d.trys.push([14,,17,18]),s&&!s.done&&(h=o.return)?[4,Kn(h.call(o))]:[3,16];case 15:d.sent(),d.label=16;case 16:return[3,18];case 17:if(l)throw l.error;return[7];case 18:return[7];case 19:return[2]}}))}.apply(n,r||[]),a=[];return s={},c("next"),c("throw"),c("return"),s[Symbol.asyncIterator]=function(){return this},s;function c(e){i[e]&&(s[e]=function(t){return new Promise((function(n,r){a.push([e,t,n,r])>1||l(e,t)}))})}function l(e,t){try{(n=i[e](t)).value instanceof Kn?Promise.resolve(n.value.v).then(h,d):u(a[0][2],n)}catch(e){u(a[0][3],e)}var n}function h(e){l("next",e)}function d(e){l("throw",e)}function u(e,t){e(t),a.shift(),a.length&&l(a[0][0],a[0][1])}}(this,arguments)},e.prototype.doDecodeSync=function(){e:for(;;){var e=this.readHeadByte(),t=void 0;if(e>=224)t=e-256;else if(e<192)if(e<128)t=e;else if(e<144){if(0!=(r=e-128)){this.pushMapState(r),this.complete();continue e}t={}}else if(e<160){if(0!=(r=e-144)){this.pushArrayState(r),this.complete();continue e}t=[]}else{var n=e-160;t=this.decodeUtf8String(n,0)}else if(192===e)t=null;else if(194===e)t=!1;else if(195===e)t=!0;else if(202===e)t=this.readF32();else if(203===e)t=this.readF64();else if(204===e)t=this.readU8();else if(205===e)t=this.readU16();else if(206===e)t=this.readU32();else if(207===e)t=this.readU64();else if(208===e)t=this.readI8();else if(209===e)t=this.readI16();else if(210===e)t=this.readI32();else if(211===e)t=this.readI64();else if(217===e)n=this.lookU8(),t=this.decodeUtf8String(n,1);else if(218===e)n=this.lookU16(),t=this.decodeUtf8String(n,2);else if(219===e)n=this.lookU32(),t=this.decodeUtf8String(n,4);else if(220===e){if(0!==(r=this.readU16())){this.pushArrayState(r),this.complete();continue e}t=[]}else if(221===e){if(0!==(r=this.readU32())){this.pushArrayState(r),this.complete();continue e}t=[]}else if(222===e){if(0!==(r=this.readU16())){this.pushMapState(r),this.complete();continue e}t={}}else if(223===e){if(0!==(r=this.readU32())){this.pushMapState(r),this.complete();continue e}t={}}else if(196===e){var r=this.lookU8();t=this.decodeBinary(r,1)}else if(197===e)r=this.lookU16(),t=this.decodeBinary(r,2);else if(198===e)r=this.lookU32(),t=this.decodeBinary(r,4);else if(212===e)t=this.decodeExtension(1,0);else if(213===e)t=this.decodeExtension(2,0);else if(214===e)t=this.decodeExtension(4,0);else if(215===e)t=this.decodeExtension(8,0);else if(216===e)t=this.decodeExtension(16,0);else if(199===e)r=this.lookU8(),t=this.decodeExtension(r,1);else if(200===e)r=this.lookU16(),t=this.decodeExtension(r,2);else{if(201!==e)throw new $n("Unrecognized type byte: ".concat(Wn(e)));r=this.lookU32(),t=this.decodeExtension(r,4)}this.complete();for(var o=this.stack;o.length>0;){var s=o[o.length-1];if(0===s.type){if(s.array[s.position]=t,s.position++,s.position!==s.size)continue e;o.pop(),t=s.array}else{if(1===s.type){if("string"!=(i=typeof t)&&"number"!==i)throw new $n("The type of key must be string or number but "+typeof t);if("__proto__"===t)throw new $n("The key __proto__ is not allowed");s.key=t,s.type=2;continue e}if(s.map[s.key]=t,s.readCount++,s.readCount!==s.size){s.key=null,s.type=1;continue e}o.pop(),t=s.map}}return t}var i},e.prototype.readHeadByte=function(){return-1===this.headByte&&(this.headByte=this.readU8()),this.headByte},e.prototype.complete=function(){this.headByte=-1},e.prototype.readArraySize=function(){var e=this.readHeadByte();switch(e){case 220:return this.readU16();case 221:return this.readU32();default:if(e<160)return e-144;throw new $n("Unrecognized array type byte: ".concat(Wn(e)))}},e.prototype.pushMapState=function(e){if(e>this.maxMapLength)throw new $n("Max length exceeded: map length (".concat(e,") > maxMapLengthLength (").concat(this.maxMapLength,")"));this.stack.push({type:1,size:e,key:null,readCount:0,map:{}})},e.prototype.pushArrayState=function(e){if(e>this.maxArrayLength)throw new $n("Max length exceeded: array length (".concat(e,") > maxArrayLength (").concat(this.maxArrayLength,")"));this.stack.push({type:0,size:e,array:new Array(e),position:0})},e.prototype.decodeUtf8String=function(e,t){var n;if(e>this.maxStrLength)throw new $n("Max length exceeded: UTF-8 byte length (".concat(e,") > maxStrLength (").concat(this.maxStrLength,")"));if(this.bytes.byteLengthMn?function(e,t,n){var r=e.subarray(t,t+n);return Un.decode(r)}(this.bytes,o,e):Pn(this.bytes,o,e),this.pos+=t+e,r},e.prototype.stateIsMapKey=function(){return this.stack.length>0&&1===this.stack[this.stack.length-1].type},e.prototype.decodeBinary=function(e,t){if(e>this.maxBinLength)throw new $n("Max length exceeded: bin length (".concat(e,") > maxBinLength (").concat(this.maxBinLength,")"));if(!this.hasRemaining(e+t))throw Gn;var n=this.pos+t,r=this.bytes.subarray(n,n+e);return this.pos+=t+e,r},e.prototype.decodeExtension=function(e,t){if(e>this.maxExtLength)throw new $n("Max length exceeded: ext length (".concat(e,") > maxExtLength (").concat(this.maxExtLength,")"));var n=this.view.getInt8(this.pos+t),r=this.decodeBinary(e,t+1);return this.extensionCodec.decode(r,n,this.context)},e.prototype.lookU8=function(){return this.view.getUint8(this.pos)},e.prototype.lookU16=function(){return this.view.getUint16(this.pos)},e.prototype.lookU32=function(){return this.view.getUint32(this.pos)},e.prototype.readU8=function(){var e=this.view.getUint8(this.pos);return this.pos++,e},e.prototype.readI8=function(){var e=this.view.getInt8(this.pos);return this.pos++,e},e.prototype.readU16=function(){var e=this.view.getUint16(this.pos);return this.pos+=2,e},e.prototype.readI16=function(){var e=this.view.getInt16(this.pos);return this.pos+=2,e},e.prototype.readU32=function(){var e=this.view.getUint32(this.pos);return this.pos+=4,e},e.prototype.readI32=function(){var e=this.view.getInt32(this.pos);return this.pos+=4,e},e.prototype.readU64=function(){var e,t,n=(e=this.view,t=this.pos,4294967296*e.getUint32(t)+e.getUint32(t+4));return this.pos+=8,n},e.prototype.readI64=function(){var e=kn(this.view,this.pos);return this.pos+=8,e},e.prototype.readF32=function(){var e=this.view.getFloat32(this.pos);return this.pos+=4,e},e.prototype.readF64=function(){var e=this.view.getFloat64(this.pos);return this.pos+=8,e},e}();class er{static write(e){let t=e.byteLength||e.length;const n=[];do{let e=127&t;t>>=7,t>0&&(e|=128),n.push(e)}while(t>0);t=e.byteLength||e.length;const r=new Uint8Array(n.length+t);return r.set(n,0),r.set(e,n.length),r.buffer}static parse(e){const t=[],n=new Uint8Array(e),r=[0,7,14,21,28];for(let o=0;o7)throw new Error("Messages bigger than 2GB are not supported.");if(!(n.byteLength>=o+i+a))throw new Error("Incomplete message.");t.push(n.slice?n.slice(o+i,o+i+a):n.subarray(o+i,o+i+a)),o=o+i+a}return t}}const tr=new Uint8Array([145,qt.Ping]);class nr{constructor(e){this.name="messagepack",this.version=2,this.transferFormat=ln.Binary,this._errorResult=1,this._voidResult=2,this._nonVoidResult=3,e=e||{},this._encoder=new jn(e.extensionCodec,e.context,e.maxDepth,e.initialBufferSize,e.sortKeys,e.forceFloat32,e.ignoreUndefined,e.forceIntegerToFloat),this._decoder=new Zn(e.extensionCodec,e.context,e.maxStrLength,e.maxBinLength,e.maxArrayLength,e.maxMapLength,e.maxExtLength)}parseMessages(e,t){if(!(n=e)||"undefined"==typeof ArrayBuffer||!(n instanceof ArrayBuffer||n.constructor&&"ArrayBuffer"===n.constructor.name))throw new Error("Invalid input for MessagePack hub protocol. Expected an ArrayBuffer.");var n;null===t&&(t=St.instance);const r=er.parse(e),o=[];for(const e of r){const n=this._parseMessage(e,t);n&&o.push(n)}return o}writeMessage(e){switch(e.type){case qt.Invocation:return this._writeInvocation(e);case qt.StreamInvocation:return this._writeStreamInvocation(e);case qt.StreamItem:return this._writeStreamItem(e);case qt.Completion:return this._writeCompletion(e);case qt.Ping:return er.write(tr);case qt.CancelInvocation:return this._writeCancelInvocation(e);case qt.Close:return this._writeClose();case qt.Ack:return this._writeAck(e);case qt.Sequence:return this._writeSequence(e);default:throw new Error("Invalid message type.")}}_parseMessage(e,t){if(0===e.length)throw new Error("Invalid payload.");const n=this._decoder.decode(e);if(0===n.length||!(n instanceof Array))throw new Error("Invalid payload.");const r=n[0];switch(r){case qt.Invocation:return this._createInvocationMessage(this._readHeaders(n),n);case qt.StreamItem:return this._createStreamItemMessage(this._readHeaders(n),n);case qt.Completion:return this._createCompletionMessage(this._readHeaders(n),n);case qt.Ping:return this._createPingMessage(n);case qt.Close:return this._createCloseMessage(n);case qt.Ack:return this._createAckMessage(n);case qt.Sequence:return this._createSequenceMessage(n);default:return t.log(bt.Information,"Unknown message type '"+r+"' ignored."),null}}_createCloseMessage(e){if(e.length<2)throw new Error("Invalid payload for Close message.");return{allowReconnect:e.length>=3?e[2]:void 0,error:e[1],type:qt.Close}}_createPingMessage(e){if(e.length<1)throw new Error("Invalid payload for Ping message.");return{type:qt.Ping}}_createInvocationMessage(e,t){if(t.length<5)throw new Error("Invalid payload for Invocation message.");const n=t[2];return n?{arguments:t[4],headers:e,invocationId:n,streamIds:[],target:t[3],type:qt.Invocation}:{arguments:t[4],headers:e,streamIds:[],target:t[3],type:qt.Invocation}}_createStreamItemMessage(e,t){if(t.length<4)throw new Error("Invalid payload for StreamItem message.");return{headers:e,invocationId:t[2],item:t[3],type:qt.StreamItem}}_createCompletionMessage(e,t){if(t.length<4)throw new Error("Invalid payload for Completion message.");const n=t[3];if(n!==this._voidResult&&t.length<5)throw new Error("Invalid payload for Completion message.");let r,o;switch(n){case this._errorResult:r=t[4];break;case this._nonVoidResult:o=t[4]}return{error:r,headers:e,invocationId:t[2],result:o,type:qt.Completion}}_createAckMessage(e){if(e.length<1)throw new Error("Invalid payload for Ack message.");return{sequenceId:e[1],type:qt.Ack}}_createSequenceMessage(e){if(e.length<1)throw new Error("Invalid payload for Sequence message.");return{sequenceId:e[1],type:qt.Sequence}}_writeInvocation(e){let t;return t=e.streamIds?this._encoder.encode([qt.Invocation,e.headers||{},e.invocationId||null,e.target,e.arguments,e.streamIds]):this._encoder.encode([qt.Invocation,e.headers||{},e.invocationId||null,e.target,e.arguments]),er.write(t.slice())}_writeStreamInvocation(e){let t;return t=e.streamIds?this._encoder.encode([qt.StreamInvocation,e.headers||{},e.invocationId,e.target,e.arguments,e.streamIds]):this._encoder.encode([qt.StreamInvocation,e.headers||{},e.invocationId,e.target,e.arguments]),er.write(t.slice())}_writeStreamItem(e){const t=this._encoder.encode([qt.StreamItem,e.headers||{},e.invocationId,e.item]);return er.write(t.slice())}_writeCompletion(e){const t=e.error?this._errorResult:void 0!==e.result?this._nonVoidResult:this._voidResult;let n;switch(t){case this._errorResult:n=this._encoder.encode([qt.Completion,e.headers||{},e.invocationId,t,e.error]);break;case this._voidResult:n=this._encoder.encode([qt.Completion,e.headers||{},e.invocationId,t]);break;case this._nonVoidResult:n=this._encoder.encode([qt.Completion,e.headers||{},e.invocationId,t,e.result])}return er.write(n.slice())}_writeCancelInvocation(e){const t=this._encoder.encode([qt.CancelInvocation,e.headers||{},e.invocationId]);return er.write(t.slice())}_writeClose(){const e=this._encoder.encode([qt.Close,null]);return er.write(e.slice())}_writeAck(e){const t=this._encoder.encode([qt.Ack,e.sequenceId]);return er.write(t.slice())}_writeSequence(e){const t=this._encoder.encode([qt.Sequence,e.sequenceId]);return er.write(t.slice())}_readHeaders(e){const t=e[1];if("object"!=typeof t)throw new Error("Invalid headers.");return t}}const rr="function"==typeof TextDecoder?new TextDecoder("utf-8"):null,or=rr?rr.decode.bind(rr):function(e){let t=0;const n=e.length,r=[],o=[];for(;t65535&&(o-=65536,r.push(o>>>10&1023|55296),o=56320|1023&o),r.push(o)}r.length>1024&&(o.push(String.fromCharCode.apply(null,r)),r.length=0)}return o.push(String.fromCharCode.apply(null,r)),o.join("")},sr=Math.pow(2,32),ir=Math.pow(2,21)-1;function ar(e,t){return e[t]|e[t+1]<<8|e[t+2]<<16|e[t+3]<<24}function cr(e,t){return e[t]+(e[t+1]<<8)+(e[t+2]<<16)+(e[t+3]<<24>>>0)}function lr(e,t){const n=cr(e,t+4);if(n>ir)throw new Error(`Cannot read uint64 with high order part ${n}, because the result would exceed Number.MAX_SAFE_INTEGER.`);return n*sr+cr(e,t)}class hr{constructor(e){this.batchData=e;const t=new fr(e);this.arrayRangeReader=new gr(e),this.arrayBuilderSegmentReader=new mr(e),this.diffReader=new dr(e),this.editReader=new ur(e,t),this.frameReader=new pr(e,t)}updatedComponents(){return ar(this.batchData,this.batchData.length-20)}referenceFrames(){return ar(this.batchData,this.batchData.length-16)}disposedComponentIds(){return ar(this.batchData,this.batchData.length-12)}disposedEventHandlerIds(){return ar(this.batchData,this.batchData.length-8)}updatedComponentsEntry(e,t){const n=e+4*t;return ar(this.batchData,n)}referenceFramesEntry(e,t){return e+20*t}disposedComponentIdsEntry(e,t){const n=e+4*t;return ar(this.batchData,n)}disposedEventHandlerIdsEntry(e,t){const n=e+8*t;return lr(this.batchData,n)}}class dr{constructor(e){this.batchDataUint8=e}componentId(e){return ar(this.batchDataUint8,e)}edits(e){return e+4}editsEntry(e,t){return e+16*t}}class ur{constructor(e,t){this.batchDataUint8=e,this.stringReader=t}editType(e){return ar(this.batchDataUint8,e)}siblingIndex(e){return ar(this.batchDataUint8,e+4)}newTreeIndex(e){return ar(this.batchDataUint8,e+8)}moveToSiblingIndex(e){return ar(this.batchDataUint8,e+8)}removedAttributeName(e){const t=ar(this.batchDataUint8,e+12);return this.stringReader.readString(t)}}class pr{constructor(e,t){this.batchDataUint8=e,this.stringReader=t}frameType(e){return ar(this.batchDataUint8,e)}subtreeLength(e){return ar(this.batchDataUint8,e+4)}elementReferenceCaptureId(e){const t=ar(this.batchDataUint8,e+4);return this.stringReader.readString(t)}componentId(e){return ar(this.batchDataUint8,e+8)}elementName(e){const t=ar(this.batchDataUint8,e+8);return this.stringReader.readString(t)}textContent(e){const t=ar(this.batchDataUint8,e+4);return this.stringReader.readString(t)}markupContent(e){const t=ar(this.batchDataUint8,e+4);return this.stringReader.readString(t)}attributeName(e){const t=ar(this.batchDataUint8,e+4);return this.stringReader.readString(t)}attributeValue(e){const t=ar(this.batchDataUint8,e+8);return this.stringReader.readString(t)}attributeEventHandlerId(e){return lr(this.batchDataUint8,e+12)}}class fr{constructor(e){this.batchDataUint8=e,this.stringTableStartIndex=ar(e,e.length-4)}readString(e){if(-1===e)return null;{const n=ar(this.batchDataUint8,this.stringTableStartIndex+4*e),r=function(e,t){let n=0,r=0;for(let o=0;o<4;o++){const s=e[t+o];if(n|=(127&s)<this.nextBatchId)return this.fatalError?(this.logger.log(st.Debug,`Received a new batch ${e} but errored out on a previous batch ${this.nextBatchId-1}`),void await n.send("OnRenderCompleted",this.nextBatchId-1,this.fatalError.toString())):void this.logger.log(st.Debug,`Waiting for batch ${this.nextBatchId}. Batch ${e} not processed.`);try{this.nextBatchId++,this.logger.log(st.Debug,`Applying batch ${e}.`),function(e,t){const n=ge[e];if(!n)throw new Error(`There is no browser renderer with ID ${e}.`);const r=t.arrayRangeReader,o=t.updatedComponents(),s=r.values(o),i=r.count(o),a=t.referenceFrames(),c=r.values(a),l=t.diffReader;for(let e=0;e{e.onclick=function(e){location.reload(),e.preventDefault()}})),document.querySelectorAll("#blazor-error-ui .dismiss").forEach((e=>{e.onclick=function(e){const t=document.querySelector("#blazor-error-ui");t&&(t.style.display="none"),e.preventDefault()}})))}class kr{constructor(t,n,r,o){this._firstUpdate=!0,this._renderingFailed=!1,this._disposed=!1,this._circuitId=void 0,this._applicationState=n,this._componentManager=t,this._options=r,this._logger=o,this._renderQueue=new vr(this._logger),this._dispatcher=e.attachDispatcher(this)}start(){if(this.isDisposedOrDisposing())throw new Error("Cannot start a disposed circuit.");return this._startPromise||(this._startPromise=this.startCore()),this._startPromise}updateRootComponents(e){var t,n;return this._firstUpdate?(this._firstUpdate=!1,null===(t=this._connection)||void 0===t?void 0:t.send("UpdateRootComponents",e,this._applicationState)):null===(n=this._connection)||void 0===n?void 0:n.send("UpdateRootComponents",e,"")}async startCore(){if(this._connection=await this.startConnection(),this._connection.state!==Jt.Connected)return!1;const e=JSON.stringify(this._componentManager.initialComponents.map((e=>{return t=e,{...t,start:void 0,end:void 0};var t})));if(this._circuitId=await this._connection.invoke("StartCircuit",Ue.getBaseURI(),Ue.getLocationHref(),e,this._applicationState||""),!this._circuitId)return!1;for(const e of this._options.circuitHandlers)e.onCircuitOpened&&e.onCircuitOpened();return!0}async startConnection(){var e,t;const n=new nr;n.name="blazorpack";const r=(new wn).withUrl("_blazor").withHubProtocol(n);this._options.configureSignalR(r);const o=r.build();o.on("JS.AttachComponent",((e,t)=>function(e,t,n,r){let o=ge[e];o||(o=new de(e),ge[e]=o),o.attachRootComponentToLogicalElement(n,t,!1)}(_n.Server,this.resolveElement(t),e))),o.on("JS.BeginInvokeJS",this._dispatcher.beginInvokeJSFromDotNet.bind(this._dispatcher)),o.on("JS.EndInvokeDotNet",this._dispatcher.endInvokeDotNetFromJS.bind(this._dispatcher)),o.on("JS.ReceiveByteArray",this._dispatcher.receiveByteArray.bind(this._dispatcher)),o.on("JS.BeginTransmitStream",(e=>{const t=new ReadableStream({start:t=>{o.stream("SendDotNetStreamToJS",e).subscribe({next:e=>t.enqueue(e),complete:()=>t.close(),error:e=>t.error(e)})}});this._dispatcher.supplyDotNetStream(e,t)})),o.on("JS.RenderBatch",(async(e,t)=>{var n,r;this._logger.log(bt.Debug,`Received render batch with id ${e} and ${t.byteLength} bytes.`),await this._renderQueue.processBatch(e,t,this._connection),null===(r=(n=this._componentManager).onAfterRenderBatch)||void 0===r||r.call(n,_n.Server)})),o.on("JS.EndUpdateRootComponents",(e=>{var t,n;null===(n=(t=this._componentManager).onAfterUpdateRootComponents)||void 0===n||n.call(t,e)})),o.on("JS.EndLocationChanging",ot._internal.navigationManager.endLocationChanging),o.onclose((e=>{this._interopMethodsForReconnection=function(e){const t=S.get(e);if(!t)throw new Error(`Interop methods are not registered for renderer ${e}`);return S.delete(e),t}(_n.Server),this._disposed||this._renderingFailed||this._options.reconnectionHandler.onConnectionDown(this._options.reconnectionOptions,e)})),o.on("JS.Error",(e=>{this._renderingFailed=!0,this.unhandledError(e),Ir()}));try{await o.start()}catch(e){if(this.unhandledError(e),"FailedToNegotiateWithServerError"===e.errorType)throw e;Ir(),e.innerErrors&&(e.innerErrors.some((e=>"UnsupportedTransportError"===e.errorType&&e.transport===cn.WebSockets))?this._logger.log(bt.Error,"Unable to connect, please ensure you are using an updated browser that supports WebSockets."):e.innerErrors.some((e=>"FailedToStartTransportError"===e.errorType&&e.transport===cn.WebSockets))?this._logger.log(bt.Error,"Unable to connect, please ensure WebSockets are available. A VPN or proxy may be blocking the connection."):e.innerErrors.some((e=>"DisabledTransportError"===e.errorType&&e.transport===cn.LongPolling))&&this._logger.log(bt.Error,"Unable to initiate a SignalR connection to the server. This might be because the server is not configured to support WebSockets. For additional details, visit https://aka.ms/blazor-server-websockets-error."))}return(null===(t=null===(e=o.connection)||void 0===e?void 0:e.features)||void 0===t?void 0:t.inherentKeepAlive)&&this._logger.log(bt.Warning,"Failed to connect via WebSockets, using the Long Polling fallback transport. This may be due to a VPN or proxy blocking the connection. To troubleshoot this, visit https://aka.ms/blazor-server-using-fallback-long-polling."),o}async disconnect(){var e;await(null===(e=this._connection)||void 0===e?void 0:e.stop())}async reconnect(){if(!this._circuitId)throw new Error("Circuit host not initialized.");return this._connection.state===Jt.Connected||(this._connection=await this.startConnection(),this._interopMethodsForReconnection&&(I(_n.Server,this._interopMethodsForReconnection),this._interopMethodsForReconnection=void 0),!!await this._connection.invoke("ConnectCircuit",this._circuitId)&&(this._options.reconnectionHandler.onConnectionUp(),!0))}beginInvokeDotNetFromJS(e,t,n,r,o){this.throwIfDispatchingWhenDisposed(),this._connection.send("BeginInvokeDotNetFromJS",e?e.toString():null,t,n,r||0,o)}endInvokeJSFromDotNet(e,t,n){this.throwIfDispatchingWhenDisposed(),this._connection.send("EndInvokeJSFromDotNet",e,t,n)}sendByteArray(e,t){this.throwIfDispatchingWhenDisposed(),this._connection.send("ReceiveByteArray",e,t)}throwIfDispatchingWhenDisposed(){if(this._disposed)throw new Error("The circuit associated with this dispatcher is no longer available.")}sendLocationChanged(e,t,n){return this._connection.send("OnLocationChanged",e,t,n)}sendLocationChanging(e,t,n,r){return this._connection.send("OnLocationChanging",e,t,n,r)}sendJsDataStream(e,t,n){return function(e,t,n,r){setTimeout((async()=>{let o=5,s=(new Date).valueOf();try{const i=t instanceof Blob?t.size:t.byteLength;let a=0,c=0;for(;a1)await e.send("ReceiveJSDataChunk",n,c,h,null);else{if(!await e.invoke("ReceiveJSDataChunk",n,c,h,null))break;const t=(new Date).valueOf(),r=t-s;s=t,o=Math.max(1,Math.round(500/Math.max(1,r)))}a+=l,c++}}catch(t){await e.send("ReceiveJSDataChunk",n,-1,null,t.toString())}}),0)}(this._connection,e,t,n)}resolveElement(e){const t=function(e){const t=f.get(e);if(t)return f.delete(e),t}(e);if(t)return O(t,!0);const n=Number.parseInt(e);if(!Number.isNaN(n))return function(e){const{start:t,end:n}=e,r=t[$];if(r){if(r!==e)throw new Error("The start component comment was already associated with another component descriptor.");return t}const o=t.parentNode;if(!o)throw new Error(`Comment not connected to the DOM ${t.textContent}`);const s=O(o,!0),i=K(s);t[L]=s,t[$]=e;const a=O(t);if(n){const e=K(a),r=Array.prototype.indexOf.call(i,a)+1;let o=null;for(;o!==n;){const n=i.splice(r,1)[0];if(!n)throw new Error("Could not find the end component comment in the parent logical node list");n[L]=t,e.push(n),o=n}}return a}(this._componentManager.resolveRootComponent(n));throw new Error(`Invalid sequence number or identifier '${e}'.`)}getRootComponentManager(){return this._componentManager}unhandledError(e){this._logger.log(bt.Error,e),this.disconnect()}getDisconnectFormData(){const e=new FormData,t=this._circuitId;return e.append("circuitId",t),e}didRenderingFail(){return this._renderingFailed}isDisposedOrDisposing(){return void 0!==this._disposePromise}sendDisconnectBeacon(){if(this._disposed)return;const e=this.getDisconnectFormData();this._disposed=navigator.sendBeacon("_blazor/disconnect",e)}dispose(){return this._disposePromise||(this._disposePromise=this.disposeCore()),this._disposePromise}async disposeCore(){var e;if(!this._startPromise)return void(this._disposed=!0);await this._startPromise,this._disposed=!0,null===(e=this._connection)||void 0===e||e.stop();const t=this.getDisconnectFormData();fetch("http://github.com/_blazor/disconnect",{method:"POST",body:t});for(const e of this._options.circuitHandlers)e.onCircuitClosed&&e.onCircuitClosed()}}class Tr{constructor(e,t,n,r){this.maxRetries=t,this.document=n,this.logger=r,this.modal=this.document.createElement("div"),this.modal.id=e,this.maxRetries=t,this.modal.style.cssText=["position: fixed","top: 0","right: 0","bottom: 0","left: 0","z-index: 1050","display: none","overflow: hidden","background-color: #fff","opacity: 0.8","text-align: center","font-weight: bold","transition: visibility 0s linear 500ms"].join(";"),this.message=this.document.createElement("h5"),this.message.style.cssText="margin-top: 20px",this.button=this.document.createElement("button"),this.button.style.cssText="margin:5px auto 5px",this.button.textContent="Retry";const o=this.document.createElement("a");o.addEventListener("click",(()=>location.reload())),o.textContent="reload",this.reloadParagraph=this.document.createElement("p"),this.reloadParagraph.textContent="Alternatively, ",this.reloadParagraph.appendChild(o),this.modal.appendChild(this.message),this.modal.appendChild(this.button),this.modal.appendChild(this.reloadParagraph),this.loader=this.getLoader(),this.message.after(this.loader),this.button.addEventListener("click",(async()=>{this.show();try{await ot.reconnect()||this.rejected()}catch(e){this.logger.log(st.Error,e),this.failed()}}))}show(){this.document.contains(this.modal)||this.document.body.appendChild(this.modal),this.modal.style.display="block",this.loader.style.display="inline-block",this.button.style.display="none",this.reloadParagraph.style.display="none",this.message.textContent="Attempting to reconnect to the server...",this.modal.style.visibility="hidden",setTimeout((()=>{this.modal.style.visibility="visible"}),0)}update(e){this.message.textContent=`Attempting to reconnect to the server: ${e} of ${this.maxRetries}`}hide(){this.modal.style.display="none"}failed(){this.button.style.display="block",this.reloadParagraph.style.display="none",this.loader.style.display="none";const e=this.document.createTextNode("Reconnection failed. Try "),t=this.document.createElement("a");t.textContent="reloading",t.setAttribute("href",""),t.addEventListener("click",(()=>location.reload()));const n=this.document.createTextNode(" the page if you're unable to reconnect.");this.message.replaceChildren(e,t,n)}rejected(){this.button.style.display="none",this.reloadParagraph.style.display="none",this.loader.style.display="none";const e=this.document.createTextNode("Could not reconnect to the server. "),t=this.document.createElement("a");t.textContent="Reload",t.setAttribute("href",""),t.addEventListener("click",(()=>location.reload()));const n=this.document.createTextNode(" the page to restore functionality.");this.message.replaceChildren(e,t,n)}getLoader(){const e=this.document.createElement("div");return e.style.cssText=["border: 0.3em solid #f3f3f3","border-top: 0.3em solid #3498db","border-radius: 50%","width: 2em","height: 2em","display: inline-block"].join(";"),e.animate([{transform:"rotate(0deg)"},{transform:"rotate(360deg)"}],{duration:2e3,iterations:1/0}),e}}class Dr{constructor(e,t,n){this.dialog=e,this.maxRetries=t,this.document=n,this.document=n;const r=this.document.getElementById(Dr.MaxRetriesId);r&&(r.innerText=this.maxRetries.toString())}show(){this.removeClasses(),this.dialog.classList.add(Dr.ShowClassName)}update(e){const t=this.document.getElementById(Dr.CurrentAttemptId);t&&(t.innerText=e.toString())}hide(){this.removeClasses(),this.dialog.classList.add(Dr.HideClassName)}failed(){this.removeClasses(),this.dialog.classList.add(Dr.FailedClassName)}rejected(){this.removeClasses(),this.dialog.classList.add(Dr.RejectedClassName)}removeClasses(){this.dialog.classList.remove(Dr.ShowClassName,Dr.HideClassName,Dr.FailedClassName,Dr.RejectedClassName)}}Dr.ShowClassName="components-reconnect-show",Dr.HideClassName="components-reconnect-hide",Dr.FailedClassName="components-reconnect-failed",Dr.RejectedClassName="components-reconnect-rejected",Dr.MaxRetriesId="components-reconnect-max-retries",Dr.CurrentAttemptId="components-reconnect-current-attempt";class Rr{constructor(e,t,n){this._currentReconnectionProcess=null,this._logger=e,this._reconnectionDisplay=t,this._reconnectCallback=n||ot.reconnect}onConnectionDown(e,t){if(!this._reconnectionDisplay){const t=document.getElementById(e.dialogId);this._reconnectionDisplay=t?new Dr(t,e.maxRetries,document):new Tr(e.dialogId,e.maxRetries,document,this._logger)}this._currentReconnectionProcess||(this._currentReconnectionProcess=new xr(e,this._logger,this._reconnectCallback,this._reconnectionDisplay))}onConnectionUp(){this._currentReconnectionProcess&&(this._currentReconnectionProcess.dispose(),this._currentReconnectionProcess=null)}}class xr{constructor(e,t,n,r){this.logger=t,this.reconnectCallback=n,this.isDisposed=!1,this.reconnectDisplay=r,this.reconnectDisplay.show(),this.attemptPeriodicReconnection(e)}dispose(){this.isDisposed=!0,this.reconnectDisplay.hide()}async attemptPeriodicReconnection(e){for(let t=0;txr.MaximumFirstRetryInterval?xr.MaximumFirstRetryInterval:e.retryIntervalMilliseconds;if(await this.delay(n),this.isDisposed)break;try{return await this.reconnectCallback()?void 0:void this.reconnectDisplay.rejected()}catch(e){this.logger.log(st.Error,e)}}this.reconnectDisplay.failed()}delay(e){return new Promise((t=>setTimeout(t,e)))}}xr.MaximumFirstRetryInterval=3e3;class Ar{constructor(e=!0,t,n,r=0){this.singleRuntime=e,this.logger=t,this.webRendererId=r,this.afterStartedCallbacks=[],n&&this.afterStartedCallbacks.push(...n)}async importInitializersAsync(e,t){await Promise.all(e.map((e=>async function(e,n){const r=function(e){const t=document.baseURI;return t.endsWith("/")?`${t}${e}`:`${t}/${e}`}(n),o=await import(r);if(void 0!==o){if(e.singleRuntime){const{beforeStart:n,afterStarted:r,beforeWebAssemblyStart:i,afterWebAssemblyStarted:a,beforeServerStart:c,afterServerStarted:l}=o;let h=n;e.webRendererId===_n.Server&&c&&(h=c),e.webRendererId===_n.WebAssembly&&i&&(h=i);let d=r;return e.webRendererId===_n.Server&&l&&(d=l),e.webRendererId===_n.WebAssembly&&a&&(d=a),s(e,h,d,t)}return function(e,t,n){var o;const i=n[0],{beforeStart:a,afterStarted:c,beforeWebStart:l,afterWebStarted:h,beforeWebAssemblyStart:d,afterWebAssemblyStarted:u,beforeServerStart:p,afterServerStarted:f}=t,g=!(l||h||d||u||p||f||!a&&!c),m=g&&i.enableClassicInitializers;if(g&&!i.enableClassicInitializers)null===(o=e.logger)||void 0===o||o.log(st.Warning,`Initializer '${r}' will be ignored because multiple runtimes are available. use 'before(web|webAssembly|server)Start' and 'after(web|webAssembly|server)Started?' instead.)`);else if(m)return s(e,a,c,n);if(function(e){e.webAssembly?e.webAssembly.initializers||(e.webAssembly.initializers={beforeStart:[],afterStarted:[]}):e.webAssembly={initializers:{beforeStart:[],afterStarted:[]}},e.circuit?e.circuit.initializers||(e.circuit.initializers={beforeStart:[],afterStarted:[]}):e.circuit={initializers:{beforeStart:[],afterStarted:[]}}}(i),d&&i.webAssembly.initializers.beforeStart.push(d),u&&i.webAssembly.initializers.afterStarted.push(u),p&&i.circuit.initializers.beforeStart.push(p),f&&i.circuit.initializers.afterStarted.push(f),h&&e.afterStartedCallbacks.push(h),l)return l(i)}(e,o,t)}function s(e,t,n,r){if(n&&e.afterStartedCallbacks.push(n),t)return t(...r)}}(this,e))))}async invokeAfterStartedCallbacks(e){const t=function(e){var t;return null===(t=C.get(e))||void 0===t?void 0:t[1]}(this.webRendererId);t&&await t,await Promise.all(this.afterStartedCallbacks.map((t=>t(e))))}}function Pr(e){if(void 0!==Er)throw new Error("Blazor Server has already started.");return Er=new Promise(Nr.bind(null,e)),Er}async function Nr(e,t,n){await yr;const r=await async function(e){if(e.initializers)return await Promise.all(e.initializers.beforeStart.map((t=>t(e)))),new Ar(!1,void 0,e.initializers.afterStarted,_n.Server);const t=await fetch("http://github.com/_blazor/initializers",{method:"GET",credentials:"include",cache:"no-cache"}),n=await t.json(),r=new Ar(!0,void 0,void 0,_n.Server);return await r.importInitializersAsync(n,[e]),r}(br);var o;if(o=document,wr=dt(o,ht)||"",Sr=new lt(br.logLevel),_r=new kr(e,wr,br,Sr),Sr.log(st.Information,"Starting up Blazor server-side application."),ot.reconnect=async()=>!(_r.didRenderingFail()||!await _r.reconnect()&&(Sr.log(st.Information,"Reconnection attempt to the circuit was rejected by the server. This may indicate that the associated state is no longer available on the server."),1)),ot.defaultReconnectionHandler=new Rr(Sr),br.reconnectionHandler=br.reconnectionHandler||ot.defaultReconnectionHandler,ot._internal.navigationManager.listenForNavigationEvents(_n.Server,((e,t,n)=>_r.sendLocationChanged(e,t,n)),((e,t,n,r)=>_r.sendLocationChanging(e,t,n,r))),ot._internal.forceCloseConnection=()=>_r.disconnect(),ot._internal.sendJSDataStream=(e,t,n)=>_r.sendJsDataStream(e,t,n),!await _r.start())return Sr.log(st.Error,"Failed to start the circuit."),void t();const s=()=>{_r.sendDisconnectBeacon()};ot.disconnect=s,window.addEventListener("unload",s,{capture:!1,once:!0}),Sr.log(st.Information,"Blazor server-side application started."),r.invokeAfterStartedCallbacks(ot),t()}class Ur{constructor(e){this.initialComponents=e}resolveRootComponent(e){return this.initialComponents[e]}}class Mr{constructor(){this._eventListeners=new Map}static create(e){const t=new Mr;return e.addEventListener=t.addEventListener.bind(t),e.removeEventListener=t.removeEventListener.bind(t),t}addEventListener(e,t){let n=this._eventListeners.get(e);n||(n=new Set,this._eventListeners.set(e,n)),n.add(t)}removeEventListener(e,t){var n;null===(n=this._eventListeners.get(e))||void 0===n||n.delete(t)}dispatchEvent(e,t){const n=this._eventListeners.get(e);if(!n)return;const r={...t,type:e};for(const e of n)e(r)}}let Br=!1;function Lr(e){if(Br)throw new Error("Blazor has already started.");Br=!0;const t=it(e);!function(e){if(br)throw new Error("Circuit options have already been configured.");if(br)throw new Error("WebAssembly options have already been configured.");yr=async function(e){const t=await e;br=it(t)}(e)}(Promise.resolve(t||{})),Mr.create(ot);const n=function(e){return ut(e,"server").sort(((e,t)=>e.sequence-t.sequence))}(document);return Pr(new Ur(n))}ot.start=Lr,window.DotNet=e,document&&document.currentScript&&"false"!==document.currentScript.getAttribute("autostart")&&Lr()})()})(); \ No newline at end of file diff --git a/src/Components/Web.JS/dist/Release/blazor.web.js b/src/Components/Web.JS/dist/Release/blazor.web.js index 40ca03e6781e..96c98c7bad08 100644 --- a/src/Components/Web.JS/dist/Release/blazor.web.js +++ b/src/Components/Web.JS/dist/Release/blazor.web.js @@ -1 +1 @@ -(()=>{var e={778:()=>{},77:()=>{},203:()=>{},200:()=>{},628:()=>{},321:()=>{}},t={};function n(o){var r=t[o];if(void 0!==r)return r.exports;var i=t[o]={exports:{}};return e[o](i,i.exports,n),i.exports}n.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),(()=>{"use strict";var e,t,o;!function(e){const t=[],n="__jsObjectId",o="__dotNetObject",r="__byte[]",i="__dotNetStream",s="__jsStreamReferenceLength";let a,c;class l{constructor(e){this._jsObject=e,this._cachedFunctions=new Map}findFunction(e){const t=this._cachedFunctions.get(e);if(t)return t;let n,o=this._jsObject;if(e.split(".").forEach((t=>{if(!(t in o))throw new Error(`Could not find '${e}' ('${t}' was undefined).`);n=o,o=o[t]})),o instanceof Function)return o=o.bind(n),this._cachedFunctions.set(e,o),o;throw new Error(`The value '${e}' is not a function.`)}getWrappedObject(){return this._jsObject}}const h={0:new l(window)};h[0]._cachedFunctions.set("import",(e=>("string"==typeof e&&e.startsWith("./")&&(e=new URL(e.substr(2),document.baseURI).toString()),import(e))));let d,u=1;function p(e){t.push(e)}function f(e){if(e&&"object"==typeof e){h[u]=new l(e);const t={[n]:u};return u++,t}throw new Error(`Cannot create a JSObjectReference from the value '${e}'.`)}function g(e){let t=-1;if(e instanceof ArrayBuffer&&(e=new Uint8Array(e)),e instanceof Blob)t=e.size;else{if(!(e.buffer instanceof ArrayBuffer))throw new Error("Supplied value is not a typed array or blob.");if(void 0===e.byteLength)throw new Error(`Cannot create a JSStreamReference from the value '${e}' as it doesn't have a byteLength.`);t=e.byteLength}const o={[s]:t};try{const t=f(e);o[n]=t[n]}catch(t){throw new Error(`Cannot create a JSStreamReference from the value '${e}'.`)}return o}function m(e,n){c=e;const o=n?JSON.parse(n,((e,n)=>t.reduce(((t,n)=>n(e,t)),n))):null;return c=void 0,o}function v(){if(void 0===a)throw new Error("No call dispatcher has been set.");if(null===a)throw new Error("There are multiple .NET runtimes present, so a default dispatcher could not be resolved. Use DotNetObject to invoke .NET instance methods.");return a}e.attachDispatcher=function(e){const t=new y(e);return void 0===a?a=t:a&&(a=null),t},e.attachReviver=p,e.invokeMethod=function(e,t,...n){return v().invokeDotNetStaticMethod(e,t,...n)},e.invokeMethodAsync=function(e,t,...n){return v().invokeDotNetStaticMethodAsync(e,t,...n)},e.createJSObjectReference=f,e.createJSStreamReference=g,e.disposeJSObjectReference=function(e){const t=e&&e[n];"number"==typeof t&&_(t)},function(e){e[e.Default=0]="Default",e[e.JSObjectReference=1]="JSObjectReference",e[e.JSStreamReference=2]="JSStreamReference",e[e.JSVoidResult=3]="JSVoidResult"}(d=e.JSCallResultType||(e.JSCallResultType={}));class y{constructor(e){this._dotNetCallDispatcher=e,this._byteArraysToBeRevived=new Map,this._pendingDotNetToJSStreams=new Map,this._pendingAsyncCalls={},this._nextAsyncCallId=1}getDotNetCallDispatcher(){return this._dotNetCallDispatcher}invokeJSFromDotNet(e,t,n,o){const r=m(this,t),i=I(b(e,o)(...r||[]),n);return null==i?null:T(this,i)}beginInvokeJSFromDotNet(e,t,n,o,r){const i=new Promise((e=>{const o=m(this,n);e(b(t,r)(...o||[]))}));e&&i.then((t=>T(this,[e,!0,I(t,o)]))).then((t=>this._dotNetCallDispatcher.endInvokeJSFromDotNet(e,!0,t)),(t=>this._dotNetCallDispatcher.endInvokeJSFromDotNet(e,!1,JSON.stringify([e,!1,w(t)]))))}endInvokeDotNetFromJS(e,t,n){const o=t?m(this,n):new Error(n);this.completePendingCall(parseInt(e,10),t,o)}invokeDotNetStaticMethod(e,t,...n){return this.invokeDotNetMethod(e,t,null,n)}invokeDotNetStaticMethodAsync(e,t,...n){return this.invokeDotNetMethodAsync(e,t,null,n)}invokeDotNetMethod(e,t,n,o){if(this._dotNetCallDispatcher.invokeDotNetFromJS){const r=T(this,o),i=this._dotNetCallDispatcher.invokeDotNetFromJS(e,t,n,r);return i?m(this,i):null}throw new Error("The current dispatcher does not support synchronous calls from JS to .NET. Use invokeDotNetMethodAsync instead.")}invokeDotNetMethodAsync(e,t,n,o){if(e&&n)throw new Error(`For instance method calls, assemblyName should be null. Received '${e}'.`);const r=this._nextAsyncCallId++,i=new Promise(((e,t)=>{this._pendingAsyncCalls[r]={resolve:e,reject:t}}));try{const i=T(this,o);this._dotNetCallDispatcher.beginInvokeDotNetFromJS(r,e,t,n,i)}catch(e){this.completePendingCall(r,!1,e)}return i}receiveByteArray(e,t){this._byteArraysToBeRevived.set(e,t)}processByteArray(e){const t=this._byteArraysToBeRevived.get(e);return t?(this._byteArraysToBeRevived.delete(e),t):null}supplyDotNetStream(e,t){if(this._pendingDotNetToJSStreams.has(e)){const n=this._pendingDotNetToJSStreams.get(e);this._pendingDotNetToJSStreams.delete(e),n.resolve(t)}else{const n=new E;n.resolve(t),this._pendingDotNetToJSStreams.set(e,n)}}getDotNetStreamPromise(e){let t;if(this._pendingDotNetToJSStreams.has(e))t=this._pendingDotNetToJSStreams.get(e).streamPromise,this._pendingDotNetToJSStreams.delete(e);else{const n=new E;this._pendingDotNetToJSStreams.set(e,n),t=n.streamPromise}return t}completePendingCall(e,t,n){if(!this._pendingAsyncCalls.hasOwnProperty(e))throw new Error(`There is no pending async call with ID ${e}.`);const o=this._pendingAsyncCalls[e];delete this._pendingAsyncCalls[e],t?o.resolve(n):o.reject(n)}}function w(e){return e instanceof Error?`${e.message}\n${e.stack}`:e?e.toString():"null"}function b(e,t){const n=h[t];if(n)return n.findFunction(e);throw new Error(`JS object instance with ID ${t} does not exist (has it been disposed?).`)}function _(e){delete h[e]}e.findJSFunction=b,e.disposeJSObjectReferenceById=_;class S{constructor(e,t){this._id=e,this._callDispatcher=t}invokeMethod(e,...t){return this._callDispatcher.invokeDotNetMethod(null,e,this._id,t)}invokeMethodAsync(e,...t){return this._callDispatcher.invokeDotNetMethodAsync(null,e,this._id,t)}dispose(){this._callDispatcher.invokeDotNetMethodAsync(null,"__Dispose",this._id,null).catch((e=>console.error(e)))}serializeAsArg(){return{[o]:this._id}}}e.DotNetObject=S,p((function(e,t){if(t&&"object"==typeof t){if(t.hasOwnProperty(o))return new S(t[o],c);if(t.hasOwnProperty(n)){const e=t[n],o=h[e];if(o)return o.getWrappedObject();throw new Error(`JS object instance with Id '${e}' does not exist. It may have been disposed.`)}if(t.hasOwnProperty(r)){const e=t[r],n=c.processByteArray(e);if(void 0===n)throw new Error(`Byte array index '${e}' does not exist.`);return n}if(t.hasOwnProperty(i)){const e=t[i],n=c.getDotNetStreamPromise(e);return new C(n)}}return t}));class C{constructor(e){this._streamPromise=e}stream(){return this._streamPromise}async arrayBuffer(){return new Response(await this.stream()).arrayBuffer()}}class E{constructor(){this.streamPromise=new Promise(((e,t)=>{this.resolve=e,this.reject=t}))}}function I(e,t){switch(t){case d.Default:return e;case d.JSObjectReference:return f(e);case d.JSStreamReference:return g(e);case d.JSVoidResult:return null;default:throw new Error(`Invalid JS call result type '${t}'.`)}}let k=0;function T(e,t){k=0,c=e;const n=JSON.stringify(t,R);return c=void 0,n}function R(e,t){if(t instanceof S)return t.serializeAsArg();if(t instanceof Uint8Array){c.getDotNetCallDispatcher().sendByteArray(k,t);const e={[r]:k};return k++,e}return t}}(e||(e={})),function(e){e[e.prependFrame=1]="prependFrame",e[e.removeFrame=2]="removeFrame",e[e.setAttribute=3]="setAttribute",e[e.removeAttribute=4]="removeAttribute",e[e.updateText=5]="updateText",e[e.stepIn=6]="stepIn",e[e.stepOut=7]="stepOut",e[e.updateMarkup=8]="updateMarkup",e[e.permutationListEntry=9]="permutationListEntry",e[e.permutationListEnd=10]="permutationListEnd"}(t||(t={})),function(e){e[e.element=1]="element",e[e.text=2]="text",e[e.attribute=3]="attribute",e[e.component=4]="component",e[e.region=5]="region",e[e.elementReferenceCapture=6]="elementReferenceCapture",e[e.markup=8]="markup",e[e.namedEvent=10]="namedEvent"}(o||(o={}));class r{constructor(e,t){this.componentId=e,this.fieldValue=t}static fromEvent(e,t){const n=t.target;if(n instanceof Element){const t=function(e){return e instanceof HTMLInputElement?e.type&&"checkbox"===e.type.toLowerCase()?{value:e.checked}:{value:e.value}:e instanceof HTMLSelectElement||e instanceof HTMLTextAreaElement?{value:e.value}:null}(n);if(t)return new r(e,t.value)}return null}}const i=new Map,s=new Map,a=[];function c(e){return i.get(e)}function l(e){const t=i.get(e);return(null==t?void 0:t.browserEventName)||e}function h(e,t){e.forEach((e=>i.set(e,t)))}function d(e){const t=[];for(let n=0;ne.selected)).map((e=>e.value))}}{const e=function(e){return!!e&&"INPUT"===e.tagName&&"checkbox"===e.getAttribute("type")}(t);return{value:e?!!t.checked:t.value}}}}),h(["copy","cut","paste"],{createEventArgs:e=>({type:e.type})}),h(["drag","dragend","dragenter","dragleave","dragover","dragstart","drop"],{createEventArgs:e=>{return{...u(t=e),dataTransfer:t.dataTransfer?{dropEffect:t.dataTransfer.dropEffect,effectAllowed:t.dataTransfer.effectAllowed,files:Array.from(t.dataTransfer.files).map((e=>e.name)),items:Array.from(t.dataTransfer.items).map((e=>({kind:e.kind,type:e.type}))),types:t.dataTransfer.types}:null};var t}}),h(["focus","blur","focusin","focusout"],{createEventArgs:e=>({type:e.type})}),h(["keydown","keyup","keypress"],{createEventArgs:e=>{return{key:(t=e).key,code:t.code,location:t.location,repeat:t.repeat,ctrlKey:t.ctrlKey,shiftKey:t.shiftKey,altKey:t.altKey,metaKey:t.metaKey,type:t.type};var t}}),h(["contextmenu","click","mouseover","mouseout","mousemove","mousedown","mouseup","mouseleave","mouseenter","dblclick"],{createEventArgs:e=>u(e)}),h(["error"],{createEventArgs:e=>{return{message:(t=e).message,filename:t.filename,lineno:t.lineno,colno:t.colno,type:t.type};var t}}),h(["loadstart","timeout","abort","load","loadend","progress"],{createEventArgs:e=>{return{lengthComputable:(t=e).lengthComputable,loaded:t.loaded,total:t.total,type:t.type};var t}}),h(["touchcancel","touchend","touchmove","touchenter","touchleave","touchstart"],{createEventArgs:e=>{return{detail:(t=e).detail,touches:d(t.touches),targetTouches:d(t.targetTouches),changedTouches:d(t.changedTouches),ctrlKey:t.ctrlKey,shiftKey:t.shiftKey,altKey:t.altKey,metaKey:t.metaKey,type:t.type};var t}}),h(["gotpointercapture","lostpointercapture","pointercancel","pointerdown","pointerenter","pointerleave","pointermove","pointerout","pointerover","pointerup"],{createEventArgs:e=>{return{...u(t=e),pointerId:t.pointerId,width:t.width,height:t.height,pressure:t.pressure,tiltX:t.tiltX,tiltY:t.tiltY,pointerType:t.pointerType,isPrimary:t.isPrimary};var t}}),h(["wheel","mousewheel"],{createEventArgs:e=>{return{...u(t=e),deltaX:t.deltaX,deltaY:t.deltaY,deltaZ:t.deltaZ,deltaMode:t.deltaMode};var t}}),h(["cancel","close","toggle"],{createEventArgs:()=>({})});const p=["date","datetime-local","month","time","week"],f=new Map;let g,m,v=0;const y={async add(e,t,n){if(!n)throw new Error("initialParameters must be an object, even if empty.");const o="__bl-dynamic-root:"+(++v).toString();f.set(o,e);const r=await S().invokeMethodAsync("AddRootComponent",t,o),i=new _(r,m[t]);return await i.setParameters(n),i}};function w(e){const t=f.get(e);if(t)return f.delete(e),t}class b{invoke(e){return this._callback(e)}setCallback(t){this._selfJSObjectReference||(this._selfJSObjectReference=e.createJSObjectReference(this)),this._callback=t}getJSObjectReference(){return this._selfJSObjectReference}dispose(){this._selfJSObjectReference&&e.disposeJSObjectReference(this._selfJSObjectReference)}}class _{constructor(e,t){this._jsEventCallbackWrappers=new Map,this._componentId=e;for(const e of t)"eventcallback"===e.type&&this._jsEventCallbackWrappers.set(e.name.toLowerCase(),new b)}setParameters(e){const t={},n=Object.entries(e||{}),o=n.length;for(const[e,o]of n){const n=this._jsEventCallbackWrappers.get(e.toLowerCase());n&&o?(n.setCallback(o),t[e]=n.getJSObjectReference()):t[e]=o}return S().invokeMethodAsync("SetRootComponentParameters",this._componentId,o,t)}async dispose(){if(null!==this._componentId){await S().invokeMethodAsync("RemoveRootComponent",this._componentId),this._componentId=null;for(const e of this._jsEventCallbackWrappers.values())e.dispose()}}}function S(){if(!g)throw new Error("Dynamic root components have not been enabled in this application.");return g}const C=new Map,E=[],I=new Map;function k(t,n,o,r){var i,s;if(C.has(t))throw new Error(`Interop methods are already registered for renderer ${t}`);C.set(t,n),o&&r&&Object.keys(o).length>0&&function(t,n,o){if(g)throw new Error("Dynamic root components have already been enabled.");g=t,m=n;for(const[t,r]of Object.entries(o)){const o=e.findJSFunction(t,0);for(const e of r)o(e,n[e])}}(A(t),o,r),null===(s=null===(i=I.get(t))||void 0===i?void 0:i[0])||void 0===s||s.call(i),function(e){for(const t of E)t(e)}(t)}function T(e){return C.has(e)}function R(e,t,n){return D(e,t.eventHandlerId,(()=>A(e).invokeMethodAsync("DispatchEventAsync",t,n)))}function A(e){const t=C.get(e);if(!t)throw new Error(`No interop methods are registered for renderer ${e}`);return t}let D=(e,t,n)=>n();const x=B(["abort","blur","cancel","canplay","canplaythrough","change","close","cuechange","durationchange","emptied","ended","error","focus","load","loadeddata","loadedmetadata","loadend","loadstart","mouseenter","mouseleave","pointerenter","pointerleave","pause","play","playing","progress","ratechange","reset","scroll","seeked","seeking","stalled","submit","suspend","timeupdate","toggle","unload","volumechange","waiting","DOMNodeInsertedIntoDocument","DOMNodeRemovedFromDocument"]),N={submit:!0},P=B(["click","dblclick","mousedown","mousemove","mouseup"]);class M{constructor(e){this.browserRendererId=e,this.afterClickCallbacks=[];const t=++M.nextEventDelegatorId;this.eventsCollectionKey=`_blazorEvents_${t}`,this.eventInfoStore=new U(this.onGlobalEvent.bind(this))}setListener(e,t,n,o){const r=this.getEventHandlerInfosForElement(e,!0),i=r.getHandler(t);if(i)this.eventInfoStore.update(i.eventHandlerId,n);else{const i={element:e,eventName:t,eventHandlerId:n,renderingComponentId:o};this.eventInfoStore.add(i),r.setHandler(t,i)}}getHandler(e){return this.eventInfoStore.get(e)}removeListener(e){const t=this.eventInfoStore.remove(e);if(t){const e=t.element,n=this.getEventHandlerInfosForElement(e,!1);n&&n.removeHandler(t.eventName)}}notifyAfterClick(e){this.afterClickCallbacks.push(e),this.eventInfoStore.addGlobalListener("click")}setStopPropagation(e,t,n){this.getEventHandlerInfosForElement(e,!0).stopPropagation(t,n)}setPreventDefault(e,t,n){this.getEventHandlerInfosForElement(e,!0).preventDefault(t,n)}onGlobalEvent(e){if(!(e.target instanceof Element))return;this.dispatchGlobalEventToAllElements(e.type,e);const t=(n=e.type,s.get(n));var n;t&&t.forEach((t=>this.dispatchGlobalEventToAllElements(t,e))),"click"===e.type&&this.afterClickCallbacks.forEach((t=>t(e)))}dispatchGlobalEventToAllElements(e,t){const n=t.composedPath();let o=n.shift(),i=null,s=!1;const a=Object.prototype.hasOwnProperty.call(x,e);let l=!1;for(;o;){const u=o,p=this.getEventHandlerInfosForElement(u,!1);if(p){const n=p.getHandler(e);if(n&&(h=u,d=t.type,!((h instanceof HTMLButtonElement||h instanceof HTMLInputElement||h instanceof HTMLTextAreaElement||h instanceof HTMLSelectElement)&&Object.prototype.hasOwnProperty.call(P,d)&&h.disabled))){if(!s){const n=c(e);i=(null==n?void 0:n.createEventArgs)?n.createEventArgs(t):{},s=!0}Object.prototype.hasOwnProperty.call(N,t.type)&&t.preventDefault(),R(this.browserRendererId,{eventHandlerId:n.eventHandlerId,eventName:e,eventFieldInfo:r.fromEvent(n.renderingComponentId,t)},i)}p.stopPropagation(e)&&(l=!0),p.preventDefault(e)&&t.preventDefault()}o=a||l?void 0:n.shift()}var h,d}getEventHandlerInfosForElement(e,t){return Object.prototype.hasOwnProperty.call(e,this.eventsCollectionKey)?e[this.eventsCollectionKey]:t?e[this.eventsCollectionKey]=new L:null}}M.nextEventDelegatorId=0;class U{constructor(e){this.globalListener=e,this.infosByEventHandlerId={},this.countByEventName={},a.push(this.handleEventNameAliasAdded.bind(this))}add(e){if(this.infosByEventHandlerId[e.eventHandlerId])throw new Error(`Event ${e.eventHandlerId} is already tracked`);this.infosByEventHandlerId[e.eventHandlerId]=e,this.addGlobalListener(e.eventName)}get(e){return this.infosByEventHandlerId[e]}addGlobalListener(e){if(e=l(e),Object.prototype.hasOwnProperty.call(this.countByEventName,e))this.countByEventName[e]++;else{this.countByEventName[e]=1;const t=Object.prototype.hasOwnProperty.call(x,e);document.addEventListener(e,this.globalListener,t)}}update(e,t){if(Object.prototype.hasOwnProperty.call(this.infosByEventHandlerId,t))throw new Error(`Event ${t} is already tracked`);const n=this.infosByEventHandlerId[e];delete this.infosByEventHandlerId[e],n.eventHandlerId=t,this.infosByEventHandlerId[t]=n}remove(e){const t=this.infosByEventHandlerId[e];if(t){delete this.infosByEventHandlerId[e];const n=l(t.eventName);0==--this.countByEventName[n]&&(delete this.countByEventName[n],document.removeEventListener(n,this.globalListener))}return t}handleEventNameAliasAdded(e,t){if(Object.prototype.hasOwnProperty.call(this.countByEventName,e)){const n=this.countByEventName[e];delete this.countByEventName[e],document.removeEventListener(e,this.globalListener),this.addGlobalListener(t),this.countByEventName[t]+=n-1}}}class L{constructor(){this.handlers={},this.preventDefaultFlags=null,this.stopPropagationFlags=null}getHandler(e){return Object.prototype.hasOwnProperty.call(this.handlers,e)?this.handlers[e]:null}setHandler(e,t){this.handlers[e]=t}removeHandler(e){delete this.handlers[e]}preventDefault(e,t){return void 0!==t&&(this.preventDefaultFlags=this.preventDefaultFlags||{},this.preventDefaultFlags[e]=t),!!this.preventDefaultFlags&&this.preventDefaultFlags[e]}stopPropagation(e,t){return void 0!==t&&(this.stopPropagationFlags=this.stopPropagationFlags||{},this.stopPropagationFlags[e]=t),!!this.stopPropagationFlags&&this.stopPropagationFlags[e]}}function B(e){const t={};return e.forEach((e=>{t[e]=!0})),t}const O=Symbol(),F=Symbol(),$=Symbol();function H(e){const{start:t,end:n}=e,o=t[$];if(o){if(o!==e)throw new Error("The start component comment was already associated with another component descriptor.");return t}const r=t.parentNode;if(!r)throw new Error(`Comment not connected to the DOM ${t.textContent}`);const i=W(r,!0),s=Y(i);t[F]=i,t[$]=e;const a=W(t);if(n){const e=Y(a),o=Array.prototype.indexOf.call(s,a)+1;let r=null;for(;r!==n;){const n=s.splice(o,1)[0];if(!n)throw new Error("Could not find the end component comment in the parent logical node list");n[F]=t,e.push(n),r=n}}return a}function W(e,t){if(O in e)return e;const n=[];if(e.childNodes.length>0){if(!t)throw new Error("New logical elements must start empty, or allowExistingContents must be true");e.childNodes.forEach((t=>{const o=W(t,!0);o[F]=e,n.push(o)}))}return e[O]=n,e}function j(e){const t=Y(e);for(;t.length;)J(e,0)}function z(e,t){const n=document.createComment("!");return q(n,e,t),n}function q(e,t,n){const o=e;let r=e;if(Z(e)){const t=oe(o);if(t!==e){const n=new Range;n.setStartBefore(e),n.setEndAfter(t),r=n.extractContents()}}const i=K(o);if(i){const e=Y(i),t=Array.prototype.indexOf.call(e,o);e.splice(t,1),delete o[F]}const s=Y(t);if(n0;)J(n,0)}const o=n;o.parentNode.removeChild(o)}function K(e){return e[F]||null}function V(e,t){return Y(e)[t]}function X(e){return e[$]||null}function G(e){const t=te(e);return"http://www.w3.org/2000/svg"===t.namespaceURI&&"foreignObject"!==t.tagName}function Y(e){return e[O]}function Q(e){const t=Y(K(e));return t[Array.prototype.indexOf.call(t,e)+1]||null}function Z(e){return O in e}function ee(e,t){const n=Y(e);t.forEach((e=>{e.moveRangeStart=n[e.fromSiblingIndex],e.moveRangeEnd=oe(e.moveRangeStart)})),t.forEach((t=>{const o=document.createComment("marker");t.moveToBeforeMarker=o;const r=n[t.toSiblingIndex+1];r?r.parentNode.insertBefore(o,r):ne(o,e)})),t.forEach((e=>{const t=e.moveToBeforeMarker,n=t.parentNode,o=e.moveRangeStart,r=e.moveRangeEnd;let i=o;for(;i;){const e=i.nextSibling;if(n.insertBefore(i,t),i===r)break;i=e}n.removeChild(t)})),t.forEach((e=>{n[e.toSiblingIndex]=e.moveRangeStart}))}function te(e){if(e instanceof Element||e instanceof DocumentFragment)return e;if(e instanceof Comment)return e.parentNode;throw new Error("Not a valid logical element")}function ne(e,t){if(t instanceof Element||t instanceof DocumentFragment)t.appendChild(e);else{if(!(t instanceof Comment))throw new Error(`Cannot append node because the parent is not a valid logical element. Parent: ${t}`);{const n=Q(t);n?n.parentNode.insertBefore(e,n):ne(e,K(t))}}}function oe(e){if(e instanceof Element||e instanceof DocumentFragment)return e;const t=Q(e);if(t)return t.previousSibling;{const t=K(e);return t instanceof Element||t instanceof DocumentFragment?t.lastChild:oe(t)}}function re(e){return`_bl_${e}`}const ie="__internalId";e.attachReviver(((e,t)=>t&&"object"==typeof t&&Object.prototype.hasOwnProperty.call(t,ie)&&"string"==typeof t[ie]?function(e){const t=`[${re(e)}]`;return document.querySelector(t)}(t[ie]):t));const se="_blazorDeferredValue";function ae(e){e instanceof HTMLOptionElement?de(e):se in e&&he(e,e[se])}function ce(e){return"select-multiple"===e.type}function le(e,t){e.value=t||""}function he(e,t){e instanceof HTMLSelectElement?ce(e)?function(e,t){t||(t=[]);for(let n=0;n{Oe()&&Ne(e,(e=>{Xe(e,!0,!1)}))}))}getRootComponentCount(){return this.rootComponentIds.size}attachRootComponentToLogicalElement(e,t,n){if(we(t))throw new Error(`Root component '${e}' could not be attached because its target element is already associated with a root component`);n&&(t=z(t,Y(t).length)),ye(t,!0),this.attachComponentToElement(e,t),this.rootComponentIds.add(e),fe.add(t)}updateComponent(e,t,n,o){var r;const i=this.childComponentLocations[t];if(!i)throw new Error(`No element is currently associated with component ${t}`);fe.delete(i)&&(j(i),i instanceof Comment&&(i.textContent="!"));const s=null===(r=te(i))||void 0===r?void 0:r.getRootNode(),a=s&&s.activeElement;this.applyEdits(e,t,i,0,n,o),a instanceof HTMLElement&&s&&s.activeElement!==a&&a.focus()}disposeComponent(e){if(this.rootComponentIds.delete(e)){const t=this.childComponentLocations[e];ye(t,!1),!0===t[me]?fe.add(t):j(t)}delete this.childComponentLocations[e]}disposeEventHandler(e){this.eventDelegator.removeListener(e)}attachComponentToElement(e,t){this.childComponentLocations[e]=t}applyEdits(e,n,o,r,i,s){let a,c=0,l=r;const h=e.arrayBuilderSegmentReader,d=e.editReader,u=e.frameReader,p=h.values(i),f=h.offset(i),g=f+h.count(i);for(let i=f;i{const t=document.createElement("script");t.textContent=e.textContent,e.getAttributeNames().forEach((n=>{t.setAttribute(n,e.getAttribute(n))})),e.parentNode.replaceChild(t,e)})),ue.content));var s;let a=0;for(;i.firstChild;)q(i.firstChild,r,a++)}applyAttribute(e,t,n,o){const r=e.frameReader,i=r.attributeName(o),s=r.attributeEventHandlerId(o);if(s){const e=Se(i);return void this.eventDelegator.setListener(n,e,s,t)}const a=r.attributeValue(o);this.setOrRemoveAttributeOrProperty(n,i,a)}insertFrameRange(e,t,n,o,r,i,s){const a=o;for(let a=i;a{et(t,e)})},enableNavigationInterception:function(e){if(void 0!==Ee&&Ee!==e)throw new Error("Only one interactive runtime may enable navigation interception at a time.");Ee=e},setHasLocationChangingListeners:function(e,t){const n=je.get(e);if(!n)throw new Error(`Renderer with ID '${e}' is not listening for navigation events`);n.hasLocationChangingEventListeners=t},endLocationChanging:function(e,t){qe&&e===We&&(qe(t),qe=null)},navigateTo:function(e,t){Ve(e,t,!0)},refresh:function(e){!e&&Me()?Ue(location.href,!0):location.reload()},getBaseURI:()=>document.baseURI,getLocationHref:()=>location.href,scrollToElement:Ke};function Ke(e){const t=document.getElementById(e);return!!t&&(t.scrollIntoView(),!0)}function Ve(e,t,n=!1){const o=Le(e),r=ot();if(t.forceLoad||!Pe(o)||"serverside-fullpageload"===r)!function(e,t){if(location.href===e){const t=e+"?";history.replaceState(null,"",t),location.replace(e)}else t?location.replace(e):location.href=e}(e,t.replaceHistoryEntry);else if("clientside-router"===r)Xe(o,!1,t.replaceHistoryEntry,t.historyEntryState,n);else{if("serverside-enhanced"!==r)throw new Error(`Unsupported page load mechanism: ${r}`);Ue(o,t.replaceHistoryEntry)}}async function Xe(e,t,n,o=void 0,r=!1){if(Qe(),function(e){const t=e.indexOf("#");return t>-1&&location.href.replace(location.hash,"")===e.substring(0,t)}(e))return void function(e,t,n){Ge(e,t,n);const o=e.indexOf("#");o!==e.length-1&&Ke(e.substring(o+1))}(e,n,o);const i=nt();(r||!(null==i?void 0:i.hasLocationChangingEventListeners)||await Ze(e,o,t,i))&&(Re=!0,Ge(e,n,o),await et(t))}function Ge(e,t,n=void 0){t?history.replaceState({userState:n,_index:He},"",e):(He++,history.pushState({userState:n,_index:He},"",e))}function Ye(e){return new Promise((t=>{const n=ze;ze=()=>{ze=n,t()},history.go(e)}))}function Qe(){qe&&(qe(!1),qe=null)}function Ze(e,t,n,o){return new Promise((r=>{Qe(),We++,qe=r,o.locationChanging(We,e,t,n)}))}async function et(e,t){const n=null!=t?t:location.href;await Promise.all(Array.from(je,(async([t,o])=>{var r;T(t)&&await o.locationChanged(n,null===(r=history.state)||void 0===r?void 0:r.userState,e)})))}async function tt(e){var t,n;ze&&"serverside-enhanced"!==ot()&&await ze(e),He=null!==(n=null===(t=history.state)||void 0===t?void 0:t._index)&&void 0!==n?n:0}function nt(){const e=Fe();if(void 0!==e)return je.get(e)}function ot(){return Oe()?"clientside-router":Me()?"serverside-enhanced":window.Blazor._internal.isBlazorWeb?"serverside-fullpageload":"clientside-router"}const rt={focus:function(e,t){if(e instanceof HTMLElement)e.focus({preventScroll:t});else{if(!(e instanceof SVGElement))throw new Error("Unable to focus an invalid element.");if(!e.hasAttribute("tabindex"))throw new Error("Unable to focus an SVG element that does not have a tabindex.");e.focus({preventScroll:t})}},focusBySelector:function(e,t){const n=document.querySelector(e);n&&(n.hasAttribute("tabindex")||(n.tabIndex=-1),n.focus({preventScroll:!0}))}},it={init:function(e,t,n,o=50){const r=at(t);(r||document.documentElement).style.overflowAnchor="none";const i=document.createRange();u(n.parentElement)&&(t.style.display="table-row",n.style.display="table-row");const s=new IntersectionObserver((function(o){o.forEach((o=>{var r;if(!o.isIntersecting)return;i.setStartAfter(t),i.setEndBefore(n);const s=i.getBoundingClientRect().height,a=null===(r=o.rootBounds)||void 0===r?void 0:r.height;o.target===t?e.invokeMethodAsync("OnSpacerBeforeVisible",o.intersectionRect.top-o.boundingClientRect.top,s,a):o.target===n&&n.offsetHeight>0&&e.invokeMethodAsync("OnSpacerAfterVisible",o.boundingClientRect.bottom-o.intersectionRect.bottom,s,a)}))}),{root:r,rootMargin:`${o}px`});s.observe(t),s.observe(n);const a=d(t),c=d(n),{observersByDotNetObjectId:l,id:h}=ct(e);function d(e){const t={attributes:!0},n=new MutationObserver(((n,o)=>{u(e.parentElement)&&(o.disconnect(),e.style.display="table-row",o.observe(e,t)),s.unobserve(e),s.observe(e)}));return n.observe(e,t),n}function u(e){return null!==e&&(e instanceof HTMLTableElement&&""===e.style.display||"table"===e.style.display||e instanceof HTMLTableSectionElement&&""===e.style.display||"table-row-group"===e.style.display)}l[h]={intersectionObserver:s,mutationObserverBefore:a,mutationObserverAfter:c}},dispose:function(e){const{observersByDotNetObjectId:t,id:n}=ct(e),o=t[n];o&&(o.intersectionObserver.disconnect(),o.mutationObserverBefore.disconnect(),o.mutationObserverAfter.disconnect(),e.dispose(),delete t[n])}},st=Symbol();function at(e){return e&&e!==document.body&&e!==document.documentElement?"visible"!==getComputedStyle(e).overflowY?e:at(e.parentElement):null}function ct(e){var t;const n=e._callDispatcher,o=e._id;return null!==(t=n[st])&&void 0!==t||(n[st]={}),{observersByDotNetObjectId:n[st],id:o}}const lt={getAndRemoveExistingTitle:function(){var e;const t=document.head?document.head.getElementsByTagName("title"):[];if(0===t.length)return null;let n=null;for(let o=t.length-1;o>=0;o--){const r=t[o],i=r.previousSibling;i instanceof Comment&&null!==K(i)||(null===n&&(n=r.textContent),null===(e=r.parentNode)||void 0===e||e.removeChild(r))}return n}},ht={init:function(e,t){t._blazorInputFileNextFileId=0,t.addEventListener("click",(function(){t.value=""})),t.addEventListener("change",(function(){t._blazorFilesById={};const n=Array.prototype.map.call(t.files,(function(e){const n={id:++t._blazorInputFileNextFileId,lastModified:new Date(e.lastModified).toISOString(),name:e.name,size:e.size,contentType:e.type,readPromise:void 0,arrayBuffer:void 0,blob:e};return t._blazorFilesById[n.id]=n,n}));e.invokeMethodAsync("NotifyChange",n)}))},toImageFile:async function(e,t,n,o,r){const i=dt(e,t),s=await new Promise((function(e){const t=new Image;t.onload=function(){URL.revokeObjectURL(t.src),e(t)},t.onerror=function(){t.onerror=null,URL.revokeObjectURL(t.src)},t.src=URL.createObjectURL(i.blob)})),a=await new Promise((function(e){var t;const i=Math.min(1,o/s.width),a=Math.min(1,r/s.height),c=Math.min(i,a),l=document.createElement("canvas");l.width=Math.round(s.width*c),l.height=Math.round(s.height*c),null===(t=l.getContext("2d"))||void 0===t||t.drawImage(s,0,0,l.width,l.height),l.toBlob(e,n)})),c={id:++e._blazorInputFileNextFileId,lastModified:i.lastModified,name:i.name,size:(null==a?void 0:a.size)||0,contentType:n,blob:a||i.blob};return e._blazorFilesById[c.id]=c,c},readFileData:async function(e,t){return dt(e,t).blob}};function dt(e,t){const n=e._blazorFilesById[t];if(!n)throw new Error(`There is no file with ID ${t}. The file list may have changed. See https://aka.ms/aspnet/blazor-input-file-multiple-selections.`);return n}const ut=new Set,pt={enableNavigationPrompt:function(e){0===ut.size&&window.addEventListener("beforeunload",ft),ut.add(e)},disableNavigationPrompt:function(e){ut.delete(e),0===ut.size&&window.removeEventListener("beforeunload",ft)}};function ft(e){e.preventDefault(),e.returnValue=!0}async function gt(e,t,n){return e instanceof Blob?await async function(e,t,n){const o=e.slice(t,t+n),r=await o.arrayBuffer();return new Uint8Array(r)}(e,t,n):function(e,t,n){return new Uint8Array(e.buffer,e.byteOffset+t,n)}(e,t,n)}const mt=new Map,vt={navigateTo:function(e,t,n=!1){Ve(e,t instanceof Object?t:{forceLoad:t,replaceHistoryEntry:n})},registerCustomEventType:function(e,t){if(!t)throw new Error("The options parameter is required.");if(i.has(e))throw new Error(`The event '${e}' is already registered.`);if(t.browserEventName){const n=s.get(t.browserEventName);n?n.push(e):s.set(t.browserEventName,[e]),a.forEach((n=>n(e,t.browserEventName)))}i.set(e,t)},rootComponents:y,runtime:{},_internal:{navigationManager:Je,domWrapper:rt,Virtualize:it,PageTitle:lt,InputFile:ht,NavigationLock:pt,getJSDataStreamChunk:gt,attachWebRendererInterop:k}};var yt;window.Blazor=vt,function(e){e[e.Trace=0]="Trace",e[e.Debug=1]="Debug",e[e.Information=2]="Information",e[e.Warning=3]="Warning",e[e.Error=4]="Error",e[e.Critical=5]="Critical",e[e.None=6]="None"}(yt||(yt={}));class wt{log(e,t){}}wt.instance=new wt;class bt{constructor(e){this.minLevel=e}log(e,t){if(e>=this.minLevel){const n=`[${(new Date).toISOString()}] ${yt[e]}: ${t}`;switch(e){case yt.Critical:case yt.Error:console.error(n);break;case yt.Warning:console.warn(n);break;case yt.Information:console.info(n);break;default:console.log(n)}}}}function _t(e,t){switch(t){case"webassembly":return Tt(e,"webassembly");case"server":return function(e){return Tt(e,"server").sort(((e,t)=>e.sequence-t.sequence))}(e);case"auto":return Tt(e,"auto")}}const St=/^\s*Blazor-Server-Component-State:(?[a-zA-Z0-9+/=]+)$/,Ct=/^\s*Blazor-WebAssembly-Component-State:(?[a-zA-Z0-9+/=]+)$/,Et=/^\s*Blazor-Web-Initializers:(?[a-zA-Z0-9+/=]+)$/;function It(e){return kt(e,St)}function kt(e,t,n="state"){var o;if(e.nodeType===Node.COMMENT_NODE){const r=e.textContent||"",i=t.exec(r),s=i&&i.groups&&i.groups[n];return s&&(null===(o=e.parentNode)||void 0===o||o.removeChild(e)),s}if(!e.hasChildNodes())return;const r=e.childNodes;for(let e=0;e.*)$/);function At(e,t){const n=e.currentElement;var o,r,i;if(n&&n.nodeType===Node.COMMENT_NODE&&n.textContent){const s=Rt.exec(n.textContent),a=s&&s.groups&&s.groups.descriptor;if(!a)return;!function(e){if(e.parentNode instanceof Document)throw new Error("Root components cannot be marked as interactive. The element must be rendered statically so that scripts are not evaluated multiple times.")}(n);try{const s=function(e){const t=JSON.parse(e),{type:n}=t;if("server"!==n&&"webassembly"!==n&&"auto"!==n)throw new Error(`Invalid component type '${n}'.`);return t}(a),c=function(e,t,n){const{prerenderId:o}=e;if(o){for(;n.next()&&n.currentElement;){const e=n.currentElement;if(e.nodeType!==Node.COMMENT_NODE)continue;if(!e.textContent)continue;const t=Rt.exec(e.textContent),r=t&&t[1];if(r)return Pt(r,o),e}throw new Error(`Could not find an end component comment for '${t}'.`)}}(s,n,e);if(t!==s.type)return;switch(s.type){case"webassembly":return r=n,i=c,Nt(o=s),{...o,uniqueId:Dt++,start:r,end:i};case"server":return function(e,t,n){return xt(e),{...e,uniqueId:Dt++,start:t,end:n}}(s,n,c);case"auto":return function(e,t,n){return xt(e),Nt(e),{...e,uniqueId:Dt++,start:t,end:n}}(s,n,c)}}catch(e){throw new Error(`Found malformed component comment at ${n.textContent}`)}}}let Dt=0;function xt(e){const{descriptor:t,sequence:n}=e;if(!t)throw new Error("descriptor must be defined when using a descriptor.");if(void 0===n)throw new Error("sequence must be defined when using a descriptor.");if(!Number.isInteger(n))throw new Error(`Error parsing the sequence '${n}' for component '${JSON.stringify(e)}'`)}function Nt(e){const{assembly:t,typeName:n}=e;if(!t)throw new Error("assembly must be defined when using a descriptor.");if(!n)throw new Error("typeName must be defined when using a descriptor.");e.parameterDefinitions=e.parameterDefinitions&&atob(e.parameterDefinitions),e.parameterValues=e.parameterValues&&atob(e.parameterValues)}function Pt(e,t){const n=JSON.parse(e);if(1!==Object.keys(n).length)throw new Error(`Invalid end of component comment: '${e}'`);const o=n.prerenderId;if(!o)throw new Error(`End of component comment must have a value for the prerendered property: '${e}'`);if(o!==t)throw new Error(`End of component comment prerendered property must match the start comment prerender id: '${t}', '${o}'`)}class Mt{constructor(e){this.childNodes=e,this.currentIndex=-1,this.length=e.length}next(){return this.currentIndex++,this.currentIndex{n+=`0x${e<16?"0":""}${e.toString(16)} `})),n.substr(0,n.length-1)}(e)}'`)):"string"==typeof e&&(n=`String data of length ${e.length}`,t&&(n+=`. Content: '${e}'`)),n}function zt(e){return e&&"undefined"!=typeof ArrayBuffer&&(e instanceof ArrayBuffer||e.constructor&&"ArrayBuffer"===e.constructor.name)}async function qt(e,t,n,o,r,i){const s={},[a,c]=Vt();s[a]=c,e.log(Ot.Trace,`(${t} transport) sending data. ${jt(r,i.logMessageContent)}.`);const l=zt(r)?"arraybuffer":"text",h=await n.post(o,{content:r,headers:{...s,...i.headers},responseType:l,timeout:i.timeout,withCredentials:i.withCredentials});e.log(Ot.Trace,`(${t} transport) request complete. Response status: ${h.statusCode}.`)}class Jt{constructor(e,t){this._subject=e,this._observer=t}dispose(){const e=this._subject.observers.indexOf(this._observer);e>-1&&this._subject.observers.splice(e,1),0===this._subject.observers.length&&this._subject.cancelCallback&&this._subject.cancelCallback().catch((e=>{}))}}class Kt{constructor(e){this._minLevel=e,this.out=console}log(e,t){if(e>=this._minLevel){const n=`[${(new Date).toISOString()}] ${Ot[e]}: ${t}`;switch(e){case Ot.Critical:case Ot.Error:this.out.error(n);break;case Ot.Warning:this.out.warn(n);break;case Ot.Information:this.out.info(n);break;default:this.out.log(n)}}}}function Vt(){let e="X-SignalR-User-Agent";return Wt.isNode&&(e="User-Agent"),[e,Xt($t,Gt(),Wt.isNode?"NodeJS":"Browser",Yt())]}function Xt(e,t,n,o){let r="Microsoft SignalR/";const i=e.split(".");return r+=`${i[0]}.${i[1]}`,r+=` (${e}; `,r+=t&&""!==t?`${t}; `:"Unknown OS; ",r+=`${n}`,r+=o?`; ${o}`:"; Unknown Runtime Version",r+=")",r}function Gt(){if(!Wt.isNode)return"";switch(process.platform){case"win32":return"Windows NT";case"darwin":return"macOS";case"linux":return"Linux";default:return process.platform}}function Yt(){if(Wt.isNode)return process.versions.node}function Qt(e){return e.stack?e.stack:e.message?e.message:`${e}`}class Zt{writeHandshakeRequest(e){return Bt.write(JSON.stringify(e))}parseHandshakeResponse(e){let t,n;if(zt(e)){const o=new Uint8Array(e),r=o.indexOf(Bt.RecordSeparatorCode);if(-1===r)throw new Error("Message is incomplete.");const i=r+1;t=String.fromCharCode.apply(null,Array.prototype.slice.call(o.slice(0,i))),n=o.byteLength>i?o.slice(i).buffer:null}else{const o=e,r=o.indexOf(Bt.RecordSeparator);if(-1===r)throw new Error("Message is incomplete.");const i=r+1;t=o.substring(0,i),n=o.length>i?o.substring(i):null}const o=Bt.parse(t),r=JSON.parse(o[0]);if(r.type)throw new Error("Expected a handshake response from the server.");return[n,r]}}class en extends Error{constructor(e,t){const n=new.target.prototype;super(`${e}: Status code '${t}'`),this.statusCode=t,this.__proto__=n}}class tn extends Error{constructor(e="A timeout occurred."){const t=new.target.prototype;super(e),this.__proto__=t}}class nn extends Error{constructor(e="An abort occurred."){const t=new.target.prototype;super(e),this.__proto__=t}}class on extends Error{constructor(e,t){const n=new.target.prototype;super(e),this.transport=t,this.errorType="UnsupportedTransportError",this.__proto__=n}}class rn extends Error{constructor(e,t){const n=new.target.prototype;super(e),this.transport=t,this.errorType="DisabledTransportError",this.__proto__=n}}class sn extends Error{constructor(e,t){const n=new.target.prototype;super(e),this.transport=t,this.errorType="FailedToStartTransportError",this.__proto__=n}}class an extends Error{constructor(e){const t=new.target.prototype;super(e),this.errorType="FailedToNegotiateWithServerError",this.__proto__=t}}class cn extends Error{constructor(e,t){const n=new.target.prototype;super(e),this.innerErrors=t,this.__proto__=n}}var ln,hn;!function(e){e[e.Invocation=1]="Invocation",e[e.StreamItem=2]="StreamItem",e[e.Completion=3]="Completion",e[e.StreamInvocation=4]="StreamInvocation",e[e.CancelInvocation=5]="CancelInvocation",e[e.Ping=6]="Ping",e[e.Close=7]="Close",e[e.Ack=8]="Ack",e[e.Sequence=9]="Sequence"}(ln||(ln={}));class dn{constructor(){this.observers=[]}next(e){for(const t of this.observers)t.next(e)}error(e){for(const t of this.observers)t.error&&t.error(e)}complete(){for(const e of this.observers)e.complete&&e.complete()}subscribe(e){return this.observers.push(e),new Jt(this,e)}}class un{constructor(e,t,n){this._bufferSize=1e5,this._messages=[],this._totalMessageCount=0,this._waitForSequenceMessage=!1,this._nextReceivingSequenceId=1,this._latestReceivedSequenceId=0,this._bufferedByteCount=0,this._reconnectInProgress=!1,this._protocol=e,this._connection=t,this._bufferSize=n}async _send(e){const t=this._protocol.writeMessage(e);let n=Promise.resolve();if(this._isInvocationMessage(e)){this._totalMessageCount++;let e=()=>{},o=()=>{};zt(t)?this._bufferedByteCount+=t.byteLength:this._bufferedByteCount+=t.length,this._bufferedByteCount>=this._bufferSize&&(n=new Promise(((t,n)=>{e=t,o=n}))),this._messages.push(new pn(t,this._totalMessageCount,e,o))}try{this._reconnectInProgress||await this._connection.send(t)}catch{this._disconnected()}await n}_ack(e){let t=-1;for(let n=0;nthis._nextReceivingSequenceId?this._connection.stop(new Error("Sequence ID greater than amount of messages we've received.")):this._nextReceivingSequenceId=e.sequenceId}_disconnected(){this._reconnectInProgress=!0,this._waitForSequenceMessage=!0}async _resend(){const e=0!==this._messages.length?this._messages[0]._id:this._totalMessageCount+1;await this._connection.send(this._protocol.writeMessage({type:ln.Sequence,sequenceId:e}));const t=this._messages;for(const e of t)await this._connection.send(e._message);this._reconnectInProgress=!1}_dispose(e){null!=e||(e=new Error("Unable to reconnect to server."));for(const t of this._messages)t._rejector(e)}_isInvocationMessage(e){switch(e.type){case ln.Invocation:case ln.StreamItem:case ln.Completion:case ln.StreamInvocation:case ln.CancelInvocation:return!0;case ln.Close:case ln.Sequence:case ln.Ping:case ln.Ack:return!1}}_ackTimer(){void 0===this._ackTimerHandle&&(this._ackTimerHandle=setTimeout((async()=>{try{this._reconnectInProgress||await this._connection.send(this._protocol.writeMessage({type:ln.Ack,sequenceId:this._latestReceivedSequenceId}))}catch{}clearTimeout(this._ackTimerHandle),this._ackTimerHandle=void 0}),1e3))}}class pn{constructor(e,t,n,o){this._message=e,this._id=t,this._resolver=n,this._rejector=o}}!function(e){e.Disconnected="Disconnected",e.Connecting="Connecting",e.Connected="Connected",e.Disconnecting="Disconnecting",e.Reconnecting="Reconnecting"}(hn||(hn={}));class fn{static create(e,t,n,o,r,i,s){return new fn(e,t,n,o,r,i,s)}constructor(e,t,n,o,r,i,s){this._nextKeepAlive=0,this._freezeEventListener=()=>{this._logger.log(Ot.Warning,"The page is being frozen, this will likely lead to the connection being closed and messages being lost. For more information see the docs at https://learn.microsoft.com/aspnet/core/signalr/javascript-client#bsleep")},Ht.isRequired(e,"connection"),Ht.isRequired(t,"logger"),Ht.isRequired(n,"protocol"),this.serverTimeoutInMilliseconds=null!=r?r:3e4,this.keepAliveIntervalInMilliseconds=null!=i?i:15e3,this._statefulReconnectBufferSize=null!=s?s:1e5,this._logger=t,this._protocol=n,this.connection=e,this._reconnectPolicy=o,this._handshakeProtocol=new Zt,this.connection.onreceive=e=>this._processIncomingData(e),this.connection.onclose=e=>this._connectionClosed(e),this._callbacks={},this._methods={},this._closedCallbacks=[],this._reconnectingCallbacks=[],this._reconnectedCallbacks=[],this._invocationId=0,this._receivedHandshakeResponse=!1,this._connectionState=hn.Disconnected,this._connectionStarted=!1,this._cachedPingMessage=this._protocol.writeMessage({type:ln.Ping})}get state(){return this._connectionState}get connectionId(){return this.connection&&this.connection.connectionId||null}get baseUrl(){return this.connection.baseUrl||""}set baseUrl(e){if(this._connectionState!==hn.Disconnected&&this._connectionState!==hn.Reconnecting)throw new Error("The HubConnection must be in the Disconnected or Reconnecting state to change the url.");if(!e)throw new Error("The HubConnection url must be a valid url.");this.connection.baseUrl=e}start(){return this._startPromise=this._startWithStateTransitions(),this._startPromise}async _startWithStateTransitions(){if(this._connectionState!==hn.Disconnected)return Promise.reject(new Error("Cannot start a HubConnection that is not in the 'Disconnected' state."));this._connectionState=hn.Connecting,this._logger.log(Ot.Debug,"Starting HubConnection.");try{await this._startInternal(),Wt.isBrowser&&window.document.addEventListener("freeze",this._freezeEventListener),this._connectionState=hn.Connected,this._connectionStarted=!0,this._logger.log(Ot.Debug,"HubConnection connected successfully.")}catch(e){return this._connectionState=hn.Disconnected,this._logger.log(Ot.Debug,`HubConnection failed to start successfully because of error '${e}'.`),Promise.reject(e)}}async _startInternal(){this._stopDuringStartError=void 0,this._receivedHandshakeResponse=!1;const e=new Promise(((e,t)=>{this._handshakeResolver=e,this._handshakeRejecter=t}));await this.connection.start(this._protocol.transferFormat);try{let t=this._protocol.version;this.connection.features.reconnect||(t=1);const n={protocol:this._protocol.name,version:t};if(this._logger.log(Ot.Debug,"Sending handshake request."),await this._sendMessage(this._handshakeProtocol.writeHandshakeRequest(n)),this._logger.log(Ot.Information,`Using HubProtocol '${this._protocol.name}'.`),this._cleanupTimeout(),this._resetTimeoutPeriod(),this._resetKeepAliveInterval(),await e,this._stopDuringStartError)throw this._stopDuringStartError;!!this.connection.features.reconnect&&(this._messageBuffer=new un(this._protocol,this.connection,this._statefulReconnectBufferSize),this.connection.features.disconnected=this._messageBuffer._disconnected.bind(this._messageBuffer),this.connection.features.resend=()=>{if(this._messageBuffer)return this._messageBuffer._resend()}),this.connection.features.inherentKeepAlive||await this._sendMessage(this._cachedPingMessage)}catch(e){throw this._logger.log(Ot.Debug,`Hub handshake failed with error '${e}' during start(). Stopping HubConnection.`),this._cleanupTimeout(),this._cleanupPingTimer(),await this.connection.stop(e),e}}async stop(){const e=this._startPromise;this.connection.features.reconnect=!1,this._stopPromise=this._stopInternal(),await this._stopPromise;try{await e}catch(e){}}_stopInternal(e){if(this._connectionState===hn.Disconnected)return this._logger.log(Ot.Debug,`Call to HubConnection.stop(${e}) ignored because it is already in the disconnected state.`),Promise.resolve();if(this._connectionState===hn.Disconnecting)return this._logger.log(Ot.Debug,`Call to HttpConnection.stop(${e}) ignored because the connection is already in the disconnecting state.`),this._stopPromise;const t=this._connectionState;return this._connectionState=hn.Disconnecting,this._logger.log(Ot.Debug,"Stopping HubConnection."),this._reconnectDelayHandle?(this._logger.log(Ot.Debug,"Connection stopped during reconnect delay. Done reconnecting."),clearTimeout(this._reconnectDelayHandle),this._reconnectDelayHandle=void 0,this._completeClose(),Promise.resolve()):(t===hn.Connected&&this._sendCloseMessage(),this._cleanupTimeout(),this._cleanupPingTimer(),this._stopDuringStartError=e||new nn("The connection was stopped before the hub handshake could complete."),this.connection.stop(e))}async _sendCloseMessage(){try{await this._sendWithProtocol(this._createCloseMessage())}catch{}}stream(e,...t){const[n,o]=this._replaceStreamingParams(t),r=this._createStreamInvocation(e,t,o);let i;const s=new dn;return s.cancelCallback=()=>{const e=this._createCancelInvocation(r.invocationId);return delete this._callbacks[r.invocationId],i.then((()=>this._sendWithProtocol(e)))},this._callbacks[r.invocationId]=(e,t)=>{t?s.error(t):e&&(e.type===ln.Completion?e.error?s.error(new Error(e.error)):s.complete():s.next(e.item))},i=this._sendWithProtocol(r).catch((e=>{s.error(e),delete this._callbacks[r.invocationId]})),this._launchStreams(n,i),s}_sendMessage(e){return this._resetKeepAliveInterval(),this.connection.send(e)}_sendWithProtocol(e){return this._messageBuffer?this._messageBuffer._send(e):this._sendMessage(this._protocol.writeMessage(e))}send(e,...t){const[n,o]=this._replaceStreamingParams(t),r=this._sendWithProtocol(this._createInvocation(e,t,!0,o));return this._launchStreams(n,r),r}invoke(e,...t){const[n,o]=this._replaceStreamingParams(t),r=this._createInvocation(e,t,!1,o);return new Promise(((e,t)=>{this._callbacks[r.invocationId]=(n,o)=>{o?t(o):n&&(n.type===ln.Completion?n.error?t(new Error(n.error)):e(n.result):t(new Error(`Unexpected message type: ${n.type}`)))};const o=this._sendWithProtocol(r).catch((e=>{t(e),delete this._callbacks[r.invocationId]}));this._launchStreams(n,o)}))}on(e,t){e&&t&&(e=e.toLowerCase(),this._methods[e]||(this._methods[e]=[]),-1===this._methods[e].indexOf(t)&&this._methods[e].push(t))}off(e,t){if(!e)return;e=e.toLowerCase();const n=this._methods[e];if(n)if(t){const o=n.indexOf(t);-1!==o&&(n.splice(o,1),0===n.length&&delete this._methods[e])}else delete this._methods[e]}onclose(e){e&&this._closedCallbacks.push(e)}onreconnecting(e){e&&this._reconnectingCallbacks.push(e)}onreconnected(e){e&&this._reconnectedCallbacks.push(e)}_processIncomingData(e){if(this._cleanupTimeout(),this._receivedHandshakeResponse||(e=this._processHandshakeResponse(e),this._receivedHandshakeResponse=!0),e){const t=this._protocol.parseMessages(e,this._logger);for(const e of t)if(!this._messageBuffer||this._messageBuffer._shouldProcessMessage(e))switch(e.type){case ln.Invocation:this._invokeClientMethod(e);break;case ln.StreamItem:case ln.Completion:{const t=this._callbacks[e.invocationId];if(t){e.type===ln.Completion&&delete this._callbacks[e.invocationId];try{t(e)}catch(e){this._logger.log(Ot.Error,`Stream callback threw error: ${Qt(e)}`)}}break}case ln.Ping:break;case ln.Close:{this._logger.log(Ot.Information,"Close message received from server.");const t=e.error?new Error("Server returned an error on close: "+e.error):void 0;!0===e.allowReconnect?this.connection.stop(t):this._stopPromise=this._stopInternal(t);break}case ln.Ack:this._messageBuffer&&this._messageBuffer._ack(e);break;case ln.Sequence:this._messageBuffer&&this._messageBuffer._resetSequence(e);break;default:this._logger.log(Ot.Warning,`Invalid message type: ${e.type}.`)}}this._resetTimeoutPeriod()}_processHandshakeResponse(e){let t,n;try{[n,t]=this._handshakeProtocol.parseHandshakeResponse(e)}catch(e){const t="Error parsing handshake response: "+e;this._logger.log(Ot.Error,t);const n=new Error(t);throw this._handshakeRejecter(n),n}if(t.error){const e="Server returned handshake error: "+t.error;this._logger.log(Ot.Error,e);const n=new Error(e);throw this._handshakeRejecter(n),n}return this._logger.log(Ot.Debug,"Server handshake complete."),this._handshakeResolver(),n}_resetKeepAliveInterval(){this.connection.features.inherentKeepAlive||(this._nextKeepAlive=(new Date).getTime()+this.keepAliveIntervalInMilliseconds,this._cleanupPingTimer())}_resetTimeoutPeriod(){if(!(this.connection.features&&this.connection.features.inherentKeepAlive||(this._timeoutHandle=setTimeout((()=>this.serverTimeout()),this.serverTimeoutInMilliseconds),void 0!==this._pingServerHandle))){let e=this._nextKeepAlive-(new Date).getTime();e<0&&(e=0),this._pingServerHandle=setTimeout((async()=>{if(this._connectionState===hn.Connected)try{await this._sendMessage(this._cachedPingMessage)}catch{this._cleanupPingTimer()}}),e)}}serverTimeout(){this.connection.stop(new Error("Server timeout elapsed without receiving a message from the server."))}async _invokeClientMethod(e){const t=e.target.toLowerCase(),n=this._methods[t];if(!n)return this._logger.log(Ot.Warning,`No client method with the name '${t}' found.`),void(e.invocationId&&(this._logger.log(Ot.Warning,`No result given for '${t}' method and invocation ID '${e.invocationId}'.`),await this._sendWithProtocol(this._createCompletionMessage(e.invocationId,"Client didn't provide a result.",null))));const o=n.slice(),r=!!e.invocationId;let i,s,a;for(const n of o)try{const o=i;i=await n.apply(this,e.arguments),r&&i&&o&&(this._logger.log(Ot.Error,`Multiple results provided for '${t}'. Sending error to server.`),a=this._createCompletionMessage(e.invocationId,"Client provided multiple results.",null)),s=void 0}catch(e){s=e,this._logger.log(Ot.Error,`A callback for the method '${t}' threw error '${e}'.`)}a?await this._sendWithProtocol(a):r?(s?a=this._createCompletionMessage(e.invocationId,`${s}`,null):void 0!==i?a=this._createCompletionMessage(e.invocationId,null,i):(this._logger.log(Ot.Warning,`No result given for '${t}' method and invocation ID '${e.invocationId}'.`),a=this._createCompletionMessage(e.invocationId,"Client didn't provide a result.",null)),await this._sendWithProtocol(a)):i&&this._logger.log(Ot.Error,`Result given for '${t}' method but server is not expecting a result.`)}_connectionClosed(e){this._logger.log(Ot.Debug,`HubConnection.connectionClosed(${e}) called while in state ${this._connectionState}.`),this._stopDuringStartError=this._stopDuringStartError||e||new nn("The underlying connection was closed before the hub handshake could complete."),this._handshakeResolver&&this._handshakeResolver(),this._cancelCallbacksWithError(e||new Error("Invocation canceled due to the underlying connection being closed.")),this._cleanupTimeout(),this._cleanupPingTimer(),this._connectionState===hn.Disconnecting?this._completeClose(e):this._connectionState===hn.Connected&&this._reconnectPolicy?this._reconnect(e):this._connectionState===hn.Connected&&this._completeClose(e)}_completeClose(e){if(this._connectionStarted){this._connectionState=hn.Disconnected,this._connectionStarted=!1,this._messageBuffer&&(this._messageBuffer._dispose(null!=e?e:new Error("Connection closed.")),this._messageBuffer=void 0),Wt.isBrowser&&window.document.removeEventListener("freeze",this._freezeEventListener);try{this._closedCallbacks.forEach((t=>t.apply(this,[e])))}catch(t){this._logger.log(Ot.Error,`An onclose callback called with error '${e}' threw error '${t}'.`)}}}async _reconnect(e){const t=Date.now();let n=0,o=void 0!==e?e:new Error("Attempting to reconnect due to a unknown error."),r=this._getNextRetryDelay(n++,0,o);if(null===r)return this._logger.log(Ot.Debug,"Connection not reconnecting because the IRetryPolicy returned null on the first reconnect attempt."),void this._completeClose(e);if(this._connectionState=hn.Reconnecting,e?this._logger.log(Ot.Information,`Connection reconnecting because of error '${e}'.`):this._logger.log(Ot.Information,"Connection reconnecting."),0!==this._reconnectingCallbacks.length){try{this._reconnectingCallbacks.forEach((t=>t.apply(this,[e])))}catch(t){this._logger.log(Ot.Error,`An onreconnecting callback called with error '${e}' threw error '${t}'.`)}if(this._connectionState!==hn.Reconnecting)return void this._logger.log(Ot.Debug,"Connection left the reconnecting state in onreconnecting callback. Done reconnecting.")}for(;null!==r;){if(this._logger.log(Ot.Information,`Reconnect attempt number ${n} will start in ${r} ms.`),await new Promise((e=>{this._reconnectDelayHandle=setTimeout(e,r)})),this._reconnectDelayHandle=void 0,this._connectionState!==hn.Reconnecting)return void this._logger.log(Ot.Debug,"Connection left the reconnecting state during reconnect delay. Done reconnecting.");try{if(await this._startInternal(),this._connectionState=hn.Connected,this._logger.log(Ot.Information,"HubConnection reconnected successfully."),0!==this._reconnectedCallbacks.length)try{this._reconnectedCallbacks.forEach((e=>e.apply(this,[this.connection.connectionId])))}catch(e){this._logger.log(Ot.Error,`An onreconnected callback called with connectionId '${this.connection.connectionId}; threw error '${e}'.`)}return}catch(e){if(this._logger.log(Ot.Information,`Reconnect attempt failed because of error '${e}'.`),this._connectionState!==hn.Reconnecting)return this._logger.log(Ot.Debug,`Connection moved to the '${this._connectionState}' from the reconnecting state during reconnect attempt. Done reconnecting.`),void(this._connectionState===hn.Disconnecting&&this._completeClose());o=e instanceof Error?e:new Error(e.toString()),r=this._getNextRetryDelay(n++,Date.now()-t,o)}}this._logger.log(Ot.Information,`Reconnect retries have been exhausted after ${Date.now()-t} ms and ${n} failed attempts. Connection disconnecting.`),this._completeClose()}_getNextRetryDelay(e,t,n){try{return this._reconnectPolicy.nextRetryDelayInMilliseconds({elapsedMilliseconds:t,previousRetryCount:e,retryReason:n})}catch(n){return this._logger.log(Ot.Error,`IRetryPolicy.nextRetryDelayInMilliseconds(${e}, ${t}) threw error '${n}'.`),null}}_cancelCallbacksWithError(e){const t=this._callbacks;this._callbacks={},Object.keys(t).forEach((n=>{const o=t[n];try{o(null,e)}catch(t){this._logger.log(Ot.Error,`Stream 'error' callback called with '${e}' threw error: ${Qt(t)}`)}}))}_cleanupPingTimer(){this._pingServerHandle&&(clearTimeout(this._pingServerHandle),this._pingServerHandle=void 0)}_cleanupTimeout(){this._timeoutHandle&&clearTimeout(this._timeoutHandle)}_createInvocation(e,t,n,o){if(n)return 0!==o.length?{arguments:t,streamIds:o,target:e,type:ln.Invocation}:{arguments:t,target:e,type:ln.Invocation};{const n=this._invocationId;return this._invocationId++,0!==o.length?{arguments:t,invocationId:n.toString(),streamIds:o,target:e,type:ln.Invocation}:{arguments:t,invocationId:n.toString(),target:e,type:ln.Invocation}}}_launchStreams(e,t){if(0!==e.length){t||(t=Promise.resolve());for(const n in e)e[n].subscribe({complete:()=>{t=t.then((()=>this._sendWithProtocol(this._createCompletionMessage(n))))},error:e=>{let o;o=e instanceof Error?e.message:e&&e.toString?e.toString():"Unknown error",t=t.then((()=>this._sendWithProtocol(this._createCompletionMessage(n,o))))},next:e=>{t=t.then((()=>this._sendWithProtocol(this._createStreamItemMessage(n,e))))}})}}_replaceStreamingParams(e){const t=[],n=[];for(let o=0;o0)&&(t=!1,this._accessToken=await this._accessTokenFactory()),this._setAuthorizationHeader(e);const n=await this._innerClient.send(e);return t&&401===n.statusCode&&this._accessTokenFactory?(this._accessToken=await this._accessTokenFactory(),this._setAuthorizationHeader(e),await this._innerClient.send(e)):n}_setAuthorizationHeader(e){e.headers||(e.headers={}),this._accessToken?e.headers[vn.Authorization]=`Bearer ${this._accessToken}`:this._accessTokenFactory&&e.headers[vn.Authorization]&&delete e.headers[vn.Authorization]}getCookieString(e){return this._innerClient.getCookieString(e)}}class _n extends wn{constructor(e){super(),this._logger=e;const t={_fetchType:void 0,_jar:void 0};var o;o=t,"undefined"==typeof fetch&&(o._jar=new(n(628).CookieJar),"undefined"==typeof fetch?o._fetchType=n(200):o._fetchType=fetch,o._fetchType=n(203)(o._fetchType,o._jar),1)?(this._fetchType=t._fetchType,this._jar=t._jar):this._fetchType=fetch.bind(function(){if("undefined"!=typeof globalThis)return globalThis;if("undefined"!=typeof self)return self;if("undefined"!=typeof window)return window;if(void 0!==n.g)return n.g;throw new Error("could not find global")}()),this._abortControllerType=AbortController;const r={_abortControllerType:this._abortControllerType};(function(e){return"undefined"==typeof AbortController&&(e._abortControllerType=n(778),!0)})(r)&&(this._abortControllerType=r._abortControllerType)}async send(e){if(e.abortSignal&&e.abortSignal.aborted)throw new nn;if(!e.method)throw new Error("No method defined.");if(!e.url)throw new Error("No url defined.");const t=new this._abortControllerType;let n;e.abortSignal&&(e.abortSignal.onabort=()=>{t.abort(),n=new nn});let o,r=null;if(e.timeout){const o=e.timeout;r=setTimeout((()=>{t.abort(),this._logger.log(Ot.Warning,"Timeout from HTTP request."),n=new tn}),o)}""===e.content&&(e.content=void 0),e.content&&(e.headers=e.headers||{},zt(e.content)?e.headers["Content-Type"]="application/octet-stream":e.headers["Content-Type"]="text/plain;charset=UTF-8");try{o=await this._fetchType(e.url,{body:e.content,cache:"no-cache",credentials:!0===e.withCredentials?"include":"same-origin",headers:{"X-Requested-With":"XMLHttpRequest",...e.headers},method:e.method,mode:"cors",redirect:"follow",signal:t.signal})}catch(e){if(n)throw n;throw this._logger.log(Ot.Warning,`Error from HTTP request. ${e}.`),e}finally{r&&clearTimeout(r),e.abortSignal&&(e.abortSignal.onabort=null)}if(!o.ok){const e=await Sn(o,"text");throw new en(e||o.statusText,o.status)}const i=Sn(o,e.responseType),s=await i;return new yn(o.status,o.statusText,s)}getCookieString(e){return""}}function Sn(e,t){let n;switch(t){case"arraybuffer":n=e.arrayBuffer();break;case"text":default:n=e.text();break;case"blob":case"document":case"json":throw new Error(`${t} is not supported.`)}return n}class Cn extends wn{constructor(e){super(),this._logger=e}send(e){return e.abortSignal&&e.abortSignal.aborted?Promise.reject(new nn):e.method?e.url?new Promise(((t,n)=>{const o=new XMLHttpRequest;o.open(e.method,e.url,!0),o.withCredentials=void 0===e.withCredentials||e.withCredentials,o.setRequestHeader("X-Requested-With","XMLHttpRequest"),""===e.content&&(e.content=void 0),e.content&&(zt(e.content)?o.setRequestHeader("Content-Type","application/octet-stream"):o.setRequestHeader("Content-Type","text/plain;charset=UTF-8"));const r=e.headers;r&&Object.keys(r).forEach((e=>{o.setRequestHeader(e,r[e])})),e.responseType&&(o.responseType=e.responseType),e.abortSignal&&(e.abortSignal.onabort=()=>{o.abort(),n(new nn)}),e.timeout&&(o.timeout=e.timeout),o.onload=()=>{e.abortSignal&&(e.abortSignal.onabort=null),o.status>=200&&o.status<300?t(new yn(o.status,o.statusText,o.response||o.responseText)):n(new en(o.response||o.responseText||o.statusText,o.status))},o.onerror=()=>{this._logger.log(Ot.Warning,`Error from HTTP request. ${o.status}: ${o.statusText}.`),n(new en(o.statusText,o.status))},o.ontimeout=()=>{this._logger.log(Ot.Warning,"Timeout from HTTP request."),n(new tn)},o.send(e.content)})):Promise.reject(new Error("No url defined.")):Promise.reject(new Error("No method defined."))}}class En extends wn{constructor(e){if(super(),"undefined"!=typeof fetch)this._httpClient=new _n(e);else{if("undefined"==typeof XMLHttpRequest)throw new Error("No usable HttpClient found.");this._httpClient=new Cn(e)}}send(e){return e.abortSignal&&e.abortSignal.aborted?Promise.reject(new nn):e.method?e.url?this._httpClient.send(e):Promise.reject(new Error("No url defined.")):Promise.reject(new Error("No method defined."))}getCookieString(e){return this._httpClient.getCookieString(e)}}var In,kn;!function(e){e[e.None=0]="None",e[e.WebSockets=1]="WebSockets",e[e.ServerSentEvents=2]="ServerSentEvents",e[e.LongPolling=4]="LongPolling"}(In||(In={})),function(e){e[e.Text=1]="Text",e[e.Binary=2]="Binary"}(kn||(kn={}));class Tn{constructor(){this._isAborted=!1,this.onabort=null}abort(){this._isAborted||(this._isAborted=!0,this.onabort&&this.onabort())}get signal(){return this}get aborted(){return this._isAborted}}class Rn{get pollAborted(){return this._pollAbort.aborted}constructor(e,t,n){this._httpClient=e,this._logger=t,this._pollAbort=new Tn,this._options=n,this._running=!1,this.onreceive=null,this.onclose=null}async connect(e,t){if(Ht.isRequired(e,"url"),Ht.isRequired(t,"transferFormat"),Ht.isIn(t,kn,"transferFormat"),this._url=e,this._logger.log(Ot.Trace,"(LongPolling transport) Connecting."),t===kn.Binary&&"undefined"!=typeof XMLHttpRequest&&"string"!=typeof(new XMLHttpRequest).responseType)throw new Error("Binary protocols over XmlHttpRequest not implementing advanced features are not supported.");const[n,o]=Vt(),r={[n]:o,...this._options.headers},i={abortSignal:this._pollAbort.signal,headers:r,timeout:1e5,withCredentials:this._options.withCredentials};t===kn.Binary&&(i.responseType="arraybuffer");const s=`${e}&_=${Date.now()}`;this._logger.log(Ot.Trace,`(LongPolling transport) polling: ${s}.`);const a=await this._httpClient.get(s,i);200!==a.statusCode?(this._logger.log(Ot.Error,`(LongPolling transport) Unexpected response code: ${a.statusCode}.`),this._closeError=new en(a.statusText||"",a.statusCode),this._running=!1):this._running=!0,this._receiving=this._poll(this._url,i)}async _poll(e,t){try{for(;this._running;)try{const n=`${e}&_=${Date.now()}`;this._logger.log(Ot.Trace,`(LongPolling transport) polling: ${n}.`);const o=await this._httpClient.get(n,t);204===o.statusCode?(this._logger.log(Ot.Information,"(LongPolling transport) Poll terminated by server."),this._running=!1):200!==o.statusCode?(this._logger.log(Ot.Error,`(LongPolling transport) Unexpected response code: ${o.statusCode}.`),this._closeError=new en(o.statusText||"",o.statusCode),this._running=!1):o.content?(this._logger.log(Ot.Trace,`(LongPolling transport) data received. ${jt(o.content,this._options.logMessageContent)}.`),this.onreceive&&this.onreceive(o.content)):this._logger.log(Ot.Trace,"(LongPolling transport) Poll timed out, reissuing.")}catch(e){this._running?e instanceof tn?this._logger.log(Ot.Trace,"(LongPolling transport) Poll timed out, reissuing."):(this._closeError=e,this._running=!1):this._logger.log(Ot.Trace,`(LongPolling transport) Poll errored after shutdown: ${e.message}`)}}finally{this._logger.log(Ot.Trace,"(LongPolling transport) Polling complete."),this.pollAborted||this._raiseOnClose()}}async send(e){return this._running?qt(this._logger,"LongPolling",this._httpClient,this._url,e,this._options):Promise.reject(new Error("Cannot send until the transport is connected"))}async stop(){this._logger.log(Ot.Trace,"(LongPolling transport) Stopping polling."),this._running=!1,this._pollAbort.abort();try{await this._receiving,this._logger.log(Ot.Trace,`(LongPolling transport) sending DELETE request to ${this._url}.`);const e={},[t,n]=Vt();e[t]=n;const o={headers:{...e,...this._options.headers},timeout:this._options.timeout,withCredentials:this._options.withCredentials};let r;try{await this._httpClient.delete(this._url,o)}catch(e){r=e}r?r instanceof en&&(404===r.statusCode?this._logger.log(Ot.Trace,"(LongPolling transport) A 404 response was returned from sending a DELETE request."):this._logger.log(Ot.Trace,`(LongPolling transport) Error sending a DELETE request: ${r}`)):this._logger.log(Ot.Trace,"(LongPolling transport) DELETE request accepted.")}finally{this._logger.log(Ot.Trace,"(LongPolling transport) Stop finished."),this._raiseOnClose()}}_raiseOnClose(){if(this.onclose){let e="(LongPolling transport) Firing onclose event.";this._closeError&&(e+=" Error: "+this._closeError),this._logger.log(Ot.Trace,e),this.onclose(this._closeError)}}}class An{constructor(e,t,n,o){this._httpClient=e,this._accessToken=t,this._logger=n,this._options=o,this.onreceive=null,this.onclose=null}async connect(e,t){return Ht.isRequired(e,"url"),Ht.isRequired(t,"transferFormat"),Ht.isIn(t,kn,"transferFormat"),this._logger.log(Ot.Trace,"(SSE transport) Connecting."),this._url=e,this._accessToken&&(e+=(e.indexOf("?")<0?"?":"&")+`access_token=${encodeURIComponent(this._accessToken)}`),new Promise(((n,o)=>{let r,i=!1;if(t===kn.Text){if(Wt.isBrowser||Wt.isWebWorker)r=new this._options.EventSource(e,{withCredentials:this._options.withCredentials});else{const t=this._httpClient.getCookieString(e),n={};n.Cookie=t;const[o,i]=Vt();n[o]=i,r=new this._options.EventSource(e,{withCredentials:this._options.withCredentials,headers:{...n,...this._options.headers}})}try{r.onmessage=e=>{if(this.onreceive)try{this._logger.log(Ot.Trace,`(SSE transport) data received. ${jt(e.data,this._options.logMessageContent)}.`),this.onreceive(e.data)}catch(e){return void this._close(e)}},r.onerror=e=>{i?this._close():o(new Error("EventSource failed to connect. The connection could not be found on the server, either the connection ID is not present on the server, or a proxy is refusing/buffering the connection. If you have multiple servers check that sticky sessions are enabled."))},r.onopen=()=>{this._logger.log(Ot.Information,`SSE connected to ${this._url}`),this._eventSource=r,i=!0,n()}}catch(e){return void o(e)}}else o(new Error("The Server-Sent Events transport only supports the 'Text' transfer format"))}))}async send(e){return this._eventSource?qt(this._logger,"SSE",this._httpClient,this._url,e,this._options):Promise.reject(new Error("Cannot send until the transport is connected"))}stop(){return this._close(),Promise.resolve()}_close(e){this._eventSource&&(this._eventSource.close(),this._eventSource=void 0,this.onclose&&this.onclose(e))}}class Dn{constructor(e,t,n,o,r,i){this._logger=n,this._accessTokenFactory=t,this._logMessageContent=o,this._webSocketConstructor=r,this._httpClient=e,this.onreceive=null,this.onclose=null,this._headers=i}async connect(e,t){let n;return Ht.isRequired(e,"url"),Ht.isRequired(t,"transferFormat"),Ht.isIn(t,kn,"transferFormat"),this._logger.log(Ot.Trace,"(WebSockets transport) Connecting."),this._accessTokenFactory&&(n=await this._accessTokenFactory()),new Promise(((o,r)=>{let i;e=e.replace(/^http/,"ws");const s=this._httpClient.getCookieString(e);let a=!1;if(Wt.isReactNative){const t={},[o,r]=Vt();t[o]=r,n&&(t[vn.Authorization]=`Bearer ${n}`),s&&(t[vn.Cookie]=s),i=new this._webSocketConstructor(e,void 0,{headers:{...t,...this._headers}})}else n&&(e+=(e.indexOf("?")<0?"?":"&")+`access_token=${encodeURIComponent(n)}`);i||(i=new this._webSocketConstructor(e)),t===kn.Binary&&(i.binaryType="arraybuffer"),i.onopen=t=>{this._logger.log(Ot.Information,`WebSocket connected to ${e}.`),this._webSocket=i,a=!0,o()},i.onerror=e=>{let t=null;t="undefined"!=typeof ErrorEvent&&e instanceof ErrorEvent?e.error:"There was an error with the transport",this._logger.log(Ot.Information,`(WebSockets transport) ${t}.`)},i.onmessage=e=>{if(this._logger.log(Ot.Trace,`(WebSockets transport) data received. ${jt(e.data,this._logMessageContent)}.`),this.onreceive)try{this.onreceive(e.data)}catch(e){return void this._close(e)}},i.onclose=e=>{if(a)this._close(e);else{let t=null;t="undefined"!=typeof ErrorEvent&&e instanceof ErrorEvent?e.error:"WebSocket failed to connect. The connection could not be found on the server, either the endpoint may not be a SignalR endpoint, the connection ID is not present on the server, or there is a proxy blocking WebSockets. If you have multiple servers check that sticky sessions are enabled.",r(new Error(t))}}}))}send(e){return this._webSocket&&this._webSocket.readyState===this._webSocketConstructor.OPEN?(this._logger.log(Ot.Trace,`(WebSockets transport) sending data. ${jt(e,this._logMessageContent)}.`),this._webSocket.send(e),Promise.resolve()):Promise.reject("WebSocket is not in the OPEN state")}stop(){return this._webSocket&&this._close(void 0),Promise.resolve()}_close(e){this._webSocket&&(this._webSocket.onclose=()=>{},this._webSocket.onmessage=()=>{},this._webSocket.onerror=()=>{},this._webSocket.close(),this._webSocket=void 0),this._logger.log(Ot.Trace,"(WebSockets transport) socket closed."),this.onclose&&(!this._isCloseEvent(e)||!1!==e.wasClean&&1e3===e.code?e instanceof Error?this.onclose(e):this.onclose():this.onclose(new Error(`WebSocket closed with status code: ${e.code} (${e.reason||"no reason given"}).`)))}_isCloseEvent(e){return e&&"boolean"==typeof e.wasClean&&"number"==typeof e.code}}class xn{constructor(e,t={}){if(this._stopPromiseResolver=()=>{},this.features={},this._negotiateVersion=1,Ht.isRequired(e,"url"),this._logger=function(e){return void 0===e?new Kt(Ot.Information):null===e?Ft.instance:void 0!==e.log?e:new Kt(e)}(t.logger),this.baseUrl=this._resolveUrl(e),(t=t||{}).logMessageContent=void 0!==t.logMessageContent&&t.logMessageContent,"boolean"!=typeof t.withCredentials&&void 0!==t.withCredentials)throw new Error("withCredentials option was not a 'boolean' or 'undefined' value");t.withCredentials=void 0===t.withCredentials||t.withCredentials,t.timeout=void 0===t.timeout?1e5:t.timeout,"undefined"==typeof WebSocket||t.WebSocket||(t.WebSocket=WebSocket),"undefined"==typeof EventSource||t.EventSource||(t.EventSource=EventSource),this._httpClient=new bn(t.httpClient||new En(this._logger),t.accessTokenFactory),this._connectionState="Disconnected",this._connectionStarted=!1,this._options=t,this.onreceive=null,this.onclose=null}async start(e){if(e=e||kn.Binary,Ht.isIn(e,kn,"transferFormat"),this._logger.log(Ot.Debug,`Starting connection with transfer format '${kn[e]}'.`),"Disconnected"!==this._connectionState)return Promise.reject(new Error("Cannot start an HttpConnection that is not in the 'Disconnected' state."));if(this._connectionState="Connecting",this._startInternalPromise=this._startInternal(e),await this._startInternalPromise,"Disconnecting"===this._connectionState){const e="Failed to start the HttpConnection before stop() was called.";return this._logger.log(Ot.Error,e),await this._stopPromise,Promise.reject(new nn(e))}if("Connected"!==this._connectionState){const e="HttpConnection.startInternal completed gracefully but didn't enter the connection into the connected state!";return this._logger.log(Ot.Error,e),Promise.reject(new nn(e))}this._connectionStarted=!0}send(e){return"Connected"!==this._connectionState?Promise.reject(new Error("Cannot send data if the connection is not in the 'Connected' State.")):(this._sendQueue||(this._sendQueue=new Nn(this.transport)),this._sendQueue.send(e))}async stop(e){return"Disconnected"===this._connectionState?(this._logger.log(Ot.Debug,`Call to HttpConnection.stop(${e}) ignored because the connection is already in the disconnected state.`),Promise.resolve()):"Disconnecting"===this._connectionState?(this._logger.log(Ot.Debug,`Call to HttpConnection.stop(${e}) ignored because the connection is already in the disconnecting state.`),this._stopPromise):(this._connectionState="Disconnecting",this._stopPromise=new Promise((e=>{this._stopPromiseResolver=e})),await this._stopInternal(e),void await this._stopPromise)}async _stopInternal(e){this._stopError=e;try{await this._startInternalPromise}catch(e){}if(this.transport){try{await this.transport.stop()}catch(e){this._logger.log(Ot.Error,`HttpConnection.transport.stop() threw error '${e}'.`),this._stopConnection()}this.transport=void 0}else this._logger.log(Ot.Debug,"HttpConnection.transport is undefined in HttpConnection.stop() because start() failed.")}async _startInternal(e){let t=this.baseUrl;this._accessTokenFactory=this._options.accessTokenFactory,this._httpClient._accessTokenFactory=this._accessTokenFactory;try{if(this._options.skipNegotiation){if(this._options.transport!==In.WebSockets)throw new Error("Negotiation can only be skipped when using the WebSocket transport directly.");this.transport=this._constructTransport(In.WebSockets),await this._startTransport(t,e)}else{let n=null,o=0;do{if(n=await this._getNegotiationResponse(t),"Disconnecting"===this._connectionState||"Disconnected"===this._connectionState)throw new nn("The connection was stopped during negotiation.");if(n.error)throw new Error(n.error);if(n.ProtocolVersion)throw new Error("Detected a connection attempt to an ASP.NET SignalR Server. This client only supports connecting to an ASP.NET Core SignalR Server. See https://aka.ms/signalr-core-differences for details.");if(n.url&&(t=n.url),n.accessToken){const e=n.accessToken;this._accessTokenFactory=()=>e,this._httpClient._accessToken=e,this._httpClient._accessTokenFactory=void 0}o++}while(n.url&&o<100);if(100===o&&n.url)throw new Error("Negotiate redirection limit exceeded.");await this._createTransport(t,this._options.transport,n,e)}this.transport instanceof Rn&&(this.features.inherentKeepAlive=!0),"Connecting"===this._connectionState&&(this._logger.log(Ot.Debug,"The HttpConnection connected successfully."),this._connectionState="Connected")}catch(e){return this._logger.log(Ot.Error,"Failed to start the connection: "+e),this._connectionState="Disconnected",this.transport=void 0,this._stopPromiseResolver(),Promise.reject(e)}}async _getNegotiationResponse(e){const t={},[n,o]=Vt();t[n]=o;const r=this._resolveNegotiateUrl(e);this._logger.log(Ot.Debug,`Sending negotiation request: ${r}.`);try{const e=await this._httpClient.post(r,{content:"",headers:{...t,...this._options.headers},timeout:this._options.timeout,withCredentials:this._options.withCredentials});if(200!==e.statusCode)return Promise.reject(new Error(`Unexpected status code returned from negotiate '${e.statusCode}'`));const n=JSON.parse(e.content);return(!n.negotiateVersion||n.negotiateVersion<1)&&(n.connectionToken=n.connectionId),n.useStatefulReconnect&&!0!==this._options._useStatefulReconnect?Promise.reject(new an("Client didn't negotiate Stateful Reconnect but the server did.")):n}catch(e){let t="Failed to complete negotiation with the server: "+e;return e instanceof en&&404===e.statusCode&&(t+=" Either this is not a SignalR endpoint or there is a proxy blocking the connection."),this._logger.log(Ot.Error,t),Promise.reject(new an(t))}}_createConnectUrl(e,t){return t?e+(-1===e.indexOf("?")?"?":"&")+`id=${t}`:e}async _createTransport(e,t,n,o){let r=this._createConnectUrl(e,n.connectionToken);if(this._isITransport(t))return this._logger.log(Ot.Debug,"Connection was provided an instance of ITransport, using that directly."),this.transport=t,await this._startTransport(r,o),void(this.connectionId=n.connectionId);const i=[],s=n.availableTransports||[];let a=n;for(const n of s){const s=this._resolveTransportOrError(n,t,o,!0===(null==a?void 0:a.useStatefulReconnect));if(s instanceof Error)i.push(`${n.transport} failed:`),i.push(s);else if(this._isITransport(s)){if(this.transport=s,!a){try{a=await this._getNegotiationResponse(e)}catch(e){return Promise.reject(e)}r=this._createConnectUrl(e,a.connectionToken)}try{return await this._startTransport(r,o),void(this.connectionId=a.connectionId)}catch(e){if(this._logger.log(Ot.Error,`Failed to start the transport '${n.transport}': ${e}`),a=void 0,i.push(new sn(`${n.transport} failed: ${e}`,In[n.transport])),"Connecting"!==this._connectionState){const e="Failed to select transport before stop() was called.";return this._logger.log(Ot.Debug,e),Promise.reject(new nn(e))}}}}return i.length>0?Promise.reject(new cn(`Unable to connect to the server with any of the available transports. ${i.join(" ")}`,i)):Promise.reject(new Error("None of the transports supported by the client are supported by the server."))}_constructTransport(e){switch(e){case In.WebSockets:if(!this._options.WebSocket)throw new Error("'WebSocket' is not supported in your environment.");return new Dn(this._httpClient,this._accessTokenFactory,this._logger,this._options.logMessageContent,this._options.WebSocket,this._options.headers||{});case In.ServerSentEvents:if(!this._options.EventSource)throw new Error("'EventSource' is not supported in your environment.");return new An(this._httpClient,this._httpClient._accessToken,this._logger,this._options);case In.LongPolling:return new Rn(this._httpClient,this._logger,this._options);default:throw new Error(`Unknown transport: ${e}.`)}}_startTransport(e,t){return this.transport.onreceive=this.onreceive,this.features.reconnect?this.transport.onclose=async n=>{let o=!1;if(this.features.reconnect){try{this.features.disconnected(),await this.transport.connect(e,t),await this.features.resend()}catch{o=!0}o&&this._stopConnection(n)}else this._stopConnection(n)}:this.transport.onclose=e=>this._stopConnection(e),this.transport.connect(e,t)}_resolveTransportOrError(e,t,n,o){const r=In[e.transport];if(null==r)return this._logger.log(Ot.Debug,`Skipping transport '${e.transport}' because it is not supported by this client.`),new Error(`Skipping transport '${e.transport}' because it is not supported by this client.`);if(!function(e,t){return!e||0!=(t&e)}(t,r))return this._logger.log(Ot.Debug,`Skipping transport '${In[r]}' because it was disabled by the client.`),new rn(`'${In[r]}' is disabled by the client.`,r);if(!(e.transferFormats.map((e=>kn[e])).indexOf(n)>=0))return this._logger.log(Ot.Debug,`Skipping transport '${In[r]}' because it does not support the requested transfer format '${kn[n]}'.`),new Error(`'${In[r]}' does not support ${kn[n]}.`);if(r===In.WebSockets&&!this._options.WebSocket||r===In.ServerSentEvents&&!this._options.EventSource)return this._logger.log(Ot.Debug,`Skipping transport '${In[r]}' because it is not supported in your environment.'`),new on(`'${In[r]}' is not supported in your environment.`,r);this._logger.log(Ot.Debug,`Selecting transport '${In[r]}'.`);try{return this.features.reconnect=r===In.WebSockets?o:void 0,this._constructTransport(r)}catch(e){return e}}_isITransport(e){return e&&"object"==typeof e&&"connect"in e}_stopConnection(e){if(this._logger.log(Ot.Debug,`HttpConnection.stopConnection(${e}) called while in state ${this._connectionState}.`),this.transport=void 0,e=this._stopError||e,this._stopError=void 0,"Disconnected"!==this._connectionState){if("Connecting"===this._connectionState)throw this._logger.log(Ot.Warning,`Call to HttpConnection.stopConnection(${e}) was ignored because the connection is still in the connecting state.`),new Error(`HttpConnection.stopConnection(${e}) was called while the connection is still in the connecting state.`);if("Disconnecting"===this._connectionState&&this._stopPromiseResolver(),e?this._logger.log(Ot.Error,`Connection disconnected with error '${e}'.`):this._logger.log(Ot.Information,"Connection disconnected."),this._sendQueue&&(this._sendQueue.stop().catch((e=>{this._logger.log(Ot.Error,`TransportSendQueue.stop() threw error '${e}'.`)})),this._sendQueue=void 0),this.connectionId=void 0,this._connectionState="Disconnected",this._connectionStarted){this._connectionStarted=!1;try{this.onclose&&this.onclose(e)}catch(t){this._logger.log(Ot.Error,`HttpConnection.onclose(${e}) threw error '${t}'.`)}}}else this._logger.log(Ot.Debug,`Call to HttpConnection.stopConnection(${e}) was ignored because the connection is already in the disconnected state.`)}_resolveUrl(e){if(0===e.lastIndexOf("https://",0)||0===e.lastIndexOf("http://",0))return e;if(!Wt.isBrowser)throw new Error(`Cannot resolve '${e}'.`);const t=window.document.createElement("a");return t.href=e,this._logger.log(Ot.Information,`Normalizing '${e}' to '${t.href}'.`),t.href}_resolveNegotiateUrl(e){const t=new URL(e);t.pathname.endsWith("/")?t.pathname+="negotiate":t.pathname+="/negotiate";const n=new URLSearchParams(t.searchParams);return n.has("negotiateVersion")||n.append("negotiateVersion",this._negotiateVersion.toString()),n.has("useStatefulReconnect")?"true"===n.get("useStatefulReconnect")&&(this._options._useStatefulReconnect=!0):!0===this._options._useStatefulReconnect&&n.append("useStatefulReconnect","true"),t.search=n.toString(),t.toString()}}class Nn{constructor(e){this._transport=e,this._buffer=[],this._executing=!0,this._sendBufferedData=new Pn,this._transportResult=new Pn,this._sendLoopPromise=this._sendLoop()}send(e){return this._bufferData(e),this._transportResult||(this._transportResult=new Pn),this._transportResult.promise}stop(){return this._executing=!1,this._sendBufferedData.resolve(),this._sendLoopPromise}_bufferData(e){if(this._buffer.length&&typeof this._buffer[0]!=typeof e)throw new Error(`Expected data to be of type ${typeof this._buffer} but was of type ${typeof e}`);this._buffer.push(e),this._sendBufferedData.resolve()}async _sendLoop(){for(;;){if(await this._sendBufferedData.promise,!this._executing){this._transportResult&&this._transportResult.reject("Connection stopped.");break}this._sendBufferedData=new Pn;const e=this._transportResult;this._transportResult=void 0;const t="string"==typeof this._buffer[0]?this._buffer.join(""):Nn._concatBuffers(this._buffer);this._buffer.length=0;try{await this._transport.send(t),e.resolve()}catch(t){e.reject(t)}}}static _concatBuffers(e){const t=e.map((e=>e.byteLength)).reduce(((e,t)=>e+t)),n=new Uint8Array(t);let o=0;for(const t of e)n.set(new Uint8Array(t),o),o+=t.byteLength;return n.buffer}}class Pn{constructor(){this.promise=new Promise(((e,t)=>[this._resolver,this._rejecter]=[e,t]))}resolve(){this._resolver()}reject(e){this._rejecter(e)}}class Mn{constructor(){this.name="json",this.version=2,this.transferFormat=kn.Text}parseMessages(e,t){if("string"!=typeof e)throw new Error("Invalid input for JSON hub protocol. Expected a string.");if(!e)return[];null===t&&(t=Ft.instance);const n=Bt.parse(e),o=[];for(const e of n){const n=JSON.parse(e);if("number"!=typeof n.type)throw new Error("Invalid payload.");switch(n.type){case ln.Invocation:this._isInvocationMessage(n);break;case ln.StreamItem:this._isStreamItemMessage(n);break;case ln.Completion:this._isCompletionMessage(n);break;case ln.Ping:case ln.Close:break;case ln.Ack:this._isAckMessage(n);break;case ln.Sequence:this._isSequenceMessage(n);break;default:t.log(Ot.Information,"Unknown message type '"+n.type+"' ignored.");continue}o.push(n)}return o}writeMessage(e){return Bt.write(JSON.stringify(e))}_isInvocationMessage(e){this._assertNotEmptyString(e.target,"Invalid payload for Invocation message."),void 0!==e.invocationId&&this._assertNotEmptyString(e.invocationId,"Invalid payload for Invocation message.")}_isStreamItemMessage(e){if(this._assertNotEmptyString(e.invocationId,"Invalid payload for StreamItem message."),void 0===e.item)throw new Error("Invalid payload for StreamItem message.")}_isCompletionMessage(e){if(e.result&&e.error)throw new Error("Invalid payload for Completion message.");!e.result&&e.error&&this._assertNotEmptyString(e.error,"Invalid payload for Completion message."),this._assertNotEmptyString(e.invocationId,"Invalid payload for Completion message.")}_isAckMessage(e){if("number"!=typeof e.sequenceId)throw new Error("Invalid SequenceId for Ack message.")}_isSequenceMessage(e){if("number"!=typeof e.sequenceId)throw new Error("Invalid SequenceId for Sequence message.")}_assertNotEmptyString(e,t){if("string"!=typeof e||""===e)throw new Error(t)}}const Un={trace:Ot.Trace,debug:Ot.Debug,info:Ot.Information,information:Ot.Information,warn:Ot.Warning,warning:Ot.Warning,error:Ot.Error,critical:Ot.Critical,none:Ot.None};class Ln{configureLogging(e){if(Ht.isRequired(e,"logging"),function(e){return void 0!==e.log}(e))this.logger=e;else if("string"==typeof e){const t=function(e){const t=Un[e.toLowerCase()];if(void 0!==t)return t;throw new Error(`Unknown log level: ${e}`)}(e);this.logger=new Kt(t)}else this.logger=new Kt(e);return this}withUrl(e,t){return Ht.isRequired(e,"url"),Ht.isNotEmpty(e,"url"),this.url=e,this.httpConnectionOptions="object"==typeof t?{...this.httpConnectionOptions,...t}:{...this.httpConnectionOptions,transport:t},this}withHubProtocol(e){return Ht.isRequired(e,"protocol"),this.protocol=e,this}withAutomaticReconnect(e){if(this.reconnectPolicy)throw new Error("A reconnectPolicy has already been set.");return e?Array.isArray(e)?this.reconnectPolicy=new mn(e):this.reconnectPolicy=e:this.reconnectPolicy=new mn,this}withServerTimeout(e){return Ht.isRequired(e,"milliseconds"),this._serverTimeoutInMilliseconds=e,this}withKeepAliveInterval(e){return Ht.isRequired(e,"milliseconds"),this._keepAliveIntervalInMilliseconds=e,this}withStatefulReconnect(e){return void 0===this.httpConnectionOptions&&(this.httpConnectionOptions={}),this.httpConnectionOptions._useStatefulReconnect=!0,this._statefulReconnectBufferSize=null==e?void 0:e.bufferSize,this}build(){const e=this.httpConnectionOptions||{};if(void 0===e.logger&&(e.logger=this.logger),!this.url)throw new Error("The 'HubConnectionBuilder.withUrl' method must be called before building the connection.");const t=new xn(this.url,e);return fn.create(t,this.logger||Ft.instance,this.protocol||new Mn,this.reconnectPolicy,this._serverTimeoutInMilliseconds,this._keepAliveIntervalInMilliseconds,this._statefulReconnectBufferSize)}}var Bn;!function(e){e[e.Default=0]="Default",e[e.Server=1]="Server",e[e.WebAssembly=2]="WebAssembly",e[e.WebView=3]="WebView"}(Bn||(Bn={}));var On,Fn,$n,Hn=4294967295;function Wn(e,t,n){var o=Math.floor(n/4294967296),r=n;e.setUint32(t,o),e.setUint32(t+4,r)}function jn(e,t){return 4294967296*e.getInt32(t)+e.getUint32(t+4)}var zn=("undefined"==typeof process||"never"!==(null===(On=null===process||void 0===process?void 0:process.env)||void 0===On?void 0:On.TEXT_ENCODING))&&"undefined"!=typeof TextEncoder&&"undefined"!=typeof TextDecoder;function qn(e){for(var t=e.length,n=0,o=0;o=55296&&r<=56319&&o65535&&(h-=65536,i.push(h>>>10&1023|55296),h=56320|1023&h),i.push(h)}else i.push(a);i.length>=4096&&(s+=String.fromCharCode.apply(String,i),i.length=0)}return i.length>0&&(s+=String.fromCharCode.apply(String,i)),s}var Gn,Yn=zn?new TextDecoder:null,Qn=zn?"undefined"!=typeof process&&"force"!==(null===($n=null===process||void 0===process?void 0:process.env)||void 0===$n?void 0:$n.TEXT_DECODER)?200:0:Hn,Zn=function(e,t){this.type=e,this.data=t},eo=(Gn=function(e,t){return Gn=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},Gn(e,t)},function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function n(){this.constructor=e}Gn(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}),to=function(e){function t(n){var o=e.call(this,n)||this,r=Object.create(t.prototype);return Object.setPrototypeOf(o,r),Object.defineProperty(o,"name",{configurable:!0,enumerable:!1,value:t.name}),o}return eo(t,e),t}(Error),no={type:-1,encode:function(e){var t,n,o,r;return e instanceof Date?function(e){var t,n=e.sec,o=e.nsec;if(n>=0&&o>=0&&n<=17179869183){if(0===o&&n<=4294967295){var r=new Uint8Array(4);return(t=new DataView(r.buffer)).setUint32(0,n),r}var i=n/4294967296,s=4294967295&n;return r=new Uint8Array(8),(t=new DataView(r.buffer)).setUint32(0,o<<2|3&i),t.setUint32(4,s),r}return r=new Uint8Array(12),(t=new DataView(r.buffer)).setUint32(0,o),Wn(t,4,n),r}((o=1e6*((t=e.getTime())-1e3*(n=Math.floor(t/1e3))),{sec:n+(r=Math.floor(o/1e9)),nsec:o-1e9*r})):null},decode:function(e){var t=function(e){var t=new DataView(e.buffer,e.byteOffset,e.byteLength);switch(e.byteLength){case 4:return{sec:t.getUint32(0),nsec:0};case 8:var n=t.getUint32(0);return{sec:4294967296*(3&n)+t.getUint32(4),nsec:n>>>2};case 12:return{sec:jn(t,4),nsec:t.getUint32(0)};default:throw new to("Unrecognized data size for timestamp (expected 4, 8, or 12): ".concat(e.length))}}(e);return new Date(1e3*t.sec+t.nsec/1e6)}},oo=function(){function e(){this.builtInEncoders=[],this.builtInDecoders=[],this.encoders=[],this.decoders=[],this.register(no)}return e.prototype.register=function(e){var t=e.type,n=e.encode,o=e.decode;if(t>=0)this.encoders[t]=n,this.decoders[t]=o;else{var r=1+t;this.builtInEncoders[r]=n,this.builtInDecoders[r]=o}},e.prototype.tryToEncode=function(e,t){for(var n=0;nthis.maxDepth)throw new Error("Too deep objects in depth ".concat(t));null==e?this.encodeNil():"boolean"==typeof e?this.encodeBoolean(e):"number"==typeof e?this.encodeNumber(e):"string"==typeof e?this.encodeString(e):this.encodeObject(e,t)},e.prototype.ensureBufferSizeToWrite=function(e){var t=this.pos+e;this.view.byteLength=0?e<128?this.writeU8(e):e<256?(this.writeU8(204),this.writeU8(e)):e<65536?(this.writeU8(205),this.writeU16(e)):e<4294967296?(this.writeU8(206),this.writeU32(e)):(this.writeU8(207),this.writeU64(e)):e>=-32?this.writeU8(224|e+32):e>=-128?(this.writeU8(208),this.writeI8(e)):e>=-32768?(this.writeU8(209),this.writeI16(e)):e>=-2147483648?(this.writeU8(210),this.writeI32(e)):(this.writeU8(211),this.writeI64(e)):this.forceFloat32?(this.writeU8(202),this.writeF32(e)):(this.writeU8(203),this.writeF64(e))},e.prototype.writeStringHeader=function(e){if(e<32)this.writeU8(160+e);else if(e<256)this.writeU8(217),this.writeU8(e);else if(e<65536)this.writeU8(218),this.writeU16(e);else{if(!(e<4294967296))throw new Error("Too long string: ".concat(e," bytes in UTF-8"));this.writeU8(219),this.writeU32(e)}},e.prototype.encodeString=function(e){if(e.length>Kn){var t=qn(e);this.ensureBufferSizeToWrite(5+t),this.writeStringHeader(t),Vn(e,this.bytes,this.pos),this.pos+=t}else t=qn(e),this.ensureBufferSizeToWrite(5+t),this.writeStringHeader(t),function(e,t,n){for(var o=e.length,r=n,i=0;i>6&31|192;else{if(s>=55296&&s<=56319&&i>12&15|224,t[r++]=s>>6&63|128):(t[r++]=s>>18&7|240,t[r++]=s>>12&63|128,t[r++]=s>>6&63|128)}t[r++]=63&s|128}else t[r++]=s}}(e,this.bytes,this.pos),this.pos+=t},e.prototype.encodeObject=function(e,t){var n=this.extensionCodec.tryToEncode(e,this.context);if(null!=n)this.encodeExtension(n);else if(Array.isArray(e))this.encodeArray(e,t);else if(ArrayBuffer.isView(e))this.encodeBinary(e);else{if("object"!=typeof e)throw new Error("Unrecognized object: ".concat(Object.prototype.toString.apply(e)));this.encodeMap(e,t)}},e.prototype.encodeBinary=function(e){var t=e.byteLength;if(t<256)this.writeU8(196),this.writeU8(t);else if(t<65536)this.writeU8(197),this.writeU16(t);else{if(!(t<4294967296))throw new Error("Too large binary: ".concat(t));this.writeU8(198),this.writeU32(t)}var n=ro(e);this.writeU8a(n)},e.prototype.encodeArray=function(e,t){var n=e.length;if(n<16)this.writeU8(144+n);else if(n<65536)this.writeU8(220),this.writeU16(n);else{if(!(n<4294967296))throw new Error("Too large array: ".concat(n));this.writeU8(221),this.writeU32(n)}for(var o=0,r=e;o0&&e<=this.maxKeyLength},e.prototype.find=function(e,t,n){e:for(var o=0,r=this.caches[n-1];o=this.maxLengthPerKey?n[Math.random()*n.length|0]=o:n.push(o)},e.prototype.decode=function(e,t,n){var o=this.find(e,t,n);if(null!=o)return this.hit++,o;this.miss++;var r=Xn(e,t,n),i=Uint8Array.prototype.slice.call(e,t,t+n);return this.store(i,r),r},e}(),co=function(e,t){var n,o,r,i,s={label:0,sent:function(){if(1&r[0])throw r[1];return r[1]},trys:[],ops:[]};return i={next:a(0),throw:a(1),return:a(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function a(i){return function(a){return function(i){if(n)throw new TypeError("Generator is already executing.");for(;s;)try{if(n=1,o&&(r=2&i[0]?o.return:i[0]?o.throw||((r=o.return)&&r.call(o),0):o.next)&&!(r=r.call(o,i[1])).done)return r;switch(o=0,r&&(i=[2&i[0],r.value]),i[0]){case 0:case 1:r=i;break;case 4:return s.label++,{value:i[1],done:!1};case 5:s.label++,o=i[1],i=[0];continue;case 7:i=s.ops.pop(),s.trys.pop();continue;default:if(!((r=(r=s.trys).length>0&&r[r.length-1])||6!==i[0]&&2!==i[0])){s=0;continue}if(3===i[0]&&(!r||i[1]>r[0]&&i[1]=e},e.prototype.createExtraByteError=function(e){var t=this.view,n=this.pos;return new RangeError("Extra ".concat(t.byteLength-n," of ").concat(t.byteLength," byte(s) found at buffer[").concat(e,"]"))},e.prototype.decode=function(e){this.reinitializeState(),this.setBuffer(e);var t=this.doDecodeSync();if(this.hasRemaining(1))throw this.createExtraByteError(this.pos);return t},e.prototype.decodeMulti=function(e){return co(this,(function(t){switch(t.label){case 0:this.reinitializeState(),this.setBuffer(e),t.label=1;case 1:return this.hasRemaining(1)?[4,this.doDecodeSync()]:[3,3];case 2:return t.sent(),[3,1];case 3:return[2]}}))},e.prototype.decodeAsync=function(e){var t,n,o,r,i,s,a;return i=this,void 0,a=function(){var i,s,a,c,l,h,d,u;return co(this,(function(p){switch(p.label){case 0:i=!1,p.label=1;case 1:p.trys.push([1,6,7,12]),t=lo(e),p.label=2;case 2:return[4,t.next()];case 3:if((n=p.sent()).done)return[3,5];if(a=n.value,i)throw this.createExtraByteError(this.totalPos);this.appendBuffer(a);try{s=this.doDecodeSync(),i=!0}catch(e){if(!(e instanceof fo))throw e}this.totalPos+=this.pos,p.label=4;case 4:return[3,2];case 5:return[3,12];case 6:return c=p.sent(),o={error:c},[3,12];case 7:return p.trys.push([7,,10,11]),n&&!n.done&&(r=t.return)?[4,r.call(t)]:[3,9];case 8:p.sent(),p.label=9;case 9:return[3,11];case 10:if(o)throw o.error;return[7];case 11:return[7];case 12:if(i){if(this.hasRemaining(1))throw this.createExtraByteError(this.totalPos);return[2,s]}throw h=(l=this).headByte,d=l.pos,u=l.totalPos,new RangeError("Insufficient data in parsing ".concat(so(h)," at ").concat(u," (").concat(d," in the current buffer)"))}}))},new((s=void 0)||(s=Promise))((function(e,t){function n(e){try{r(a.next(e))}catch(e){t(e)}}function o(e){try{r(a.throw(e))}catch(e){t(e)}}function r(t){var r;t.done?e(t.value):(r=t.value,r instanceof s?r:new s((function(e){e(r)}))).then(n,o)}r((a=a.apply(i,[])).next())}))},e.prototype.decodeArrayStream=function(e){return this.decodeMultiAsync(e,!0)},e.prototype.decodeStream=function(e){return this.decodeMultiAsync(e,!1)},e.prototype.decodeMultiAsync=function(e,t){return function(n,o,r){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var i,s=function(){var n,o,r,i,s,a,c,l,h;return co(this,(function(d){switch(d.label){case 0:n=t,o=-1,d.label=1;case 1:d.trys.push([1,13,14,19]),r=lo(e),d.label=2;case 2:return[4,ho(r.next())];case 3:if((i=d.sent()).done)return[3,12];if(s=i.value,t&&0===o)throw this.createExtraByteError(this.totalPos);this.appendBuffer(s),n&&(o=this.readArraySize(),n=!1,this.complete()),d.label=4;case 4:d.trys.push([4,9,,10]),d.label=5;case 5:return[4,ho(this.doDecodeSync())];case 6:return[4,d.sent()];case 7:return d.sent(),0==--o?[3,8]:[3,5];case 8:return[3,10];case 9:if(!((a=d.sent())instanceof fo))throw a;return[3,10];case 10:this.totalPos+=this.pos,d.label=11;case 11:return[3,2];case 12:return[3,19];case 13:return c=d.sent(),l={error:c},[3,19];case 14:return d.trys.push([14,,17,18]),i&&!i.done&&(h=r.return)?[4,ho(h.call(r))]:[3,16];case 15:d.sent(),d.label=16;case 16:return[3,18];case 17:if(l)throw l.error;return[7];case 18:return[7];case 19:return[2]}}))}.apply(n,o||[]),a=[];return i={},c("next"),c("throw"),c("return"),i[Symbol.asyncIterator]=function(){return this},i;function c(e){s[e]&&(i[e]=function(t){return new Promise((function(n,o){a.push([e,t,n,o])>1||l(e,t)}))})}function l(e,t){try{(n=s[e](t)).value instanceof ho?Promise.resolve(n.value.v).then(h,d):u(a[0][2],n)}catch(e){u(a[0][3],e)}var n}function h(e){l("next",e)}function d(e){l("throw",e)}function u(e,t){e(t),a.shift(),a.length&&l(a[0][0],a[0][1])}}(this,arguments)},e.prototype.doDecodeSync=function(){e:for(;;){var e=this.readHeadByte(),t=void 0;if(e>=224)t=e-256;else if(e<192)if(e<128)t=e;else if(e<144){if(0!=(o=e-128)){this.pushMapState(o),this.complete();continue e}t={}}else if(e<160){if(0!=(o=e-144)){this.pushArrayState(o),this.complete();continue e}t=[]}else{var n=e-160;t=this.decodeUtf8String(n,0)}else if(192===e)t=null;else if(194===e)t=!1;else if(195===e)t=!0;else if(202===e)t=this.readF32();else if(203===e)t=this.readF64();else if(204===e)t=this.readU8();else if(205===e)t=this.readU16();else if(206===e)t=this.readU32();else if(207===e)t=this.readU64();else if(208===e)t=this.readI8();else if(209===e)t=this.readI16();else if(210===e)t=this.readI32();else if(211===e)t=this.readI64();else if(217===e)n=this.lookU8(),t=this.decodeUtf8String(n,1);else if(218===e)n=this.lookU16(),t=this.decodeUtf8String(n,2);else if(219===e)n=this.lookU32(),t=this.decodeUtf8String(n,4);else if(220===e){if(0!==(o=this.readU16())){this.pushArrayState(o),this.complete();continue e}t=[]}else if(221===e){if(0!==(o=this.readU32())){this.pushArrayState(o),this.complete();continue e}t=[]}else if(222===e){if(0!==(o=this.readU16())){this.pushMapState(o),this.complete();continue e}t={}}else if(223===e){if(0!==(o=this.readU32())){this.pushMapState(o),this.complete();continue e}t={}}else if(196===e){var o=this.lookU8();t=this.decodeBinary(o,1)}else if(197===e)o=this.lookU16(),t=this.decodeBinary(o,2);else if(198===e)o=this.lookU32(),t=this.decodeBinary(o,4);else if(212===e)t=this.decodeExtension(1,0);else if(213===e)t=this.decodeExtension(2,0);else if(214===e)t=this.decodeExtension(4,0);else if(215===e)t=this.decodeExtension(8,0);else if(216===e)t=this.decodeExtension(16,0);else if(199===e)o=this.lookU8(),t=this.decodeExtension(o,1);else if(200===e)o=this.lookU16(),t=this.decodeExtension(o,2);else{if(201!==e)throw new to("Unrecognized type byte: ".concat(so(e)));o=this.lookU32(),t=this.decodeExtension(o,4)}this.complete();for(var r=this.stack;r.length>0;){var i=r[r.length-1];if(0===i.type){if(i.array[i.position]=t,i.position++,i.position!==i.size)continue e;r.pop(),t=i.array}else{if(1===i.type){if("string"!=(s=typeof t)&&"number"!==s)throw new to("The type of key must be string or number but "+typeof t);if("__proto__"===t)throw new to("The key __proto__ is not allowed");i.key=t,i.type=2;continue e}if(i.map[i.key]=t,i.readCount++,i.readCount!==i.size){i.key=null,i.type=1;continue e}r.pop(),t=i.map}}return t}var s},e.prototype.readHeadByte=function(){return-1===this.headByte&&(this.headByte=this.readU8()),this.headByte},e.prototype.complete=function(){this.headByte=-1},e.prototype.readArraySize=function(){var e=this.readHeadByte();switch(e){case 220:return this.readU16();case 221:return this.readU32();default:if(e<160)return e-144;throw new to("Unrecognized array type byte: ".concat(so(e)))}},e.prototype.pushMapState=function(e){if(e>this.maxMapLength)throw new to("Max length exceeded: map length (".concat(e,") > maxMapLengthLength (").concat(this.maxMapLength,")"));this.stack.push({type:1,size:e,key:null,readCount:0,map:{}})},e.prototype.pushArrayState=function(e){if(e>this.maxArrayLength)throw new to("Max length exceeded: array length (".concat(e,") > maxArrayLength (").concat(this.maxArrayLength,")"));this.stack.push({type:0,size:e,array:new Array(e),position:0})},e.prototype.decodeUtf8String=function(e,t){var n;if(e>this.maxStrLength)throw new to("Max length exceeded: UTF-8 byte length (".concat(e,") > maxStrLength (").concat(this.maxStrLength,")"));if(this.bytes.byteLengthQn?function(e,t,n){var o=e.subarray(t,t+n);return Yn.decode(o)}(this.bytes,r,e):Xn(this.bytes,r,e),this.pos+=t+e,o},e.prototype.stateIsMapKey=function(){return this.stack.length>0&&1===this.stack[this.stack.length-1].type},e.prototype.decodeBinary=function(e,t){if(e>this.maxBinLength)throw new to("Max length exceeded: bin length (".concat(e,") > maxBinLength (").concat(this.maxBinLength,")"));if(!this.hasRemaining(e+t))throw go;var n=this.pos+t,o=this.bytes.subarray(n,n+e);return this.pos+=t+e,o},e.prototype.decodeExtension=function(e,t){if(e>this.maxExtLength)throw new to("Max length exceeded: ext length (".concat(e,") > maxExtLength (").concat(this.maxExtLength,")"));var n=this.view.getInt8(this.pos+t),o=this.decodeBinary(e,t+1);return this.extensionCodec.decode(o,n,this.context)},e.prototype.lookU8=function(){return this.view.getUint8(this.pos)},e.prototype.lookU16=function(){return this.view.getUint16(this.pos)},e.prototype.lookU32=function(){return this.view.getUint32(this.pos)},e.prototype.readU8=function(){var e=this.view.getUint8(this.pos);return this.pos++,e},e.prototype.readI8=function(){var e=this.view.getInt8(this.pos);return this.pos++,e},e.prototype.readU16=function(){var e=this.view.getUint16(this.pos);return this.pos+=2,e},e.prototype.readI16=function(){var e=this.view.getInt16(this.pos);return this.pos+=2,e},e.prototype.readU32=function(){var e=this.view.getUint32(this.pos);return this.pos+=4,e},e.prototype.readI32=function(){var e=this.view.getInt32(this.pos);return this.pos+=4,e},e.prototype.readU64=function(){var e,t,n=(e=this.view,t=this.pos,4294967296*e.getUint32(t)+e.getUint32(t+4));return this.pos+=8,n},e.prototype.readI64=function(){var e=jn(this.view,this.pos);return this.pos+=8,e},e.prototype.readF32=function(){var e=this.view.getFloat32(this.pos);return this.pos+=4,e},e.prototype.readF64=function(){var e=this.view.getFloat64(this.pos);return this.pos+=8,e},e}();class yo{static write(e){let t=e.byteLength||e.length;const n=[];do{let e=127&t;t>>=7,t>0&&(e|=128),n.push(e)}while(t>0);t=e.byteLength||e.length;const o=new Uint8Array(n.length+t);return o.set(n,0),o.set(e,n.length),o.buffer}static parse(e){const t=[],n=new Uint8Array(e),o=[0,7,14,21,28];for(let r=0;r7)throw new Error("Messages bigger than 2GB are not supported.");if(!(n.byteLength>=r+s+a))throw new Error("Incomplete message.");t.push(n.slice?n.slice(r+s,r+s+a):n.subarray(r+s,r+s+a)),r=r+s+a}return t}}const wo=new Uint8Array([145,ln.Ping]);class bo{constructor(e){this.name="messagepack",this.version=2,this.transferFormat=kn.Binary,this._errorResult=1,this._voidResult=2,this._nonVoidResult=3,e=e||{},this._encoder=new io(e.extensionCodec,e.context,e.maxDepth,e.initialBufferSize,e.sortKeys,e.forceFloat32,e.ignoreUndefined,e.forceIntegerToFloat),this._decoder=new vo(e.extensionCodec,e.context,e.maxStrLength,e.maxBinLength,e.maxArrayLength,e.maxMapLength,e.maxExtLength)}parseMessages(e,t){if(!(n=e)||"undefined"==typeof ArrayBuffer||!(n instanceof ArrayBuffer||n.constructor&&"ArrayBuffer"===n.constructor.name))throw new Error("Invalid input for MessagePack hub protocol. Expected an ArrayBuffer.");var n;null===t&&(t=Ft.instance);const o=yo.parse(e),r=[];for(const e of o){const n=this._parseMessage(e,t);n&&r.push(n)}return r}writeMessage(e){switch(e.type){case ln.Invocation:return this._writeInvocation(e);case ln.StreamInvocation:return this._writeStreamInvocation(e);case ln.StreamItem:return this._writeStreamItem(e);case ln.Completion:return this._writeCompletion(e);case ln.Ping:return yo.write(wo);case ln.CancelInvocation:return this._writeCancelInvocation(e);case ln.Close:return this._writeClose();case ln.Ack:return this._writeAck(e);case ln.Sequence:return this._writeSequence(e);default:throw new Error("Invalid message type.")}}_parseMessage(e,t){if(0===e.length)throw new Error("Invalid payload.");const n=this._decoder.decode(e);if(0===n.length||!(n instanceof Array))throw new Error("Invalid payload.");const o=n[0];switch(o){case ln.Invocation:return this._createInvocationMessage(this._readHeaders(n),n);case ln.StreamItem:return this._createStreamItemMessage(this._readHeaders(n),n);case ln.Completion:return this._createCompletionMessage(this._readHeaders(n),n);case ln.Ping:return this._createPingMessage(n);case ln.Close:return this._createCloseMessage(n);case ln.Ack:return this._createAckMessage(n);case ln.Sequence:return this._createSequenceMessage(n);default:return t.log(Ot.Information,"Unknown message type '"+o+"' ignored."),null}}_createCloseMessage(e){if(e.length<2)throw new Error("Invalid payload for Close message.");return{allowReconnect:e.length>=3?e[2]:void 0,error:e[1],type:ln.Close}}_createPingMessage(e){if(e.length<1)throw new Error("Invalid payload for Ping message.");return{type:ln.Ping}}_createInvocationMessage(e,t){if(t.length<5)throw new Error("Invalid payload for Invocation message.");const n=t[2];return n?{arguments:t[4],headers:e,invocationId:n,streamIds:[],target:t[3],type:ln.Invocation}:{arguments:t[4],headers:e,streamIds:[],target:t[3],type:ln.Invocation}}_createStreamItemMessage(e,t){if(t.length<4)throw new Error("Invalid payload for StreamItem message.");return{headers:e,invocationId:t[2],item:t[3],type:ln.StreamItem}}_createCompletionMessage(e,t){if(t.length<4)throw new Error("Invalid payload for Completion message.");const n=t[3];if(n!==this._voidResult&&t.length<5)throw new Error("Invalid payload for Completion message.");let o,r;switch(n){case this._errorResult:o=t[4];break;case this._nonVoidResult:r=t[4]}return{error:o,headers:e,invocationId:t[2],result:r,type:ln.Completion}}_createAckMessage(e){if(e.length<1)throw new Error("Invalid payload for Ack message.");return{sequenceId:e[1],type:ln.Ack}}_createSequenceMessage(e){if(e.length<1)throw new Error("Invalid payload for Sequence message.");return{sequenceId:e[1],type:ln.Sequence}}_writeInvocation(e){let t;return t=e.streamIds?this._encoder.encode([ln.Invocation,e.headers||{},e.invocationId||null,e.target,e.arguments,e.streamIds]):this._encoder.encode([ln.Invocation,e.headers||{},e.invocationId||null,e.target,e.arguments]),yo.write(t.slice())}_writeStreamInvocation(e){let t;return t=e.streamIds?this._encoder.encode([ln.StreamInvocation,e.headers||{},e.invocationId,e.target,e.arguments,e.streamIds]):this._encoder.encode([ln.StreamInvocation,e.headers||{},e.invocationId,e.target,e.arguments]),yo.write(t.slice())}_writeStreamItem(e){const t=this._encoder.encode([ln.StreamItem,e.headers||{},e.invocationId,e.item]);return yo.write(t.slice())}_writeCompletion(e){const t=e.error?this._errorResult:void 0!==e.result?this._nonVoidResult:this._voidResult;let n;switch(t){case this._errorResult:n=this._encoder.encode([ln.Completion,e.headers||{},e.invocationId,t,e.error]);break;case this._voidResult:n=this._encoder.encode([ln.Completion,e.headers||{},e.invocationId,t]);break;case this._nonVoidResult:n=this._encoder.encode([ln.Completion,e.headers||{},e.invocationId,t,e.result])}return yo.write(n.slice())}_writeCancelInvocation(e){const t=this._encoder.encode([ln.CancelInvocation,e.headers||{},e.invocationId]);return yo.write(t.slice())}_writeClose(){const e=this._encoder.encode([ln.Close,null]);return yo.write(e.slice())}_writeAck(e){const t=this._encoder.encode([ln.Ack,e.sequenceId]);return yo.write(t.slice())}_writeSequence(e){const t=this._encoder.encode([ln.Sequence,e.sequenceId]);return yo.write(t.slice())}_readHeaders(e){const t=e[1];if("object"!=typeof t)throw new Error("Invalid headers.");return t}}const _o="function"==typeof TextDecoder?new TextDecoder("utf-8"):null,So=_o?_o.decode.bind(_o):function(e){let t=0;const n=e.length,o=[],r=[];for(;t65535&&(r-=65536,o.push(r>>>10&1023|55296),r=56320|1023&r),o.push(r)}o.length>1024&&(r.push(String.fromCharCode.apply(null,o)),o.length=0)}return r.push(String.fromCharCode.apply(null,o)),r.join("")},Co=Math.pow(2,32),Eo=Math.pow(2,21)-1;function Io(e,t){return e[t]|e[t+1]<<8|e[t+2]<<16|e[t+3]<<24}function ko(e,t){return e[t]+(e[t+1]<<8)+(e[t+2]<<16)+(e[t+3]<<24>>>0)}function To(e,t){const n=ko(e,t+4);if(n>Eo)throw new Error(`Cannot read uint64 with high order part ${n}, because the result would exceed Number.MAX_SAFE_INTEGER.`);return n*Co+ko(e,t)}class Ro{constructor(e){this.batchData=e;const t=new No(e);this.arrayRangeReader=new Po(e),this.arrayBuilderSegmentReader=new Mo(e),this.diffReader=new Ao(e),this.editReader=new Do(e,t),this.frameReader=new xo(e,t)}updatedComponents(){return Io(this.batchData,this.batchData.length-20)}referenceFrames(){return Io(this.batchData,this.batchData.length-16)}disposedComponentIds(){return Io(this.batchData,this.batchData.length-12)}disposedEventHandlerIds(){return Io(this.batchData,this.batchData.length-8)}updatedComponentsEntry(e,t){const n=e+4*t;return Io(this.batchData,n)}referenceFramesEntry(e,t){return e+20*t}disposedComponentIdsEntry(e,t){const n=e+4*t;return Io(this.batchData,n)}disposedEventHandlerIdsEntry(e,t){const n=e+8*t;return To(this.batchData,n)}}class Ao{constructor(e){this.batchDataUint8=e}componentId(e){return Io(this.batchDataUint8,e)}edits(e){return e+4}editsEntry(e,t){return e+16*t}}class Do{constructor(e,t){this.batchDataUint8=e,this.stringReader=t}editType(e){return Io(this.batchDataUint8,e)}siblingIndex(e){return Io(this.batchDataUint8,e+4)}newTreeIndex(e){return Io(this.batchDataUint8,e+8)}moveToSiblingIndex(e){return Io(this.batchDataUint8,e+8)}removedAttributeName(e){const t=Io(this.batchDataUint8,e+12);return this.stringReader.readString(t)}}class xo{constructor(e,t){this.batchDataUint8=e,this.stringReader=t}frameType(e){return Io(this.batchDataUint8,e)}subtreeLength(e){return Io(this.batchDataUint8,e+4)}elementReferenceCaptureId(e){const t=Io(this.batchDataUint8,e+4);return this.stringReader.readString(t)}componentId(e){return Io(this.batchDataUint8,e+8)}elementName(e){const t=Io(this.batchDataUint8,e+8);return this.stringReader.readString(t)}textContent(e){const t=Io(this.batchDataUint8,e+4);return this.stringReader.readString(t)}markupContent(e){const t=Io(this.batchDataUint8,e+4);return this.stringReader.readString(t)}attributeName(e){const t=Io(this.batchDataUint8,e+4);return this.stringReader.readString(t)}attributeValue(e){const t=Io(this.batchDataUint8,e+8);return this.stringReader.readString(t)}attributeEventHandlerId(e){return To(this.batchDataUint8,e+12)}}class No{constructor(e){this.batchDataUint8=e,this.stringTableStartIndex=Io(e,e.length-4)}readString(e){if(-1===e)return null;{const n=Io(this.batchDataUint8,this.stringTableStartIndex+4*e),o=function(e,t){let n=0,o=0;for(let r=0;r<4;r++){const i=e[t+r];if(n|=(127&i)<this.nextBatchId)return this.fatalError?(this.logger.log(yt.Debug,`Received a new batch ${e} but errored out on a previous batch ${this.nextBatchId-1}`),void await n.send("OnRenderCompleted",this.nextBatchId-1,this.fatalError.toString())):void this.logger.log(yt.Debug,`Waiting for batch ${this.nextBatchId}. Batch ${e} not processed.`);try{this.nextBatchId++,this.logger.log(yt.Debug,`Applying batch ${e}.`),xe(Bn.Server,new Ro(t)),await this.completeBatch(n,e)}catch(t){throw this.fatalError=t.toString(),this.logger.log(yt.Error,`There was an error applying batch ${e}.`),n.send("OnRenderCompleted",e,t.toString()),t}}getLastBatchid(){return this.nextBatchId-1}async completeBatch(e,t){try{await e.send("OnRenderCompleted",t,null)}catch{this.logger.log(yt.Warning,`Failed to deliver completion notification for render '${t}'.`)}}}let Lo=!1;function Bo(){const e=document.querySelector("#blazor-error-ui");e&&(e.style.display="block"),Lo||(Lo=!0,document.querySelectorAll("#blazor-error-ui .reload").forEach((e=>{e.onclick=function(e){location.reload(),e.preventDefault()}})),document.querySelectorAll("#blazor-error-ui .dismiss").forEach((e=>{e.onclick=function(e){const t=document.querySelector("#blazor-error-ui");t&&(t.style.display="none"),e.preventDefault()}})))}class Oo{constructor(t,n,o,r){this._firstUpdate=!0,this._renderingFailed=!1,this._disposed=!1,this._circuitId=void 0,this._applicationState=n,this._componentManager=t,this._options=o,this._logger=r,this._renderQueue=new Uo(this._logger),this._dispatcher=e.attachDispatcher(this)}start(){if(this.isDisposedOrDisposing())throw new Error("Cannot start a disposed circuit.");return this._startPromise||(this._startPromise=this.startCore()),this._startPromise}updateRootComponents(e){var t,n;return this._firstUpdate?(this._firstUpdate=!1,null===(t=this._connection)||void 0===t?void 0:t.send("UpdateRootComponents",e,this._applicationState)):null===(n=this._connection)||void 0===n?void 0:n.send("UpdateRootComponents",e,"")}async startCore(){if(this._connection=await this.startConnection(),this._connection.state!==hn.Connected)return!1;const e=JSON.stringify(this._componentManager.initialComponents.map((e=>Ut(e))));if(this._circuitId=await this._connection.invoke("StartCircuit",Je.getBaseURI(),Je.getLocationHref(),e,this._applicationState||""),!this._circuitId)return!1;for(const e of this._options.circuitHandlers)e.onCircuitOpened&&e.onCircuitOpened();return!0}async startConnection(){var e,t;const n=new bo;n.name="blazorpack";const o=(new Ln).withUrl("_blazor").withHubProtocol(n);this._options.configureSignalR(o);const r=o.build();r.on("JS.AttachComponent",((e,t)=>Ae(Bn.Server,this.resolveElement(t),e,!1))),r.on("JS.BeginInvokeJS",this._dispatcher.beginInvokeJSFromDotNet.bind(this._dispatcher)),r.on("JS.EndInvokeDotNet",this._dispatcher.endInvokeDotNetFromJS.bind(this._dispatcher)),r.on("JS.ReceiveByteArray",this._dispatcher.receiveByteArray.bind(this._dispatcher)),r.on("JS.BeginTransmitStream",(e=>{const t=new ReadableStream({start:t=>{r.stream("SendDotNetStreamToJS",e).subscribe({next:e=>t.enqueue(e),complete:()=>t.close(),error:e=>t.error(e)})}});this._dispatcher.supplyDotNetStream(e,t)})),r.on("JS.RenderBatch",(async(e,t)=>{var n,o;this._logger.log(Ot.Debug,`Received render batch with id ${e} and ${t.byteLength} bytes.`),await this._renderQueue.processBatch(e,t,this._connection),null===(o=(n=this._componentManager).onAfterRenderBatch)||void 0===o||o.call(n,Bn.Server)})),r.on("JS.EndUpdateRootComponents",(e=>{var t,n;null===(n=(t=this._componentManager).onAfterUpdateRootComponents)||void 0===n||n.call(t,e)})),r.on("JS.EndLocationChanging",vt._internal.navigationManager.endLocationChanging),r.onclose((e=>{this._interopMethodsForReconnection=function(e){const t=C.get(e);if(!t)throw new Error(`Interop methods are not registered for renderer ${e}`);return C.delete(e),t}(Bn.Server),this._disposed||this._renderingFailed||this._options.reconnectionHandler.onConnectionDown(this._options.reconnectionOptions,e)})),r.on("JS.Error",(e=>{this._renderingFailed=!0,this.unhandledError(e),Bo()}));try{await r.start()}catch(e){if(this.unhandledError(e),"FailedToNegotiateWithServerError"===e.errorType)throw e;Bo(),e.innerErrors&&(e.innerErrors.some((e=>"UnsupportedTransportError"===e.errorType&&e.transport===In.WebSockets))?this._logger.log(Ot.Error,"Unable to connect, please ensure you are using an updated browser that supports WebSockets."):e.innerErrors.some((e=>"FailedToStartTransportError"===e.errorType&&e.transport===In.WebSockets))?this._logger.log(Ot.Error,"Unable to connect, please ensure WebSockets are available. A VPN or proxy may be blocking the connection."):e.innerErrors.some((e=>"DisabledTransportError"===e.errorType&&e.transport===In.LongPolling))&&this._logger.log(Ot.Error,"Unable to initiate a SignalR connection to the server. This might be because the server is not configured to support WebSockets. For additional details, visit https://aka.ms/blazor-server-websockets-error."))}return(null===(t=null===(e=r.connection)||void 0===e?void 0:e.features)||void 0===t?void 0:t.inherentKeepAlive)&&this._logger.log(Ot.Warning,"Failed to connect via WebSockets, using the Long Polling fallback transport. This may be due to a VPN or proxy blocking the connection. To troubleshoot this, visit https://aka.ms/blazor-server-using-fallback-long-polling."),r}async disconnect(){var e;await(null===(e=this._connection)||void 0===e?void 0:e.stop())}async reconnect(){if(!this._circuitId)throw new Error("Circuit host not initialized.");return this._connection.state===hn.Connected||(this._connection=await this.startConnection(),this._interopMethodsForReconnection&&(k(Bn.Server,this._interopMethodsForReconnection),this._interopMethodsForReconnection=void 0),!!await this._connection.invoke("ConnectCircuit",this._circuitId)&&(this._options.reconnectionHandler.onConnectionUp(),!0))}beginInvokeDotNetFromJS(e,t,n,o,r){this.throwIfDispatchingWhenDisposed(),this._connection.send("BeginInvokeDotNetFromJS",e?e.toString():null,t,n,o||0,r)}endInvokeJSFromDotNet(e,t,n){this.throwIfDispatchingWhenDisposed(),this._connection.send("EndInvokeJSFromDotNet",e,t,n)}sendByteArray(e,t){this.throwIfDispatchingWhenDisposed(),this._connection.send("ReceiveByteArray",e,t)}throwIfDispatchingWhenDisposed(){if(this._disposed)throw new Error("The circuit associated with this dispatcher is no longer available.")}sendLocationChanged(e,t,n){return this._connection.send("OnLocationChanged",e,t,n)}sendLocationChanging(e,t,n,o){return this._connection.send("OnLocationChanging",e,t,n,o)}sendJsDataStream(e,t,n){return function(e,t,n,o){setTimeout((async()=>{let r=5,i=(new Date).valueOf();try{const s=t instanceof Blob?t.size:t.byteLength;let a=0,c=0;for(;a1)await e.send("ReceiveJSDataChunk",n,c,h,null);else{if(!await e.invoke("ReceiveJSDataChunk",n,c,h,null))break;const t=(new Date).valueOf(),o=t-i;i=t,r=Math.max(1,Math.round(500/Math.max(1,o)))}a+=l,c++}}catch(t){await e.send("ReceiveJSDataChunk",n,-1,null,t.toString())}}),0)}(this._connection,e,t,n)}resolveElement(e){const t=w(e);if(t)return W(t,!0);const n=Number.parseInt(e);if(!Number.isNaN(n))return H(this._componentManager.resolveRootComponent(n));throw new Error(`Invalid sequence number or identifier '${e}'.`)}getRootComponentManager(){return this._componentManager}unhandledError(e){this._logger.log(Ot.Error,e),this.disconnect()}getDisconnectFormData(){const e=new FormData,t=this._circuitId;return e.append("circuitId",t),e}didRenderingFail(){return this._renderingFailed}isDisposedOrDisposing(){return void 0!==this._disposePromise}sendDisconnectBeacon(){if(this._disposed)return;const e=this.getDisconnectFormData();this._disposed=navigator.sendBeacon("_blazor/disconnect",e)}dispose(){return this._disposePromise||(this._disposePromise=this.disposeCore()),this._disposePromise}async disposeCore(){var e;if(!this._startPromise)return void(this._disposed=!0);await this._startPromise,this._disposed=!0,null===(e=this._connection)||void 0===e||e.stop();const t=this.getDisconnectFormData();fetch("http://github.com/_blazor/disconnect",{method:"POST",body:t});for(const e of this._options.circuitHandlers)e.onCircuitClosed&&e.onCircuitClosed()}}function Fo(e){const t={...$o,...e};return e&&e.reconnectionOptions&&(t.reconnectionOptions={...$o.reconnectionOptions,...e.reconnectionOptions}),t}const $o={configureSignalR:e=>{},logLevel:yt.Warning,initializers:void 0,circuitHandlers:[],reconnectionOptions:{maxRetries:8,retryIntervalMilliseconds:2e4,dialogId:"components-reconnect-modal"}};class Ho{constructor(e,t,n,o){this.maxRetries=t,this.document=n,this.logger=o,this.modal=this.document.createElement("div"),this.modal.id=e,this.maxRetries=t,this.modal.style.cssText=["position: fixed","top: 0","right: 0","bottom: 0","left: 0","z-index: 1050","display: none","overflow: hidden","background-color: #fff","opacity: 0.8","text-align: center","font-weight: bold","transition: visibility 0s linear 500ms"].join(";"),this.message=this.document.createElement("h5"),this.message.style.cssText="margin-top: 20px",this.button=this.document.createElement("button"),this.button.style.cssText="margin:5px auto 5px",this.button.textContent="Retry";const r=this.document.createElement("a");r.addEventListener("click",(()=>location.reload())),r.textContent="reload",this.reloadParagraph=this.document.createElement("p"),this.reloadParagraph.textContent="Alternatively, ",this.reloadParagraph.appendChild(r),this.modal.appendChild(this.message),this.modal.appendChild(this.button),this.modal.appendChild(this.reloadParagraph),this.loader=this.getLoader(),this.message.after(this.loader),this.button.addEventListener("click",(async()=>{this.show();try{await vt.reconnect()||this.rejected()}catch(e){this.logger.log(yt.Error,e),this.failed()}}))}show(){this.document.contains(this.modal)||this.document.body.appendChild(this.modal),this.modal.style.display="block",this.loader.style.display="inline-block",this.button.style.display="none",this.reloadParagraph.style.display="none",this.message.textContent="Attempting to reconnect to the server...",this.modal.style.visibility="hidden",setTimeout((()=>{this.modal.style.visibility="visible"}),0)}update(e){this.message.textContent=`Attempting to reconnect to the server: ${e} of ${this.maxRetries}`}hide(){this.modal.style.display="none"}failed(){this.button.style.display="block",this.reloadParagraph.style.display="none",this.loader.style.display="none";const e=this.document.createTextNode("Reconnection failed. Try "),t=this.document.createElement("a");t.textContent="reloading",t.setAttribute("href",""),t.addEventListener("click",(()=>location.reload()));const n=this.document.createTextNode(" the page if you're unable to reconnect.");this.message.replaceChildren(e,t,n)}rejected(){this.button.style.display="none",this.reloadParagraph.style.display="none",this.loader.style.display="none";const e=this.document.createTextNode("Could not reconnect to the server. "),t=this.document.createElement("a");t.textContent="Reload",t.setAttribute("href",""),t.addEventListener("click",(()=>location.reload()));const n=this.document.createTextNode(" the page to restore functionality.");this.message.replaceChildren(e,t,n)}getLoader(){const e=this.document.createElement("div");return e.style.cssText=["border: 0.3em solid #f3f3f3","border-top: 0.3em solid #3498db","border-radius: 50%","width: 2em","height: 2em","display: inline-block"].join(";"),e.animate([{transform:"rotate(0deg)"},{transform:"rotate(360deg)"}],{duration:2e3,iterations:1/0}),e}}class Wo{constructor(e,t,n){this.dialog=e,this.maxRetries=t,this.document=n,this.document=n;const o=this.document.getElementById(Wo.MaxRetriesId);o&&(o.innerText=this.maxRetries.toString())}show(){this.removeClasses(),this.dialog.classList.add(Wo.ShowClassName)}update(e){const t=this.document.getElementById(Wo.CurrentAttemptId);t&&(t.innerText=e.toString())}hide(){this.removeClasses(),this.dialog.classList.add(Wo.HideClassName)}failed(){this.removeClasses(),this.dialog.classList.add(Wo.FailedClassName)}rejected(){this.removeClasses(),this.dialog.classList.add(Wo.RejectedClassName)}removeClasses(){this.dialog.classList.remove(Wo.ShowClassName,Wo.HideClassName,Wo.FailedClassName,Wo.RejectedClassName)}}Wo.ShowClassName="components-reconnect-show",Wo.HideClassName="components-reconnect-hide",Wo.FailedClassName="components-reconnect-failed",Wo.RejectedClassName="components-reconnect-rejected",Wo.MaxRetriesId="components-reconnect-max-retries",Wo.CurrentAttemptId="components-reconnect-current-attempt";class jo{constructor(e,t,n){this._currentReconnectionProcess=null,this._logger=e,this._reconnectionDisplay=t,this._reconnectCallback=n||vt.reconnect}onConnectionDown(e,t){if(!this._reconnectionDisplay){const t=document.getElementById(e.dialogId);this._reconnectionDisplay=t?new Wo(t,e.maxRetries,document):new Ho(e.dialogId,e.maxRetries,document,this._logger)}this._currentReconnectionProcess||(this._currentReconnectionProcess=new zo(e,this._logger,this._reconnectCallback,this._reconnectionDisplay))}onConnectionUp(){this._currentReconnectionProcess&&(this._currentReconnectionProcess.dispose(),this._currentReconnectionProcess=null)}}class zo{constructor(e,t,n,o){this.logger=t,this.reconnectCallback=n,this.isDisposed=!1,this.reconnectDisplay=o,this.reconnectDisplay.show(),this.attemptPeriodicReconnection(e)}dispose(){this.isDisposed=!0,this.reconnectDisplay.hide()}async attemptPeriodicReconnection(e){for(let t=0;tzo.MaximumFirstRetryInterval?zo.MaximumFirstRetryInterval:e.retryIntervalMilliseconds;if(await this.delay(n),this.isDisposed)break;try{return await this.reconnectCallback()?void 0:void this.reconnectDisplay.rejected()}catch(e){this.logger.log(yt.Error,e)}}this.reconnectDisplay.failed()}delay(e){return new Promise((t=>setTimeout(t,e)))}}zo.MaximumFirstRetryInterval=3e3;class qo{constructor(e=!0,t,n,o=0){this.singleRuntime=e,this.logger=t,this.webRendererId=o,this.afterStartedCallbacks=[],n&&this.afterStartedCallbacks.push(...n)}async importInitializersAsync(e,t){await Promise.all(e.map((e=>async function(e,n){const o=function(e){const t=document.baseURI;return t.endsWith("/")?`${t}${e}`:`${t}/${e}`}(n),r=await import(o);if(void 0!==r){if(e.singleRuntime){const{beforeStart:n,afterStarted:o,beforeWebAssemblyStart:s,afterWebAssemblyStarted:a,beforeServerStart:c,afterServerStarted:l}=r;let h=n;e.webRendererId===Bn.Server&&c&&(h=c),e.webRendererId===Bn.WebAssembly&&s&&(h=s);let d=o;return e.webRendererId===Bn.Server&&l&&(d=l),e.webRendererId===Bn.WebAssembly&&a&&(d=a),i(e,h,d,t)}return function(e,t,n){var r;const s=n[0],{beforeStart:a,afterStarted:c,beforeWebStart:l,afterWebStarted:h,beforeWebAssemblyStart:d,afterWebAssemblyStarted:u,beforeServerStart:p,afterServerStarted:f}=t,g=!(l||h||d||u||p||f||!a&&!c),m=g&&s.enableClassicInitializers;if(g&&!s.enableClassicInitializers)null===(r=e.logger)||void 0===r||r.log(yt.Warning,`Initializer '${o}' will be ignored because multiple runtimes are available. use 'before(web|webAssembly|server)Start' and 'after(web|webAssembly|server)Started?' instead.)`);else if(m)return i(e,a,c,n);if(function(e){e.webAssembly?e.webAssembly.initializers||(e.webAssembly.initializers={beforeStart:[],afterStarted:[]}):e.webAssembly={initializers:{beforeStart:[],afterStarted:[]}},e.circuit?e.circuit.initializers||(e.circuit.initializers={beforeStart:[],afterStarted:[]}):e.circuit={initializers:{beforeStart:[],afterStarted:[]}}}(s),d&&s.webAssembly.initializers.beforeStart.push(d),u&&s.webAssembly.initializers.afterStarted.push(u),p&&s.circuit.initializers.beforeStart.push(p),f&&s.circuit.initializers.afterStarted.push(f),h&&e.afterStartedCallbacks.push(h),l)return l(s)}(e,r,t)}function i(e,t,n,o){if(n&&e.afterStartedCallbacks.push(n),t)return t(...o)}}(this,e))))}async invokeAfterStartedCallbacks(e){const t=function(e){var t;return null===(t=I.get(e))||void 0===t?void 0:t[1]}(this.webRendererId);t&&await t,await Promise.all(this.afterStartedCallbacks.map((t=>t(e))))}}let Jo,Ko,Vo,Xo,Go,Yo,Qo,Zo;function er(e){if(Xo)throw new Error("Circuit options have already been configured.");if(Xo)throw new Error("WebAssembly options have already been configured.");Jo=async function(e){const t=await e;Xo=Fo(t)}(e)}function tr(e){if(void 0!==Yo)throw new Error("Blazor Server has already started.");return Yo=new Promise(nr.bind(null,e)),Yo}async function nr(e,t,n){await Jo;const o=await async function(e){if(e.initializers)return await Promise.all(e.initializers.beforeStart.map((t=>t(e)))),new qo(!1,void 0,e.initializers.afterStarted,Bn.Server);const t=await fetch("http://github.com/_blazor/initializers",{method:"GET",credentials:"include",cache:"no-cache"}),n=await t.json(),o=new qo(!0,void 0,void 0,Bn.Server);return await o.importInitializersAsync(n,[e]),o}(Xo);if(Ko=It(document)||"",Go=new bt(Xo.logLevel),Vo=new Oo(e,Ko,Xo,Go),Go.log(yt.Information,"Starting up Blazor server-side application."),vt.reconnect=async()=>!(Vo.didRenderingFail()||!await Vo.reconnect()&&(Go.log(yt.Information,"Reconnection attempt to the circuit was rejected by the server. This may indicate that the associated state is no longer available on the server."),1)),vt.defaultReconnectionHandler=new jo(Go),Xo.reconnectionHandler=Xo.reconnectionHandler||vt.defaultReconnectionHandler,vt._internal.navigationManager.listenForNavigationEvents(Bn.Server,((e,t,n)=>Vo.sendLocationChanged(e,t,n)),((e,t,n,o)=>Vo.sendLocationChanging(e,t,n,o))),vt._internal.forceCloseConnection=()=>Vo.disconnect(),vt._internal.sendJSDataStream=(e,t,n)=>Vo.sendJsDataStream(e,t,n),!await Vo.start())return Go.log(yt.Error,"Failed to start the circuit."),void t();const r=()=>{Vo.sendDisconnectBeacon()};vt.disconnect=r,window.addEventListener("unload",r,{capture:!1,once:!0}),Go.log(yt.Information,"Blazor server-side application started."),o.invokeAfterStartedCallbacks(vt),t()}async function or(){if(!Yo)throw new Error("Cannot start the circuit until Blazor Server has started.");return!(!Vo||Vo.isDisposedOrDisposing())||(Qo?await Qo:(await Yo,(!Vo||!Vo.didRenderingFail())&&(Vo&&Vo.isDisposedOrDisposing()&&(Ko=It(document)||"",Vo=new Oo(Vo.getRootComponentManager(),Ko,Xo,Go)),Qo=Vo.start(),async function(e){await e,Qo===e&&(Qo=void 0)}(Qo),Qo)))}function rr(e){if(Vo&&!Vo.isDisposedOrDisposing())return Vo.updateRootComponents(e);!async function(e){await Yo,await or()&&Vo.updateRootComponents(e)}(e)}function ir(e){return Zo=e,Zo}var sr,ar;const cr=navigator,lr=cr.userAgentData&&cr.userAgentData.brands,hr=lr&&lr.length>0?lr.some((e=>"Google Chrome"===e.brand||"Microsoft Edge"===e.brand||"Chromium"===e.brand)):window.chrome,dr=null!==(ar=null===(sr=cr.userAgentData)||void 0===sr?void 0:sr.platform)&&void 0!==ar?ar:navigator.platform;function ur(e){return 0!==e.debugLevel&&(hr||navigator.userAgent.includes("Firefox"))}let pr,fr,gr,mr,vr,yr,wr;const br=Math.pow(2,32),_r=Math.pow(2,21)-1;let Sr=null;function Cr(e){return fr.getI32(e)}const Er={load:function(e,t){return async function(e,t){const{dotnet:n}=await async function(e){if("undefined"==typeof WebAssembly||!WebAssembly.validate)throw new Error("This browser does not support WebAssembly.");let t="_framework/dotnet.js";if(e.loadBootResource){const n="dotnetjs",o=e.loadBootResource(n,"dotnet.js",t,"","js-module-dotnet");if("string"==typeof o)t=o;else if(o)throw new Error(`For a ${n} resource, custom loaders must supply a URI string.`)}const n=new URL(t,document.baseURI).toString();return await import(n)}(e),o=function(e,t){const n={maxParallelDownloads:1e6,enableDownloadRetry:!1,applicationEnvironment:e.environment},o={...window.Module||{},onConfigLoaded:async n=>{n.environmentVariables||(n.environmentVariables={}),"sharded"===n.globalizationMode&&(n.environmentVariables.__BLAZOR_SHARDED_ICU="1"),vt._internal.getApplicationEnvironment=()=>n.applicationEnvironment,null==t||t(n),wr=await async function(e,t){var n,o,r;if(e.initializers)return await Promise.all(e.initializers.beforeStart.map((t=>t(e)))),new qo(!1,void 0,e.initializers.afterStarted,Bn.WebAssembly);{const i=[e,null!==(o=null===(n=t.resources)||void 0===n?void 0:n.extensions)&&void 0!==o?o:{}],s=new qo(!0,void 0,void 0,Bn.WebAssembly),a=Object.keys((null===(r=null==t?void 0:t.resources)||void 0===r?void 0:r.libraryInitializers)||{});return await s.importInitializersAsync(a,i),s}}(e,n)},onDownloadResourceProgress:Ir,config:n,disableDotnet6Compatibility:!1,out:Tr,err:Rr};return o}(e,t);e.applicationCulture&&n.withApplicationCulture(e.applicationCulture),e.environment&&n.withApplicationEnvironment(e.environment),e.loadBootResource&&n.withResourceLoader(e.loadBootResource),n.withModuleConfig(o),e.configureRuntime&&e.configureRuntime(n),yr=await n.create()}(e,t)},start:function(){return async function(){if(!yr)throw new Error("The runtime must be loaded it gets configured.");const{MONO:t,BINDING:n,Module:o,setModuleImports:r,INTERNAL:i,getConfig:s,invokeLibraryInitializers:a}=yr;gr=o,pr=n,fr=t,vr=i,function(e){const t=dr.match(/^Mac/i)?"Cmd":"Alt";ur(e)&&console.info(`Debugging hotkey: Shift+${t}+D (when application has focus)`),document.addEventListener("keydown",(t=>{t.shiftKey&&(t.metaKey||t.altKey)&&"KeyD"===t.code&&(ur(e)?navigator.userAgent.includes("Firefox")?async function(){const e=await fetch(`_framework/debug?url=${encodeURIComponent(location.href)}&isFirefox=true`);200!==e.status&&console.warn(await e.text())}():hr?function(){const e=document.createElement("a");e.href=`_framework/debug?url=${encodeURIComponent(location.href)}`,e.target="_blank",e.rel="noopener noreferrer",e.click()}():console.error("Currently, only Microsoft Edge (80+), Google Chrome, or Chromium, are supported for debugging."):console.error("Cannot start debugging, because the application was not compiled with debugging enabled."))}))}(s()),vt.runtime=yr,vt._internal.dotNetCriticalError=Rr,r("blazor-internal",{Blazor:{_internal:vt._internal}});const c=await yr.getAssemblyExports("Microsoft.AspNetCore.Components.WebAssembly");return Object.assign(vt._internal,{dotNetExports:{...c.Microsoft.AspNetCore.Components.WebAssembly.Services.DefaultWebAssemblyJSRuntime}}),mr=e.attachDispatcher({beginInvokeDotNetFromJS:(e,t,n,o,r)=>{if(Dr(),!o&&!t)throw new Error("Either assemblyName or dotNetObjectId must have a non null value.");const i=o?o.toString():t;vt._internal.dotNetExports.BeginInvokeDotNet(e?e.toString():null,i,n,r)},endInvokeJSFromDotNet:(e,t,n)=>{vt._internal.dotNetExports.EndInvokeJS(n)},sendByteArray:(e,t)=>{vt._internal.dotNetExports.ReceiveByteArrayFromJS(e,t)},invokeDotNetFromJS:(e,t,n,o)=>(Dr(),vt._internal.dotNetExports.InvokeDotNet(e||null,t,null!=n?n:0,o))}),{invokeLibraryInitializers:a}}()},callEntryPoint:async function(){try{await yr.runMain(yr.getConfig().mainAssemblyName,[])}catch(e){console.error(e),Bo()}},toUint8Array:function(e){const t=Ar(e),n=Cr(t),o=new Uint8Array(n);return o.set(gr.HEAPU8.subarray(t+4,t+4+n)),o},getArrayLength:function(e){return Cr(Ar(e))},getArrayEntryPtr:function(e,t,n){return Ar(e)+4+t*n},getObjectFieldsBaseAddress:function(e){return e+8},readInt16Field:function(e,t){return n=e+(t||0),fr.getI16(n);var n},readInt32Field:function(e,t){return Cr(e+(t||0))},readUint64Field:function(e,t){return function(e){const t=e>>2,n=gr.HEAPU32[t+1];if(n>_r)throw new Error(`Cannot read uint64 with high order part ${n}, because the result would exceed Number.MAX_SAFE_INTEGER.`);return n*br+gr.HEAPU32[t]}(e+(t||0))},readFloatField:function(e,t){return n=e+(t||0),fr.getF32(n);var n},readObjectField:function(e,t){return Cr(e+(t||0))},readStringField:function(e,t,n){const o=Cr(e+(t||0));if(0===o)return null;if(n){const e=pr.unbox_mono_obj(o);return"boolean"==typeof e?e?"":null:e}return pr.conv_string(o)},readStructField:function(e,t){return e+(t||0)},beginHeapLock:function(){return Dr(),Sr=xr.create(),Sr},invokeWhenHeapUnlocked:function(e){Sr?Sr.enqueuePostReleaseAction(e):e()}};function Ir(e,t){const n=e/t*100;document.documentElement.style.setProperty("--blazor-load-percentage",`${n}%`),document.documentElement.style.setProperty("--blazor-load-percentage-text",`"${Math.floor(n)}%"`)}const kr=["DEBUGGING ENABLED"],Tr=e=>kr.indexOf(e)<0&&console.log(e),Rr=e=>{console.error(e||"(null)"),Bo()};function Ar(e){return e+12}function Dr(){if(Sr)throw new Error("Assertion failed - heap is currently locked")}class xr{enqueuePostReleaseAction(e){this.postReleaseActions||(this.postReleaseActions=[]),this.postReleaseActions.push(e)}release(){var e;if(Sr!==this)throw new Error("Trying to release a lock which isn't current");for(vr.mono_wasm_gc_unlock(),Sr=null;null===(e=this.postReleaseActions)||void 0===e?void 0:e.length;)this.postReleaseActions.shift()(),Dr()}static create(){return vr.mono_wasm_gc_lock(),new xr}}class Nr{constructor(e){this.batchAddress=e,this.arrayRangeReader=Pr,this.arrayBuilderSegmentReader=Mr,this.diffReader=Ur,this.editReader=Lr,this.frameReader=Br}updatedComponents(){return Zo.readStructField(this.batchAddress,0)}referenceFrames(){return Zo.readStructField(this.batchAddress,Pr.structLength)}disposedComponentIds(){return Zo.readStructField(this.batchAddress,2*Pr.structLength)}disposedEventHandlerIds(){return Zo.readStructField(this.batchAddress,3*Pr.structLength)}updatedComponentsEntry(e,t){return Or(e,t,Ur.structLength)}referenceFramesEntry(e,t){return Or(e,t,Br.structLength)}disposedComponentIdsEntry(e,t){const n=Or(e,t,4);return Zo.readInt32Field(n)}disposedEventHandlerIdsEntry(e,t){const n=Or(e,t,8);return Zo.readUint64Field(n)}}const Pr={structLength:8,values:e=>Zo.readObjectField(e,0),count:e=>Zo.readInt32Field(e,4)},Mr={structLength:12,values:e=>{const t=Zo.readObjectField(e,0),n=Zo.getObjectFieldsBaseAddress(t);return Zo.readObjectField(n,0)},offset:e=>Zo.readInt32Field(e,4),count:e=>Zo.readInt32Field(e,8)},Ur={structLength:4+Mr.structLength,componentId:e=>Zo.readInt32Field(e,0),edits:e=>Zo.readStructField(e,4),editsEntry:(e,t)=>Or(e,t,Lr.structLength)},Lr={structLength:20,editType:e=>Zo.readInt32Field(e,0),siblingIndex:e=>Zo.readInt32Field(e,4),newTreeIndex:e=>Zo.readInt32Field(e,8),moveToSiblingIndex:e=>Zo.readInt32Field(e,8),removedAttributeName:e=>Zo.readStringField(e,16)},Br={structLength:36,frameType:e=>Zo.readInt16Field(e,4),subtreeLength:e=>Zo.readInt32Field(e,8),elementReferenceCaptureId:e=>Zo.readStringField(e,16),componentId:e=>Zo.readInt32Field(e,12),elementName:e=>Zo.readStringField(e,16),textContent:e=>Zo.readStringField(e,16),markupContent:e=>Zo.readStringField(e,16),attributeName:e=>Zo.readStringField(e,16),attributeValue:e=>Zo.readStringField(e,24,!0),attributeEventHandlerId:e=>Zo.readUint64Field(e,8)};function Or(e,t,n){return Zo.getArrayEntryPtr(e,t,n)}class Fr{constructor(e){this.componentManager=e}resolveRegisteredElement(e){const t=Number.parseInt(e);if(!Number.isNaN(t))return H(this.componentManager.resolveRootComponent(t))}getParameterValues(e){return this.componentManager.initialComponents[e].parameterValues}getParameterDefinitions(e){return this.componentManager.initialComponents[e].parameterDefinitions}getTypeName(e){return this.componentManager.initialComponents[e].typeName}getAssembly(e){return this.componentManager.initialComponents[e].assembly}getCount(){return this.componentManager.initialComponents.length}}let $r,Hr,Wr,jr,zr,qr=!1,Jr=!1,Kr=!0,Vr=!1;const Xr=new Promise((e=>{zr=e}));let Gr;const Yr=new Promise((e=>{Gr=e}));let Qr;function Zr(e){if(void 0!==jr)throw new Error("Blazor WebAssembly has already started.");return jr=new Promise(ei.bind(null,e)),jr}async function ei(e,t,n){(function(){if(window.parent!==window&&!window.opener&&window.frameElement){const e=window.sessionStorage&&window.sessionStorage["Microsoft.AspNetCore.Components.WebAssembly.Authentication.CachedAuthSettings"],t=e&&JSON.parse(e);return t&&t.redirect_uri&&location.href.startsWith(t.redirect_uri)}return!1})()&&await new Promise((()=>{}));const o=ti();!function(e){const t=D;D=(e,n,o)=>{((e,t,n)=>{const o=De(e);(null==o?void 0:o.eventDelegator.getHandler(t))&&Er.invokeWhenHeapUnlocked(n)})(e,n,(()=>t(e,n,o)))}}(),vt._internal.applyHotReload=(e,t,n,o)=>{mr.invokeDotNetStaticMethod("Microsoft.AspNetCore.Components.WebAssembly","ApplyHotReloadDelta",e,t,n,o)},vt._internal.getApplyUpdateCapabilities=()=>mr.invokeDotNetStaticMethod("Microsoft.AspNetCore.Components.WebAssembly","GetApplyUpdateCapabilities"),vt._internal.invokeJSFromDotNet=oi,vt._internal.invokeJSJson=ri,vt._internal.endInvokeDotNetFromJS=ii,vt._internal.receiveWebAssemblyDotNetDataStream=si,vt._internal.receiveByteArray=ai;const r=ir(Er);vt.platform=r,vt._internal.renderBatch=(e,t)=>{const n=Er.beginHeapLock();try{xe(e,new Nr(t))}finally{n.release()}},vt._internal.navigationManager.listenForNavigationEvents(Bn.WebAssembly,(async(e,t,n)=>{await mr.invokeDotNetStaticMethodAsync("Microsoft.AspNetCore.Components.WebAssembly","NotifyLocationChanged",e,t,n)}),(async(e,t,n,o)=>{const r=await mr.invokeDotNetStaticMethodAsync("Microsoft.AspNetCore.Components.WebAssembly","NotifyLocationChangingAsync",t,n,o);vt._internal.navigationManager.endLocationChanging(e,r)}));const i=new Fr(e);let s;vt._internal.registeredComponents={getRegisteredComponentsCount:()=>i.getCount(),getAssembly:e=>i.getAssembly(e),getTypeName:e=>i.getTypeName(e),getParameterDefinitions:e=>i.getParameterDefinitions(e)||"",getParameterValues:e=>i.getParameterValues(e)||""},vt._internal.getPersistedState=()=>kt(document,Ct)||"",vt._internal.getInitialComponentsUpdate=()=>Yr,vt._internal.updateRootComponents=e=>{var t;return null===(t=vt._internal.dotNetExports)||void 0===t?void 0:t.UpdateRootComponentsCore(e)},vt._internal.endUpdateRootComponents=t=>{var n;return null===(n=e.onAfterUpdateRootComponents)||void 0===n?void 0:n.call(e,t)},vt._internal.attachRootComponentToElement=(e,t,n)=>{const o=i.resolveRegisteredElement(e);o?Ae(n,o,t,!1):function(e,t,n){const o="::before";let r=!1;if(e.endsWith("::after"))e=e.slice(0,-7),r=!0;else if(e.endsWith(o))throw new Error(`The '${o}' selector is not supported.`);const i=w(e)||document.querySelector(e);if(!i)throw new Error(`Could not find any element matching selector '${e}'.`);Ae(n,W(i,!0),t,r)}(e,t,n)};try{await o,s=await r.start()}catch(e){throw new Error(`Failed to start platform. Reason: ${e}`)}r.callEntryPoint(),wr.invokeAfterStartedCallbacks(vt),Jr=!0,t()}function ti(){return null!=Wr||(Wr=(async()=>{await Hr;const e=null!=$r?$r:{},t=null==$r?void 0:$r.configureRuntime;e.configureRuntime=e=>{null==t||t(e),Vr&&e.withEnvironmentVariable("__BLAZOR_WEBASSEMBLY_WAIT_FOR_ROOT_COMPONENTS","true")},await Er.load(e,zr),qr=!0})()),Wr}function ni(){return qr}function oi(t,n,o,r){const i=Er.readStringField(t,0),s=Er.readInt32Field(t,4),a=Er.readStringField(t,8),c=Er.readUint64Field(t,20);if(null!==a){const e=Er.readUint64Field(t,12);if(0!==e)return mr.beginInvokeJSFromDotNet(e,i,a,s,c),0;{const e=mr.invokeJSFromDotNet(i,a,s,c);return null===e?0:pr.js_string_to_mono_string(e)}}{const t=e.findJSFunction(i,c).call(null,n,o,r);switch(s){case e.JSCallResultType.Default:return t;case e.JSCallResultType.JSObjectReference:return e.createJSObjectReference(t).__jsObjectId;case e.JSCallResultType.JSStreamReference:{const n=e.createJSStreamReference(t),o=JSON.stringify(n);return pr.js_string_to_mono_string(o)}case e.JSCallResultType.JSVoidResult:return null;default:throw new Error(`Invalid JS call result type '${s}'.`)}}}function ri(e,t,n,o,r){return 0!==r?(mr.beginInvokeJSFromDotNet(r,e,o,n,t),null):mr.invokeJSFromDotNet(e,o,n,t)}function ii(e,t,n){mr.endInvokeDotNetFromJS(e,t,n)}function si(e,t,n,o){!function(e,t,n,o,r){let i=mt.get(t);if(!i){const n=new ReadableStream({start(e){mt.set(t,e),i=e}});e.supplyDotNetStream(t,n)}r?(i.error(r),mt.delete(t)):0===o?(i.close(),mt.delete(t)):i.enqueue(n.length===o?n:n.subarray(0,o))}(mr,e,t,n,o)}function ai(e,t){mr.receiveByteArray(e,t)}function ci(e,t){t.namespaceURI?e.setAttributeNS(t.namespaceURI,t.name,t.value):e.setAttribute(t.name,t.value)}Hr=new Promise((e=>{Qr=e}));const li="data-permanent";var hi,di;!function(e){e[e.None=0]="None",e[e.Some=1]="Some",e[e.Infinite=2]="Infinite"}(hi||(hi={})),function(e){e.Keep="keep",e.Update="update",e.Insert="insert",e.Delete="delete"}(di||(di={}));class ui{static create(e,t,n){return 0===t&&n===e.length?e:new ui(e,t,n)}constructor(e,t,n){this.source=e,this.startIndex=t,this.length=n}item(e){return this.source.item(e+this.startIndex)}forEach(e,t){for(let t=0;t=n&&s>=o&&r(e.item(i),t.item(s))===hi.None;)i--,s--,a++;return a}(e,t,o,o,n),i=function(e){var t;const n=[];let o=e.length-1,r=(null===(t=e[o])||void 0===t?void 0:t.length)-1;for(;o>0||r>0;){const t=0===o?di.Insert:0===r?di.Delete:e[o][r];switch(n.unshift(t),t){case di.Keep:case di.Update:o--,r--;break;case di.Insert:r--;break;case di.Delete:o--}}return n}(function(e,t,n){const o=[],r=[],i=e.length,s=t.length;if(0===i&&0===s)return[];for(let e=0;e<=i;e++)(o[e]=Array(s+1))[0]=e,r[e]=Array(s+1);const a=o[0];for(let e=1;e<=s;e++)a[e]=e;for(let a=1;a<=i;a++)for(let i=1;i<=s;i++){const s=n(e.item(a-1),t.item(i-1)),c=o[a-1][i]+1,l=o[a][i-1]+1;let h;switch(s){case hi.None:h=o[a-1][i-1];break;case hi.Some:h=o[a-1][i-1]+1;break;case hi.Infinite:h=Number.MAX_VALUE}h{history.pushState(null,"",e),Ui(e,!0)}))}function Pi(e){Oe()||Ui(location.href,!1)}function Mi(e){var t,n,o,r,i;if(Oe()||e.defaultPrevented)return;const s=e.target;if(s instanceof HTMLFormElement){if(!function(e){const t=e.getAttribute("data-enhance");return"string"==typeof t&&""===t||"true"===(null==t?void 0:t.toLowerCase())}(s))return;const a=(null===(t=e.submitter)||void 0===t?void 0:t.getAttribute("formmethod"))||s.method;if("dialog"===a)return void console.warn('A form cannot be enhanced when its method is "dialog".');const c=(null===(n=e.submitter)||void 0===n?void 0:n.getAttribute("formtarget"))||s.target;if(""!==c&&"_self"!==c)return void console.warn('A form cannot be enhanced when its target is different from the default value "_self".');e.preventDefault();const l=new URL((null===(o=e.submitter)||void 0===o?void 0:o.getAttribute("formaction"))||s.action,document.baseURI),h={method:a},d=new FormData(s),u=null===(r=e.submitter)||void 0===r?void 0:r.getAttribute("name"),p=e.submitter.getAttribute("value");u&&p&&d.append(u,p);const f=new URLSearchParams(d).toString();if("get"===h.method)l.search=f,history.pushState(null,"",l.toString());else{const t=(null===(i=e.submitter)||void 0===i?void 0:i.getAttribute("formenctype"))||s.enctype;"multipart/form-data"===t?h.body=d:(h.body=f,h.headers={"content-type":t,accept:Ii})}Ui(l.toString(),!1,h)}}async function Ui(e,t,n){Ri=!0,null==ki||ki.abort(),function(e,t){null==ke||ke(e,t)}(e,t),ki=new AbortController;const o=ki.signal,r=fetch(e,Object.assign({signal:o,mode:"no-cors",headers:{accept:Ii}},n));let i=null;if(await async function(e,t,n,o){let r;try{if(r=await e,!r.body)return void n(r,"");const t=r.headers.get("ssr-framing");if(!t){const e=await r.text();return void n(r,e)}let o=!0;await r.body.pipeThrough(new TextDecoderStream).pipeThrough(function(e){let t="";return new TransformStream({transform(n,o){if(t+=n,t.indexOf(e,t.length-n.length-e.length)>=0){const n=t.split(e);n.slice(0,-1).forEach((e=>o.enqueue(e))),t=n[n.length-1]}},flush(e){e.enqueue(t)}})}(`\x3c!--${t}--\x3e`)).pipeTo(new WritableStream({write(e){o?(o=!1,n(r,e)):(e=>{const t=document.createRange().createContextualFragment(e);for(;t.firstChild;)document.body.appendChild(t.firstChild)})(e)}}))}catch(e){if("AbortError"===e.name&&t.aborted)return;throw e}}(r,o,((t,o)=>{const r=!(null==n?void 0:n.method)||"get"===n.method,s=t.status>=200&&t.status<300;if("opaque"===t.type){if(r)return void Bi(e);throw new Error("Enhanced navigation does not support making a non-GET request to an endpoint that redirects to an external origin. Avoid enabling enhanced navigation for form posts that may perform external redirections.")}if(s&&"allow"!==t.headers.get("blazor-enhanced-nav")){if(r)return void Bi(e);throw new Error("Enhanced navigation does not support making a non-GET request to a non-Blazor endpoint. Avoid enabling enhanced navigation for forms that post to a non-Blazor endpoint.")}t.redirected&&(r?history.replaceState(null,"",t.url):t.url!==location.href&&history.pushState(null,"",t.url),e=t.url);const a=t.headers.get("blazor-enhanced-nav-redirect-location");if(a)return void location.replace(a);t.redirected||r||!s||(function(e){const t=new URL(e.url),n=new URL(Ai);return t.protocol===n.protocol&&t.host===n.host&&t.port===n.port&&t.pathname===n.pathname}(t)?location.href!==Ai&&history.pushState(null,"",Ai):i=`Cannot perform enhanced form submission that changes the URL (except via a redirection), because then back/forward would not work. Either remove this form's 'action' attribute, or change its method to 'get', or do not mark it as enhanced.\nOld URL: ${location.href}\nNew URL: ${t.url}`),Ai=t.url;const c=t.headers.get("content-type");if((null==c?void 0:c.startsWith("text/html"))&&o){const e=(new DOMParser).parseFromString(o,"text/html");fi(document,e),Ti.documentUpdated()}else(null==c?void 0:c.startsWith("text/"))&&o?Li(o):s||o?r?Bi(e):Li(`Error: ${n.method} request to ${e} returned non-HTML content of type ${c||"unspecified"}.`):Li(`Error: ${t.status} ${t.statusText}`)})),!o.aborted){const t=e.indexOf("#");if(t>=0){const n=e.substring(t+1),o=document.getElementById(n);null==o||o.scrollIntoView()}if(Ri=!1,Ti.enhancedNavigationCompleted(),i)throw new Error(i)}}function Li(e){document.documentElement.textContent=e;const t=document.documentElement.style;t.fontFamily="consolas, monospace",t.whiteSpace="pre-wrap",t.padding="1rem"}function Bi(e){history.replaceState(null,"",e+"?"),location.replace(e)}let Oi,Fi=!0;class $i extends HTMLElement{connectedCallback(){var e;const t=this.parentNode;null===(e=t.parentNode)||void 0===e||e.removeChild(t),t.childNodes.forEach((e=>{if(e instanceof HTMLTemplateElement){const t=e.getAttribute("blazor-component-id");if(t)"true"!==e.getAttribute("enhanced-nav")&&ki||function(e,t){const n=function(e){const t=`bl:${e}`,n=document.createNodeIterator(document,NodeFilter.SHOW_COMMENT);let o=null;for(;(o=n.nextNode())&&o.textContent!==t;);if(!o)return null;const r=`/bl:${e}`;let i=null;for(;(i=n.nextNode())&&i.textContent!==r;);return i?{startMarker:o,endMarker:i}:null}(e);if(n){const{startMarker:e,endMarker:o}=n;if(Fi)fi({startExclusive:e,endExclusive:o},t);else{const n=o.parentNode,r=new Range;for(r.setStart(e,e.textContent.length),r.setEnd(o,0),r.deleteContents();t.childNodes[0];)n.insertBefore(t.childNodes[0],o)}Oi.documentUpdated()}}(t,e.content);else switch(e.getAttribute("type")){case"redirection":const t=Le(e.content.textContent),n="form-post"===e.getAttribute("from");"true"===e.getAttribute("enhanced")&&Pe(t)?(n?history.pushState(null,"",t):history.replaceState(null,"",t),Ui(t,!1)):n?location.assign(t):location.replace(t);break;case"error":Li(e.content.textContent||"Error")}}}))}}class Hi{constructor(e){var t;this._circuitInactivityTimeoutMs=e,this._rootComponentsBySsrComponentId=new Map,this._seenDescriptors=new Set,this._pendingOperationBatches={},this._nextOperationBatchId=1,this._nextSsrComponentId=1,this._didWebAssemblyFailToLoadQuickly=!1,this._isComponentRefreshPending=!1,this.initialComponents=[],t=()=>{this.rootComponentsMayRequireRefresh()},E.push(t)}onAfterRenderBatch(e){e===Bn.Server&&this.circuitMayHaveNoRootComponents()}onDocumentUpdated(){this.rootComponentsMayRequireRefresh()}onEnhancedNavigationCompleted(){this.rootComponentsMayRequireRefresh()}registerComponent(e){if(this._seenDescriptors.has(e))return;"auto"!==e.type&&"webassembly"!==e.type||this.startLoadingWebAssemblyIfNotStarted();const t=this._nextSsrComponentId++;this._seenDescriptors.add(e),this._rootComponentsBySsrComponentId.set(t,{descriptor:e,ssrComponentId:t})}unregisterComponent(e){this._seenDescriptors.delete(e.descriptor),this._rootComponentsBySsrComponentId.delete(e.ssrComponentId),this.circuitMayHaveNoRootComponents()}async startLoadingWebAssemblyIfNotStarted(){if(void 0!==Wr)return;Vr=!0;const e=ti();setTimeout((()=>{ni()||this.onWebAssemblyFailedToLoadQuickly()}),vt._internal.loadWebAssemblyQuicklyTimeout);const t=await Xr;(function(e){if(!e.cacheBootResources)return!1;const t=Wi(e);if(!t)return!1;const n=window.localStorage.getItem(t.key);return t.value===n})(t)||this.onWebAssemblyFailedToLoadQuickly(),await e,function(e){const t=Wi(e);t&&window.localStorage.setItem(t.key,t.value)}(t),this.rootComponentsMayRequireRefresh()}onWebAssemblyFailedToLoadQuickly(){this._didWebAssemblyFailToLoadQuickly||(this._didWebAssemblyFailToLoadQuickly=!0,this.rootComponentsMayRequireRefresh())}startCircutIfNotStarted(){return void 0===Yo?tr(this):!Vo||Vo.isDisposedOrDisposing()?or():void 0}async startWebAssemblyIfNotStarted(){this.startLoadingWebAssemblyIfNotStarted(),void 0===jr&&await Zr(this)}rootComponentsMayRequireRefresh(){this._isComponentRefreshPending||(this._isComponentRefreshPending=!0,setTimeout((()=>{this._isComponentRefreshPending=!1,this.refreshRootComponents(this._rootComponentsBySsrComponentId.values())}),0))}circuitMayHaveNoRootComponents(){if(this.rendererHasExistingOrPendingComponents(Bn.Server,"server","auto"))return clearTimeout(this._circuitInactivityTimeoutId),void(this._circuitInactivityTimeoutId=void 0);void 0===this._circuitInactivityTimeoutId&&(this._circuitInactivityTimeoutId=setTimeout((()=>{this.rendererHasExistingOrPendingComponents(Bn.Server,"server","auto")||(async function(){await(null==Vo?void 0:Vo.dispose())}(),this._circuitInactivityTimeoutId=void 0)}),this._circuitInactivityTimeoutMs))}rendererHasComponents(e){const t=De(e);return void 0!==t&&t.getRootComponentCount()>0}rendererHasExistingOrPendingComponents(e,...t){if(this.rendererHasComponents(e))return!0;for(const{descriptor:{type:n},assignedRendererId:o}of this._rootComponentsBySsrComponentId.values()){if(o===e)return!0;if(void 0===o&&-1!==t.indexOf(n))return!0}return!1}refreshRootComponents(e){const t=new Map;for(const n of e){const e=this.determinePendingOperation(n);if(!e)continue;const o=n.assignedRendererId;if(!o)throw new Error("Descriptors must be assigned a renderer ID before getting used as root components");let r=t.get(o);r||(r=[],t.set(o,r)),r.push(e)}for(const[e,n]of t){const t={batchId:this._nextOperationBatchId++,operations:n};this._pendingOperationBatches[t.batchId]=t;const o=JSON.stringify(t);e===Bn.Server?rr(o):this.updateWebAssemblyRootComponents(o)}}updateWebAssemblyRootComponents(e){Kr?(Gr(e),Kr=!1):function(e){if(!jr)throw new Error("Blazor WebAssembly has not started.");if(!vt._internal.updateRootComponents)throw new Error("Blazor WebAssembly has not initialized.");Jr?vt._internal.updateRootComponents(e):async function(e){if(await jr,!vt._internal.updateRootComponents)throw new Error("Blazor WebAssembly has not initialized.");vt._internal.updateRootComponents(e)}(e)}(e)}resolveRendererIdForDescriptor(e){switch("auto"===e.type?this.getAutoRenderMode():e.type){case"server":return this.startCircutIfNotStarted(),Bn.Server;case"webassembly":return this.startWebAssemblyIfNotStarted(),Bn.WebAssembly;case null:return null}}getAutoRenderMode(){return this.rendererHasExistingOrPendingComponents(Bn.WebAssembly,"webassembly")?"webassembly":this.rendererHasExistingOrPendingComponents(Bn.Server,"server")?"server":ni()?"webassembly":this._didWebAssemblyFailToLoadQuickly?"server":null}determinePendingOperation(e){if(t=e.descriptor,document.contains(t.start)){if(void 0===e.assignedRendererId){if(Ri||"loading"===document.readyState)return null;const t=this.resolveRendererIdForDescriptor(e.descriptor);return null===t?null:T(t)?(be(e.descriptor.start,!0),e.assignedRendererId=t,e.uniqueIdAtLastUpdate=e.descriptor.uniqueId,{type:"add",ssrComponentId:e.ssrComponentId,marker:Ut(e.descriptor)}):null}return T(e.assignedRendererId)?e.uniqueIdAtLastUpdate===e.descriptor.uniqueId?null:(e.uniqueIdAtLastUpdate=e.descriptor.uniqueId,{type:"update",ssrComponentId:e.ssrComponentId,marker:Ut(e.descriptor)}):null}return e.hasPendingRemoveOperation?null:void 0===e.assignedRendererId?(this.unregisterComponent(e),null):T(e.assignedRendererId)?(be(e.descriptor.start,!1),e.hasPendingRemoveOperation=!0,{type:"remove",ssrComponentId:e.ssrComponentId}):null;var t}resolveRootComponent(e){const t=this._rootComponentsBySsrComponentId.get(e);if(!t)throw new Error(`Could not resolve a root component with SSR component ID '${e}'.`);return t.descriptor}onAfterUpdateRootComponents(e){const t=this._pendingOperationBatches[e];delete this._pendingOperationBatches[e];for(const e of t.operations)switch(e.type){case"remove":{const t=this._rootComponentsBySsrComponentId.get(e.ssrComponentId);t&&this.unregisterComponent(t);break}}}}function Wi(e){var t;const n=null===(t=e.resources)||void 0===t?void 0:t.hash,o=e.mainAssemblyName;return n&&o?{key:`blazor-resource-hash:${o}`,value:n}:null}class ji{constructor(){this._eventListeners=new Map}static create(e){const t=new ji;return e.addEventListener=t.addEventListener.bind(t),e.removeEventListener=t.removeEventListener.bind(t),t}addEventListener(e,t){let n=this._eventListeners.get(e);n||(n=new Set,this._eventListeners.set(e,n)),n.add(t)}removeEventListener(e,t){var n;null===(n=this._eventListeners.get(e))||void 0===n||n.delete(t)}dispatchEvent(e,t){const n=this._eventListeners.get(e);if(!n)return;const o={...t,type:e};for(const e of n)e(o)}}let zi,qi=!1;function Ji(e){var t,n,o,r;if(qi)throw new Error("Blazor has already started.");qi=!0,null!==(t=(e=e||{}).logLevel)&&void 0!==t||(e.logLevel=yt.Error),vt._internal.loadWebAssemblyQuicklyTimeout=3e3,vt._internal.isBlazorWeb=!0,vt._internal.hotReloadApplied=()=>{Me()&&Ue(location.href,!0)},zi=new Hi(null!==(o=null===(n=null==e?void 0:e.ssr)||void 0===n?void 0:n.circuitInactivityTimeoutMs)&&void 0!==o?o:2e3);const i=ji.create(vt),s={documentUpdated:()=>{zi.onDocumentUpdated(),i.dispatchEvent("enhancedload",{})},enhancedNavigationCompleted(){zi.onEnhancedNavigationCompleted()}};return pi=zi,function(e,t){Oi=t,(null==e?void 0:e.disableDomPreservation)&&(Fi=!1),customElements.define("blazor-ssr-end",$i)}(null==e?void 0:e.ssr,s),(null===(r=null==e?void 0:e.ssr)||void 0===r?void 0:r.disableDomPreservation)||Di(s),"loading"===document.readyState?document.addEventListener("DOMContentLoaded",Ki.bind(null,e)):Ki(e),Promise.resolve()}function Ki(e){const t=Fo((null==e?void 0:e.circuit)||{});e.circuit=t;const n=async function(e,t){var n;const o=kt(document,Et,"initializers");if(!o)return new qo(!1,t);const r=null!==(n=JSON.parse(atob(o)))&&void 0!==n?n:[],i=new qo(!1,t);return await i.importInitializersAsync(r,[e]),i}(e,new bt(t.logLevel));er(Vi(n,t)),function(e){if($r)throw new Error("WebAssembly options have already been configured.");!async function(e){const t=await e;$r=t,Qr()}(e)}(Vi(n,(null==e?void 0:e.webAssembly)||{})),function(e){const t=bi(document);for(const e of t)null==pi||pi.registerComponent(e)}(),zi.onDocumentUpdated(),async function(e){const t=await e;await t.invokeAfterStartedCallbacks(vt)}(n)}async function Vi(e,t){return await e,t}vt.start=Ji,window.DotNet=e,document&&document.currentScript&&"false"!==document.currentScript.getAttribute("autostart")&&Ji()})()})(); \ No newline at end of file +(()=>{var e={778:()=>{},77:()=>{},203:()=>{},200:()=>{},628:()=>{},321:()=>{}},t={};function n(o){var r=t[o];if(void 0!==r)return r.exports;var i=t[o]={exports:{}};return e[o](i,i.exports,n),i.exports}n.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),(()=>{"use strict";var e,t,o;!function(e){const t=[],n="__jsObjectId",o="__dotNetObject",r="__byte[]",i="__dotNetStream",s="__jsStreamReferenceLength";let a,c;class l{constructor(e){this._jsObject=e,this._cachedFunctions=new Map}findFunction(e){const t=this._cachedFunctions.get(e);if(t)return t;let n,o=this._jsObject;if(e.split(".").forEach((t=>{if(!(t in o))throw new Error(`Could not find '${e}' ('${t}' was undefined).`);n=o,o=o[t]})),o instanceof Function)return o=o.bind(n),this._cachedFunctions.set(e,o),o;throw new Error(`The value '${e}' is not a function.`)}getWrappedObject(){return this._jsObject}}const h={0:new l(window)};h[0]._cachedFunctions.set("import",(e=>("string"==typeof e&&e.startsWith("./")&&(e=new URL(e.substr(2),document.baseURI).toString()),import(e))));let d,u=1;function p(e){t.push(e)}function f(e){if(e&&"object"==typeof e){h[u]=new l(e);const t={[n]:u};return u++,t}throw new Error(`Cannot create a JSObjectReference from the value '${e}'.`)}function g(e){let t=-1;if(e instanceof ArrayBuffer&&(e=new Uint8Array(e)),e instanceof Blob)t=e.size;else{if(!(e.buffer instanceof ArrayBuffer))throw new Error("Supplied value is not a typed array or blob.");if(void 0===e.byteLength)throw new Error(`Cannot create a JSStreamReference from the value '${e}' as it doesn't have a byteLength.`);t=e.byteLength}const o={[s]:t};try{const t=f(e);o[n]=t[n]}catch(t){throw new Error(`Cannot create a JSStreamReference from the value '${e}'.`)}return o}function m(e,n){c=e;const o=n?JSON.parse(n,((e,n)=>t.reduce(((t,n)=>n(e,t)),n))):null;return c=void 0,o}function v(){if(void 0===a)throw new Error("No call dispatcher has been set.");if(null===a)throw new Error("There are multiple .NET runtimes present, so a default dispatcher could not be resolved. Use DotNetObject to invoke .NET instance methods.");return a}e.attachDispatcher=function(e){const t=new y(e);return void 0===a?a=t:a&&(a=null),t},e.attachReviver=p,e.invokeMethod=function(e,t,...n){return v().invokeDotNetStaticMethod(e,t,...n)},e.invokeMethodAsync=function(e,t,...n){return v().invokeDotNetStaticMethodAsync(e,t,...n)},e.createJSObjectReference=f,e.createJSStreamReference=g,e.disposeJSObjectReference=function(e){const t=e&&e[n];"number"==typeof t&&_(t)},function(e){e[e.Default=0]="Default",e[e.JSObjectReference=1]="JSObjectReference",e[e.JSStreamReference=2]="JSStreamReference",e[e.JSVoidResult=3]="JSVoidResult"}(d=e.JSCallResultType||(e.JSCallResultType={}));class y{constructor(e){this._dotNetCallDispatcher=e,this._byteArraysToBeRevived=new Map,this._pendingDotNetToJSStreams=new Map,this._pendingAsyncCalls={},this._nextAsyncCallId=1}getDotNetCallDispatcher(){return this._dotNetCallDispatcher}invokeJSFromDotNet(e,t,n,o){const r=m(this,t),i=I(b(e,o)(...r||[]),n);return null==i?null:T(this,i)}beginInvokeJSFromDotNet(e,t,n,o,r){const i=new Promise((e=>{const o=m(this,n);e(b(t,r)(...o||[]))}));e&&i.then((t=>T(this,[e,!0,I(t,o)]))).then((t=>this._dotNetCallDispatcher.endInvokeJSFromDotNet(e,!0,t)),(t=>this._dotNetCallDispatcher.endInvokeJSFromDotNet(e,!1,JSON.stringify([e,!1,w(t)]))))}endInvokeDotNetFromJS(e,t,n){const o=t?m(this,n):new Error(n);this.completePendingCall(parseInt(e,10),t,o)}invokeDotNetStaticMethod(e,t,...n){return this.invokeDotNetMethod(e,t,null,n)}invokeDotNetStaticMethodAsync(e,t,...n){return this.invokeDotNetMethodAsync(e,t,null,n)}invokeDotNetMethod(e,t,n,o){if(this._dotNetCallDispatcher.invokeDotNetFromJS){const r=T(this,o),i=this._dotNetCallDispatcher.invokeDotNetFromJS(e,t,n,r);return i?m(this,i):null}throw new Error("The current dispatcher does not support synchronous calls from JS to .NET. Use invokeDotNetMethodAsync instead.")}invokeDotNetMethodAsync(e,t,n,o){if(e&&n)throw new Error(`For instance method calls, assemblyName should be null. Received '${e}'.`);const r=this._nextAsyncCallId++,i=new Promise(((e,t)=>{this._pendingAsyncCalls[r]={resolve:e,reject:t}}));try{const i=T(this,o);this._dotNetCallDispatcher.beginInvokeDotNetFromJS(r,e,t,n,i)}catch(e){this.completePendingCall(r,!1,e)}return i}receiveByteArray(e,t){this._byteArraysToBeRevived.set(e,t)}processByteArray(e){const t=this._byteArraysToBeRevived.get(e);return t?(this._byteArraysToBeRevived.delete(e),t):null}supplyDotNetStream(e,t){if(this._pendingDotNetToJSStreams.has(e)){const n=this._pendingDotNetToJSStreams.get(e);this._pendingDotNetToJSStreams.delete(e),n.resolve(t)}else{const n=new E;n.resolve(t),this._pendingDotNetToJSStreams.set(e,n)}}getDotNetStreamPromise(e){let t;if(this._pendingDotNetToJSStreams.has(e))t=this._pendingDotNetToJSStreams.get(e).streamPromise,this._pendingDotNetToJSStreams.delete(e);else{const n=new E;this._pendingDotNetToJSStreams.set(e,n),t=n.streamPromise}return t}completePendingCall(e,t,n){if(!this._pendingAsyncCalls.hasOwnProperty(e))throw new Error(`There is no pending async call with ID ${e}.`);const o=this._pendingAsyncCalls[e];delete this._pendingAsyncCalls[e],t?o.resolve(n):o.reject(n)}}function w(e){return e instanceof Error?`${e.message}\n${e.stack}`:e?e.toString():"null"}function b(e,t){const n=h[t];if(n)return n.findFunction(e);throw new Error(`JS object instance with ID ${t} does not exist (has it been disposed?).`)}function _(e){delete h[e]}e.findJSFunction=b,e.disposeJSObjectReferenceById=_;class S{constructor(e,t){this._id=e,this._callDispatcher=t}invokeMethod(e,...t){return this._callDispatcher.invokeDotNetMethod(null,e,this._id,t)}invokeMethodAsync(e,...t){return this._callDispatcher.invokeDotNetMethodAsync(null,e,this._id,t)}dispose(){this._callDispatcher.invokeDotNetMethodAsync(null,"__Dispose",this._id,null).catch((e=>console.error(e)))}serializeAsArg(){return{[o]:this._id}}}e.DotNetObject=S,p((function(e,t){if(t&&"object"==typeof t){if(t.hasOwnProperty(o))return new S(t[o],c);if(t.hasOwnProperty(n)){const e=t[n],o=h[e];if(o)return o.getWrappedObject();throw new Error(`JS object instance with Id '${e}' does not exist. It may have been disposed.`)}if(t.hasOwnProperty(r)){const e=t[r],n=c.processByteArray(e);if(void 0===n)throw new Error(`Byte array index '${e}' does not exist.`);return n}if(t.hasOwnProperty(i)){const e=t[i],n=c.getDotNetStreamPromise(e);return new C(n)}}return t}));class C{constructor(e){this._streamPromise=e}stream(){return this._streamPromise}async arrayBuffer(){return new Response(await this.stream()).arrayBuffer()}}class E{constructor(){this.streamPromise=new Promise(((e,t)=>{this.resolve=e,this.reject=t}))}}function I(e,t){switch(t){case d.Default:return e;case d.JSObjectReference:return f(e);case d.JSStreamReference:return g(e);case d.JSVoidResult:return null;default:throw new Error(`Invalid JS call result type '${t}'.`)}}let k=0;function T(e,t){k=0,c=e;const n=JSON.stringify(t,R);return c=void 0,n}function R(e,t){if(t instanceof S)return t.serializeAsArg();if(t instanceof Uint8Array){c.getDotNetCallDispatcher().sendByteArray(k,t);const e={[r]:k};return k++,e}return t}}(e||(e={})),function(e){e[e.prependFrame=1]="prependFrame",e[e.removeFrame=2]="removeFrame",e[e.setAttribute=3]="setAttribute",e[e.removeAttribute=4]="removeAttribute",e[e.updateText=5]="updateText",e[e.stepIn=6]="stepIn",e[e.stepOut=7]="stepOut",e[e.updateMarkup=8]="updateMarkup",e[e.permutationListEntry=9]="permutationListEntry",e[e.permutationListEnd=10]="permutationListEnd"}(t||(t={})),function(e){e[e.element=1]="element",e[e.text=2]="text",e[e.attribute=3]="attribute",e[e.component=4]="component",e[e.region=5]="region",e[e.elementReferenceCapture=6]="elementReferenceCapture",e[e.markup=8]="markup",e[e.namedEvent=10]="namedEvent"}(o||(o={}));class r{constructor(e,t){this.componentId=e,this.fieldValue=t}static fromEvent(e,t){const n=t.target;if(n instanceof Element){const t=function(e){return e instanceof HTMLInputElement?e.type&&"checkbox"===e.type.toLowerCase()?{value:e.checked}:{value:e.value}:e instanceof HTMLSelectElement||e instanceof HTMLTextAreaElement?{value:e.value}:null}(n);if(t)return new r(e,t.value)}return null}}const i=new Map,s=new Map,a=[];function c(e){return i.get(e)}function l(e){const t=i.get(e);return(null==t?void 0:t.browserEventName)||e}function h(e,t){e.forEach((e=>i.set(e,t)))}function d(e){const t=[];for(let n=0;ne.selected)).map((e=>e.value))}}{const e=function(e){return!!e&&"INPUT"===e.tagName&&"checkbox"===e.getAttribute("type")}(t);return{value:e?!!t.checked:t.value}}}}),h(["copy","cut","paste"],{createEventArgs:e=>({type:e.type})}),h(["drag","dragend","dragenter","dragleave","dragover","dragstart","drop"],{createEventArgs:e=>{return{...u(t=e),dataTransfer:t.dataTransfer?{dropEffect:t.dataTransfer.dropEffect,effectAllowed:t.dataTransfer.effectAllowed,files:Array.from(t.dataTransfer.files).map((e=>e.name)),items:Array.from(t.dataTransfer.items).map((e=>({kind:e.kind,type:e.type}))),types:t.dataTransfer.types}:null};var t}}),h(["focus","blur","focusin","focusout"],{createEventArgs:e=>({type:e.type})}),h(["keydown","keyup","keypress"],{createEventArgs:e=>{return{key:(t=e).key,code:t.code,location:t.location,repeat:t.repeat,ctrlKey:t.ctrlKey,shiftKey:t.shiftKey,altKey:t.altKey,metaKey:t.metaKey,type:t.type};var t}}),h(["contextmenu","click","mouseover","mouseout","mousemove","mousedown","mouseup","mouseleave","mouseenter","dblclick"],{createEventArgs:e=>u(e)}),h(["error"],{createEventArgs:e=>{return{message:(t=e).message,filename:t.filename,lineno:t.lineno,colno:t.colno,type:t.type};var t}}),h(["loadstart","timeout","abort","load","loadend","progress"],{createEventArgs:e=>{return{lengthComputable:(t=e).lengthComputable,loaded:t.loaded,total:t.total,type:t.type};var t}}),h(["touchcancel","touchend","touchmove","touchenter","touchleave","touchstart"],{createEventArgs:e=>{return{detail:(t=e).detail,touches:d(t.touches),targetTouches:d(t.targetTouches),changedTouches:d(t.changedTouches),ctrlKey:t.ctrlKey,shiftKey:t.shiftKey,altKey:t.altKey,metaKey:t.metaKey,type:t.type};var t}}),h(["gotpointercapture","lostpointercapture","pointercancel","pointerdown","pointerenter","pointerleave","pointermove","pointerout","pointerover","pointerup"],{createEventArgs:e=>{return{...u(t=e),pointerId:t.pointerId,width:t.width,height:t.height,pressure:t.pressure,tiltX:t.tiltX,tiltY:t.tiltY,pointerType:t.pointerType,isPrimary:t.isPrimary};var t}}),h(["wheel","mousewheel"],{createEventArgs:e=>{return{...u(t=e),deltaX:t.deltaX,deltaY:t.deltaY,deltaZ:t.deltaZ,deltaMode:t.deltaMode};var t}}),h(["cancel","close","toggle"],{createEventArgs:()=>({})});const p=["date","datetime-local","month","time","week"],f=new Map;let g,m,v=0;const y={async add(e,t,n){if(!n)throw new Error("initialParameters must be an object, even if empty.");const o="__bl-dynamic-root:"+(++v).toString();f.set(o,e);const r=await S().invokeMethodAsync("AddRootComponent",t,o),i=new _(r,m[t]);return await i.setParameters(n),i}};function w(e){const t=f.get(e);if(t)return f.delete(e),t}class b{invoke(e){return this._callback(e)}setCallback(t){this._selfJSObjectReference||(this._selfJSObjectReference=e.createJSObjectReference(this)),this._callback=t}getJSObjectReference(){return this._selfJSObjectReference}dispose(){this._selfJSObjectReference&&e.disposeJSObjectReference(this._selfJSObjectReference)}}class _{constructor(e,t){this._jsEventCallbackWrappers=new Map,this._componentId=e;for(const e of t)"eventcallback"===e.type&&this._jsEventCallbackWrappers.set(e.name.toLowerCase(),new b)}setParameters(e){const t={},n=Object.entries(e||{}),o=n.length;for(const[e,o]of n){const n=this._jsEventCallbackWrappers.get(e.toLowerCase());n&&o?(n.setCallback(o),t[e]=n.getJSObjectReference()):t[e]=o}return S().invokeMethodAsync("SetRootComponentParameters",this._componentId,o,t)}async dispose(){if(null!==this._componentId){await S().invokeMethodAsync("RemoveRootComponent",this._componentId),this._componentId=null;for(const e of this._jsEventCallbackWrappers.values())e.dispose()}}}function S(){if(!g)throw new Error("Dynamic root components have not been enabled in this application.");return g}const C=new Map,E=[],I=new Map;function k(t,n,o,r){var i,s;if(C.has(t))throw new Error(`Interop methods are already registered for renderer ${t}`);C.set(t,n),o&&r&&Object.keys(o).length>0&&function(t,n,o){if(g)throw new Error("Dynamic root components have already been enabled.");g=t,m=n;for(const[t,r]of Object.entries(o)){const o=e.findJSFunction(t,0);for(const e of r)o(e,n[e])}}(A(t),o,r),null===(s=null===(i=I.get(t))||void 0===i?void 0:i[0])||void 0===s||s.call(i),function(e){for(const t of E)t(e)}(t)}function T(e){return C.has(e)}function R(e,t,n){return D(e,t.eventHandlerId,(()=>A(e).invokeMethodAsync("DispatchEventAsync",t,n)))}function A(e){const t=C.get(e);if(!t)throw new Error(`No interop methods are registered for renderer ${e}`);return t}let D=(e,t,n)=>n();const x=B(["abort","blur","cancel","canplay","canplaythrough","change","close","cuechange","durationchange","emptied","ended","error","focus","load","loadeddata","loadedmetadata","loadend","loadstart","mouseenter","mouseleave","pointerenter","pointerleave","pause","play","playing","progress","ratechange","reset","scroll","seeked","seeking","stalled","submit","suspend","timeupdate","toggle","unload","volumechange","waiting","DOMNodeInsertedIntoDocument","DOMNodeRemovedFromDocument"]),N={submit:!0},P=B(["click","dblclick","mousedown","mousemove","mouseup"]);class M{constructor(e){this.browserRendererId=e,this.afterClickCallbacks=[];const t=++M.nextEventDelegatorId;this.eventsCollectionKey=`_blazorEvents_${t}`,this.eventInfoStore=new U(this.onGlobalEvent.bind(this))}setListener(e,t,n,o){const r=this.getEventHandlerInfosForElement(e,!0),i=r.getHandler(t);if(i)this.eventInfoStore.update(i.eventHandlerId,n);else{const i={element:e,eventName:t,eventHandlerId:n,renderingComponentId:o};this.eventInfoStore.add(i),r.setHandler(t,i)}}getHandler(e){return this.eventInfoStore.get(e)}removeListener(e){const t=this.eventInfoStore.remove(e);if(t){const e=t.element,n=this.getEventHandlerInfosForElement(e,!1);n&&n.removeHandler(t.eventName)}}notifyAfterClick(e){this.afterClickCallbacks.push(e),this.eventInfoStore.addGlobalListener("click")}setStopPropagation(e,t,n){this.getEventHandlerInfosForElement(e,!0).stopPropagation(t,n)}setPreventDefault(e,t,n){this.getEventHandlerInfosForElement(e,!0).preventDefault(t,n)}onGlobalEvent(e){if(!(e.target instanceof Element))return;this.dispatchGlobalEventToAllElements(e.type,e);const t=(n=e.type,s.get(n));var n;t&&t.forEach((t=>this.dispatchGlobalEventToAllElements(t,e))),"click"===e.type&&this.afterClickCallbacks.forEach((t=>t(e)))}dispatchGlobalEventToAllElements(e,t){const n=t.composedPath();let o=n.shift(),i=null,s=!1;const a=Object.prototype.hasOwnProperty.call(x,e);let l=!1;for(;o;){const u=o,p=this.getEventHandlerInfosForElement(u,!1);if(p){const n=p.getHandler(e);if(n&&(h=u,d=t.type,!((h instanceof HTMLButtonElement||h instanceof HTMLInputElement||h instanceof HTMLTextAreaElement||h instanceof HTMLSelectElement)&&Object.prototype.hasOwnProperty.call(P,d)&&h.disabled))){if(!s){const n=c(e);i=(null==n?void 0:n.createEventArgs)?n.createEventArgs(t):{},s=!0}Object.prototype.hasOwnProperty.call(N,t.type)&&t.preventDefault(),R(this.browserRendererId,{eventHandlerId:n.eventHandlerId,eventName:e,eventFieldInfo:r.fromEvent(n.renderingComponentId,t)},i)}p.stopPropagation(e)&&(l=!0),p.preventDefault(e)&&t.preventDefault()}o=a||l?void 0:n.shift()}var h,d}getEventHandlerInfosForElement(e,t){return Object.prototype.hasOwnProperty.call(e,this.eventsCollectionKey)?e[this.eventsCollectionKey]:t?e[this.eventsCollectionKey]=new L:null}}M.nextEventDelegatorId=0;class U{constructor(e){this.globalListener=e,this.infosByEventHandlerId={},this.countByEventName={},a.push(this.handleEventNameAliasAdded.bind(this))}add(e){if(this.infosByEventHandlerId[e.eventHandlerId])throw new Error(`Event ${e.eventHandlerId} is already tracked`);this.infosByEventHandlerId[e.eventHandlerId]=e,this.addGlobalListener(e.eventName)}get(e){return this.infosByEventHandlerId[e]}addGlobalListener(e){if(e=l(e),Object.prototype.hasOwnProperty.call(this.countByEventName,e))this.countByEventName[e]++;else{this.countByEventName[e]=1;const t=Object.prototype.hasOwnProperty.call(x,e);document.addEventListener(e,this.globalListener,t)}}update(e,t){if(Object.prototype.hasOwnProperty.call(this.infosByEventHandlerId,t))throw new Error(`Event ${t} is already tracked`);const n=this.infosByEventHandlerId[e];delete this.infosByEventHandlerId[e],n.eventHandlerId=t,this.infosByEventHandlerId[t]=n}remove(e){const t=this.infosByEventHandlerId[e];if(t){delete this.infosByEventHandlerId[e];const n=l(t.eventName);0==--this.countByEventName[n]&&(delete this.countByEventName[n],document.removeEventListener(n,this.globalListener))}return t}handleEventNameAliasAdded(e,t){if(Object.prototype.hasOwnProperty.call(this.countByEventName,e)){const n=this.countByEventName[e];delete this.countByEventName[e],document.removeEventListener(e,this.globalListener),this.addGlobalListener(t),this.countByEventName[t]+=n-1}}}class L{constructor(){this.handlers={},this.preventDefaultFlags=null,this.stopPropagationFlags=null}getHandler(e){return Object.prototype.hasOwnProperty.call(this.handlers,e)?this.handlers[e]:null}setHandler(e,t){this.handlers[e]=t}removeHandler(e){delete this.handlers[e]}preventDefault(e,t){return void 0!==t&&(this.preventDefaultFlags=this.preventDefaultFlags||{},this.preventDefaultFlags[e]=t),!!this.preventDefaultFlags&&this.preventDefaultFlags[e]}stopPropagation(e,t){return void 0!==t&&(this.stopPropagationFlags=this.stopPropagationFlags||{},this.stopPropagationFlags[e]=t),!!this.stopPropagationFlags&&this.stopPropagationFlags[e]}}function B(e){const t={};return e.forEach((e=>{t[e]=!0})),t}const O=Symbol(),F=Symbol(),$=Symbol();function H(e){const{start:t,end:n}=e,o=t[$];if(o){if(o!==e)throw new Error("The start component comment was already associated with another component descriptor.");return t}const r=t.parentNode;if(!r)throw new Error(`Comment not connected to the DOM ${t.textContent}`);const i=W(r,!0),s=Y(i);t[F]=i,t[$]=e;const a=W(t);if(n){const e=Y(a),o=Array.prototype.indexOf.call(s,a)+1;let r=null;for(;r!==n;){const n=s.splice(o,1)[0];if(!n)throw new Error("Could not find the end component comment in the parent logical node list");n[F]=t,e.push(n),r=n}}return a}function W(e,t){if(O in e)return e;const n=[];if(e.childNodes.length>0){if(!t)throw new Error("New logical elements must start empty, or allowExistingContents must be true");e.childNodes.forEach((t=>{const o=W(t,!0);o[F]=e,n.push(o)}))}return e[O]=n,e}function j(e){const t=Y(e);for(;t.length;)J(e,0)}function z(e,t){const n=document.createComment("!");return q(n,e,t),n}function q(e,t,n){const o=e;let r=e;if(e instanceof Comment){const t=Y(o);if((null==t?void 0:t.length)>0){const t=oe(o),n=new Range;n.setStartBefore(e),n.setEndAfter(t),r=n.extractContents()}}const i=K(o);if(i){const e=Y(i),t=Array.prototype.indexOf.call(e,o);e.splice(t,1),delete o[F]}const s=Y(t);if(n0;)J(n,0)}const o=n;o.parentNode.removeChild(o)}function K(e){return e[F]||null}function V(e,t){return Y(e)[t]}function X(e){return e[$]||null}function G(e){const t=te(e);return"http://www.w3.org/2000/svg"===t.namespaceURI&&"foreignObject"!==t.tagName}function Y(e){return e[O]}function Q(e){const t=Y(K(e));return t[Array.prototype.indexOf.call(t,e)+1]||null}function Z(e){return O in e}function ee(e,t){const n=Y(e);t.forEach((e=>{e.moveRangeStart=n[e.fromSiblingIndex],e.moveRangeEnd=oe(e.moveRangeStart)})),t.forEach((t=>{const o=document.createComment("marker");t.moveToBeforeMarker=o;const r=n[t.toSiblingIndex+1];r?r.parentNode.insertBefore(o,r):ne(o,e)})),t.forEach((e=>{const t=e.moveToBeforeMarker,n=t.parentNode,o=e.moveRangeStart,r=e.moveRangeEnd;let i=o;for(;i;){const e=i.nextSibling;if(n.insertBefore(i,t),i===r)break;i=e}n.removeChild(t)})),t.forEach((e=>{n[e.toSiblingIndex]=e.moveRangeStart}))}function te(e){if(e instanceof Element||e instanceof DocumentFragment)return e;if(e instanceof Comment)return e.parentNode;throw new Error("Not a valid logical element")}function ne(e,t){if(t instanceof Element||t instanceof DocumentFragment)t.appendChild(e);else{if(!(t instanceof Comment))throw new Error(`Cannot append node because the parent is not a valid logical element. Parent: ${t}`);{const n=Q(t);n?n.parentNode.insertBefore(e,n):ne(e,K(t))}}}function oe(e){if(e instanceof Element||e instanceof DocumentFragment)return e;const t=Q(e);if(t)return t.previousSibling;{const t=K(e);return t instanceof Element||t instanceof DocumentFragment?t.lastChild:oe(t)}}function re(e){return`_bl_${e}`}const ie="__internalId";e.attachReviver(((e,t)=>t&&"object"==typeof t&&Object.prototype.hasOwnProperty.call(t,ie)&&"string"==typeof t[ie]?function(e){const t=`[${re(e)}]`;return document.querySelector(t)}(t[ie]):t));const se="_blazorDeferredValue";function ae(e){e instanceof HTMLOptionElement?de(e):se in e&&he(e,e[se])}function ce(e){return"select-multiple"===e.type}function le(e,t){e.value=t||""}function he(e,t){e instanceof HTMLSelectElement?ce(e)?function(e,t){t||(t=[]);for(let n=0;n{Oe()&&Ne(e,(e=>{Xe(e,!0,!1)}))}))}getRootComponentCount(){return this.rootComponentIds.size}attachRootComponentToLogicalElement(e,t,n){if(we(t))throw new Error(`Root component '${e}' could not be attached because its target element is already associated with a root component`);n&&(t=z(t,Y(t).length)),ye(t,!0),this.attachComponentToElement(e,t),this.rootComponentIds.add(e),fe.add(t)}updateComponent(e,t,n,o){var r;const i=this.childComponentLocations[t];if(!i)throw new Error(`No element is currently associated with component ${t}`);fe.delete(i)&&(j(i),i instanceof Comment&&(i.textContent="!"));const s=null===(r=te(i))||void 0===r?void 0:r.getRootNode(),a=s&&s.activeElement;this.applyEdits(e,t,i,0,n,o),a instanceof HTMLElement&&s&&s.activeElement!==a&&a.focus()}disposeComponent(e){if(this.rootComponentIds.delete(e)){const t=this.childComponentLocations[e];ye(t,!1),!0===t[me]?fe.add(t):j(t)}delete this.childComponentLocations[e]}disposeEventHandler(e){this.eventDelegator.removeListener(e)}attachComponentToElement(e,t){this.childComponentLocations[e]=t}applyEdits(e,n,o,r,i,s){let a,c=0,l=r;const h=e.arrayBuilderSegmentReader,d=e.editReader,u=e.frameReader,p=h.values(i),f=h.offset(i),g=f+h.count(i);for(let i=f;i{const t=document.createElement("script");t.textContent=e.textContent,e.getAttributeNames().forEach((n=>{t.setAttribute(n,e.getAttribute(n))})),e.parentNode.replaceChild(t,e)})),ue.content));var s;let a=0;for(;i.firstChild;)q(i.firstChild,r,a++)}applyAttribute(e,t,n,o){const r=e.frameReader,i=r.attributeName(o),s=r.attributeEventHandlerId(o);if(s){const e=Se(i);return void this.eventDelegator.setListener(n,e,s,t)}const a=r.attributeValue(o);this.setOrRemoveAttributeOrProperty(n,i,a)}insertFrameRange(e,t,n,o,r,i,s){const a=o;for(let a=i;a{et(t,e)})},enableNavigationInterception:function(e){if(void 0!==Ee&&Ee!==e)throw new Error("Only one interactive runtime may enable navigation interception at a time.");Ee=e},setHasLocationChangingListeners:function(e,t){const n=je.get(e);if(!n)throw new Error(`Renderer with ID '${e}' is not listening for navigation events`);n.hasLocationChangingEventListeners=t},endLocationChanging:function(e,t){qe&&e===We&&(qe(t),qe=null)},navigateTo:function(e,t){Ve(e,t,!0)},refresh:function(e){!e&&Me()?Ue(location.href,!0):location.reload()},getBaseURI:()=>document.baseURI,getLocationHref:()=>location.href,scrollToElement:Ke};function Ke(e){const t=document.getElementById(e);return!!t&&(t.scrollIntoView(),!0)}function Ve(e,t,n=!1){const o=Le(e),r=ot();if(t.forceLoad||!Pe(o)||"serverside-fullpageload"===r)!function(e,t){if(location.href===e){const t=e+"?";history.replaceState(null,"",t),location.replace(e)}else t?location.replace(e):location.href=e}(e,t.replaceHistoryEntry);else if("clientside-router"===r)Xe(o,!1,t.replaceHistoryEntry,t.historyEntryState,n);else{if("serverside-enhanced"!==r)throw new Error(`Unsupported page load mechanism: ${r}`);Ue(o,t.replaceHistoryEntry)}}async function Xe(e,t,n,o=void 0,r=!1){if(Qe(),function(e){const t=e.indexOf("#");return t>-1&&location.href.replace(location.hash,"")===e.substring(0,t)}(e))return void function(e,t,n){Ge(e,t,n);const o=e.indexOf("#");o!==e.length-1&&Ke(e.substring(o+1))}(e,n,o);const i=nt();(r||!(null==i?void 0:i.hasLocationChangingEventListeners)||await Ze(e,o,t,i))&&(Re=!0,Ge(e,n,o),await et(t))}function Ge(e,t,n=void 0){t?history.replaceState({userState:n,_index:He},"",e):(He++,history.pushState({userState:n,_index:He},"",e))}function Ye(e){return new Promise((t=>{const n=ze;ze=()=>{ze=n,t()},history.go(e)}))}function Qe(){qe&&(qe(!1),qe=null)}function Ze(e,t,n,o){return new Promise((r=>{Qe(),We++,qe=r,o.locationChanging(We,e,t,n)}))}async function et(e,t){const n=null!=t?t:location.href;await Promise.all(Array.from(je,(async([t,o])=>{var r;T(t)&&await o.locationChanged(n,null===(r=history.state)||void 0===r?void 0:r.userState,e)})))}async function tt(e){var t,n;ze&&"serverside-enhanced"!==ot()&&await ze(e),He=null!==(n=null===(t=history.state)||void 0===t?void 0:t._index)&&void 0!==n?n:0}function nt(){const e=Fe();if(void 0!==e)return je.get(e)}function ot(){return Oe()?"clientside-router":Me()?"serverside-enhanced":window.Blazor._internal.isBlazorWeb?"serverside-fullpageload":"clientside-router"}const rt={focus:function(e,t){if(e instanceof HTMLElement)e.focus({preventScroll:t});else{if(!(e instanceof SVGElement))throw new Error("Unable to focus an invalid element.");if(!e.hasAttribute("tabindex"))throw new Error("Unable to focus an SVG element that does not have a tabindex.");e.focus({preventScroll:t})}},focusBySelector:function(e,t){const n=document.querySelector(e);n&&(n.hasAttribute("tabindex")||(n.tabIndex=-1),n.focus({preventScroll:!0}))}},it={init:function(e,t,n,o=50){const r=at(t);(r||document.documentElement).style.overflowAnchor="none";const i=document.createRange();u(n.parentElement)&&(t.style.display="table-row",n.style.display="table-row");const s=new IntersectionObserver((function(o){o.forEach((o=>{var r;if(!o.isIntersecting)return;i.setStartAfter(t),i.setEndBefore(n);const s=i.getBoundingClientRect().height,a=null===(r=o.rootBounds)||void 0===r?void 0:r.height;o.target===t?e.invokeMethodAsync("OnSpacerBeforeVisible",o.intersectionRect.top-o.boundingClientRect.top,s,a):o.target===n&&n.offsetHeight>0&&e.invokeMethodAsync("OnSpacerAfterVisible",o.boundingClientRect.bottom-o.intersectionRect.bottom,s,a)}))}),{root:r,rootMargin:`${o}px`});s.observe(t),s.observe(n);const a=d(t),c=d(n),{observersByDotNetObjectId:l,id:h}=ct(e);function d(e){const t={attributes:!0},n=new MutationObserver(((n,o)=>{u(e.parentElement)&&(o.disconnect(),e.style.display="table-row",o.observe(e,t)),s.unobserve(e),s.observe(e)}));return n.observe(e,t),n}function u(e){return null!==e&&(e instanceof HTMLTableElement&&""===e.style.display||"table"===e.style.display||e instanceof HTMLTableSectionElement&&""===e.style.display||"table-row-group"===e.style.display)}l[h]={intersectionObserver:s,mutationObserverBefore:a,mutationObserverAfter:c}},dispose:function(e){const{observersByDotNetObjectId:t,id:n}=ct(e),o=t[n];o&&(o.intersectionObserver.disconnect(),o.mutationObserverBefore.disconnect(),o.mutationObserverAfter.disconnect(),e.dispose(),delete t[n])}},st=Symbol();function at(e){return e&&e!==document.body&&e!==document.documentElement?"visible"!==getComputedStyle(e).overflowY?e:at(e.parentElement):null}function ct(e){var t;const n=e._callDispatcher,o=e._id;return null!==(t=n[st])&&void 0!==t||(n[st]={}),{observersByDotNetObjectId:n[st],id:o}}const lt={getAndRemoveExistingTitle:function(){var e;const t=document.head?document.head.getElementsByTagName("title"):[];if(0===t.length)return null;let n=null;for(let o=t.length-1;o>=0;o--){const r=t[o],i=r.previousSibling;i instanceof Comment&&null!==K(i)||(null===n&&(n=r.textContent),null===(e=r.parentNode)||void 0===e||e.removeChild(r))}return n}},ht={init:function(e,t){t._blazorInputFileNextFileId=0,t.addEventListener("click",(function(){t.value=""})),t.addEventListener("change",(function(){t._blazorFilesById={};const n=Array.prototype.map.call(t.files,(function(e){const n={id:++t._blazorInputFileNextFileId,lastModified:new Date(e.lastModified).toISOString(),name:e.name,size:e.size,contentType:e.type,readPromise:void 0,arrayBuffer:void 0,blob:e};return t._blazorFilesById[n.id]=n,n}));e.invokeMethodAsync("NotifyChange",n)}))},toImageFile:async function(e,t,n,o,r){const i=dt(e,t),s=await new Promise((function(e){const t=new Image;t.onload=function(){URL.revokeObjectURL(t.src),e(t)},t.onerror=function(){t.onerror=null,URL.revokeObjectURL(t.src)},t.src=URL.createObjectURL(i.blob)})),a=await new Promise((function(e){var t;const i=Math.min(1,o/s.width),a=Math.min(1,r/s.height),c=Math.min(i,a),l=document.createElement("canvas");l.width=Math.round(s.width*c),l.height=Math.round(s.height*c),null===(t=l.getContext("2d"))||void 0===t||t.drawImage(s,0,0,l.width,l.height),l.toBlob(e,n)})),c={id:++e._blazorInputFileNextFileId,lastModified:i.lastModified,name:i.name,size:(null==a?void 0:a.size)||0,contentType:n,blob:a||i.blob};return e._blazorFilesById[c.id]=c,c},readFileData:async function(e,t){return dt(e,t).blob}};function dt(e,t){const n=e._blazorFilesById[t];if(!n)throw new Error(`There is no file with ID ${t}. The file list may have changed. See https://aka.ms/aspnet/blazor-input-file-multiple-selections.`);return n}const ut=new Set,pt={enableNavigationPrompt:function(e){0===ut.size&&window.addEventListener("beforeunload",ft),ut.add(e)},disableNavigationPrompt:function(e){ut.delete(e),0===ut.size&&window.removeEventListener("beforeunload",ft)}};function ft(e){e.preventDefault(),e.returnValue=!0}async function gt(e,t,n){return e instanceof Blob?await async function(e,t,n){const o=e.slice(t,t+n),r=await o.arrayBuffer();return new Uint8Array(r)}(e,t,n):function(e,t,n){return new Uint8Array(e.buffer,e.byteOffset+t,n)}(e,t,n)}const mt=new Map,vt={navigateTo:function(e,t,n=!1){Ve(e,t instanceof Object?t:{forceLoad:t,replaceHistoryEntry:n})},registerCustomEventType:function(e,t){if(!t)throw new Error("The options parameter is required.");if(i.has(e))throw new Error(`The event '${e}' is already registered.`);if(t.browserEventName){const n=s.get(t.browserEventName);n?n.push(e):s.set(t.browserEventName,[e]),a.forEach((n=>n(e,t.browserEventName)))}i.set(e,t)},rootComponents:y,runtime:{},_internal:{navigationManager:Je,domWrapper:rt,Virtualize:it,PageTitle:lt,InputFile:ht,NavigationLock:pt,getJSDataStreamChunk:gt,attachWebRendererInterop:k}};var yt;window.Blazor=vt,function(e){e[e.Trace=0]="Trace",e[e.Debug=1]="Debug",e[e.Information=2]="Information",e[e.Warning=3]="Warning",e[e.Error=4]="Error",e[e.Critical=5]="Critical",e[e.None=6]="None"}(yt||(yt={}));class wt{log(e,t){}}wt.instance=new wt;class bt{constructor(e){this.minLevel=e}log(e,t){if(e>=this.minLevel){const n=`[${(new Date).toISOString()}] ${yt[e]}: ${t}`;switch(e){case yt.Critical:case yt.Error:console.error(n);break;case yt.Warning:console.warn(n);break;case yt.Information:console.info(n);break;default:console.log(n)}}}}function _t(e,t){switch(t){case"webassembly":return Tt(e,"webassembly");case"server":return function(e){return Tt(e,"server").sort(((e,t)=>e.sequence-t.sequence))}(e);case"auto":return Tt(e,"auto")}}const St=/^\s*Blazor-Server-Component-State:(?[a-zA-Z0-9+/=]+)$/,Ct=/^\s*Blazor-WebAssembly-Component-State:(?[a-zA-Z0-9+/=]+)$/,Et=/^\s*Blazor-Web-Initializers:(?[a-zA-Z0-9+/=]+)$/;function It(e){return kt(e,St)}function kt(e,t,n="state"){var o;if(e.nodeType===Node.COMMENT_NODE){const r=e.textContent||"",i=t.exec(r),s=i&&i.groups&&i.groups[n];return s&&(null===(o=e.parentNode)||void 0===o||o.removeChild(e)),s}if(!e.hasChildNodes())return;const r=e.childNodes;for(let e=0;e.*)$/);function At(e,t){const n=e.currentElement;var o,r,i;if(n&&n.nodeType===Node.COMMENT_NODE&&n.textContent){const s=Rt.exec(n.textContent),a=s&&s.groups&&s.groups.descriptor;if(!a)return;!function(e){if(e.parentNode instanceof Document)throw new Error("Root components cannot be marked as interactive. The element must be rendered statically so that scripts are not evaluated multiple times.")}(n);try{const s=function(e){const t=JSON.parse(e),{type:n}=t;if("server"!==n&&"webassembly"!==n&&"auto"!==n)throw new Error(`Invalid component type '${n}'.`);return t}(a),c=function(e,t,n){const{prerenderId:o}=e;if(o){for(;n.next()&&n.currentElement;){const e=n.currentElement;if(e.nodeType!==Node.COMMENT_NODE)continue;if(!e.textContent)continue;const t=Rt.exec(e.textContent),r=t&&t[1];if(r)return Pt(r,o),e}throw new Error(`Could not find an end component comment for '${t}'.`)}}(s,n,e);if(t!==s.type)return;switch(s.type){case"webassembly":return r=n,i=c,Nt(o=s),{...o,uniqueId:Dt++,start:r,end:i};case"server":return function(e,t,n){return xt(e),{...e,uniqueId:Dt++,start:t,end:n}}(s,n,c);case"auto":return function(e,t,n){return xt(e),Nt(e),{...e,uniqueId:Dt++,start:t,end:n}}(s,n,c)}}catch(e){throw new Error(`Found malformed component comment at ${n.textContent}`)}}}let Dt=0;function xt(e){const{descriptor:t,sequence:n}=e;if(!t)throw new Error("descriptor must be defined when using a descriptor.");if(void 0===n)throw new Error("sequence must be defined when using a descriptor.");if(!Number.isInteger(n))throw new Error(`Error parsing the sequence '${n}' for component '${JSON.stringify(e)}'`)}function Nt(e){const{assembly:t,typeName:n}=e;if(!t)throw new Error("assembly must be defined when using a descriptor.");if(!n)throw new Error("typeName must be defined when using a descriptor.");e.parameterDefinitions=e.parameterDefinitions&&atob(e.parameterDefinitions),e.parameterValues=e.parameterValues&&atob(e.parameterValues)}function Pt(e,t){const n=JSON.parse(e);if(1!==Object.keys(n).length)throw new Error(`Invalid end of component comment: '${e}'`);const o=n.prerenderId;if(!o)throw new Error(`End of component comment must have a value for the prerendered property: '${e}'`);if(o!==t)throw new Error(`End of component comment prerendered property must match the start comment prerender id: '${t}', '${o}'`)}class Mt{constructor(e){this.childNodes=e,this.currentIndex=-1,this.length=e.length}next(){return this.currentIndex++,this.currentIndex{n+=`0x${e<16?"0":""}${e.toString(16)} `})),n.substr(0,n.length-1)}(e)}'`)):"string"==typeof e&&(n=`String data of length ${e.length}`,t&&(n+=`. Content: '${e}'`)),n}function zt(e){return e&&"undefined"!=typeof ArrayBuffer&&(e instanceof ArrayBuffer||e.constructor&&"ArrayBuffer"===e.constructor.name)}async function qt(e,t,n,o,r,i){const s={},[a,c]=Vt();s[a]=c,e.log(Ot.Trace,`(${t} transport) sending data. ${jt(r,i.logMessageContent)}.`);const l=zt(r)?"arraybuffer":"text",h=await n.post(o,{content:r,headers:{...s,...i.headers},responseType:l,timeout:i.timeout,withCredentials:i.withCredentials});e.log(Ot.Trace,`(${t} transport) request complete. Response status: ${h.statusCode}.`)}class Jt{constructor(e,t){this._subject=e,this._observer=t}dispose(){const e=this._subject.observers.indexOf(this._observer);e>-1&&this._subject.observers.splice(e,1),0===this._subject.observers.length&&this._subject.cancelCallback&&this._subject.cancelCallback().catch((e=>{}))}}class Kt{constructor(e){this._minLevel=e,this.out=console}log(e,t){if(e>=this._minLevel){const n=`[${(new Date).toISOString()}] ${Ot[e]}: ${t}`;switch(e){case Ot.Critical:case Ot.Error:this.out.error(n);break;case Ot.Warning:this.out.warn(n);break;case Ot.Information:this.out.info(n);break;default:this.out.log(n)}}}}function Vt(){let e="X-SignalR-User-Agent";return Wt.isNode&&(e="User-Agent"),[e,Xt($t,Gt(),Wt.isNode?"NodeJS":"Browser",Yt())]}function Xt(e,t,n,o){let r="Microsoft SignalR/";const i=e.split(".");return r+=`${i[0]}.${i[1]}`,r+=` (${e}; `,r+=t&&""!==t?`${t}; `:"Unknown OS; ",r+=`${n}`,r+=o?`; ${o}`:"; Unknown Runtime Version",r+=")",r}function Gt(){if(!Wt.isNode)return"";switch(process.platform){case"win32":return"Windows NT";case"darwin":return"macOS";case"linux":return"Linux";default:return process.platform}}function Yt(){if(Wt.isNode)return process.versions.node}function Qt(e){return e.stack?e.stack:e.message?e.message:`${e}`}class Zt{writeHandshakeRequest(e){return Bt.write(JSON.stringify(e))}parseHandshakeResponse(e){let t,n;if(zt(e)){const o=new Uint8Array(e),r=o.indexOf(Bt.RecordSeparatorCode);if(-1===r)throw new Error("Message is incomplete.");const i=r+1;t=String.fromCharCode.apply(null,Array.prototype.slice.call(o.slice(0,i))),n=o.byteLength>i?o.slice(i).buffer:null}else{const o=e,r=o.indexOf(Bt.RecordSeparator);if(-1===r)throw new Error("Message is incomplete.");const i=r+1;t=o.substring(0,i),n=o.length>i?o.substring(i):null}const o=Bt.parse(t),r=JSON.parse(o[0]);if(r.type)throw new Error("Expected a handshake response from the server.");return[n,r]}}class en extends Error{constructor(e,t){const n=new.target.prototype;super(`${e}: Status code '${t}'`),this.statusCode=t,this.__proto__=n}}class tn extends Error{constructor(e="A timeout occurred."){const t=new.target.prototype;super(e),this.__proto__=t}}class nn extends Error{constructor(e="An abort occurred."){const t=new.target.prototype;super(e),this.__proto__=t}}class on extends Error{constructor(e,t){const n=new.target.prototype;super(e),this.transport=t,this.errorType="UnsupportedTransportError",this.__proto__=n}}class rn extends Error{constructor(e,t){const n=new.target.prototype;super(e),this.transport=t,this.errorType="DisabledTransportError",this.__proto__=n}}class sn extends Error{constructor(e,t){const n=new.target.prototype;super(e),this.transport=t,this.errorType="FailedToStartTransportError",this.__proto__=n}}class an extends Error{constructor(e){const t=new.target.prototype;super(e),this.errorType="FailedToNegotiateWithServerError",this.__proto__=t}}class cn extends Error{constructor(e,t){const n=new.target.prototype;super(e),this.innerErrors=t,this.__proto__=n}}var ln,hn;!function(e){e[e.Invocation=1]="Invocation",e[e.StreamItem=2]="StreamItem",e[e.Completion=3]="Completion",e[e.StreamInvocation=4]="StreamInvocation",e[e.CancelInvocation=5]="CancelInvocation",e[e.Ping=6]="Ping",e[e.Close=7]="Close",e[e.Ack=8]="Ack",e[e.Sequence=9]="Sequence"}(ln||(ln={}));class dn{constructor(){this.observers=[]}next(e){for(const t of this.observers)t.next(e)}error(e){for(const t of this.observers)t.error&&t.error(e)}complete(){for(const e of this.observers)e.complete&&e.complete()}subscribe(e){return this.observers.push(e),new Jt(this,e)}}class un{constructor(e,t,n){this._bufferSize=1e5,this._messages=[],this._totalMessageCount=0,this._waitForSequenceMessage=!1,this._nextReceivingSequenceId=1,this._latestReceivedSequenceId=0,this._bufferedByteCount=0,this._reconnectInProgress=!1,this._protocol=e,this._connection=t,this._bufferSize=n}async _send(e){const t=this._protocol.writeMessage(e);let n=Promise.resolve();if(this._isInvocationMessage(e)){this._totalMessageCount++;let e=()=>{},o=()=>{};zt(t)?this._bufferedByteCount+=t.byteLength:this._bufferedByteCount+=t.length,this._bufferedByteCount>=this._bufferSize&&(n=new Promise(((t,n)=>{e=t,o=n}))),this._messages.push(new pn(t,this._totalMessageCount,e,o))}try{this._reconnectInProgress||await this._connection.send(t)}catch{this._disconnected()}await n}_ack(e){let t=-1;for(let n=0;nthis._nextReceivingSequenceId?this._connection.stop(new Error("Sequence ID greater than amount of messages we've received.")):this._nextReceivingSequenceId=e.sequenceId}_disconnected(){this._reconnectInProgress=!0,this._waitForSequenceMessage=!0}async _resend(){const e=0!==this._messages.length?this._messages[0]._id:this._totalMessageCount+1;await this._connection.send(this._protocol.writeMessage({type:ln.Sequence,sequenceId:e}));const t=this._messages;for(const e of t)await this._connection.send(e._message);this._reconnectInProgress=!1}_dispose(e){null!=e||(e=new Error("Unable to reconnect to server."));for(const t of this._messages)t._rejector(e)}_isInvocationMessage(e){switch(e.type){case ln.Invocation:case ln.StreamItem:case ln.Completion:case ln.StreamInvocation:case ln.CancelInvocation:return!0;case ln.Close:case ln.Sequence:case ln.Ping:case ln.Ack:return!1}}_ackTimer(){void 0===this._ackTimerHandle&&(this._ackTimerHandle=setTimeout((async()=>{try{this._reconnectInProgress||await this._connection.send(this._protocol.writeMessage({type:ln.Ack,sequenceId:this._latestReceivedSequenceId}))}catch{}clearTimeout(this._ackTimerHandle),this._ackTimerHandle=void 0}),1e3))}}class pn{constructor(e,t,n,o){this._message=e,this._id=t,this._resolver=n,this._rejector=o}}!function(e){e.Disconnected="Disconnected",e.Connecting="Connecting",e.Connected="Connected",e.Disconnecting="Disconnecting",e.Reconnecting="Reconnecting"}(hn||(hn={}));class fn{static create(e,t,n,o,r,i,s){return new fn(e,t,n,o,r,i,s)}constructor(e,t,n,o,r,i,s){this._nextKeepAlive=0,this._freezeEventListener=()=>{this._logger.log(Ot.Warning,"The page is being frozen, this will likely lead to the connection being closed and messages being lost. For more information see the docs at https://learn.microsoft.com/aspnet/core/signalr/javascript-client#bsleep")},Ht.isRequired(e,"connection"),Ht.isRequired(t,"logger"),Ht.isRequired(n,"protocol"),this.serverTimeoutInMilliseconds=null!=r?r:3e4,this.keepAliveIntervalInMilliseconds=null!=i?i:15e3,this._statefulReconnectBufferSize=null!=s?s:1e5,this._logger=t,this._protocol=n,this.connection=e,this._reconnectPolicy=o,this._handshakeProtocol=new Zt,this.connection.onreceive=e=>this._processIncomingData(e),this.connection.onclose=e=>this._connectionClosed(e),this._callbacks={},this._methods={},this._closedCallbacks=[],this._reconnectingCallbacks=[],this._reconnectedCallbacks=[],this._invocationId=0,this._receivedHandshakeResponse=!1,this._connectionState=hn.Disconnected,this._connectionStarted=!1,this._cachedPingMessage=this._protocol.writeMessage({type:ln.Ping})}get state(){return this._connectionState}get connectionId(){return this.connection&&this.connection.connectionId||null}get baseUrl(){return this.connection.baseUrl||""}set baseUrl(e){if(this._connectionState!==hn.Disconnected&&this._connectionState!==hn.Reconnecting)throw new Error("The HubConnection must be in the Disconnected or Reconnecting state to change the url.");if(!e)throw new Error("The HubConnection url must be a valid url.");this.connection.baseUrl=e}start(){return this._startPromise=this._startWithStateTransitions(),this._startPromise}async _startWithStateTransitions(){if(this._connectionState!==hn.Disconnected)return Promise.reject(new Error("Cannot start a HubConnection that is not in the 'Disconnected' state."));this._connectionState=hn.Connecting,this._logger.log(Ot.Debug,"Starting HubConnection.");try{await this._startInternal(),Wt.isBrowser&&window.document.addEventListener("freeze",this._freezeEventListener),this._connectionState=hn.Connected,this._connectionStarted=!0,this._logger.log(Ot.Debug,"HubConnection connected successfully.")}catch(e){return this._connectionState=hn.Disconnected,this._logger.log(Ot.Debug,`HubConnection failed to start successfully because of error '${e}'.`),Promise.reject(e)}}async _startInternal(){this._stopDuringStartError=void 0,this._receivedHandshakeResponse=!1;const e=new Promise(((e,t)=>{this._handshakeResolver=e,this._handshakeRejecter=t}));await this.connection.start(this._protocol.transferFormat);try{let t=this._protocol.version;this.connection.features.reconnect||(t=1);const n={protocol:this._protocol.name,version:t};if(this._logger.log(Ot.Debug,"Sending handshake request."),await this._sendMessage(this._handshakeProtocol.writeHandshakeRequest(n)),this._logger.log(Ot.Information,`Using HubProtocol '${this._protocol.name}'.`),this._cleanupTimeout(),this._resetTimeoutPeriod(),this._resetKeepAliveInterval(),await e,this._stopDuringStartError)throw this._stopDuringStartError;!!this.connection.features.reconnect&&(this._messageBuffer=new un(this._protocol,this.connection,this._statefulReconnectBufferSize),this.connection.features.disconnected=this._messageBuffer._disconnected.bind(this._messageBuffer),this.connection.features.resend=()=>{if(this._messageBuffer)return this._messageBuffer._resend()}),this.connection.features.inherentKeepAlive||await this._sendMessage(this._cachedPingMessage)}catch(e){throw this._logger.log(Ot.Debug,`Hub handshake failed with error '${e}' during start(). Stopping HubConnection.`),this._cleanupTimeout(),this._cleanupPingTimer(),await this.connection.stop(e),e}}async stop(){const e=this._startPromise;this.connection.features.reconnect=!1,this._stopPromise=this._stopInternal(),await this._stopPromise;try{await e}catch(e){}}_stopInternal(e){if(this._connectionState===hn.Disconnected)return this._logger.log(Ot.Debug,`Call to HubConnection.stop(${e}) ignored because it is already in the disconnected state.`),Promise.resolve();if(this._connectionState===hn.Disconnecting)return this._logger.log(Ot.Debug,`Call to HttpConnection.stop(${e}) ignored because the connection is already in the disconnecting state.`),this._stopPromise;const t=this._connectionState;return this._connectionState=hn.Disconnecting,this._logger.log(Ot.Debug,"Stopping HubConnection."),this._reconnectDelayHandle?(this._logger.log(Ot.Debug,"Connection stopped during reconnect delay. Done reconnecting."),clearTimeout(this._reconnectDelayHandle),this._reconnectDelayHandle=void 0,this._completeClose(),Promise.resolve()):(t===hn.Connected&&this._sendCloseMessage(),this._cleanupTimeout(),this._cleanupPingTimer(),this._stopDuringStartError=e||new nn("The connection was stopped before the hub handshake could complete."),this.connection.stop(e))}async _sendCloseMessage(){try{await this._sendWithProtocol(this._createCloseMessage())}catch{}}stream(e,...t){const[n,o]=this._replaceStreamingParams(t),r=this._createStreamInvocation(e,t,o);let i;const s=new dn;return s.cancelCallback=()=>{const e=this._createCancelInvocation(r.invocationId);return delete this._callbacks[r.invocationId],i.then((()=>this._sendWithProtocol(e)))},this._callbacks[r.invocationId]=(e,t)=>{t?s.error(t):e&&(e.type===ln.Completion?e.error?s.error(new Error(e.error)):s.complete():s.next(e.item))},i=this._sendWithProtocol(r).catch((e=>{s.error(e),delete this._callbacks[r.invocationId]})),this._launchStreams(n,i),s}_sendMessage(e){return this._resetKeepAliveInterval(),this.connection.send(e)}_sendWithProtocol(e){return this._messageBuffer?this._messageBuffer._send(e):this._sendMessage(this._protocol.writeMessage(e))}send(e,...t){const[n,o]=this._replaceStreamingParams(t),r=this._sendWithProtocol(this._createInvocation(e,t,!0,o));return this._launchStreams(n,r),r}invoke(e,...t){const[n,o]=this._replaceStreamingParams(t),r=this._createInvocation(e,t,!1,o);return new Promise(((e,t)=>{this._callbacks[r.invocationId]=(n,o)=>{o?t(o):n&&(n.type===ln.Completion?n.error?t(new Error(n.error)):e(n.result):t(new Error(`Unexpected message type: ${n.type}`)))};const o=this._sendWithProtocol(r).catch((e=>{t(e),delete this._callbacks[r.invocationId]}));this._launchStreams(n,o)}))}on(e,t){e&&t&&(e=e.toLowerCase(),this._methods[e]||(this._methods[e]=[]),-1===this._methods[e].indexOf(t)&&this._methods[e].push(t))}off(e,t){if(!e)return;e=e.toLowerCase();const n=this._methods[e];if(n)if(t){const o=n.indexOf(t);-1!==o&&(n.splice(o,1),0===n.length&&delete this._methods[e])}else delete this._methods[e]}onclose(e){e&&this._closedCallbacks.push(e)}onreconnecting(e){e&&this._reconnectingCallbacks.push(e)}onreconnected(e){e&&this._reconnectedCallbacks.push(e)}_processIncomingData(e){if(this._cleanupTimeout(),this._receivedHandshakeResponse||(e=this._processHandshakeResponse(e),this._receivedHandshakeResponse=!0),e){const t=this._protocol.parseMessages(e,this._logger);for(const e of t)if(!this._messageBuffer||this._messageBuffer._shouldProcessMessage(e))switch(e.type){case ln.Invocation:this._invokeClientMethod(e);break;case ln.StreamItem:case ln.Completion:{const t=this._callbacks[e.invocationId];if(t){e.type===ln.Completion&&delete this._callbacks[e.invocationId];try{t(e)}catch(e){this._logger.log(Ot.Error,`Stream callback threw error: ${Qt(e)}`)}}break}case ln.Ping:break;case ln.Close:{this._logger.log(Ot.Information,"Close message received from server.");const t=e.error?new Error("Server returned an error on close: "+e.error):void 0;!0===e.allowReconnect?this.connection.stop(t):this._stopPromise=this._stopInternal(t);break}case ln.Ack:this._messageBuffer&&this._messageBuffer._ack(e);break;case ln.Sequence:this._messageBuffer&&this._messageBuffer._resetSequence(e);break;default:this._logger.log(Ot.Warning,`Invalid message type: ${e.type}.`)}}this._resetTimeoutPeriod()}_processHandshakeResponse(e){let t,n;try{[n,t]=this._handshakeProtocol.parseHandshakeResponse(e)}catch(e){const t="Error parsing handshake response: "+e;this._logger.log(Ot.Error,t);const n=new Error(t);throw this._handshakeRejecter(n),n}if(t.error){const e="Server returned handshake error: "+t.error;this._logger.log(Ot.Error,e);const n=new Error(e);throw this._handshakeRejecter(n),n}return this._logger.log(Ot.Debug,"Server handshake complete."),this._handshakeResolver(),n}_resetKeepAliveInterval(){this.connection.features.inherentKeepAlive||(this._nextKeepAlive=(new Date).getTime()+this.keepAliveIntervalInMilliseconds,this._cleanupPingTimer())}_resetTimeoutPeriod(){if(!(this.connection.features&&this.connection.features.inherentKeepAlive||(this._timeoutHandle=setTimeout((()=>this.serverTimeout()),this.serverTimeoutInMilliseconds),void 0!==this._pingServerHandle))){let e=this._nextKeepAlive-(new Date).getTime();e<0&&(e=0),this._pingServerHandle=setTimeout((async()=>{if(this._connectionState===hn.Connected)try{await this._sendMessage(this._cachedPingMessage)}catch{this._cleanupPingTimer()}}),e)}}serverTimeout(){this.connection.stop(new Error("Server timeout elapsed without receiving a message from the server."))}async _invokeClientMethod(e){const t=e.target.toLowerCase(),n=this._methods[t];if(!n)return this._logger.log(Ot.Warning,`No client method with the name '${t}' found.`),void(e.invocationId&&(this._logger.log(Ot.Warning,`No result given for '${t}' method and invocation ID '${e.invocationId}'.`),await this._sendWithProtocol(this._createCompletionMessage(e.invocationId,"Client didn't provide a result.",null))));const o=n.slice(),r=!!e.invocationId;let i,s,a;for(const n of o)try{const o=i;i=await n.apply(this,e.arguments),r&&i&&o&&(this._logger.log(Ot.Error,`Multiple results provided for '${t}'. Sending error to server.`),a=this._createCompletionMessage(e.invocationId,"Client provided multiple results.",null)),s=void 0}catch(e){s=e,this._logger.log(Ot.Error,`A callback for the method '${t}' threw error '${e}'.`)}a?await this._sendWithProtocol(a):r?(s?a=this._createCompletionMessage(e.invocationId,`${s}`,null):void 0!==i?a=this._createCompletionMessage(e.invocationId,null,i):(this._logger.log(Ot.Warning,`No result given for '${t}' method and invocation ID '${e.invocationId}'.`),a=this._createCompletionMessage(e.invocationId,"Client didn't provide a result.",null)),await this._sendWithProtocol(a)):i&&this._logger.log(Ot.Error,`Result given for '${t}' method but server is not expecting a result.`)}_connectionClosed(e){this._logger.log(Ot.Debug,`HubConnection.connectionClosed(${e}) called while in state ${this._connectionState}.`),this._stopDuringStartError=this._stopDuringStartError||e||new nn("The underlying connection was closed before the hub handshake could complete."),this._handshakeResolver&&this._handshakeResolver(),this._cancelCallbacksWithError(e||new Error("Invocation canceled due to the underlying connection being closed.")),this._cleanupTimeout(),this._cleanupPingTimer(),this._connectionState===hn.Disconnecting?this._completeClose(e):this._connectionState===hn.Connected&&this._reconnectPolicy?this._reconnect(e):this._connectionState===hn.Connected&&this._completeClose(e)}_completeClose(e){if(this._connectionStarted){this._connectionState=hn.Disconnected,this._connectionStarted=!1,this._messageBuffer&&(this._messageBuffer._dispose(null!=e?e:new Error("Connection closed.")),this._messageBuffer=void 0),Wt.isBrowser&&window.document.removeEventListener("freeze",this._freezeEventListener);try{this._closedCallbacks.forEach((t=>t.apply(this,[e])))}catch(t){this._logger.log(Ot.Error,`An onclose callback called with error '${e}' threw error '${t}'.`)}}}async _reconnect(e){const t=Date.now();let n=0,o=void 0!==e?e:new Error("Attempting to reconnect due to a unknown error."),r=this._getNextRetryDelay(n++,0,o);if(null===r)return this._logger.log(Ot.Debug,"Connection not reconnecting because the IRetryPolicy returned null on the first reconnect attempt."),void this._completeClose(e);if(this._connectionState=hn.Reconnecting,e?this._logger.log(Ot.Information,`Connection reconnecting because of error '${e}'.`):this._logger.log(Ot.Information,"Connection reconnecting."),0!==this._reconnectingCallbacks.length){try{this._reconnectingCallbacks.forEach((t=>t.apply(this,[e])))}catch(t){this._logger.log(Ot.Error,`An onreconnecting callback called with error '${e}' threw error '${t}'.`)}if(this._connectionState!==hn.Reconnecting)return void this._logger.log(Ot.Debug,"Connection left the reconnecting state in onreconnecting callback. Done reconnecting.")}for(;null!==r;){if(this._logger.log(Ot.Information,`Reconnect attempt number ${n} will start in ${r} ms.`),await new Promise((e=>{this._reconnectDelayHandle=setTimeout(e,r)})),this._reconnectDelayHandle=void 0,this._connectionState!==hn.Reconnecting)return void this._logger.log(Ot.Debug,"Connection left the reconnecting state during reconnect delay. Done reconnecting.");try{if(await this._startInternal(),this._connectionState=hn.Connected,this._logger.log(Ot.Information,"HubConnection reconnected successfully."),0!==this._reconnectedCallbacks.length)try{this._reconnectedCallbacks.forEach((e=>e.apply(this,[this.connection.connectionId])))}catch(e){this._logger.log(Ot.Error,`An onreconnected callback called with connectionId '${this.connection.connectionId}; threw error '${e}'.`)}return}catch(e){if(this._logger.log(Ot.Information,`Reconnect attempt failed because of error '${e}'.`),this._connectionState!==hn.Reconnecting)return this._logger.log(Ot.Debug,`Connection moved to the '${this._connectionState}' from the reconnecting state during reconnect attempt. Done reconnecting.`),void(this._connectionState===hn.Disconnecting&&this._completeClose());o=e instanceof Error?e:new Error(e.toString()),r=this._getNextRetryDelay(n++,Date.now()-t,o)}}this._logger.log(Ot.Information,`Reconnect retries have been exhausted after ${Date.now()-t} ms and ${n} failed attempts. Connection disconnecting.`),this._completeClose()}_getNextRetryDelay(e,t,n){try{return this._reconnectPolicy.nextRetryDelayInMilliseconds({elapsedMilliseconds:t,previousRetryCount:e,retryReason:n})}catch(n){return this._logger.log(Ot.Error,`IRetryPolicy.nextRetryDelayInMilliseconds(${e}, ${t}) threw error '${n}'.`),null}}_cancelCallbacksWithError(e){const t=this._callbacks;this._callbacks={},Object.keys(t).forEach((n=>{const o=t[n];try{o(null,e)}catch(t){this._logger.log(Ot.Error,`Stream 'error' callback called with '${e}' threw error: ${Qt(t)}`)}}))}_cleanupPingTimer(){this._pingServerHandle&&(clearTimeout(this._pingServerHandle),this._pingServerHandle=void 0)}_cleanupTimeout(){this._timeoutHandle&&clearTimeout(this._timeoutHandle)}_createInvocation(e,t,n,o){if(n)return 0!==o.length?{arguments:t,streamIds:o,target:e,type:ln.Invocation}:{arguments:t,target:e,type:ln.Invocation};{const n=this._invocationId;return this._invocationId++,0!==o.length?{arguments:t,invocationId:n.toString(),streamIds:o,target:e,type:ln.Invocation}:{arguments:t,invocationId:n.toString(),target:e,type:ln.Invocation}}}_launchStreams(e,t){if(0!==e.length){t||(t=Promise.resolve());for(const n in e)e[n].subscribe({complete:()=>{t=t.then((()=>this._sendWithProtocol(this._createCompletionMessage(n))))},error:e=>{let o;o=e instanceof Error?e.message:e&&e.toString?e.toString():"Unknown error",t=t.then((()=>this._sendWithProtocol(this._createCompletionMessage(n,o))))},next:e=>{t=t.then((()=>this._sendWithProtocol(this._createStreamItemMessage(n,e))))}})}}_replaceStreamingParams(e){const t=[],n=[];for(let o=0;o0)&&(t=!1,this._accessToken=await this._accessTokenFactory()),this._setAuthorizationHeader(e);const n=await this._innerClient.send(e);return t&&401===n.statusCode&&this._accessTokenFactory?(this._accessToken=await this._accessTokenFactory(),this._setAuthorizationHeader(e),await this._innerClient.send(e)):n}_setAuthorizationHeader(e){e.headers||(e.headers={}),this._accessToken?e.headers[vn.Authorization]=`Bearer ${this._accessToken}`:this._accessTokenFactory&&e.headers[vn.Authorization]&&delete e.headers[vn.Authorization]}getCookieString(e){return this._innerClient.getCookieString(e)}}class _n extends wn{constructor(e){super(),this._logger=e;const t={_fetchType:void 0,_jar:void 0};var o;o=t,"undefined"==typeof fetch&&(o._jar=new(n(628).CookieJar),"undefined"==typeof fetch?o._fetchType=n(200):o._fetchType=fetch,o._fetchType=n(203)(o._fetchType,o._jar),1)?(this._fetchType=t._fetchType,this._jar=t._jar):this._fetchType=fetch.bind(function(){if("undefined"!=typeof globalThis)return globalThis;if("undefined"!=typeof self)return self;if("undefined"!=typeof window)return window;if(void 0!==n.g)return n.g;throw new Error("could not find global")}()),this._abortControllerType=AbortController;const r={_abortControllerType:this._abortControllerType};(function(e){return"undefined"==typeof AbortController&&(e._abortControllerType=n(778),!0)})(r)&&(this._abortControllerType=r._abortControllerType)}async send(e){if(e.abortSignal&&e.abortSignal.aborted)throw new nn;if(!e.method)throw new Error("No method defined.");if(!e.url)throw new Error("No url defined.");const t=new this._abortControllerType;let n;e.abortSignal&&(e.abortSignal.onabort=()=>{t.abort(),n=new nn});let o,r=null;if(e.timeout){const o=e.timeout;r=setTimeout((()=>{t.abort(),this._logger.log(Ot.Warning,"Timeout from HTTP request."),n=new tn}),o)}""===e.content&&(e.content=void 0),e.content&&(e.headers=e.headers||{},zt(e.content)?e.headers["Content-Type"]="application/octet-stream":e.headers["Content-Type"]="text/plain;charset=UTF-8");try{o=await this._fetchType(e.url,{body:e.content,cache:"no-cache",credentials:!0===e.withCredentials?"include":"same-origin",headers:{"X-Requested-With":"XMLHttpRequest",...e.headers},method:e.method,mode:"cors",redirect:"follow",signal:t.signal})}catch(e){if(n)throw n;throw this._logger.log(Ot.Warning,`Error from HTTP request. ${e}.`),e}finally{r&&clearTimeout(r),e.abortSignal&&(e.abortSignal.onabort=null)}if(!o.ok){const e=await Sn(o,"text");throw new en(e||o.statusText,o.status)}const i=Sn(o,e.responseType),s=await i;return new yn(o.status,o.statusText,s)}getCookieString(e){return""}}function Sn(e,t){let n;switch(t){case"arraybuffer":n=e.arrayBuffer();break;case"text":default:n=e.text();break;case"blob":case"document":case"json":throw new Error(`${t} is not supported.`)}return n}class Cn extends wn{constructor(e){super(),this._logger=e}send(e){return e.abortSignal&&e.abortSignal.aborted?Promise.reject(new nn):e.method?e.url?new Promise(((t,n)=>{const o=new XMLHttpRequest;o.open(e.method,e.url,!0),o.withCredentials=void 0===e.withCredentials||e.withCredentials,o.setRequestHeader("X-Requested-With","XMLHttpRequest"),""===e.content&&(e.content=void 0),e.content&&(zt(e.content)?o.setRequestHeader("Content-Type","application/octet-stream"):o.setRequestHeader("Content-Type","text/plain;charset=UTF-8"));const r=e.headers;r&&Object.keys(r).forEach((e=>{o.setRequestHeader(e,r[e])})),e.responseType&&(o.responseType=e.responseType),e.abortSignal&&(e.abortSignal.onabort=()=>{o.abort(),n(new nn)}),e.timeout&&(o.timeout=e.timeout),o.onload=()=>{e.abortSignal&&(e.abortSignal.onabort=null),o.status>=200&&o.status<300?t(new yn(o.status,o.statusText,o.response||o.responseText)):n(new en(o.response||o.responseText||o.statusText,o.status))},o.onerror=()=>{this._logger.log(Ot.Warning,`Error from HTTP request. ${o.status}: ${o.statusText}.`),n(new en(o.statusText,o.status))},o.ontimeout=()=>{this._logger.log(Ot.Warning,"Timeout from HTTP request."),n(new tn)},o.send(e.content)})):Promise.reject(new Error("No url defined.")):Promise.reject(new Error("No method defined."))}}class En extends wn{constructor(e){if(super(),"undefined"!=typeof fetch)this._httpClient=new _n(e);else{if("undefined"==typeof XMLHttpRequest)throw new Error("No usable HttpClient found.");this._httpClient=new Cn(e)}}send(e){return e.abortSignal&&e.abortSignal.aborted?Promise.reject(new nn):e.method?e.url?this._httpClient.send(e):Promise.reject(new Error("No url defined.")):Promise.reject(new Error("No method defined."))}getCookieString(e){return this._httpClient.getCookieString(e)}}var In,kn;!function(e){e[e.None=0]="None",e[e.WebSockets=1]="WebSockets",e[e.ServerSentEvents=2]="ServerSentEvents",e[e.LongPolling=4]="LongPolling"}(In||(In={})),function(e){e[e.Text=1]="Text",e[e.Binary=2]="Binary"}(kn||(kn={}));class Tn{constructor(){this._isAborted=!1,this.onabort=null}abort(){this._isAborted||(this._isAborted=!0,this.onabort&&this.onabort())}get signal(){return this}get aborted(){return this._isAborted}}class Rn{get pollAborted(){return this._pollAbort.aborted}constructor(e,t,n){this._httpClient=e,this._logger=t,this._pollAbort=new Tn,this._options=n,this._running=!1,this.onreceive=null,this.onclose=null}async connect(e,t){if(Ht.isRequired(e,"url"),Ht.isRequired(t,"transferFormat"),Ht.isIn(t,kn,"transferFormat"),this._url=e,this._logger.log(Ot.Trace,"(LongPolling transport) Connecting."),t===kn.Binary&&"undefined"!=typeof XMLHttpRequest&&"string"!=typeof(new XMLHttpRequest).responseType)throw new Error("Binary protocols over XmlHttpRequest not implementing advanced features are not supported.");const[n,o]=Vt(),r={[n]:o,...this._options.headers},i={abortSignal:this._pollAbort.signal,headers:r,timeout:1e5,withCredentials:this._options.withCredentials};t===kn.Binary&&(i.responseType="arraybuffer");const s=`${e}&_=${Date.now()}`;this._logger.log(Ot.Trace,`(LongPolling transport) polling: ${s}.`);const a=await this._httpClient.get(s,i);200!==a.statusCode?(this._logger.log(Ot.Error,`(LongPolling transport) Unexpected response code: ${a.statusCode}.`),this._closeError=new en(a.statusText||"",a.statusCode),this._running=!1):this._running=!0,this._receiving=this._poll(this._url,i)}async _poll(e,t){try{for(;this._running;)try{const n=`${e}&_=${Date.now()}`;this._logger.log(Ot.Trace,`(LongPolling transport) polling: ${n}.`);const o=await this._httpClient.get(n,t);204===o.statusCode?(this._logger.log(Ot.Information,"(LongPolling transport) Poll terminated by server."),this._running=!1):200!==o.statusCode?(this._logger.log(Ot.Error,`(LongPolling transport) Unexpected response code: ${o.statusCode}.`),this._closeError=new en(o.statusText||"",o.statusCode),this._running=!1):o.content?(this._logger.log(Ot.Trace,`(LongPolling transport) data received. ${jt(o.content,this._options.logMessageContent)}.`),this.onreceive&&this.onreceive(o.content)):this._logger.log(Ot.Trace,"(LongPolling transport) Poll timed out, reissuing.")}catch(e){this._running?e instanceof tn?this._logger.log(Ot.Trace,"(LongPolling transport) Poll timed out, reissuing."):(this._closeError=e,this._running=!1):this._logger.log(Ot.Trace,`(LongPolling transport) Poll errored after shutdown: ${e.message}`)}}finally{this._logger.log(Ot.Trace,"(LongPolling transport) Polling complete."),this.pollAborted||this._raiseOnClose()}}async send(e){return this._running?qt(this._logger,"LongPolling",this._httpClient,this._url,e,this._options):Promise.reject(new Error("Cannot send until the transport is connected"))}async stop(){this._logger.log(Ot.Trace,"(LongPolling transport) Stopping polling."),this._running=!1,this._pollAbort.abort();try{await this._receiving,this._logger.log(Ot.Trace,`(LongPolling transport) sending DELETE request to ${this._url}.`);const e={},[t,n]=Vt();e[t]=n;const o={headers:{...e,...this._options.headers},timeout:this._options.timeout,withCredentials:this._options.withCredentials};let r;try{await this._httpClient.delete(this._url,o)}catch(e){r=e}r?r instanceof en&&(404===r.statusCode?this._logger.log(Ot.Trace,"(LongPolling transport) A 404 response was returned from sending a DELETE request."):this._logger.log(Ot.Trace,`(LongPolling transport) Error sending a DELETE request: ${r}`)):this._logger.log(Ot.Trace,"(LongPolling transport) DELETE request accepted.")}finally{this._logger.log(Ot.Trace,"(LongPolling transport) Stop finished."),this._raiseOnClose()}}_raiseOnClose(){if(this.onclose){let e="(LongPolling transport) Firing onclose event.";this._closeError&&(e+=" Error: "+this._closeError),this._logger.log(Ot.Trace,e),this.onclose(this._closeError)}}}class An{constructor(e,t,n,o){this._httpClient=e,this._accessToken=t,this._logger=n,this._options=o,this.onreceive=null,this.onclose=null}async connect(e,t){return Ht.isRequired(e,"url"),Ht.isRequired(t,"transferFormat"),Ht.isIn(t,kn,"transferFormat"),this._logger.log(Ot.Trace,"(SSE transport) Connecting."),this._url=e,this._accessToken&&(e+=(e.indexOf("?")<0?"?":"&")+`access_token=${encodeURIComponent(this._accessToken)}`),new Promise(((n,o)=>{let r,i=!1;if(t===kn.Text){if(Wt.isBrowser||Wt.isWebWorker)r=new this._options.EventSource(e,{withCredentials:this._options.withCredentials});else{const t=this._httpClient.getCookieString(e),n={};n.Cookie=t;const[o,i]=Vt();n[o]=i,r=new this._options.EventSource(e,{withCredentials:this._options.withCredentials,headers:{...n,...this._options.headers}})}try{r.onmessage=e=>{if(this.onreceive)try{this._logger.log(Ot.Trace,`(SSE transport) data received. ${jt(e.data,this._options.logMessageContent)}.`),this.onreceive(e.data)}catch(e){return void this._close(e)}},r.onerror=e=>{i?this._close():o(new Error("EventSource failed to connect. The connection could not be found on the server, either the connection ID is not present on the server, or a proxy is refusing/buffering the connection. If you have multiple servers check that sticky sessions are enabled."))},r.onopen=()=>{this._logger.log(Ot.Information,`SSE connected to ${this._url}`),this._eventSource=r,i=!0,n()}}catch(e){return void o(e)}}else o(new Error("The Server-Sent Events transport only supports the 'Text' transfer format"))}))}async send(e){return this._eventSource?qt(this._logger,"SSE",this._httpClient,this._url,e,this._options):Promise.reject(new Error("Cannot send until the transport is connected"))}stop(){return this._close(),Promise.resolve()}_close(e){this._eventSource&&(this._eventSource.close(),this._eventSource=void 0,this.onclose&&this.onclose(e))}}class Dn{constructor(e,t,n,o,r,i){this._logger=n,this._accessTokenFactory=t,this._logMessageContent=o,this._webSocketConstructor=r,this._httpClient=e,this.onreceive=null,this.onclose=null,this._headers=i}async connect(e,t){let n;return Ht.isRequired(e,"url"),Ht.isRequired(t,"transferFormat"),Ht.isIn(t,kn,"transferFormat"),this._logger.log(Ot.Trace,"(WebSockets transport) Connecting."),this._accessTokenFactory&&(n=await this._accessTokenFactory()),new Promise(((o,r)=>{let i;e=e.replace(/^http/,"ws");const s=this._httpClient.getCookieString(e);let a=!1;if(Wt.isReactNative){const t={},[o,r]=Vt();t[o]=r,n&&(t[vn.Authorization]=`Bearer ${n}`),s&&(t[vn.Cookie]=s),i=new this._webSocketConstructor(e,void 0,{headers:{...t,...this._headers}})}else n&&(e+=(e.indexOf("?")<0?"?":"&")+`access_token=${encodeURIComponent(n)}`);i||(i=new this._webSocketConstructor(e)),t===kn.Binary&&(i.binaryType="arraybuffer"),i.onopen=t=>{this._logger.log(Ot.Information,`WebSocket connected to ${e}.`),this._webSocket=i,a=!0,o()},i.onerror=e=>{let t=null;t="undefined"!=typeof ErrorEvent&&e instanceof ErrorEvent?e.error:"There was an error with the transport",this._logger.log(Ot.Information,`(WebSockets transport) ${t}.`)},i.onmessage=e=>{if(this._logger.log(Ot.Trace,`(WebSockets transport) data received. ${jt(e.data,this._logMessageContent)}.`),this.onreceive)try{this.onreceive(e.data)}catch(e){return void this._close(e)}},i.onclose=e=>{if(a)this._close(e);else{let t=null;t="undefined"!=typeof ErrorEvent&&e instanceof ErrorEvent?e.error:"WebSocket failed to connect. The connection could not be found on the server, either the endpoint may not be a SignalR endpoint, the connection ID is not present on the server, or there is a proxy blocking WebSockets. If you have multiple servers check that sticky sessions are enabled.",r(new Error(t))}}}))}send(e){return this._webSocket&&this._webSocket.readyState===this._webSocketConstructor.OPEN?(this._logger.log(Ot.Trace,`(WebSockets transport) sending data. ${jt(e,this._logMessageContent)}.`),this._webSocket.send(e),Promise.resolve()):Promise.reject("WebSocket is not in the OPEN state")}stop(){return this._webSocket&&this._close(void 0),Promise.resolve()}_close(e){this._webSocket&&(this._webSocket.onclose=()=>{},this._webSocket.onmessage=()=>{},this._webSocket.onerror=()=>{},this._webSocket.close(),this._webSocket=void 0),this._logger.log(Ot.Trace,"(WebSockets transport) socket closed."),this.onclose&&(!this._isCloseEvent(e)||!1!==e.wasClean&&1e3===e.code?e instanceof Error?this.onclose(e):this.onclose():this.onclose(new Error(`WebSocket closed with status code: ${e.code} (${e.reason||"no reason given"}).`)))}_isCloseEvent(e){return e&&"boolean"==typeof e.wasClean&&"number"==typeof e.code}}class xn{constructor(e,t={}){if(this._stopPromiseResolver=()=>{},this.features={},this._negotiateVersion=1,Ht.isRequired(e,"url"),this._logger=function(e){return void 0===e?new Kt(Ot.Information):null===e?Ft.instance:void 0!==e.log?e:new Kt(e)}(t.logger),this.baseUrl=this._resolveUrl(e),(t=t||{}).logMessageContent=void 0!==t.logMessageContent&&t.logMessageContent,"boolean"!=typeof t.withCredentials&&void 0!==t.withCredentials)throw new Error("withCredentials option was not a 'boolean' or 'undefined' value");t.withCredentials=void 0===t.withCredentials||t.withCredentials,t.timeout=void 0===t.timeout?1e5:t.timeout,"undefined"==typeof WebSocket||t.WebSocket||(t.WebSocket=WebSocket),"undefined"==typeof EventSource||t.EventSource||(t.EventSource=EventSource),this._httpClient=new bn(t.httpClient||new En(this._logger),t.accessTokenFactory),this._connectionState="Disconnected",this._connectionStarted=!1,this._options=t,this.onreceive=null,this.onclose=null}async start(e){if(e=e||kn.Binary,Ht.isIn(e,kn,"transferFormat"),this._logger.log(Ot.Debug,`Starting connection with transfer format '${kn[e]}'.`),"Disconnected"!==this._connectionState)return Promise.reject(new Error("Cannot start an HttpConnection that is not in the 'Disconnected' state."));if(this._connectionState="Connecting",this._startInternalPromise=this._startInternal(e),await this._startInternalPromise,"Disconnecting"===this._connectionState){const e="Failed to start the HttpConnection before stop() was called.";return this._logger.log(Ot.Error,e),await this._stopPromise,Promise.reject(new nn(e))}if("Connected"!==this._connectionState){const e="HttpConnection.startInternal completed gracefully but didn't enter the connection into the connected state!";return this._logger.log(Ot.Error,e),Promise.reject(new nn(e))}this._connectionStarted=!0}send(e){return"Connected"!==this._connectionState?Promise.reject(new Error("Cannot send data if the connection is not in the 'Connected' State.")):(this._sendQueue||(this._sendQueue=new Nn(this.transport)),this._sendQueue.send(e))}async stop(e){return"Disconnected"===this._connectionState?(this._logger.log(Ot.Debug,`Call to HttpConnection.stop(${e}) ignored because the connection is already in the disconnected state.`),Promise.resolve()):"Disconnecting"===this._connectionState?(this._logger.log(Ot.Debug,`Call to HttpConnection.stop(${e}) ignored because the connection is already in the disconnecting state.`),this._stopPromise):(this._connectionState="Disconnecting",this._stopPromise=new Promise((e=>{this._stopPromiseResolver=e})),await this._stopInternal(e),void await this._stopPromise)}async _stopInternal(e){this._stopError=e;try{await this._startInternalPromise}catch(e){}if(this.transport){try{await this.transport.stop()}catch(e){this._logger.log(Ot.Error,`HttpConnection.transport.stop() threw error '${e}'.`),this._stopConnection()}this.transport=void 0}else this._logger.log(Ot.Debug,"HttpConnection.transport is undefined in HttpConnection.stop() because start() failed.")}async _startInternal(e){let t=this.baseUrl;this._accessTokenFactory=this._options.accessTokenFactory,this._httpClient._accessTokenFactory=this._accessTokenFactory;try{if(this._options.skipNegotiation){if(this._options.transport!==In.WebSockets)throw new Error("Negotiation can only be skipped when using the WebSocket transport directly.");this.transport=this._constructTransport(In.WebSockets),await this._startTransport(t,e)}else{let n=null,o=0;do{if(n=await this._getNegotiationResponse(t),"Disconnecting"===this._connectionState||"Disconnected"===this._connectionState)throw new nn("The connection was stopped during negotiation.");if(n.error)throw new Error(n.error);if(n.ProtocolVersion)throw new Error("Detected a connection attempt to an ASP.NET SignalR Server. This client only supports connecting to an ASP.NET Core SignalR Server. See https://aka.ms/signalr-core-differences for details.");if(n.url&&(t=n.url),n.accessToken){const e=n.accessToken;this._accessTokenFactory=()=>e,this._httpClient._accessToken=e,this._httpClient._accessTokenFactory=void 0}o++}while(n.url&&o<100);if(100===o&&n.url)throw new Error("Negotiate redirection limit exceeded.");await this._createTransport(t,this._options.transport,n,e)}this.transport instanceof Rn&&(this.features.inherentKeepAlive=!0),"Connecting"===this._connectionState&&(this._logger.log(Ot.Debug,"The HttpConnection connected successfully."),this._connectionState="Connected")}catch(e){return this._logger.log(Ot.Error,"Failed to start the connection: "+e),this._connectionState="Disconnected",this.transport=void 0,this._stopPromiseResolver(),Promise.reject(e)}}async _getNegotiationResponse(e){const t={},[n,o]=Vt();t[n]=o;const r=this._resolveNegotiateUrl(e);this._logger.log(Ot.Debug,`Sending negotiation request: ${r}.`);try{const e=await this._httpClient.post(r,{content:"",headers:{...t,...this._options.headers},timeout:this._options.timeout,withCredentials:this._options.withCredentials});if(200!==e.statusCode)return Promise.reject(new Error(`Unexpected status code returned from negotiate '${e.statusCode}'`));const n=JSON.parse(e.content);return(!n.negotiateVersion||n.negotiateVersion<1)&&(n.connectionToken=n.connectionId),n.useStatefulReconnect&&!0!==this._options._useStatefulReconnect?Promise.reject(new an("Client didn't negotiate Stateful Reconnect but the server did.")):n}catch(e){let t="Failed to complete negotiation with the server: "+e;return e instanceof en&&404===e.statusCode&&(t+=" Either this is not a SignalR endpoint or there is a proxy blocking the connection."),this._logger.log(Ot.Error,t),Promise.reject(new an(t))}}_createConnectUrl(e,t){return t?e+(-1===e.indexOf("?")?"?":"&")+`id=${t}`:e}async _createTransport(e,t,n,o){let r=this._createConnectUrl(e,n.connectionToken);if(this._isITransport(t))return this._logger.log(Ot.Debug,"Connection was provided an instance of ITransport, using that directly."),this.transport=t,await this._startTransport(r,o),void(this.connectionId=n.connectionId);const i=[],s=n.availableTransports||[];let a=n;for(const n of s){const s=this._resolveTransportOrError(n,t,o,!0===(null==a?void 0:a.useStatefulReconnect));if(s instanceof Error)i.push(`${n.transport} failed:`),i.push(s);else if(this._isITransport(s)){if(this.transport=s,!a){try{a=await this._getNegotiationResponse(e)}catch(e){return Promise.reject(e)}r=this._createConnectUrl(e,a.connectionToken)}try{return await this._startTransport(r,o),void(this.connectionId=a.connectionId)}catch(e){if(this._logger.log(Ot.Error,`Failed to start the transport '${n.transport}': ${e}`),a=void 0,i.push(new sn(`${n.transport} failed: ${e}`,In[n.transport])),"Connecting"!==this._connectionState){const e="Failed to select transport before stop() was called.";return this._logger.log(Ot.Debug,e),Promise.reject(new nn(e))}}}}return i.length>0?Promise.reject(new cn(`Unable to connect to the server with any of the available transports. ${i.join(" ")}`,i)):Promise.reject(new Error("None of the transports supported by the client are supported by the server."))}_constructTransport(e){switch(e){case In.WebSockets:if(!this._options.WebSocket)throw new Error("'WebSocket' is not supported in your environment.");return new Dn(this._httpClient,this._accessTokenFactory,this._logger,this._options.logMessageContent,this._options.WebSocket,this._options.headers||{});case In.ServerSentEvents:if(!this._options.EventSource)throw new Error("'EventSource' is not supported in your environment.");return new An(this._httpClient,this._httpClient._accessToken,this._logger,this._options);case In.LongPolling:return new Rn(this._httpClient,this._logger,this._options);default:throw new Error(`Unknown transport: ${e}.`)}}_startTransport(e,t){return this.transport.onreceive=this.onreceive,this.features.reconnect?this.transport.onclose=async n=>{let o=!1;if(this.features.reconnect){try{this.features.disconnected(),await this.transport.connect(e,t),await this.features.resend()}catch{o=!0}o&&this._stopConnection(n)}else this._stopConnection(n)}:this.transport.onclose=e=>this._stopConnection(e),this.transport.connect(e,t)}_resolveTransportOrError(e,t,n,o){const r=In[e.transport];if(null==r)return this._logger.log(Ot.Debug,`Skipping transport '${e.transport}' because it is not supported by this client.`),new Error(`Skipping transport '${e.transport}' because it is not supported by this client.`);if(!function(e,t){return!e||0!=(t&e)}(t,r))return this._logger.log(Ot.Debug,`Skipping transport '${In[r]}' because it was disabled by the client.`),new rn(`'${In[r]}' is disabled by the client.`,r);if(!(e.transferFormats.map((e=>kn[e])).indexOf(n)>=0))return this._logger.log(Ot.Debug,`Skipping transport '${In[r]}' because it does not support the requested transfer format '${kn[n]}'.`),new Error(`'${In[r]}' does not support ${kn[n]}.`);if(r===In.WebSockets&&!this._options.WebSocket||r===In.ServerSentEvents&&!this._options.EventSource)return this._logger.log(Ot.Debug,`Skipping transport '${In[r]}' because it is not supported in your environment.'`),new on(`'${In[r]}' is not supported in your environment.`,r);this._logger.log(Ot.Debug,`Selecting transport '${In[r]}'.`);try{return this.features.reconnect=r===In.WebSockets?o:void 0,this._constructTransport(r)}catch(e){return e}}_isITransport(e){return e&&"object"==typeof e&&"connect"in e}_stopConnection(e){if(this._logger.log(Ot.Debug,`HttpConnection.stopConnection(${e}) called while in state ${this._connectionState}.`),this.transport=void 0,e=this._stopError||e,this._stopError=void 0,"Disconnected"!==this._connectionState){if("Connecting"===this._connectionState)throw this._logger.log(Ot.Warning,`Call to HttpConnection.stopConnection(${e}) was ignored because the connection is still in the connecting state.`),new Error(`HttpConnection.stopConnection(${e}) was called while the connection is still in the connecting state.`);if("Disconnecting"===this._connectionState&&this._stopPromiseResolver(),e?this._logger.log(Ot.Error,`Connection disconnected with error '${e}'.`):this._logger.log(Ot.Information,"Connection disconnected."),this._sendQueue&&(this._sendQueue.stop().catch((e=>{this._logger.log(Ot.Error,`TransportSendQueue.stop() threw error '${e}'.`)})),this._sendQueue=void 0),this.connectionId=void 0,this._connectionState="Disconnected",this._connectionStarted){this._connectionStarted=!1;try{this.onclose&&this.onclose(e)}catch(t){this._logger.log(Ot.Error,`HttpConnection.onclose(${e}) threw error '${t}'.`)}}}else this._logger.log(Ot.Debug,`Call to HttpConnection.stopConnection(${e}) was ignored because the connection is already in the disconnected state.`)}_resolveUrl(e){if(0===e.lastIndexOf("https://",0)||0===e.lastIndexOf("http://",0))return e;if(!Wt.isBrowser)throw new Error(`Cannot resolve '${e}'.`);const t=window.document.createElement("a");return t.href=e,this._logger.log(Ot.Information,`Normalizing '${e}' to '${t.href}'.`),t.href}_resolveNegotiateUrl(e){const t=new URL(e);t.pathname.endsWith("/")?t.pathname+="negotiate":t.pathname+="/negotiate";const n=new URLSearchParams(t.searchParams);return n.has("negotiateVersion")||n.append("negotiateVersion",this._negotiateVersion.toString()),n.has("useStatefulReconnect")?"true"===n.get("useStatefulReconnect")&&(this._options._useStatefulReconnect=!0):!0===this._options._useStatefulReconnect&&n.append("useStatefulReconnect","true"),t.search=n.toString(),t.toString()}}class Nn{constructor(e){this._transport=e,this._buffer=[],this._executing=!0,this._sendBufferedData=new Pn,this._transportResult=new Pn,this._sendLoopPromise=this._sendLoop()}send(e){return this._bufferData(e),this._transportResult||(this._transportResult=new Pn),this._transportResult.promise}stop(){return this._executing=!1,this._sendBufferedData.resolve(),this._sendLoopPromise}_bufferData(e){if(this._buffer.length&&typeof this._buffer[0]!=typeof e)throw new Error(`Expected data to be of type ${typeof this._buffer} but was of type ${typeof e}`);this._buffer.push(e),this._sendBufferedData.resolve()}async _sendLoop(){for(;;){if(await this._sendBufferedData.promise,!this._executing){this._transportResult&&this._transportResult.reject("Connection stopped.");break}this._sendBufferedData=new Pn;const e=this._transportResult;this._transportResult=void 0;const t="string"==typeof this._buffer[0]?this._buffer.join(""):Nn._concatBuffers(this._buffer);this._buffer.length=0;try{await this._transport.send(t),e.resolve()}catch(t){e.reject(t)}}}static _concatBuffers(e){const t=e.map((e=>e.byteLength)).reduce(((e,t)=>e+t)),n=new Uint8Array(t);let o=0;for(const t of e)n.set(new Uint8Array(t),o),o+=t.byteLength;return n.buffer}}class Pn{constructor(){this.promise=new Promise(((e,t)=>[this._resolver,this._rejecter]=[e,t]))}resolve(){this._resolver()}reject(e){this._rejecter(e)}}class Mn{constructor(){this.name="json",this.version=2,this.transferFormat=kn.Text}parseMessages(e,t){if("string"!=typeof e)throw new Error("Invalid input for JSON hub protocol. Expected a string.");if(!e)return[];null===t&&(t=Ft.instance);const n=Bt.parse(e),o=[];for(const e of n){const n=JSON.parse(e);if("number"!=typeof n.type)throw new Error("Invalid payload.");switch(n.type){case ln.Invocation:this._isInvocationMessage(n);break;case ln.StreamItem:this._isStreamItemMessage(n);break;case ln.Completion:this._isCompletionMessage(n);break;case ln.Ping:case ln.Close:break;case ln.Ack:this._isAckMessage(n);break;case ln.Sequence:this._isSequenceMessage(n);break;default:t.log(Ot.Information,"Unknown message type '"+n.type+"' ignored.");continue}o.push(n)}return o}writeMessage(e){return Bt.write(JSON.stringify(e))}_isInvocationMessage(e){this._assertNotEmptyString(e.target,"Invalid payload for Invocation message."),void 0!==e.invocationId&&this._assertNotEmptyString(e.invocationId,"Invalid payload for Invocation message.")}_isStreamItemMessage(e){if(this._assertNotEmptyString(e.invocationId,"Invalid payload for StreamItem message."),void 0===e.item)throw new Error("Invalid payload for StreamItem message.")}_isCompletionMessage(e){if(e.result&&e.error)throw new Error("Invalid payload for Completion message.");!e.result&&e.error&&this._assertNotEmptyString(e.error,"Invalid payload for Completion message."),this._assertNotEmptyString(e.invocationId,"Invalid payload for Completion message.")}_isAckMessage(e){if("number"!=typeof e.sequenceId)throw new Error("Invalid SequenceId for Ack message.")}_isSequenceMessage(e){if("number"!=typeof e.sequenceId)throw new Error("Invalid SequenceId for Sequence message.")}_assertNotEmptyString(e,t){if("string"!=typeof e||""===e)throw new Error(t)}}const Un={trace:Ot.Trace,debug:Ot.Debug,info:Ot.Information,information:Ot.Information,warn:Ot.Warning,warning:Ot.Warning,error:Ot.Error,critical:Ot.Critical,none:Ot.None};class Ln{configureLogging(e){if(Ht.isRequired(e,"logging"),function(e){return void 0!==e.log}(e))this.logger=e;else if("string"==typeof e){const t=function(e){const t=Un[e.toLowerCase()];if(void 0!==t)return t;throw new Error(`Unknown log level: ${e}`)}(e);this.logger=new Kt(t)}else this.logger=new Kt(e);return this}withUrl(e,t){return Ht.isRequired(e,"url"),Ht.isNotEmpty(e,"url"),this.url=e,this.httpConnectionOptions="object"==typeof t?{...this.httpConnectionOptions,...t}:{...this.httpConnectionOptions,transport:t},this}withHubProtocol(e){return Ht.isRequired(e,"protocol"),this.protocol=e,this}withAutomaticReconnect(e){if(this.reconnectPolicy)throw new Error("A reconnectPolicy has already been set.");return e?Array.isArray(e)?this.reconnectPolicy=new mn(e):this.reconnectPolicy=e:this.reconnectPolicy=new mn,this}withServerTimeout(e){return Ht.isRequired(e,"milliseconds"),this._serverTimeoutInMilliseconds=e,this}withKeepAliveInterval(e){return Ht.isRequired(e,"milliseconds"),this._keepAliveIntervalInMilliseconds=e,this}withStatefulReconnect(e){return void 0===this.httpConnectionOptions&&(this.httpConnectionOptions={}),this.httpConnectionOptions._useStatefulReconnect=!0,this._statefulReconnectBufferSize=null==e?void 0:e.bufferSize,this}build(){const e=this.httpConnectionOptions||{};if(void 0===e.logger&&(e.logger=this.logger),!this.url)throw new Error("The 'HubConnectionBuilder.withUrl' method must be called before building the connection.");const t=new xn(this.url,e);return fn.create(t,this.logger||Ft.instance,this.protocol||new Mn,this.reconnectPolicy,this._serverTimeoutInMilliseconds,this._keepAliveIntervalInMilliseconds,this._statefulReconnectBufferSize)}}var Bn;!function(e){e[e.Default=0]="Default",e[e.Server=1]="Server",e[e.WebAssembly=2]="WebAssembly",e[e.WebView=3]="WebView"}(Bn||(Bn={}));var On,Fn,$n,Hn=4294967295;function Wn(e,t,n){var o=Math.floor(n/4294967296),r=n;e.setUint32(t,o),e.setUint32(t+4,r)}function jn(e,t){return 4294967296*e.getInt32(t)+e.getUint32(t+4)}var zn=("undefined"==typeof process||"never"!==(null===(On=null===process||void 0===process?void 0:process.env)||void 0===On?void 0:On.TEXT_ENCODING))&&"undefined"!=typeof TextEncoder&&"undefined"!=typeof TextDecoder;function qn(e){for(var t=e.length,n=0,o=0;o=55296&&r<=56319&&o65535&&(h-=65536,i.push(h>>>10&1023|55296),h=56320|1023&h),i.push(h)}else i.push(a);i.length>=4096&&(s+=String.fromCharCode.apply(String,i),i.length=0)}return i.length>0&&(s+=String.fromCharCode.apply(String,i)),s}var Gn,Yn=zn?new TextDecoder:null,Qn=zn?"undefined"!=typeof process&&"force"!==(null===($n=null===process||void 0===process?void 0:process.env)||void 0===$n?void 0:$n.TEXT_DECODER)?200:0:Hn,Zn=function(e,t){this.type=e,this.data=t},eo=(Gn=function(e,t){return Gn=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},Gn(e,t)},function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function n(){this.constructor=e}Gn(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}),to=function(e){function t(n){var o=e.call(this,n)||this,r=Object.create(t.prototype);return Object.setPrototypeOf(o,r),Object.defineProperty(o,"name",{configurable:!0,enumerable:!1,value:t.name}),o}return eo(t,e),t}(Error),no={type:-1,encode:function(e){var t,n,o,r;return e instanceof Date?function(e){var t,n=e.sec,o=e.nsec;if(n>=0&&o>=0&&n<=17179869183){if(0===o&&n<=4294967295){var r=new Uint8Array(4);return(t=new DataView(r.buffer)).setUint32(0,n),r}var i=n/4294967296,s=4294967295&n;return r=new Uint8Array(8),(t=new DataView(r.buffer)).setUint32(0,o<<2|3&i),t.setUint32(4,s),r}return r=new Uint8Array(12),(t=new DataView(r.buffer)).setUint32(0,o),Wn(t,4,n),r}((o=1e6*((t=e.getTime())-1e3*(n=Math.floor(t/1e3))),{sec:n+(r=Math.floor(o/1e9)),nsec:o-1e9*r})):null},decode:function(e){var t=function(e){var t=new DataView(e.buffer,e.byteOffset,e.byteLength);switch(e.byteLength){case 4:return{sec:t.getUint32(0),nsec:0};case 8:var n=t.getUint32(0);return{sec:4294967296*(3&n)+t.getUint32(4),nsec:n>>>2};case 12:return{sec:jn(t,4),nsec:t.getUint32(0)};default:throw new to("Unrecognized data size for timestamp (expected 4, 8, or 12): ".concat(e.length))}}(e);return new Date(1e3*t.sec+t.nsec/1e6)}},oo=function(){function e(){this.builtInEncoders=[],this.builtInDecoders=[],this.encoders=[],this.decoders=[],this.register(no)}return e.prototype.register=function(e){var t=e.type,n=e.encode,o=e.decode;if(t>=0)this.encoders[t]=n,this.decoders[t]=o;else{var r=1+t;this.builtInEncoders[r]=n,this.builtInDecoders[r]=o}},e.prototype.tryToEncode=function(e,t){for(var n=0;nthis.maxDepth)throw new Error("Too deep objects in depth ".concat(t));null==e?this.encodeNil():"boolean"==typeof e?this.encodeBoolean(e):"number"==typeof e?this.encodeNumber(e):"string"==typeof e?this.encodeString(e):this.encodeObject(e,t)},e.prototype.ensureBufferSizeToWrite=function(e){var t=this.pos+e;this.view.byteLength=0?e<128?this.writeU8(e):e<256?(this.writeU8(204),this.writeU8(e)):e<65536?(this.writeU8(205),this.writeU16(e)):e<4294967296?(this.writeU8(206),this.writeU32(e)):(this.writeU8(207),this.writeU64(e)):e>=-32?this.writeU8(224|e+32):e>=-128?(this.writeU8(208),this.writeI8(e)):e>=-32768?(this.writeU8(209),this.writeI16(e)):e>=-2147483648?(this.writeU8(210),this.writeI32(e)):(this.writeU8(211),this.writeI64(e)):this.forceFloat32?(this.writeU8(202),this.writeF32(e)):(this.writeU8(203),this.writeF64(e))},e.prototype.writeStringHeader=function(e){if(e<32)this.writeU8(160+e);else if(e<256)this.writeU8(217),this.writeU8(e);else if(e<65536)this.writeU8(218),this.writeU16(e);else{if(!(e<4294967296))throw new Error("Too long string: ".concat(e," bytes in UTF-8"));this.writeU8(219),this.writeU32(e)}},e.prototype.encodeString=function(e){if(e.length>Kn){var t=qn(e);this.ensureBufferSizeToWrite(5+t),this.writeStringHeader(t),Vn(e,this.bytes,this.pos),this.pos+=t}else t=qn(e),this.ensureBufferSizeToWrite(5+t),this.writeStringHeader(t),function(e,t,n){for(var o=e.length,r=n,i=0;i>6&31|192;else{if(s>=55296&&s<=56319&&i>12&15|224,t[r++]=s>>6&63|128):(t[r++]=s>>18&7|240,t[r++]=s>>12&63|128,t[r++]=s>>6&63|128)}t[r++]=63&s|128}else t[r++]=s}}(e,this.bytes,this.pos),this.pos+=t},e.prototype.encodeObject=function(e,t){var n=this.extensionCodec.tryToEncode(e,this.context);if(null!=n)this.encodeExtension(n);else if(Array.isArray(e))this.encodeArray(e,t);else if(ArrayBuffer.isView(e))this.encodeBinary(e);else{if("object"!=typeof e)throw new Error("Unrecognized object: ".concat(Object.prototype.toString.apply(e)));this.encodeMap(e,t)}},e.prototype.encodeBinary=function(e){var t=e.byteLength;if(t<256)this.writeU8(196),this.writeU8(t);else if(t<65536)this.writeU8(197),this.writeU16(t);else{if(!(t<4294967296))throw new Error("Too large binary: ".concat(t));this.writeU8(198),this.writeU32(t)}var n=ro(e);this.writeU8a(n)},e.prototype.encodeArray=function(e,t){var n=e.length;if(n<16)this.writeU8(144+n);else if(n<65536)this.writeU8(220),this.writeU16(n);else{if(!(n<4294967296))throw new Error("Too large array: ".concat(n));this.writeU8(221),this.writeU32(n)}for(var o=0,r=e;o0&&e<=this.maxKeyLength},e.prototype.find=function(e,t,n){e:for(var o=0,r=this.caches[n-1];o=this.maxLengthPerKey?n[Math.random()*n.length|0]=o:n.push(o)},e.prototype.decode=function(e,t,n){var o=this.find(e,t,n);if(null!=o)return this.hit++,o;this.miss++;var r=Xn(e,t,n),i=Uint8Array.prototype.slice.call(e,t,t+n);return this.store(i,r),r},e}(),co=function(e,t){var n,o,r,i,s={label:0,sent:function(){if(1&r[0])throw r[1];return r[1]},trys:[],ops:[]};return i={next:a(0),throw:a(1),return:a(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function a(i){return function(a){return function(i){if(n)throw new TypeError("Generator is already executing.");for(;s;)try{if(n=1,o&&(r=2&i[0]?o.return:i[0]?o.throw||((r=o.return)&&r.call(o),0):o.next)&&!(r=r.call(o,i[1])).done)return r;switch(o=0,r&&(i=[2&i[0],r.value]),i[0]){case 0:case 1:r=i;break;case 4:return s.label++,{value:i[1],done:!1};case 5:s.label++,o=i[1],i=[0];continue;case 7:i=s.ops.pop(),s.trys.pop();continue;default:if(!((r=(r=s.trys).length>0&&r[r.length-1])||6!==i[0]&&2!==i[0])){s=0;continue}if(3===i[0]&&(!r||i[1]>r[0]&&i[1]=e},e.prototype.createExtraByteError=function(e){var t=this.view,n=this.pos;return new RangeError("Extra ".concat(t.byteLength-n," of ").concat(t.byteLength," byte(s) found at buffer[").concat(e,"]"))},e.prototype.decode=function(e){this.reinitializeState(),this.setBuffer(e);var t=this.doDecodeSync();if(this.hasRemaining(1))throw this.createExtraByteError(this.pos);return t},e.prototype.decodeMulti=function(e){return co(this,(function(t){switch(t.label){case 0:this.reinitializeState(),this.setBuffer(e),t.label=1;case 1:return this.hasRemaining(1)?[4,this.doDecodeSync()]:[3,3];case 2:return t.sent(),[3,1];case 3:return[2]}}))},e.prototype.decodeAsync=function(e){var t,n,o,r,i,s,a;return i=this,void 0,a=function(){var i,s,a,c,l,h,d,u;return co(this,(function(p){switch(p.label){case 0:i=!1,p.label=1;case 1:p.trys.push([1,6,7,12]),t=lo(e),p.label=2;case 2:return[4,t.next()];case 3:if((n=p.sent()).done)return[3,5];if(a=n.value,i)throw this.createExtraByteError(this.totalPos);this.appendBuffer(a);try{s=this.doDecodeSync(),i=!0}catch(e){if(!(e instanceof fo))throw e}this.totalPos+=this.pos,p.label=4;case 4:return[3,2];case 5:return[3,12];case 6:return c=p.sent(),o={error:c},[3,12];case 7:return p.trys.push([7,,10,11]),n&&!n.done&&(r=t.return)?[4,r.call(t)]:[3,9];case 8:p.sent(),p.label=9;case 9:return[3,11];case 10:if(o)throw o.error;return[7];case 11:return[7];case 12:if(i){if(this.hasRemaining(1))throw this.createExtraByteError(this.totalPos);return[2,s]}throw h=(l=this).headByte,d=l.pos,u=l.totalPos,new RangeError("Insufficient data in parsing ".concat(so(h)," at ").concat(u," (").concat(d," in the current buffer)"))}}))},new((s=void 0)||(s=Promise))((function(e,t){function n(e){try{r(a.next(e))}catch(e){t(e)}}function o(e){try{r(a.throw(e))}catch(e){t(e)}}function r(t){var r;t.done?e(t.value):(r=t.value,r instanceof s?r:new s((function(e){e(r)}))).then(n,o)}r((a=a.apply(i,[])).next())}))},e.prototype.decodeArrayStream=function(e){return this.decodeMultiAsync(e,!0)},e.prototype.decodeStream=function(e){return this.decodeMultiAsync(e,!1)},e.prototype.decodeMultiAsync=function(e,t){return function(n,o,r){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var i,s=function(){var n,o,r,i,s,a,c,l,h;return co(this,(function(d){switch(d.label){case 0:n=t,o=-1,d.label=1;case 1:d.trys.push([1,13,14,19]),r=lo(e),d.label=2;case 2:return[4,ho(r.next())];case 3:if((i=d.sent()).done)return[3,12];if(s=i.value,t&&0===o)throw this.createExtraByteError(this.totalPos);this.appendBuffer(s),n&&(o=this.readArraySize(),n=!1,this.complete()),d.label=4;case 4:d.trys.push([4,9,,10]),d.label=5;case 5:return[4,ho(this.doDecodeSync())];case 6:return[4,d.sent()];case 7:return d.sent(),0==--o?[3,8]:[3,5];case 8:return[3,10];case 9:if(!((a=d.sent())instanceof fo))throw a;return[3,10];case 10:this.totalPos+=this.pos,d.label=11;case 11:return[3,2];case 12:return[3,19];case 13:return c=d.sent(),l={error:c},[3,19];case 14:return d.trys.push([14,,17,18]),i&&!i.done&&(h=r.return)?[4,ho(h.call(r))]:[3,16];case 15:d.sent(),d.label=16;case 16:return[3,18];case 17:if(l)throw l.error;return[7];case 18:return[7];case 19:return[2]}}))}.apply(n,o||[]),a=[];return i={},c("next"),c("throw"),c("return"),i[Symbol.asyncIterator]=function(){return this},i;function c(e){s[e]&&(i[e]=function(t){return new Promise((function(n,o){a.push([e,t,n,o])>1||l(e,t)}))})}function l(e,t){try{(n=s[e](t)).value instanceof ho?Promise.resolve(n.value.v).then(h,d):u(a[0][2],n)}catch(e){u(a[0][3],e)}var n}function h(e){l("next",e)}function d(e){l("throw",e)}function u(e,t){e(t),a.shift(),a.length&&l(a[0][0],a[0][1])}}(this,arguments)},e.prototype.doDecodeSync=function(){e:for(;;){var e=this.readHeadByte(),t=void 0;if(e>=224)t=e-256;else if(e<192)if(e<128)t=e;else if(e<144){if(0!=(o=e-128)){this.pushMapState(o),this.complete();continue e}t={}}else if(e<160){if(0!=(o=e-144)){this.pushArrayState(o),this.complete();continue e}t=[]}else{var n=e-160;t=this.decodeUtf8String(n,0)}else if(192===e)t=null;else if(194===e)t=!1;else if(195===e)t=!0;else if(202===e)t=this.readF32();else if(203===e)t=this.readF64();else if(204===e)t=this.readU8();else if(205===e)t=this.readU16();else if(206===e)t=this.readU32();else if(207===e)t=this.readU64();else if(208===e)t=this.readI8();else if(209===e)t=this.readI16();else if(210===e)t=this.readI32();else if(211===e)t=this.readI64();else if(217===e)n=this.lookU8(),t=this.decodeUtf8String(n,1);else if(218===e)n=this.lookU16(),t=this.decodeUtf8String(n,2);else if(219===e)n=this.lookU32(),t=this.decodeUtf8String(n,4);else if(220===e){if(0!==(o=this.readU16())){this.pushArrayState(o),this.complete();continue e}t=[]}else if(221===e){if(0!==(o=this.readU32())){this.pushArrayState(o),this.complete();continue e}t=[]}else if(222===e){if(0!==(o=this.readU16())){this.pushMapState(o),this.complete();continue e}t={}}else if(223===e){if(0!==(o=this.readU32())){this.pushMapState(o),this.complete();continue e}t={}}else if(196===e){var o=this.lookU8();t=this.decodeBinary(o,1)}else if(197===e)o=this.lookU16(),t=this.decodeBinary(o,2);else if(198===e)o=this.lookU32(),t=this.decodeBinary(o,4);else if(212===e)t=this.decodeExtension(1,0);else if(213===e)t=this.decodeExtension(2,0);else if(214===e)t=this.decodeExtension(4,0);else if(215===e)t=this.decodeExtension(8,0);else if(216===e)t=this.decodeExtension(16,0);else if(199===e)o=this.lookU8(),t=this.decodeExtension(o,1);else if(200===e)o=this.lookU16(),t=this.decodeExtension(o,2);else{if(201!==e)throw new to("Unrecognized type byte: ".concat(so(e)));o=this.lookU32(),t=this.decodeExtension(o,4)}this.complete();for(var r=this.stack;r.length>0;){var i=r[r.length-1];if(0===i.type){if(i.array[i.position]=t,i.position++,i.position!==i.size)continue e;r.pop(),t=i.array}else{if(1===i.type){if("string"!=(s=typeof t)&&"number"!==s)throw new to("The type of key must be string or number but "+typeof t);if("__proto__"===t)throw new to("The key __proto__ is not allowed");i.key=t,i.type=2;continue e}if(i.map[i.key]=t,i.readCount++,i.readCount!==i.size){i.key=null,i.type=1;continue e}r.pop(),t=i.map}}return t}var s},e.prototype.readHeadByte=function(){return-1===this.headByte&&(this.headByte=this.readU8()),this.headByte},e.prototype.complete=function(){this.headByte=-1},e.prototype.readArraySize=function(){var e=this.readHeadByte();switch(e){case 220:return this.readU16();case 221:return this.readU32();default:if(e<160)return e-144;throw new to("Unrecognized array type byte: ".concat(so(e)))}},e.prototype.pushMapState=function(e){if(e>this.maxMapLength)throw new to("Max length exceeded: map length (".concat(e,") > maxMapLengthLength (").concat(this.maxMapLength,")"));this.stack.push({type:1,size:e,key:null,readCount:0,map:{}})},e.prototype.pushArrayState=function(e){if(e>this.maxArrayLength)throw new to("Max length exceeded: array length (".concat(e,") > maxArrayLength (").concat(this.maxArrayLength,")"));this.stack.push({type:0,size:e,array:new Array(e),position:0})},e.prototype.decodeUtf8String=function(e,t){var n;if(e>this.maxStrLength)throw new to("Max length exceeded: UTF-8 byte length (".concat(e,") > maxStrLength (").concat(this.maxStrLength,")"));if(this.bytes.byteLengthQn?function(e,t,n){var o=e.subarray(t,t+n);return Yn.decode(o)}(this.bytes,r,e):Xn(this.bytes,r,e),this.pos+=t+e,o},e.prototype.stateIsMapKey=function(){return this.stack.length>0&&1===this.stack[this.stack.length-1].type},e.prototype.decodeBinary=function(e,t){if(e>this.maxBinLength)throw new to("Max length exceeded: bin length (".concat(e,") > maxBinLength (").concat(this.maxBinLength,")"));if(!this.hasRemaining(e+t))throw go;var n=this.pos+t,o=this.bytes.subarray(n,n+e);return this.pos+=t+e,o},e.prototype.decodeExtension=function(e,t){if(e>this.maxExtLength)throw new to("Max length exceeded: ext length (".concat(e,") > maxExtLength (").concat(this.maxExtLength,")"));var n=this.view.getInt8(this.pos+t),o=this.decodeBinary(e,t+1);return this.extensionCodec.decode(o,n,this.context)},e.prototype.lookU8=function(){return this.view.getUint8(this.pos)},e.prototype.lookU16=function(){return this.view.getUint16(this.pos)},e.prototype.lookU32=function(){return this.view.getUint32(this.pos)},e.prototype.readU8=function(){var e=this.view.getUint8(this.pos);return this.pos++,e},e.prototype.readI8=function(){var e=this.view.getInt8(this.pos);return this.pos++,e},e.prototype.readU16=function(){var e=this.view.getUint16(this.pos);return this.pos+=2,e},e.prototype.readI16=function(){var e=this.view.getInt16(this.pos);return this.pos+=2,e},e.prototype.readU32=function(){var e=this.view.getUint32(this.pos);return this.pos+=4,e},e.prototype.readI32=function(){var e=this.view.getInt32(this.pos);return this.pos+=4,e},e.prototype.readU64=function(){var e,t,n=(e=this.view,t=this.pos,4294967296*e.getUint32(t)+e.getUint32(t+4));return this.pos+=8,n},e.prototype.readI64=function(){var e=jn(this.view,this.pos);return this.pos+=8,e},e.prototype.readF32=function(){var e=this.view.getFloat32(this.pos);return this.pos+=4,e},e.prototype.readF64=function(){var e=this.view.getFloat64(this.pos);return this.pos+=8,e},e}();class yo{static write(e){let t=e.byteLength||e.length;const n=[];do{let e=127&t;t>>=7,t>0&&(e|=128),n.push(e)}while(t>0);t=e.byteLength||e.length;const o=new Uint8Array(n.length+t);return o.set(n,0),o.set(e,n.length),o.buffer}static parse(e){const t=[],n=new Uint8Array(e),o=[0,7,14,21,28];for(let r=0;r7)throw new Error("Messages bigger than 2GB are not supported.");if(!(n.byteLength>=r+s+a))throw new Error("Incomplete message.");t.push(n.slice?n.slice(r+s,r+s+a):n.subarray(r+s,r+s+a)),r=r+s+a}return t}}const wo=new Uint8Array([145,ln.Ping]);class bo{constructor(e){this.name="messagepack",this.version=2,this.transferFormat=kn.Binary,this._errorResult=1,this._voidResult=2,this._nonVoidResult=3,e=e||{},this._encoder=new io(e.extensionCodec,e.context,e.maxDepth,e.initialBufferSize,e.sortKeys,e.forceFloat32,e.ignoreUndefined,e.forceIntegerToFloat),this._decoder=new vo(e.extensionCodec,e.context,e.maxStrLength,e.maxBinLength,e.maxArrayLength,e.maxMapLength,e.maxExtLength)}parseMessages(e,t){if(!(n=e)||"undefined"==typeof ArrayBuffer||!(n instanceof ArrayBuffer||n.constructor&&"ArrayBuffer"===n.constructor.name))throw new Error("Invalid input for MessagePack hub protocol. Expected an ArrayBuffer.");var n;null===t&&(t=Ft.instance);const o=yo.parse(e),r=[];for(const e of o){const n=this._parseMessage(e,t);n&&r.push(n)}return r}writeMessage(e){switch(e.type){case ln.Invocation:return this._writeInvocation(e);case ln.StreamInvocation:return this._writeStreamInvocation(e);case ln.StreamItem:return this._writeStreamItem(e);case ln.Completion:return this._writeCompletion(e);case ln.Ping:return yo.write(wo);case ln.CancelInvocation:return this._writeCancelInvocation(e);case ln.Close:return this._writeClose();case ln.Ack:return this._writeAck(e);case ln.Sequence:return this._writeSequence(e);default:throw new Error("Invalid message type.")}}_parseMessage(e,t){if(0===e.length)throw new Error("Invalid payload.");const n=this._decoder.decode(e);if(0===n.length||!(n instanceof Array))throw new Error("Invalid payload.");const o=n[0];switch(o){case ln.Invocation:return this._createInvocationMessage(this._readHeaders(n),n);case ln.StreamItem:return this._createStreamItemMessage(this._readHeaders(n),n);case ln.Completion:return this._createCompletionMessage(this._readHeaders(n),n);case ln.Ping:return this._createPingMessage(n);case ln.Close:return this._createCloseMessage(n);case ln.Ack:return this._createAckMessage(n);case ln.Sequence:return this._createSequenceMessage(n);default:return t.log(Ot.Information,"Unknown message type '"+o+"' ignored."),null}}_createCloseMessage(e){if(e.length<2)throw new Error("Invalid payload for Close message.");return{allowReconnect:e.length>=3?e[2]:void 0,error:e[1],type:ln.Close}}_createPingMessage(e){if(e.length<1)throw new Error("Invalid payload for Ping message.");return{type:ln.Ping}}_createInvocationMessage(e,t){if(t.length<5)throw new Error("Invalid payload for Invocation message.");const n=t[2];return n?{arguments:t[4],headers:e,invocationId:n,streamIds:[],target:t[3],type:ln.Invocation}:{arguments:t[4],headers:e,streamIds:[],target:t[3],type:ln.Invocation}}_createStreamItemMessage(e,t){if(t.length<4)throw new Error("Invalid payload for StreamItem message.");return{headers:e,invocationId:t[2],item:t[3],type:ln.StreamItem}}_createCompletionMessage(e,t){if(t.length<4)throw new Error("Invalid payload for Completion message.");const n=t[3];if(n!==this._voidResult&&t.length<5)throw new Error("Invalid payload for Completion message.");let o,r;switch(n){case this._errorResult:o=t[4];break;case this._nonVoidResult:r=t[4]}return{error:o,headers:e,invocationId:t[2],result:r,type:ln.Completion}}_createAckMessage(e){if(e.length<1)throw new Error("Invalid payload for Ack message.");return{sequenceId:e[1],type:ln.Ack}}_createSequenceMessage(e){if(e.length<1)throw new Error("Invalid payload for Sequence message.");return{sequenceId:e[1],type:ln.Sequence}}_writeInvocation(e){let t;return t=e.streamIds?this._encoder.encode([ln.Invocation,e.headers||{},e.invocationId||null,e.target,e.arguments,e.streamIds]):this._encoder.encode([ln.Invocation,e.headers||{},e.invocationId||null,e.target,e.arguments]),yo.write(t.slice())}_writeStreamInvocation(e){let t;return t=e.streamIds?this._encoder.encode([ln.StreamInvocation,e.headers||{},e.invocationId,e.target,e.arguments,e.streamIds]):this._encoder.encode([ln.StreamInvocation,e.headers||{},e.invocationId,e.target,e.arguments]),yo.write(t.slice())}_writeStreamItem(e){const t=this._encoder.encode([ln.StreamItem,e.headers||{},e.invocationId,e.item]);return yo.write(t.slice())}_writeCompletion(e){const t=e.error?this._errorResult:void 0!==e.result?this._nonVoidResult:this._voidResult;let n;switch(t){case this._errorResult:n=this._encoder.encode([ln.Completion,e.headers||{},e.invocationId,t,e.error]);break;case this._voidResult:n=this._encoder.encode([ln.Completion,e.headers||{},e.invocationId,t]);break;case this._nonVoidResult:n=this._encoder.encode([ln.Completion,e.headers||{},e.invocationId,t,e.result])}return yo.write(n.slice())}_writeCancelInvocation(e){const t=this._encoder.encode([ln.CancelInvocation,e.headers||{},e.invocationId]);return yo.write(t.slice())}_writeClose(){const e=this._encoder.encode([ln.Close,null]);return yo.write(e.slice())}_writeAck(e){const t=this._encoder.encode([ln.Ack,e.sequenceId]);return yo.write(t.slice())}_writeSequence(e){const t=this._encoder.encode([ln.Sequence,e.sequenceId]);return yo.write(t.slice())}_readHeaders(e){const t=e[1];if("object"!=typeof t)throw new Error("Invalid headers.");return t}}const _o="function"==typeof TextDecoder?new TextDecoder("utf-8"):null,So=_o?_o.decode.bind(_o):function(e){let t=0;const n=e.length,o=[],r=[];for(;t65535&&(r-=65536,o.push(r>>>10&1023|55296),r=56320|1023&r),o.push(r)}o.length>1024&&(r.push(String.fromCharCode.apply(null,o)),o.length=0)}return r.push(String.fromCharCode.apply(null,o)),r.join("")},Co=Math.pow(2,32),Eo=Math.pow(2,21)-1;function Io(e,t){return e[t]|e[t+1]<<8|e[t+2]<<16|e[t+3]<<24}function ko(e,t){return e[t]+(e[t+1]<<8)+(e[t+2]<<16)+(e[t+3]<<24>>>0)}function To(e,t){const n=ko(e,t+4);if(n>Eo)throw new Error(`Cannot read uint64 with high order part ${n}, because the result would exceed Number.MAX_SAFE_INTEGER.`);return n*Co+ko(e,t)}class Ro{constructor(e){this.batchData=e;const t=new No(e);this.arrayRangeReader=new Po(e),this.arrayBuilderSegmentReader=new Mo(e),this.diffReader=new Ao(e),this.editReader=new Do(e,t),this.frameReader=new xo(e,t)}updatedComponents(){return Io(this.batchData,this.batchData.length-20)}referenceFrames(){return Io(this.batchData,this.batchData.length-16)}disposedComponentIds(){return Io(this.batchData,this.batchData.length-12)}disposedEventHandlerIds(){return Io(this.batchData,this.batchData.length-8)}updatedComponentsEntry(e,t){const n=e+4*t;return Io(this.batchData,n)}referenceFramesEntry(e,t){return e+20*t}disposedComponentIdsEntry(e,t){const n=e+4*t;return Io(this.batchData,n)}disposedEventHandlerIdsEntry(e,t){const n=e+8*t;return To(this.batchData,n)}}class Ao{constructor(e){this.batchDataUint8=e}componentId(e){return Io(this.batchDataUint8,e)}edits(e){return e+4}editsEntry(e,t){return e+16*t}}class Do{constructor(e,t){this.batchDataUint8=e,this.stringReader=t}editType(e){return Io(this.batchDataUint8,e)}siblingIndex(e){return Io(this.batchDataUint8,e+4)}newTreeIndex(e){return Io(this.batchDataUint8,e+8)}moveToSiblingIndex(e){return Io(this.batchDataUint8,e+8)}removedAttributeName(e){const t=Io(this.batchDataUint8,e+12);return this.stringReader.readString(t)}}class xo{constructor(e,t){this.batchDataUint8=e,this.stringReader=t}frameType(e){return Io(this.batchDataUint8,e)}subtreeLength(e){return Io(this.batchDataUint8,e+4)}elementReferenceCaptureId(e){const t=Io(this.batchDataUint8,e+4);return this.stringReader.readString(t)}componentId(e){return Io(this.batchDataUint8,e+8)}elementName(e){const t=Io(this.batchDataUint8,e+8);return this.stringReader.readString(t)}textContent(e){const t=Io(this.batchDataUint8,e+4);return this.stringReader.readString(t)}markupContent(e){const t=Io(this.batchDataUint8,e+4);return this.stringReader.readString(t)}attributeName(e){const t=Io(this.batchDataUint8,e+4);return this.stringReader.readString(t)}attributeValue(e){const t=Io(this.batchDataUint8,e+8);return this.stringReader.readString(t)}attributeEventHandlerId(e){return To(this.batchDataUint8,e+12)}}class No{constructor(e){this.batchDataUint8=e,this.stringTableStartIndex=Io(e,e.length-4)}readString(e){if(-1===e)return null;{const n=Io(this.batchDataUint8,this.stringTableStartIndex+4*e),o=function(e,t){let n=0,o=0;for(let r=0;r<4;r++){const i=e[t+r];if(n|=(127&i)<this.nextBatchId)return this.fatalError?(this.logger.log(yt.Debug,`Received a new batch ${e} but errored out on a previous batch ${this.nextBatchId-1}`),void await n.send("OnRenderCompleted",this.nextBatchId-1,this.fatalError.toString())):void this.logger.log(yt.Debug,`Waiting for batch ${this.nextBatchId}. Batch ${e} not processed.`);try{this.nextBatchId++,this.logger.log(yt.Debug,`Applying batch ${e}.`),xe(Bn.Server,new Ro(t)),await this.completeBatch(n,e)}catch(t){throw this.fatalError=t.toString(),this.logger.log(yt.Error,`There was an error applying batch ${e}.`),n.send("OnRenderCompleted",e,t.toString()),t}}getLastBatchid(){return this.nextBatchId-1}async completeBatch(e,t){try{await e.send("OnRenderCompleted",t,null)}catch{this.logger.log(yt.Warning,`Failed to deliver completion notification for render '${t}'.`)}}}let Lo=!1;function Bo(){const e=document.querySelector("#blazor-error-ui");e&&(e.style.display="block"),Lo||(Lo=!0,document.querySelectorAll("#blazor-error-ui .reload").forEach((e=>{e.onclick=function(e){location.reload(),e.preventDefault()}})),document.querySelectorAll("#blazor-error-ui .dismiss").forEach((e=>{e.onclick=function(e){const t=document.querySelector("#blazor-error-ui");t&&(t.style.display="none"),e.preventDefault()}})))}class Oo{constructor(t,n,o,r){this._firstUpdate=!0,this._renderingFailed=!1,this._disposed=!1,this._circuitId=void 0,this._applicationState=n,this._componentManager=t,this._options=o,this._logger=r,this._renderQueue=new Uo(this._logger),this._dispatcher=e.attachDispatcher(this)}start(){if(this.isDisposedOrDisposing())throw new Error("Cannot start a disposed circuit.");return this._startPromise||(this._startPromise=this.startCore()),this._startPromise}updateRootComponents(e){var t,n;return this._firstUpdate?(this._firstUpdate=!1,null===(t=this._connection)||void 0===t?void 0:t.send("UpdateRootComponents",e,this._applicationState)):null===(n=this._connection)||void 0===n?void 0:n.send("UpdateRootComponents",e,"")}async startCore(){if(this._connection=await this.startConnection(),this._connection.state!==hn.Connected)return!1;const e=JSON.stringify(this._componentManager.initialComponents.map((e=>Ut(e))));if(this._circuitId=await this._connection.invoke("StartCircuit",Je.getBaseURI(),Je.getLocationHref(),e,this._applicationState||""),!this._circuitId)return!1;for(const e of this._options.circuitHandlers)e.onCircuitOpened&&e.onCircuitOpened();return!0}async startConnection(){var e,t;const n=new bo;n.name="blazorpack";const o=(new Ln).withUrl("_blazor").withHubProtocol(n);this._options.configureSignalR(o);const r=o.build();r.on("JS.AttachComponent",((e,t)=>Ae(Bn.Server,this.resolveElement(t),e,!1))),r.on("JS.BeginInvokeJS",this._dispatcher.beginInvokeJSFromDotNet.bind(this._dispatcher)),r.on("JS.EndInvokeDotNet",this._dispatcher.endInvokeDotNetFromJS.bind(this._dispatcher)),r.on("JS.ReceiveByteArray",this._dispatcher.receiveByteArray.bind(this._dispatcher)),r.on("JS.BeginTransmitStream",(e=>{const t=new ReadableStream({start:t=>{r.stream("SendDotNetStreamToJS",e).subscribe({next:e=>t.enqueue(e),complete:()=>t.close(),error:e=>t.error(e)})}});this._dispatcher.supplyDotNetStream(e,t)})),r.on("JS.RenderBatch",(async(e,t)=>{var n,o;this._logger.log(Ot.Debug,`Received render batch with id ${e} and ${t.byteLength} bytes.`),await this._renderQueue.processBatch(e,t,this._connection),null===(o=(n=this._componentManager).onAfterRenderBatch)||void 0===o||o.call(n,Bn.Server)})),r.on("JS.EndUpdateRootComponents",(e=>{var t,n;null===(n=(t=this._componentManager).onAfterUpdateRootComponents)||void 0===n||n.call(t,e)})),r.on("JS.EndLocationChanging",vt._internal.navigationManager.endLocationChanging),r.onclose((e=>{this._interopMethodsForReconnection=function(e){const t=C.get(e);if(!t)throw new Error(`Interop methods are not registered for renderer ${e}`);return C.delete(e),t}(Bn.Server),this._disposed||this._renderingFailed||this._options.reconnectionHandler.onConnectionDown(this._options.reconnectionOptions,e)})),r.on("JS.Error",(e=>{this._renderingFailed=!0,this.unhandledError(e),Bo()}));try{await r.start()}catch(e){if(this.unhandledError(e),"FailedToNegotiateWithServerError"===e.errorType)throw e;Bo(),e.innerErrors&&(e.innerErrors.some((e=>"UnsupportedTransportError"===e.errorType&&e.transport===In.WebSockets))?this._logger.log(Ot.Error,"Unable to connect, please ensure you are using an updated browser that supports WebSockets."):e.innerErrors.some((e=>"FailedToStartTransportError"===e.errorType&&e.transport===In.WebSockets))?this._logger.log(Ot.Error,"Unable to connect, please ensure WebSockets are available. A VPN or proxy may be blocking the connection."):e.innerErrors.some((e=>"DisabledTransportError"===e.errorType&&e.transport===In.LongPolling))&&this._logger.log(Ot.Error,"Unable to initiate a SignalR connection to the server. This might be because the server is not configured to support WebSockets. For additional details, visit https://aka.ms/blazor-server-websockets-error."))}return(null===(t=null===(e=r.connection)||void 0===e?void 0:e.features)||void 0===t?void 0:t.inherentKeepAlive)&&this._logger.log(Ot.Warning,"Failed to connect via WebSockets, using the Long Polling fallback transport. This may be due to a VPN or proxy blocking the connection. To troubleshoot this, visit https://aka.ms/blazor-server-using-fallback-long-polling."),r}async disconnect(){var e;await(null===(e=this._connection)||void 0===e?void 0:e.stop())}async reconnect(){if(!this._circuitId)throw new Error("Circuit host not initialized.");return this._connection.state===hn.Connected||(this._connection=await this.startConnection(),this._interopMethodsForReconnection&&(k(Bn.Server,this._interopMethodsForReconnection),this._interopMethodsForReconnection=void 0),!!await this._connection.invoke("ConnectCircuit",this._circuitId)&&(this._options.reconnectionHandler.onConnectionUp(),!0))}beginInvokeDotNetFromJS(e,t,n,o,r){this.throwIfDispatchingWhenDisposed(),this._connection.send("BeginInvokeDotNetFromJS",e?e.toString():null,t,n,o||0,r)}endInvokeJSFromDotNet(e,t,n){this.throwIfDispatchingWhenDisposed(),this._connection.send("EndInvokeJSFromDotNet",e,t,n)}sendByteArray(e,t){this.throwIfDispatchingWhenDisposed(),this._connection.send("ReceiveByteArray",e,t)}throwIfDispatchingWhenDisposed(){if(this._disposed)throw new Error("The circuit associated with this dispatcher is no longer available.")}sendLocationChanged(e,t,n){return this._connection.send("OnLocationChanged",e,t,n)}sendLocationChanging(e,t,n,o){return this._connection.send("OnLocationChanging",e,t,n,o)}sendJsDataStream(e,t,n){return function(e,t,n,o){setTimeout((async()=>{let r=5,i=(new Date).valueOf();try{const s=t instanceof Blob?t.size:t.byteLength;let a=0,c=0;for(;a1)await e.send("ReceiveJSDataChunk",n,c,h,null);else{if(!await e.invoke("ReceiveJSDataChunk",n,c,h,null))break;const t=(new Date).valueOf(),o=t-i;i=t,r=Math.max(1,Math.round(500/Math.max(1,o)))}a+=l,c++}}catch(t){await e.send("ReceiveJSDataChunk",n,-1,null,t.toString())}}),0)}(this._connection,e,t,n)}resolveElement(e){const t=w(e);if(t)return W(t,!0);const n=Number.parseInt(e);if(!Number.isNaN(n))return H(this._componentManager.resolveRootComponent(n));throw new Error(`Invalid sequence number or identifier '${e}'.`)}getRootComponentManager(){return this._componentManager}unhandledError(e){this._logger.log(Ot.Error,e),this.disconnect()}getDisconnectFormData(){const e=new FormData,t=this._circuitId;return e.append("circuitId",t),e}didRenderingFail(){return this._renderingFailed}isDisposedOrDisposing(){return void 0!==this._disposePromise}sendDisconnectBeacon(){if(this._disposed)return;const e=this.getDisconnectFormData();this._disposed=navigator.sendBeacon("_blazor/disconnect",e)}dispose(){return this._disposePromise||(this._disposePromise=this.disposeCore()),this._disposePromise}async disposeCore(){var e;if(!this._startPromise)return void(this._disposed=!0);await this._startPromise,this._disposed=!0,null===(e=this._connection)||void 0===e||e.stop();const t=this.getDisconnectFormData();fetch("http://github.com/_blazor/disconnect",{method:"POST",body:t});for(const e of this._options.circuitHandlers)e.onCircuitClosed&&e.onCircuitClosed()}}function Fo(e){const t={...$o,...e};return e&&e.reconnectionOptions&&(t.reconnectionOptions={...$o.reconnectionOptions,...e.reconnectionOptions}),t}const $o={configureSignalR:e=>{},logLevel:yt.Warning,initializers:void 0,circuitHandlers:[],reconnectionOptions:{maxRetries:8,retryIntervalMilliseconds:2e4,dialogId:"components-reconnect-modal"}};class Ho{constructor(e,t,n,o){this.maxRetries=t,this.document=n,this.logger=o,this.modal=this.document.createElement("div"),this.modal.id=e,this.maxRetries=t,this.modal.style.cssText=["position: fixed","top: 0","right: 0","bottom: 0","left: 0","z-index: 1050","display: none","overflow: hidden","background-color: #fff","opacity: 0.8","text-align: center","font-weight: bold","transition: visibility 0s linear 500ms"].join(";"),this.message=this.document.createElement("h5"),this.message.style.cssText="margin-top: 20px",this.button=this.document.createElement("button"),this.button.style.cssText="margin:5px auto 5px",this.button.textContent="Retry";const r=this.document.createElement("a");r.addEventListener("click",(()=>location.reload())),r.textContent="reload",this.reloadParagraph=this.document.createElement("p"),this.reloadParagraph.textContent="Alternatively, ",this.reloadParagraph.appendChild(r),this.modal.appendChild(this.message),this.modal.appendChild(this.button),this.modal.appendChild(this.reloadParagraph),this.loader=this.getLoader(),this.message.after(this.loader),this.button.addEventListener("click",(async()=>{this.show();try{await vt.reconnect()||this.rejected()}catch(e){this.logger.log(yt.Error,e),this.failed()}}))}show(){this.document.contains(this.modal)||this.document.body.appendChild(this.modal),this.modal.style.display="block",this.loader.style.display="inline-block",this.button.style.display="none",this.reloadParagraph.style.display="none",this.message.textContent="Attempting to reconnect to the server...",this.modal.style.visibility="hidden",setTimeout((()=>{this.modal.style.visibility="visible"}),0)}update(e){this.message.textContent=`Attempting to reconnect to the server: ${e} of ${this.maxRetries}`}hide(){this.modal.style.display="none"}failed(){this.button.style.display="block",this.reloadParagraph.style.display="none",this.loader.style.display="none";const e=this.document.createTextNode("Reconnection failed. Try "),t=this.document.createElement("a");t.textContent="reloading",t.setAttribute("href",""),t.addEventListener("click",(()=>location.reload()));const n=this.document.createTextNode(" the page if you're unable to reconnect.");this.message.replaceChildren(e,t,n)}rejected(){this.button.style.display="none",this.reloadParagraph.style.display="none",this.loader.style.display="none";const e=this.document.createTextNode("Could not reconnect to the server. "),t=this.document.createElement("a");t.textContent="Reload",t.setAttribute("href",""),t.addEventListener("click",(()=>location.reload()));const n=this.document.createTextNode(" the page to restore functionality.");this.message.replaceChildren(e,t,n)}getLoader(){const e=this.document.createElement("div");return e.style.cssText=["border: 0.3em solid #f3f3f3","border-top: 0.3em solid #3498db","border-radius: 50%","width: 2em","height: 2em","display: inline-block"].join(";"),e.animate([{transform:"rotate(0deg)"},{transform:"rotate(360deg)"}],{duration:2e3,iterations:1/0}),e}}class Wo{constructor(e,t,n){this.dialog=e,this.maxRetries=t,this.document=n,this.document=n;const o=this.document.getElementById(Wo.MaxRetriesId);o&&(o.innerText=this.maxRetries.toString())}show(){this.removeClasses(),this.dialog.classList.add(Wo.ShowClassName)}update(e){const t=this.document.getElementById(Wo.CurrentAttemptId);t&&(t.innerText=e.toString())}hide(){this.removeClasses(),this.dialog.classList.add(Wo.HideClassName)}failed(){this.removeClasses(),this.dialog.classList.add(Wo.FailedClassName)}rejected(){this.removeClasses(),this.dialog.classList.add(Wo.RejectedClassName)}removeClasses(){this.dialog.classList.remove(Wo.ShowClassName,Wo.HideClassName,Wo.FailedClassName,Wo.RejectedClassName)}}Wo.ShowClassName="components-reconnect-show",Wo.HideClassName="components-reconnect-hide",Wo.FailedClassName="components-reconnect-failed",Wo.RejectedClassName="components-reconnect-rejected",Wo.MaxRetriesId="components-reconnect-max-retries",Wo.CurrentAttemptId="components-reconnect-current-attempt";class jo{constructor(e,t,n){this._currentReconnectionProcess=null,this._logger=e,this._reconnectionDisplay=t,this._reconnectCallback=n||vt.reconnect}onConnectionDown(e,t){if(!this._reconnectionDisplay){const t=document.getElementById(e.dialogId);this._reconnectionDisplay=t?new Wo(t,e.maxRetries,document):new Ho(e.dialogId,e.maxRetries,document,this._logger)}this._currentReconnectionProcess||(this._currentReconnectionProcess=new zo(e,this._logger,this._reconnectCallback,this._reconnectionDisplay))}onConnectionUp(){this._currentReconnectionProcess&&(this._currentReconnectionProcess.dispose(),this._currentReconnectionProcess=null)}}class zo{constructor(e,t,n,o){this.logger=t,this.reconnectCallback=n,this.isDisposed=!1,this.reconnectDisplay=o,this.reconnectDisplay.show(),this.attemptPeriodicReconnection(e)}dispose(){this.isDisposed=!0,this.reconnectDisplay.hide()}async attemptPeriodicReconnection(e){for(let t=0;tzo.MaximumFirstRetryInterval?zo.MaximumFirstRetryInterval:e.retryIntervalMilliseconds;if(await this.delay(n),this.isDisposed)break;try{return await this.reconnectCallback()?void 0:void this.reconnectDisplay.rejected()}catch(e){this.logger.log(yt.Error,e)}}this.reconnectDisplay.failed()}delay(e){return new Promise((t=>setTimeout(t,e)))}}zo.MaximumFirstRetryInterval=3e3;class qo{constructor(e=!0,t,n,o=0){this.singleRuntime=e,this.logger=t,this.webRendererId=o,this.afterStartedCallbacks=[],n&&this.afterStartedCallbacks.push(...n)}async importInitializersAsync(e,t){await Promise.all(e.map((e=>async function(e,n){const o=function(e){const t=document.baseURI;return t.endsWith("/")?`${t}${e}`:`${t}/${e}`}(n),r=await import(o);if(void 0!==r){if(e.singleRuntime){const{beforeStart:n,afterStarted:o,beforeWebAssemblyStart:s,afterWebAssemblyStarted:a,beforeServerStart:c,afterServerStarted:l}=r;let h=n;e.webRendererId===Bn.Server&&c&&(h=c),e.webRendererId===Bn.WebAssembly&&s&&(h=s);let d=o;return e.webRendererId===Bn.Server&&l&&(d=l),e.webRendererId===Bn.WebAssembly&&a&&(d=a),i(e,h,d,t)}return function(e,t,n){var r;const s=n[0],{beforeStart:a,afterStarted:c,beforeWebStart:l,afterWebStarted:h,beforeWebAssemblyStart:d,afterWebAssemblyStarted:u,beforeServerStart:p,afterServerStarted:f}=t,g=!(l||h||d||u||p||f||!a&&!c),m=g&&s.enableClassicInitializers;if(g&&!s.enableClassicInitializers)null===(r=e.logger)||void 0===r||r.log(yt.Warning,`Initializer '${o}' will be ignored because multiple runtimes are available. use 'before(web|webAssembly|server)Start' and 'after(web|webAssembly|server)Started?' instead.)`);else if(m)return i(e,a,c,n);if(function(e){e.webAssembly?e.webAssembly.initializers||(e.webAssembly.initializers={beforeStart:[],afterStarted:[]}):e.webAssembly={initializers:{beforeStart:[],afterStarted:[]}},e.circuit?e.circuit.initializers||(e.circuit.initializers={beforeStart:[],afterStarted:[]}):e.circuit={initializers:{beforeStart:[],afterStarted:[]}}}(s),d&&s.webAssembly.initializers.beforeStart.push(d),u&&s.webAssembly.initializers.afterStarted.push(u),p&&s.circuit.initializers.beforeStart.push(p),f&&s.circuit.initializers.afterStarted.push(f),h&&e.afterStartedCallbacks.push(h),l)return l(s)}(e,r,t)}function i(e,t,n,o){if(n&&e.afterStartedCallbacks.push(n),t)return t(...o)}}(this,e))))}async invokeAfterStartedCallbacks(e){const t=function(e){var t;return null===(t=I.get(e))||void 0===t?void 0:t[1]}(this.webRendererId);t&&await t,await Promise.all(this.afterStartedCallbacks.map((t=>t(e))))}}let Jo,Ko,Vo,Xo,Go,Yo,Qo,Zo;function er(e){if(Xo)throw new Error("Circuit options have already been configured.");if(Xo)throw new Error("WebAssembly options have already been configured.");Jo=async function(e){const t=await e;Xo=Fo(t)}(e)}function tr(e){if(void 0!==Yo)throw new Error("Blazor Server has already started.");return Yo=new Promise(nr.bind(null,e)),Yo}async function nr(e,t,n){await Jo;const o=await async function(e){if(e.initializers)return await Promise.all(e.initializers.beforeStart.map((t=>t(e)))),new qo(!1,void 0,e.initializers.afterStarted,Bn.Server);const t=await fetch("http://github.com/_blazor/initializers",{method:"GET",credentials:"include",cache:"no-cache"}),n=await t.json(),o=new qo(!0,void 0,void 0,Bn.Server);return await o.importInitializersAsync(n,[e]),o}(Xo);if(Ko=It(document)||"",Go=new bt(Xo.logLevel),Vo=new Oo(e,Ko,Xo,Go),Go.log(yt.Information,"Starting up Blazor server-side application."),vt.reconnect=async()=>!(Vo.didRenderingFail()||!await Vo.reconnect()&&(Go.log(yt.Information,"Reconnection attempt to the circuit was rejected by the server. This may indicate that the associated state is no longer available on the server."),1)),vt.defaultReconnectionHandler=new jo(Go),Xo.reconnectionHandler=Xo.reconnectionHandler||vt.defaultReconnectionHandler,vt._internal.navigationManager.listenForNavigationEvents(Bn.Server,((e,t,n)=>Vo.sendLocationChanged(e,t,n)),((e,t,n,o)=>Vo.sendLocationChanging(e,t,n,o))),vt._internal.forceCloseConnection=()=>Vo.disconnect(),vt._internal.sendJSDataStream=(e,t,n)=>Vo.sendJsDataStream(e,t,n),!await Vo.start())return Go.log(yt.Error,"Failed to start the circuit."),void t();const r=()=>{Vo.sendDisconnectBeacon()};vt.disconnect=r,window.addEventListener("unload",r,{capture:!1,once:!0}),Go.log(yt.Information,"Blazor server-side application started."),o.invokeAfterStartedCallbacks(vt),t()}async function or(){if(!Yo)throw new Error("Cannot start the circuit until Blazor Server has started.");return!(!Vo||Vo.isDisposedOrDisposing())||(Qo?await Qo:(await Yo,(!Vo||!Vo.didRenderingFail())&&(Vo&&Vo.isDisposedOrDisposing()&&(Ko=It(document)||"",Vo=new Oo(Vo.getRootComponentManager(),Ko,Xo,Go)),Qo=Vo.start(),async function(e){await e,Qo===e&&(Qo=void 0)}(Qo),Qo)))}function rr(e){if(Vo&&!Vo.isDisposedOrDisposing())return Vo.updateRootComponents(e);!async function(e){await Yo,await or()&&Vo.updateRootComponents(e)}(e)}function ir(e){return Zo=e,Zo}var sr,ar;const cr=navigator,lr=cr.userAgentData&&cr.userAgentData.brands,hr=lr&&lr.length>0?lr.some((e=>"Google Chrome"===e.brand||"Microsoft Edge"===e.brand||"Chromium"===e.brand)):window.chrome,dr=null!==(ar=null===(sr=cr.userAgentData)||void 0===sr?void 0:sr.platform)&&void 0!==ar?ar:navigator.platform;function ur(e){return 0!==e.debugLevel&&(hr||navigator.userAgent.includes("Firefox"))}let pr,fr,gr,mr,vr,yr,wr;const br=Math.pow(2,32),_r=Math.pow(2,21)-1;let Sr=null;function Cr(e){return fr.getI32(e)}const Er={load:function(e,t){return async function(e,t){const{dotnet:n}=await async function(e){if("undefined"==typeof WebAssembly||!WebAssembly.validate)throw new Error("This browser does not support WebAssembly.");let t="_framework/dotnet.js";if(e.loadBootResource){const n="dotnetjs",o=e.loadBootResource(n,"dotnet.js",t,"","js-module-dotnet");if("string"==typeof o)t=o;else if(o)throw new Error(`For a ${n} resource, custom loaders must supply a URI string.`)}const n=new URL(t,document.baseURI).toString();return await import(n)}(e),o=function(e,t){const n={maxParallelDownloads:1e6,enableDownloadRetry:!1,applicationEnvironment:e.environment},o={...window.Module||{},onConfigLoaded:async n=>{n.environmentVariables||(n.environmentVariables={}),"sharded"===n.globalizationMode&&(n.environmentVariables.__BLAZOR_SHARDED_ICU="1"),vt._internal.getApplicationEnvironment=()=>n.applicationEnvironment,null==t||t(n),wr=await async function(e,t){var n,o,r;if(e.initializers)return await Promise.all(e.initializers.beforeStart.map((t=>t(e)))),new qo(!1,void 0,e.initializers.afterStarted,Bn.WebAssembly);{const i=[e,null!==(o=null===(n=t.resources)||void 0===n?void 0:n.extensions)&&void 0!==o?o:{}],s=new qo(!0,void 0,void 0,Bn.WebAssembly),a=Object.keys((null===(r=null==t?void 0:t.resources)||void 0===r?void 0:r.libraryInitializers)||{});return await s.importInitializersAsync(a,i),s}}(e,n)},onDownloadResourceProgress:Ir,config:n,disableDotnet6Compatibility:!1,out:Tr,err:Rr};return o}(e,t);e.applicationCulture&&n.withApplicationCulture(e.applicationCulture),e.environment&&n.withApplicationEnvironment(e.environment),e.loadBootResource&&n.withResourceLoader(e.loadBootResource),n.withModuleConfig(o),e.configureRuntime&&e.configureRuntime(n),yr=await n.create()}(e,t)},start:function(){return async function(){if(!yr)throw new Error("The runtime must be loaded it gets configured.");const{MONO:t,BINDING:n,Module:o,setModuleImports:r,INTERNAL:i,getConfig:s,invokeLibraryInitializers:a}=yr;gr=o,pr=n,fr=t,vr=i,function(e){const t=dr.match(/^Mac/i)?"Cmd":"Alt";ur(e)&&console.info(`Debugging hotkey: Shift+${t}+D (when application has focus)`),document.addEventListener("keydown",(t=>{t.shiftKey&&(t.metaKey||t.altKey)&&"KeyD"===t.code&&(ur(e)?navigator.userAgent.includes("Firefox")?async function(){const e=await fetch(`_framework/debug?url=${encodeURIComponent(location.href)}&isFirefox=true`);200!==e.status&&console.warn(await e.text())}():hr?function(){const e=document.createElement("a");e.href=`_framework/debug?url=${encodeURIComponent(location.href)}`,e.target="_blank",e.rel="noopener noreferrer",e.click()}():console.error("Currently, only Microsoft Edge (80+), Google Chrome, or Chromium, are supported for debugging."):console.error("Cannot start debugging, because the application was not compiled with debugging enabled."))}))}(s()),vt.runtime=yr,vt._internal.dotNetCriticalError=Rr,r("blazor-internal",{Blazor:{_internal:vt._internal}});const c=await yr.getAssemblyExports("Microsoft.AspNetCore.Components.WebAssembly");return Object.assign(vt._internal,{dotNetExports:{...c.Microsoft.AspNetCore.Components.WebAssembly.Services.DefaultWebAssemblyJSRuntime}}),mr=e.attachDispatcher({beginInvokeDotNetFromJS:(e,t,n,o,r)=>{if(Dr(),!o&&!t)throw new Error("Either assemblyName or dotNetObjectId must have a non null value.");const i=o?o.toString():t;vt._internal.dotNetExports.BeginInvokeDotNet(e?e.toString():null,i,n,r)},endInvokeJSFromDotNet:(e,t,n)=>{vt._internal.dotNetExports.EndInvokeJS(n)},sendByteArray:(e,t)=>{vt._internal.dotNetExports.ReceiveByteArrayFromJS(e,t)},invokeDotNetFromJS:(e,t,n,o)=>(Dr(),vt._internal.dotNetExports.InvokeDotNet(e||null,t,null!=n?n:0,o))}),{invokeLibraryInitializers:a}}()},callEntryPoint:async function(){try{await yr.runMain(yr.getConfig().mainAssemblyName,[])}catch(e){console.error(e),Bo()}},toUint8Array:function(e){const t=Ar(e),n=Cr(t),o=new Uint8Array(n);return o.set(gr.HEAPU8.subarray(t+4,t+4+n)),o},getArrayLength:function(e){return Cr(Ar(e))},getArrayEntryPtr:function(e,t,n){return Ar(e)+4+t*n},getObjectFieldsBaseAddress:function(e){return e+8},readInt16Field:function(e,t){return n=e+(t||0),fr.getI16(n);var n},readInt32Field:function(e,t){return Cr(e+(t||0))},readUint64Field:function(e,t){return function(e){const t=e>>2,n=gr.HEAPU32[t+1];if(n>_r)throw new Error(`Cannot read uint64 with high order part ${n}, because the result would exceed Number.MAX_SAFE_INTEGER.`);return n*br+gr.HEAPU32[t]}(e+(t||0))},readFloatField:function(e,t){return n=e+(t||0),fr.getF32(n);var n},readObjectField:function(e,t){return Cr(e+(t||0))},readStringField:function(e,t,n){const o=Cr(e+(t||0));if(0===o)return null;if(n){const e=pr.unbox_mono_obj(o);return"boolean"==typeof e?e?"":null:e}return pr.conv_string(o)},readStructField:function(e,t){return e+(t||0)},beginHeapLock:function(){return Dr(),Sr=xr.create(),Sr},invokeWhenHeapUnlocked:function(e){Sr?Sr.enqueuePostReleaseAction(e):e()}};function Ir(e,t){const n=e/t*100;document.documentElement.style.setProperty("--blazor-load-percentage",`${n}%`),document.documentElement.style.setProperty("--blazor-load-percentage-text",`"${Math.floor(n)}%"`)}const kr=["DEBUGGING ENABLED"],Tr=e=>kr.indexOf(e)<0&&console.log(e),Rr=e=>{console.error(e||"(null)"),Bo()};function Ar(e){return e+12}function Dr(){if(Sr)throw new Error("Assertion failed - heap is currently locked")}class xr{enqueuePostReleaseAction(e){this.postReleaseActions||(this.postReleaseActions=[]),this.postReleaseActions.push(e)}release(){var e;if(Sr!==this)throw new Error("Trying to release a lock which isn't current");for(vr.mono_wasm_gc_unlock(),Sr=null;null===(e=this.postReleaseActions)||void 0===e?void 0:e.length;)this.postReleaseActions.shift()(),Dr()}static create(){return vr.mono_wasm_gc_lock(),new xr}}class Nr{constructor(e){this.batchAddress=e,this.arrayRangeReader=Pr,this.arrayBuilderSegmentReader=Mr,this.diffReader=Ur,this.editReader=Lr,this.frameReader=Br}updatedComponents(){return Zo.readStructField(this.batchAddress,0)}referenceFrames(){return Zo.readStructField(this.batchAddress,Pr.structLength)}disposedComponentIds(){return Zo.readStructField(this.batchAddress,2*Pr.structLength)}disposedEventHandlerIds(){return Zo.readStructField(this.batchAddress,3*Pr.structLength)}updatedComponentsEntry(e,t){return Or(e,t,Ur.structLength)}referenceFramesEntry(e,t){return Or(e,t,Br.structLength)}disposedComponentIdsEntry(e,t){const n=Or(e,t,4);return Zo.readInt32Field(n)}disposedEventHandlerIdsEntry(e,t){const n=Or(e,t,8);return Zo.readUint64Field(n)}}const Pr={structLength:8,values:e=>Zo.readObjectField(e,0),count:e=>Zo.readInt32Field(e,4)},Mr={structLength:12,values:e=>{const t=Zo.readObjectField(e,0),n=Zo.getObjectFieldsBaseAddress(t);return Zo.readObjectField(n,0)},offset:e=>Zo.readInt32Field(e,4),count:e=>Zo.readInt32Field(e,8)},Ur={structLength:4+Mr.structLength,componentId:e=>Zo.readInt32Field(e,0),edits:e=>Zo.readStructField(e,4),editsEntry:(e,t)=>Or(e,t,Lr.structLength)},Lr={structLength:20,editType:e=>Zo.readInt32Field(e,0),siblingIndex:e=>Zo.readInt32Field(e,4),newTreeIndex:e=>Zo.readInt32Field(e,8),moveToSiblingIndex:e=>Zo.readInt32Field(e,8),removedAttributeName:e=>Zo.readStringField(e,16)},Br={structLength:36,frameType:e=>Zo.readInt16Field(e,4),subtreeLength:e=>Zo.readInt32Field(e,8),elementReferenceCaptureId:e=>Zo.readStringField(e,16),componentId:e=>Zo.readInt32Field(e,12),elementName:e=>Zo.readStringField(e,16),textContent:e=>Zo.readStringField(e,16),markupContent:e=>Zo.readStringField(e,16),attributeName:e=>Zo.readStringField(e,16),attributeValue:e=>Zo.readStringField(e,24,!0),attributeEventHandlerId:e=>Zo.readUint64Field(e,8)};function Or(e,t,n){return Zo.getArrayEntryPtr(e,t,n)}class Fr{constructor(e){this.componentManager=e}resolveRegisteredElement(e){const t=Number.parseInt(e);if(!Number.isNaN(t))return H(this.componentManager.resolveRootComponent(t))}getParameterValues(e){return this.componentManager.initialComponents[e].parameterValues}getParameterDefinitions(e){return this.componentManager.initialComponents[e].parameterDefinitions}getTypeName(e){return this.componentManager.initialComponents[e].typeName}getAssembly(e){return this.componentManager.initialComponents[e].assembly}getCount(){return this.componentManager.initialComponents.length}}let $r,Hr,Wr,jr,zr,qr=!1,Jr=!1,Kr=!0,Vr=!1;const Xr=new Promise((e=>{zr=e}));let Gr;const Yr=new Promise((e=>{Gr=e}));let Qr;function Zr(e){if(void 0!==jr)throw new Error("Blazor WebAssembly has already started.");return jr=new Promise(ei.bind(null,e)),jr}async function ei(e,t,n){(function(){if(window.parent!==window&&!window.opener&&window.frameElement){const e=window.sessionStorage&&window.sessionStorage["Microsoft.AspNetCore.Components.WebAssembly.Authentication.CachedAuthSettings"],t=e&&JSON.parse(e);return t&&t.redirect_uri&&location.href.startsWith(t.redirect_uri)}return!1})()&&await new Promise((()=>{}));const o=ti();!function(e){const t=D;D=(e,n,o)=>{((e,t,n)=>{const o=De(e);(null==o?void 0:o.eventDelegator.getHandler(t))&&Er.invokeWhenHeapUnlocked(n)})(e,n,(()=>t(e,n,o)))}}(),vt._internal.applyHotReload=(e,t,n,o)=>{mr.invokeDotNetStaticMethod("Microsoft.AspNetCore.Components.WebAssembly","ApplyHotReloadDelta",e,t,n,o)},vt._internal.getApplyUpdateCapabilities=()=>mr.invokeDotNetStaticMethod("Microsoft.AspNetCore.Components.WebAssembly","GetApplyUpdateCapabilities"),vt._internal.invokeJSFromDotNet=oi,vt._internal.invokeJSJson=ri,vt._internal.endInvokeDotNetFromJS=ii,vt._internal.receiveWebAssemblyDotNetDataStream=si,vt._internal.receiveByteArray=ai;const r=ir(Er);vt.platform=r,vt._internal.renderBatch=(e,t)=>{const n=Er.beginHeapLock();try{xe(e,new Nr(t))}finally{n.release()}},vt._internal.navigationManager.listenForNavigationEvents(Bn.WebAssembly,(async(e,t,n)=>{await mr.invokeDotNetStaticMethodAsync("Microsoft.AspNetCore.Components.WebAssembly","NotifyLocationChanged",e,t,n)}),(async(e,t,n,o)=>{const r=await mr.invokeDotNetStaticMethodAsync("Microsoft.AspNetCore.Components.WebAssembly","NotifyLocationChangingAsync",t,n,o);vt._internal.navigationManager.endLocationChanging(e,r)}));const i=new Fr(e);let s;vt._internal.registeredComponents={getRegisteredComponentsCount:()=>i.getCount(),getAssembly:e=>i.getAssembly(e),getTypeName:e=>i.getTypeName(e),getParameterDefinitions:e=>i.getParameterDefinitions(e)||"",getParameterValues:e=>i.getParameterValues(e)||""},vt._internal.getPersistedState=()=>kt(document,Ct)||"",vt._internal.getInitialComponentsUpdate=()=>Yr,vt._internal.updateRootComponents=e=>{var t;return null===(t=vt._internal.dotNetExports)||void 0===t?void 0:t.UpdateRootComponentsCore(e)},vt._internal.endUpdateRootComponents=t=>{var n;return null===(n=e.onAfterUpdateRootComponents)||void 0===n?void 0:n.call(e,t)},vt._internal.attachRootComponentToElement=(e,t,n)=>{const o=i.resolveRegisteredElement(e);o?Ae(n,o,t,!1):function(e,t,n){const o="::before";let r=!1;if(e.endsWith("::after"))e=e.slice(0,-7),r=!0;else if(e.endsWith(o))throw new Error(`The '${o}' selector is not supported.`);const i=w(e)||document.querySelector(e);if(!i)throw new Error(`Could not find any element matching selector '${e}'.`);Ae(n,W(i,!0),t,r)}(e,t,n)};try{await o,s=await r.start()}catch(e){throw new Error(`Failed to start platform. Reason: ${e}`)}r.callEntryPoint(),wr.invokeAfterStartedCallbacks(vt),Jr=!0,t()}function ti(){return null!=Wr||(Wr=(async()=>{await Hr;const e=null!=$r?$r:{},t=null==$r?void 0:$r.configureRuntime;e.configureRuntime=e=>{null==t||t(e),Vr&&e.withEnvironmentVariable("__BLAZOR_WEBASSEMBLY_WAIT_FOR_ROOT_COMPONENTS","true")},await Er.load(e,zr),qr=!0})()),Wr}function ni(){return qr}function oi(t,n,o,r){const i=Er.readStringField(t,0),s=Er.readInt32Field(t,4),a=Er.readStringField(t,8),c=Er.readUint64Field(t,20);if(null!==a){const e=Er.readUint64Field(t,12);if(0!==e)return mr.beginInvokeJSFromDotNet(e,i,a,s,c),0;{const e=mr.invokeJSFromDotNet(i,a,s,c);return null===e?0:pr.js_string_to_mono_string(e)}}{const t=e.findJSFunction(i,c).call(null,n,o,r);switch(s){case e.JSCallResultType.Default:return t;case e.JSCallResultType.JSObjectReference:return e.createJSObjectReference(t).__jsObjectId;case e.JSCallResultType.JSStreamReference:{const n=e.createJSStreamReference(t),o=JSON.stringify(n);return pr.js_string_to_mono_string(o)}case e.JSCallResultType.JSVoidResult:return null;default:throw new Error(`Invalid JS call result type '${s}'.`)}}}function ri(e,t,n,o,r){return 0!==r?(mr.beginInvokeJSFromDotNet(r,e,o,n,t),null):mr.invokeJSFromDotNet(e,o,n,t)}function ii(e,t,n){mr.endInvokeDotNetFromJS(e,t,n)}function si(e,t,n,o){!function(e,t,n,o,r){let i=mt.get(t);if(!i){const n=new ReadableStream({start(e){mt.set(t,e),i=e}});e.supplyDotNetStream(t,n)}r?(i.error(r),mt.delete(t)):0===o?(i.close(),mt.delete(t)):i.enqueue(n.length===o?n:n.subarray(0,o))}(mr,e,t,n,o)}function ai(e,t){mr.receiveByteArray(e,t)}function ci(e,t){t.namespaceURI?e.setAttributeNS(t.namespaceURI,t.name,t.value):e.setAttribute(t.name,t.value)}Hr=new Promise((e=>{Qr=e}));const li="data-permanent";var hi,di;!function(e){e[e.None=0]="None",e[e.Some=1]="Some",e[e.Infinite=2]="Infinite"}(hi||(hi={})),function(e){e.Keep="keep",e.Update="update",e.Insert="insert",e.Delete="delete"}(di||(di={}));class ui{static create(e,t,n){return 0===t&&n===e.length?e:new ui(e,t,n)}constructor(e,t,n){this.source=e,this.startIndex=t,this.length=n}item(e){return this.source.item(e+this.startIndex)}forEach(e,t){for(let t=0;t=n&&s>=o&&r(e.item(i),t.item(s))===hi.None;)i--,s--,a++;return a}(e,t,o,o,n),i=function(e){var t;const n=[];let o=e.length-1,r=(null===(t=e[o])||void 0===t?void 0:t.length)-1;for(;o>0||r>0;){const t=0===o?di.Insert:0===r?di.Delete:e[o][r];switch(n.unshift(t),t){case di.Keep:case di.Update:o--,r--;break;case di.Insert:r--;break;case di.Delete:o--}}return n}(function(e,t,n){const o=[],r=[],i=e.length,s=t.length;if(0===i&&0===s)return[];for(let e=0;e<=i;e++)(o[e]=Array(s+1))[0]=e,r[e]=Array(s+1);const a=o[0];for(let e=1;e<=s;e++)a[e]=e;for(let a=1;a<=i;a++)for(let i=1;i<=s;i++){const s=n(e.item(a-1),t.item(i-1)),c=o[a-1][i]+1,l=o[a][i-1]+1;let h;switch(s){case hi.None:h=o[a-1][i-1];break;case hi.Some:h=o[a-1][i-1]+1;break;case hi.Infinite:h=Number.MAX_VALUE}h{history.pushState(null,"",e),Ui(e,!0)}))}function Pi(e){Oe()||Ui(location.href,!1)}function Mi(e){var t,n,o,r,i;if(Oe()||e.defaultPrevented)return;const s=e.target;if(s instanceof HTMLFormElement){if(!function(e){const t=e.getAttribute("data-enhance");return"string"==typeof t&&""===t||"true"===(null==t?void 0:t.toLowerCase())}(s))return;const a=(null===(t=e.submitter)||void 0===t?void 0:t.getAttribute("formmethod"))||s.method;if("dialog"===a)return void console.warn('A form cannot be enhanced when its method is "dialog".');const c=(null===(n=e.submitter)||void 0===n?void 0:n.getAttribute("formtarget"))||s.target;if(""!==c&&"_self"!==c)return void console.warn('A form cannot be enhanced when its target is different from the default value "_self".');e.preventDefault();const l=new URL((null===(o=e.submitter)||void 0===o?void 0:o.getAttribute("formaction"))||s.action,document.baseURI),h={method:a},d=new FormData(s),u=null===(r=e.submitter)||void 0===r?void 0:r.getAttribute("name"),p=e.submitter.getAttribute("value");u&&p&&d.append(u,p);const f=new URLSearchParams(d).toString();if("get"===h.method)l.search=f,history.pushState(null,"",l.toString());else{const t=(null===(i=e.submitter)||void 0===i?void 0:i.getAttribute("formenctype"))||s.enctype;"multipart/form-data"===t?h.body=d:(h.body=f,h.headers={"content-type":t,accept:Ii})}Ui(l.toString(),!1,h)}}async function Ui(e,t,n){Ri=!0,null==ki||ki.abort(),function(e,t){null==ke||ke(e,t)}(e,t),ki=new AbortController;const o=ki.signal,r=fetch(e,Object.assign({signal:o,mode:"no-cors",headers:{accept:Ii}},n));let i=null;if(await async function(e,t,n,o){let r;try{if(r=await e,!r.body)return void n(r,"");const t=r.headers.get("ssr-framing");if(!t){const e=await r.text();return void n(r,e)}let o=!0;await r.body.pipeThrough(new TextDecoderStream).pipeThrough(function(e){let t="";return new TransformStream({transform(n,o){if(t+=n,t.indexOf(e,t.length-n.length-e.length)>=0){const n=t.split(e);n.slice(0,-1).forEach((e=>o.enqueue(e))),t=n[n.length-1]}},flush(e){e.enqueue(t)}})}(`\x3c!--${t}--\x3e`)).pipeTo(new WritableStream({write(e){o?(o=!1,n(r,e)):(e=>{const t=document.createRange().createContextualFragment(e);for(;t.firstChild;)document.body.appendChild(t.firstChild)})(e)}}))}catch(e){if("AbortError"===e.name&&t.aborted)return;throw e}}(r,o,((t,o)=>{const r=!(null==n?void 0:n.method)||"get"===n.method,s=t.status>=200&&t.status<300;if("opaque"===t.type){if(r)return void Bi(e);throw new Error("Enhanced navigation does not support making a non-GET request to an endpoint that redirects to an external origin. Avoid enabling enhanced navigation for form posts that may perform external redirections.")}if(s&&"allow"!==t.headers.get("blazor-enhanced-nav")){if(r)return void Bi(e);throw new Error("Enhanced navigation does not support making a non-GET request to a non-Blazor endpoint. Avoid enabling enhanced navigation for forms that post to a non-Blazor endpoint.")}t.redirected&&(r?history.replaceState(null,"",t.url):t.url!==location.href&&history.pushState(null,"",t.url),e=t.url);const a=t.headers.get("blazor-enhanced-nav-redirect-location");if(a)return void location.replace(a);t.redirected||r||!s||(function(e){const t=new URL(e.url),n=new URL(Ai);return t.protocol===n.protocol&&t.host===n.host&&t.port===n.port&&t.pathname===n.pathname}(t)?location.href!==Ai&&history.pushState(null,"",Ai):i=`Cannot perform enhanced form submission that changes the URL (except via a redirection), because then back/forward would not work. Either remove this form's 'action' attribute, or change its method to 'get', or do not mark it as enhanced.\nOld URL: ${location.href}\nNew URL: ${t.url}`),Ai=t.url;const c=t.headers.get("content-type");if((null==c?void 0:c.startsWith("text/html"))&&o){const e=(new DOMParser).parseFromString(o,"text/html");fi(document,e),Ti.documentUpdated()}else(null==c?void 0:c.startsWith("text/"))&&o?Li(o):s||o?r?Bi(e):Li(`Error: ${n.method} request to ${e} returned non-HTML content of type ${c||"unspecified"}.`):Li(`Error: ${t.status} ${t.statusText}`)})),!o.aborted){const t=e.indexOf("#");if(t>=0){const n=e.substring(t+1),o=document.getElementById(n);null==o||o.scrollIntoView()}if(Ri=!1,Ti.enhancedNavigationCompleted(),i)throw new Error(i)}}function Li(e){document.documentElement.textContent=e;const t=document.documentElement.style;t.fontFamily="consolas, monospace",t.whiteSpace="pre-wrap",t.padding="1rem"}function Bi(e){history.replaceState(null,"",e+"?"),location.replace(e)}let Oi,Fi=!0;class $i extends HTMLElement{connectedCallback(){var e;const t=this.parentNode;null===(e=t.parentNode)||void 0===e||e.removeChild(t),t.childNodes.forEach((e=>{if(e instanceof HTMLTemplateElement){const t=e.getAttribute("blazor-component-id");if(t)"true"!==e.getAttribute("enhanced-nav")&&ki||function(e,t){const n=function(e){const t=`bl:${e}`,n=document.createNodeIterator(document,NodeFilter.SHOW_COMMENT);let o=null;for(;(o=n.nextNode())&&o.textContent!==t;);if(!o)return null;const r=`/bl:${e}`;let i=null;for(;(i=n.nextNode())&&i.textContent!==r;);return i?{startMarker:o,endMarker:i}:null}(e);if(n){const{startMarker:e,endMarker:o}=n;if(Fi)fi({startExclusive:e,endExclusive:o},t);else{const n=o.parentNode,r=new Range;for(r.setStart(e,e.textContent.length),r.setEnd(o,0),r.deleteContents();t.childNodes[0];)n.insertBefore(t.childNodes[0],o)}Oi.documentUpdated()}}(t,e.content);else switch(e.getAttribute("type")){case"redirection":const t=Le(e.content.textContent),n="form-post"===e.getAttribute("from");"true"===e.getAttribute("enhanced")&&Pe(t)?(n?history.pushState(null,"",t):history.replaceState(null,"",t),Ui(t,!1)):n?location.assign(t):location.replace(t);break;case"error":Li(e.content.textContent||"Error")}}}))}}class Hi{constructor(e){var t;this._circuitInactivityTimeoutMs=e,this._rootComponentsBySsrComponentId=new Map,this._seenDescriptors=new Set,this._pendingOperationBatches={},this._nextOperationBatchId=1,this._nextSsrComponentId=1,this._didWebAssemblyFailToLoadQuickly=!1,this._isComponentRefreshPending=!1,this.initialComponents=[],t=()=>{this.rootComponentsMayRequireRefresh()},E.push(t)}onAfterRenderBatch(e){e===Bn.Server&&this.circuitMayHaveNoRootComponents()}onDocumentUpdated(){this.rootComponentsMayRequireRefresh()}onEnhancedNavigationCompleted(){this.rootComponentsMayRequireRefresh()}registerComponent(e){if(this._seenDescriptors.has(e))return;"auto"!==e.type&&"webassembly"!==e.type||this.startLoadingWebAssemblyIfNotStarted();const t=this._nextSsrComponentId++;this._seenDescriptors.add(e),this._rootComponentsBySsrComponentId.set(t,{descriptor:e,ssrComponentId:t})}unregisterComponent(e){this._seenDescriptors.delete(e.descriptor),this._rootComponentsBySsrComponentId.delete(e.ssrComponentId),this.circuitMayHaveNoRootComponents()}async startLoadingWebAssemblyIfNotStarted(){if(void 0!==Wr)return;Vr=!0;const e=ti();setTimeout((()=>{ni()||this.onWebAssemblyFailedToLoadQuickly()}),vt._internal.loadWebAssemblyQuicklyTimeout);const t=await Xr;(function(e){if(!e.cacheBootResources)return!1;const t=Wi(e);if(!t)return!1;const n=window.localStorage.getItem(t.key);return t.value===n})(t)||this.onWebAssemblyFailedToLoadQuickly(),await e,function(e){const t=Wi(e);t&&window.localStorage.setItem(t.key,t.value)}(t),this.rootComponentsMayRequireRefresh()}onWebAssemblyFailedToLoadQuickly(){this._didWebAssemblyFailToLoadQuickly||(this._didWebAssemblyFailToLoadQuickly=!0,this.rootComponentsMayRequireRefresh())}startCircutIfNotStarted(){return void 0===Yo?tr(this):!Vo||Vo.isDisposedOrDisposing()?or():void 0}async startWebAssemblyIfNotStarted(){this.startLoadingWebAssemblyIfNotStarted(),void 0===jr&&await Zr(this)}rootComponentsMayRequireRefresh(){this._isComponentRefreshPending||(this._isComponentRefreshPending=!0,setTimeout((()=>{this._isComponentRefreshPending=!1,this.refreshRootComponents(this._rootComponentsBySsrComponentId.values())}),0))}circuitMayHaveNoRootComponents(){if(this.rendererHasExistingOrPendingComponents(Bn.Server,"server","auto"))return clearTimeout(this._circuitInactivityTimeoutId),void(this._circuitInactivityTimeoutId=void 0);void 0===this._circuitInactivityTimeoutId&&(this._circuitInactivityTimeoutId=setTimeout((()=>{this.rendererHasExistingOrPendingComponents(Bn.Server,"server","auto")||(async function(){await(null==Vo?void 0:Vo.dispose())}(),this._circuitInactivityTimeoutId=void 0)}),this._circuitInactivityTimeoutMs))}rendererHasComponents(e){const t=De(e);return void 0!==t&&t.getRootComponentCount()>0}rendererHasExistingOrPendingComponents(e,...t){if(this.rendererHasComponents(e))return!0;for(const{descriptor:{type:n},assignedRendererId:o}of this._rootComponentsBySsrComponentId.values()){if(o===e)return!0;if(void 0===o&&-1!==t.indexOf(n))return!0}return!1}refreshRootComponents(e){const t=new Map;for(const n of e){const e=this.determinePendingOperation(n);if(!e)continue;const o=n.assignedRendererId;if(!o)throw new Error("Descriptors must be assigned a renderer ID before getting used as root components");let r=t.get(o);r||(r=[],t.set(o,r)),r.push(e)}for(const[e,n]of t){const t={batchId:this._nextOperationBatchId++,operations:n};this._pendingOperationBatches[t.batchId]=t;const o=JSON.stringify(t);e===Bn.Server?rr(o):this.updateWebAssemblyRootComponents(o)}}updateWebAssemblyRootComponents(e){Kr?(Gr(e),Kr=!1):function(e){if(!jr)throw new Error("Blazor WebAssembly has not started.");if(!vt._internal.updateRootComponents)throw new Error("Blazor WebAssembly has not initialized.");Jr?vt._internal.updateRootComponents(e):async function(e){if(await jr,!vt._internal.updateRootComponents)throw new Error("Blazor WebAssembly has not initialized.");vt._internal.updateRootComponents(e)}(e)}(e)}resolveRendererIdForDescriptor(e){switch("auto"===e.type?this.getAutoRenderMode():e.type){case"server":return this.startCircutIfNotStarted(),Bn.Server;case"webassembly":return this.startWebAssemblyIfNotStarted(),Bn.WebAssembly;case null:return null}}getAutoRenderMode(){return this.rendererHasExistingOrPendingComponents(Bn.WebAssembly,"webassembly")?"webassembly":this.rendererHasExistingOrPendingComponents(Bn.Server,"server")?"server":ni()?"webassembly":this._didWebAssemblyFailToLoadQuickly?"server":null}determinePendingOperation(e){if(t=e.descriptor,document.contains(t.start)){if(void 0===e.assignedRendererId){if(Ri||"loading"===document.readyState)return null;const t=this.resolveRendererIdForDescriptor(e.descriptor);return null===t?null:T(t)?(be(e.descriptor.start,!0),e.assignedRendererId=t,e.uniqueIdAtLastUpdate=e.descriptor.uniqueId,{type:"add",ssrComponentId:e.ssrComponentId,marker:Ut(e.descriptor)}):null}return T(e.assignedRendererId)?e.uniqueIdAtLastUpdate===e.descriptor.uniqueId?null:(e.uniqueIdAtLastUpdate=e.descriptor.uniqueId,{type:"update",ssrComponentId:e.ssrComponentId,marker:Ut(e.descriptor)}):null}return e.hasPendingRemoveOperation?null:void 0===e.assignedRendererId?(this.unregisterComponent(e),null):T(e.assignedRendererId)?(be(e.descriptor.start,!1),e.hasPendingRemoveOperation=!0,{type:"remove",ssrComponentId:e.ssrComponentId}):null;var t}resolveRootComponent(e){const t=this._rootComponentsBySsrComponentId.get(e);if(!t)throw new Error(`Could not resolve a root component with SSR component ID '${e}'.`);return t.descriptor}onAfterUpdateRootComponents(e){const t=this._pendingOperationBatches[e];delete this._pendingOperationBatches[e];for(const e of t.operations)switch(e.type){case"remove":{const t=this._rootComponentsBySsrComponentId.get(e.ssrComponentId);t&&this.unregisterComponent(t);break}}}}function Wi(e){var t;const n=null===(t=e.resources)||void 0===t?void 0:t.hash,o=e.mainAssemblyName;return n&&o?{key:`blazor-resource-hash:${o}`,value:n}:null}class ji{constructor(){this._eventListeners=new Map}static create(e){const t=new ji;return e.addEventListener=t.addEventListener.bind(t),e.removeEventListener=t.removeEventListener.bind(t),t}addEventListener(e,t){let n=this._eventListeners.get(e);n||(n=new Set,this._eventListeners.set(e,n)),n.add(t)}removeEventListener(e,t){var n;null===(n=this._eventListeners.get(e))||void 0===n||n.delete(t)}dispatchEvent(e,t){const n=this._eventListeners.get(e);if(!n)return;const o={...t,type:e};for(const e of n)e(o)}}let zi,qi=!1;function Ji(e){var t,n,o,r;if(qi)throw new Error("Blazor has already started.");qi=!0,null!==(t=(e=e||{}).logLevel)&&void 0!==t||(e.logLevel=yt.Error),vt._internal.loadWebAssemblyQuicklyTimeout=3e3,vt._internal.isBlazorWeb=!0,vt._internal.hotReloadApplied=()=>{Me()&&Ue(location.href,!0)},zi=new Hi(null!==(o=null===(n=null==e?void 0:e.ssr)||void 0===n?void 0:n.circuitInactivityTimeoutMs)&&void 0!==o?o:2e3);const i=ji.create(vt),s={documentUpdated:()=>{zi.onDocumentUpdated(),i.dispatchEvent("enhancedload",{})},enhancedNavigationCompleted(){zi.onEnhancedNavigationCompleted()}};return pi=zi,function(e,t){Oi=t,(null==e?void 0:e.disableDomPreservation)&&(Fi=!1),customElements.define("blazor-ssr-end",$i)}(null==e?void 0:e.ssr,s),(null===(r=null==e?void 0:e.ssr)||void 0===r?void 0:r.disableDomPreservation)||Di(s),"loading"===document.readyState?document.addEventListener("DOMContentLoaded",Ki.bind(null,e)):Ki(e),Promise.resolve()}function Ki(e){const t=Fo((null==e?void 0:e.circuit)||{});e.circuit=t;const n=async function(e,t){var n;const o=kt(document,Et,"initializers");if(!o)return new qo(!1,t);const r=null!==(n=JSON.parse(atob(o)))&&void 0!==n?n:[],i=new qo(!1,t);return await i.importInitializersAsync(r,[e]),i}(e,new bt(t.logLevel));er(Vi(n,t)),function(e){if($r)throw new Error("WebAssembly options have already been configured.");!async function(e){const t=await e;$r=t,Qr()}(e)}(Vi(n,(null==e?void 0:e.webAssembly)||{})),function(e){const t=bi(document);for(const e of t)null==pi||pi.registerComponent(e)}(),zi.onDocumentUpdated(),async function(e){const t=await e;await t.invokeAfterStartedCallbacks(vt)}(n)}async function Vi(e,t){return await e,t}vt.start=Ji,window.DotNet=e,document&&document.currentScript&&"false"!==document.currentScript.getAttribute("autostart")&&Ji()})()})(); \ No newline at end of file diff --git a/src/Components/Web.JS/dist/Release/blazor.webview.js b/src/Components/Web.JS/dist/Release/blazor.webview.js index afc283f9f223..dc5b70f9e1f4 100644 --- a/src/Components/Web.JS/dist/Release/blazor.webview.js +++ b/src/Components/Web.JS/dist/Release/blazor.webview.js @@ -1 +1 @@ -(()=>{"use strict";var e,t,n,r={d:(e,t)=>{for(var n in t)r.o(t,n)&&!r.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t)};r.d({},{e:()=>Ot}),function(e){const t=[],n="__jsObjectId",r="__dotNetObject",o="__byte[]",a="__dotNetStream",i="__jsStreamReferenceLength";let s,c;class l{constructor(e){this._jsObject=e,this._cachedFunctions=new Map}findFunction(e){const t=this._cachedFunctions.get(e);if(t)return t;let n,r=this._jsObject;if(e.split(".").forEach((t=>{if(!(t in r))throw new Error(`Could not find '${e}' ('${t}' was undefined).`);n=r,r=r[t]})),r instanceof Function)return r=r.bind(n),this._cachedFunctions.set(e,r),r;throw new Error(`The value '${e}' is not a function.`)}getWrappedObject(){return this._jsObject}}const u={0:new l(window)};u[0]._cachedFunctions.set("import",(e=>("string"==typeof e&&e.startsWith("./")&&(e=new URL(e.substr(2),document.baseURI).toString()),import(e))));let d,h=1;function f(e){t.push(e)}function m(e){if(e&&"object"==typeof e){u[h]=new l(e);const t={[n]:h};return h++,t}throw new Error(`Cannot create a JSObjectReference from the value '${e}'.`)}function p(e){let t=-1;if(e instanceof ArrayBuffer&&(e=new Uint8Array(e)),e instanceof Blob)t=e.size;else{if(!(e.buffer instanceof ArrayBuffer))throw new Error("Supplied value is not a typed array or blob.");if(void 0===e.byteLength)throw new Error(`Cannot create a JSStreamReference from the value '${e}' as it doesn't have a byteLength.`);t=e.byteLength}const r={[i]:t};try{const t=m(e);r[n]=t[n]}catch(t){throw new Error(`Cannot create a JSStreamReference from the value '${e}'.`)}return r}function b(e,n){c=e;const r=n?JSON.parse(n,((e,n)=>t.reduce(((t,n)=>n(e,t)),n))):null;return c=void 0,r}function v(){if(void 0===s)throw new Error("No call dispatcher has been set.");if(null===s)throw new Error("There are multiple .NET runtimes present, so a default dispatcher could not be resolved. Use DotNetObject to invoke .NET instance methods.");return s}e.attachDispatcher=function(e){const t=new g(e);return void 0===s?s=t:s&&(s=null),t},e.attachReviver=f,e.invokeMethod=function(e,t,...n){return v().invokeDotNetStaticMethod(e,t,...n)},e.invokeMethodAsync=function(e,t,...n){return v().invokeDotNetStaticMethodAsync(e,t,...n)},e.createJSObjectReference=m,e.createJSStreamReference=p,e.disposeJSObjectReference=function(e){const t=e&&e[n];"number"==typeof t&&E(t)},function(e){e[e.Default=0]="Default",e[e.JSObjectReference=1]="JSObjectReference",e[e.JSStreamReference=2]="JSStreamReference",e[e.JSVoidResult=3]="JSVoidResult"}(d=e.JSCallResultType||(e.JSCallResultType={}));class g{constructor(e){this._dotNetCallDispatcher=e,this._byteArraysToBeRevived=new Map,this._pendingDotNetToJSStreams=new Map,this._pendingAsyncCalls={},this._nextAsyncCallId=1}getDotNetCallDispatcher(){return this._dotNetCallDispatcher}invokeJSFromDotNet(e,t,n,r){const o=b(this,t),a=D(w(e,r)(...o||[]),n);return null==a?null:N(this,a)}beginInvokeJSFromDotNet(e,t,n,r,o){const a=new Promise((e=>{const r=b(this,n);e(w(t,o)(...r||[]))}));e&&a.then((t=>N(this,[e,!0,D(t,r)]))).then((t=>this._dotNetCallDispatcher.endInvokeJSFromDotNet(e,!0,t)),(t=>this._dotNetCallDispatcher.endInvokeJSFromDotNet(e,!1,JSON.stringify([e,!1,y(t)]))))}endInvokeDotNetFromJS(e,t,n){const r=t?b(this,n):new Error(n);this.completePendingCall(parseInt(e,10),t,r)}invokeDotNetStaticMethod(e,t,...n){return this.invokeDotNetMethod(e,t,null,n)}invokeDotNetStaticMethodAsync(e,t,...n){return this.invokeDotNetMethodAsync(e,t,null,n)}invokeDotNetMethod(e,t,n,r){if(this._dotNetCallDispatcher.invokeDotNetFromJS){const o=N(this,r),a=this._dotNetCallDispatcher.invokeDotNetFromJS(e,t,n,o);return a?b(this,a):null}throw new Error("The current dispatcher does not support synchronous calls from JS to .NET. Use invokeDotNetMethodAsync instead.")}invokeDotNetMethodAsync(e,t,n,r){if(e&&n)throw new Error(`For instance method calls, assemblyName should be null. Received '${e}'.`);const o=this._nextAsyncCallId++,a=new Promise(((e,t)=>{this._pendingAsyncCalls[o]={resolve:e,reject:t}}));try{const a=N(this,r);this._dotNetCallDispatcher.beginInvokeDotNetFromJS(o,e,t,n,a)}catch(e){this.completePendingCall(o,!1,e)}return a}receiveByteArray(e,t){this._byteArraysToBeRevived.set(e,t)}processByteArray(e){const t=this._byteArraysToBeRevived.get(e);return t?(this._byteArraysToBeRevived.delete(e),t):null}supplyDotNetStream(e,t){if(this._pendingDotNetToJSStreams.has(e)){const n=this._pendingDotNetToJSStreams.get(e);this._pendingDotNetToJSStreams.delete(e),n.resolve(t)}else{const n=new C;n.resolve(t),this._pendingDotNetToJSStreams.set(e,n)}}getDotNetStreamPromise(e){let t;if(this._pendingDotNetToJSStreams.has(e))t=this._pendingDotNetToJSStreams.get(e).streamPromise,this._pendingDotNetToJSStreams.delete(e);else{const n=new C;this._pendingDotNetToJSStreams.set(e,n),t=n.streamPromise}return t}completePendingCall(e,t,n){if(!this._pendingAsyncCalls.hasOwnProperty(e))throw new Error(`There is no pending async call with ID ${e}.`);const r=this._pendingAsyncCalls[e];delete this._pendingAsyncCalls[e],t?r.resolve(n):r.reject(n)}}function y(e){return e instanceof Error?`${e.message}\n${e.stack}`:e?e.toString():"null"}function w(e,t){const n=u[t];if(n)return n.findFunction(e);throw new Error(`JS object instance with ID ${t} does not exist (has it been disposed?).`)}function E(e){delete u[e]}e.findJSFunction=w,e.disposeJSObjectReferenceById=E;class S{constructor(e,t){this._id=e,this._callDispatcher=t}invokeMethod(e,...t){return this._callDispatcher.invokeDotNetMethod(null,e,this._id,t)}invokeMethodAsync(e,...t){return this._callDispatcher.invokeDotNetMethodAsync(null,e,this._id,t)}dispose(){this._callDispatcher.invokeDotNetMethodAsync(null,"__Dispose",this._id,null).catch((e=>console.error(e)))}serializeAsArg(){return{[r]:this._id}}}e.DotNetObject=S,f((function(e,t){if(t&&"object"==typeof t){if(t.hasOwnProperty(r))return new S(t[r],c);if(t.hasOwnProperty(n)){const e=t[n],r=u[e];if(r)return r.getWrappedObject();throw new Error(`JS object instance with Id '${e}' does not exist. It may have been disposed.`)}if(t.hasOwnProperty(o)){const e=t[o],n=c.processByteArray(e);if(void 0===n)throw new Error(`Byte array index '${e}' does not exist.`);return n}if(t.hasOwnProperty(a)){const e=t[a],n=c.getDotNetStreamPromise(e);return new I(n)}}return t}));class I{constructor(e){this._streamPromise=e}stream(){return this._streamPromise}async arrayBuffer(){return new Response(await this.stream()).arrayBuffer()}}class C{constructor(){this.streamPromise=new Promise(((e,t)=>{this.resolve=e,this.reject=t}))}}function D(e,t){switch(t){case d.Default:return e;case d.JSObjectReference:return m(e);case d.JSStreamReference:return p(e);case d.JSVoidResult:return null;default:throw new Error(`Invalid JS call result type '${t}'.`)}}let A=0;function N(e,t){A=0,c=e;const n=JSON.stringify(t,k);return c=void 0,n}function k(e,t){if(t instanceof S)return t.serializeAsArg();if(t instanceof Uint8Array){c.getDotNetCallDispatcher().sendByteArray(A,t);const e={[o]:A};return A++,e}return t}}(e||(e={})),function(e){e[e.prependFrame=1]="prependFrame",e[e.removeFrame=2]="removeFrame",e[e.setAttribute=3]="setAttribute",e[e.removeAttribute=4]="removeAttribute",e[e.updateText=5]="updateText",e[e.stepIn=6]="stepIn",e[e.stepOut=7]="stepOut",e[e.updateMarkup=8]="updateMarkup",e[e.permutationListEntry=9]="permutationListEntry",e[e.permutationListEnd=10]="permutationListEnd"}(t||(t={})),function(e){e[e.element=1]="element",e[e.text=2]="text",e[e.attribute=3]="attribute",e[e.component=4]="component",e[e.region=5]="region",e[e.elementReferenceCapture=6]="elementReferenceCapture",e[e.markup=8]="markup",e[e.namedEvent=10]="namedEvent"}(n||(n={}));class o{constructor(e,t){this.componentId=e,this.fieldValue=t}static fromEvent(e,t){const n=t.target;if(n instanceof Element){const t=function(e){return e instanceof HTMLInputElement?e.type&&"checkbox"===e.type.toLowerCase()?{value:e.checked}:{value:e.value}:e instanceof HTMLSelectElement||e instanceof HTMLTextAreaElement?{value:e.value}:null}(n);if(t)return new o(e,t.value)}return null}}const a=new Map,i=new Map,s=[];function c(e){return a.get(e)}function l(e){const t=a.get(e);return(null==t?void 0:t.browserEventName)||e}function u(e,t){e.forEach((e=>a.set(e,t)))}function d(e){const t=[];for(let n=0;ne.selected)).map((e=>e.value))}}{const e=function(e){return!!e&&"INPUT"===e.tagName&&"checkbox"===e.getAttribute("type")}(t);return{value:e?!!t.checked:t.value}}}}),u(["copy","cut","paste"],{createEventArgs:e=>({type:e.type})}),u(["drag","dragend","dragenter","dragleave","dragover","dragstart","drop"],{createEventArgs:e=>{return{...h(t=e),dataTransfer:t.dataTransfer?{dropEffect:t.dataTransfer.dropEffect,effectAllowed:t.dataTransfer.effectAllowed,files:Array.from(t.dataTransfer.files).map((e=>e.name)),items:Array.from(t.dataTransfer.items).map((e=>({kind:e.kind,type:e.type}))),types:t.dataTransfer.types}:null};var t}}),u(["focus","blur","focusin","focusout"],{createEventArgs:e=>({type:e.type})}),u(["keydown","keyup","keypress"],{createEventArgs:e=>{return{key:(t=e).key,code:t.code,location:t.location,repeat:t.repeat,ctrlKey:t.ctrlKey,shiftKey:t.shiftKey,altKey:t.altKey,metaKey:t.metaKey,type:t.type};var t}}),u(["contextmenu","click","mouseover","mouseout","mousemove","mousedown","mouseup","mouseleave","mouseenter","dblclick"],{createEventArgs:e=>h(e)}),u(["error"],{createEventArgs:e=>{return{message:(t=e).message,filename:t.filename,lineno:t.lineno,colno:t.colno,type:t.type};var t}}),u(["loadstart","timeout","abort","load","loadend","progress"],{createEventArgs:e=>{return{lengthComputable:(t=e).lengthComputable,loaded:t.loaded,total:t.total,type:t.type};var t}}),u(["touchcancel","touchend","touchmove","touchenter","touchleave","touchstart"],{createEventArgs:e=>{return{detail:(t=e).detail,touches:d(t.touches),targetTouches:d(t.targetTouches),changedTouches:d(t.changedTouches),ctrlKey:t.ctrlKey,shiftKey:t.shiftKey,altKey:t.altKey,metaKey:t.metaKey,type:t.type};var t}}),u(["gotpointercapture","lostpointercapture","pointercancel","pointerdown","pointerenter","pointerleave","pointermove","pointerout","pointerover","pointerup"],{createEventArgs:e=>{return{...h(t=e),pointerId:t.pointerId,width:t.width,height:t.height,pressure:t.pressure,tiltX:t.tiltX,tiltY:t.tiltY,pointerType:t.pointerType,isPrimary:t.isPrimary};var t}}),u(["wheel","mousewheel"],{createEventArgs:e=>{return{...h(t=e),deltaX:t.deltaX,deltaY:t.deltaY,deltaZ:t.deltaZ,deltaMode:t.deltaMode};var t}}),u(["cancel","close","toggle"],{createEventArgs:()=>({})});const f=["date","datetime-local","month","time","week"],m=new Map;let p,b,v=0;const g={async add(e,t,n){if(!n)throw new Error("initialParameters must be an object, even if empty.");const r="__bl-dynamic-root:"+(++v).toString();m.set(r,e);const o=await E().invokeMethodAsync("AddRootComponent",t,r),a=new w(o,b[t]);return await a.setParameters(n),a}};class y{invoke(e){return this._callback(e)}setCallback(t){this._selfJSObjectReference||(this._selfJSObjectReference=e.createJSObjectReference(this)),this._callback=t}getJSObjectReference(){return this._selfJSObjectReference}dispose(){this._selfJSObjectReference&&e.disposeJSObjectReference(this._selfJSObjectReference)}}class w{constructor(e,t){this._jsEventCallbackWrappers=new Map,this._componentId=e;for(const e of t)"eventcallback"===e.type&&this._jsEventCallbackWrappers.set(e.name.toLowerCase(),new y)}setParameters(e){const t={},n=Object.entries(e||{}),r=n.length;for(const[e,r]of n){const n=this._jsEventCallbackWrappers.get(e.toLowerCase());n&&r?(n.setCallback(r),t[e]=n.getJSObjectReference()):t[e]=r}return E().invokeMethodAsync("SetRootComponentParameters",this._componentId,r,t)}async dispose(){if(null!==this._componentId){await E().invokeMethodAsync("RemoveRootComponent",this._componentId),this._componentId=null;for(const e of this._jsEventCallbackWrappers.values())e.dispose()}}}function E(){if(!p)throw new Error("Dynamic root components have not been enabled in this application.");return p}const S=new Map,I=[],C=new Map;function D(e,t,n){return N(e,t.eventHandlerId,(()=>A(e).invokeMethodAsync("DispatchEventAsync",t,n)))}function A(e){const t=S.get(e);if(!t)throw new Error(`No interop methods are registered for renderer ${e}`);return t}let N=(e,t,n)=>n();const k=x(["abort","blur","cancel","canplay","canplaythrough","change","close","cuechange","durationchange","emptied","ended","error","focus","load","loadeddata","loadedmetadata","loadend","loadstart","mouseenter","mouseleave","pointerenter","pointerleave","pause","play","playing","progress","ratechange","reset","scroll","seeked","seeking","stalled","submit","suspend","timeupdate","toggle","unload","volumechange","waiting","DOMNodeInsertedIntoDocument","DOMNodeRemovedFromDocument"]),R={submit:!0},T=x(["click","dblclick","mousedown","mousemove","mouseup"]);class _{constructor(e){this.browserRendererId=e,this.afterClickCallbacks=[];const t=++_.nextEventDelegatorId;this.eventsCollectionKey=`_blazorEvents_${t}`,this.eventInfoStore=new O(this.onGlobalEvent.bind(this))}setListener(e,t,n,r){const o=this.getEventHandlerInfosForElement(e,!0),a=o.getHandler(t);if(a)this.eventInfoStore.update(a.eventHandlerId,n);else{const a={element:e,eventName:t,eventHandlerId:n,renderingComponentId:r};this.eventInfoStore.add(a),o.setHandler(t,a)}}getHandler(e){return this.eventInfoStore.get(e)}removeListener(e){const t=this.eventInfoStore.remove(e);if(t){const e=t.element,n=this.getEventHandlerInfosForElement(e,!1);n&&n.removeHandler(t.eventName)}}notifyAfterClick(e){this.afterClickCallbacks.push(e),this.eventInfoStore.addGlobalListener("click")}setStopPropagation(e,t,n){this.getEventHandlerInfosForElement(e,!0).stopPropagation(t,n)}setPreventDefault(e,t,n){this.getEventHandlerInfosForElement(e,!0).preventDefault(t,n)}onGlobalEvent(e){if(!(e.target instanceof Element))return;this.dispatchGlobalEventToAllElements(e.type,e);const t=(n=e.type,i.get(n));var n;t&&t.forEach((t=>this.dispatchGlobalEventToAllElements(t,e))),"click"===e.type&&this.afterClickCallbacks.forEach((t=>t(e)))}dispatchGlobalEventToAllElements(e,t){const n=t.composedPath();let r=n.shift(),a=null,i=!1;const s=Object.prototype.hasOwnProperty.call(k,e);let l=!1;for(;r;){const h=r,f=this.getEventHandlerInfosForElement(h,!1);if(f){const n=f.getHandler(e);if(n&&(u=h,d=t.type,!((u instanceof HTMLButtonElement||u instanceof HTMLInputElement||u instanceof HTMLTextAreaElement||u instanceof HTMLSelectElement)&&Object.prototype.hasOwnProperty.call(T,d)&&u.disabled))){if(!i){const n=c(e);a=(null==n?void 0:n.createEventArgs)?n.createEventArgs(t):{},i=!0}Object.prototype.hasOwnProperty.call(R,t.type)&&t.preventDefault(),D(this.browserRendererId,{eventHandlerId:n.eventHandlerId,eventName:e,eventFieldInfo:o.fromEvent(n.renderingComponentId,t)},a)}f.stopPropagation(e)&&(l=!0),f.preventDefault(e)&&t.preventDefault()}r=s||l?void 0:n.shift()}var u,d}getEventHandlerInfosForElement(e,t){return Object.prototype.hasOwnProperty.call(e,this.eventsCollectionKey)?e[this.eventsCollectionKey]:t?e[this.eventsCollectionKey]=new L:null}}_.nextEventDelegatorId=0;class O{constructor(e){this.globalListener=e,this.infosByEventHandlerId={},this.countByEventName={},s.push(this.handleEventNameAliasAdded.bind(this))}add(e){if(this.infosByEventHandlerId[e.eventHandlerId])throw new Error(`Event ${e.eventHandlerId} is already tracked`);this.infosByEventHandlerId[e.eventHandlerId]=e,this.addGlobalListener(e.eventName)}get(e){return this.infosByEventHandlerId[e]}addGlobalListener(e){if(e=l(e),Object.prototype.hasOwnProperty.call(this.countByEventName,e))this.countByEventName[e]++;else{this.countByEventName[e]=1;const t=Object.prototype.hasOwnProperty.call(k,e);document.addEventListener(e,this.globalListener,t)}}update(e,t){if(Object.prototype.hasOwnProperty.call(this.infosByEventHandlerId,t))throw new Error(`Event ${t} is already tracked`);const n=this.infosByEventHandlerId[e];delete this.infosByEventHandlerId[e],n.eventHandlerId=t,this.infosByEventHandlerId[t]=n}remove(e){const t=this.infosByEventHandlerId[e];if(t){delete this.infosByEventHandlerId[e];const n=l(t.eventName);0==--this.countByEventName[n]&&(delete this.countByEventName[n],document.removeEventListener(n,this.globalListener))}return t}handleEventNameAliasAdded(e,t){if(Object.prototype.hasOwnProperty.call(this.countByEventName,e)){const n=this.countByEventName[e];delete this.countByEventName[e],document.removeEventListener(e,this.globalListener),this.addGlobalListener(t),this.countByEventName[t]+=n-1}}}class L{constructor(){this.handlers={},this.preventDefaultFlags=null,this.stopPropagationFlags=null}getHandler(e){return Object.prototype.hasOwnProperty.call(this.handlers,e)?this.handlers[e]:null}setHandler(e,t){this.handlers[e]=t}removeHandler(e){delete this.handlers[e]}preventDefault(e,t){return void 0!==t&&(this.preventDefaultFlags=this.preventDefaultFlags||{},this.preventDefaultFlags[e]=t),!!this.preventDefaultFlags&&this.preventDefaultFlags[e]}stopPropagation(e,t){return void 0!==t&&(this.stopPropagationFlags=this.stopPropagationFlags||{},this.stopPropagationFlags[e]=t),!!this.stopPropagationFlags&&this.stopPropagationFlags[e]}}function x(e){const t={};return e.forEach((e=>{t[e]=!0})),t}const F=Symbol(),M=Symbol();function P(e,t){if(F in e)return e;const n=[];if(e.childNodes.length>0){if(!t)throw new Error("New logical elements must start empty, or allowExistingContents must be true");e.childNodes.forEach((t=>{const r=P(t,!0);r[M]=e,n.push(r)}))}return e[F]=n,e}function B(e){const t=W(e);for(;t.length;)J(e,0)}function j(e,t){const n=document.createComment("!");return H(n,e,t),n}function H(e,t,n){const r=e;let o=e;if(F in e){const t=G(r);if(t!==e){const n=new Range;n.setStartBefore(e),n.setEndAfter(t),o=n.extractContents()}}const a=U(r);if(a){const e=W(a),t=Array.prototype.indexOf.call(e,r);e.splice(t,1),delete r[M]}const i=W(t);if(n0;)J(n,0)}const r=n;r.parentNode.removeChild(r)}function U(e){return e[M]||null}function z(e,t){return W(e)[t]}function $(e){const t=X(e);return"http://www.w3.org/2000/svg"===t.namespaceURI&&"foreignObject"!==t.tagName}function W(e){return e[F]}function K(e){const t=W(U(e));return t[Array.prototype.indexOf.call(t,e)+1]||null}function V(e,t){const n=W(e);t.forEach((e=>{e.moveRangeStart=n[e.fromSiblingIndex],e.moveRangeEnd=G(e.moveRangeStart)})),t.forEach((t=>{const r=document.createComment("marker");t.moveToBeforeMarker=r;const o=n[t.toSiblingIndex+1];o?o.parentNode.insertBefore(r,o):Y(r,e)})),t.forEach((e=>{const t=e.moveToBeforeMarker,n=t.parentNode,r=e.moveRangeStart,o=e.moveRangeEnd;let a=r;for(;a;){const e=a.nextSibling;if(n.insertBefore(a,t),a===o)break;a=e}n.removeChild(t)})),t.forEach((e=>{n[e.toSiblingIndex]=e.moveRangeStart}))}function X(e){if(e instanceof Element||e instanceof DocumentFragment)return e;if(e instanceof Comment)return e.parentNode;throw new Error("Not a valid logical element")}function Y(e,t){if(t instanceof Element||t instanceof DocumentFragment)t.appendChild(e);else{if(!(t instanceof Comment))throw new Error(`Cannot append node because the parent is not a valid logical element. Parent: ${t}`);{const n=K(t);n?n.parentNode.insertBefore(e,n):Y(e,U(t))}}}function G(e){if(e instanceof Element||e instanceof DocumentFragment)return e;const t=K(e);if(t)return t.previousSibling;{const t=U(e);return t instanceof Element||t instanceof DocumentFragment?t.lastChild:G(t)}}function q(e){return`_bl_${e}`}Symbol();const Z="__internalId";e.attachReviver(((e,t)=>t&&"object"==typeof t&&Object.prototype.hasOwnProperty.call(t,Z)&&"string"==typeof t[Z]?function(e){const t=`[${q(e)}]`;return document.querySelector(t)}(t[Z]):t));const Q="_blazorDeferredValue";function ee(e){return"select-multiple"===e.type}function te(e,t){e.value=t||""}function ne(e,t){e instanceof HTMLSelectElement?ee(e)?function(e,t){t||(t=[]);for(let n=0;n{Ce()&&function(e,t){if(0!==e.button||function(e){return e.ctrlKey||e.shiftKey||e.altKey||e.metaKey}(e))return;if(e.defaultPrevented)return;const n=function(e){const t=!window._blazorDisableComposedPath&&e.composedPath&&e.composedPath();if(t){for(let e=0;e{const t=document.createElement("script");t.textContent=e.textContent,e.getAttributeNames().forEach((n=>{t.setAttribute(n,e.getAttribute(n))})),e.parentNode.replaceChild(t,e)})),oe.content));var i;let s=0;for(;a.firstChild;)H(a.firstChild,o,s++)}applyAttribute(e,t,n,r){const o=e.frameReader,a=o.attributeName(r),i=o.attributeEventHandlerId(r);if(i){const e=he(a);return void this.eventDelegator.setListener(n,e,i,t)}const s=o.attributeValue(r);this.setOrRemoveAttributeOrProperty(n,a,s)}insertFrameRange(e,t,n,r,o,a,i){const s=r;for(let s=a;s{He(t,e)})},enableNavigationInterception:function(e){if(void 0!==me&&me!==e)throw new Error("Only one interactive runtime may enable navigation interception at a time.");me=e},setHasLocationChangingListeners:function(e,t){const n=Re.get(e);if(!n)throw new Error(`Renderer with ID '${e}' is not listening for navigation events`);n.hasLocationChangingEventListeners=t},endLocationChanging:function(e,t){_e&&e===ke&&(_e(t),_e=null)},navigateTo:function(e,t){xe(e,t,!0)},refresh:function(e){!e&&we()?Ee(location.href,!0):location.reload()},getBaseURI:()=>document.baseURI,getLocationHref:()=>location.href,scrollToElement:Le};function Le(e){const t=document.getElementById(e);return!!t&&(t.scrollIntoView(),!0)}function xe(e,t,n=!1){const r=Se(e),o=ze();if(t.forceLoad||!ye(r)||"serverside-fullpageload"===o)!function(e,t){if(location.href===e){const t=e+"?";history.replaceState(null,"",t),location.replace(e)}else t?location.replace(e):location.href=e}(e,t.replaceHistoryEntry);else if("clientside-router"===o)Fe(r,!1,t.replaceHistoryEntry,t.historyEntryState,n);else{if("serverside-enhanced"!==o)throw new Error(`Unsupported page load mechanism: ${o}`);Ee(r,t.replaceHistoryEntry)}}async function Fe(e,t,n,r=void 0,o=!1){if(Be(),function(e){const t=e.indexOf("#");return t>-1&&location.href.replace(location.hash,"")===e.substring(0,t)}(e))return void function(e,t,n){Me(e,t,n);const r=e.indexOf("#");r!==e.length-1&&Le(e.substring(r+1))}(e,n,r);const a=Ue();(o||!(null==a?void 0:a.hasLocationChangingEventListeners)||await je(e,r,t,a))&&(ge=!0,Me(e,n,r),await He(t))}function Me(e,t,n=void 0){t?history.replaceState({userState:n,_index:Ne},"",e):(Ne++,history.pushState({userState:n,_index:Ne},"",e))}function Pe(e){return new Promise((t=>{const n=Te;Te=()=>{Te=n,t()},history.go(e)}))}function Be(){_e&&(_e(!1),_e=null)}function je(e,t,n,r){return new Promise((o=>{Be(),ke++,_e=o,r.locationChanging(ke,e,t,n)}))}async function He(e,t){const n=null!=t?t:location.href;await Promise.all(Array.from(Re,(async([t,r])=>{var o,a;a=t,S.has(a)&&await r.locationChanged(n,null===(o=history.state)||void 0===o?void 0:o.userState,e)})))}async function Je(e){var t,n;Te&&"serverside-enhanced"!==ze()&&await Te(e),Ne=null!==(n=null===(t=history.state)||void 0===t?void 0:t._index)&&void 0!==n?n:0}function Ue(){const e=De();if(void 0!==e)return Re.get(e)}function ze(){return Ce()?"clientside-router":we()?"serverside-enhanced":window.Blazor._internal.isBlazorWeb?"serverside-fullpageload":"clientside-router"}const $e={focus:function(e,t){if(e instanceof HTMLElement)e.focus({preventScroll:t});else{if(!(e instanceof SVGElement))throw new Error("Unable to focus an invalid element.");if(!e.hasAttribute("tabindex"))throw new Error("Unable to focus an SVG element that does not have a tabindex.");e.focus({preventScroll:t})}},focusBySelector:function(e,t){const n=document.querySelector(e);n&&(n.hasAttribute("tabindex")||(n.tabIndex=-1),n.focus({preventScroll:!0}))}},We={init:function(e,t,n,r=50){const o=Ve(t);(o||document.documentElement).style.overflowAnchor="none";const a=document.createRange();h(n.parentElement)&&(t.style.display="table-row",n.style.display="table-row");const i=new IntersectionObserver((function(r){r.forEach((r=>{var o;if(!r.isIntersecting)return;a.setStartAfter(t),a.setEndBefore(n);const i=a.getBoundingClientRect().height,s=null===(o=r.rootBounds)||void 0===o?void 0:o.height;r.target===t?e.invokeMethodAsync("OnSpacerBeforeVisible",r.intersectionRect.top-r.boundingClientRect.top,i,s):r.target===n&&n.offsetHeight>0&&e.invokeMethodAsync("OnSpacerAfterVisible",r.boundingClientRect.bottom-r.intersectionRect.bottom,i,s)}))}),{root:o,rootMargin:`${r}px`});i.observe(t),i.observe(n);const s=d(t),c=d(n),{observersByDotNetObjectId:l,id:u}=Xe(e);function d(e){const t={attributes:!0},n=new MutationObserver(((n,r)=>{h(e.parentElement)&&(r.disconnect(),e.style.display="table-row",r.observe(e,t)),i.unobserve(e),i.observe(e)}));return n.observe(e,t),n}function h(e){return null!==e&&(e instanceof HTMLTableElement&&""===e.style.display||"table"===e.style.display||e instanceof HTMLTableSectionElement&&""===e.style.display||"table-row-group"===e.style.display)}l[u]={intersectionObserver:i,mutationObserverBefore:s,mutationObserverAfter:c}},dispose:function(e){const{observersByDotNetObjectId:t,id:n}=Xe(e),r=t[n];r&&(r.intersectionObserver.disconnect(),r.mutationObserverBefore.disconnect(),r.mutationObserverAfter.disconnect(),e.dispose(),delete t[n])}},Ke=Symbol();function Ve(e){return e&&e!==document.body&&e!==document.documentElement?"visible"!==getComputedStyle(e).overflowY?e:Ve(e.parentElement):null}function Xe(e){var t;const n=e._callDispatcher,r=e._id;return null!==(t=n[Ke])&&void 0!==t||(n[Ke]={}),{observersByDotNetObjectId:n[Ke],id:r}}const Ye={getAndRemoveExistingTitle:function(){var e;const t=document.head?document.head.getElementsByTagName("title"):[];if(0===t.length)return null;let n=null;for(let r=t.length-1;r>=0;r--){const o=t[r],a=o.previousSibling;a instanceof Comment&&null!==U(a)||(null===n&&(n=o.textContent),null===(e=o.parentNode)||void 0===e||e.removeChild(o))}return n}},Ge={init:function(e,t){t._blazorInputFileNextFileId=0,t.addEventListener("click",(function(){t.value=""})),t.addEventListener("change",(function(){t._blazorFilesById={};const n=Array.prototype.map.call(t.files,(function(e){const n={id:++t._blazorInputFileNextFileId,lastModified:new Date(e.lastModified).toISOString(),name:e.name,size:e.size,contentType:e.type,readPromise:void 0,arrayBuffer:void 0,blob:e};return t._blazorFilesById[n.id]=n,n}));e.invokeMethodAsync("NotifyChange",n)}))},toImageFile:async function(e,t,n,r,o){const a=qe(e,t),i=await new Promise((function(e){const t=new Image;t.onload=function(){URL.revokeObjectURL(t.src),e(t)},t.onerror=function(){t.onerror=null,URL.revokeObjectURL(t.src)},t.src=URL.createObjectURL(a.blob)})),s=await new Promise((function(e){var t;const a=Math.min(1,r/i.width),s=Math.min(1,o/i.height),c=Math.min(a,s),l=document.createElement("canvas");l.width=Math.round(i.width*c),l.height=Math.round(i.height*c),null===(t=l.getContext("2d"))||void 0===t||t.drawImage(i,0,0,l.width,l.height),l.toBlob(e,n)})),c={id:++e._blazorInputFileNextFileId,lastModified:a.lastModified,name:a.name,size:(null==s?void 0:s.size)||0,contentType:n,blob:s||a.blob};return e._blazorFilesById[c.id]=c,c},readFileData:async function(e,t){return qe(e,t).blob}};function qe(e,t){const n=e._blazorFilesById[t];if(!n)throw new Error(`There is no file with ID ${t}. The file list may have changed. See https://aka.ms/aspnet/blazor-input-file-multiple-selections.`);return n}const Ze=new Set,Qe={enableNavigationPrompt:function(e){0===Ze.size&&window.addEventListener("beforeunload",et),Ze.add(e)},disableNavigationPrompt:function(e){Ze.delete(e),0===Ze.size&&window.removeEventListener("beforeunload",et)}};function et(e){e.preventDefault(),e.returnValue=!0}const tt=new Map,nt={navigateTo:function(e,t,n=!1){xe(e,t instanceof Object?t:{forceLoad:t,replaceHistoryEntry:n})},registerCustomEventType:function(e,t){if(!t)throw new Error("The options parameter is required.");if(a.has(e))throw new Error(`The event '${e}' is already registered.`);if(t.browserEventName){const n=i.get(t.browserEventName);n?n.push(e):i.set(t.browserEventName,[e]),s.forEach((n=>n(e,t.browserEventName)))}a.set(e,t)},rootComponents:g,runtime:{},_internal:{navigationManager:Oe,domWrapper:$e,Virtualize:We,PageTitle:Ye,InputFile:Ge,NavigationLock:Qe,getJSDataStreamChunk:async function(e,t,n){return e instanceof Blob?await async function(e,t,n){const r=e.slice(t,t+n),o=await r.arrayBuffer();return new Uint8Array(o)}(e,t,n):function(e,t,n){return new Uint8Array(e.buffer,e.byteOffset+t,n)}(e,t,n)},attachWebRendererInterop:function(t,n,r,o){var a,i;if(S.has(t))throw new Error(`Interop methods are already registered for renderer ${t}`);S.set(t,n),r&&o&&Object.keys(r).length>0&&function(t,n,r){if(p)throw new Error("Dynamic root components have already been enabled.");p=t,b=n;for(const[t,o]of Object.entries(r)){const r=e.findJSFunction(t,0);for(const e of o)r(e,n[e])}}(A(t),r,o),null===(i=null===(a=C.get(t))||void 0===a?void 0:a[0])||void 0===i||i.call(a),function(e){for(const t of I)t(e)}(t)}}};window.Blazor=nt;let rt=!1;const ot="function"==typeof TextDecoder?new TextDecoder("utf-8"):null,at=ot?ot.decode.bind(ot):function(e){let t=0;const n=e.length,r=[],o=[];for(;t65535&&(o-=65536,r.push(o>>>10&1023|55296),o=56320|1023&o),r.push(o)}r.length>1024&&(o.push(String.fromCharCode.apply(null,r)),r.length=0)}return o.push(String.fromCharCode.apply(null,r)),o.join("")},it=Math.pow(2,32),st=Math.pow(2,21)-1;function ct(e,t){return e[t]|e[t+1]<<8|e[t+2]<<16|e[t+3]<<24}function lt(e,t){return e[t]+(e[t+1]<<8)+(e[t+2]<<16)+(e[t+3]<<24>>>0)}function ut(e,t){const n=lt(e,t+4);if(n>st)throw new Error(`Cannot read uint64 with high order part ${n}, because the result would exceed Number.MAX_SAFE_INTEGER.`);return n*it+lt(e,t)}class dt{constructor(e){this.batchData=e;const t=new pt(e);this.arrayRangeReader=new bt(e),this.arrayBuilderSegmentReader=new vt(e),this.diffReader=new ht(e),this.editReader=new ft(e,t),this.frameReader=new mt(e,t)}updatedComponents(){return ct(this.batchData,this.batchData.length-20)}referenceFrames(){return ct(this.batchData,this.batchData.length-16)}disposedComponentIds(){return ct(this.batchData,this.batchData.length-12)}disposedEventHandlerIds(){return ct(this.batchData,this.batchData.length-8)}updatedComponentsEntry(e,t){const n=e+4*t;return ct(this.batchData,n)}referenceFramesEntry(e,t){return e+20*t}disposedComponentIdsEntry(e,t){const n=e+4*t;return ct(this.batchData,n)}disposedEventHandlerIdsEntry(e,t){const n=e+8*t;return ut(this.batchData,n)}}class ht{constructor(e){this.batchDataUint8=e}componentId(e){return ct(this.batchDataUint8,e)}edits(e){return e+4}editsEntry(e,t){return e+16*t}}class ft{constructor(e,t){this.batchDataUint8=e,this.stringReader=t}editType(e){return ct(this.batchDataUint8,e)}siblingIndex(e){return ct(this.batchDataUint8,e+4)}newTreeIndex(e){return ct(this.batchDataUint8,e+8)}moveToSiblingIndex(e){return ct(this.batchDataUint8,e+8)}removedAttributeName(e){const t=ct(this.batchDataUint8,e+12);return this.stringReader.readString(t)}}class mt{constructor(e,t){this.batchDataUint8=e,this.stringReader=t}frameType(e){return ct(this.batchDataUint8,e)}subtreeLength(e){return ct(this.batchDataUint8,e+4)}elementReferenceCaptureId(e){const t=ct(this.batchDataUint8,e+4);return this.stringReader.readString(t)}componentId(e){return ct(this.batchDataUint8,e+8)}elementName(e){const t=ct(this.batchDataUint8,e+8);return this.stringReader.readString(t)}textContent(e){const t=ct(this.batchDataUint8,e+4);return this.stringReader.readString(t)}markupContent(e){const t=ct(this.batchDataUint8,e+4);return this.stringReader.readString(t)}attributeName(e){const t=ct(this.batchDataUint8,e+4);return this.stringReader.readString(t)}attributeValue(e){const t=ct(this.batchDataUint8,e+8);return this.stringReader.readString(t)}attributeEventHandlerId(e){return ut(this.batchDataUint8,e+12)}}class pt{constructor(e){this.batchDataUint8=e,this.stringTableStartIndex=ct(e,e.length-4)}readString(e){if(-1===e)return null;{const n=ct(this.batchDataUint8,this.stringTableStartIndex+4*e),r=function(e,t){let n=0,r=0;for(let o=0;o<4;o++){const a=e[t+o];if(n|=(127&a)<async function(e,n){const r=function(e){const t=document.baseURI;return t.endsWith("/")?`${t}${e}`:`${t}/${e}`}(n),o=await import(r);if(void 0!==o){if(e.singleRuntime){const{beforeStart:n,afterStarted:r,beforeWebAssemblyStart:i,afterWebAssemblyStarted:s,beforeServerStart:c,afterServerStarted:l}=o;let u=n;e.webRendererId===Nt.Server&&c&&(u=c),e.webRendererId===Nt.WebAssembly&&i&&(u=i);let d=r;return e.webRendererId===Nt.Server&&l&&(d=l),e.webRendererId===Nt.WebAssembly&&s&&(d=s),a(e,u,d,t)}return function(e,t,n){var o;const i=n[0],{beforeStart:s,afterStarted:c,beforeWebStart:l,afterWebStarted:u,beforeWebAssemblyStart:d,afterWebAssemblyStarted:h,beforeServerStart:f,afterServerStarted:m}=t,p=!(l||u||d||h||f||m||!s&&!c),b=p&&i.enableClassicInitializers;if(p&&!i.enableClassicInitializers)null===(o=e.logger)||void 0===o||o.log(kt.Warning,`Initializer '${r}' will be ignored because multiple runtimes are available. use 'before(web|webAssembly|server)Start' and 'after(web|webAssembly|server)Started?' instead.)`);else if(b)return a(e,s,c,n);if(function(e){e.webAssembly?e.webAssembly.initializers||(e.webAssembly.initializers={beforeStart:[],afterStarted:[]}):e.webAssembly={initializers:{beforeStart:[],afterStarted:[]}},e.circuit?e.circuit.initializers||(e.circuit.initializers={beforeStart:[],afterStarted:[]}):e.circuit={initializers:{beforeStart:[],afterStarted:[]}}}(i),d&&i.webAssembly.initializers.beforeStart.push(d),h&&i.webAssembly.initializers.afterStarted.push(h),f&&i.circuit.initializers.beforeStart.push(f),m&&i.circuit.initializers.afterStarted.push(m),u&&e.afterStartedCallbacks.push(u),l)return l(i)}(e,o,t)}function a(e,t,n,r){if(n&&e.afterStartedCallbacks.push(n),t)return t(...r)}}(this,e))))}async invokeAfterStartedCallbacks(e){const t=(n=this.webRendererId,null===(r=C.get(n))||void 0===r?void 0:r[1]);var n,r;t&&await t,await Promise.all(this.afterStartedCallbacks.map((t=>t(e))))}}let Ot,Lt=!1;async function xt(){if(Lt)throw new Error("Blazor has already started.");Lt=!0,Ot=e.attachDispatcher({beginInvokeDotNetFromJS:Et,endInvokeJSFromDotNet:St,sendByteArray:It});const t=await async function(){const e=await fetch("http://github.com/_framework/blazor.modules.json",{method:"GET",credentials:"include",cache:"no-cache"}),t=await e.json(),n=new _t;return await n.importInitializersAsync(t,[]),n}();(function(){const e={AttachToDocument:(e,t)=>{!function(e,t,n){const r="::before";let o=!1;if(e.endsWith("::after"))e=e.slice(0,-7),o=!0;else if(e.endsWith(r))throw new Error(`The '${r}' selector is not supported.`);const a=function(e){const t=m.get(e);if(t)return m.delete(e),t}(e)||document.querySelector(e);if(!a)throw new Error(`Could not find any element matching selector '${e}'.`);!function(e,t,n,r){let o=fe[e];o||(o=new le(e),fe[e]=o),o.attachRootComponentToLogicalElement(n,t,r)}(n,P(a,!0),t,o)}(t,e,Nt.WebView)},RenderBatch:(e,t)=>{try{const n=Tt(t);(function(e,t){const n=fe[e];if(!n)throw new Error(`There is no browser renderer with ID ${e}.`);const r=t.arrayRangeReader,o=t.updatedComponents(),a=r.values(o),i=r.count(o),s=t.referenceFrames(),c=r.values(s),l=t.diffReader;for(let e=0;e{yt=!0,console.error(`${e}\n${t}`),function(){const e=document.querySelector("#blazor-error-ui");e&&(e.style.display="block"),rt||(rt=!0,document.querySelectorAll("#blazor-error-ui .reload").forEach((e=>{e.onclick=function(e){location.reload(),e.preventDefault()}})),document.querySelectorAll("#blazor-error-ui .dismiss").forEach((e=>{e.onclick=function(e){const t=document.querySelector("#blazor-error-ui");t&&(t.style.display="none"),e.preventDefault()}})))}()},BeginInvokeJS:Ot.beginInvokeJSFromDotNet.bind(Ot),EndInvokeDotNet:Ot.endInvokeDotNetFromJS.bind(Ot),SendByteArrayToJS:Rt,Navigate:Oe.navigateTo,Refresh:Oe.refresh,SetHasLocationChangingListeners:e=>{Oe.setHasLocationChangingListeners(Nt.WebView,e)},EndLocationChanging:Oe.endLocationChanging};window.external.receiveMessage((t=>{const n=function(e){if(yt||!e||!e.startsWith(gt))return null;const t=e.substring(gt.length),[n,...r]=JSON.parse(t);return{messageType:n,args:r}}(t);if(n){if(!Object.prototype.hasOwnProperty.call(e,n.messageType))throw new Error(`Unsupported IPC message type '${n.messageType}'`);e[n.messageType].apply(null,n.args)}}))})(),nt._internal.receiveWebViewDotNetDataStream=Ft,Oe.enableNavigationInterception(Nt.WebView),Oe.listenForNavigationEvents(Nt.WebView,Ct,Dt),At("AttachPage",Oe.getBaseURI(),Oe.getLocationHref()),await t.invokeAfterStartedCallbacks(nt)}function Ft(e,t,n,r){!function(e,t,n,r,o){let a=tt.get(t);if(!a){const n=new ReadableStream({start(e){tt.set(t,e),a=e}});e.supplyDotNetStream(t,n)}o?(a.error(o),tt.delete(t)):0===r?(a.close(),tt.delete(t)):a.enqueue(n.length===r?n:n.subarray(0,r))}(Ot,e,t,n,r)}nt.start=xt,window.DotNet=e,document&&document.currentScript&&"false"!==document.currentScript.getAttribute("autostart")&&xt()})(); \ No newline at end of file +(()=>{"use strict";var e,t,n,r={d:(e,t)=>{for(var n in t)r.o(t,n)&&!r.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t)};r.d({},{e:()=>Ot}),function(e){const t=[],n="__jsObjectId",r="__dotNetObject",o="__byte[]",a="__dotNetStream",i="__jsStreamReferenceLength";let s,c;class l{constructor(e){this._jsObject=e,this._cachedFunctions=new Map}findFunction(e){const t=this._cachedFunctions.get(e);if(t)return t;let n,r=this._jsObject;if(e.split(".").forEach((t=>{if(!(t in r))throw new Error(`Could not find '${e}' ('${t}' was undefined).`);n=r,r=r[t]})),r instanceof Function)return r=r.bind(n),this._cachedFunctions.set(e,r),r;throw new Error(`The value '${e}' is not a function.`)}getWrappedObject(){return this._jsObject}}const u={0:new l(window)};u[0]._cachedFunctions.set("import",(e=>("string"==typeof e&&e.startsWith("./")&&(e=new URL(e.substr(2),document.baseURI).toString()),import(e))));let d,h=1;function f(e){t.push(e)}function m(e){if(e&&"object"==typeof e){u[h]=new l(e);const t={[n]:h};return h++,t}throw new Error(`Cannot create a JSObjectReference from the value '${e}'.`)}function p(e){let t=-1;if(e instanceof ArrayBuffer&&(e=new Uint8Array(e)),e instanceof Blob)t=e.size;else{if(!(e.buffer instanceof ArrayBuffer))throw new Error("Supplied value is not a typed array or blob.");if(void 0===e.byteLength)throw new Error(`Cannot create a JSStreamReference from the value '${e}' as it doesn't have a byteLength.`);t=e.byteLength}const r={[i]:t};try{const t=m(e);r[n]=t[n]}catch(t){throw new Error(`Cannot create a JSStreamReference from the value '${e}'.`)}return r}function b(e,n){c=e;const r=n?JSON.parse(n,((e,n)=>t.reduce(((t,n)=>n(e,t)),n))):null;return c=void 0,r}function v(){if(void 0===s)throw new Error("No call dispatcher has been set.");if(null===s)throw new Error("There are multiple .NET runtimes present, so a default dispatcher could not be resolved. Use DotNetObject to invoke .NET instance methods.");return s}e.attachDispatcher=function(e){const t=new g(e);return void 0===s?s=t:s&&(s=null),t},e.attachReviver=f,e.invokeMethod=function(e,t,...n){return v().invokeDotNetStaticMethod(e,t,...n)},e.invokeMethodAsync=function(e,t,...n){return v().invokeDotNetStaticMethodAsync(e,t,...n)},e.createJSObjectReference=m,e.createJSStreamReference=p,e.disposeJSObjectReference=function(e){const t=e&&e[n];"number"==typeof t&&E(t)},function(e){e[e.Default=0]="Default",e[e.JSObjectReference=1]="JSObjectReference",e[e.JSStreamReference=2]="JSStreamReference",e[e.JSVoidResult=3]="JSVoidResult"}(d=e.JSCallResultType||(e.JSCallResultType={}));class g{constructor(e){this._dotNetCallDispatcher=e,this._byteArraysToBeRevived=new Map,this._pendingDotNetToJSStreams=new Map,this._pendingAsyncCalls={},this._nextAsyncCallId=1}getDotNetCallDispatcher(){return this._dotNetCallDispatcher}invokeJSFromDotNet(e,t,n,r){const o=b(this,t),a=D(w(e,r)(...o||[]),n);return null==a?null:N(this,a)}beginInvokeJSFromDotNet(e,t,n,r,o){const a=new Promise((e=>{const r=b(this,n);e(w(t,o)(...r||[]))}));e&&a.then((t=>N(this,[e,!0,D(t,r)]))).then((t=>this._dotNetCallDispatcher.endInvokeJSFromDotNet(e,!0,t)),(t=>this._dotNetCallDispatcher.endInvokeJSFromDotNet(e,!1,JSON.stringify([e,!1,y(t)]))))}endInvokeDotNetFromJS(e,t,n){const r=t?b(this,n):new Error(n);this.completePendingCall(parseInt(e,10),t,r)}invokeDotNetStaticMethod(e,t,...n){return this.invokeDotNetMethod(e,t,null,n)}invokeDotNetStaticMethodAsync(e,t,...n){return this.invokeDotNetMethodAsync(e,t,null,n)}invokeDotNetMethod(e,t,n,r){if(this._dotNetCallDispatcher.invokeDotNetFromJS){const o=N(this,r),a=this._dotNetCallDispatcher.invokeDotNetFromJS(e,t,n,o);return a?b(this,a):null}throw new Error("The current dispatcher does not support synchronous calls from JS to .NET. Use invokeDotNetMethodAsync instead.")}invokeDotNetMethodAsync(e,t,n,r){if(e&&n)throw new Error(`For instance method calls, assemblyName should be null. Received '${e}'.`);const o=this._nextAsyncCallId++,a=new Promise(((e,t)=>{this._pendingAsyncCalls[o]={resolve:e,reject:t}}));try{const a=N(this,r);this._dotNetCallDispatcher.beginInvokeDotNetFromJS(o,e,t,n,a)}catch(e){this.completePendingCall(o,!1,e)}return a}receiveByteArray(e,t){this._byteArraysToBeRevived.set(e,t)}processByteArray(e){const t=this._byteArraysToBeRevived.get(e);return t?(this._byteArraysToBeRevived.delete(e),t):null}supplyDotNetStream(e,t){if(this._pendingDotNetToJSStreams.has(e)){const n=this._pendingDotNetToJSStreams.get(e);this._pendingDotNetToJSStreams.delete(e),n.resolve(t)}else{const n=new C;n.resolve(t),this._pendingDotNetToJSStreams.set(e,n)}}getDotNetStreamPromise(e){let t;if(this._pendingDotNetToJSStreams.has(e))t=this._pendingDotNetToJSStreams.get(e).streamPromise,this._pendingDotNetToJSStreams.delete(e);else{const n=new C;this._pendingDotNetToJSStreams.set(e,n),t=n.streamPromise}return t}completePendingCall(e,t,n){if(!this._pendingAsyncCalls.hasOwnProperty(e))throw new Error(`There is no pending async call with ID ${e}.`);const r=this._pendingAsyncCalls[e];delete this._pendingAsyncCalls[e],t?r.resolve(n):r.reject(n)}}function y(e){return e instanceof Error?`${e.message}\n${e.stack}`:e?e.toString():"null"}function w(e,t){const n=u[t];if(n)return n.findFunction(e);throw new Error(`JS object instance with ID ${t} does not exist (has it been disposed?).`)}function E(e){delete u[e]}e.findJSFunction=w,e.disposeJSObjectReferenceById=E;class S{constructor(e,t){this._id=e,this._callDispatcher=t}invokeMethod(e,...t){return this._callDispatcher.invokeDotNetMethod(null,e,this._id,t)}invokeMethodAsync(e,...t){return this._callDispatcher.invokeDotNetMethodAsync(null,e,this._id,t)}dispose(){this._callDispatcher.invokeDotNetMethodAsync(null,"__Dispose",this._id,null).catch((e=>console.error(e)))}serializeAsArg(){return{[r]:this._id}}}e.DotNetObject=S,f((function(e,t){if(t&&"object"==typeof t){if(t.hasOwnProperty(r))return new S(t[r],c);if(t.hasOwnProperty(n)){const e=t[n],r=u[e];if(r)return r.getWrappedObject();throw new Error(`JS object instance with Id '${e}' does not exist. It may have been disposed.`)}if(t.hasOwnProperty(o)){const e=t[o],n=c.processByteArray(e);if(void 0===n)throw new Error(`Byte array index '${e}' does not exist.`);return n}if(t.hasOwnProperty(a)){const e=t[a],n=c.getDotNetStreamPromise(e);return new I(n)}}return t}));class I{constructor(e){this._streamPromise=e}stream(){return this._streamPromise}async arrayBuffer(){return new Response(await this.stream()).arrayBuffer()}}class C{constructor(){this.streamPromise=new Promise(((e,t)=>{this.resolve=e,this.reject=t}))}}function D(e,t){switch(t){case d.Default:return e;case d.JSObjectReference:return m(e);case d.JSStreamReference:return p(e);case d.JSVoidResult:return null;default:throw new Error(`Invalid JS call result type '${t}'.`)}}let A=0;function N(e,t){A=0,c=e;const n=JSON.stringify(t,k);return c=void 0,n}function k(e,t){if(t instanceof S)return t.serializeAsArg();if(t instanceof Uint8Array){c.getDotNetCallDispatcher().sendByteArray(A,t);const e={[o]:A};return A++,e}return t}}(e||(e={})),function(e){e[e.prependFrame=1]="prependFrame",e[e.removeFrame=2]="removeFrame",e[e.setAttribute=3]="setAttribute",e[e.removeAttribute=4]="removeAttribute",e[e.updateText=5]="updateText",e[e.stepIn=6]="stepIn",e[e.stepOut=7]="stepOut",e[e.updateMarkup=8]="updateMarkup",e[e.permutationListEntry=9]="permutationListEntry",e[e.permutationListEnd=10]="permutationListEnd"}(t||(t={})),function(e){e[e.element=1]="element",e[e.text=2]="text",e[e.attribute=3]="attribute",e[e.component=4]="component",e[e.region=5]="region",e[e.elementReferenceCapture=6]="elementReferenceCapture",e[e.markup=8]="markup",e[e.namedEvent=10]="namedEvent"}(n||(n={}));class o{constructor(e,t){this.componentId=e,this.fieldValue=t}static fromEvent(e,t){const n=t.target;if(n instanceof Element){const t=function(e){return e instanceof HTMLInputElement?e.type&&"checkbox"===e.type.toLowerCase()?{value:e.checked}:{value:e.value}:e instanceof HTMLSelectElement||e instanceof HTMLTextAreaElement?{value:e.value}:null}(n);if(t)return new o(e,t.value)}return null}}const a=new Map,i=new Map,s=[];function c(e){return a.get(e)}function l(e){const t=a.get(e);return(null==t?void 0:t.browserEventName)||e}function u(e,t){e.forEach((e=>a.set(e,t)))}function d(e){const t=[];for(let n=0;ne.selected)).map((e=>e.value))}}{const e=function(e){return!!e&&"INPUT"===e.tagName&&"checkbox"===e.getAttribute("type")}(t);return{value:e?!!t.checked:t.value}}}}),u(["copy","cut","paste"],{createEventArgs:e=>({type:e.type})}),u(["drag","dragend","dragenter","dragleave","dragover","dragstart","drop"],{createEventArgs:e=>{return{...h(t=e),dataTransfer:t.dataTransfer?{dropEffect:t.dataTransfer.dropEffect,effectAllowed:t.dataTransfer.effectAllowed,files:Array.from(t.dataTransfer.files).map((e=>e.name)),items:Array.from(t.dataTransfer.items).map((e=>({kind:e.kind,type:e.type}))),types:t.dataTransfer.types}:null};var t}}),u(["focus","blur","focusin","focusout"],{createEventArgs:e=>({type:e.type})}),u(["keydown","keyup","keypress"],{createEventArgs:e=>{return{key:(t=e).key,code:t.code,location:t.location,repeat:t.repeat,ctrlKey:t.ctrlKey,shiftKey:t.shiftKey,altKey:t.altKey,metaKey:t.metaKey,type:t.type};var t}}),u(["contextmenu","click","mouseover","mouseout","mousemove","mousedown","mouseup","mouseleave","mouseenter","dblclick"],{createEventArgs:e=>h(e)}),u(["error"],{createEventArgs:e=>{return{message:(t=e).message,filename:t.filename,lineno:t.lineno,colno:t.colno,type:t.type};var t}}),u(["loadstart","timeout","abort","load","loadend","progress"],{createEventArgs:e=>{return{lengthComputable:(t=e).lengthComputable,loaded:t.loaded,total:t.total,type:t.type};var t}}),u(["touchcancel","touchend","touchmove","touchenter","touchleave","touchstart"],{createEventArgs:e=>{return{detail:(t=e).detail,touches:d(t.touches),targetTouches:d(t.targetTouches),changedTouches:d(t.changedTouches),ctrlKey:t.ctrlKey,shiftKey:t.shiftKey,altKey:t.altKey,metaKey:t.metaKey,type:t.type};var t}}),u(["gotpointercapture","lostpointercapture","pointercancel","pointerdown","pointerenter","pointerleave","pointermove","pointerout","pointerover","pointerup"],{createEventArgs:e=>{return{...h(t=e),pointerId:t.pointerId,width:t.width,height:t.height,pressure:t.pressure,tiltX:t.tiltX,tiltY:t.tiltY,pointerType:t.pointerType,isPrimary:t.isPrimary};var t}}),u(["wheel","mousewheel"],{createEventArgs:e=>{return{...h(t=e),deltaX:t.deltaX,deltaY:t.deltaY,deltaZ:t.deltaZ,deltaMode:t.deltaMode};var t}}),u(["cancel","close","toggle"],{createEventArgs:()=>({})});const f=["date","datetime-local","month","time","week"],m=new Map;let p,b,v=0;const g={async add(e,t,n){if(!n)throw new Error("initialParameters must be an object, even if empty.");const r="__bl-dynamic-root:"+(++v).toString();m.set(r,e);const o=await E().invokeMethodAsync("AddRootComponent",t,r),a=new w(o,b[t]);return await a.setParameters(n),a}};class y{invoke(e){return this._callback(e)}setCallback(t){this._selfJSObjectReference||(this._selfJSObjectReference=e.createJSObjectReference(this)),this._callback=t}getJSObjectReference(){return this._selfJSObjectReference}dispose(){this._selfJSObjectReference&&e.disposeJSObjectReference(this._selfJSObjectReference)}}class w{constructor(e,t){this._jsEventCallbackWrappers=new Map,this._componentId=e;for(const e of t)"eventcallback"===e.type&&this._jsEventCallbackWrappers.set(e.name.toLowerCase(),new y)}setParameters(e){const t={},n=Object.entries(e||{}),r=n.length;for(const[e,r]of n){const n=this._jsEventCallbackWrappers.get(e.toLowerCase());n&&r?(n.setCallback(r),t[e]=n.getJSObjectReference()):t[e]=r}return E().invokeMethodAsync("SetRootComponentParameters",this._componentId,r,t)}async dispose(){if(null!==this._componentId){await E().invokeMethodAsync("RemoveRootComponent",this._componentId),this._componentId=null;for(const e of this._jsEventCallbackWrappers.values())e.dispose()}}}function E(){if(!p)throw new Error("Dynamic root components have not been enabled in this application.");return p}const S=new Map,I=[],C=new Map;function D(e,t,n){return N(e,t.eventHandlerId,(()=>A(e).invokeMethodAsync("DispatchEventAsync",t,n)))}function A(e){const t=S.get(e);if(!t)throw new Error(`No interop methods are registered for renderer ${e}`);return t}let N=(e,t,n)=>n();const k=x(["abort","blur","cancel","canplay","canplaythrough","change","close","cuechange","durationchange","emptied","ended","error","focus","load","loadeddata","loadedmetadata","loadend","loadstart","mouseenter","mouseleave","pointerenter","pointerleave","pause","play","playing","progress","ratechange","reset","scroll","seeked","seeking","stalled","submit","suspend","timeupdate","toggle","unload","volumechange","waiting","DOMNodeInsertedIntoDocument","DOMNodeRemovedFromDocument"]),R={submit:!0},T=x(["click","dblclick","mousedown","mousemove","mouseup"]);class _{constructor(e){this.browserRendererId=e,this.afterClickCallbacks=[];const t=++_.nextEventDelegatorId;this.eventsCollectionKey=`_blazorEvents_${t}`,this.eventInfoStore=new O(this.onGlobalEvent.bind(this))}setListener(e,t,n,r){const o=this.getEventHandlerInfosForElement(e,!0),a=o.getHandler(t);if(a)this.eventInfoStore.update(a.eventHandlerId,n);else{const a={element:e,eventName:t,eventHandlerId:n,renderingComponentId:r};this.eventInfoStore.add(a),o.setHandler(t,a)}}getHandler(e){return this.eventInfoStore.get(e)}removeListener(e){const t=this.eventInfoStore.remove(e);if(t){const e=t.element,n=this.getEventHandlerInfosForElement(e,!1);n&&n.removeHandler(t.eventName)}}notifyAfterClick(e){this.afterClickCallbacks.push(e),this.eventInfoStore.addGlobalListener("click")}setStopPropagation(e,t,n){this.getEventHandlerInfosForElement(e,!0).stopPropagation(t,n)}setPreventDefault(e,t,n){this.getEventHandlerInfosForElement(e,!0).preventDefault(t,n)}onGlobalEvent(e){if(!(e.target instanceof Element))return;this.dispatchGlobalEventToAllElements(e.type,e);const t=(n=e.type,i.get(n));var n;t&&t.forEach((t=>this.dispatchGlobalEventToAllElements(t,e))),"click"===e.type&&this.afterClickCallbacks.forEach((t=>t(e)))}dispatchGlobalEventToAllElements(e,t){const n=t.composedPath();let r=n.shift(),a=null,i=!1;const s=Object.prototype.hasOwnProperty.call(k,e);let l=!1;for(;r;){const h=r,f=this.getEventHandlerInfosForElement(h,!1);if(f){const n=f.getHandler(e);if(n&&(u=h,d=t.type,!((u instanceof HTMLButtonElement||u instanceof HTMLInputElement||u instanceof HTMLTextAreaElement||u instanceof HTMLSelectElement)&&Object.prototype.hasOwnProperty.call(T,d)&&u.disabled))){if(!i){const n=c(e);a=(null==n?void 0:n.createEventArgs)?n.createEventArgs(t):{},i=!0}Object.prototype.hasOwnProperty.call(R,t.type)&&t.preventDefault(),D(this.browserRendererId,{eventHandlerId:n.eventHandlerId,eventName:e,eventFieldInfo:o.fromEvent(n.renderingComponentId,t)},a)}f.stopPropagation(e)&&(l=!0),f.preventDefault(e)&&t.preventDefault()}r=s||l?void 0:n.shift()}var u,d}getEventHandlerInfosForElement(e,t){return Object.prototype.hasOwnProperty.call(e,this.eventsCollectionKey)?e[this.eventsCollectionKey]:t?e[this.eventsCollectionKey]=new L:null}}_.nextEventDelegatorId=0;class O{constructor(e){this.globalListener=e,this.infosByEventHandlerId={},this.countByEventName={},s.push(this.handleEventNameAliasAdded.bind(this))}add(e){if(this.infosByEventHandlerId[e.eventHandlerId])throw new Error(`Event ${e.eventHandlerId} is already tracked`);this.infosByEventHandlerId[e.eventHandlerId]=e,this.addGlobalListener(e.eventName)}get(e){return this.infosByEventHandlerId[e]}addGlobalListener(e){if(e=l(e),Object.prototype.hasOwnProperty.call(this.countByEventName,e))this.countByEventName[e]++;else{this.countByEventName[e]=1;const t=Object.prototype.hasOwnProperty.call(k,e);document.addEventListener(e,this.globalListener,t)}}update(e,t){if(Object.prototype.hasOwnProperty.call(this.infosByEventHandlerId,t))throw new Error(`Event ${t} is already tracked`);const n=this.infosByEventHandlerId[e];delete this.infosByEventHandlerId[e],n.eventHandlerId=t,this.infosByEventHandlerId[t]=n}remove(e){const t=this.infosByEventHandlerId[e];if(t){delete this.infosByEventHandlerId[e];const n=l(t.eventName);0==--this.countByEventName[n]&&(delete this.countByEventName[n],document.removeEventListener(n,this.globalListener))}return t}handleEventNameAliasAdded(e,t){if(Object.prototype.hasOwnProperty.call(this.countByEventName,e)){const n=this.countByEventName[e];delete this.countByEventName[e],document.removeEventListener(e,this.globalListener),this.addGlobalListener(t),this.countByEventName[t]+=n-1}}}class L{constructor(){this.handlers={},this.preventDefaultFlags=null,this.stopPropagationFlags=null}getHandler(e){return Object.prototype.hasOwnProperty.call(this.handlers,e)?this.handlers[e]:null}setHandler(e,t){this.handlers[e]=t}removeHandler(e){delete this.handlers[e]}preventDefault(e,t){return void 0!==t&&(this.preventDefaultFlags=this.preventDefaultFlags||{},this.preventDefaultFlags[e]=t),!!this.preventDefaultFlags&&this.preventDefaultFlags[e]}stopPropagation(e,t){return void 0!==t&&(this.stopPropagationFlags=this.stopPropagationFlags||{},this.stopPropagationFlags[e]=t),!!this.stopPropagationFlags&&this.stopPropagationFlags[e]}}function x(e){const t={};return e.forEach((e=>{t[e]=!0})),t}const F=Symbol(),M=Symbol();function P(e,t){if(F in e)return e;const n=[];if(e.childNodes.length>0){if(!t)throw new Error("New logical elements must start empty, or allowExistingContents must be true");e.childNodes.forEach((t=>{const r=P(t,!0);r[M]=e,n.push(r)}))}return e[F]=n,e}function B(e){const t=W(e);for(;t.length;)J(e,0)}function j(e,t){const n=document.createComment("!");return H(n,e,t),n}function H(e,t,n){const r=e;let o=e;if(e instanceof Comment){const t=W(r);if((null==t?void 0:t.length)>0){const t=G(r),n=new Range;n.setStartBefore(e),n.setEndAfter(t),o=n.extractContents()}}const a=U(r);if(a){const e=W(a),t=Array.prototype.indexOf.call(e,r);e.splice(t,1),delete r[M]}const i=W(t);if(n0;)J(n,0)}const r=n;r.parentNode.removeChild(r)}function U(e){return e[M]||null}function z(e,t){return W(e)[t]}function $(e){const t=X(e);return"http://www.w3.org/2000/svg"===t.namespaceURI&&"foreignObject"!==t.tagName}function W(e){return e[F]}function K(e){const t=W(U(e));return t[Array.prototype.indexOf.call(t,e)+1]||null}function V(e,t){const n=W(e);t.forEach((e=>{e.moveRangeStart=n[e.fromSiblingIndex],e.moveRangeEnd=G(e.moveRangeStart)})),t.forEach((t=>{const r=document.createComment("marker");t.moveToBeforeMarker=r;const o=n[t.toSiblingIndex+1];o?o.parentNode.insertBefore(r,o):Y(r,e)})),t.forEach((e=>{const t=e.moveToBeforeMarker,n=t.parentNode,r=e.moveRangeStart,o=e.moveRangeEnd;let a=r;for(;a;){const e=a.nextSibling;if(n.insertBefore(a,t),a===o)break;a=e}n.removeChild(t)})),t.forEach((e=>{n[e.toSiblingIndex]=e.moveRangeStart}))}function X(e){if(e instanceof Element||e instanceof DocumentFragment)return e;if(e instanceof Comment)return e.parentNode;throw new Error("Not a valid logical element")}function Y(e,t){if(t instanceof Element||t instanceof DocumentFragment)t.appendChild(e);else{if(!(t instanceof Comment))throw new Error(`Cannot append node because the parent is not a valid logical element. Parent: ${t}`);{const n=K(t);n?n.parentNode.insertBefore(e,n):Y(e,U(t))}}}function G(e){if(e instanceof Element||e instanceof DocumentFragment)return e;const t=K(e);if(t)return t.previousSibling;{const t=U(e);return t instanceof Element||t instanceof DocumentFragment?t.lastChild:G(t)}}function q(e){return`_bl_${e}`}Symbol();const Z="__internalId";e.attachReviver(((e,t)=>t&&"object"==typeof t&&Object.prototype.hasOwnProperty.call(t,Z)&&"string"==typeof t[Z]?function(e){const t=`[${q(e)}]`;return document.querySelector(t)}(t[Z]):t));const Q="_blazorDeferredValue";function ee(e){return"select-multiple"===e.type}function te(e,t){e.value=t||""}function ne(e,t){e instanceof HTMLSelectElement?ee(e)?function(e,t){t||(t=[]);for(let n=0;n{Ce()&&function(e,t){if(0!==e.button||function(e){return e.ctrlKey||e.shiftKey||e.altKey||e.metaKey}(e))return;if(e.defaultPrevented)return;const n=function(e){const t=!window._blazorDisableComposedPath&&e.composedPath&&e.composedPath();if(t){for(let e=0;e{const t=document.createElement("script");t.textContent=e.textContent,e.getAttributeNames().forEach((n=>{t.setAttribute(n,e.getAttribute(n))})),e.parentNode.replaceChild(t,e)})),oe.content));var i;let s=0;for(;a.firstChild;)H(a.firstChild,o,s++)}applyAttribute(e,t,n,r){const o=e.frameReader,a=o.attributeName(r),i=o.attributeEventHandlerId(r);if(i){const e=he(a);return void this.eventDelegator.setListener(n,e,i,t)}const s=o.attributeValue(r);this.setOrRemoveAttributeOrProperty(n,a,s)}insertFrameRange(e,t,n,r,o,a,i){const s=r;for(let s=a;s{He(t,e)})},enableNavigationInterception:function(e){if(void 0!==me&&me!==e)throw new Error("Only one interactive runtime may enable navigation interception at a time.");me=e},setHasLocationChangingListeners:function(e,t){const n=Re.get(e);if(!n)throw new Error(`Renderer with ID '${e}' is not listening for navigation events`);n.hasLocationChangingEventListeners=t},endLocationChanging:function(e,t){_e&&e===ke&&(_e(t),_e=null)},navigateTo:function(e,t){xe(e,t,!0)},refresh:function(e){!e&&we()?Ee(location.href,!0):location.reload()},getBaseURI:()=>document.baseURI,getLocationHref:()=>location.href,scrollToElement:Le};function Le(e){const t=document.getElementById(e);return!!t&&(t.scrollIntoView(),!0)}function xe(e,t,n=!1){const r=Se(e),o=ze();if(t.forceLoad||!ye(r)||"serverside-fullpageload"===o)!function(e,t){if(location.href===e){const t=e+"?";history.replaceState(null,"",t),location.replace(e)}else t?location.replace(e):location.href=e}(e,t.replaceHistoryEntry);else if("clientside-router"===o)Fe(r,!1,t.replaceHistoryEntry,t.historyEntryState,n);else{if("serverside-enhanced"!==o)throw new Error(`Unsupported page load mechanism: ${o}`);Ee(r,t.replaceHistoryEntry)}}async function Fe(e,t,n,r=void 0,o=!1){if(Be(),function(e){const t=e.indexOf("#");return t>-1&&location.href.replace(location.hash,"")===e.substring(0,t)}(e))return void function(e,t,n){Me(e,t,n);const r=e.indexOf("#");r!==e.length-1&&Le(e.substring(r+1))}(e,n,r);const a=Ue();(o||!(null==a?void 0:a.hasLocationChangingEventListeners)||await je(e,r,t,a))&&(ge=!0,Me(e,n,r),await He(t))}function Me(e,t,n=void 0){t?history.replaceState({userState:n,_index:Ne},"",e):(Ne++,history.pushState({userState:n,_index:Ne},"",e))}function Pe(e){return new Promise((t=>{const n=Te;Te=()=>{Te=n,t()},history.go(e)}))}function Be(){_e&&(_e(!1),_e=null)}function je(e,t,n,r){return new Promise((o=>{Be(),ke++,_e=o,r.locationChanging(ke,e,t,n)}))}async function He(e,t){const n=null!=t?t:location.href;await Promise.all(Array.from(Re,(async([t,r])=>{var o,a;a=t,S.has(a)&&await r.locationChanged(n,null===(o=history.state)||void 0===o?void 0:o.userState,e)})))}async function Je(e){var t,n;Te&&"serverside-enhanced"!==ze()&&await Te(e),Ne=null!==(n=null===(t=history.state)||void 0===t?void 0:t._index)&&void 0!==n?n:0}function Ue(){const e=De();if(void 0!==e)return Re.get(e)}function ze(){return Ce()?"clientside-router":we()?"serverside-enhanced":window.Blazor._internal.isBlazorWeb?"serverside-fullpageload":"clientside-router"}const $e={focus:function(e,t){if(e instanceof HTMLElement)e.focus({preventScroll:t});else{if(!(e instanceof SVGElement))throw new Error("Unable to focus an invalid element.");if(!e.hasAttribute("tabindex"))throw new Error("Unable to focus an SVG element that does not have a tabindex.");e.focus({preventScroll:t})}},focusBySelector:function(e,t){const n=document.querySelector(e);n&&(n.hasAttribute("tabindex")||(n.tabIndex=-1),n.focus({preventScroll:!0}))}},We={init:function(e,t,n,r=50){const o=Ve(t);(o||document.documentElement).style.overflowAnchor="none";const a=document.createRange();h(n.parentElement)&&(t.style.display="table-row",n.style.display="table-row");const i=new IntersectionObserver((function(r){r.forEach((r=>{var o;if(!r.isIntersecting)return;a.setStartAfter(t),a.setEndBefore(n);const i=a.getBoundingClientRect().height,s=null===(o=r.rootBounds)||void 0===o?void 0:o.height;r.target===t?e.invokeMethodAsync("OnSpacerBeforeVisible",r.intersectionRect.top-r.boundingClientRect.top,i,s):r.target===n&&n.offsetHeight>0&&e.invokeMethodAsync("OnSpacerAfterVisible",r.boundingClientRect.bottom-r.intersectionRect.bottom,i,s)}))}),{root:o,rootMargin:`${r}px`});i.observe(t),i.observe(n);const s=d(t),c=d(n),{observersByDotNetObjectId:l,id:u}=Xe(e);function d(e){const t={attributes:!0},n=new MutationObserver(((n,r)=>{h(e.parentElement)&&(r.disconnect(),e.style.display="table-row",r.observe(e,t)),i.unobserve(e),i.observe(e)}));return n.observe(e,t),n}function h(e){return null!==e&&(e instanceof HTMLTableElement&&""===e.style.display||"table"===e.style.display||e instanceof HTMLTableSectionElement&&""===e.style.display||"table-row-group"===e.style.display)}l[u]={intersectionObserver:i,mutationObserverBefore:s,mutationObserverAfter:c}},dispose:function(e){const{observersByDotNetObjectId:t,id:n}=Xe(e),r=t[n];r&&(r.intersectionObserver.disconnect(),r.mutationObserverBefore.disconnect(),r.mutationObserverAfter.disconnect(),e.dispose(),delete t[n])}},Ke=Symbol();function Ve(e){return e&&e!==document.body&&e!==document.documentElement?"visible"!==getComputedStyle(e).overflowY?e:Ve(e.parentElement):null}function Xe(e){var t;const n=e._callDispatcher,r=e._id;return null!==(t=n[Ke])&&void 0!==t||(n[Ke]={}),{observersByDotNetObjectId:n[Ke],id:r}}const Ye={getAndRemoveExistingTitle:function(){var e;const t=document.head?document.head.getElementsByTagName("title"):[];if(0===t.length)return null;let n=null;for(let r=t.length-1;r>=0;r--){const o=t[r],a=o.previousSibling;a instanceof Comment&&null!==U(a)||(null===n&&(n=o.textContent),null===(e=o.parentNode)||void 0===e||e.removeChild(o))}return n}},Ge={init:function(e,t){t._blazorInputFileNextFileId=0,t.addEventListener("click",(function(){t.value=""})),t.addEventListener("change",(function(){t._blazorFilesById={};const n=Array.prototype.map.call(t.files,(function(e){const n={id:++t._blazorInputFileNextFileId,lastModified:new Date(e.lastModified).toISOString(),name:e.name,size:e.size,contentType:e.type,readPromise:void 0,arrayBuffer:void 0,blob:e};return t._blazorFilesById[n.id]=n,n}));e.invokeMethodAsync("NotifyChange",n)}))},toImageFile:async function(e,t,n,r,o){const a=qe(e,t),i=await new Promise((function(e){const t=new Image;t.onload=function(){URL.revokeObjectURL(t.src),e(t)},t.onerror=function(){t.onerror=null,URL.revokeObjectURL(t.src)},t.src=URL.createObjectURL(a.blob)})),s=await new Promise((function(e){var t;const a=Math.min(1,r/i.width),s=Math.min(1,o/i.height),c=Math.min(a,s),l=document.createElement("canvas");l.width=Math.round(i.width*c),l.height=Math.round(i.height*c),null===(t=l.getContext("2d"))||void 0===t||t.drawImage(i,0,0,l.width,l.height),l.toBlob(e,n)})),c={id:++e._blazorInputFileNextFileId,lastModified:a.lastModified,name:a.name,size:(null==s?void 0:s.size)||0,contentType:n,blob:s||a.blob};return e._blazorFilesById[c.id]=c,c},readFileData:async function(e,t){return qe(e,t).blob}};function qe(e,t){const n=e._blazorFilesById[t];if(!n)throw new Error(`There is no file with ID ${t}. The file list may have changed. See https://aka.ms/aspnet/blazor-input-file-multiple-selections.`);return n}const Ze=new Set,Qe={enableNavigationPrompt:function(e){0===Ze.size&&window.addEventListener("beforeunload",et),Ze.add(e)},disableNavigationPrompt:function(e){Ze.delete(e),0===Ze.size&&window.removeEventListener("beforeunload",et)}};function et(e){e.preventDefault(),e.returnValue=!0}const tt=new Map,nt={navigateTo:function(e,t,n=!1){xe(e,t instanceof Object?t:{forceLoad:t,replaceHistoryEntry:n})},registerCustomEventType:function(e,t){if(!t)throw new Error("The options parameter is required.");if(a.has(e))throw new Error(`The event '${e}' is already registered.`);if(t.browserEventName){const n=i.get(t.browserEventName);n?n.push(e):i.set(t.browserEventName,[e]),s.forEach((n=>n(e,t.browserEventName)))}a.set(e,t)},rootComponents:g,runtime:{},_internal:{navigationManager:Oe,domWrapper:$e,Virtualize:We,PageTitle:Ye,InputFile:Ge,NavigationLock:Qe,getJSDataStreamChunk:async function(e,t,n){return e instanceof Blob?await async function(e,t,n){const r=e.slice(t,t+n),o=await r.arrayBuffer();return new Uint8Array(o)}(e,t,n):function(e,t,n){return new Uint8Array(e.buffer,e.byteOffset+t,n)}(e,t,n)},attachWebRendererInterop:function(t,n,r,o){var a,i;if(S.has(t))throw new Error(`Interop methods are already registered for renderer ${t}`);S.set(t,n),r&&o&&Object.keys(r).length>0&&function(t,n,r){if(p)throw new Error("Dynamic root components have already been enabled.");p=t,b=n;for(const[t,o]of Object.entries(r)){const r=e.findJSFunction(t,0);for(const e of o)r(e,n[e])}}(A(t),r,o),null===(i=null===(a=C.get(t))||void 0===a?void 0:a[0])||void 0===i||i.call(a),function(e){for(const t of I)t(e)}(t)}}};window.Blazor=nt;let rt=!1;const ot="function"==typeof TextDecoder?new TextDecoder("utf-8"):null,at=ot?ot.decode.bind(ot):function(e){let t=0;const n=e.length,r=[],o=[];for(;t65535&&(o-=65536,r.push(o>>>10&1023|55296),o=56320|1023&o),r.push(o)}r.length>1024&&(o.push(String.fromCharCode.apply(null,r)),r.length=0)}return o.push(String.fromCharCode.apply(null,r)),o.join("")},it=Math.pow(2,32),st=Math.pow(2,21)-1;function ct(e,t){return e[t]|e[t+1]<<8|e[t+2]<<16|e[t+3]<<24}function lt(e,t){return e[t]+(e[t+1]<<8)+(e[t+2]<<16)+(e[t+3]<<24>>>0)}function ut(e,t){const n=lt(e,t+4);if(n>st)throw new Error(`Cannot read uint64 with high order part ${n}, because the result would exceed Number.MAX_SAFE_INTEGER.`);return n*it+lt(e,t)}class dt{constructor(e){this.batchData=e;const t=new pt(e);this.arrayRangeReader=new bt(e),this.arrayBuilderSegmentReader=new vt(e),this.diffReader=new ht(e),this.editReader=new ft(e,t),this.frameReader=new mt(e,t)}updatedComponents(){return ct(this.batchData,this.batchData.length-20)}referenceFrames(){return ct(this.batchData,this.batchData.length-16)}disposedComponentIds(){return ct(this.batchData,this.batchData.length-12)}disposedEventHandlerIds(){return ct(this.batchData,this.batchData.length-8)}updatedComponentsEntry(e,t){const n=e+4*t;return ct(this.batchData,n)}referenceFramesEntry(e,t){return e+20*t}disposedComponentIdsEntry(e,t){const n=e+4*t;return ct(this.batchData,n)}disposedEventHandlerIdsEntry(e,t){const n=e+8*t;return ut(this.batchData,n)}}class ht{constructor(e){this.batchDataUint8=e}componentId(e){return ct(this.batchDataUint8,e)}edits(e){return e+4}editsEntry(e,t){return e+16*t}}class ft{constructor(e,t){this.batchDataUint8=e,this.stringReader=t}editType(e){return ct(this.batchDataUint8,e)}siblingIndex(e){return ct(this.batchDataUint8,e+4)}newTreeIndex(e){return ct(this.batchDataUint8,e+8)}moveToSiblingIndex(e){return ct(this.batchDataUint8,e+8)}removedAttributeName(e){const t=ct(this.batchDataUint8,e+12);return this.stringReader.readString(t)}}class mt{constructor(e,t){this.batchDataUint8=e,this.stringReader=t}frameType(e){return ct(this.batchDataUint8,e)}subtreeLength(e){return ct(this.batchDataUint8,e+4)}elementReferenceCaptureId(e){const t=ct(this.batchDataUint8,e+4);return this.stringReader.readString(t)}componentId(e){return ct(this.batchDataUint8,e+8)}elementName(e){const t=ct(this.batchDataUint8,e+8);return this.stringReader.readString(t)}textContent(e){const t=ct(this.batchDataUint8,e+4);return this.stringReader.readString(t)}markupContent(e){const t=ct(this.batchDataUint8,e+4);return this.stringReader.readString(t)}attributeName(e){const t=ct(this.batchDataUint8,e+4);return this.stringReader.readString(t)}attributeValue(e){const t=ct(this.batchDataUint8,e+8);return this.stringReader.readString(t)}attributeEventHandlerId(e){return ut(this.batchDataUint8,e+12)}}class pt{constructor(e){this.batchDataUint8=e,this.stringTableStartIndex=ct(e,e.length-4)}readString(e){if(-1===e)return null;{const n=ct(this.batchDataUint8,this.stringTableStartIndex+4*e),r=function(e,t){let n=0,r=0;for(let o=0;o<4;o++){const a=e[t+o];if(n|=(127&a)<async function(e,n){const r=function(e){const t=document.baseURI;return t.endsWith("/")?`${t}${e}`:`${t}/${e}`}(n),o=await import(r);if(void 0!==o){if(e.singleRuntime){const{beforeStart:n,afterStarted:r,beforeWebAssemblyStart:i,afterWebAssemblyStarted:s,beforeServerStart:c,afterServerStarted:l}=o;let u=n;e.webRendererId===Nt.Server&&c&&(u=c),e.webRendererId===Nt.WebAssembly&&i&&(u=i);let d=r;return e.webRendererId===Nt.Server&&l&&(d=l),e.webRendererId===Nt.WebAssembly&&s&&(d=s),a(e,u,d,t)}return function(e,t,n){var o;const i=n[0],{beforeStart:s,afterStarted:c,beforeWebStart:l,afterWebStarted:u,beforeWebAssemblyStart:d,afterWebAssemblyStarted:h,beforeServerStart:f,afterServerStarted:m}=t,p=!(l||u||d||h||f||m||!s&&!c),b=p&&i.enableClassicInitializers;if(p&&!i.enableClassicInitializers)null===(o=e.logger)||void 0===o||o.log(kt.Warning,`Initializer '${r}' will be ignored because multiple runtimes are available. use 'before(web|webAssembly|server)Start' and 'after(web|webAssembly|server)Started?' instead.)`);else if(b)return a(e,s,c,n);if(function(e){e.webAssembly?e.webAssembly.initializers||(e.webAssembly.initializers={beforeStart:[],afterStarted:[]}):e.webAssembly={initializers:{beforeStart:[],afterStarted:[]}},e.circuit?e.circuit.initializers||(e.circuit.initializers={beforeStart:[],afterStarted:[]}):e.circuit={initializers:{beforeStart:[],afterStarted:[]}}}(i),d&&i.webAssembly.initializers.beforeStart.push(d),h&&i.webAssembly.initializers.afterStarted.push(h),f&&i.circuit.initializers.beforeStart.push(f),m&&i.circuit.initializers.afterStarted.push(m),u&&e.afterStartedCallbacks.push(u),l)return l(i)}(e,o,t)}function a(e,t,n,r){if(n&&e.afterStartedCallbacks.push(n),t)return t(...r)}}(this,e))))}async invokeAfterStartedCallbacks(e){const t=(n=this.webRendererId,null===(r=C.get(n))||void 0===r?void 0:r[1]);var n,r;t&&await t,await Promise.all(this.afterStartedCallbacks.map((t=>t(e))))}}let Ot,Lt=!1;async function xt(){if(Lt)throw new Error("Blazor has already started.");Lt=!0,Ot=e.attachDispatcher({beginInvokeDotNetFromJS:Et,endInvokeJSFromDotNet:St,sendByteArray:It});const t=await async function(){const e=await fetch("http://github.com/_framework/blazor.modules.json",{method:"GET",credentials:"include",cache:"no-cache"}),t=await e.json(),n=new _t;return await n.importInitializersAsync(t,[]),n}();(function(){const e={AttachToDocument:(e,t)=>{!function(e,t,n){const r="::before";let o=!1;if(e.endsWith("::after"))e=e.slice(0,-7),o=!0;else if(e.endsWith(r))throw new Error(`The '${r}' selector is not supported.`);const a=function(e){const t=m.get(e);if(t)return m.delete(e),t}(e)||document.querySelector(e);if(!a)throw new Error(`Could not find any element matching selector '${e}'.`);!function(e,t,n,r){let o=fe[e];o||(o=new le(e),fe[e]=o),o.attachRootComponentToLogicalElement(n,t,r)}(n,P(a,!0),t,o)}(t,e,Nt.WebView)},RenderBatch:(e,t)=>{try{const n=Tt(t);(function(e,t){const n=fe[e];if(!n)throw new Error(`There is no browser renderer with ID ${e}.`);const r=t.arrayRangeReader,o=t.updatedComponents(),a=r.values(o),i=r.count(o),s=t.referenceFrames(),c=r.values(s),l=t.diffReader;for(let e=0;e{yt=!0,console.error(`${e}\n${t}`),function(){const e=document.querySelector("#blazor-error-ui");e&&(e.style.display="block"),rt||(rt=!0,document.querySelectorAll("#blazor-error-ui .reload").forEach((e=>{e.onclick=function(e){location.reload(),e.preventDefault()}})),document.querySelectorAll("#blazor-error-ui .dismiss").forEach((e=>{e.onclick=function(e){const t=document.querySelector("#blazor-error-ui");t&&(t.style.display="none"),e.preventDefault()}})))}()},BeginInvokeJS:Ot.beginInvokeJSFromDotNet.bind(Ot),EndInvokeDotNet:Ot.endInvokeDotNetFromJS.bind(Ot),SendByteArrayToJS:Rt,Navigate:Oe.navigateTo,Refresh:Oe.refresh,SetHasLocationChangingListeners:e=>{Oe.setHasLocationChangingListeners(Nt.WebView,e)},EndLocationChanging:Oe.endLocationChanging};window.external.receiveMessage((t=>{const n=function(e){if(yt||!e||!e.startsWith(gt))return null;const t=e.substring(gt.length),[n,...r]=JSON.parse(t);return{messageType:n,args:r}}(t);if(n){if(!Object.prototype.hasOwnProperty.call(e,n.messageType))throw new Error(`Unsupported IPC message type '${n.messageType}'`);e[n.messageType].apply(null,n.args)}}))})(),nt._internal.receiveWebViewDotNetDataStream=Ft,Oe.enableNavigationInterception(Nt.WebView),Oe.listenForNavigationEvents(Nt.WebView,Ct,Dt),At("AttachPage",Oe.getBaseURI(),Oe.getLocationHref()),await t.invokeAfterStartedCallbacks(nt)}function Ft(e,t,n,r){!function(e,t,n,r,o){let a=tt.get(t);if(!a){const n=new ReadableStream({start(e){tt.set(t,e),a=e}});e.supplyDotNetStream(t,n)}o?(a.error(o),tt.delete(t)):0===r?(a.close(),tt.delete(t)):a.enqueue(n.length===r?n:n.subarray(0,r))}(Ot,e,t,n,r)}nt.start=xt,window.DotNet=e,document&&document.currentScript&&"false"!==document.currentScript.getAttribute("autostart")&&xt()})(); \ No newline at end of file diff --git a/src/Components/Web.JS/src/Rendering/LogicalElements.ts b/src/Components/Web.JS/src/Rendering/LogicalElements.ts index 9b120e18997d..a6e904febf04 100644 --- a/src/Components/Web.JS/src/Rendering/LogicalElements.ts +++ b/src/Components/Web.JS/src/Rendering/LogicalElements.ts @@ -149,12 +149,13 @@ export function insertLogicalChildBefore(child: Node, parent: LogicalElement, be export function insertLogicalChild(child: Node, parent: LogicalElement, childIndex: number): void { const childAsLogicalElement = child as unknown as LogicalElement; - // If the child is a component comment with logical siblings, its siblings also + // If the child is a component comment with logical children, its children // need to be inserted into the parent node let nodeToInsert = child; - if (isLogicalElement(child)) { - const lastNodeToInsert = findLastDomNodeInRange(childAsLogicalElement); - if (lastNodeToInsert !== child) { + if (child instanceof Comment) { + const existingGranchildren = getLogicalChildrenArray(childAsLogicalElement); + if (existingGranchildren?.length > 0) { + const lastNodeToInsert = findLastDomNodeInRange(childAsLogicalElement); const range = new Range(); range.setStartBefore(child); range.setEndAfter(lastNodeToInsert); diff --git a/src/Components/test/E2ETest/ServerRenderingTests/StreamingRenderingTest.cs b/src/Components/test/E2ETest/ServerRenderingTests/StreamingRenderingTest.cs index 8697a816141f..ddd8ff262230 100644 --- a/src/Components/test/E2ETest/ServerRenderingTests/StreamingRenderingTest.cs +++ b/src/Components/test/E2ETest/ServerRenderingTests/StreamingRenderingTest.cs @@ -316,4 +316,37 @@ public async Task WorksWithVeryBriefStreamingDelays() Assert.Matches(new Regex(@""), html); } } + + // https://github.com/dotnet/aspnetcore/issues/52126 + [Fact] + public void CanPerformEnhancedNavigation_AfterStreamingUpdate_WithInteractiveComponentInLayout() + { + Navigate($"{ServerPathBase}/interactive-in-layout/streaming"); + + Browser.Exists(By.Id("done-streaming")); + Browser.Equal("True", () => Browser.FindElement(By.Id("is-interactive-counter")).Text); + Browser.Click(By.Id("increment-counter")); + Browser.Equal("1", () => Browser.FindElement(By.Id("count-counter")).Text); + + Browser.Click(By.LinkText("Non-streaming")); + Browser.Exists(By.Id("non-streamed-content")); + + Browser.Click(By.Id("increment-counter")); + Browser.Equal("2", () => Browser.FindElement(By.Id("count-counter")).Text); + + AssertLogDoesNotContainCriticalMessages("DOMException"); + } + + private void AssertLogDoesNotContainCriticalMessages(params string[] messages) + { + var log = Browser.Manage().Logs.GetLog(LogType.Browser); + foreach (var message in messages) + { + Assert.DoesNotContain(log, entry => + { + return entry.Level == LogLevel.Severe + && entry.Message.Contains(message); + }); + } + } } diff --git a/src/Components/test/testassets/Components.TestServer/RazorComponents/Pages/StreamingRendering/InteractiveComponentInLayout/LayoutWithInteractiveComponent.razor b/src/Components/test/testassets/Components.TestServer/RazorComponents/Pages/StreamingRendering/InteractiveComponentInLayout/LayoutWithInteractiveComponent.razor new file mode 100644 index 000000000000..88d217928857 --- /dev/null +++ b/src/Components/test/testassets/Components.TestServer/RazorComponents/Pages/StreamingRendering/InteractiveComponentInLayout/LayoutWithInteractiveComponent.razor @@ -0,0 +1,9 @@ +@inherits LayoutComponentBase + +Streaming +Non-streaming + +@* https://github.com/dotnet/aspnetcore/issues/52126 *@ + + +@Body diff --git a/src/Components/test/testassets/Components.TestServer/RazorComponents/Pages/StreamingRendering/InteractiveComponentInLayout/NonStreamingPage.razor b/src/Components/test/testassets/Components.TestServer/RazorComponents/Pages/StreamingRendering/InteractiveComponentInLayout/NonStreamingPage.razor new file mode 100644 index 000000000000..962db061b158 --- /dev/null +++ b/src/Components/test/testassets/Components.TestServer/RazorComponents/Pages/StreamingRendering/InteractiveComponentInLayout/NonStreamingPage.razor @@ -0,0 +1,6 @@ +@layout LayoutWithInteractiveComponent +@page "/interactive-in-layout/non-streaming" + +

Non-streaming

+ +

Non-streamed content

diff --git a/src/Components/test/testassets/Components.TestServer/RazorComponents/Pages/StreamingRendering/InteractiveComponentInLayout/StreamingPage.razor b/src/Components/test/testassets/Components.TestServer/RazorComponents/Pages/StreamingRendering/InteractiveComponentInLayout/StreamingPage.razor new file mode 100644 index 000000000000..545fa2c79384 --- /dev/null +++ b/src/Components/test/testassets/Components.TestServer/RazorComponents/Pages/StreamingRendering/InteractiveComponentInLayout/StreamingPage.razor @@ -0,0 +1,20 @@ +@layout LayoutWithInteractiveComponent +@page "/interactive-in-layout/streaming" +@attribute [StreamRendering] + +

Streaming

+ +@if (_doneStreaming) +{ +

Done streaming!

+} + +@code { + bool _doneStreaming; + + protected override async Task OnInitializedAsync() + { + await Task.Delay(200); + _doneStreaming = true; + } +} From d686a13ad7117b63a9d894a9007148e4a4811466 Mon Sep 17 00:00:00 2001 From: DotNet Bot Date: Wed, 10 Jan 2024 23:39:04 +0000 Subject: [PATCH 082/391] [internal/release/8.0] Update dependencies from dnceng/internal/dotnet-efcore From 22cc39b0db4e0754be7742c406918aea19506a88 Mon Sep 17 00:00:00 2001 From: DotNet Bot Date: Thu, 11 Jan 2024 01:21:35 +0000 Subject: [PATCH 083/391] [internal/release/8.0] Update dependencies from dnceng/internal/dotnet-efcore --- NuGet.config | 4 ++-- eng/Version.Details.xml | 16 ++++++++-------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/NuGet.config b/NuGet.config index 0dbeddac132f..eb42145ef3b0 100644 --- a/NuGet.config +++ b/NuGet.config @@ -6,7 +6,7 @@ - + @@ -32,7 +32,7 @@ - + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 6763b121135a..cfe26d1c1d33 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -11,35 +11,35 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 1c9152ea533a90226306519f9c22e23add6b932c + 51383c47c8d1371473e679e544ee1dada6d4db19 https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 1c9152ea533a90226306519f9c22e23add6b932c + 51383c47c8d1371473e679e544ee1dada6d4db19 https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 1c9152ea533a90226306519f9c22e23add6b932c + 51383c47c8d1371473e679e544ee1dada6d4db19 https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 1c9152ea533a90226306519f9c22e23add6b932c + 51383c47c8d1371473e679e544ee1dada6d4db19 https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 1c9152ea533a90226306519f9c22e23add6b932c + 51383c47c8d1371473e679e544ee1dada6d4db19 https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 1c9152ea533a90226306519f9c22e23add6b932c + 51383c47c8d1371473e679e544ee1dada6d4db19 https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 1c9152ea533a90226306519f9c22e23add6b932c + 51383c47c8d1371473e679e544ee1dada6d4db19 https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 1c9152ea533a90226306519f9c22e23add6b932c + 51383c47c8d1371473e679e544ee1dada6d4db19 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime From f98d63c0dd07c61cd350c0f543378539d411cc4c Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" <42748379+dotnet-maestro[bot]@users.noreply.github.com> Date: Fri, 12 Jan 2024 15:30:50 +0000 Subject: [PATCH 084/391] Update dependencies from https://github.com/dotnet/source-build-reference-packages build 20240111.1 (#53324) [release/8.0] Update dependencies from dotnet/source-build-reference-packages --- eng/Version.Details.xml | 4 ++-- eng/Versions.props | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index f9d0d1e97000..ed15b5e9397c 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -338,9 +338,9 @@ 9a1c3e1b7f0c8763d4c96e593961a61a72679a7b - + https://github.com/dotnet/source-build-reference-packages - 95f83e27806330fec09edd96e06bba3acabe3f35 + 453a37ef7ae6c335cd49b3b9ab7713c87faeb265 diff --git a/eng/Versions.props b/eng/Versions.props index f4563ebc0b7e..5b440fbd1ec6 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -167,7 +167,7 @@ 8.0.0-alpha.1.24059.4 - 8.0.0-alpha.1.23565.1 + 8.0.0-alpha.1.24061.1 2.0.0-beta-23228-03 From fbe258ebadaab0dfe76927c864b79676810245c9 Mon Sep 17 00:00:00 2001 From: DotNet Bot Date: Fri, 12 Jan 2024 21:08:18 +0000 Subject: [PATCH 085/391] [internal/release/8.0] Update dependencies from dnceng/internal/dotnet-efcore --- NuGet.config | 4 ++-- eng/Version.Details.xml | 16 ++++++++-------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/NuGet.config b/NuGet.config index eb42145ef3b0..44a56e76a637 100644 --- a/NuGet.config +++ b/NuGet.config @@ -6,7 +6,7 @@ - + @@ -32,7 +32,7 @@ - + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index fd5132b9f967..a91bc4817f4e 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -11,35 +11,35 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 51383c47c8d1371473e679e544ee1dada6d4db19 + 76d71b380247f4f45a3048d9036bc1b2e788fb6d https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 51383c47c8d1371473e679e544ee1dada6d4db19 + 76d71b380247f4f45a3048d9036bc1b2e788fb6d https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 51383c47c8d1371473e679e544ee1dada6d4db19 + 76d71b380247f4f45a3048d9036bc1b2e788fb6d https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 51383c47c8d1371473e679e544ee1dada6d4db19 + 76d71b380247f4f45a3048d9036bc1b2e788fb6d https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 51383c47c8d1371473e679e544ee1dada6d4db19 + 76d71b380247f4f45a3048d9036bc1b2e788fb6d https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 51383c47c8d1371473e679e544ee1dada6d4db19 + 76d71b380247f4f45a3048d9036bc1b2e788fb6d https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 51383c47c8d1371473e679e544ee1dada6d4db19 + 76d71b380247f4f45a3048d9036bc1b2e788fb6d https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 51383c47c8d1371473e679e544ee1dada6d4db19 + 76d71b380247f4f45a3048d9036bc1b2e788fb6d https://dev.azure.com/dnceng/internal/_git/dotnet-runtime From 35e1129d086017e4de913f3cfa0dcd69a7a0561c Mon Sep 17 00:00:00 2001 From: Brennan Conroy Date: Fri, 12 Jan 2024 22:35:30 +0000 Subject: [PATCH 086/391] Merged PR 36023: Fix time scale We converted UtcNow.Ticks usage to Environment.TickCount64 usage. TickCount64 is in milliseconds and UtcNow.Ticks is in the 100-nanosecond scale. When we made this change we didn't convert TickCount64 to the same scale so comparisons were wrong. --- .../src/HttpConnectionDispatcherOptions.cs | 2 -- .../src/Internal/HttpConnectionContext.cs | 16 ++++----- .../src/Internal/HttpConnectionManager.cs | 8 ++--- .../test/HttpConnectionDispatcherTests.cs | 34 ++++++++++++++++--- 4 files changed, 41 insertions(+), 19 deletions(-) diff --git a/src/SignalR/common/Http.Connections/src/HttpConnectionDispatcherOptions.cs b/src/SignalR/common/Http.Connections/src/HttpConnectionDispatcherOptions.cs index f9da7eb5e304..8fa7ccc18491 100644 --- a/src/SignalR/common/Http.Connections/src/HttpConnectionDispatcherOptions.cs +++ b/src/SignalR/common/Http.Connections/src/HttpConnectionDispatcherOptions.cs @@ -112,7 +112,6 @@ public TimeSpan TransportSendTimeout ArgumentOutOfRangeException.ThrowIfEqual(value, TimeSpan.Zero); _transportSendTimeout = value; - TransportSendTimeoutTicks = value.Ticks; } } @@ -133,7 +132,6 @@ public TimeSpan TransportSendTimeout /// public bool AllowStatefulReconnects { get; set; } - internal long TransportSendTimeoutTicks { get; private set; } internal bool TransportSendTimeoutEnabled => _transportSendTimeout != Timeout.InfiniteTimeSpan; // We initialize these lazily based on the state of the options specified here. diff --git a/src/SignalR/common/Http.Connections/src/Internal/HttpConnectionContext.cs b/src/SignalR/common/Http.Connections/src/Internal/HttpConnectionContext.cs index bb426523ba81..3a859123651d 100644 --- a/src/SignalR/common/Http.Connections/src/Internal/HttpConnectionContext.cs +++ b/src/SignalR/common/Http.Connections/src/Internal/HttpConnectionContext.cs @@ -50,7 +50,7 @@ internal sealed partial class HttpConnectionContext : ConnectionContext, private CancellationTokenSource? _sendCts; private bool _activeSend; - private long _startedSendTime; + private TimeSpan _startedSendTime; private bool _useStatefulReconnect; private readonly object _sendingLock = new object(); internal CancellationToken SendingToken { get; private set; } @@ -74,7 +74,7 @@ public HttpConnectionContext(string connectionId, string connectionToken, ILogge ConnectionId = connectionId; ConnectionToken = connectionToken; - LastSeenTicks = Environment.TickCount64; + LastSeenTicks = TimeSpan.FromMilliseconds(Environment.TickCount64); _options = options; // The default behavior is that both formats are supported. @@ -140,9 +140,9 @@ public HttpConnectionContext(string connectionId, string connectionToken, ILogge public Task? ApplicationTask { get; set; } - public long LastSeenTicks { get; set; } + public TimeSpan LastSeenTicks { get; set; } - public long? LastSeenTicksIfInactive + public TimeSpan? LastSeenTicksIfInactive { get { @@ -618,7 +618,7 @@ public void MarkInactive() if (Status == HttpConnectionStatus.Active) { Status = HttpConnectionStatus.Inactive; - LastSeenTicks = Environment.TickCount64; + LastSeenTicks = TimeSpan.FromMilliseconds(Environment.TickCount64); } } } @@ -650,12 +650,12 @@ internal void StartSendCancellation() _sendCts = new CancellationTokenSource(); SendingToken = _sendCts.Token; } - _startedSendTime = Environment.TickCount64; + _startedSendTime = TimeSpan.FromMilliseconds(Environment.TickCount64); _activeSend = true; } } - internal void TryCancelSend(long currentTicks) + internal void TryCancelSend(TimeSpan currentTicks) { if (!_options.TransportSendTimeoutEnabled) { @@ -666,7 +666,7 @@ internal void TryCancelSend(long currentTicks) { if (_activeSend) { - if (currentTicks - _startedSendTime > _options.TransportSendTimeoutTicks) + if (currentTicks - _startedSendTime > _options.TransportSendTimeout) { _sendCts!.Cancel(); diff --git a/src/SignalR/common/Http.Connections/src/Internal/HttpConnectionManager.cs b/src/SignalR/common/Http.Connections/src/Internal/HttpConnectionManager.cs index 2677f5b4fc0f..ba658aa38ac7 100644 --- a/src/SignalR/common/Http.Connections/src/Internal/HttpConnectionManager.cs +++ b/src/SignalR/common/Http.Connections/src/Internal/HttpConnectionManager.cs @@ -24,7 +24,7 @@ internal sealed partial class HttpConnectionManager private readonly PeriodicTimer _nextHeartbeat; private readonly ILogger _logger; private readonly ILogger _connectionLogger; - private readonly long _disconnectTimeoutTicks; + private readonly TimeSpan _disconnectTimeout; private readonly HttpConnectionsMetrics _metrics; public HttpConnectionManager(ILoggerFactory loggerFactory, IHostApplicationLifetime appLifetime, IOptions connectionOptions, HttpConnectionsMetrics metrics) @@ -32,7 +32,7 @@ public HttpConnectionManager(ILoggerFactory loggerFactory, IHostApplicationLifet _logger = loggerFactory.CreateLogger(); _connectionLogger = loggerFactory.CreateLogger(); _nextHeartbeat = new PeriodicTimer(_heartbeatTickRate); - _disconnectTimeoutTicks = (long)(connectionOptions.Value.DisconnectTimeout ?? ConnectionOptionsSetup.DefaultDisconectTimeout).TotalMilliseconds; + _disconnectTimeout = connectionOptions.Value.DisconnectTimeout ?? ConnectionOptionsSetup.DefaultDisconectTimeout; _metrics = metrics; // Register these last as the callbacks could run immediately @@ -141,7 +141,7 @@ private async Task ExecuteTimerLoop() public void Scan() { var now = DateTimeOffset.UtcNow; - var ticks = Environment.TickCount64; + var ticks = TimeSpan.FromMilliseconds(Environment.TickCount64); // Scan the registered connections looking for ones that have timed out foreach (var c in _connections) @@ -152,7 +152,7 @@ public void Scan() // Once the decision has been made to dispose we don't check the status again // But don't clean up connections while the debugger is attached. - if (!Debugger.IsAttached && lastSeenTick.HasValue && (ticks - lastSeenTick.Value) > _disconnectTimeoutTicks) + if (!Debugger.IsAttached && lastSeenTick.HasValue && (ticks - lastSeenTick.Value) > _disconnectTimeout) { Log.ConnectionTimedOut(_logger, connection.ConnectionId); HttpConnectionsEventSource.Log.ConnectionTimedOut(connection.ConnectionId); diff --git a/src/SignalR/common/Http.Connections/test/HttpConnectionDispatcherTests.cs b/src/SignalR/common/Http.Connections/test/HttpConnectionDispatcherTests.cs index e02d92df21d0..20ba0fc3dc99 100644 --- a/src/SignalR/common/Http.Connections/test/HttpConnectionDispatcherTests.cs +++ b/src/SignalR/common/Http.Connections/test/HttpConnectionDispatcherTests.cs @@ -555,7 +555,7 @@ public async Task TransportEndingGracefullyWaitsOnApplicationLongPolling() await task.DefaultTimeout(); // We've been gone longer than the expiration time - connection.LastSeenTicks = Environment.TickCount64 - (long)disconnectTimeout.TotalMilliseconds - 1; + connection.LastSeenTicks = TimeSpan.FromMilliseconds(Environment.TickCount64) - disconnectTimeout - TimeSpan.FromTicks(1); // The application is still running here because the poll is only killed // by the heartbeat so we pretend to do a scan and this should force the application task to complete @@ -1277,6 +1277,7 @@ bool ExpectedErrors(WriteContext writeContext) using (StartVerifiableLog(expectedErrorsFilter: ExpectedErrors)) { + var initialTime = TimeSpan.FromMilliseconds(Environment.TickCount64); var manager = CreateConnectionManager(LoggerFactory); var connection = manager.CreateConnection(); connection.TransportType = HttpTransportType.LongPolling; @@ -1287,16 +1288,23 @@ bool ExpectedErrors(WriteContext writeContext) var builder = new ConnectionBuilder(services.BuildServiceProvider()); builder.UseConnectionHandler(); var app = builder.Build(); - var options = new HttpConnectionDispatcherOptions(); // First poll completes immediately + var options = new HttpConnectionDispatcherOptions(); await dispatcher.ExecuteAsync(context, options, app).DefaultTimeout(); var sync = new SyncPoint(); context.Response.Body = new BlockingStream(sync); var dispatcherTask = dispatcher.ExecuteAsync(context, options, app); await connection.Transport.Output.WriteAsync(new byte[] { 1 }).DefaultTimeout(); await sync.WaitForSyncPoint().DefaultTimeout(); + + // Try cancel before cancellation should occur + connection.TryCancelSend(initialTime + options.TransportSendTimeout); + Assert.False(connection.SendingToken.IsCancellationRequested); + // Cancel write to response body - connection.TryCancelSend(long.MaxValue); + connection.TryCancelSend(TimeSpan.FromMilliseconds(Environment.TickCount64) + options.TransportSendTimeout + TimeSpan.FromTicks(1)); + Assert.True(connection.SendingToken.IsCancellationRequested); + sync.Continue(); await dispatcherTask.DefaultTimeout(); // Connection should be removed on canceled write @@ -1310,6 +1318,7 @@ public async Task SSEConnectionClosesWhenSendTimeoutReached() { using (StartVerifiableLog()) { + var initialTime = TimeSpan.FromMilliseconds(Environment.TickCount64); var manager = CreateConnectionManager(LoggerFactory); var connection = manager.CreateConnection(); var dispatcher = CreateDispatcher(manager, LoggerFactory); @@ -1326,8 +1335,15 @@ public async Task SSEConnectionClosesWhenSendTimeoutReached() var dispatcherTask = dispatcher.ExecuteAsync(context, options, app); await connection.Transport.Output.WriteAsync(new byte[] { 1 }).DefaultTimeout(); await sync.WaitForSyncPoint().DefaultTimeout(); + + // Try cancel before cancellation should occur + connection.TryCancelSend(initialTime + options.TransportSendTimeout); + Assert.False(connection.SendingToken.IsCancellationRequested); + // Cancel write to response body - connection.TryCancelSend(long.MaxValue); + connection.TryCancelSend(TimeSpan.FromMilliseconds(Environment.TickCount64) + options.TransportSendTimeout + TimeSpan.FromTicks(1)); + Assert.True(connection.SendingToken.IsCancellationRequested); + sync.Continue(); await dispatcherTask.DefaultTimeout(); // Connection should be removed on canceled write @@ -1346,6 +1362,7 @@ bool ExpectedErrors(WriteContext writeContext) } using (StartVerifiableLog(expectedErrorsFilter: ExpectedErrors)) { + var initialTime = TimeSpan.FromMilliseconds(Environment.TickCount64); var manager = CreateConnectionManager(LoggerFactory); var connection = manager.CreateConnection(); var dispatcher = CreateDispatcher(manager, LoggerFactory); @@ -1362,8 +1379,15 @@ bool ExpectedErrors(WriteContext writeContext) var dispatcherTask = dispatcher.ExecuteAsync(context, options, app); await connection.Transport.Output.WriteAsync(new byte[] { 1 }).DefaultTimeout(); await sync.WaitForSyncPoint().DefaultTimeout(); + + // Try cancel before cancellation should occur + connection.TryCancelSend(initialTime + options.TransportSendTimeout); + Assert.False(connection.SendingToken.IsCancellationRequested); + // Cancel write to response body - connection.TryCancelSend(long.MaxValue); + connection.TryCancelSend(TimeSpan.FromMilliseconds(Environment.TickCount64) + options.TransportSendTimeout + TimeSpan.FromTicks(1)); + Assert.True(connection.SendingToken.IsCancellationRequested); + sync.Continue(); await dispatcherTask.DefaultTimeout(); // Connection should be removed on canceled write From 55c26328d5d4fd0744ea2e6fd6d92e97e5f4bf95 Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" <42748379+dotnet-maestro[bot]@users.noreply.github.com> Date: Mon, 15 Jan 2024 17:08:28 +0000 Subject: [PATCH 087/391] Update dependencies from https://github.com/dotnet/source-build-externals build 20240115.1 (#53390) [release/8.0] Update dependencies from dotnet/source-build-externals --- NuGet.config | 6 ------ eng/Version.Details.xml | 4 ++-- eng/Versions.props | 2 +- 3 files changed, 3 insertions(+), 9 deletions(-) diff --git a/NuGet.config b/NuGet.config index 0f7340218bcc..1c2f27eb90ce 100644 --- a/NuGet.config +++ b/NuGet.config @@ -8,9 +8,6 @@ - - - @@ -33,9 +30,6 @@ - - - diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index ed15b5e9397c..aabd918bc9b4 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -189,9 +189,9 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime bf5e279d9239bfef5bb1b8d6212f1b971c434606 - + https://github.com/dotnet/source-build-externals - 7134e53b6b1210a1ce8838b12b8f6071e0a3433b + 83274d94c7e2ff21081b0d75ecbec2da2241f831 diff --git a/eng/Versions.props b/eng/Versions.props index 5b440fbd1ec6..f8ea2770dc0c 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -165,7 +165,7 @@ 8.0.0-beta.24059.4 8.0.0-beta.24059.4 - 8.0.0-alpha.1.24059.4 + 8.0.0-alpha.1.24065.1 8.0.0-alpha.1.24061.1 From a6191d50142d26773cb1d4851b030be80f9b9953 Mon Sep 17 00:00:00 2001 From: DotNet Bot Date: Tue, 16 Jan 2024 04:12:40 +0000 Subject: [PATCH 088/391] [internal/release/8.0] Update dependencies from dnceng/internal/dotnet-efcore, dnceng/internal/dotnet-runtime --- NuGet.config | 6 +++-- eng/Version.Details.xml | 58 ++++++++++++++++++++--------------------- eng/Versions.props | 20 +++++++------- 3 files changed, 43 insertions(+), 41 deletions(-) diff --git a/NuGet.config b/NuGet.config index c4dd1798605b..0dfccf30306f 100644 --- a/NuGet.config +++ b/NuGet.config @@ -6,9 +6,10 @@ - + + @@ -29,9 +30,10 @@ - + + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index c09e1a4bdd47..918ea70bdaf9 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -11,35 +11,35 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 76d71b380247f4f45a3048d9036bc1b2e788fb6d + e6ea1d746b32c71b700a1c89891ff5b390f7b36b https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 76d71b380247f4f45a3048d9036bc1b2e788fb6d + e6ea1d746b32c71b700a1c89891ff5b390f7b36b https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 76d71b380247f4f45a3048d9036bc1b2e788fb6d + e6ea1d746b32c71b700a1c89891ff5b390f7b36b https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 76d71b380247f4f45a3048d9036bc1b2e788fb6d + e6ea1d746b32c71b700a1c89891ff5b390f7b36b https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 76d71b380247f4f45a3048d9036bc1b2e788fb6d + e6ea1d746b32c71b700a1c89891ff5b390f7b36b https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 76d71b380247f4f45a3048d9036bc1b2e788fb6d + e6ea1d746b32c71b700a1c89891ff5b390f7b36b https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 76d71b380247f4f45a3048d9036bc1b2e788fb6d + e6ea1d746b32c71b700a1c89891ff5b390f7b36b https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 76d71b380247f4f45a3048d9036bc1b2e788fb6d + e6ea1d746b32c71b700a1c89891ff5b390f7b36b https://dev.azure.com/dnceng/internal/_git/dotnet-runtime @@ -121,9 +121,9 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime 5535e31a712343a63f5d7d796cd874e563e5ac14 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - bf5e279d9239bfef5bb1b8d6212f1b971c434606 + 806d04b02e42254b0be9b0b85119f3e9133462bd https://dev.azure.com/dnceng/internal/_git/dotnet-runtime @@ -185,9 +185,9 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime 5535e31a712343a63f5d7d796cd874e563e5ac14 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - bf5e279d9239bfef5bb1b8d6212f1b971c434606 + 806d04b02e42254b0be9b0b85119f3e9133462bd https://github.com/dotnet/source-build-externals @@ -257,7 +257,7 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - bf5e279d9239bfef5bb1b8d6212f1b971c434606 + 806d04b02e42254b0be9b0b85119f3e9133462bd https://dev.azure.com/dnceng/internal/_git/dotnet-runtime @@ -275,17 +275,17 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime 5535e31a712343a63f5d7d796cd874e563e5ac14 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - bf5e279d9239bfef5bb1b8d6212f1b971c434606 + 806d04b02e42254b0be9b0b85119f3e9133462bd - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - bf5e279d9239bfef5bb1b8d6212f1b971c434606 + 806d04b02e42254b0be9b0b85119f3e9133462bd - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - bf5e279d9239bfef5bb1b8d6212f1b971c434606 + 806d04b02e42254b0be9b0b85119f3e9133462bd https://dev.azure.com/dnceng/internal/_git/dotnet-runtime @@ -316,22 +316,22 @@ Win-x64 is used here because we have picked an arbitrary runtime identifier to flow the version of the latest NETCore.App runtime. All Runtime.$rid packages should have the same version. --> - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - bf5e279d9239bfef5bb1b8d6212f1b971c434606 + 806d04b02e42254b0be9b0b85119f3e9133462bd - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - bf5e279d9239bfef5bb1b8d6212f1b971c434606 + 806d04b02e42254b0be9b0b85119f3e9133462bd - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - bf5e279d9239bfef5bb1b8d6212f1b971c434606 + 806d04b02e42254b0be9b0b85119f3e9133462bd - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - bf5e279d9239bfef5bb1b8d6212f1b971c434606 + 806d04b02e42254b0be9b0b85119f3e9133462bd https://github.com/dotnet/xdt @@ -368,9 +368,9 @@ - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - bf5e279d9239bfef5bb1b8d6212f1b971c434606 + 806d04b02e42254b0be9b0b85119f3e9133462bd https://github.com/dotnet/winforms diff --git a/eng/Versions.props b/eng/Versions.props index 7ce87b773aa0..09bb5fe3a033 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -66,12 +66,12 @@ 8.0.0 - 8.0.1 - 8.0.1 - 8.0.1 - 8.0.1 - 8.0.1 - 8.0.1-servicing.23580.1 + 8.0.2 + 8.0.2 + 8.0.2 + 8.0.2 + 8.0.2 + 8.0.2-servicing.24065.5 8.0.0 8.0.0 8.0.0 @@ -92,7 +92,7 @@ 8.0.0 8.0.0 8.0.0 - 8.0.1-servicing.23580.1 + 8.0.2-servicing.24065.5 8.0.0 8.0.0 8.0.0 @@ -108,7 +108,7 @@ 8.0.0 8.0.1 8.0.0 - 8.0.1-servicing.23580.1 + 8.0.2-servicing.24065.5 8.0.0 8.0.0 8.0.0 @@ -128,9 +128,9 @@ 8.0.0 8.0.0 8.0.0 - 8.0.1-servicing.23580.1 + 8.0.2-servicing.24065.5 - 8.0.1-servicing.23580.1 + 8.0.2-servicing.24065.5 8.0.0 8.0.1 From 5a57a210755dfb8b86686134ab103ec74bd13e8c Mon Sep 17 00:00:00 2001 From: Steve Sanderson Date: Tue, 16 Jan 2024 16:41:25 +0000 Subject: [PATCH 089/391] Stop duplicating history with streaming-enhanced-form PRG. Fixes #51674 (#53301) # Stop duplicating history with streaming-enhanced-form PRG Makes the post-redirect-get pattern work without duplicating history entries. ## Description The PRG pattern is common but has the annoying disbenefit that, after submitting a form, the browser's "back" button doesn't work as normal because there is a duplicated history entry. The user has to click "back" twice or more times depending on how many times they have submitted the form. In the case of enhanced navigation, Blazor fixes this by explicitly avoiding duplicated history entries. But this wasn't implemented for the streaming+enhanced case. This PR adds the avoid-duplication behavior in that case too. Fixes #51674 ## Customer Impact Without this, the PRG pattern would work nicely on an enhanced form, but if you then also enabled streaming SSR for that form, it would go back to duplicating history entries and forcing the user to click "back" multiple times. **NOTE**: This PR still doesn't implement non-duplication in the non-enhanced-nav case (with or without streaming). That's out of scope because without enhanced nav, our code doesn't control how the response is handled, so we have to accept the default browser behavior (which does duplicate the history entries after PRG). ## Regression? - [ ] Yes - [x] No [If yes, specify the version the behavior has regressed from] ## Risk - [ ] High - [x] Medium - [ ] Low There's some pretty intricate logic for the interactions between streaming, enhanced nav, redirections, and the history stack. This adds another case. Mitigations: * We have pretty extensive tests for all the combinations we can think of * The way the change is structured, it *should* not impact other cases ## Verification - [x] Manual (required) - [x] Automated ## Packaging changes reviewed? - [ ] Yes - [ ] No - [x] N/A --- .../Web.JS/dist/Release/blazor.web.js | 2 +- .../src/Rendering/StreamingRendering.ts | 23 +++++++---- .../src/Services/NavigationEnhancement.ts | 17 ++++---- .../FormWithParentBindingContextTest.cs | 26 ++++++++++++ ...llsNavigationManagerRefreshStreaming.razor | 41 +++++++++++++++++++ 5 files changed, 91 insertions(+), 18 deletions(-) create mode 100644 src/Components/test/testassets/Components.TestServer/RazorComponents/Pages/Forms/FormThatCallsNavigationManagerRefreshStreaming.razor diff --git a/src/Components/Web.JS/dist/Release/blazor.web.js b/src/Components/Web.JS/dist/Release/blazor.web.js index 96c98c7bad08..5a638ce83025 100644 --- a/src/Components/Web.JS/dist/Release/blazor.web.js +++ b/src/Components/Web.JS/dist/Release/blazor.web.js @@ -1 +1 @@ -(()=>{var e={778:()=>{},77:()=>{},203:()=>{},200:()=>{},628:()=>{},321:()=>{}},t={};function n(o){var r=t[o];if(void 0!==r)return r.exports;var i=t[o]={exports:{}};return e[o](i,i.exports,n),i.exports}n.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),(()=>{"use strict";var e,t,o;!function(e){const t=[],n="__jsObjectId",o="__dotNetObject",r="__byte[]",i="__dotNetStream",s="__jsStreamReferenceLength";let a,c;class l{constructor(e){this._jsObject=e,this._cachedFunctions=new Map}findFunction(e){const t=this._cachedFunctions.get(e);if(t)return t;let n,o=this._jsObject;if(e.split(".").forEach((t=>{if(!(t in o))throw new Error(`Could not find '${e}' ('${t}' was undefined).`);n=o,o=o[t]})),o instanceof Function)return o=o.bind(n),this._cachedFunctions.set(e,o),o;throw new Error(`The value '${e}' is not a function.`)}getWrappedObject(){return this._jsObject}}const h={0:new l(window)};h[0]._cachedFunctions.set("import",(e=>("string"==typeof e&&e.startsWith("./")&&(e=new URL(e.substr(2),document.baseURI).toString()),import(e))));let d,u=1;function p(e){t.push(e)}function f(e){if(e&&"object"==typeof e){h[u]=new l(e);const t={[n]:u};return u++,t}throw new Error(`Cannot create a JSObjectReference from the value '${e}'.`)}function g(e){let t=-1;if(e instanceof ArrayBuffer&&(e=new Uint8Array(e)),e instanceof Blob)t=e.size;else{if(!(e.buffer instanceof ArrayBuffer))throw new Error("Supplied value is not a typed array or blob.");if(void 0===e.byteLength)throw new Error(`Cannot create a JSStreamReference from the value '${e}' as it doesn't have a byteLength.`);t=e.byteLength}const o={[s]:t};try{const t=f(e);o[n]=t[n]}catch(t){throw new Error(`Cannot create a JSStreamReference from the value '${e}'.`)}return o}function m(e,n){c=e;const o=n?JSON.parse(n,((e,n)=>t.reduce(((t,n)=>n(e,t)),n))):null;return c=void 0,o}function v(){if(void 0===a)throw new Error("No call dispatcher has been set.");if(null===a)throw new Error("There are multiple .NET runtimes present, so a default dispatcher could not be resolved. Use DotNetObject to invoke .NET instance methods.");return a}e.attachDispatcher=function(e){const t=new y(e);return void 0===a?a=t:a&&(a=null),t},e.attachReviver=p,e.invokeMethod=function(e,t,...n){return v().invokeDotNetStaticMethod(e,t,...n)},e.invokeMethodAsync=function(e,t,...n){return v().invokeDotNetStaticMethodAsync(e,t,...n)},e.createJSObjectReference=f,e.createJSStreamReference=g,e.disposeJSObjectReference=function(e){const t=e&&e[n];"number"==typeof t&&_(t)},function(e){e[e.Default=0]="Default",e[e.JSObjectReference=1]="JSObjectReference",e[e.JSStreamReference=2]="JSStreamReference",e[e.JSVoidResult=3]="JSVoidResult"}(d=e.JSCallResultType||(e.JSCallResultType={}));class y{constructor(e){this._dotNetCallDispatcher=e,this._byteArraysToBeRevived=new Map,this._pendingDotNetToJSStreams=new Map,this._pendingAsyncCalls={},this._nextAsyncCallId=1}getDotNetCallDispatcher(){return this._dotNetCallDispatcher}invokeJSFromDotNet(e,t,n,o){const r=m(this,t),i=I(b(e,o)(...r||[]),n);return null==i?null:T(this,i)}beginInvokeJSFromDotNet(e,t,n,o,r){const i=new Promise((e=>{const o=m(this,n);e(b(t,r)(...o||[]))}));e&&i.then((t=>T(this,[e,!0,I(t,o)]))).then((t=>this._dotNetCallDispatcher.endInvokeJSFromDotNet(e,!0,t)),(t=>this._dotNetCallDispatcher.endInvokeJSFromDotNet(e,!1,JSON.stringify([e,!1,w(t)]))))}endInvokeDotNetFromJS(e,t,n){const o=t?m(this,n):new Error(n);this.completePendingCall(parseInt(e,10),t,o)}invokeDotNetStaticMethod(e,t,...n){return this.invokeDotNetMethod(e,t,null,n)}invokeDotNetStaticMethodAsync(e,t,...n){return this.invokeDotNetMethodAsync(e,t,null,n)}invokeDotNetMethod(e,t,n,o){if(this._dotNetCallDispatcher.invokeDotNetFromJS){const r=T(this,o),i=this._dotNetCallDispatcher.invokeDotNetFromJS(e,t,n,r);return i?m(this,i):null}throw new Error("The current dispatcher does not support synchronous calls from JS to .NET. Use invokeDotNetMethodAsync instead.")}invokeDotNetMethodAsync(e,t,n,o){if(e&&n)throw new Error(`For instance method calls, assemblyName should be null. Received '${e}'.`);const r=this._nextAsyncCallId++,i=new Promise(((e,t)=>{this._pendingAsyncCalls[r]={resolve:e,reject:t}}));try{const i=T(this,o);this._dotNetCallDispatcher.beginInvokeDotNetFromJS(r,e,t,n,i)}catch(e){this.completePendingCall(r,!1,e)}return i}receiveByteArray(e,t){this._byteArraysToBeRevived.set(e,t)}processByteArray(e){const t=this._byteArraysToBeRevived.get(e);return t?(this._byteArraysToBeRevived.delete(e),t):null}supplyDotNetStream(e,t){if(this._pendingDotNetToJSStreams.has(e)){const n=this._pendingDotNetToJSStreams.get(e);this._pendingDotNetToJSStreams.delete(e),n.resolve(t)}else{const n=new E;n.resolve(t),this._pendingDotNetToJSStreams.set(e,n)}}getDotNetStreamPromise(e){let t;if(this._pendingDotNetToJSStreams.has(e))t=this._pendingDotNetToJSStreams.get(e).streamPromise,this._pendingDotNetToJSStreams.delete(e);else{const n=new E;this._pendingDotNetToJSStreams.set(e,n),t=n.streamPromise}return t}completePendingCall(e,t,n){if(!this._pendingAsyncCalls.hasOwnProperty(e))throw new Error(`There is no pending async call with ID ${e}.`);const o=this._pendingAsyncCalls[e];delete this._pendingAsyncCalls[e],t?o.resolve(n):o.reject(n)}}function w(e){return e instanceof Error?`${e.message}\n${e.stack}`:e?e.toString():"null"}function b(e,t){const n=h[t];if(n)return n.findFunction(e);throw new Error(`JS object instance with ID ${t} does not exist (has it been disposed?).`)}function _(e){delete h[e]}e.findJSFunction=b,e.disposeJSObjectReferenceById=_;class S{constructor(e,t){this._id=e,this._callDispatcher=t}invokeMethod(e,...t){return this._callDispatcher.invokeDotNetMethod(null,e,this._id,t)}invokeMethodAsync(e,...t){return this._callDispatcher.invokeDotNetMethodAsync(null,e,this._id,t)}dispose(){this._callDispatcher.invokeDotNetMethodAsync(null,"__Dispose",this._id,null).catch((e=>console.error(e)))}serializeAsArg(){return{[o]:this._id}}}e.DotNetObject=S,p((function(e,t){if(t&&"object"==typeof t){if(t.hasOwnProperty(o))return new S(t[o],c);if(t.hasOwnProperty(n)){const e=t[n],o=h[e];if(o)return o.getWrappedObject();throw new Error(`JS object instance with Id '${e}' does not exist. It may have been disposed.`)}if(t.hasOwnProperty(r)){const e=t[r],n=c.processByteArray(e);if(void 0===n)throw new Error(`Byte array index '${e}' does not exist.`);return n}if(t.hasOwnProperty(i)){const e=t[i],n=c.getDotNetStreamPromise(e);return new C(n)}}return t}));class C{constructor(e){this._streamPromise=e}stream(){return this._streamPromise}async arrayBuffer(){return new Response(await this.stream()).arrayBuffer()}}class E{constructor(){this.streamPromise=new Promise(((e,t)=>{this.resolve=e,this.reject=t}))}}function I(e,t){switch(t){case d.Default:return e;case d.JSObjectReference:return f(e);case d.JSStreamReference:return g(e);case d.JSVoidResult:return null;default:throw new Error(`Invalid JS call result type '${t}'.`)}}let k=0;function T(e,t){k=0,c=e;const n=JSON.stringify(t,R);return c=void 0,n}function R(e,t){if(t instanceof S)return t.serializeAsArg();if(t instanceof Uint8Array){c.getDotNetCallDispatcher().sendByteArray(k,t);const e={[r]:k};return k++,e}return t}}(e||(e={})),function(e){e[e.prependFrame=1]="prependFrame",e[e.removeFrame=2]="removeFrame",e[e.setAttribute=3]="setAttribute",e[e.removeAttribute=4]="removeAttribute",e[e.updateText=5]="updateText",e[e.stepIn=6]="stepIn",e[e.stepOut=7]="stepOut",e[e.updateMarkup=8]="updateMarkup",e[e.permutationListEntry=9]="permutationListEntry",e[e.permutationListEnd=10]="permutationListEnd"}(t||(t={})),function(e){e[e.element=1]="element",e[e.text=2]="text",e[e.attribute=3]="attribute",e[e.component=4]="component",e[e.region=5]="region",e[e.elementReferenceCapture=6]="elementReferenceCapture",e[e.markup=8]="markup",e[e.namedEvent=10]="namedEvent"}(o||(o={}));class r{constructor(e,t){this.componentId=e,this.fieldValue=t}static fromEvent(e,t){const n=t.target;if(n instanceof Element){const t=function(e){return e instanceof HTMLInputElement?e.type&&"checkbox"===e.type.toLowerCase()?{value:e.checked}:{value:e.value}:e instanceof HTMLSelectElement||e instanceof HTMLTextAreaElement?{value:e.value}:null}(n);if(t)return new r(e,t.value)}return null}}const i=new Map,s=new Map,a=[];function c(e){return i.get(e)}function l(e){const t=i.get(e);return(null==t?void 0:t.browserEventName)||e}function h(e,t){e.forEach((e=>i.set(e,t)))}function d(e){const t=[];for(let n=0;ne.selected)).map((e=>e.value))}}{const e=function(e){return!!e&&"INPUT"===e.tagName&&"checkbox"===e.getAttribute("type")}(t);return{value:e?!!t.checked:t.value}}}}),h(["copy","cut","paste"],{createEventArgs:e=>({type:e.type})}),h(["drag","dragend","dragenter","dragleave","dragover","dragstart","drop"],{createEventArgs:e=>{return{...u(t=e),dataTransfer:t.dataTransfer?{dropEffect:t.dataTransfer.dropEffect,effectAllowed:t.dataTransfer.effectAllowed,files:Array.from(t.dataTransfer.files).map((e=>e.name)),items:Array.from(t.dataTransfer.items).map((e=>({kind:e.kind,type:e.type}))),types:t.dataTransfer.types}:null};var t}}),h(["focus","blur","focusin","focusout"],{createEventArgs:e=>({type:e.type})}),h(["keydown","keyup","keypress"],{createEventArgs:e=>{return{key:(t=e).key,code:t.code,location:t.location,repeat:t.repeat,ctrlKey:t.ctrlKey,shiftKey:t.shiftKey,altKey:t.altKey,metaKey:t.metaKey,type:t.type};var t}}),h(["contextmenu","click","mouseover","mouseout","mousemove","mousedown","mouseup","mouseleave","mouseenter","dblclick"],{createEventArgs:e=>u(e)}),h(["error"],{createEventArgs:e=>{return{message:(t=e).message,filename:t.filename,lineno:t.lineno,colno:t.colno,type:t.type};var t}}),h(["loadstart","timeout","abort","load","loadend","progress"],{createEventArgs:e=>{return{lengthComputable:(t=e).lengthComputable,loaded:t.loaded,total:t.total,type:t.type};var t}}),h(["touchcancel","touchend","touchmove","touchenter","touchleave","touchstart"],{createEventArgs:e=>{return{detail:(t=e).detail,touches:d(t.touches),targetTouches:d(t.targetTouches),changedTouches:d(t.changedTouches),ctrlKey:t.ctrlKey,shiftKey:t.shiftKey,altKey:t.altKey,metaKey:t.metaKey,type:t.type};var t}}),h(["gotpointercapture","lostpointercapture","pointercancel","pointerdown","pointerenter","pointerleave","pointermove","pointerout","pointerover","pointerup"],{createEventArgs:e=>{return{...u(t=e),pointerId:t.pointerId,width:t.width,height:t.height,pressure:t.pressure,tiltX:t.tiltX,tiltY:t.tiltY,pointerType:t.pointerType,isPrimary:t.isPrimary};var t}}),h(["wheel","mousewheel"],{createEventArgs:e=>{return{...u(t=e),deltaX:t.deltaX,deltaY:t.deltaY,deltaZ:t.deltaZ,deltaMode:t.deltaMode};var t}}),h(["cancel","close","toggle"],{createEventArgs:()=>({})});const p=["date","datetime-local","month","time","week"],f=new Map;let g,m,v=0;const y={async add(e,t,n){if(!n)throw new Error("initialParameters must be an object, even if empty.");const o="__bl-dynamic-root:"+(++v).toString();f.set(o,e);const r=await S().invokeMethodAsync("AddRootComponent",t,o),i=new _(r,m[t]);return await i.setParameters(n),i}};function w(e){const t=f.get(e);if(t)return f.delete(e),t}class b{invoke(e){return this._callback(e)}setCallback(t){this._selfJSObjectReference||(this._selfJSObjectReference=e.createJSObjectReference(this)),this._callback=t}getJSObjectReference(){return this._selfJSObjectReference}dispose(){this._selfJSObjectReference&&e.disposeJSObjectReference(this._selfJSObjectReference)}}class _{constructor(e,t){this._jsEventCallbackWrappers=new Map,this._componentId=e;for(const e of t)"eventcallback"===e.type&&this._jsEventCallbackWrappers.set(e.name.toLowerCase(),new b)}setParameters(e){const t={},n=Object.entries(e||{}),o=n.length;for(const[e,o]of n){const n=this._jsEventCallbackWrappers.get(e.toLowerCase());n&&o?(n.setCallback(o),t[e]=n.getJSObjectReference()):t[e]=o}return S().invokeMethodAsync("SetRootComponentParameters",this._componentId,o,t)}async dispose(){if(null!==this._componentId){await S().invokeMethodAsync("RemoveRootComponent",this._componentId),this._componentId=null;for(const e of this._jsEventCallbackWrappers.values())e.dispose()}}}function S(){if(!g)throw new Error("Dynamic root components have not been enabled in this application.");return g}const C=new Map,E=[],I=new Map;function k(t,n,o,r){var i,s;if(C.has(t))throw new Error(`Interop methods are already registered for renderer ${t}`);C.set(t,n),o&&r&&Object.keys(o).length>0&&function(t,n,o){if(g)throw new Error("Dynamic root components have already been enabled.");g=t,m=n;for(const[t,r]of Object.entries(o)){const o=e.findJSFunction(t,0);for(const e of r)o(e,n[e])}}(A(t),o,r),null===(s=null===(i=I.get(t))||void 0===i?void 0:i[0])||void 0===s||s.call(i),function(e){for(const t of E)t(e)}(t)}function T(e){return C.has(e)}function R(e,t,n){return D(e,t.eventHandlerId,(()=>A(e).invokeMethodAsync("DispatchEventAsync",t,n)))}function A(e){const t=C.get(e);if(!t)throw new Error(`No interop methods are registered for renderer ${e}`);return t}let D=(e,t,n)=>n();const x=B(["abort","blur","cancel","canplay","canplaythrough","change","close","cuechange","durationchange","emptied","ended","error","focus","load","loadeddata","loadedmetadata","loadend","loadstart","mouseenter","mouseleave","pointerenter","pointerleave","pause","play","playing","progress","ratechange","reset","scroll","seeked","seeking","stalled","submit","suspend","timeupdate","toggle","unload","volumechange","waiting","DOMNodeInsertedIntoDocument","DOMNodeRemovedFromDocument"]),N={submit:!0},P=B(["click","dblclick","mousedown","mousemove","mouseup"]);class M{constructor(e){this.browserRendererId=e,this.afterClickCallbacks=[];const t=++M.nextEventDelegatorId;this.eventsCollectionKey=`_blazorEvents_${t}`,this.eventInfoStore=new U(this.onGlobalEvent.bind(this))}setListener(e,t,n,o){const r=this.getEventHandlerInfosForElement(e,!0),i=r.getHandler(t);if(i)this.eventInfoStore.update(i.eventHandlerId,n);else{const i={element:e,eventName:t,eventHandlerId:n,renderingComponentId:o};this.eventInfoStore.add(i),r.setHandler(t,i)}}getHandler(e){return this.eventInfoStore.get(e)}removeListener(e){const t=this.eventInfoStore.remove(e);if(t){const e=t.element,n=this.getEventHandlerInfosForElement(e,!1);n&&n.removeHandler(t.eventName)}}notifyAfterClick(e){this.afterClickCallbacks.push(e),this.eventInfoStore.addGlobalListener("click")}setStopPropagation(e,t,n){this.getEventHandlerInfosForElement(e,!0).stopPropagation(t,n)}setPreventDefault(e,t,n){this.getEventHandlerInfosForElement(e,!0).preventDefault(t,n)}onGlobalEvent(e){if(!(e.target instanceof Element))return;this.dispatchGlobalEventToAllElements(e.type,e);const t=(n=e.type,s.get(n));var n;t&&t.forEach((t=>this.dispatchGlobalEventToAllElements(t,e))),"click"===e.type&&this.afterClickCallbacks.forEach((t=>t(e)))}dispatchGlobalEventToAllElements(e,t){const n=t.composedPath();let o=n.shift(),i=null,s=!1;const a=Object.prototype.hasOwnProperty.call(x,e);let l=!1;for(;o;){const u=o,p=this.getEventHandlerInfosForElement(u,!1);if(p){const n=p.getHandler(e);if(n&&(h=u,d=t.type,!((h instanceof HTMLButtonElement||h instanceof HTMLInputElement||h instanceof HTMLTextAreaElement||h instanceof HTMLSelectElement)&&Object.prototype.hasOwnProperty.call(P,d)&&h.disabled))){if(!s){const n=c(e);i=(null==n?void 0:n.createEventArgs)?n.createEventArgs(t):{},s=!0}Object.prototype.hasOwnProperty.call(N,t.type)&&t.preventDefault(),R(this.browserRendererId,{eventHandlerId:n.eventHandlerId,eventName:e,eventFieldInfo:r.fromEvent(n.renderingComponentId,t)},i)}p.stopPropagation(e)&&(l=!0),p.preventDefault(e)&&t.preventDefault()}o=a||l?void 0:n.shift()}var h,d}getEventHandlerInfosForElement(e,t){return Object.prototype.hasOwnProperty.call(e,this.eventsCollectionKey)?e[this.eventsCollectionKey]:t?e[this.eventsCollectionKey]=new L:null}}M.nextEventDelegatorId=0;class U{constructor(e){this.globalListener=e,this.infosByEventHandlerId={},this.countByEventName={},a.push(this.handleEventNameAliasAdded.bind(this))}add(e){if(this.infosByEventHandlerId[e.eventHandlerId])throw new Error(`Event ${e.eventHandlerId} is already tracked`);this.infosByEventHandlerId[e.eventHandlerId]=e,this.addGlobalListener(e.eventName)}get(e){return this.infosByEventHandlerId[e]}addGlobalListener(e){if(e=l(e),Object.prototype.hasOwnProperty.call(this.countByEventName,e))this.countByEventName[e]++;else{this.countByEventName[e]=1;const t=Object.prototype.hasOwnProperty.call(x,e);document.addEventListener(e,this.globalListener,t)}}update(e,t){if(Object.prototype.hasOwnProperty.call(this.infosByEventHandlerId,t))throw new Error(`Event ${t} is already tracked`);const n=this.infosByEventHandlerId[e];delete this.infosByEventHandlerId[e],n.eventHandlerId=t,this.infosByEventHandlerId[t]=n}remove(e){const t=this.infosByEventHandlerId[e];if(t){delete this.infosByEventHandlerId[e];const n=l(t.eventName);0==--this.countByEventName[n]&&(delete this.countByEventName[n],document.removeEventListener(n,this.globalListener))}return t}handleEventNameAliasAdded(e,t){if(Object.prototype.hasOwnProperty.call(this.countByEventName,e)){const n=this.countByEventName[e];delete this.countByEventName[e],document.removeEventListener(e,this.globalListener),this.addGlobalListener(t),this.countByEventName[t]+=n-1}}}class L{constructor(){this.handlers={},this.preventDefaultFlags=null,this.stopPropagationFlags=null}getHandler(e){return Object.prototype.hasOwnProperty.call(this.handlers,e)?this.handlers[e]:null}setHandler(e,t){this.handlers[e]=t}removeHandler(e){delete this.handlers[e]}preventDefault(e,t){return void 0!==t&&(this.preventDefaultFlags=this.preventDefaultFlags||{},this.preventDefaultFlags[e]=t),!!this.preventDefaultFlags&&this.preventDefaultFlags[e]}stopPropagation(e,t){return void 0!==t&&(this.stopPropagationFlags=this.stopPropagationFlags||{},this.stopPropagationFlags[e]=t),!!this.stopPropagationFlags&&this.stopPropagationFlags[e]}}function B(e){const t={};return e.forEach((e=>{t[e]=!0})),t}const O=Symbol(),F=Symbol(),$=Symbol();function H(e){const{start:t,end:n}=e,o=t[$];if(o){if(o!==e)throw new Error("The start component comment was already associated with another component descriptor.");return t}const r=t.parentNode;if(!r)throw new Error(`Comment not connected to the DOM ${t.textContent}`);const i=W(r,!0),s=Y(i);t[F]=i,t[$]=e;const a=W(t);if(n){const e=Y(a),o=Array.prototype.indexOf.call(s,a)+1;let r=null;for(;r!==n;){const n=s.splice(o,1)[0];if(!n)throw new Error("Could not find the end component comment in the parent logical node list");n[F]=t,e.push(n),r=n}}return a}function W(e,t){if(O in e)return e;const n=[];if(e.childNodes.length>0){if(!t)throw new Error("New logical elements must start empty, or allowExistingContents must be true");e.childNodes.forEach((t=>{const o=W(t,!0);o[F]=e,n.push(o)}))}return e[O]=n,e}function j(e){const t=Y(e);for(;t.length;)J(e,0)}function z(e,t){const n=document.createComment("!");return q(n,e,t),n}function q(e,t,n){const o=e;let r=e;if(e instanceof Comment){const t=Y(o);if((null==t?void 0:t.length)>0){const t=oe(o),n=new Range;n.setStartBefore(e),n.setEndAfter(t),r=n.extractContents()}}const i=K(o);if(i){const e=Y(i),t=Array.prototype.indexOf.call(e,o);e.splice(t,1),delete o[F]}const s=Y(t);if(n0;)J(n,0)}const o=n;o.parentNode.removeChild(o)}function K(e){return e[F]||null}function V(e,t){return Y(e)[t]}function X(e){return e[$]||null}function G(e){const t=te(e);return"http://www.w3.org/2000/svg"===t.namespaceURI&&"foreignObject"!==t.tagName}function Y(e){return e[O]}function Q(e){const t=Y(K(e));return t[Array.prototype.indexOf.call(t,e)+1]||null}function Z(e){return O in e}function ee(e,t){const n=Y(e);t.forEach((e=>{e.moveRangeStart=n[e.fromSiblingIndex],e.moveRangeEnd=oe(e.moveRangeStart)})),t.forEach((t=>{const o=document.createComment("marker");t.moveToBeforeMarker=o;const r=n[t.toSiblingIndex+1];r?r.parentNode.insertBefore(o,r):ne(o,e)})),t.forEach((e=>{const t=e.moveToBeforeMarker,n=t.parentNode,o=e.moveRangeStart,r=e.moveRangeEnd;let i=o;for(;i;){const e=i.nextSibling;if(n.insertBefore(i,t),i===r)break;i=e}n.removeChild(t)})),t.forEach((e=>{n[e.toSiblingIndex]=e.moveRangeStart}))}function te(e){if(e instanceof Element||e instanceof DocumentFragment)return e;if(e instanceof Comment)return e.parentNode;throw new Error("Not a valid logical element")}function ne(e,t){if(t instanceof Element||t instanceof DocumentFragment)t.appendChild(e);else{if(!(t instanceof Comment))throw new Error(`Cannot append node because the parent is not a valid logical element. Parent: ${t}`);{const n=Q(t);n?n.parentNode.insertBefore(e,n):ne(e,K(t))}}}function oe(e){if(e instanceof Element||e instanceof DocumentFragment)return e;const t=Q(e);if(t)return t.previousSibling;{const t=K(e);return t instanceof Element||t instanceof DocumentFragment?t.lastChild:oe(t)}}function re(e){return`_bl_${e}`}const ie="__internalId";e.attachReviver(((e,t)=>t&&"object"==typeof t&&Object.prototype.hasOwnProperty.call(t,ie)&&"string"==typeof t[ie]?function(e){const t=`[${re(e)}]`;return document.querySelector(t)}(t[ie]):t));const se="_blazorDeferredValue";function ae(e){e instanceof HTMLOptionElement?de(e):se in e&&he(e,e[se])}function ce(e){return"select-multiple"===e.type}function le(e,t){e.value=t||""}function he(e,t){e instanceof HTMLSelectElement?ce(e)?function(e,t){t||(t=[]);for(let n=0;n{Oe()&&Ne(e,(e=>{Xe(e,!0,!1)}))}))}getRootComponentCount(){return this.rootComponentIds.size}attachRootComponentToLogicalElement(e,t,n){if(we(t))throw new Error(`Root component '${e}' could not be attached because its target element is already associated with a root component`);n&&(t=z(t,Y(t).length)),ye(t,!0),this.attachComponentToElement(e,t),this.rootComponentIds.add(e),fe.add(t)}updateComponent(e,t,n,o){var r;const i=this.childComponentLocations[t];if(!i)throw new Error(`No element is currently associated with component ${t}`);fe.delete(i)&&(j(i),i instanceof Comment&&(i.textContent="!"));const s=null===(r=te(i))||void 0===r?void 0:r.getRootNode(),a=s&&s.activeElement;this.applyEdits(e,t,i,0,n,o),a instanceof HTMLElement&&s&&s.activeElement!==a&&a.focus()}disposeComponent(e){if(this.rootComponentIds.delete(e)){const t=this.childComponentLocations[e];ye(t,!1),!0===t[me]?fe.add(t):j(t)}delete this.childComponentLocations[e]}disposeEventHandler(e){this.eventDelegator.removeListener(e)}attachComponentToElement(e,t){this.childComponentLocations[e]=t}applyEdits(e,n,o,r,i,s){let a,c=0,l=r;const h=e.arrayBuilderSegmentReader,d=e.editReader,u=e.frameReader,p=h.values(i),f=h.offset(i),g=f+h.count(i);for(let i=f;i{const t=document.createElement("script");t.textContent=e.textContent,e.getAttributeNames().forEach((n=>{t.setAttribute(n,e.getAttribute(n))})),e.parentNode.replaceChild(t,e)})),ue.content));var s;let a=0;for(;i.firstChild;)q(i.firstChild,r,a++)}applyAttribute(e,t,n,o){const r=e.frameReader,i=r.attributeName(o),s=r.attributeEventHandlerId(o);if(s){const e=Se(i);return void this.eventDelegator.setListener(n,e,s,t)}const a=r.attributeValue(o);this.setOrRemoveAttributeOrProperty(n,i,a)}insertFrameRange(e,t,n,o,r,i,s){const a=o;for(let a=i;a{et(t,e)})},enableNavigationInterception:function(e){if(void 0!==Ee&&Ee!==e)throw new Error("Only one interactive runtime may enable navigation interception at a time.");Ee=e},setHasLocationChangingListeners:function(e,t){const n=je.get(e);if(!n)throw new Error(`Renderer with ID '${e}' is not listening for navigation events`);n.hasLocationChangingEventListeners=t},endLocationChanging:function(e,t){qe&&e===We&&(qe(t),qe=null)},navigateTo:function(e,t){Ve(e,t,!0)},refresh:function(e){!e&&Me()?Ue(location.href,!0):location.reload()},getBaseURI:()=>document.baseURI,getLocationHref:()=>location.href,scrollToElement:Ke};function Ke(e){const t=document.getElementById(e);return!!t&&(t.scrollIntoView(),!0)}function Ve(e,t,n=!1){const o=Le(e),r=ot();if(t.forceLoad||!Pe(o)||"serverside-fullpageload"===r)!function(e,t){if(location.href===e){const t=e+"?";history.replaceState(null,"",t),location.replace(e)}else t?location.replace(e):location.href=e}(e,t.replaceHistoryEntry);else if("clientside-router"===r)Xe(o,!1,t.replaceHistoryEntry,t.historyEntryState,n);else{if("serverside-enhanced"!==r)throw new Error(`Unsupported page load mechanism: ${r}`);Ue(o,t.replaceHistoryEntry)}}async function Xe(e,t,n,o=void 0,r=!1){if(Qe(),function(e){const t=e.indexOf("#");return t>-1&&location.href.replace(location.hash,"")===e.substring(0,t)}(e))return void function(e,t,n){Ge(e,t,n);const o=e.indexOf("#");o!==e.length-1&&Ke(e.substring(o+1))}(e,n,o);const i=nt();(r||!(null==i?void 0:i.hasLocationChangingEventListeners)||await Ze(e,o,t,i))&&(Re=!0,Ge(e,n,o),await et(t))}function Ge(e,t,n=void 0){t?history.replaceState({userState:n,_index:He},"",e):(He++,history.pushState({userState:n,_index:He},"",e))}function Ye(e){return new Promise((t=>{const n=ze;ze=()=>{ze=n,t()},history.go(e)}))}function Qe(){qe&&(qe(!1),qe=null)}function Ze(e,t,n,o){return new Promise((r=>{Qe(),We++,qe=r,o.locationChanging(We,e,t,n)}))}async function et(e,t){const n=null!=t?t:location.href;await Promise.all(Array.from(je,(async([t,o])=>{var r;T(t)&&await o.locationChanged(n,null===(r=history.state)||void 0===r?void 0:r.userState,e)})))}async function tt(e){var t,n;ze&&"serverside-enhanced"!==ot()&&await ze(e),He=null!==(n=null===(t=history.state)||void 0===t?void 0:t._index)&&void 0!==n?n:0}function nt(){const e=Fe();if(void 0!==e)return je.get(e)}function ot(){return Oe()?"clientside-router":Me()?"serverside-enhanced":window.Blazor._internal.isBlazorWeb?"serverside-fullpageload":"clientside-router"}const rt={focus:function(e,t){if(e instanceof HTMLElement)e.focus({preventScroll:t});else{if(!(e instanceof SVGElement))throw new Error("Unable to focus an invalid element.");if(!e.hasAttribute("tabindex"))throw new Error("Unable to focus an SVG element that does not have a tabindex.");e.focus({preventScroll:t})}},focusBySelector:function(e,t){const n=document.querySelector(e);n&&(n.hasAttribute("tabindex")||(n.tabIndex=-1),n.focus({preventScroll:!0}))}},it={init:function(e,t,n,o=50){const r=at(t);(r||document.documentElement).style.overflowAnchor="none";const i=document.createRange();u(n.parentElement)&&(t.style.display="table-row",n.style.display="table-row");const s=new IntersectionObserver((function(o){o.forEach((o=>{var r;if(!o.isIntersecting)return;i.setStartAfter(t),i.setEndBefore(n);const s=i.getBoundingClientRect().height,a=null===(r=o.rootBounds)||void 0===r?void 0:r.height;o.target===t?e.invokeMethodAsync("OnSpacerBeforeVisible",o.intersectionRect.top-o.boundingClientRect.top,s,a):o.target===n&&n.offsetHeight>0&&e.invokeMethodAsync("OnSpacerAfterVisible",o.boundingClientRect.bottom-o.intersectionRect.bottom,s,a)}))}),{root:r,rootMargin:`${o}px`});s.observe(t),s.observe(n);const a=d(t),c=d(n),{observersByDotNetObjectId:l,id:h}=ct(e);function d(e){const t={attributes:!0},n=new MutationObserver(((n,o)=>{u(e.parentElement)&&(o.disconnect(),e.style.display="table-row",o.observe(e,t)),s.unobserve(e),s.observe(e)}));return n.observe(e,t),n}function u(e){return null!==e&&(e instanceof HTMLTableElement&&""===e.style.display||"table"===e.style.display||e instanceof HTMLTableSectionElement&&""===e.style.display||"table-row-group"===e.style.display)}l[h]={intersectionObserver:s,mutationObserverBefore:a,mutationObserverAfter:c}},dispose:function(e){const{observersByDotNetObjectId:t,id:n}=ct(e),o=t[n];o&&(o.intersectionObserver.disconnect(),o.mutationObserverBefore.disconnect(),o.mutationObserverAfter.disconnect(),e.dispose(),delete t[n])}},st=Symbol();function at(e){return e&&e!==document.body&&e!==document.documentElement?"visible"!==getComputedStyle(e).overflowY?e:at(e.parentElement):null}function ct(e){var t;const n=e._callDispatcher,o=e._id;return null!==(t=n[st])&&void 0!==t||(n[st]={}),{observersByDotNetObjectId:n[st],id:o}}const lt={getAndRemoveExistingTitle:function(){var e;const t=document.head?document.head.getElementsByTagName("title"):[];if(0===t.length)return null;let n=null;for(let o=t.length-1;o>=0;o--){const r=t[o],i=r.previousSibling;i instanceof Comment&&null!==K(i)||(null===n&&(n=r.textContent),null===(e=r.parentNode)||void 0===e||e.removeChild(r))}return n}},ht={init:function(e,t){t._blazorInputFileNextFileId=0,t.addEventListener("click",(function(){t.value=""})),t.addEventListener("change",(function(){t._blazorFilesById={};const n=Array.prototype.map.call(t.files,(function(e){const n={id:++t._blazorInputFileNextFileId,lastModified:new Date(e.lastModified).toISOString(),name:e.name,size:e.size,contentType:e.type,readPromise:void 0,arrayBuffer:void 0,blob:e};return t._blazorFilesById[n.id]=n,n}));e.invokeMethodAsync("NotifyChange",n)}))},toImageFile:async function(e,t,n,o,r){const i=dt(e,t),s=await new Promise((function(e){const t=new Image;t.onload=function(){URL.revokeObjectURL(t.src),e(t)},t.onerror=function(){t.onerror=null,URL.revokeObjectURL(t.src)},t.src=URL.createObjectURL(i.blob)})),a=await new Promise((function(e){var t;const i=Math.min(1,o/s.width),a=Math.min(1,r/s.height),c=Math.min(i,a),l=document.createElement("canvas");l.width=Math.round(s.width*c),l.height=Math.round(s.height*c),null===(t=l.getContext("2d"))||void 0===t||t.drawImage(s,0,0,l.width,l.height),l.toBlob(e,n)})),c={id:++e._blazorInputFileNextFileId,lastModified:i.lastModified,name:i.name,size:(null==a?void 0:a.size)||0,contentType:n,blob:a||i.blob};return e._blazorFilesById[c.id]=c,c},readFileData:async function(e,t){return dt(e,t).blob}};function dt(e,t){const n=e._blazorFilesById[t];if(!n)throw new Error(`There is no file with ID ${t}. The file list may have changed. See https://aka.ms/aspnet/blazor-input-file-multiple-selections.`);return n}const ut=new Set,pt={enableNavigationPrompt:function(e){0===ut.size&&window.addEventListener("beforeunload",ft),ut.add(e)},disableNavigationPrompt:function(e){ut.delete(e),0===ut.size&&window.removeEventListener("beforeunload",ft)}};function ft(e){e.preventDefault(),e.returnValue=!0}async function gt(e,t,n){return e instanceof Blob?await async function(e,t,n){const o=e.slice(t,t+n),r=await o.arrayBuffer();return new Uint8Array(r)}(e,t,n):function(e,t,n){return new Uint8Array(e.buffer,e.byteOffset+t,n)}(e,t,n)}const mt=new Map,vt={navigateTo:function(e,t,n=!1){Ve(e,t instanceof Object?t:{forceLoad:t,replaceHistoryEntry:n})},registerCustomEventType:function(e,t){if(!t)throw new Error("The options parameter is required.");if(i.has(e))throw new Error(`The event '${e}' is already registered.`);if(t.browserEventName){const n=s.get(t.browserEventName);n?n.push(e):s.set(t.browserEventName,[e]),a.forEach((n=>n(e,t.browserEventName)))}i.set(e,t)},rootComponents:y,runtime:{},_internal:{navigationManager:Je,domWrapper:rt,Virtualize:it,PageTitle:lt,InputFile:ht,NavigationLock:pt,getJSDataStreamChunk:gt,attachWebRendererInterop:k}};var yt;window.Blazor=vt,function(e){e[e.Trace=0]="Trace",e[e.Debug=1]="Debug",e[e.Information=2]="Information",e[e.Warning=3]="Warning",e[e.Error=4]="Error",e[e.Critical=5]="Critical",e[e.None=6]="None"}(yt||(yt={}));class wt{log(e,t){}}wt.instance=new wt;class bt{constructor(e){this.minLevel=e}log(e,t){if(e>=this.minLevel){const n=`[${(new Date).toISOString()}] ${yt[e]}: ${t}`;switch(e){case yt.Critical:case yt.Error:console.error(n);break;case yt.Warning:console.warn(n);break;case yt.Information:console.info(n);break;default:console.log(n)}}}}function _t(e,t){switch(t){case"webassembly":return Tt(e,"webassembly");case"server":return function(e){return Tt(e,"server").sort(((e,t)=>e.sequence-t.sequence))}(e);case"auto":return Tt(e,"auto")}}const St=/^\s*Blazor-Server-Component-State:(?[a-zA-Z0-9+/=]+)$/,Ct=/^\s*Blazor-WebAssembly-Component-State:(?[a-zA-Z0-9+/=]+)$/,Et=/^\s*Blazor-Web-Initializers:(?[a-zA-Z0-9+/=]+)$/;function It(e){return kt(e,St)}function kt(e,t,n="state"){var o;if(e.nodeType===Node.COMMENT_NODE){const r=e.textContent||"",i=t.exec(r),s=i&&i.groups&&i.groups[n];return s&&(null===(o=e.parentNode)||void 0===o||o.removeChild(e)),s}if(!e.hasChildNodes())return;const r=e.childNodes;for(let e=0;e.*)$/);function At(e,t){const n=e.currentElement;var o,r,i;if(n&&n.nodeType===Node.COMMENT_NODE&&n.textContent){const s=Rt.exec(n.textContent),a=s&&s.groups&&s.groups.descriptor;if(!a)return;!function(e){if(e.parentNode instanceof Document)throw new Error("Root components cannot be marked as interactive. The element must be rendered statically so that scripts are not evaluated multiple times.")}(n);try{const s=function(e){const t=JSON.parse(e),{type:n}=t;if("server"!==n&&"webassembly"!==n&&"auto"!==n)throw new Error(`Invalid component type '${n}'.`);return t}(a),c=function(e,t,n){const{prerenderId:o}=e;if(o){for(;n.next()&&n.currentElement;){const e=n.currentElement;if(e.nodeType!==Node.COMMENT_NODE)continue;if(!e.textContent)continue;const t=Rt.exec(e.textContent),r=t&&t[1];if(r)return Pt(r,o),e}throw new Error(`Could not find an end component comment for '${t}'.`)}}(s,n,e);if(t!==s.type)return;switch(s.type){case"webassembly":return r=n,i=c,Nt(o=s),{...o,uniqueId:Dt++,start:r,end:i};case"server":return function(e,t,n){return xt(e),{...e,uniqueId:Dt++,start:t,end:n}}(s,n,c);case"auto":return function(e,t,n){return xt(e),Nt(e),{...e,uniqueId:Dt++,start:t,end:n}}(s,n,c)}}catch(e){throw new Error(`Found malformed component comment at ${n.textContent}`)}}}let Dt=0;function xt(e){const{descriptor:t,sequence:n}=e;if(!t)throw new Error("descriptor must be defined when using a descriptor.");if(void 0===n)throw new Error("sequence must be defined when using a descriptor.");if(!Number.isInteger(n))throw new Error(`Error parsing the sequence '${n}' for component '${JSON.stringify(e)}'`)}function Nt(e){const{assembly:t,typeName:n}=e;if(!t)throw new Error("assembly must be defined when using a descriptor.");if(!n)throw new Error("typeName must be defined when using a descriptor.");e.parameterDefinitions=e.parameterDefinitions&&atob(e.parameterDefinitions),e.parameterValues=e.parameterValues&&atob(e.parameterValues)}function Pt(e,t){const n=JSON.parse(e);if(1!==Object.keys(n).length)throw new Error(`Invalid end of component comment: '${e}'`);const o=n.prerenderId;if(!o)throw new Error(`End of component comment must have a value for the prerendered property: '${e}'`);if(o!==t)throw new Error(`End of component comment prerendered property must match the start comment prerender id: '${t}', '${o}'`)}class Mt{constructor(e){this.childNodes=e,this.currentIndex=-1,this.length=e.length}next(){return this.currentIndex++,this.currentIndex{n+=`0x${e<16?"0":""}${e.toString(16)} `})),n.substr(0,n.length-1)}(e)}'`)):"string"==typeof e&&(n=`String data of length ${e.length}`,t&&(n+=`. Content: '${e}'`)),n}function zt(e){return e&&"undefined"!=typeof ArrayBuffer&&(e instanceof ArrayBuffer||e.constructor&&"ArrayBuffer"===e.constructor.name)}async function qt(e,t,n,o,r,i){const s={},[a,c]=Vt();s[a]=c,e.log(Ot.Trace,`(${t} transport) sending data. ${jt(r,i.logMessageContent)}.`);const l=zt(r)?"arraybuffer":"text",h=await n.post(o,{content:r,headers:{...s,...i.headers},responseType:l,timeout:i.timeout,withCredentials:i.withCredentials});e.log(Ot.Trace,`(${t} transport) request complete. Response status: ${h.statusCode}.`)}class Jt{constructor(e,t){this._subject=e,this._observer=t}dispose(){const e=this._subject.observers.indexOf(this._observer);e>-1&&this._subject.observers.splice(e,1),0===this._subject.observers.length&&this._subject.cancelCallback&&this._subject.cancelCallback().catch((e=>{}))}}class Kt{constructor(e){this._minLevel=e,this.out=console}log(e,t){if(e>=this._minLevel){const n=`[${(new Date).toISOString()}] ${Ot[e]}: ${t}`;switch(e){case Ot.Critical:case Ot.Error:this.out.error(n);break;case Ot.Warning:this.out.warn(n);break;case Ot.Information:this.out.info(n);break;default:this.out.log(n)}}}}function Vt(){let e="X-SignalR-User-Agent";return Wt.isNode&&(e="User-Agent"),[e,Xt($t,Gt(),Wt.isNode?"NodeJS":"Browser",Yt())]}function Xt(e,t,n,o){let r="Microsoft SignalR/";const i=e.split(".");return r+=`${i[0]}.${i[1]}`,r+=` (${e}; `,r+=t&&""!==t?`${t}; `:"Unknown OS; ",r+=`${n}`,r+=o?`; ${o}`:"; Unknown Runtime Version",r+=")",r}function Gt(){if(!Wt.isNode)return"";switch(process.platform){case"win32":return"Windows NT";case"darwin":return"macOS";case"linux":return"Linux";default:return process.platform}}function Yt(){if(Wt.isNode)return process.versions.node}function Qt(e){return e.stack?e.stack:e.message?e.message:`${e}`}class Zt{writeHandshakeRequest(e){return Bt.write(JSON.stringify(e))}parseHandshakeResponse(e){let t,n;if(zt(e)){const o=new Uint8Array(e),r=o.indexOf(Bt.RecordSeparatorCode);if(-1===r)throw new Error("Message is incomplete.");const i=r+1;t=String.fromCharCode.apply(null,Array.prototype.slice.call(o.slice(0,i))),n=o.byteLength>i?o.slice(i).buffer:null}else{const o=e,r=o.indexOf(Bt.RecordSeparator);if(-1===r)throw new Error("Message is incomplete.");const i=r+1;t=o.substring(0,i),n=o.length>i?o.substring(i):null}const o=Bt.parse(t),r=JSON.parse(o[0]);if(r.type)throw new Error("Expected a handshake response from the server.");return[n,r]}}class en extends Error{constructor(e,t){const n=new.target.prototype;super(`${e}: Status code '${t}'`),this.statusCode=t,this.__proto__=n}}class tn extends Error{constructor(e="A timeout occurred."){const t=new.target.prototype;super(e),this.__proto__=t}}class nn extends Error{constructor(e="An abort occurred."){const t=new.target.prototype;super(e),this.__proto__=t}}class on extends Error{constructor(e,t){const n=new.target.prototype;super(e),this.transport=t,this.errorType="UnsupportedTransportError",this.__proto__=n}}class rn extends Error{constructor(e,t){const n=new.target.prototype;super(e),this.transport=t,this.errorType="DisabledTransportError",this.__proto__=n}}class sn extends Error{constructor(e,t){const n=new.target.prototype;super(e),this.transport=t,this.errorType="FailedToStartTransportError",this.__proto__=n}}class an extends Error{constructor(e){const t=new.target.prototype;super(e),this.errorType="FailedToNegotiateWithServerError",this.__proto__=t}}class cn extends Error{constructor(e,t){const n=new.target.prototype;super(e),this.innerErrors=t,this.__proto__=n}}var ln,hn;!function(e){e[e.Invocation=1]="Invocation",e[e.StreamItem=2]="StreamItem",e[e.Completion=3]="Completion",e[e.StreamInvocation=4]="StreamInvocation",e[e.CancelInvocation=5]="CancelInvocation",e[e.Ping=6]="Ping",e[e.Close=7]="Close",e[e.Ack=8]="Ack",e[e.Sequence=9]="Sequence"}(ln||(ln={}));class dn{constructor(){this.observers=[]}next(e){for(const t of this.observers)t.next(e)}error(e){for(const t of this.observers)t.error&&t.error(e)}complete(){for(const e of this.observers)e.complete&&e.complete()}subscribe(e){return this.observers.push(e),new Jt(this,e)}}class un{constructor(e,t,n){this._bufferSize=1e5,this._messages=[],this._totalMessageCount=0,this._waitForSequenceMessage=!1,this._nextReceivingSequenceId=1,this._latestReceivedSequenceId=0,this._bufferedByteCount=0,this._reconnectInProgress=!1,this._protocol=e,this._connection=t,this._bufferSize=n}async _send(e){const t=this._protocol.writeMessage(e);let n=Promise.resolve();if(this._isInvocationMessage(e)){this._totalMessageCount++;let e=()=>{},o=()=>{};zt(t)?this._bufferedByteCount+=t.byteLength:this._bufferedByteCount+=t.length,this._bufferedByteCount>=this._bufferSize&&(n=new Promise(((t,n)=>{e=t,o=n}))),this._messages.push(new pn(t,this._totalMessageCount,e,o))}try{this._reconnectInProgress||await this._connection.send(t)}catch{this._disconnected()}await n}_ack(e){let t=-1;for(let n=0;nthis._nextReceivingSequenceId?this._connection.stop(new Error("Sequence ID greater than amount of messages we've received.")):this._nextReceivingSequenceId=e.sequenceId}_disconnected(){this._reconnectInProgress=!0,this._waitForSequenceMessage=!0}async _resend(){const e=0!==this._messages.length?this._messages[0]._id:this._totalMessageCount+1;await this._connection.send(this._protocol.writeMessage({type:ln.Sequence,sequenceId:e}));const t=this._messages;for(const e of t)await this._connection.send(e._message);this._reconnectInProgress=!1}_dispose(e){null!=e||(e=new Error("Unable to reconnect to server."));for(const t of this._messages)t._rejector(e)}_isInvocationMessage(e){switch(e.type){case ln.Invocation:case ln.StreamItem:case ln.Completion:case ln.StreamInvocation:case ln.CancelInvocation:return!0;case ln.Close:case ln.Sequence:case ln.Ping:case ln.Ack:return!1}}_ackTimer(){void 0===this._ackTimerHandle&&(this._ackTimerHandle=setTimeout((async()=>{try{this._reconnectInProgress||await this._connection.send(this._protocol.writeMessage({type:ln.Ack,sequenceId:this._latestReceivedSequenceId}))}catch{}clearTimeout(this._ackTimerHandle),this._ackTimerHandle=void 0}),1e3))}}class pn{constructor(e,t,n,o){this._message=e,this._id=t,this._resolver=n,this._rejector=o}}!function(e){e.Disconnected="Disconnected",e.Connecting="Connecting",e.Connected="Connected",e.Disconnecting="Disconnecting",e.Reconnecting="Reconnecting"}(hn||(hn={}));class fn{static create(e,t,n,o,r,i,s){return new fn(e,t,n,o,r,i,s)}constructor(e,t,n,o,r,i,s){this._nextKeepAlive=0,this._freezeEventListener=()=>{this._logger.log(Ot.Warning,"The page is being frozen, this will likely lead to the connection being closed and messages being lost. For more information see the docs at https://learn.microsoft.com/aspnet/core/signalr/javascript-client#bsleep")},Ht.isRequired(e,"connection"),Ht.isRequired(t,"logger"),Ht.isRequired(n,"protocol"),this.serverTimeoutInMilliseconds=null!=r?r:3e4,this.keepAliveIntervalInMilliseconds=null!=i?i:15e3,this._statefulReconnectBufferSize=null!=s?s:1e5,this._logger=t,this._protocol=n,this.connection=e,this._reconnectPolicy=o,this._handshakeProtocol=new Zt,this.connection.onreceive=e=>this._processIncomingData(e),this.connection.onclose=e=>this._connectionClosed(e),this._callbacks={},this._methods={},this._closedCallbacks=[],this._reconnectingCallbacks=[],this._reconnectedCallbacks=[],this._invocationId=0,this._receivedHandshakeResponse=!1,this._connectionState=hn.Disconnected,this._connectionStarted=!1,this._cachedPingMessage=this._protocol.writeMessage({type:ln.Ping})}get state(){return this._connectionState}get connectionId(){return this.connection&&this.connection.connectionId||null}get baseUrl(){return this.connection.baseUrl||""}set baseUrl(e){if(this._connectionState!==hn.Disconnected&&this._connectionState!==hn.Reconnecting)throw new Error("The HubConnection must be in the Disconnected or Reconnecting state to change the url.");if(!e)throw new Error("The HubConnection url must be a valid url.");this.connection.baseUrl=e}start(){return this._startPromise=this._startWithStateTransitions(),this._startPromise}async _startWithStateTransitions(){if(this._connectionState!==hn.Disconnected)return Promise.reject(new Error("Cannot start a HubConnection that is not in the 'Disconnected' state."));this._connectionState=hn.Connecting,this._logger.log(Ot.Debug,"Starting HubConnection.");try{await this._startInternal(),Wt.isBrowser&&window.document.addEventListener("freeze",this._freezeEventListener),this._connectionState=hn.Connected,this._connectionStarted=!0,this._logger.log(Ot.Debug,"HubConnection connected successfully.")}catch(e){return this._connectionState=hn.Disconnected,this._logger.log(Ot.Debug,`HubConnection failed to start successfully because of error '${e}'.`),Promise.reject(e)}}async _startInternal(){this._stopDuringStartError=void 0,this._receivedHandshakeResponse=!1;const e=new Promise(((e,t)=>{this._handshakeResolver=e,this._handshakeRejecter=t}));await this.connection.start(this._protocol.transferFormat);try{let t=this._protocol.version;this.connection.features.reconnect||(t=1);const n={protocol:this._protocol.name,version:t};if(this._logger.log(Ot.Debug,"Sending handshake request."),await this._sendMessage(this._handshakeProtocol.writeHandshakeRequest(n)),this._logger.log(Ot.Information,`Using HubProtocol '${this._protocol.name}'.`),this._cleanupTimeout(),this._resetTimeoutPeriod(),this._resetKeepAliveInterval(),await e,this._stopDuringStartError)throw this._stopDuringStartError;!!this.connection.features.reconnect&&(this._messageBuffer=new un(this._protocol,this.connection,this._statefulReconnectBufferSize),this.connection.features.disconnected=this._messageBuffer._disconnected.bind(this._messageBuffer),this.connection.features.resend=()=>{if(this._messageBuffer)return this._messageBuffer._resend()}),this.connection.features.inherentKeepAlive||await this._sendMessage(this._cachedPingMessage)}catch(e){throw this._logger.log(Ot.Debug,`Hub handshake failed with error '${e}' during start(). Stopping HubConnection.`),this._cleanupTimeout(),this._cleanupPingTimer(),await this.connection.stop(e),e}}async stop(){const e=this._startPromise;this.connection.features.reconnect=!1,this._stopPromise=this._stopInternal(),await this._stopPromise;try{await e}catch(e){}}_stopInternal(e){if(this._connectionState===hn.Disconnected)return this._logger.log(Ot.Debug,`Call to HubConnection.stop(${e}) ignored because it is already in the disconnected state.`),Promise.resolve();if(this._connectionState===hn.Disconnecting)return this._logger.log(Ot.Debug,`Call to HttpConnection.stop(${e}) ignored because the connection is already in the disconnecting state.`),this._stopPromise;const t=this._connectionState;return this._connectionState=hn.Disconnecting,this._logger.log(Ot.Debug,"Stopping HubConnection."),this._reconnectDelayHandle?(this._logger.log(Ot.Debug,"Connection stopped during reconnect delay. Done reconnecting."),clearTimeout(this._reconnectDelayHandle),this._reconnectDelayHandle=void 0,this._completeClose(),Promise.resolve()):(t===hn.Connected&&this._sendCloseMessage(),this._cleanupTimeout(),this._cleanupPingTimer(),this._stopDuringStartError=e||new nn("The connection was stopped before the hub handshake could complete."),this.connection.stop(e))}async _sendCloseMessage(){try{await this._sendWithProtocol(this._createCloseMessage())}catch{}}stream(e,...t){const[n,o]=this._replaceStreamingParams(t),r=this._createStreamInvocation(e,t,o);let i;const s=new dn;return s.cancelCallback=()=>{const e=this._createCancelInvocation(r.invocationId);return delete this._callbacks[r.invocationId],i.then((()=>this._sendWithProtocol(e)))},this._callbacks[r.invocationId]=(e,t)=>{t?s.error(t):e&&(e.type===ln.Completion?e.error?s.error(new Error(e.error)):s.complete():s.next(e.item))},i=this._sendWithProtocol(r).catch((e=>{s.error(e),delete this._callbacks[r.invocationId]})),this._launchStreams(n,i),s}_sendMessage(e){return this._resetKeepAliveInterval(),this.connection.send(e)}_sendWithProtocol(e){return this._messageBuffer?this._messageBuffer._send(e):this._sendMessage(this._protocol.writeMessage(e))}send(e,...t){const[n,o]=this._replaceStreamingParams(t),r=this._sendWithProtocol(this._createInvocation(e,t,!0,o));return this._launchStreams(n,r),r}invoke(e,...t){const[n,o]=this._replaceStreamingParams(t),r=this._createInvocation(e,t,!1,o);return new Promise(((e,t)=>{this._callbacks[r.invocationId]=(n,o)=>{o?t(o):n&&(n.type===ln.Completion?n.error?t(new Error(n.error)):e(n.result):t(new Error(`Unexpected message type: ${n.type}`)))};const o=this._sendWithProtocol(r).catch((e=>{t(e),delete this._callbacks[r.invocationId]}));this._launchStreams(n,o)}))}on(e,t){e&&t&&(e=e.toLowerCase(),this._methods[e]||(this._methods[e]=[]),-1===this._methods[e].indexOf(t)&&this._methods[e].push(t))}off(e,t){if(!e)return;e=e.toLowerCase();const n=this._methods[e];if(n)if(t){const o=n.indexOf(t);-1!==o&&(n.splice(o,1),0===n.length&&delete this._methods[e])}else delete this._methods[e]}onclose(e){e&&this._closedCallbacks.push(e)}onreconnecting(e){e&&this._reconnectingCallbacks.push(e)}onreconnected(e){e&&this._reconnectedCallbacks.push(e)}_processIncomingData(e){if(this._cleanupTimeout(),this._receivedHandshakeResponse||(e=this._processHandshakeResponse(e),this._receivedHandshakeResponse=!0),e){const t=this._protocol.parseMessages(e,this._logger);for(const e of t)if(!this._messageBuffer||this._messageBuffer._shouldProcessMessage(e))switch(e.type){case ln.Invocation:this._invokeClientMethod(e);break;case ln.StreamItem:case ln.Completion:{const t=this._callbacks[e.invocationId];if(t){e.type===ln.Completion&&delete this._callbacks[e.invocationId];try{t(e)}catch(e){this._logger.log(Ot.Error,`Stream callback threw error: ${Qt(e)}`)}}break}case ln.Ping:break;case ln.Close:{this._logger.log(Ot.Information,"Close message received from server.");const t=e.error?new Error("Server returned an error on close: "+e.error):void 0;!0===e.allowReconnect?this.connection.stop(t):this._stopPromise=this._stopInternal(t);break}case ln.Ack:this._messageBuffer&&this._messageBuffer._ack(e);break;case ln.Sequence:this._messageBuffer&&this._messageBuffer._resetSequence(e);break;default:this._logger.log(Ot.Warning,`Invalid message type: ${e.type}.`)}}this._resetTimeoutPeriod()}_processHandshakeResponse(e){let t,n;try{[n,t]=this._handshakeProtocol.parseHandshakeResponse(e)}catch(e){const t="Error parsing handshake response: "+e;this._logger.log(Ot.Error,t);const n=new Error(t);throw this._handshakeRejecter(n),n}if(t.error){const e="Server returned handshake error: "+t.error;this._logger.log(Ot.Error,e);const n=new Error(e);throw this._handshakeRejecter(n),n}return this._logger.log(Ot.Debug,"Server handshake complete."),this._handshakeResolver(),n}_resetKeepAliveInterval(){this.connection.features.inherentKeepAlive||(this._nextKeepAlive=(new Date).getTime()+this.keepAliveIntervalInMilliseconds,this._cleanupPingTimer())}_resetTimeoutPeriod(){if(!(this.connection.features&&this.connection.features.inherentKeepAlive||(this._timeoutHandle=setTimeout((()=>this.serverTimeout()),this.serverTimeoutInMilliseconds),void 0!==this._pingServerHandle))){let e=this._nextKeepAlive-(new Date).getTime();e<0&&(e=0),this._pingServerHandle=setTimeout((async()=>{if(this._connectionState===hn.Connected)try{await this._sendMessage(this._cachedPingMessage)}catch{this._cleanupPingTimer()}}),e)}}serverTimeout(){this.connection.stop(new Error("Server timeout elapsed without receiving a message from the server."))}async _invokeClientMethod(e){const t=e.target.toLowerCase(),n=this._methods[t];if(!n)return this._logger.log(Ot.Warning,`No client method with the name '${t}' found.`),void(e.invocationId&&(this._logger.log(Ot.Warning,`No result given for '${t}' method and invocation ID '${e.invocationId}'.`),await this._sendWithProtocol(this._createCompletionMessage(e.invocationId,"Client didn't provide a result.",null))));const o=n.slice(),r=!!e.invocationId;let i,s,a;for(const n of o)try{const o=i;i=await n.apply(this,e.arguments),r&&i&&o&&(this._logger.log(Ot.Error,`Multiple results provided for '${t}'. Sending error to server.`),a=this._createCompletionMessage(e.invocationId,"Client provided multiple results.",null)),s=void 0}catch(e){s=e,this._logger.log(Ot.Error,`A callback for the method '${t}' threw error '${e}'.`)}a?await this._sendWithProtocol(a):r?(s?a=this._createCompletionMessage(e.invocationId,`${s}`,null):void 0!==i?a=this._createCompletionMessage(e.invocationId,null,i):(this._logger.log(Ot.Warning,`No result given for '${t}' method and invocation ID '${e.invocationId}'.`),a=this._createCompletionMessage(e.invocationId,"Client didn't provide a result.",null)),await this._sendWithProtocol(a)):i&&this._logger.log(Ot.Error,`Result given for '${t}' method but server is not expecting a result.`)}_connectionClosed(e){this._logger.log(Ot.Debug,`HubConnection.connectionClosed(${e}) called while in state ${this._connectionState}.`),this._stopDuringStartError=this._stopDuringStartError||e||new nn("The underlying connection was closed before the hub handshake could complete."),this._handshakeResolver&&this._handshakeResolver(),this._cancelCallbacksWithError(e||new Error("Invocation canceled due to the underlying connection being closed.")),this._cleanupTimeout(),this._cleanupPingTimer(),this._connectionState===hn.Disconnecting?this._completeClose(e):this._connectionState===hn.Connected&&this._reconnectPolicy?this._reconnect(e):this._connectionState===hn.Connected&&this._completeClose(e)}_completeClose(e){if(this._connectionStarted){this._connectionState=hn.Disconnected,this._connectionStarted=!1,this._messageBuffer&&(this._messageBuffer._dispose(null!=e?e:new Error("Connection closed.")),this._messageBuffer=void 0),Wt.isBrowser&&window.document.removeEventListener("freeze",this._freezeEventListener);try{this._closedCallbacks.forEach((t=>t.apply(this,[e])))}catch(t){this._logger.log(Ot.Error,`An onclose callback called with error '${e}' threw error '${t}'.`)}}}async _reconnect(e){const t=Date.now();let n=0,o=void 0!==e?e:new Error("Attempting to reconnect due to a unknown error."),r=this._getNextRetryDelay(n++,0,o);if(null===r)return this._logger.log(Ot.Debug,"Connection not reconnecting because the IRetryPolicy returned null on the first reconnect attempt."),void this._completeClose(e);if(this._connectionState=hn.Reconnecting,e?this._logger.log(Ot.Information,`Connection reconnecting because of error '${e}'.`):this._logger.log(Ot.Information,"Connection reconnecting."),0!==this._reconnectingCallbacks.length){try{this._reconnectingCallbacks.forEach((t=>t.apply(this,[e])))}catch(t){this._logger.log(Ot.Error,`An onreconnecting callback called with error '${e}' threw error '${t}'.`)}if(this._connectionState!==hn.Reconnecting)return void this._logger.log(Ot.Debug,"Connection left the reconnecting state in onreconnecting callback. Done reconnecting.")}for(;null!==r;){if(this._logger.log(Ot.Information,`Reconnect attempt number ${n} will start in ${r} ms.`),await new Promise((e=>{this._reconnectDelayHandle=setTimeout(e,r)})),this._reconnectDelayHandle=void 0,this._connectionState!==hn.Reconnecting)return void this._logger.log(Ot.Debug,"Connection left the reconnecting state during reconnect delay. Done reconnecting.");try{if(await this._startInternal(),this._connectionState=hn.Connected,this._logger.log(Ot.Information,"HubConnection reconnected successfully."),0!==this._reconnectedCallbacks.length)try{this._reconnectedCallbacks.forEach((e=>e.apply(this,[this.connection.connectionId])))}catch(e){this._logger.log(Ot.Error,`An onreconnected callback called with connectionId '${this.connection.connectionId}; threw error '${e}'.`)}return}catch(e){if(this._logger.log(Ot.Information,`Reconnect attempt failed because of error '${e}'.`),this._connectionState!==hn.Reconnecting)return this._logger.log(Ot.Debug,`Connection moved to the '${this._connectionState}' from the reconnecting state during reconnect attempt. Done reconnecting.`),void(this._connectionState===hn.Disconnecting&&this._completeClose());o=e instanceof Error?e:new Error(e.toString()),r=this._getNextRetryDelay(n++,Date.now()-t,o)}}this._logger.log(Ot.Information,`Reconnect retries have been exhausted after ${Date.now()-t} ms and ${n} failed attempts. Connection disconnecting.`),this._completeClose()}_getNextRetryDelay(e,t,n){try{return this._reconnectPolicy.nextRetryDelayInMilliseconds({elapsedMilliseconds:t,previousRetryCount:e,retryReason:n})}catch(n){return this._logger.log(Ot.Error,`IRetryPolicy.nextRetryDelayInMilliseconds(${e}, ${t}) threw error '${n}'.`),null}}_cancelCallbacksWithError(e){const t=this._callbacks;this._callbacks={},Object.keys(t).forEach((n=>{const o=t[n];try{o(null,e)}catch(t){this._logger.log(Ot.Error,`Stream 'error' callback called with '${e}' threw error: ${Qt(t)}`)}}))}_cleanupPingTimer(){this._pingServerHandle&&(clearTimeout(this._pingServerHandle),this._pingServerHandle=void 0)}_cleanupTimeout(){this._timeoutHandle&&clearTimeout(this._timeoutHandle)}_createInvocation(e,t,n,o){if(n)return 0!==o.length?{arguments:t,streamIds:o,target:e,type:ln.Invocation}:{arguments:t,target:e,type:ln.Invocation};{const n=this._invocationId;return this._invocationId++,0!==o.length?{arguments:t,invocationId:n.toString(),streamIds:o,target:e,type:ln.Invocation}:{arguments:t,invocationId:n.toString(),target:e,type:ln.Invocation}}}_launchStreams(e,t){if(0!==e.length){t||(t=Promise.resolve());for(const n in e)e[n].subscribe({complete:()=>{t=t.then((()=>this._sendWithProtocol(this._createCompletionMessage(n))))},error:e=>{let o;o=e instanceof Error?e.message:e&&e.toString?e.toString():"Unknown error",t=t.then((()=>this._sendWithProtocol(this._createCompletionMessage(n,o))))},next:e=>{t=t.then((()=>this._sendWithProtocol(this._createStreamItemMessage(n,e))))}})}}_replaceStreamingParams(e){const t=[],n=[];for(let o=0;o0)&&(t=!1,this._accessToken=await this._accessTokenFactory()),this._setAuthorizationHeader(e);const n=await this._innerClient.send(e);return t&&401===n.statusCode&&this._accessTokenFactory?(this._accessToken=await this._accessTokenFactory(),this._setAuthorizationHeader(e),await this._innerClient.send(e)):n}_setAuthorizationHeader(e){e.headers||(e.headers={}),this._accessToken?e.headers[vn.Authorization]=`Bearer ${this._accessToken}`:this._accessTokenFactory&&e.headers[vn.Authorization]&&delete e.headers[vn.Authorization]}getCookieString(e){return this._innerClient.getCookieString(e)}}class _n extends wn{constructor(e){super(),this._logger=e;const t={_fetchType:void 0,_jar:void 0};var o;o=t,"undefined"==typeof fetch&&(o._jar=new(n(628).CookieJar),"undefined"==typeof fetch?o._fetchType=n(200):o._fetchType=fetch,o._fetchType=n(203)(o._fetchType,o._jar),1)?(this._fetchType=t._fetchType,this._jar=t._jar):this._fetchType=fetch.bind(function(){if("undefined"!=typeof globalThis)return globalThis;if("undefined"!=typeof self)return self;if("undefined"!=typeof window)return window;if(void 0!==n.g)return n.g;throw new Error("could not find global")}()),this._abortControllerType=AbortController;const r={_abortControllerType:this._abortControllerType};(function(e){return"undefined"==typeof AbortController&&(e._abortControllerType=n(778),!0)})(r)&&(this._abortControllerType=r._abortControllerType)}async send(e){if(e.abortSignal&&e.abortSignal.aborted)throw new nn;if(!e.method)throw new Error("No method defined.");if(!e.url)throw new Error("No url defined.");const t=new this._abortControllerType;let n;e.abortSignal&&(e.abortSignal.onabort=()=>{t.abort(),n=new nn});let o,r=null;if(e.timeout){const o=e.timeout;r=setTimeout((()=>{t.abort(),this._logger.log(Ot.Warning,"Timeout from HTTP request."),n=new tn}),o)}""===e.content&&(e.content=void 0),e.content&&(e.headers=e.headers||{},zt(e.content)?e.headers["Content-Type"]="application/octet-stream":e.headers["Content-Type"]="text/plain;charset=UTF-8");try{o=await this._fetchType(e.url,{body:e.content,cache:"no-cache",credentials:!0===e.withCredentials?"include":"same-origin",headers:{"X-Requested-With":"XMLHttpRequest",...e.headers},method:e.method,mode:"cors",redirect:"follow",signal:t.signal})}catch(e){if(n)throw n;throw this._logger.log(Ot.Warning,`Error from HTTP request. ${e}.`),e}finally{r&&clearTimeout(r),e.abortSignal&&(e.abortSignal.onabort=null)}if(!o.ok){const e=await Sn(o,"text");throw new en(e||o.statusText,o.status)}const i=Sn(o,e.responseType),s=await i;return new yn(o.status,o.statusText,s)}getCookieString(e){return""}}function Sn(e,t){let n;switch(t){case"arraybuffer":n=e.arrayBuffer();break;case"text":default:n=e.text();break;case"blob":case"document":case"json":throw new Error(`${t} is not supported.`)}return n}class Cn extends wn{constructor(e){super(),this._logger=e}send(e){return e.abortSignal&&e.abortSignal.aborted?Promise.reject(new nn):e.method?e.url?new Promise(((t,n)=>{const o=new XMLHttpRequest;o.open(e.method,e.url,!0),o.withCredentials=void 0===e.withCredentials||e.withCredentials,o.setRequestHeader("X-Requested-With","XMLHttpRequest"),""===e.content&&(e.content=void 0),e.content&&(zt(e.content)?o.setRequestHeader("Content-Type","application/octet-stream"):o.setRequestHeader("Content-Type","text/plain;charset=UTF-8"));const r=e.headers;r&&Object.keys(r).forEach((e=>{o.setRequestHeader(e,r[e])})),e.responseType&&(o.responseType=e.responseType),e.abortSignal&&(e.abortSignal.onabort=()=>{o.abort(),n(new nn)}),e.timeout&&(o.timeout=e.timeout),o.onload=()=>{e.abortSignal&&(e.abortSignal.onabort=null),o.status>=200&&o.status<300?t(new yn(o.status,o.statusText,o.response||o.responseText)):n(new en(o.response||o.responseText||o.statusText,o.status))},o.onerror=()=>{this._logger.log(Ot.Warning,`Error from HTTP request. ${o.status}: ${o.statusText}.`),n(new en(o.statusText,o.status))},o.ontimeout=()=>{this._logger.log(Ot.Warning,"Timeout from HTTP request."),n(new tn)},o.send(e.content)})):Promise.reject(new Error("No url defined.")):Promise.reject(new Error("No method defined."))}}class En extends wn{constructor(e){if(super(),"undefined"!=typeof fetch)this._httpClient=new _n(e);else{if("undefined"==typeof XMLHttpRequest)throw new Error("No usable HttpClient found.");this._httpClient=new Cn(e)}}send(e){return e.abortSignal&&e.abortSignal.aborted?Promise.reject(new nn):e.method?e.url?this._httpClient.send(e):Promise.reject(new Error("No url defined.")):Promise.reject(new Error("No method defined."))}getCookieString(e){return this._httpClient.getCookieString(e)}}var In,kn;!function(e){e[e.None=0]="None",e[e.WebSockets=1]="WebSockets",e[e.ServerSentEvents=2]="ServerSentEvents",e[e.LongPolling=4]="LongPolling"}(In||(In={})),function(e){e[e.Text=1]="Text",e[e.Binary=2]="Binary"}(kn||(kn={}));class Tn{constructor(){this._isAborted=!1,this.onabort=null}abort(){this._isAborted||(this._isAborted=!0,this.onabort&&this.onabort())}get signal(){return this}get aborted(){return this._isAborted}}class Rn{get pollAborted(){return this._pollAbort.aborted}constructor(e,t,n){this._httpClient=e,this._logger=t,this._pollAbort=new Tn,this._options=n,this._running=!1,this.onreceive=null,this.onclose=null}async connect(e,t){if(Ht.isRequired(e,"url"),Ht.isRequired(t,"transferFormat"),Ht.isIn(t,kn,"transferFormat"),this._url=e,this._logger.log(Ot.Trace,"(LongPolling transport) Connecting."),t===kn.Binary&&"undefined"!=typeof XMLHttpRequest&&"string"!=typeof(new XMLHttpRequest).responseType)throw new Error("Binary protocols over XmlHttpRequest not implementing advanced features are not supported.");const[n,o]=Vt(),r={[n]:o,...this._options.headers},i={abortSignal:this._pollAbort.signal,headers:r,timeout:1e5,withCredentials:this._options.withCredentials};t===kn.Binary&&(i.responseType="arraybuffer");const s=`${e}&_=${Date.now()}`;this._logger.log(Ot.Trace,`(LongPolling transport) polling: ${s}.`);const a=await this._httpClient.get(s,i);200!==a.statusCode?(this._logger.log(Ot.Error,`(LongPolling transport) Unexpected response code: ${a.statusCode}.`),this._closeError=new en(a.statusText||"",a.statusCode),this._running=!1):this._running=!0,this._receiving=this._poll(this._url,i)}async _poll(e,t){try{for(;this._running;)try{const n=`${e}&_=${Date.now()}`;this._logger.log(Ot.Trace,`(LongPolling transport) polling: ${n}.`);const o=await this._httpClient.get(n,t);204===o.statusCode?(this._logger.log(Ot.Information,"(LongPolling transport) Poll terminated by server."),this._running=!1):200!==o.statusCode?(this._logger.log(Ot.Error,`(LongPolling transport) Unexpected response code: ${o.statusCode}.`),this._closeError=new en(o.statusText||"",o.statusCode),this._running=!1):o.content?(this._logger.log(Ot.Trace,`(LongPolling transport) data received. ${jt(o.content,this._options.logMessageContent)}.`),this.onreceive&&this.onreceive(o.content)):this._logger.log(Ot.Trace,"(LongPolling transport) Poll timed out, reissuing.")}catch(e){this._running?e instanceof tn?this._logger.log(Ot.Trace,"(LongPolling transport) Poll timed out, reissuing."):(this._closeError=e,this._running=!1):this._logger.log(Ot.Trace,`(LongPolling transport) Poll errored after shutdown: ${e.message}`)}}finally{this._logger.log(Ot.Trace,"(LongPolling transport) Polling complete."),this.pollAborted||this._raiseOnClose()}}async send(e){return this._running?qt(this._logger,"LongPolling",this._httpClient,this._url,e,this._options):Promise.reject(new Error("Cannot send until the transport is connected"))}async stop(){this._logger.log(Ot.Trace,"(LongPolling transport) Stopping polling."),this._running=!1,this._pollAbort.abort();try{await this._receiving,this._logger.log(Ot.Trace,`(LongPolling transport) sending DELETE request to ${this._url}.`);const e={},[t,n]=Vt();e[t]=n;const o={headers:{...e,...this._options.headers},timeout:this._options.timeout,withCredentials:this._options.withCredentials};let r;try{await this._httpClient.delete(this._url,o)}catch(e){r=e}r?r instanceof en&&(404===r.statusCode?this._logger.log(Ot.Trace,"(LongPolling transport) A 404 response was returned from sending a DELETE request."):this._logger.log(Ot.Trace,`(LongPolling transport) Error sending a DELETE request: ${r}`)):this._logger.log(Ot.Trace,"(LongPolling transport) DELETE request accepted.")}finally{this._logger.log(Ot.Trace,"(LongPolling transport) Stop finished."),this._raiseOnClose()}}_raiseOnClose(){if(this.onclose){let e="(LongPolling transport) Firing onclose event.";this._closeError&&(e+=" Error: "+this._closeError),this._logger.log(Ot.Trace,e),this.onclose(this._closeError)}}}class An{constructor(e,t,n,o){this._httpClient=e,this._accessToken=t,this._logger=n,this._options=o,this.onreceive=null,this.onclose=null}async connect(e,t){return Ht.isRequired(e,"url"),Ht.isRequired(t,"transferFormat"),Ht.isIn(t,kn,"transferFormat"),this._logger.log(Ot.Trace,"(SSE transport) Connecting."),this._url=e,this._accessToken&&(e+=(e.indexOf("?")<0?"?":"&")+`access_token=${encodeURIComponent(this._accessToken)}`),new Promise(((n,o)=>{let r,i=!1;if(t===kn.Text){if(Wt.isBrowser||Wt.isWebWorker)r=new this._options.EventSource(e,{withCredentials:this._options.withCredentials});else{const t=this._httpClient.getCookieString(e),n={};n.Cookie=t;const[o,i]=Vt();n[o]=i,r=new this._options.EventSource(e,{withCredentials:this._options.withCredentials,headers:{...n,...this._options.headers}})}try{r.onmessage=e=>{if(this.onreceive)try{this._logger.log(Ot.Trace,`(SSE transport) data received. ${jt(e.data,this._options.logMessageContent)}.`),this.onreceive(e.data)}catch(e){return void this._close(e)}},r.onerror=e=>{i?this._close():o(new Error("EventSource failed to connect. The connection could not be found on the server, either the connection ID is not present on the server, or a proxy is refusing/buffering the connection. If you have multiple servers check that sticky sessions are enabled."))},r.onopen=()=>{this._logger.log(Ot.Information,`SSE connected to ${this._url}`),this._eventSource=r,i=!0,n()}}catch(e){return void o(e)}}else o(new Error("The Server-Sent Events transport only supports the 'Text' transfer format"))}))}async send(e){return this._eventSource?qt(this._logger,"SSE",this._httpClient,this._url,e,this._options):Promise.reject(new Error("Cannot send until the transport is connected"))}stop(){return this._close(),Promise.resolve()}_close(e){this._eventSource&&(this._eventSource.close(),this._eventSource=void 0,this.onclose&&this.onclose(e))}}class Dn{constructor(e,t,n,o,r,i){this._logger=n,this._accessTokenFactory=t,this._logMessageContent=o,this._webSocketConstructor=r,this._httpClient=e,this.onreceive=null,this.onclose=null,this._headers=i}async connect(e,t){let n;return Ht.isRequired(e,"url"),Ht.isRequired(t,"transferFormat"),Ht.isIn(t,kn,"transferFormat"),this._logger.log(Ot.Trace,"(WebSockets transport) Connecting."),this._accessTokenFactory&&(n=await this._accessTokenFactory()),new Promise(((o,r)=>{let i;e=e.replace(/^http/,"ws");const s=this._httpClient.getCookieString(e);let a=!1;if(Wt.isReactNative){const t={},[o,r]=Vt();t[o]=r,n&&(t[vn.Authorization]=`Bearer ${n}`),s&&(t[vn.Cookie]=s),i=new this._webSocketConstructor(e,void 0,{headers:{...t,...this._headers}})}else n&&(e+=(e.indexOf("?")<0?"?":"&")+`access_token=${encodeURIComponent(n)}`);i||(i=new this._webSocketConstructor(e)),t===kn.Binary&&(i.binaryType="arraybuffer"),i.onopen=t=>{this._logger.log(Ot.Information,`WebSocket connected to ${e}.`),this._webSocket=i,a=!0,o()},i.onerror=e=>{let t=null;t="undefined"!=typeof ErrorEvent&&e instanceof ErrorEvent?e.error:"There was an error with the transport",this._logger.log(Ot.Information,`(WebSockets transport) ${t}.`)},i.onmessage=e=>{if(this._logger.log(Ot.Trace,`(WebSockets transport) data received. ${jt(e.data,this._logMessageContent)}.`),this.onreceive)try{this.onreceive(e.data)}catch(e){return void this._close(e)}},i.onclose=e=>{if(a)this._close(e);else{let t=null;t="undefined"!=typeof ErrorEvent&&e instanceof ErrorEvent?e.error:"WebSocket failed to connect. The connection could not be found on the server, either the endpoint may not be a SignalR endpoint, the connection ID is not present on the server, or there is a proxy blocking WebSockets. If you have multiple servers check that sticky sessions are enabled.",r(new Error(t))}}}))}send(e){return this._webSocket&&this._webSocket.readyState===this._webSocketConstructor.OPEN?(this._logger.log(Ot.Trace,`(WebSockets transport) sending data. ${jt(e,this._logMessageContent)}.`),this._webSocket.send(e),Promise.resolve()):Promise.reject("WebSocket is not in the OPEN state")}stop(){return this._webSocket&&this._close(void 0),Promise.resolve()}_close(e){this._webSocket&&(this._webSocket.onclose=()=>{},this._webSocket.onmessage=()=>{},this._webSocket.onerror=()=>{},this._webSocket.close(),this._webSocket=void 0),this._logger.log(Ot.Trace,"(WebSockets transport) socket closed."),this.onclose&&(!this._isCloseEvent(e)||!1!==e.wasClean&&1e3===e.code?e instanceof Error?this.onclose(e):this.onclose():this.onclose(new Error(`WebSocket closed with status code: ${e.code} (${e.reason||"no reason given"}).`)))}_isCloseEvent(e){return e&&"boolean"==typeof e.wasClean&&"number"==typeof e.code}}class xn{constructor(e,t={}){if(this._stopPromiseResolver=()=>{},this.features={},this._negotiateVersion=1,Ht.isRequired(e,"url"),this._logger=function(e){return void 0===e?new Kt(Ot.Information):null===e?Ft.instance:void 0!==e.log?e:new Kt(e)}(t.logger),this.baseUrl=this._resolveUrl(e),(t=t||{}).logMessageContent=void 0!==t.logMessageContent&&t.logMessageContent,"boolean"!=typeof t.withCredentials&&void 0!==t.withCredentials)throw new Error("withCredentials option was not a 'boolean' or 'undefined' value");t.withCredentials=void 0===t.withCredentials||t.withCredentials,t.timeout=void 0===t.timeout?1e5:t.timeout,"undefined"==typeof WebSocket||t.WebSocket||(t.WebSocket=WebSocket),"undefined"==typeof EventSource||t.EventSource||(t.EventSource=EventSource),this._httpClient=new bn(t.httpClient||new En(this._logger),t.accessTokenFactory),this._connectionState="Disconnected",this._connectionStarted=!1,this._options=t,this.onreceive=null,this.onclose=null}async start(e){if(e=e||kn.Binary,Ht.isIn(e,kn,"transferFormat"),this._logger.log(Ot.Debug,`Starting connection with transfer format '${kn[e]}'.`),"Disconnected"!==this._connectionState)return Promise.reject(new Error("Cannot start an HttpConnection that is not in the 'Disconnected' state."));if(this._connectionState="Connecting",this._startInternalPromise=this._startInternal(e),await this._startInternalPromise,"Disconnecting"===this._connectionState){const e="Failed to start the HttpConnection before stop() was called.";return this._logger.log(Ot.Error,e),await this._stopPromise,Promise.reject(new nn(e))}if("Connected"!==this._connectionState){const e="HttpConnection.startInternal completed gracefully but didn't enter the connection into the connected state!";return this._logger.log(Ot.Error,e),Promise.reject(new nn(e))}this._connectionStarted=!0}send(e){return"Connected"!==this._connectionState?Promise.reject(new Error("Cannot send data if the connection is not in the 'Connected' State.")):(this._sendQueue||(this._sendQueue=new Nn(this.transport)),this._sendQueue.send(e))}async stop(e){return"Disconnected"===this._connectionState?(this._logger.log(Ot.Debug,`Call to HttpConnection.stop(${e}) ignored because the connection is already in the disconnected state.`),Promise.resolve()):"Disconnecting"===this._connectionState?(this._logger.log(Ot.Debug,`Call to HttpConnection.stop(${e}) ignored because the connection is already in the disconnecting state.`),this._stopPromise):(this._connectionState="Disconnecting",this._stopPromise=new Promise((e=>{this._stopPromiseResolver=e})),await this._stopInternal(e),void await this._stopPromise)}async _stopInternal(e){this._stopError=e;try{await this._startInternalPromise}catch(e){}if(this.transport){try{await this.transport.stop()}catch(e){this._logger.log(Ot.Error,`HttpConnection.transport.stop() threw error '${e}'.`),this._stopConnection()}this.transport=void 0}else this._logger.log(Ot.Debug,"HttpConnection.transport is undefined in HttpConnection.stop() because start() failed.")}async _startInternal(e){let t=this.baseUrl;this._accessTokenFactory=this._options.accessTokenFactory,this._httpClient._accessTokenFactory=this._accessTokenFactory;try{if(this._options.skipNegotiation){if(this._options.transport!==In.WebSockets)throw new Error("Negotiation can only be skipped when using the WebSocket transport directly.");this.transport=this._constructTransport(In.WebSockets),await this._startTransport(t,e)}else{let n=null,o=0;do{if(n=await this._getNegotiationResponse(t),"Disconnecting"===this._connectionState||"Disconnected"===this._connectionState)throw new nn("The connection was stopped during negotiation.");if(n.error)throw new Error(n.error);if(n.ProtocolVersion)throw new Error("Detected a connection attempt to an ASP.NET SignalR Server. This client only supports connecting to an ASP.NET Core SignalR Server. See https://aka.ms/signalr-core-differences for details.");if(n.url&&(t=n.url),n.accessToken){const e=n.accessToken;this._accessTokenFactory=()=>e,this._httpClient._accessToken=e,this._httpClient._accessTokenFactory=void 0}o++}while(n.url&&o<100);if(100===o&&n.url)throw new Error("Negotiate redirection limit exceeded.");await this._createTransport(t,this._options.transport,n,e)}this.transport instanceof Rn&&(this.features.inherentKeepAlive=!0),"Connecting"===this._connectionState&&(this._logger.log(Ot.Debug,"The HttpConnection connected successfully."),this._connectionState="Connected")}catch(e){return this._logger.log(Ot.Error,"Failed to start the connection: "+e),this._connectionState="Disconnected",this.transport=void 0,this._stopPromiseResolver(),Promise.reject(e)}}async _getNegotiationResponse(e){const t={},[n,o]=Vt();t[n]=o;const r=this._resolveNegotiateUrl(e);this._logger.log(Ot.Debug,`Sending negotiation request: ${r}.`);try{const e=await this._httpClient.post(r,{content:"",headers:{...t,...this._options.headers},timeout:this._options.timeout,withCredentials:this._options.withCredentials});if(200!==e.statusCode)return Promise.reject(new Error(`Unexpected status code returned from negotiate '${e.statusCode}'`));const n=JSON.parse(e.content);return(!n.negotiateVersion||n.negotiateVersion<1)&&(n.connectionToken=n.connectionId),n.useStatefulReconnect&&!0!==this._options._useStatefulReconnect?Promise.reject(new an("Client didn't negotiate Stateful Reconnect but the server did.")):n}catch(e){let t="Failed to complete negotiation with the server: "+e;return e instanceof en&&404===e.statusCode&&(t+=" Either this is not a SignalR endpoint or there is a proxy blocking the connection."),this._logger.log(Ot.Error,t),Promise.reject(new an(t))}}_createConnectUrl(e,t){return t?e+(-1===e.indexOf("?")?"?":"&")+`id=${t}`:e}async _createTransport(e,t,n,o){let r=this._createConnectUrl(e,n.connectionToken);if(this._isITransport(t))return this._logger.log(Ot.Debug,"Connection was provided an instance of ITransport, using that directly."),this.transport=t,await this._startTransport(r,o),void(this.connectionId=n.connectionId);const i=[],s=n.availableTransports||[];let a=n;for(const n of s){const s=this._resolveTransportOrError(n,t,o,!0===(null==a?void 0:a.useStatefulReconnect));if(s instanceof Error)i.push(`${n.transport} failed:`),i.push(s);else if(this._isITransport(s)){if(this.transport=s,!a){try{a=await this._getNegotiationResponse(e)}catch(e){return Promise.reject(e)}r=this._createConnectUrl(e,a.connectionToken)}try{return await this._startTransport(r,o),void(this.connectionId=a.connectionId)}catch(e){if(this._logger.log(Ot.Error,`Failed to start the transport '${n.transport}': ${e}`),a=void 0,i.push(new sn(`${n.transport} failed: ${e}`,In[n.transport])),"Connecting"!==this._connectionState){const e="Failed to select transport before stop() was called.";return this._logger.log(Ot.Debug,e),Promise.reject(new nn(e))}}}}return i.length>0?Promise.reject(new cn(`Unable to connect to the server with any of the available transports. ${i.join(" ")}`,i)):Promise.reject(new Error("None of the transports supported by the client are supported by the server."))}_constructTransport(e){switch(e){case In.WebSockets:if(!this._options.WebSocket)throw new Error("'WebSocket' is not supported in your environment.");return new Dn(this._httpClient,this._accessTokenFactory,this._logger,this._options.logMessageContent,this._options.WebSocket,this._options.headers||{});case In.ServerSentEvents:if(!this._options.EventSource)throw new Error("'EventSource' is not supported in your environment.");return new An(this._httpClient,this._httpClient._accessToken,this._logger,this._options);case In.LongPolling:return new Rn(this._httpClient,this._logger,this._options);default:throw new Error(`Unknown transport: ${e}.`)}}_startTransport(e,t){return this.transport.onreceive=this.onreceive,this.features.reconnect?this.transport.onclose=async n=>{let o=!1;if(this.features.reconnect){try{this.features.disconnected(),await this.transport.connect(e,t),await this.features.resend()}catch{o=!0}o&&this._stopConnection(n)}else this._stopConnection(n)}:this.transport.onclose=e=>this._stopConnection(e),this.transport.connect(e,t)}_resolveTransportOrError(e,t,n,o){const r=In[e.transport];if(null==r)return this._logger.log(Ot.Debug,`Skipping transport '${e.transport}' because it is not supported by this client.`),new Error(`Skipping transport '${e.transport}' because it is not supported by this client.`);if(!function(e,t){return!e||0!=(t&e)}(t,r))return this._logger.log(Ot.Debug,`Skipping transport '${In[r]}' because it was disabled by the client.`),new rn(`'${In[r]}' is disabled by the client.`,r);if(!(e.transferFormats.map((e=>kn[e])).indexOf(n)>=0))return this._logger.log(Ot.Debug,`Skipping transport '${In[r]}' because it does not support the requested transfer format '${kn[n]}'.`),new Error(`'${In[r]}' does not support ${kn[n]}.`);if(r===In.WebSockets&&!this._options.WebSocket||r===In.ServerSentEvents&&!this._options.EventSource)return this._logger.log(Ot.Debug,`Skipping transport '${In[r]}' because it is not supported in your environment.'`),new on(`'${In[r]}' is not supported in your environment.`,r);this._logger.log(Ot.Debug,`Selecting transport '${In[r]}'.`);try{return this.features.reconnect=r===In.WebSockets?o:void 0,this._constructTransport(r)}catch(e){return e}}_isITransport(e){return e&&"object"==typeof e&&"connect"in e}_stopConnection(e){if(this._logger.log(Ot.Debug,`HttpConnection.stopConnection(${e}) called while in state ${this._connectionState}.`),this.transport=void 0,e=this._stopError||e,this._stopError=void 0,"Disconnected"!==this._connectionState){if("Connecting"===this._connectionState)throw this._logger.log(Ot.Warning,`Call to HttpConnection.stopConnection(${e}) was ignored because the connection is still in the connecting state.`),new Error(`HttpConnection.stopConnection(${e}) was called while the connection is still in the connecting state.`);if("Disconnecting"===this._connectionState&&this._stopPromiseResolver(),e?this._logger.log(Ot.Error,`Connection disconnected with error '${e}'.`):this._logger.log(Ot.Information,"Connection disconnected."),this._sendQueue&&(this._sendQueue.stop().catch((e=>{this._logger.log(Ot.Error,`TransportSendQueue.stop() threw error '${e}'.`)})),this._sendQueue=void 0),this.connectionId=void 0,this._connectionState="Disconnected",this._connectionStarted){this._connectionStarted=!1;try{this.onclose&&this.onclose(e)}catch(t){this._logger.log(Ot.Error,`HttpConnection.onclose(${e}) threw error '${t}'.`)}}}else this._logger.log(Ot.Debug,`Call to HttpConnection.stopConnection(${e}) was ignored because the connection is already in the disconnected state.`)}_resolveUrl(e){if(0===e.lastIndexOf("https://",0)||0===e.lastIndexOf("http://",0))return e;if(!Wt.isBrowser)throw new Error(`Cannot resolve '${e}'.`);const t=window.document.createElement("a");return t.href=e,this._logger.log(Ot.Information,`Normalizing '${e}' to '${t.href}'.`),t.href}_resolveNegotiateUrl(e){const t=new URL(e);t.pathname.endsWith("/")?t.pathname+="negotiate":t.pathname+="/negotiate";const n=new URLSearchParams(t.searchParams);return n.has("negotiateVersion")||n.append("negotiateVersion",this._negotiateVersion.toString()),n.has("useStatefulReconnect")?"true"===n.get("useStatefulReconnect")&&(this._options._useStatefulReconnect=!0):!0===this._options._useStatefulReconnect&&n.append("useStatefulReconnect","true"),t.search=n.toString(),t.toString()}}class Nn{constructor(e){this._transport=e,this._buffer=[],this._executing=!0,this._sendBufferedData=new Pn,this._transportResult=new Pn,this._sendLoopPromise=this._sendLoop()}send(e){return this._bufferData(e),this._transportResult||(this._transportResult=new Pn),this._transportResult.promise}stop(){return this._executing=!1,this._sendBufferedData.resolve(),this._sendLoopPromise}_bufferData(e){if(this._buffer.length&&typeof this._buffer[0]!=typeof e)throw new Error(`Expected data to be of type ${typeof this._buffer} but was of type ${typeof e}`);this._buffer.push(e),this._sendBufferedData.resolve()}async _sendLoop(){for(;;){if(await this._sendBufferedData.promise,!this._executing){this._transportResult&&this._transportResult.reject("Connection stopped.");break}this._sendBufferedData=new Pn;const e=this._transportResult;this._transportResult=void 0;const t="string"==typeof this._buffer[0]?this._buffer.join(""):Nn._concatBuffers(this._buffer);this._buffer.length=0;try{await this._transport.send(t),e.resolve()}catch(t){e.reject(t)}}}static _concatBuffers(e){const t=e.map((e=>e.byteLength)).reduce(((e,t)=>e+t)),n=new Uint8Array(t);let o=0;for(const t of e)n.set(new Uint8Array(t),o),o+=t.byteLength;return n.buffer}}class Pn{constructor(){this.promise=new Promise(((e,t)=>[this._resolver,this._rejecter]=[e,t]))}resolve(){this._resolver()}reject(e){this._rejecter(e)}}class Mn{constructor(){this.name="json",this.version=2,this.transferFormat=kn.Text}parseMessages(e,t){if("string"!=typeof e)throw new Error("Invalid input for JSON hub protocol. Expected a string.");if(!e)return[];null===t&&(t=Ft.instance);const n=Bt.parse(e),o=[];for(const e of n){const n=JSON.parse(e);if("number"!=typeof n.type)throw new Error("Invalid payload.");switch(n.type){case ln.Invocation:this._isInvocationMessage(n);break;case ln.StreamItem:this._isStreamItemMessage(n);break;case ln.Completion:this._isCompletionMessage(n);break;case ln.Ping:case ln.Close:break;case ln.Ack:this._isAckMessage(n);break;case ln.Sequence:this._isSequenceMessage(n);break;default:t.log(Ot.Information,"Unknown message type '"+n.type+"' ignored.");continue}o.push(n)}return o}writeMessage(e){return Bt.write(JSON.stringify(e))}_isInvocationMessage(e){this._assertNotEmptyString(e.target,"Invalid payload for Invocation message."),void 0!==e.invocationId&&this._assertNotEmptyString(e.invocationId,"Invalid payload for Invocation message.")}_isStreamItemMessage(e){if(this._assertNotEmptyString(e.invocationId,"Invalid payload for StreamItem message."),void 0===e.item)throw new Error("Invalid payload for StreamItem message.")}_isCompletionMessage(e){if(e.result&&e.error)throw new Error("Invalid payload for Completion message.");!e.result&&e.error&&this._assertNotEmptyString(e.error,"Invalid payload for Completion message."),this._assertNotEmptyString(e.invocationId,"Invalid payload for Completion message.")}_isAckMessage(e){if("number"!=typeof e.sequenceId)throw new Error("Invalid SequenceId for Ack message.")}_isSequenceMessage(e){if("number"!=typeof e.sequenceId)throw new Error("Invalid SequenceId for Sequence message.")}_assertNotEmptyString(e,t){if("string"!=typeof e||""===e)throw new Error(t)}}const Un={trace:Ot.Trace,debug:Ot.Debug,info:Ot.Information,information:Ot.Information,warn:Ot.Warning,warning:Ot.Warning,error:Ot.Error,critical:Ot.Critical,none:Ot.None};class Ln{configureLogging(e){if(Ht.isRequired(e,"logging"),function(e){return void 0!==e.log}(e))this.logger=e;else if("string"==typeof e){const t=function(e){const t=Un[e.toLowerCase()];if(void 0!==t)return t;throw new Error(`Unknown log level: ${e}`)}(e);this.logger=new Kt(t)}else this.logger=new Kt(e);return this}withUrl(e,t){return Ht.isRequired(e,"url"),Ht.isNotEmpty(e,"url"),this.url=e,this.httpConnectionOptions="object"==typeof t?{...this.httpConnectionOptions,...t}:{...this.httpConnectionOptions,transport:t},this}withHubProtocol(e){return Ht.isRequired(e,"protocol"),this.protocol=e,this}withAutomaticReconnect(e){if(this.reconnectPolicy)throw new Error("A reconnectPolicy has already been set.");return e?Array.isArray(e)?this.reconnectPolicy=new mn(e):this.reconnectPolicy=e:this.reconnectPolicy=new mn,this}withServerTimeout(e){return Ht.isRequired(e,"milliseconds"),this._serverTimeoutInMilliseconds=e,this}withKeepAliveInterval(e){return Ht.isRequired(e,"milliseconds"),this._keepAliveIntervalInMilliseconds=e,this}withStatefulReconnect(e){return void 0===this.httpConnectionOptions&&(this.httpConnectionOptions={}),this.httpConnectionOptions._useStatefulReconnect=!0,this._statefulReconnectBufferSize=null==e?void 0:e.bufferSize,this}build(){const e=this.httpConnectionOptions||{};if(void 0===e.logger&&(e.logger=this.logger),!this.url)throw new Error("The 'HubConnectionBuilder.withUrl' method must be called before building the connection.");const t=new xn(this.url,e);return fn.create(t,this.logger||Ft.instance,this.protocol||new Mn,this.reconnectPolicy,this._serverTimeoutInMilliseconds,this._keepAliveIntervalInMilliseconds,this._statefulReconnectBufferSize)}}var Bn;!function(e){e[e.Default=0]="Default",e[e.Server=1]="Server",e[e.WebAssembly=2]="WebAssembly",e[e.WebView=3]="WebView"}(Bn||(Bn={}));var On,Fn,$n,Hn=4294967295;function Wn(e,t,n){var o=Math.floor(n/4294967296),r=n;e.setUint32(t,o),e.setUint32(t+4,r)}function jn(e,t){return 4294967296*e.getInt32(t)+e.getUint32(t+4)}var zn=("undefined"==typeof process||"never"!==(null===(On=null===process||void 0===process?void 0:process.env)||void 0===On?void 0:On.TEXT_ENCODING))&&"undefined"!=typeof TextEncoder&&"undefined"!=typeof TextDecoder;function qn(e){for(var t=e.length,n=0,o=0;o=55296&&r<=56319&&o65535&&(h-=65536,i.push(h>>>10&1023|55296),h=56320|1023&h),i.push(h)}else i.push(a);i.length>=4096&&(s+=String.fromCharCode.apply(String,i),i.length=0)}return i.length>0&&(s+=String.fromCharCode.apply(String,i)),s}var Gn,Yn=zn?new TextDecoder:null,Qn=zn?"undefined"!=typeof process&&"force"!==(null===($n=null===process||void 0===process?void 0:process.env)||void 0===$n?void 0:$n.TEXT_DECODER)?200:0:Hn,Zn=function(e,t){this.type=e,this.data=t},eo=(Gn=function(e,t){return Gn=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},Gn(e,t)},function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function n(){this.constructor=e}Gn(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}),to=function(e){function t(n){var o=e.call(this,n)||this,r=Object.create(t.prototype);return Object.setPrototypeOf(o,r),Object.defineProperty(o,"name",{configurable:!0,enumerable:!1,value:t.name}),o}return eo(t,e),t}(Error),no={type:-1,encode:function(e){var t,n,o,r;return e instanceof Date?function(e){var t,n=e.sec,o=e.nsec;if(n>=0&&o>=0&&n<=17179869183){if(0===o&&n<=4294967295){var r=new Uint8Array(4);return(t=new DataView(r.buffer)).setUint32(0,n),r}var i=n/4294967296,s=4294967295&n;return r=new Uint8Array(8),(t=new DataView(r.buffer)).setUint32(0,o<<2|3&i),t.setUint32(4,s),r}return r=new Uint8Array(12),(t=new DataView(r.buffer)).setUint32(0,o),Wn(t,4,n),r}((o=1e6*((t=e.getTime())-1e3*(n=Math.floor(t/1e3))),{sec:n+(r=Math.floor(o/1e9)),nsec:o-1e9*r})):null},decode:function(e){var t=function(e){var t=new DataView(e.buffer,e.byteOffset,e.byteLength);switch(e.byteLength){case 4:return{sec:t.getUint32(0),nsec:0};case 8:var n=t.getUint32(0);return{sec:4294967296*(3&n)+t.getUint32(4),nsec:n>>>2};case 12:return{sec:jn(t,4),nsec:t.getUint32(0)};default:throw new to("Unrecognized data size for timestamp (expected 4, 8, or 12): ".concat(e.length))}}(e);return new Date(1e3*t.sec+t.nsec/1e6)}},oo=function(){function e(){this.builtInEncoders=[],this.builtInDecoders=[],this.encoders=[],this.decoders=[],this.register(no)}return e.prototype.register=function(e){var t=e.type,n=e.encode,o=e.decode;if(t>=0)this.encoders[t]=n,this.decoders[t]=o;else{var r=1+t;this.builtInEncoders[r]=n,this.builtInDecoders[r]=o}},e.prototype.tryToEncode=function(e,t){for(var n=0;nthis.maxDepth)throw new Error("Too deep objects in depth ".concat(t));null==e?this.encodeNil():"boolean"==typeof e?this.encodeBoolean(e):"number"==typeof e?this.encodeNumber(e):"string"==typeof e?this.encodeString(e):this.encodeObject(e,t)},e.prototype.ensureBufferSizeToWrite=function(e){var t=this.pos+e;this.view.byteLength=0?e<128?this.writeU8(e):e<256?(this.writeU8(204),this.writeU8(e)):e<65536?(this.writeU8(205),this.writeU16(e)):e<4294967296?(this.writeU8(206),this.writeU32(e)):(this.writeU8(207),this.writeU64(e)):e>=-32?this.writeU8(224|e+32):e>=-128?(this.writeU8(208),this.writeI8(e)):e>=-32768?(this.writeU8(209),this.writeI16(e)):e>=-2147483648?(this.writeU8(210),this.writeI32(e)):(this.writeU8(211),this.writeI64(e)):this.forceFloat32?(this.writeU8(202),this.writeF32(e)):(this.writeU8(203),this.writeF64(e))},e.prototype.writeStringHeader=function(e){if(e<32)this.writeU8(160+e);else if(e<256)this.writeU8(217),this.writeU8(e);else if(e<65536)this.writeU8(218),this.writeU16(e);else{if(!(e<4294967296))throw new Error("Too long string: ".concat(e," bytes in UTF-8"));this.writeU8(219),this.writeU32(e)}},e.prototype.encodeString=function(e){if(e.length>Kn){var t=qn(e);this.ensureBufferSizeToWrite(5+t),this.writeStringHeader(t),Vn(e,this.bytes,this.pos),this.pos+=t}else t=qn(e),this.ensureBufferSizeToWrite(5+t),this.writeStringHeader(t),function(e,t,n){for(var o=e.length,r=n,i=0;i>6&31|192;else{if(s>=55296&&s<=56319&&i>12&15|224,t[r++]=s>>6&63|128):(t[r++]=s>>18&7|240,t[r++]=s>>12&63|128,t[r++]=s>>6&63|128)}t[r++]=63&s|128}else t[r++]=s}}(e,this.bytes,this.pos),this.pos+=t},e.prototype.encodeObject=function(e,t){var n=this.extensionCodec.tryToEncode(e,this.context);if(null!=n)this.encodeExtension(n);else if(Array.isArray(e))this.encodeArray(e,t);else if(ArrayBuffer.isView(e))this.encodeBinary(e);else{if("object"!=typeof e)throw new Error("Unrecognized object: ".concat(Object.prototype.toString.apply(e)));this.encodeMap(e,t)}},e.prototype.encodeBinary=function(e){var t=e.byteLength;if(t<256)this.writeU8(196),this.writeU8(t);else if(t<65536)this.writeU8(197),this.writeU16(t);else{if(!(t<4294967296))throw new Error("Too large binary: ".concat(t));this.writeU8(198),this.writeU32(t)}var n=ro(e);this.writeU8a(n)},e.prototype.encodeArray=function(e,t){var n=e.length;if(n<16)this.writeU8(144+n);else if(n<65536)this.writeU8(220),this.writeU16(n);else{if(!(n<4294967296))throw new Error("Too large array: ".concat(n));this.writeU8(221),this.writeU32(n)}for(var o=0,r=e;o0&&e<=this.maxKeyLength},e.prototype.find=function(e,t,n){e:for(var o=0,r=this.caches[n-1];o=this.maxLengthPerKey?n[Math.random()*n.length|0]=o:n.push(o)},e.prototype.decode=function(e,t,n){var o=this.find(e,t,n);if(null!=o)return this.hit++,o;this.miss++;var r=Xn(e,t,n),i=Uint8Array.prototype.slice.call(e,t,t+n);return this.store(i,r),r},e}(),co=function(e,t){var n,o,r,i,s={label:0,sent:function(){if(1&r[0])throw r[1];return r[1]},trys:[],ops:[]};return i={next:a(0),throw:a(1),return:a(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function a(i){return function(a){return function(i){if(n)throw new TypeError("Generator is already executing.");for(;s;)try{if(n=1,o&&(r=2&i[0]?o.return:i[0]?o.throw||((r=o.return)&&r.call(o),0):o.next)&&!(r=r.call(o,i[1])).done)return r;switch(o=0,r&&(i=[2&i[0],r.value]),i[0]){case 0:case 1:r=i;break;case 4:return s.label++,{value:i[1],done:!1};case 5:s.label++,o=i[1],i=[0];continue;case 7:i=s.ops.pop(),s.trys.pop();continue;default:if(!((r=(r=s.trys).length>0&&r[r.length-1])||6!==i[0]&&2!==i[0])){s=0;continue}if(3===i[0]&&(!r||i[1]>r[0]&&i[1]=e},e.prototype.createExtraByteError=function(e){var t=this.view,n=this.pos;return new RangeError("Extra ".concat(t.byteLength-n," of ").concat(t.byteLength," byte(s) found at buffer[").concat(e,"]"))},e.prototype.decode=function(e){this.reinitializeState(),this.setBuffer(e);var t=this.doDecodeSync();if(this.hasRemaining(1))throw this.createExtraByteError(this.pos);return t},e.prototype.decodeMulti=function(e){return co(this,(function(t){switch(t.label){case 0:this.reinitializeState(),this.setBuffer(e),t.label=1;case 1:return this.hasRemaining(1)?[4,this.doDecodeSync()]:[3,3];case 2:return t.sent(),[3,1];case 3:return[2]}}))},e.prototype.decodeAsync=function(e){var t,n,o,r,i,s,a;return i=this,void 0,a=function(){var i,s,a,c,l,h,d,u;return co(this,(function(p){switch(p.label){case 0:i=!1,p.label=1;case 1:p.trys.push([1,6,7,12]),t=lo(e),p.label=2;case 2:return[4,t.next()];case 3:if((n=p.sent()).done)return[3,5];if(a=n.value,i)throw this.createExtraByteError(this.totalPos);this.appendBuffer(a);try{s=this.doDecodeSync(),i=!0}catch(e){if(!(e instanceof fo))throw e}this.totalPos+=this.pos,p.label=4;case 4:return[3,2];case 5:return[3,12];case 6:return c=p.sent(),o={error:c},[3,12];case 7:return p.trys.push([7,,10,11]),n&&!n.done&&(r=t.return)?[4,r.call(t)]:[3,9];case 8:p.sent(),p.label=9;case 9:return[3,11];case 10:if(o)throw o.error;return[7];case 11:return[7];case 12:if(i){if(this.hasRemaining(1))throw this.createExtraByteError(this.totalPos);return[2,s]}throw h=(l=this).headByte,d=l.pos,u=l.totalPos,new RangeError("Insufficient data in parsing ".concat(so(h)," at ").concat(u," (").concat(d," in the current buffer)"))}}))},new((s=void 0)||(s=Promise))((function(e,t){function n(e){try{r(a.next(e))}catch(e){t(e)}}function o(e){try{r(a.throw(e))}catch(e){t(e)}}function r(t){var r;t.done?e(t.value):(r=t.value,r instanceof s?r:new s((function(e){e(r)}))).then(n,o)}r((a=a.apply(i,[])).next())}))},e.prototype.decodeArrayStream=function(e){return this.decodeMultiAsync(e,!0)},e.prototype.decodeStream=function(e){return this.decodeMultiAsync(e,!1)},e.prototype.decodeMultiAsync=function(e,t){return function(n,o,r){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var i,s=function(){var n,o,r,i,s,a,c,l,h;return co(this,(function(d){switch(d.label){case 0:n=t,o=-1,d.label=1;case 1:d.trys.push([1,13,14,19]),r=lo(e),d.label=2;case 2:return[4,ho(r.next())];case 3:if((i=d.sent()).done)return[3,12];if(s=i.value,t&&0===o)throw this.createExtraByteError(this.totalPos);this.appendBuffer(s),n&&(o=this.readArraySize(),n=!1,this.complete()),d.label=4;case 4:d.trys.push([4,9,,10]),d.label=5;case 5:return[4,ho(this.doDecodeSync())];case 6:return[4,d.sent()];case 7:return d.sent(),0==--o?[3,8]:[3,5];case 8:return[3,10];case 9:if(!((a=d.sent())instanceof fo))throw a;return[3,10];case 10:this.totalPos+=this.pos,d.label=11;case 11:return[3,2];case 12:return[3,19];case 13:return c=d.sent(),l={error:c},[3,19];case 14:return d.trys.push([14,,17,18]),i&&!i.done&&(h=r.return)?[4,ho(h.call(r))]:[3,16];case 15:d.sent(),d.label=16;case 16:return[3,18];case 17:if(l)throw l.error;return[7];case 18:return[7];case 19:return[2]}}))}.apply(n,o||[]),a=[];return i={},c("next"),c("throw"),c("return"),i[Symbol.asyncIterator]=function(){return this},i;function c(e){s[e]&&(i[e]=function(t){return new Promise((function(n,o){a.push([e,t,n,o])>1||l(e,t)}))})}function l(e,t){try{(n=s[e](t)).value instanceof ho?Promise.resolve(n.value.v).then(h,d):u(a[0][2],n)}catch(e){u(a[0][3],e)}var n}function h(e){l("next",e)}function d(e){l("throw",e)}function u(e,t){e(t),a.shift(),a.length&&l(a[0][0],a[0][1])}}(this,arguments)},e.prototype.doDecodeSync=function(){e:for(;;){var e=this.readHeadByte(),t=void 0;if(e>=224)t=e-256;else if(e<192)if(e<128)t=e;else if(e<144){if(0!=(o=e-128)){this.pushMapState(o),this.complete();continue e}t={}}else if(e<160){if(0!=(o=e-144)){this.pushArrayState(o),this.complete();continue e}t=[]}else{var n=e-160;t=this.decodeUtf8String(n,0)}else if(192===e)t=null;else if(194===e)t=!1;else if(195===e)t=!0;else if(202===e)t=this.readF32();else if(203===e)t=this.readF64();else if(204===e)t=this.readU8();else if(205===e)t=this.readU16();else if(206===e)t=this.readU32();else if(207===e)t=this.readU64();else if(208===e)t=this.readI8();else if(209===e)t=this.readI16();else if(210===e)t=this.readI32();else if(211===e)t=this.readI64();else if(217===e)n=this.lookU8(),t=this.decodeUtf8String(n,1);else if(218===e)n=this.lookU16(),t=this.decodeUtf8String(n,2);else if(219===e)n=this.lookU32(),t=this.decodeUtf8String(n,4);else if(220===e){if(0!==(o=this.readU16())){this.pushArrayState(o),this.complete();continue e}t=[]}else if(221===e){if(0!==(o=this.readU32())){this.pushArrayState(o),this.complete();continue e}t=[]}else if(222===e){if(0!==(o=this.readU16())){this.pushMapState(o),this.complete();continue e}t={}}else if(223===e){if(0!==(o=this.readU32())){this.pushMapState(o),this.complete();continue e}t={}}else if(196===e){var o=this.lookU8();t=this.decodeBinary(o,1)}else if(197===e)o=this.lookU16(),t=this.decodeBinary(o,2);else if(198===e)o=this.lookU32(),t=this.decodeBinary(o,4);else if(212===e)t=this.decodeExtension(1,0);else if(213===e)t=this.decodeExtension(2,0);else if(214===e)t=this.decodeExtension(4,0);else if(215===e)t=this.decodeExtension(8,0);else if(216===e)t=this.decodeExtension(16,0);else if(199===e)o=this.lookU8(),t=this.decodeExtension(o,1);else if(200===e)o=this.lookU16(),t=this.decodeExtension(o,2);else{if(201!==e)throw new to("Unrecognized type byte: ".concat(so(e)));o=this.lookU32(),t=this.decodeExtension(o,4)}this.complete();for(var r=this.stack;r.length>0;){var i=r[r.length-1];if(0===i.type){if(i.array[i.position]=t,i.position++,i.position!==i.size)continue e;r.pop(),t=i.array}else{if(1===i.type){if("string"!=(s=typeof t)&&"number"!==s)throw new to("The type of key must be string or number but "+typeof t);if("__proto__"===t)throw new to("The key __proto__ is not allowed");i.key=t,i.type=2;continue e}if(i.map[i.key]=t,i.readCount++,i.readCount!==i.size){i.key=null,i.type=1;continue e}r.pop(),t=i.map}}return t}var s},e.prototype.readHeadByte=function(){return-1===this.headByte&&(this.headByte=this.readU8()),this.headByte},e.prototype.complete=function(){this.headByte=-1},e.prototype.readArraySize=function(){var e=this.readHeadByte();switch(e){case 220:return this.readU16();case 221:return this.readU32();default:if(e<160)return e-144;throw new to("Unrecognized array type byte: ".concat(so(e)))}},e.prototype.pushMapState=function(e){if(e>this.maxMapLength)throw new to("Max length exceeded: map length (".concat(e,") > maxMapLengthLength (").concat(this.maxMapLength,")"));this.stack.push({type:1,size:e,key:null,readCount:0,map:{}})},e.prototype.pushArrayState=function(e){if(e>this.maxArrayLength)throw new to("Max length exceeded: array length (".concat(e,") > maxArrayLength (").concat(this.maxArrayLength,")"));this.stack.push({type:0,size:e,array:new Array(e),position:0})},e.prototype.decodeUtf8String=function(e,t){var n;if(e>this.maxStrLength)throw new to("Max length exceeded: UTF-8 byte length (".concat(e,") > maxStrLength (").concat(this.maxStrLength,")"));if(this.bytes.byteLengthQn?function(e,t,n){var o=e.subarray(t,t+n);return Yn.decode(o)}(this.bytes,r,e):Xn(this.bytes,r,e),this.pos+=t+e,o},e.prototype.stateIsMapKey=function(){return this.stack.length>0&&1===this.stack[this.stack.length-1].type},e.prototype.decodeBinary=function(e,t){if(e>this.maxBinLength)throw new to("Max length exceeded: bin length (".concat(e,") > maxBinLength (").concat(this.maxBinLength,")"));if(!this.hasRemaining(e+t))throw go;var n=this.pos+t,o=this.bytes.subarray(n,n+e);return this.pos+=t+e,o},e.prototype.decodeExtension=function(e,t){if(e>this.maxExtLength)throw new to("Max length exceeded: ext length (".concat(e,") > maxExtLength (").concat(this.maxExtLength,")"));var n=this.view.getInt8(this.pos+t),o=this.decodeBinary(e,t+1);return this.extensionCodec.decode(o,n,this.context)},e.prototype.lookU8=function(){return this.view.getUint8(this.pos)},e.prototype.lookU16=function(){return this.view.getUint16(this.pos)},e.prototype.lookU32=function(){return this.view.getUint32(this.pos)},e.prototype.readU8=function(){var e=this.view.getUint8(this.pos);return this.pos++,e},e.prototype.readI8=function(){var e=this.view.getInt8(this.pos);return this.pos++,e},e.prototype.readU16=function(){var e=this.view.getUint16(this.pos);return this.pos+=2,e},e.prototype.readI16=function(){var e=this.view.getInt16(this.pos);return this.pos+=2,e},e.prototype.readU32=function(){var e=this.view.getUint32(this.pos);return this.pos+=4,e},e.prototype.readI32=function(){var e=this.view.getInt32(this.pos);return this.pos+=4,e},e.prototype.readU64=function(){var e,t,n=(e=this.view,t=this.pos,4294967296*e.getUint32(t)+e.getUint32(t+4));return this.pos+=8,n},e.prototype.readI64=function(){var e=jn(this.view,this.pos);return this.pos+=8,e},e.prototype.readF32=function(){var e=this.view.getFloat32(this.pos);return this.pos+=4,e},e.prototype.readF64=function(){var e=this.view.getFloat64(this.pos);return this.pos+=8,e},e}();class yo{static write(e){let t=e.byteLength||e.length;const n=[];do{let e=127&t;t>>=7,t>0&&(e|=128),n.push(e)}while(t>0);t=e.byteLength||e.length;const o=new Uint8Array(n.length+t);return o.set(n,0),o.set(e,n.length),o.buffer}static parse(e){const t=[],n=new Uint8Array(e),o=[0,7,14,21,28];for(let r=0;r7)throw new Error("Messages bigger than 2GB are not supported.");if(!(n.byteLength>=r+s+a))throw new Error("Incomplete message.");t.push(n.slice?n.slice(r+s,r+s+a):n.subarray(r+s,r+s+a)),r=r+s+a}return t}}const wo=new Uint8Array([145,ln.Ping]);class bo{constructor(e){this.name="messagepack",this.version=2,this.transferFormat=kn.Binary,this._errorResult=1,this._voidResult=2,this._nonVoidResult=3,e=e||{},this._encoder=new io(e.extensionCodec,e.context,e.maxDepth,e.initialBufferSize,e.sortKeys,e.forceFloat32,e.ignoreUndefined,e.forceIntegerToFloat),this._decoder=new vo(e.extensionCodec,e.context,e.maxStrLength,e.maxBinLength,e.maxArrayLength,e.maxMapLength,e.maxExtLength)}parseMessages(e,t){if(!(n=e)||"undefined"==typeof ArrayBuffer||!(n instanceof ArrayBuffer||n.constructor&&"ArrayBuffer"===n.constructor.name))throw new Error("Invalid input for MessagePack hub protocol. Expected an ArrayBuffer.");var n;null===t&&(t=Ft.instance);const o=yo.parse(e),r=[];for(const e of o){const n=this._parseMessage(e,t);n&&r.push(n)}return r}writeMessage(e){switch(e.type){case ln.Invocation:return this._writeInvocation(e);case ln.StreamInvocation:return this._writeStreamInvocation(e);case ln.StreamItem:return this._writeStreamItem(e);case ln.Completion:return this._writeCompletion(e);case ln.Ping:return yo.write(wo);case ln.CancelInvocation:return this._writeCancelInvocation(e);case ln.Close:return this._writeClose();case ln.Ack:return this._writeAck(e);case ln.Sequence:return this._writeSequence(e);default:throw new Error("Invalid message type.")}}_parseMessage(e,t){if(0===e.length)throw new Error("Invalid payload.");const n=this._decoder.decode(e);if(0===n.length||!(n instanceof Array))throw new Error("Invalid payload.");const o=n[0];switch(o){case ln.Invocation:return this._createInvocationMessage(this._readHeaders(n),n);case ln.StreamItem:return this._createStreamItemMessage(this._readHeaders(n),n);case ln.Completion:return this._createCompletionMessage(this._readHeaders(n),n);case ln.Ping:return this._createPingMessage(n);case ln.Close:return this._createCloseMessage(n);case ln.Ack:return this._createAckMessage(n);case ln.Sequence:return this._createSequenceMessage(n);default:return t.log(Ot.Information,"Unknown message type '"+o+"' ignored."),null}}_createCloseMessage(e){if(e.length<2)throw new Error("Invalid payload for Close message.");return{allowReconnect:e.length>=3?e[2]:void 0,error:e[1],type:ln.Close}}_createPingMessage(e){if(e.length<1)throw new Error("Invalid payload for Ping message.");return{type:ln.Ping}}_createInvocationMessage(e,t){if(t.length<5)throw new Error("Invalid payload for Invocation message.");const n=t[2];return n?{arguments:t[4],headers:e,invocationId:n,streamIds:[],target:t[3],type:ln.Invocation}:{arguments:t[4],headers:e,streamIds:[],target:t[3],type:ln.Invocation}}_createStreamItemMessage(e,t){if(t.length<4)throw new Error("Invalid payload for StreamItem message.");return{headers:e,invocationId:t[2],item:t[3],type:ln.StreamItem}}_createCompletionMessage(e,t){if(t.length<4)throw new Error("Invalid payload for Completion message.");const n=t[3];if(n!==this._voidResult&&t.length<5)throw new Error("Invalid payload for Completion message.");let o,r;switch(n){case this._errorResult:o=t[4];break;case this._nonVoidResult:r=t[4]}return{error:o,headers:e,invocationId:t[2],result:r,type:ln.Completion}}_createAckMessage(e){if(e.length<1)throw new Error("Invalid payload for Ack message.");return{sequenceId:e[1],type:ln.Ack}}_createSequenceMessage(e){if(e.length<1)throw new Error("Invalid payload for Sequence message.");return{sequenceId:e[1],type:ln.Sequence}}_writeInvocation(e){let t;return t=e.streamIds?this._encoder.encode([ln.Invocation,e.headers||{},e.invocationId||null,e.target,e.arguments,e.streamIds]):this._encoder.encode([ln.Invocation,e.headers||{},e.invocationId||null,e.target,e.arguments]),yo.write(t.slice())}_writeStreamInvocation(e){let t;return t=e.streamIds?this._encoder.encode([ln.StreamInvocation,e.headers||{},e.invocationId,e.target,e.arguments,e.streamIds]):this._encoder.encode([ln.StreamInvocation,e.headers||{},e.invocationId,e.target,e.arguments]),yo.write(t.slice())}_writeStreamItem(e){const t=this._encoder.encode([ln.StreamItem,e.headers||{},e.invocationId,e.item]);return yo.write(t.slice())}_writeCompletion(e){const t=e.error?this._errorResult:void 0!==e.result?this._nonVoidResult:this._voidResult;let n;switch(t){case this._errorResult:n=this._encoder.encode([ln.Completion,e.headers||{},e.invocationId,t,e.error]);break;case this._voidResult:n=this._encoder.encode([ln.Completion,e.headers||{},e.invocationId,t]);break;case this._nonVoidResult:n=this._encoder.encode([ln.Completion,e.headers||{},e.invocationId,t,e.result])}return yo.write(n.slice())}_writeCancelInvocation(e){const t=this._encoder.encode([ln.CancelInvocation,e.headers||{},e.invocationId]);return yo.write(t.slice())}_writeClose(){const e=this._encoder.encode([ln.Close,null]);return yo.write(e.slice())}_writeAck(e){const t=this._encoder.encode([ln.Ack,e.sequenceId]);return yo.write(t.slice())}_writeSequence(e){const t=this._encoder.encode([ln.Sequence,e.sequenceId]);return yo.write(t.slice())}_readHeaders(e){const t=e[1];if("object"!=typeof t)throw new Error("Invalid headers.");return t}}const _o="function"==typeof TextDecoder?new TextDecoder("utf-8"):null,So=_o?_o.decode.bind(_o):function(e){let t=0;const n=e.length,o=[],r=[];for(;t65535&&(r-=65536,o.push(r>>>10&1023|55296),r=56320|1023&r),o.push(r)}o.length>1024&&(r.push(String.fromCharCode.apply(null,o)),o.length=0)}return r.push(String.fromCharCode.apply(null,o)),r.join("")},Co=Math.pow(2,32),Eo=Math.pow(2,21)-1;function Io(e,t){return e[t]|e[t+1]<<8|e[t+2]<<16|e[t+3]<<24}function ko(e,t){return e[t]+(e[t+1]<<8)+(e[t+2]<<16)+(e[t+3]<<24>>>0)}function To(e,t){const n=ko(e,t+4);if(n>Eo)throw new Error(`Cannot read uint64 with high order part ${n}, because the result would exceed Number.MAX_SAFE_INTEGER.`);return n*Co+ko(e,t)}class Ro{constructor(e){this.batchData=e;const t=new No(e);this.arrayRangeReader=new Po(e),this.arrayBuilderSegmentReader=new Mo(e),this.diffReader=new Ao(e),this.editReader=new Do(e,t),this.frameReader=new xo(e,t)}updatedComponents(){return Io(this.batchData,this.batchData.length-20)}referenceFrames(){return Io(this.batchData,this.batchData.length-16)}disposedComponentIds(){return Io(this.batchData,this.batchData.length-12)}disposedEventHandlerIds(){return Io(this.batchData,this.batchData.length-8)}updatedComponentsEntry(e,t){const n=e+4*t;return Io(this.batchData,n)}referenceFramesEntry(e,t){return e+20*t}disposedComponentIdsEntry(e,t){const n=e+4*t;return Io(this.batchData,n)}disposedEventHandlerIdsEntry(e,t){const n=e+8*t;return To(this.batchData,n)}}class Ao{constructor(e){this.batchDataUint8=e}componentId(e){return Io(this.batchDataUint8,e)}edits(e){return e+4}editsEntry(e,t){return e+16*t}}class Do{constructor(e,t){this.batchDataUint8=e,this.stringReader=t}editType(e){return Io(this.batchDataUint8,e)}siblingIndex(e){return Io(this.batchDataUint8,e+4)}newTreeIndex(e){return Io(this.batchDataUint8,e+8)}moveToSiblingIndex(e){return Io(this.batchDataUint8,e+8)}removedAttributeName(e){const t=Io(this.batchDataUint8,e+12);return this.stringReader.readString(t)}}class xo{constructor(e,t){this.batchDataUint8=e,this.stringReader=t}frameType(e){return Io(this.batchDataUint8,e)}subtreeLength(e){return Io(this.batchDataUint8,e+4)}elementReferenceCaptureId(e){const t=Io(this.batchDataUint8,e+4);return this.stringReader.readString(t)}componentId(e){return Io(this.batchDataUint8,e+8)}elementName(e){const t=Io(this.batchDataUint8,e+8);return this.stringReader.readString(t)}textContent(e){const t=Io(this.batchDataUint8,e+4);return this.stringReader.readString(t)}markupContent(e){const t=Io(this.batchDataUint8,e+4);return this.stringReader.readString(t)}attributeName(e){const t=Io(this.batchDataUint8,e+4);return this.stringReader.readString(t)}attributeValue(e){const t=Io(this.batchDataUint8,e+8);return this.stringReader.readString(t)}attributeEventHandlerId(e){return To(this.batchDataUint8,e+12)}}class No{constructor(e){this.batchDataUint8=e,this.stringTableStartIndex=Io(e,e.length-4)}readString(e){if(-1===e)return null;{const n=Io(this.batchDataUint8,this.stringTableStartIndex+4*e),o=function(e,t){let n=0,o=0;for(let r=0;r<4;r++){const i=e[t+r];if(n|=(127&i)<this.nextBatchId)return this.fatalError?(this.logger.log(yt.Debug,`Received a new batch ${e} but errored out on a previous batch ${this.nextBatchId-1}`),void await n.send("OnRenderCompleted",this.nextBatchId-1,this.fatalError.toString())):void this.logger.log(yt.Debug,`Waiting for batch ${this.nextBatchId}. Batch ${e} not processed.`);try{this.nextBatchId++,this.logger.log(yt.Debug,`Applying batch ${e}.`),xe(Bn.Server,new Ro(t)),await this.completeBatch(n,e)}catch(t){throw this.fatalError=t.toString(),this.logger.log(yt.Error,`There was an error applying batch ${e}.`),n.send("OnRenderCompleted",e,t.toString()),t}}getLastBatchid(){return this.nextBatchId-1}async completeBatch(e,t){try{await e.send("OnRenderCompleted",t,null)}catch{this.logger.log(yt.Warning,`Failed to deliver completion notification for render '${t}'.`)}}}let Lo=!1;function Bo(){const e=document.querySelector("#blazor-error-ui");e&&(e.style.display="block"),Lo||(Lo=!0,document.querySelectorAll("#blazor-error-ui .reload").forEach((e=>{e.onclick=function(e){location.reload(),e.preventDefault()}})),document.querySelectorAll("#blazor-error-ui .dismiss").forEach((e=>{e.onclick=function(e){const t=document.querySelector("#blazor-error-ui");t&&(t.style.display="none"),e.preventDefault()}})))}class Oo{constructor(t,n,o,r){this._firstUpdate=!0,this._renderingFailed=!1,this._disposed=!1,this._circuitId=void 0,this._applicationState=n,this._componentManager=t,this._options=o,this._logger=r,this._renderQueue=new Uo(this._logger),this._dispatcher=e.attachDispatcher(this)}start(){if(this.isDisposedOrDisposing())throw new Error("Cannot start a disposed circuit.");return this._startPromise||(this._startPromise=this.startCore()),this._startPromise}updateRootComponents(e){var t,n;return this._firstUpdate?(this._firstUpdate=!1,null===(t=this._connection)||void 0===t?void 0:t.send("UpdateRootComponents",e,this._applicationState)):null===(n=this._connection)||void 0===n?void 0:n.send("UpdateRootComponents",e,"")}async startCore(){if(this._connection=await this.startConnection(),this._connection.state!==hn.Connected)return!1;const e=JSON.stringify(this._componentManager.initialComponents.map((e=>Ut(e))));if(this._circuitId=await this._connection.invoke("StartCircuit",Je.getBaseURI(),Je.getLocationHref(),e,this._applicationState||""),!this._circuitId)return!1;for(const e of this._options.circuitHandlers)e.onCircuitOpened&&e.onCircuitOpened();return!0}async startConnection(){var e,t;const n=new bo;n.name="blazorpack";const o=(new Ln).withUrl("_blazor").withHubProtocol(n);this._options.configureSignalR(o);const r=o.build();r.on("JS.AttachComponent",((e,t)=>Ae(Bn.Server,this.resolveElement(t),e,!1))),r.on("JS.BeginInvokeJS",this._dispatcher.beginInvokeJSFromDotNet.bind(this._dispatcher)),r.on("JS.EndInvokeDotNet",this._dispatcher.endInvokeDotNetFromJS.bind(this._dispatcher)),r.on("JS.ReceiveByteArray",this._dispatcher.receiveByteArray.bind(this._dispatcher)),r.on("JS.BeginTransmitStream",(e=>{const t=new ReadableStream({start:t=>{r.stream("SendDotNetStreamToJS",e).subscribe({next:e=>t.enqueue(e),complete:()=>t.close(),error:e=>t.error(e)})}});this._dispatcher.supplyDotNetStream(e,t)})),r.on("JS.RenderBatch",(async(e,t)=>{var n,o;this._logger.log(Ot.Debug,`Received render batch with id ${e} and ${t.byteLength} bytes.`),await this._renderQueue.processBatch(e,t,this._connection),null===(o=(n=this._componentManager).onAfterRenderBatch)||void 0===o||o.call(n,Bn.Server)})),r.on("JS.EndUpdateRootComponents",(e=>{var t,n;null===(n=(t=this._componentManager).onAfterUpdateRootComponents)||void 0===n||n.call(t,e)})),r.on("JS.EndLocationChanging",vt._internal.navigationManager.endLocationChanging),r.onclose((e=>{this._interopMethodsForReconnection=function(e){const t=C.get(e);if(!t)throw new Error(`Interop methods are not registered for renderer ${e}`);return C.delete(e),t}(Bn.Server),this._disposed||this._renderingFailed||this._options.reconnectionHandler.onConnectionDown(this._options.reconnectionOptions,e)})),r.on("JS.Error",(e=>{this._renderingFailed=!0,this.unhandledError(e),Bo()}));try{await r.start()}catch(e){if(this.unhandledError(e),"FailedToNegotiateWithServerError"===e.errorType)throw e;Bo(),e.innerErrors&&(e.innerErrors.some((e=>"UnsupportedTransportError"===e.errorType&&e.transport===In.WebSockets))?this._logger.log(Ot.Error,"Unable to connect, please ensure you are using an updated browser that supports WebSockets."):e.innerErrors.some((e=>"FailedToStartTransportError"===e.errorType&&e.transport===In.WebSockets))?this._logger.log(Ot.Error,"Unable to connect, please ensure WebSockets are available. A VPN or proxy may be blocking the connection."):e.innerErrors.some((e=>"DisabledTransportError"===e.errorType&&e.transport===In.LongPolling))&&this._logger.log(Ot.Error,"Unable to initiate a SignalR connection to the server. This might be because the server is not configured to support WebSockets. For additional details, visit https://aka.ms/blazor-server-websockets-error."))}return(null===(t=null===(e=r.connection)||void 0===e?void 0:e.features)||void 0===t?void 0:t.inherentKeepAlive)&&this._logger.log(Ot.Warning,"Failed to connect via WebSockets, using the Long Polling fallback transport. This may be due to a VPN or proxy blocking the connection. To troubleshoot this, visit https://aka.ms/blazor-server-using-fallback-long-polling."),r}async disconnect(){var e;await(null===(e=this._connection)||void 0===e?void 0:e.stop())}async reconnect(){if(!this._circuitId)throw new Error("Circuit host not initialized.");return this._connection.state===hn.Connected||(this._connection=await this.startConnection(),this._interopMethodsForReconnection&&(k(Bn.Server,this._interopMethodsForReconnection),this._interopMethodsForReconnection=void 0),!!await this._connection.invoke("ConnectCircuit",this._circuitId)&&(this._options.reconnectionHandler.onConnectionUp(),!0))}beginInvokeDotNetFromJS(e,t,n,o,r){this.throwIfDispatchingWhenDisposed(),this._connection.send("BeginInvokeDotNetFromJS",e?e.toString():null,t,n,o||0,r)}endInvokeJSFromDotNet(e,t,n){this.throwIfDispatchingWhenDisposed(),this._connection.send("EndInvokeJSFromDotNet",e,t,n)}sendByteArray(e,t){this.throwIfDispatchingWhenDisposed(),this._connection.send("ReceiveByteArray",e,t)}throwIfDispatchingWhenDisposed(){if(this._disposed)throw new Error("The circuit associated with this dispatcher is no longer available.")}sendLocationChanged(e,t,n){return this._connection.send("OnLocationChanged",e,t,n)}sendLocationChanging(e,t,n,o){return this._connection.send("OnLocationChanging",e,t,n,o)}sendJsDataStream(e,t,n){return function(e,t,n,o){setTimeout((async()=>{let r=5,i=(new Date).valueOf();try{const s=t instanceof Blob?t.size:t.byteLength;let a=0,c=0;for(;a1)await e.send("ReceiveJSDataChunk",n,c,h,null);else{if(!await e.invoke("ReceiveJSDataChunk",n,c,h,null))break;const t=(new Date).valueOf(),o=t-i;i=t,r=Math.max(1,Math.round(500/Math.max(1,o)))}a+=l,c++}}catch(t){await e.send("ReceiveJSDataChunk",n,-1,null,t.toString())}}),0)}(this._connection,e,t,n)}resolveElement(e){const t=w(e);if(t)return W(t,!0);const n=Number.parseInt(e);if(!Number.isNaN(n))return H(this._componentManager.resolveRootComponent(n));throw new Error(`Invalid sequence number or identifier '${e}'.`)}getRootComponentManager(){return this._componentManager}unhandledError(e){this._logger.log(Ot.Error,e),this.disconnect()}getDisconnectFormData(){const e=new FormData,t=this._circuitId;return e.append("circuitId",t),e}didRenderingFail(){return this._renderingFailed}isDisposedOrDisposing(){return void 0!==this._disposePromise}sendDisconnectBeacon(){if(this._disposed)return;const e=this.getDisconnectFormData();this._disposed=navigator.sendBeacon("_blazor/disconnect",e)}dispose(){return this._disposePromise||(this._disposePromise=this.disposeCore()),this._disposePromise}async disposeCore(){var e;if(!this._startPromise)return void(this._disposed=!0);await this._startPromise,this._disposed=!0,null===(e=this._connection)||void 0===e||e.stop();const t=this.getDisconnectFormData();fetch("http://github.com/_blazor/disconnect",{method:"POST",body:t});for(const e of this._options.circuitHandlers)e.onCircuitClosed&&e.onCircuitClosed()}}function Fo(e){const t={...$o,...e};return e&&e.reconnectionOptions&&(t.reconnectionOptions={...$o.reconnectionOptions,...e.reconnectionOptions}),t}const $o={configureSignalR:e=>{},logLevel:yt.Warning,initializers:void 0,circuitHandlers:[],reconnectionOptions:{maxRetries:8,retryIntervalMilliseconds:2e4,dialogId:"components-reconnect-modal"}};class Ho{constructor(e,t,n,o){this.maxRetries=t,this.document=n,this.logger=o,this.modal=this.document.createElement("div"),this.modal.id=e,this.maxRetries=t,this.modal.style.cssText=["position: fixed","top: 0","right: 0","bottom: 0","left: 0","z-index: 1050","display: none","overflow: hidden","background-color: #fff","opacity: 0.8","text-align: center","font-weight: bold","transition: visibility 0s linear 500ms"].join(";"),this.message=this.document.createElement("h5"),this.message.style.cssText="margin-top: 20px",this.button=this.document.createElement("button"),this.button.style.cssText="margin:5px auto 5px",this.button.textContent="Retry";const r=this.document.createElement("a");r.addEventListener("click",(()=>location.reload())),r.textContent="reload",this.reloadParagraph=this.document.createElement("p"),this.reloadParagraph.textContent="Alternatively, ",this.reloadParagraph.appendChild(r),this.modal.appendChild(this.message),this.modal.appendChild(this.button),this.modal.appendChild(this.reloadParagraph),this.loader=this.getLoader(),this.message.after(this.loader),this.button.addEventListener("click",(async()=>{this.show();try{await vt.reconnect()||this.rejected()}catch(e){this.logger.log(yt.Error,e),this.failed()}}))}show(){this.document.contains(this.modal)||this.document.body.appendChild(this.modal),this.modal.style.display="block",this.loader.style.display="inline-block",this.button.style.display="none",this.reloadParagraph.style.display="none",this.message.textContent="Attempting to reconnect to the server...",this.modal.style.visibility="hidden",setTimeout((()=>{this.modal.style.visibility="visible"}),0)}update(e){this.message.textContent=`Attempting to reconnect to the server: ${e} of ${this.maxRetries}`}hide(){this.modal.style.display="none"}failed(){this.button.style.display="block",this.reloadParagraph.style.display="none",this.loader.style.display="none";const e=this.document.createTextNode("Reconnection failed. Try "),t=this.document.createElement("a");t.textContent="reloading",t.setAttribute("href",""),t.addEventListener("click",(()=>location.reload()));const n=this.document.createTextNode(" the page if you're unable to reconnect.");this.message.replaceChildren(e,t,n)}rejected(){this.button.style.display="none",this.reloadParagraph.style.display="none",this.loader.style.display="none";const e=this.document.createTextNode("Could not reconnect to the server. "),t=this.document.createElement("a");t.textContent="Reload",t.setAttribute("href",""),t.addEventListener("click",(()=>location.reload()));const n=this.document.createTextNode(" the page to restore functionality.");this.message.replaceChildren(e,t,n)}getLoader(){const e=this.document.createElement("div");return e.style.cssText=["border: 0.3em solid #f3f3f3","border-top: 0.3em solid #3498db","border-radius: 50%","width: 2em","height: 2em","display: inline-block"].join(";"),e.animate([{transform:"rotate(0deg)"},{transform:"rotate(360deg)"}],{duration:2e3,iterations:1/0}),e}}class Wo{constructor(e,t,n){this.dialog=e,this.maxRetries=t,this.document=n,this.document=n;const o=this.document.getElementById(Wo.MaxRetriesId);o&&(o.innerText=this.maxRetries.toString())}show(){this.removeClasses(),this.dialog.classList.add(Wo.ShowClassName)}update(e){const t=this.document.getElementById(Wo.CurrentAttemptId);t&&(t.innerText=e.toString())}hide(){this.removeClasses(),this.dialog.classList.add(Wo.HideClassName)}failed(){this.removeClasses(),this.dialog.classList.add(Wo.FailedClassName)}rejected(){this.removeClasses(),this.dialog.classList.add(Wo.RejectedClassName)}removeClasses(){this.dialog.classList.remove(Wo.ShowClassName,Wo.HideClassName,Wo.FailedClassName,Wo.RejectedClassName)}}Wo.ShowClassName="components-reconnect-show",Wo.HideClassName="components-reconnect-hide",Wo.FailedClassName="components-reconnect-failed",Wo.RejectedClassName="components-reconnect-rejected",Wo.MaxRetriesId="components-reconnect-max-retries",Wo.CurrentAttemptId="components-reconnect-current-attempt";class jo{constructor(e,t,n){this._currentReconnectionProcess=null,this._logger=e,this._reconnectionDisplay=t,this._reconnectCallback=n||vt.reconnect}onConnectionDown(e,t){if(!this._reconnectionDisplay){const t=document.getElementById(e.dialogId);this._reconnectionDisplay=t?new Wo(t,e.maxRetries,document):new Ho(e.dialogId,e.maxRetries,document,this._logger)}this._currentReconnectionProcess||(this._currentReconnectionProcess=new zo(e,this._logger,this._reconnectCallback,this._reconnectionDisplay))}onConnectionUp(){this._currentReconnectionProcess&&(this._currentReconnectionProcess.dispose(),this._currentReconnectionProcess=null)}}class zo{constructor(e,t,n,o){this.logger=t,this.reconnectCallback=n,this.isDisposed=!1,this.reconnectDisplay=o,this.reconnectDisplay.show(),this.attemptPeriodicReconnection(e)}dispose(){this.isDisposed=!0,this.reconnectDisplay.hide()}async attemptPeriodicReconnection(e){for(let t=0;tzo.MaximumFirstRetryInterval?zo.MaximumFirstRetryInterval:e.retryIntervalMilliseconds;if(await this.delay(n),this.isDisposed)break;try{return await this.reconnectCallback()?void 0:void this.reconnectDisplay.rejected()}catch(e){this.logger.log(yt.Error,e)}}this.reconnectDisplay.failed()}delay(e){return new Promise((t=>setTimeout(t,e)))}}zo.MaximumFirstRetryInterval=3e3;class qo{constructor(e=!0,t,n,o=0){this.singleRuntime=e,this.logger=t,this.webRendererId=o,this.afterStartedCallbacks=[],n&&this.afterStartedCallbacks.push(...n)}async importInitializersAsync(e,t){await Promise.all(e.map((e=>async function(e,n){const o=function(e){const t=document.baseURI;return t.endsWith("/")?`${t}${e}`:`${t}/${e}`}(n),r=await import(o);if(void 0!==r){if(e.singleRuntime){const{beforeStart:n,afterStarted:o,beforeWebAssemblyStart:s,afterWebAssemblyStarted:a,beforeServerStart:c,afterServerStarted:l}=r;let h=n;e.webRendererId===Bn.Server&&c&&(h=c),e.webRendererId===Bn.WebAssembly&&s&&(h=s);let d=o;return e.webRendererId===Bn.Server&&l&&(d=l),e.webRendererId===Bn.WebAssembly&&a&&(d=a),i(e,h,d,t)}return function(e,t,n){var r;const s=n[0],{beforeStart:a,afterStarted:c,beforeWebStart:l,afterWebStarted:h,beforeWebAssemblyStart:d,afterWebAssemblyStarted:u,beforeServerStart:p,afterServerStarted:f}=t,g=!(l||h||d||u||p||f||!a&&!c),m=g&&s.enableClassicInitializers;if(g&&!s.enableClassicInitializers)null===(r=e.logger)||void 0===r||r.log(yt.Warning,`Initializer '${o}' will be ignored because multiple runtimes are available. use 'before(web|webAssembly|server)Start' and 'after(web|webAssembly|server)Started?' instead.)`);else if(m)return i(e,a,c,n);if(function(e){e.webAssembly?e.webAssembly.initializers||(e.webAssembly.initializers={beforeStart:[],afterStarted:[]}):e.webAssembly={initializers:{beforeStart:[],afterStarted:[]}},e.circuit?e.circuit.initializers||(e.circuit.initializers={beforeStart:[],afterStarted:[]}):e.circuit={initializers:{beforeStart:[],afterStarted:[]}}}(s),d&&s.webAssembly.initializers.beforeStart.push(d),u&&s.webAssembly.initializers.afterStarted.push(u),p&&s.circuit.initializers.beforeStart.push(p),f&&s.circuit.initializers.afterStarted.push(f),h&&e.afterStartedCallbacks.push(h),l)return l(s)}(e,r,t)}function i(e,t,n,o){if(n&&e.afterStartedCallbacks.push(n),t)return t(...o)}}(this,e))))}async invokeAfterStartedCallbacks(e){const t=function(e){var t;return null===(t=I.get(e))||void 0===t?void 0:t[1]}(this.webRendererId);t&&await t,await Promise.all(this.afterStartedCallbacks.map((t=>t(e))))}}let Jo,Ko,Vo,Xo,Go,Yo,Qo,Zo;function er(e){if(Xo)throw new Error("Circuit options have already been configured.");if(Xo)throw new Error("WebAssembly options have already been configured.");Jo=async function(e){const t=await e;Xo=Fo(t)}(e)}function tr(e){if(void 0!==Yo)throw new Error("Blazor Server has already started.");return Yo=new Promise(nr.bind(null,e)),Yo}async function nr(e,t,n){await Jo;const o=await async function(e){if(e.initializers)return await Promise.all(e.initializers.beforeStart.map((t=>t(e)))),new qo(!1,void 0,e.initializers.afterStarted,Bn.Server);const t=await fetch("http://github.com/_blazor/initializers",{method:"GET",credentials:"include",cache:"no-cache"}),n=await t.json(),o=new qo(!0,void 0,void 0,Bn.Server);return await o.importInitializersAsync(n,[e]),o}(Xo);if(Ko=It(document)||"",Go=new bt(Xo.logLevel),Vo=new Oo(e,Ko,Xo,Go),Go.log(yt.Information,"Starting up Blazor server-side application."),vt.reconnect=async()=>!(Vo.didRenderingFail()||!await Vo.reconnect()&&(Go.log(yt.Information,"Reconnection attempt to the circuit was rejected by the server. This may indicate that the associated state is no longer available on the server."),1)),vt.defaultReconnectionHandler=new jo(Go),Xo.reconnectionHandler=Xo.reconnectionHandler||vt.defaultReconnectionHandler,vt._internal.navigationManager.listenForNavigationEvents(Bn.Server,((e,t,n)=>Vo.sendLocationChanged(e,t,n)),((e,t,n,o)=>Vo.sendLocationChanging(e,t,n,o))),vt._internal.forceCloseConnection=()=>Vo.disconnect(),vt._internal.sendJSDataStream=(e,t,n)=>Vo.sendJsDataStream(e,t,n),!await Vo.start())return Go.log(yt.Error,"Failed to start the circuit."),void t();const r=()=>{Vo.sendDisconnectBeacon()};vt.disconnect=r,window.addEventListener("unload",r,{capture:!1,once:!0}),Go.log(yt.Information,"Blazor server-side application started."),o.invokeAfterStartedCallbacks(vt),t()}async function or(){if(!Yo)throw new Error("Cannot start the circuit until Blazor Server has started.");return!(!Vo||Vo.isDisposedOrDisposing())||(Qo?await Qo:(await Yo,(!Vo||!Vo.didRenderingFail())&&(Vo&&Vo.isDisposedOrDisposing()&&(Ko=It(document)||"",Vo=new Oo(Vo.getRootComponentManager(),Ko,Xo,Go)),Qo=Vo.start(),async function(e){await e,Qo===e&&(Qo=void 0)}(Qo),Qo)))}function rr(e){if(Vo&&!Vo.isDisposedOrDisposing())return Vo.updateRootComponents(e);!async function(e){await Yo,await or()&&Vo.updateRootComponents(e)}(e)}function ir(e){return Zo=e,Zo}var sr,ar;const cr=navigator,lr=cr.userAgentData&&cr.userAgentData.brands,hr=lr&&lr.length>0?lr.some((e=>"Google Chrome"===e.brand||"Microsoft Edge"===e.brand||"Chromium"===e.brand)):window.chrome,dr=null!==(ar=null===(sr=cr.userAgentData)||void 0===sr?void 0:sr.platform)&&void 0!==ar?ar:navigator.platform;function ur(e){return 0!==e.debugLevel&&(hr||navigator.userAgent.includes("Firefox"))}let pr,fr,gr,mr,vr,yr,wr;const br=Math.pow(2,32),_r=Math.pow(2,21)-1;let Sr=null;function Cr(e){return fr.getI32(e)}const Er={load:function(e,t){return async function(e,t){const{dotnet:n}=await async function(e){if("undefined"==typeof WebAssembly||!WebAssembly.validate)throw new Error("This browser does not support WebAssembly.");let t="_framework/dotnet.js";if(e.loadBootResource){const n="dotnetjs",o=e.loadBootResource(n,"dotnet.js",t,"","js-module-dotnet");if("string"==typeof o)t=o;else if(o)throw new Error(`For a ${n} resource, custom loaders must supply a URI string.`)}const n=new URL(t,document.baseURI).toString();return await import(n)}(e),o=function(e,t){const n={maxParallelDownloads:1e6,enableDownloadRetry:!1,applicationEnvironment:e.environment},o={...window.Module||{},onConfigLoaded:async n=>{n.environmentVariables||(n.environmentVariables={}),"sharded"===n.globalizationMode&&(n.environmentVariables.__BLAZOR_SHARDED_ICU="1"),vt._internal.getApplicationEnvironment=()=>n.applicationEnvironment,null==t||t(n),wr=await async function(e,t){var n,o,r;if(e.initializers)return await Promise.all(e.initializers.beforeStart.map((t=>t(e)))),new qo(!1,void 0,e.initializers.afterStarted,Bn.WebAssembly);{const i=[e,null!==(o=null===(n=t.resources)||void 0===n?void 0:n.extensions)&&void 0!==o?o:{}],s=new qo(!0,void 0,void 0,Bn.WebAssembly),a=Object.keys((null===(r=null==t?void 0:t.resources)||void 0===r?void 0:r.libraryInitializers)||{});return await s.importInitializersAsync(a,i),s}}(e,n)},onDownloadResourceProgress:Ir,config:n,disableDotnet6Compatibility:!1,out:Tr,err:Rr};return o}(e,t);e.applicationCulture&&n.withApplicationCulture(e.applicationCulture),e.environment&&n.withApplicationEnvironment(e.environment),e.loadBootResource&&n.withResourceLoader(e.loadBootResource),n.withModuleConfig(o),e.configureRuntime&&e.configureRuntime(n),yr=await n.create()}(e,t)},start:function(){return async function(){if(!yr)throw new Error("The runtime must be loaded it gets configured.");const{MONO:t,BINDING:n,Module:o,setModuleImports:r,INTERNAL:i,getConfig:s,invokeLibraryInitializers:a}=yr;gr=o,pr=n,fr=t,vr=i,function(e){const t=dr.match(/^Mac/i)?"Cmd":"Alt";ur(e)&&console.info(`Debugging hotkey: Shift+${t}+D (when application has focus)`),document.addEventListener("keydown",(t=>{t.shiftKey&&(t.metaKey||t.altKey)&&"KeyD"===t.code&&(ur(e)?navigator.userAgent.includes("Firefox")?async function(){const e=await fetch(`_framework/debug?url=${encodeURIComponent(location.href)}&isFirefox=true`);200!==e.status&&console.warn(await e.text())}():hr?function(){const e=document.createElement("a");e.href=`_framework/debug?url=${encodeURIComponent(location.href)}`,e.target="_blank",e.rel="noopener noreferrer",e.click()}():console.error("Currently, only Microsoft Edge (80+), Google Chrome, or Chromium, are supported for debugging."):console.error("Cannot start debugging, because the application was not compiled with debugging enabled."))}))}(s()),vt.runtime=yr,vt._internal.dotNetCriticalError=Rr,r("blazor-internal",{Blazor:{_internal:vt._internal}});const c=await yr.getAssemblyExports("Microsoft.AspNetCore.Components.WebAssembly");return Object.assign(vt._internal,{dotNetExports:{...c.Microsoft.AspNetCore.Components.WebAssembly.Services.DefaultWebAssemblyJSRuntime}}),mr=e.attachDispatcher({beginInvokeDotNetFromJS:(e,t,n,o,r)=>{if(Dr(),!o&&!t)throw new Error("Either assemblyName or dotNetObjectId must have a non null value.");const i=o?o.toString():t;vt._internal.dotNetExports.BeginInvokeDotNet(e?e.toString():null,i,n,r)},endInvokeJSFromDotNet:(e,t,n)=>{vt._internal.dotNetExports.EndInvokeJS(n)},sendByteArray:(e,t)=>{vt._internal.dotNetExports.ReceiveByteArrayFromJS(e,t)},invokeDotNetFromJS:(e,t,n,o)=>(Dr(),vt._internal.dotNetExports.InvokeDotNet(e||null,t,null!=n?n:0,o))}),{invokeLibraryInitializers:a}}()},callEntryPoint:async function(){try{await yr.runMain(yr.getConfig().mainAssemblyName,[])}catch(e){console.error(e),Bo()}},toUint8Array:function(e){const t=Ar(e),n=Cr(t),o=new Uint8Array(n);return o.set(gr.HEAPU8.subarray(t+4,t+4+n)),o},getArrayLength:function(e){return Cr(Ar(e))},getArrayEntryPtr:function(e,t,n){return Ar(e)+4+t*n},getObjectFieldsBaseAddress:function(e){return e+8},readInt16Field:function(e,t){return n=e+(t||0),fr.getI16(n);var n},readInt32Field:function(e,t){return Cr(e+(t||0))},readUint64Field:function(e,t){return function(e){const t=e>>2,n=gr.HEAPU32[t+1];if(n>_r)throw new Error(`Cannot read uint64 with high order part ${n}, because the result would exceed Number.MAX_SAFE_INTEGER.`);return n*br+gr.HEAPU32[t]}(e+(t||0))},readFloatField:function(e,t){return n=e+(t||0),fr.getF32(n);var n},readObjectField:function(e,t){return Cr(e+(t||0))},readStringField:function(e,t,n){const o=Cr(e+(t||0));if(0===o)return null;if(n){const e=pr.unbox_mono_obj(o);return"boolean"==typeof e?e?"":null:e}return pr.conv_string(o)},readStructField:function(e,t){return e+(t||0)},beginHeapLock:function(){return Dr(),Sr=xr.create(),Sr},invokeWhenHeapUnlocked:function(e){Sr?Sr.enqueuePostReleaseAction(e):e()}};function Ir(e,t){const n=e/t*100;document.documentElement.style.setProperty("--blazor-load-percentage",`${n}%`),document.documentElement.style.setProperty("--blazor-load-percentage-text",`"${Math.floor(n)}%"`)}const kr=["DEBUGGING ENABLED"],Tr=e=>kr.indexOf(e)<0&&console.log(e),Rr=e=>{console.error(e||"(null)"),Bo()};function Ar(e){return e+12}function Dr(){if(Sr)throw new Error("Assertion failed - heap is currently locked")}class xr{enqueuePostReleaseAction(e){this.postReleaseActions||(this.postReleaseActions=[]),this.postReleaseActions.push(e)}release(){var e;if(Sr!==this)throw new Error("Trying to release a lock which isn't current");for(vr.mono_wasm_gc_unlock(),Sr=null;null===(e=this.postReleaseActions)||void 0===e?void 0:e.length;)this.postReleaseActions.shift()(),Dr()}static create(){return vr.mono_wasm_gc_lock(),new xr}}class Nr{constructor(e){this.batchAddress=e,this.arrayRangeReader=Pr,this.arrayBuilderSegmentReader=Mr,this.diffReader=Ur,this.editReader=Lr,this.frameReader=Br}updatedComponents(){return Zo.readStructField(this.batchAddress,0)}referenceFrames(){return Zo.readStructField(this.batchAddress,Pr.structLength)}disposedComponentIds(){return Zo.readStructField(this.batchAddress,2*Pr.structLength)}disposedEventHandlerIds(){return Zo.readStructField(this.batchAddress,3*Pr.structLength)}updatedComponentsEntry(e,t){return Or(e,t,Ur.structLength)}referenceFramesEntry(e,t){return Or(e,t,Br.structLength)}disposedComponentIdsEntry(e,t){const n=Or(e,t,4);return Zo.readInt32Field(n)}disposedEventHandlerIdsEntry(e,t){const n=Or(e,t,8);return Zo.readUint64Field(n)}}const Pr={structLength:8,values:e=>Zo.readObjectField(e,0),count:e=>Zo.readInt32Field(e,4)},Mr={structLength:12,values:e=>{const t=Zo.readObjectField(e,0),n=Zo.getObjectFieldsBaseAddress(t);return Zo.readObjectField(n,0)},offset:e=>Zo.readInt32Field(e,4),count:e=>Zo.readInt32Field(e,8)},Ur={structLength:4+Mr.structLength,componentId:e=>Zo.readInt32Field(e,0),edits:e=>Zo.readStructField(e,4),editsEntry:(e,t)=>Or(e,t,Lr.structLength)},Lr={structLength:20,editType:e=>Zo.readInt32Field(e,0),siblingIndex:e=>Zo.readInt32Field(e,4),newTreeIndex:e=>Zo.readInt32Field(e,8),moveToSiblingIndex:e=>Zo.readInt32Field(e,8),removedAttributeName:e=>Zo.readStringField(e,16)},Br={structLength:36,frameType:e=>Zo.readInt16Field(e,4),subtreeLength:e=>Zo.readInt32Field(e,8),elementReferenceCaptureId:e=>Zo.readStringField(e,16),componentId:e=>Zo.readInt32Field(e,12),elementName:e=>Zo.readStringField(e,16),textContent:e=>Zo.readStringField(e,16),markupContent:e=>Zo.readStringField(e,16),attributeName:e=>Zo.readStringField(e,16),attributeValue:e=>Zo.readStringField(e,24,!0),attributeEventHandlerId:e=>Zo.readUint64Field(e,8)};function Or(e,t,n){return Zo.getArrayEntryPtr(e,t,n)}class Fr{constructor(e){this.componentManager=e}resolveRegisteredElement(e){const t=Number.parseInt(e);if(!Number.isNaN(t))return H(this.componentManager.resolveRootComponent(t))}getParameterValues(e){return this.componentManager.initialComponents[e].parameterValues}getParameterDefinitions(e){return this.componentManager.initialComponents[e].parameterDefinitions}getTypeName(e){return this.componentManager.initialComponents[e].typeName}getAssembly(e){return this.componentManager.initialComponents[e].assembly}getCount(){return this.componentManager.initialComponents.length}}let $r,Hr,Wr,jr,zr,qr=!1,Jr=!1,Kr=!0,Vr=!1;const Xr=new Promise((e=>{zr=e}));let Gr;const Yr=new Promise((e=>{Gr=e}));let Qr;function Zr(e){if(void 0!==jr)throw new Error("Blazor WebAssembly has already started.");return jr=new Promise(ei.bind(null,e)),jr}async function ei(e,t,n){(function(){if(window.parent!==window&&!window.opener&&window.frameElement){const e=window.sessionStorage&&window.sessionStorage["Microsoft.AspNetCore.Components.WebAssembly.Authentication.CachedAuthSettings"],t=e&&JSON.parse(e);return t&&t.redirect_uri&&location.href.startsWith(t.redirect_uri)}return!1})()&&await new Promise((()=>{}));const o=ti();!function(e){const t=D;D=(e,n,o)=>{((e,t,n)=>{const o=De(e);(null==o?void 0:o.eventDelegator.getHandler(t))&&Er.invokeWhenHeapUnlocked(n)})(e,n,(()=>t(e,n,o)))}}(),vt._internal.applyHotReload=(e,t,n,o)=>{mr.invokeDotNetStaticMethod("Microsoft.AspNetCore.Components.WebAssembly","ApplyHotReloadDelta",e,t,n,o)},vt._internal.getApplyUpdateCapabilities=()=>mr.invokeDotNetStaticMethod("Microsoft.AspNetCore.Components.WebAssembly","GetApplyUpdateCapabilities"),vt._internal.invokeJSFromDotNet=oi,vt._internal.invokeJSJson=ri,vt._internal.endInvokeDotNetFromJS=ii,vt._internal.receiveWebAssemblyDotNetDataStream=si,vt._internal.receiveByteArray=ai;const r=ir(Er);vt.platform=r,vt._internal.renderBatch=(e,t)=>{const n=Er.beginHeapLock();try{xe(e,new Nr(t))}finally{n.release()}},vt._internal.navigationManager.listenForNavigationEvents(Bn.WebAssembly,(async(e,t,n)=>{await mr.invokeDotNetStaticMethodAsync("Microsoft.AspNetCore.Components.WebAssembly","NotifyLocationChanged",e,t,n)}),(async(e,t,n,o)=>{const r=await mr.invokeDotNetStaticMethodAsync("Microsoft.AspNetCore.Components.WebAssembly","NotifyLocationChangingAsync",t,n,o);vt._internal.navigationManager.endLocationChanging(e,r)}));const i=new Fr(e);let s;vt._internal.registeredComponents={getRegisteredComponentsCount:()=>i.getCount(),getAssembly:e=>i.getAssembly(e),getTypeName:e=>i.getTypeName(e),getParameterDefinitions:e=>i.getParameterDefinitions(e)||"",getParameterValues:e=>i.getParameterValues(e)||""},vt._internal.getPersistedState=()=>kt(document,Ct)||"",vt._internal.getInitialComponentsUpdate=()=>Yr,vt._internal.updateRootComponents=e=>{var t;return null===(t=vt._internal.dotNetExports)||void 0===t?void 0:t.UpdateRootComponentsCore(e)},vt._internal.endUpdateRootComponents=t=>{var n;return null===(n=e.onAfterUpdateRootComponents)||void 0===n?void 0:n.call(e,t)},vt._internal.attachRootComponentToElement=(e,t,n)=>{const o=i.resolveRegisteredElement(e);o?Ae(n,o,t,!1):function(e,t,n){const o="::before";let r=!1;if(e.endsWith("::after"))e=e.slice(0,-7),r=!0;else if(e.endsWith(o))throw new Error(`The '${o}' selector is not supported.`);const i=w(e)||document.querySelector(e);if(!i)throw new Error(`Could not find any element matching selector '${e}'.`);Ae(n,W(i,!0),t,r)}(e,t,n)};try{await o,s=await r.start()}catch(e){throw new Error(`Failed to start platform. Reason: ${e}`)}r.callEntryPoint(),wr.invokeAfterStartedCallbacks(vt),Jr=!0,t()}function ti(){return null!=Wr||(Wr=(async()=>{await Hr;const e=null!=$r?$r:{},t=null==$r?void 0:$r.configureRuntime;e.configureRuntime=e=>{null==t||t(e),Vr&&e.withEnvironmentVariable("__BLAZOR_WEBASSEMBLY_WAIT_FOR_ROOT_COMPONENTS","true")},await Er.load(e,zr),qr=!0})()),Wr}function ni(){return qr}function oi(t,n,o,r){const i=Er.readStringField(t,0),s=Er.readInt32Field(t,4),a=Er.readStringField(t,8),c=Er.readUint64Field(t,20);if(null!==a){const e=Er.readUint64Field(t,12);if(0!==e)return mr.beginInvokeJSFromDotNet(e,i,a,s,c),0;{const e=mr.invokeJSFromDotNet(i,a,s,c);return null===e?0:pr.js_string_to_mono_string(e)}}{const t=e.findJSFunction(i,c).call(null,n,o,r);switch(s){case e.JSCallResultType.Default:return t;case e.JSCallResultType.JSObjectReference:return e.createJSObjectReference(t).__jsObjectId;case e.JSCallResultType.JSStreamReference:{const n=e.createJSStreamReference(t),o=JSON.stringify(n);return pr.js_string_to_mono_string(o)}case e.JSCallResultType.JSVoidResult:return null;default:throw new Error(`Invalid JS call result type '${s}'.`)}}}function ri(e,t,n,o,r){return 0!==r?(mr.beginInvokeJSFromDotNet(r,e,o,n,t),null):mr.invokeJSFromDotNet(e,o,n,t)}function ii(e,t,n){mr.endInvokeDotNetFromJS(e,t,n)}function si(e,t,n,o){!function(e,t,n,o,r){let i=mt.get(t);if(!i){const n=new ReadableStream({start(e){mt.set(t,e),i=e}});e.supplyDotNetStream(t,n)}r?(i.error(r),mt.delete(t)):0===o?(i.close(),mt.delete(t)):i.enqueue(n.length===o?n:n.subarray(0,o))}(mr,e,t,n,o)}function ai(e,t){mr.receiveByteArray(e,t)}function ci(e,t){t.namespaceURI?e.setAttributeNS(t.namespaceURI,t.name,t.value):e.setAttribute(t.name,t.value)}Hr=new Promise((e=>{Qr=e}));const li="data-permanent";var hi,di;!function(e){e[e.None=0]="None",e[e.Some=1]="Some",e[e.Infinite=2]="Infinite"}(hi||(hi={})),function(e){e.Keep="keep",e.Update="update",e.Insert="insert",e.Delete="delete"}(di||(di={}));class ui{static create(e,t,n){return 0===t&&n===e.length?e:new ui(e,t,n)}constructor(e,t,n){this.source=e,this.startIndex=t,this.length=n}item(e){return this.source.item(e+this.startIndex)}forEach(e,t){for(let t=0;t=n&&s>=o&&r(e.item(i),t.item(s))===hi.None;)i--,s--,a++;return a}(e,t,o,o,n),i=function(e){var t;const n=[];let o=e.length-1,r=(null===(t=e[o])||void 0===t?void 0:t.length)-1;for(;o>0||r>0;){const t=0===o?di.Insert:0===r?di.Delete:e[o][r];switch(n.unshift(t),t){case di.Keep:case di.Update:o--,r--;break;case di.Insert:r--;break;case di.Delete:o--}}return n}(function(e,t,n){const o=[],r=[],i=e.length,s=t.length;if(0===i&&0===s)return[];for(let e=0;e<=i;e++)(o[e]=Array(s+1))[0]=e,r[e]=Array(s+1);const a=o[0];for(let e=1;e<=s;e++)a[e]=e;for(let a=1;a<=i;a++)for(let i=1;i<=s;i++){const s=n(e.item(a-1),t.item(i-1)),c=o[a-1][i]+1,l=o[a][i-1]+1;let h;switch(s){case hi.None:h=o[a-1][i-1];break;case hi.Some:h=o[a-1][i-1]+1;break;case hi.Infinite:h=Number.MAX_VALUE}h{history.pushState(null,"",e),Ui(e,!0)}))}function Pi(e){Oe()||Ui(location.href,!1)}function Mi(e){var t,n,o,r,i;if(Oe()||e.defaultPrevented)return;const s=e.target;if(s instanceof HTMLFormElement){if(!function(e){const t=e.getAttribute("data-enhance");return"string"==typeof t&&""===t||"true"===(null==t?void 0:t.toLowerCase())}(s))return;const a=(null===(t=e.submitter)||void 0===t?void 0:t.getAttribute("formmethod"))||s.method;if("dialog"===a)return void console.warn('A form cannot be enhanced when its method is "dialog".');const c=(null===(n=e.submitter)||void 0===n?void 0:n.getAttribute("formtarget"))||s.target;if(""!==c&&"_self"!==c)return void console.warn('A form cannot be enhanced when its target is different from the default value "_self".');e.preventDefault();const l=new URL((null===(o=e.submitter)||void 0===o?void 0:o.getAttribute("formaction"))||s.action,document.baseURI),h={method:a},d=new FormData(s),u=null===(r=e.submitter)||void 0===r?void 0:r.getAttribute("name"),p=e.submitter.getAttribute("value");u&&p&&d.append(u,p);const f=new URLSearchParams(d).toString();if("get"===h.method)l.search=f,history.pushState(null,"",l.toString());else{const t=(null===(i=e.submitter)||void 0===i?void 0:i.getAttribute("formenctype"))||s.enctype;"multipart/form-data"===t?h.body=d:(h.body=f,h.headers={"content-type":t,accept:Ii})}Ui(l.toString(),!1,h)}}async function Ui(e,t,n){Ri=!0,null==ki||ki.abort(),function(e,t){null==ke||ke(e,t)}(e,t),ki=new AbortController;const o=ki.signal,r=fetch(e,Object.assign({signal:o,mode:"no-cors",headers:{accept:Ii}},n));let i=null;if(await async function(e,t,n,o){let r;try{if(r=await e,!r.body)return void n(r,"");const t=r.headers.get("ssr-framing");if(!t){const e=await r.text();return void n(r,e)}let o=!0;await r.body.pipeThrough(new TextDecoderStream).pipeThrough(function(e){let t="";return new TransformStream({transform(n,o){if(t+=n,t.indexOf(e,t.length-n.length-e.length)>=0){const n=t.split(e);n.slice(0,-1).forEach((e=>o.enqueue(e))),t=n[n.length-1]}},flush(e){e.enqueue(t)}})}(`\x3c!--${t}--\x3e`)).pipeTo(new WritableStream({write(e){o?(o=!1,n(r,e)):(e=>{const t=document.createRange().createContextualFragment(e);for(;t.firstChild;)document.body.appendChild(t.firstChild)})(e)}}))}catch(e){if("AbortError"===e.name&&t.aborted)return;throw e}}(r,o,((t,o)=>{const r=!(null==n?void 0:n.method)||"get"===n.method,s=t.status>=200&&t.status<300;if("opaque"===t.type){if(r)return void Bi(e);throw new Error("Enhanced navigation does not support making a non-GET request to an endpoint that redirects to an external origin. Avoid enabling enhanced navigation for form posts that may perform external redirections.")}if(s&&"allow"!==t.headers.get("blazor-enhanced-nav")){if(r)return void Bi(e);throw new Error("Enhanced navigation does not support making a non-GET request to a non-Blazor endpoint. Avoid enabling enhanced navigation for forms that post to a non-Blazor endpoint.")}t.redirected&&(r?history.replaceState(null,"",t.url):t.url!==location.href&&history.pushState(null,"",t.url),e=t.url);const a=t.headers.get("blazor-enhanced-nav-redirect-location");if(a)return void location.replace(a);t.redirected||r||!s||(function(e){const t=new URL(e.url),n=new URL(Ai);return t.protocol===n.protocol&&t.host===n.host&&t.port===n.port&&t.pathname===n.pathname}(t)?location.href!==Ai&&history.pushState(null,"",Ai):i=`Cannot perform enhanced form submission that changes the URL (except via a redirection), because then back/forward would not work. Either remove this form's 'action' attribute, or change its method to 'get', or do not mark it as enhanced.\nOld URL: ${location.href}\nNew URL: ${t.url}`),Ai=t.url;const c=t.headers.get("content-type");if((null==c?void 0:c.startsWith("text/html"))&&o){const e=(new DOMParser).parseFromString(o,"text/html");fi(document,e),Ti.documentUpdated()}else(null==c?void 0:c.startsWith("text/"))&&o?Li(o):s||o?r?Bi(e):Li(`Error: ${n.method} request to ${e} returned non-HTML content of type ${c||"unspecified"}.`):Li(`Error: ${t.status} ${t.statusText}`)})),!o.aborted){const t=e.indexOf("#");if(t>=0){const n=e.substring(t+1),o=document.getElementById(n);null==o||o.scrollIntoView()}if(Ri=!1,Ti.enhancedNavigationCompleted(),i)throw new Error(i)}}function Li(e){document.documentElement.textContent=e;const t=document.documentElement.style;t.fontFamily="consolas, monospace",t.whiteSpace="pre-wrap",t.padding="1rem"}function Bi(e){history.replaceState(null,"",e+"?"),location.replace(e)}let Oi,Fi=!0;class $i extends HTMLElement{connectedCallback(){var e;const t=this.parentNode;null===(e=t.parentNode)||void 0===e||e.removeChild(t),t.childNodes.forEach((e=>{if(e instanceof HTMLTemplateElement){const t=e.getAttribute("blazor-component-id");if(t)"true"!==e.getAttribute("enhanced-nav")&&ki||function(e,t){const n=function(e){const t=`bl:${e}`,n=document.createNodeIterator(document,NodeFilter.SHOW_COMMENT);let o=null;for(;(o=n.nextNode())&&o.textContent!==t;);if(!o)return null;const r=`/bl:${e}`;let i=null;for(;(i=n.nextNode())&&i.textContent!==r;);return i?{startMarker:o,endMarker:i}:null}(e);if(n){const{startMarker:e,endMarker:o}=n;if(Fi)fi({startExclusive:e,endExclusive:o},t);else{const n=o.parentNode,r=new Range;for(r.setStart(e,e.textContent.length),r.setEnd(o,0),r.deleteContents();t.childNodes[0];)n.insertBefore(t.childNodes[0],o)}Oi.documentUpdated()}}(t,e.content);else switch(e.getAttribute("type")){case"redirection":const t=Le(e.content.textContent),n="form-post"===e.getAttribute("from");"true"===e.getAttribute("enhanced")&&Pe(t)?(n?history.pushState(null,"",t):history.replaceState(null,"",t),Ui(t,!1)):n?location.assign(t):location.replace(t);break;case"error":Li(e.content.textContent||"Error")}}}))}}class Hi{constructor(e){var t;this._circuitInactivityTimeoutMs=e,this._rootComponentsBySsrComponentId=new Map,this._seenDescriptors=new Set,this._pendingOperationBatches={},this._nextOperationBatchId=1,this._nextSsrComponentId=1,this._didWebAssemblyFailToLoadQuickly=!1,this._isComponentRefreshPending=!1,this.initialComponents=[],t=()=>{this.rootComponentsMayRequireRefresh()},E.push(t)}onAfterRenderBatch(e){e===Bn.Server&&this.circuitMayHaveNoRootComponents()}onDocumentUpdated(){this.rootComponentsMayRequireRefresh()}onEnhancedNavigationCompleted(){this.rootComponentsMayRequireRefresh()}registerComponent(e){if(this._seenDescriptors.has(e))return;"auto"!==e.type&&"webassembly"!==e.type||this.startLoadingWebAssemblyIfNotStarted();const t=this._nextSsrComponentId++;this._seenDescriptors.add(e),this._rootComponentsBySsrComponentId.set(t,{descriptor:e,ssrComponentId:t})}unregisterComponent(e){this._seenDescriptors.delete(e.descriptor),this._rootComponentsBySsrComponentId.delete(e.ssrComponentId),this.circuitMayHaveNoRootComponents()}async startLoadingWebAssemblyIfNotStarted(){if(void 0!==Wr)return;Vr=!0;const e=ti();setTimeout((()=>{ni()||this.onWebAssemblyFailedToLoadQuickly()}),vt._internal.loadWebAssemblyQuicklyTimeout);const t=await Xr;(function(e){if(!e.cacheBootResources)return!1;const t=Wi(e);if(!t)return!1;const n=window.localStorage.getItem(t.key);return t.value===n})(t)||this.onWebAssemblyFailedToLoadQuickly(),await e,function(e){const t=Wi(e);t&&window.localStorage.setItem(t.key,t.value)}(t),this.rootComponentsMayRequireRefresh()}onWebAssemblyFailedToLoadQuickly(){this._didWebAssemblyFailToLoadQuickly||(this._didWebAssemblyFailToLoadQuickly=!0,this.rootComponentsMayRequireRefresh())}startCircutIfNotStarted(){return void 0===Yo?tr(this):!Vo||Vo.isDisposedOrDisposing()?or():void 0}async startWebAssemblyIfNotStarted(){this.startLoadingWebAssemblyIfNotStarted(),void 0===jr&&await Zr(this)}rootComponentsMayRequireRefresh(){this._isComponentRefreshPending||(this._isComponentRefreshPending=!0,setTimeout((()=>{this._isComponentRefreshPending=!1,this.refreshRootComponents(this._rootComponentsBySsrComponentId.values())}),0))}circuitMayHaveNoRootComponents(){if(this.rendererHasExistingOrPendingComponents(Bn.Server,"server","auto"))return clearTimeout(this._circuitInactivityTimeoutId),void(this._circuitInactivityTimeoutId=void 0);void 0===this._circuitInactivityTimeoutId&&(this._circuitInactivityTimeoutId=setTimeout((()=>{this.rendererHasExistingOrPendingComponents(Bn.Server,"server","auto")||(async function(){await(null==Vo?void 0:Vo.dispose())}(),this._circuitInactivityTimeoutId=void 0)}),this._circuitInactivityTimeoutMs))}rendererHasComponents(e){const t=De(e);return void 0!==t&&t.getRootComponentCount()>0}rendererHasExistingOrPendingComponents(e,...t){if(this.rendererHasComponents(e))return!0;for(const{descriptor:{type:n},assignedRendererId:o}of this._rootComponentsBySsrComponentId.values()){if(o===e)return!0;if(void 0===o&&-1!==t.indexOf(n))return!0}return!1}refreshRootComponents(e){const t=new Map;for(const n of e){const e=this.determinePendingOperation(n);if(!e)continue;const o=n.assignedRendererId;if(!o)throw new Error("Descriptors must be assigned a renderer ID before getting used as root components");let r=t.get(o);r||(r=[],t.set(o,r)),r.push(e)}for(const[e,n]of t){const t={batchId:this._nextOperationBatchId++,operations:n};this._pendingOperationBatches[t.batchId]=t;const o=JSON.stringify(t);e===Bn.Server?rr(o):this.updateWebAssemblyRootComponents(o)}}updateWebAssemblyRootComponents(e){Kr?(Gr(e),Kr=!1):function(e){if(!jr)throw new Error("Blazor WebAssembly has not started.");if(!vt._internal.updateRootComponents)throw new Error("Blazor WebAssembly has not initialized.");Jr?vt._internal.updateRootComponents(e):async function(e){if(await jr,!vt._internal.updateRootComponents)throw new Error("Blazor WebAssembly has not initialized.");vt._internal.updateRootComponents(e)}(e)}(e)}resolveRendererIdForDescriptor(e){switch("auto"===e.type?this.getAutoRenderMode():e.type){case"server":return this.startCircutIfNotStarted(),Bn.Server;case"webassembly":return this.startWebAssemblyIfNotStarted(),Bn.WebAssembly;case null:return null}}getAutoRenderMode(){return this.rendererHasExistingOrPendingComponents(Bn.WebAssembly,"webassembly")?"webassembly":this.rendererHasExistingOrPendingComponents(Bn.Server,"server")?"server":ni()?"webassembly":this._didWebAssemblyFailToLoadQuickly?"server":null}determinePendingOperation(e){if(t=e.descriptor,document.contains(t.start)){if(void 0===e.assignedRendererId){if(Ri||"loading"===document.readyState)return null;const t=this.resolveRendererIdForDescriptor(e.descriptor);return null===t?null:T(t)?(be(e.descriptor.start,!0),e.assignedRendererId=t,e.uniqueIdAtLastUpdate=e.descriptor.uniqueId,{type:"add",ssrComponentId:e.ssrComponentId,marker:Ut(e.descriptor)}):null}return T(e.assignedRendererId)?e.uniqueIdAtLastUpdate===e.descriptor.uniqueId?null:(e.uniqueIdAtLastUpdate=e.descriptor.uniqueId,{type:"update",ssrComponentId:e.ssrComponentId,marker:Ut(e.descriptor)}):null}return e.hasPendingRemoveOperation?null:void 0===e.assignedRendererId?(this.unregisterComponent(e),null):T(e.assignedRendererId)?(be(e.descriptor.start,!1),e.hasPendingRemoveOperation=!0,{type:"remove",ssrComponentId:e.ssrComponentId}):null;var t}resolveRootComponent(e){const t=this._rootComponentsBySsrComponentId.get(e);if(!t)throw new Error(`Could not resolve a root component with SSR component ID '${e}'.`);return t.descriptor}onAfterUpdateRootComponents(e){const t=this._pendingOperationBatches[e];delete this._pendingOperationBatches[e];for(const e of t.operations)switch(e.type){case"remove":{const t=this._rootComponentsBySsrComponentId.get(e.ssrComponentId);t&&this.unregisterComponent(t);break}}}}function Wi(e){var t;const n=null===(t=e.resources)||void 0===t?void 0:t.hash,o=e.mainAssemblyName;return n&&o?{key:`blazor-resource-hash:${o}`,value:n}:null}class ji{constructor(){this._eventListeners=new Map}static create(e){const t=new ji;return e.addEventListener=t.addEventListener.bind(t),e.removeEventListener=t.removeEventListener.bind(t),t}addEventListener(e,t){let n=this._eventListeners.get(e);n||(n=new Set,this._eventListeners.set(e,n)),n.add(t)}removeEventListener(e,t){var n;null===(n=this._eventListeners.get(e))||void 0===n||n.delete(t)}dispatchEvent(e,t){const n=this._eventListeners.get(e);if(!n)return;const o={...t,type:e};for(const e of n)e(o)}}let zi,qi=!1;function Ji(e){var t,n,o,r;if(qi)throw new Error("Blazor has already started.");qi=!0,null!==(t=(e=e||{}).logLevel)&&void 0!==t||(e.logLevel=yt.Error),vt._internal.loadWebAssemblyQuicklyTimeout=3e3,vt._internal.isBlazorWeb=!0,vt._internal.hotReloadApplied=()=>{Me()&&Ue(location.href,!0)},zi=new Hi(null!==(o=null===(n=null==e?void 0:e.ssr)||void 0===n?void 0:n.circuitInactivityTimeoutMs)&&void 0!==o?o:2e3);const i=ji.create(vt),s={documentUpdated:()=>{zi.onDocumentUpdated(),i.dispatchEvent("enhancedload",{})},enhancedNavigationCompleted(){zi.onEnhancedNavigationCompleted()}};return pi=zi,function(e,t){Oi=t,(null==e?void 0:e.disableDomPreservation)&&(Fi=!1),customElements.define("blazor-ssr-end",$i)}(null==e?void 0:e.ssr,s),(null===(r=null==e?void 0:e.ssr)||void 0===r?void 0:r.disableDomPreservation)||Di(s),"loading"===document.readyState?document.addEventListener("DOMContentLoaded",Ki.bind(null,e)):Ki(e),Promise.resolve()}function Ki(e){const t=Fo((null==e?void 0:e.circuit)||{});e.circuit=t;const n=async function(e,t){var n;const o=kt(document,Et,"initializers");if(!o)return new qo(!1,t);const r=null!==(n=JSON.parse(atob(o)))&&void 0!==n?n:[],i=new qo(!1,t);return await i.importInitializersAsync(r,[e]),i}(e,new bt(t.logLevel));er(Vi(n,t)),function(e){if($r)throw new Error("WebAssembly options have already been configured.");!async function(e){const t=await e;$r=t,Qr()}(e)}(Vi(n,(null==e?void 0:e.webAssembly)||{})),function(e){const t=bi(document);for(const e of t)null==pi||pi.registerComponent(e)}(),zi.onDocumentUpdated(),async function(e){const t=await e;await t.invokeAfterStartedCallbacks(vt)}(n)}async function Vi(e,t){return await e,t}vt.start=Ji,window.DotNet=e,document&&document.currentScript&&"false"!==document.currentScript.getAttribute("autostart")&&Ji()})()})(); \ No newline at end of file +(()=>{var e={778:()=>{},77:()=>{},203:()=>{},200:()=>{},628:()=>{},321:()=>{}},t={};function n(o){var r=t[o];if(void 0!==r)return r.exports;var i=t[o]={exports:{}};return e[o](i,i.exports,n),i.exports}n.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),(()=>{"use strict";var e,t,o;!function(e){const t=[],n="__jsObjectId",o="__dotNetObject",r="__byte[]",i="__dotNetStream",s="__jsStreamReferenceLength";let a,c;class l{constructor(e){this._jsObject=e,this._cachedFunctions=new Map}findFunction(e){const t=this._cachedFunctions.get(e);if(t)return t;let n,o=this._jsObject;if(e.split(".").forEach((t=>{if(!(t in o))throw new Error(`Could not find '${e}' ('${t}' was undefined).`);n=o,o=o[t]})),o instanceof Function)return o=o.bind(n),this._cachedFunctions.set(e,o),o;throw new Error(`The value '${e}' is not a function.`)}getWrappedObject(){return this._jsObject}}const h={0:new l(window)};h[0]._cachedFunctions.set("import",(e=>("string"==typeof e&&e.startsWith("./")&&(e=new URL(e.substr(2),document.baseURI).toString()),import(e))));let d,u=1;function p(e){t.push(e)}function f(e){if(e&&"object"==typeof e){h[u]=new l(e);const t={[n]:u};return u++,t}throw new Error(`Cannot create a JSObjectReference from the value '${e}'.`)}function g(e){let t=-1;if(e instanceof ArrayBuffer&&(e=new Uint8Array(e)),e instanceof Blob)t=e.size;else{if(!(e.buffer instanceof ArrayBuffer))throw new Error("Supplied value is not a typed array or blob.");if(void 0===e.byteLength)throw new Error(`Cannot create a JSStreamReference from the value '${e}' as it doesn't have a byteLength.`);t=e.byteLength}const o={[s]:t};try{const t=f(e);o[n]=t[n]}catch(t){throw new Error(`Cannot create a JSStreamReference from the value '${e}'.`)}return o}function m(e,n){c=e;const o=n?JSON.parse(n,((e,n)=>t.reduce(((t,n)=>n(e,t)),n))):null;return c=void 0,o}function v(){if(void 0===a)throw new Error("No call dispatcher has been set.");if(null===a)throw new Error("There are multiple .NET runtimes present, so a default dispatcher could not be resolved. Use DotNetObject to invoke .NET instance methods.");return a}e.attachDispatcher=function(e){const t=new y(e);return void 0===a?a=t:a&&(a=null),t},e.attachReviver=p,e.invokeMethod=function(e,t,...n){return v().invokeDotNetStaticMethod(e,t,...n)},e.invokeMethodAsync=function(e,t,...n){return v().invokeDotNetStaticMethodAsync(e,t,...n)},e.createJSObjectReference=f,e.createJSStreamReference=g,e.disposeJSObjectReference=function(e){const t=e&&e[n];"number"==typeof t&&_(t)},function(e){e[e.Default=0]="Default",e[e.JSObjectReference=1]="JSObjectReference",e[e.JSStreamReference=2]="JSStreamReference",e[e.JSVoidResult=3]="JSVoidResult"}(d=e.JSCallResultType||(e.JSCallResultType={}));class y{constructor(e){this._dotNetCallDispatcher=e,this._byteArraysToBeRevived=new Map,this._pendingDotNetToJSStreams=new Map,this._pendingAsyncCalls={},this._nextAsyncCallId=1}getDotNetCallDispatcher(){return this._dotNetCallDispatcher}invokeJSFromDotNet(e,t,n,o){const r=m(this,t),i=I(b(e,o)(...r||[]),n);return null==i?null:T(this,i)}beginInvokeJSFromDotNet(e,t,n,o,r){const i=new Promise((e=>{const o=m(this,n);e(b(t,r)(...o||[]))}));e&&i.then((t=>T(this,[e,!0,I(t,o)]))).then((t=>this._dotNetCallDispatcher.endInvokeJSFromDotNet(e,!0,t)),(t=>this._dotNetCallDispatcher.endInvokeJSFromDotNet(e,!1,JSON.stringify([e,!1,w(t)]))))}endInvokeDotNetFromJS(e,t,n){const o=t?m(this,n):new Error(n);this.completePendingCall(parseInt(e,10),t,o)}invokeDotNetStaticMethod(e,t,...n){return this.invokeDotNetMethod(e,t,null,n)}invokeDotNetStaticMethodAsync(e,t,...n){return this.invokeDotNetMethodAsync(e,t,null,n)}invokeDotNetMethod(e,t,n,o){if(this._dotNetCallDispatcher.invokeDotNetFromJS){const r=T(this,o),i=this._dotNetCallDispatcher.invokeDotNetFromJS(e,t,n,r);return i?m(this,i):null}throw new Error("The current dispatcher does not support synchronous calls from JS to .NET. Use invokeDotNetMethodAsync instead.")}invokeDotNetMethodAsync(e,t,n,o){if(e&&n)throw new Error(`For instance method calls, assemblyName should be null. Received '${e}'.`);const r=this._nextAsyncCallId++,i=new Promise(((e,t)=>{this._pendingAsyncCalls[r]={resolve:e,reject:t}}));try{const i=T(this,o);this._dotNetCallDispatcher.beginInvokeDotNetFromJS(r,e,t,n,i)}catch(e){this.completePendingCall(r,!1,e)}return i}receiveByteArray(e,t){this._byteArraysToBeRevived.set(e,t)}processByteArray(e){const t=this._byteArraysToBeRevived.get(e);return t?(this._byteArraysToBeRevived.delete(e),t):null}supplyDotNetStream(e,t){if(this._pendingDotNetToJSStreams.has(e)){const n=this._pendingDotNetToJSStreams.get(e);this._pendingDotNetToJSStreams.delete(e),n.resolve(t)}else{const n=new E;n.resolve(t),this._pendingDotNetToJSStreams.set(e,n)}}getDotNetStreamPromise(e){let t;if(this._pendingDotNetToJSStreams.has(e))t=this._pendingDotNetToJSStreams.get(e).streamPromise,this._pendingDotNetToJSStreams.delete(e);else{const n=new E;this._pendingDotNetToJSStreams.set(e,n),t=n.streamPromise}return t}completePendingCall(e,t,n){if(!this._pendingAsyncCalls.hasOwnProperty(e))throw new Error(`There is no pending async call with ID ${e}.`);const o=this._pendingAsyncCalls[e];delete this._pendingAsyncCalls[e],t?o.resolve(n):o.reject(n)}}function w(e){return e instanceof Error?`${e.message}\n${e.stack}`:e?e.toString():"null"}function b(e,t){const n=h[t];if(n)return n.findFunction(e);throw new Error(`JS object instance with ID ${t} does not exist (has it been disposed?).`)}function _(e){delete h[e]}e.findJSFunction=b,e.disposeJSObjectReferenceById=_;class S{constructor(e,t){this._id=e,this._callDispatcher=t}invokeMethod(e,...t){return this._callDispatcher.invokeDotNetMethod(null,e,this._id,t)}invokeMethodAsync(e,...t){return this._callDispatcher.invokeDotNetMethodAsync(null,e,this._id,t)}dispose(){this._callDispatcher.invokeDotNetMethodAsync(null,"__Dispose",this._id,null).catch((e=>console.error(e)))}serializeAsArg(){return{[o]:this._id}}}e.DotNetObject=S,p((function(e,t){if(t&&"object"==typeof t){if(t.hasOwnProperty(o))return new S(t[o],c);if(t.hasOwnProperty(n)){const e=t[n],o=h[e];if(o)return o.getWrappedObject();throw new Error(`JS object instance with Id '${e}' does not exist. It may have been disposed.`)}if(t.hasOwnProperty(r)){const e=t[r],n=c.processByteArray(e);if(void 0===n)throw new Error(`Byte array index '${e}' does not exist.`);return n}if(t.hasOwnProperty(i)){const e=t[i],n=c.getDotNetStreamPromise(e);return new C(n)}}return t}));class C{constructor(e){this._streamPromise=e}stream(){return this._streamPromise}async arrayBuffer(){return new Response(await this.stream()).arrayBuffer()}}class E{constructor(){this.streamPromise=new Promise(((e,t)=>{this.resolve=e,this.reject=t}))}}function I(e,t){switch(t){case d.Default:return e;case d.JSObjectReference:return f(e);case d.JSStreamReference:return g(e);case d.JSVoidResult:return null;default:throw new Error(`Invalid JS call result type '${t}'.`)}}let k=0;function T(e,t){k=0,c=e;const n=JSON.stringify(t,R);return c=void 0,n}function R(e,t){if(t instanceof S)return t.serializeAsArg();if(t instanceof Uint8Array){c.getDotNetCallDispatcher().sendByteArray(k,t);const e={[r]:k};return k++,e}return t}}(e||(e={})),function(e){e[e.prependFrame=1]="prependFrame",e[e.removeFrame=2]="removeFrame",e[e.setAttribute=3]="setAttribute",e[e.removeAttribute=4]="removeAttribute",e[e.updateText=5]="updateText",e[e.stepIn=6]="stepIn",e[e.stepOut=7]="stepOut",e[e.updateMarkup=8]="updateMarkup",e[e.permutationListEntry=9]="permutationListEntry",e[e.permutationListEnd=10]="permutationListEnd"}(t||(t={})),function(e){e[e.element=1]="element",e[e.text=2]="text",e[e.attribute=3]="attribute",e[e.component=4]="component",e[e.region=5]="region",e[e.elementReferenceCapture=6]="elementReferenceCapture",e[e.markup=8]="markup",e[e.namedEvent=10]="namedEvent"}(o||(o={}));class r{constructor(e,t){this.componentId=e,this.fieldValue=t}static fromEvent(e,t){const n=t.target;if(n instanceof Element){const t=function(e){return e instanceof HTMLInputElement?e.type&&"checkbox"===e.type.toLowerCase()?{value:e.checked}:{value:e.value}:e instanceof HTMLSelectElement||e instanceof HTMLTextAreaElement?{value:e.value}:null}(n);if(t)return new r(e,t.value)}return null}}const i=new Map,s=new Map,a=[];function c(e){return i.get(e)}function l(e){const t=i.get(e);return(null==t?void 0:t.browserEventName)||e}function h(e,t){e.forEach((e=>i.set(e,t)))}function d(e){const t=[];for(let n=0;ne.selected)).map((e=>e.value))}}{const e=function(e){return!!e&&"INPUT"===e.tagName&&"checkbox"===e.getAttribute("type")}(t);return{value:e?!!t.checked:t.value}}}}),h(["copy","cut","paste"],{createEventArgs:e=>({type:e.type})}),h(["drag","dragend","dragenter","dragleave","dragover","dragstart","drop"],{createEventArgs:e=>{return{...u(t=e),dataTransfer:t.dataTransfer?{dropEffect:t.dataTransfer.dropEffect,effectAllowed:t.dataTransfer.effectAllowed,files:Array.from(t.dataTransfer.files).map((e=>e.name)),items:Array.from(t.dataTransfer.items).map((e=>({kind:e.kind,type:e.type}))),types:t.dataTransfer.types}:null};var t}}),h(["focus","blur","focusin","focusout"],{createEventArgs:e=>({type:e.type})}),h(["keydown","keyup","keypress"],{createEventArgs:e=>{return{key:(t=e).key,code:t.code,location:t.location,repeat:t.repeat,ctrlKey:t.ctrlKey,shiftKey:t.shiftKey,altKey:t.altKey,metaKey:t.metaKey,type:t.type};var t}}),h(["contextmenu","click","mouseover","mouseout","mousemove","mousedown","mouseup","mouseleave","mouseenter","dblclick"],{createEventArgs:e=>u(e)}),h(["error"],{createEventArgs:e=>{return{message:(t=e).message,filename:t.filename,lineno:t.lineno,colno:t.colno,type:t.type};var t}}),h(["loadstart","timeout","abort","load","loadend","progress"],{createEventArgs:e=>{return{lengthComputable:(t=e).lengthComputable,loaded:t.loaded,total:t.total,type:t.type};var t}}),h(["touchcancel","touchend","touchmove","touchenter","touchleave","touchstart"],{createEventArgs:e=>{return{detail:(t=e).detail,touches:d(t.touches),targetTouches:d(t.targetTouches),changedTouches:d(t.changedTouches),ctrlKey:t.ctrlKey,shiftKey:t.shiftKey,altKey:t.altKey,metaKey:t.metaKey,type:t.type};var t}}),h(["gotpointercapture","lostpointercapture","pointercancel","pointerdown","pointerenter","pointerleave","pointermove","pointerout","pointerover","pointerup"],{createEventArgs:e=>{return{...u(t=e),pointerId:t.pointerId,width:t.width,height:t.height,pressure:t.pressure,tiltX:t.tiltX,tiltY:t.tiltY,pointerType:t.pointerType,isPrimary:t.isPrimary};var t}}),h(["wheel","mousewheel"],{createEventArgs:e=>{return{...u(t=e),deltaX:t.deltaX,deltaY:t.deltaY,deltaZ:t.deltaZ,deltaMode:t.deltaMode};var t}}),h(["cancel","close","toggle"],{createEventArgs:()=>({})});const p=["date","datetime-local","month","time","week"],f=new Map;let g,m,v=0;const y={async add(e,t,n){if(!n)throw new Error("initialParameters must be an object, even if empty.");const o="__bl-dynamic-root:"+(++v).toString();f.set(o,e);const r=await S().invokeMethodAsync("AddRootComponent",t,o),i=new _(r,m[t]);return await i.setParameters(n),i}};function w(e){const t=f.get(e);if(t)return f.delete(e),t}class b{invoke(e){return this._callback(e)}setCallback(t){this._selfJSObjectReference||(this._selfJSObjectReference=e.createJSObjectReference(this)),this._callback=t}getJSObjectReference(){return this._selfJSObjectReference}dispose(){this._selfJSObjectReference&&e.disposeJSObjectReference(this._selfJSObjectReference)}}class _{constructor(e,t){this._jsEventCallbackWrappers=new Map,this._componentId=e;for(const e of t)"eventcallback"===e.type&&this._jsEventCallbackWrappers.set(e.name.toLowerCase(),new b)}setParameters(e){const t={},n=Object.entries(e||{}),o=n.length;for(const[e,o]of n){const n=this._jsEventCallbackWrappers.get(e.toLowerCase());n&&o?(n.setCallback(o),t[e]=n.getJSObjectReference()):t[e]=o}return S().invokeMethodAsync("SetRootComponentParameters",this._componentId,o,t)}async dispose(){if(null!==this._componentId){await S().invokeMethodAsync("RemoveRootComponent",this._componentId),this._componentId=null;for(const e of this._jsEventCallbackWrappers.values())e.dispose()}}}function S(){if(!g)throw new Error("Dynamic root components have not been enabled in this application.");return g}const C=new Map,E=[],I=new Map;function k(t,n,o,r){var i,s;if(C.has(t))throw new Error(`Interop methods are already registered for renderer ${t}`);C.set(t,n),o&&r&&Object.keys(o).length>0&&function(t,n,o){if(g)throw new Error("Dynamic root components have already been enabled.");g=t,m=n;for(const[t,r]of Object.entries(o)){const o=e.findJSFunction(t,0);for(const e of r)o(e,n[e])}}(A(t),o,r),null===(s=null===(i=I.get(t))||void 0===i?void 0:i[0])||void 0===s||s.call(i),function(e){for(const t of E)t(e)}(t)}function T(e){return C.has(e)}function R(e,t,n){return D(e,t.eventHandlerId,(()=>A(e).invokeMethodAsync("DispatchEventAsync",t,n)))}function A(e){const t=C.get(e);if(!t)throw new Error(`No interop methods are registered for renderer ${e}`);return t}let D=(e,t,n)=>n();const x=B(["abort","blur","cancel","canplay","canplaythrough","change","close","cuechange","durationchange","emptied","ended","error","focus","load","loadeddata","loadedmetadata","loadend","loadstart","mouseenter","mouseleave","pointerenter","pointerleave","pause","play","playing","progress","ratechange","reset","scroll","seeked","seeking","stalled","submit","suspend","timeupdate","toggle","unload","volumechange","waiting","DOMNodeInsertedIntoDocument","DOMNodeRemovedFromDocument"]),N={submit:!0},P=B(["click","dblclick","mousedown","mousemove","mouseup"]);class M{constructor(e){this.browserRendererId=e,this.afterClickCallbacks=[];const t=++M.nextEventDelegatorId;this.eventsCollectionKey=`_blazorEvents_${t}`,this.eventInfoStore=new U(this.onGlobalEvent.bind(this))}setListener(e,t,n,o){const r=this.getEventHandlerInfosForElement(e,!0),i=r.getHandler(t);if(i)this.eventInfoStore.update(i.eventHandlerId,n);else{const i={element:e,eventName:t,eventHandlerId:n,renderingComponentId:o};this.eventInfoStore.add(i),r.setHandler(t,i)}}getHandler(e){return this.eventInfoStore.get(e)}removeListener(e){const t=this.eventInfoStore.remove(e);if(t){const e=t.element,n=this.getEventHandlerInfosForElement(e,!1);n&&n.removeHandler(t.eventName)}}notifyAfterClick(e){this.afterClickCallbacks.push(e),this.eventInfoStore.addGlobalListener("click")}setStopPropagation(e,t,n){this.getEventHandlerInfosForElement(e,!0).stopPropagation(t,n)}setPreventDefault(e,t,n){this.getEventHandlerInfosForElement(e,!0).preventDefault(t,n)}onGlobalEvent(e){if(!(e.target instanceof Element))return;this.dispatchGlobalEventToAllElements(e.type,e);const t=(n=e.type,s.get(n));var n;t&&t.forEach((t=>this.dispatchGlobalEventToAllElements(t,e))),"click"===e.type&&this.afterClickCallbacks.forEach((t=>t(e)))}dispatchGlobalEventToAllElements(e,t){const n=t.composedPath();let o=n.shift(),i=null,s=!1;const a=Object.prototype.hasOwnProperty.call(x,e);let l=!1;for(;o;){const u=o,p=this.getEventHandlerInfosForElement(u,!1);if(p){const n=p.getHandler(e);if(n&&(h=u,d=t.type,!((h instanceof HTMLButtonElement||h instanceof HTMLInputElement||h instanceof HTMLTextAreaElement||h instanceof HTMLSelectElement)&&Object.prototype.hasOwnProperty.call(P,d)&&h.disabled))){if(!s){const n=c(e);i=(null==n?void 0:n.createEventArgs)?n.createEventArgs(t):{},s=!0}Object.prototype.hasOwnProperty.call(N,t.type)&&t.preventDefault(),R(this.browserRendererId,{eventHandlerId:n.eventHandlerId,eventName:e,eventFieldInfo:r.fromEvent(n.renderingComponentId,t)},i)}p.stopPropagation(e)&&(l=!0),p.preventDefault(e)&&t.preventDefault()}o=a||l?void 0:n.shift()}var h,d}getEventHandlerInfosForElement(e,t){return Object.prototype.hasOwnProperty.call(e,this.eventsCollectionKey)?e[this.eventsCollectionKey]:t?e[this.eventsCollectionKey]=new L:null}}M.nextEventDelegatorId=0;class U{constructor(e){this.globalListener=e,this.infosByEventHandlerId={},this.countByEventName={},a.push(this.handleEventNameAliasAdded.bind(this))}add(e){if(this.infosByEventHandlerId[e.eventHandlerId])throw new Error(`Event ${e.eventHandlerId} is already tracked`);this.infosByEventHandlerId[e.eventHandlerId]=e,this.addGlobalListener(e.eventName)}get(e){return this.infosByEventHandlerId[e]}addGlobalListener(e){if(e=l(e),Object.prototype.hasOwnProperty.call(this.countByEventName,e))this.countByEventName[e]++;else{this.countByEventName[e]=1;const t=Object.prototype.hasOwnProperty.call(x,e);document.addEventListener(e,this.globalListener,t)}}update(e,t){if(Object.prototype.hasOwnProperty.call(this.infosByEventHandlerId,t))throw new Error(`Event ${t} is already tracked`);const n=this.infosByEventHandlerId[e];delete this.infosByEventHandlerId[e],n.eventHandlerId=t,this.infosByEventHandlerId[t]=n}remove(e){const t=this.infosByEventHandlerId[e];if(t){delete this.infosByEventHandlerId[e];const n=l(t.eventName);0==--this.countByEventName[n]&&(delete this.countByEventName[n],document.removeEventListener(n,this.globalListener))}return t}handleEventNameAliasAdded(e,t){if(Object.prototype.hasOwnProperty.call(this.countByEventName,e)){const n=this.countByEventName[e];delete this.countByEventName[e],document.removeEventListener(e,this.globalListener),this.addGlobalListener(t),this.countByEventName[t]+=n-1}}}class L{constructor(){this.handlers={},this.preventDefaultFlags=null,this.stopPropagationFlags=null}getHandler(e){return Object.prototype.hasOwnProperty.call(this.handlers,e)?this.handlers[e]:null}setHandler(e,t){this.handlers[e]=t}removeHandler(e){delete this.handlers[e]}preventDefault(e,t){return void 0!==t&&(this.preventDefaultFlags=this.preventDefaultFlags||{},this.preventDefaultFlags[e]=t),!!this.preventDefaultFlags&&this.preventDefaultFlags[e]}stopPropagation(e,t){return void 0!==t&&(this.stopPropagationFlags=this.stopPropagationFlags||{},this.stopPropagationFlags[e]=t),!!this.stopPropagationFlags&&this.stopPropagationFlags[e]}}function B(e){const t={};return e.forEach((e=>{t[e]=!0})),t}const O=Symbol(),F=Symbol(),$=Symbol();function H(e){const{start:t,end:n}=e,o=t[$];if(o){if(o!==e)throw new Error("The start component comment was already associated with another component descriptor.");return t}const r=t.parentNode;if(!r)throw new Error(`Comment not connected to the DOM ${t.textContent}`);const i=W(r,!0),s=Y(i);t[F]=i,t[$]=e;const a=W(t);if(n){const e=Y(a),o=Array.prototype.indexOf.call(s,a)+1;let r=null;for(;r!==n;){const n=s.splice(o,1)[0];if(!n)throw new Error("Could not find the end component comment in the parent logical node list");n[F]=t,e.push(n),r=n}}return a}function W(e,t){if(O in e)return e;const n=[];if(e.childNodes.length>0){if(!t)throw new Error("New logical elements must start empty, or allowExistingContents must be true");e.childNodes.forEach((t=>{const o=W(t,!0);o[F]=e,n.push(o)}))}return e[O]=n,e}function j(e){const t=Y(e);for(;t.length;)J(e,0)}function z(e,t){const n=document.createComment("!");return q(n,e,t),n}function q(e,t,n){const o=e;let r=e;if(e instanceof Comment){const t=Y(o);if((null==t?void 0:t.length)>0){const t=oe(o),n=new Range;n.setStartBefore(e),n.setEndAfter(t),r=n.extractContents()}}const i=K(o);if(i){const e=Y(i),t=Array.prototype.indexOf.call(e,o);e.splice(t,1),delete o[F]}const s=Y(t);if(n0;)J(n,0)}const o=n;o.parentNode.removeChild(o)}function K(e){return e[F]||null}function V(e,t){return Y(e)[t]}function X(e){return e[$]||null}function G(e){const t=te(e);return"http://www.w3.org/2000/svg"===t.namespaceURI&&"foreignObject"!==t.tagName}function Y(e){return e[O]}function Q(e){const t=Y(K(e));return t[Array.prototype.indexOf.call(t,e)+1]||null}function Z(e){return O in e}function ee(e,t){const n=Y(e);t.forEach((e=>{e.moveRangeStart=n[e.fromSiblingIndex],e.moveRangeEnd=oe(e.moveRangeStart)})),t.forEach((t=>{const o=document.createComment("marker");t.moveToBeforeMarker=o;const r=n[t.toSiblingIndex+1];r?r.parentNode.insertBefore(o,r):ne(o,e)})),t.forEach((e=>{const t=e.moveToBeforeMarker,n=t.parentNode,o=e.moveRangeStart,r=e.moveRangeEnd;let i=o;for(;i;){const e=i.nextSibling;if(n.insertBefore(i,t),i===r)break;i=e}n.removeChild(t)})),t.forEach((e=>{n[e.toSiblingIndex]=e.moveRangeStart}))}function te(e){if(e instanceof Element||e instanceof DocumentFragment)return e;if(e instanceof Comment)return e.parentNode;throw new Error("Not a valid logical element")}function ne(e,t){if(t instanceof Element||t instanceof DocumentFragment)t.appendChild(e);else{if(!(t instanceof Comment))throw new Error(`Cannot append node because the parent is not a valid logical element. Parent: ${t}`);{const n=Q(t);n?n.parentNode.insertBefore(e,n):ne(e,K(t))}}}function oe(e){if(e instanceof Element||e instanceof DocumentFragment)return e;const t=Q(e);if(t)return t.previousSibling;{const t=K(e);return t instanceof Element||t instanceof DocumentFragment?t.lastChild:oe(t)}}function re(e){return`_bl_${e}`}const ie="__internalId";e.attachReviver(((e,t)=>t&&"object"==typeof t&&Object.prototype.hasOwnProperty.call(t,ie)&&"string"==typeof t[ie]?function(e){const t=`[${re(e)}]`;return document.querySelector(t)}(t[ie]):t));const se="_blazorDeferredValue";function ae(e){e instanceof HTMLOptionElement?de(e):se in e&&he(e,e[se])}function ce(e){return"select-multiple"===e.type}function le(e,t){e.value=t||""}function he(e,t){e instanceof HTMLSelectElement?ce(e)?function(e,t){t||(t=[]);for(let n=0;n{Oe()&&Ne(e,(e=>{Xe(e,!0,!1)}))}))}getRootComponentCount(){return this.rootComponentIds.size}attachRootComponentToLogicalElement(e,t,n){if(we(t))throw new Error(`Root component '${e}' could not be attached because its target element is already associated with a root component`);n&&(t=z(t,Y(t).length)),ye(t,!0),this.attachComponentToElement(e,t),this.rootComponentIds.add(e),fe.add(t)}updateComponent(e,t,n,o){var r;const i=this.childComponentLocations[t];if(!i)throw new Error(`No element is currently associated with component ${t}`);fe.delete(i)&&(j(i),i instanceof Comment&&(i.textContent="!"));const s=null===(r=te(i))||void 0===r?void 0:r.getRootNode(),a=s&&s.activeElement;this.applyEdits(e,t,i,0,n,o),a instanceof HTMLElement&&s&&s.activeElement!==a&&a.focus()}disposeComponent(e){if(this.rootComponentIds.delete(e)){const t=this.childComponentLocations[e];ye(t,!1),!0===t[me]?fe.add(t):j(t)}delete this.childComponentLocations[e]}disposeEventHandler(e){this.eventDelegator.removeListener(e)}attachComponentToElement(e,t){this.childComponentLocations[e]=t}applyEdits(e,n,o,r,i,s){let a,c=0,l=r;const h=e.arrayBuilderSegmentReader,d=e.editReader,u=e.frameReader,p=h.values(i),f=h.offset(i),g=f+h.count(i);for(let i=f;i{const t=document.createElement("script");t.textContent=e.textContent,e.getAttributeNames().forEach((n=>{t.setAttribute(n,e.getAttribute(n))})),e.parentNode.replaceChild(t,e)})),ue.content));var s;let a=0;for(;i.firstChild;)q(i.firstChild,r,a++)}applyAttribute(e,t,n,o){const r=e.frameReader,i=r.attributeName(o),s=r.attributeEventHandlerId(o);if(s){const e=Se(i);return void this.eventDelegator.setListener(n,e,s,t)}const a=r.attributeValue(o);this.setOrRemoveAttributeOrProperty(n,i,a)}insertFrameRange(e,t,n,o,r,i,s){const a=o;for(let a=i;a{et(t,e)})},enableNavigationInterception:function(e){if(void 0!==Ee&&Ee!==e)throw new Error("Only one interactive runtime may enable navigation interception at a time.");Ee=e},setHasLocationChangingListeners:function(e,t){const n=je.get(e);if(!n)throw new Error(`Renderer with ID '${e}' is not listening for navigation events`);n.hasLocationChangingEventListeners=t},endLocationChanging:function(e,t){qe&&e===We&&(qe(t),qe=null)},navigateTo:function(e,t){Ve(e,t,!0)},refresh:function(e){!e&&Me()?Ue(location.href,!0):location.reload()},getBaseURI:()=>document.baseURI,getLocationHref:()=>location.href,scrollToElement:Ke};function Ke(e){const t=document.getElementById(e);return!!t&&(t.scrollIntoView(),!0)}function Ve(e,t,n=!1){const o=Le(e),r=ot();if(t.forceLoad||!Pe(o)||"serverside-fullpageload"===r)!function(e,t){if(location.href===e){const t=e+"?";history.replaceState(null,"",t),location.replace(e)}else t?location.replace(e):location.href=e}(e,t.replaceHistoryEntry);else if("clientside-router"===r)Xe(o,!1,t.replaceHistoryEntry,t.historyEntryState,n);else{if("serverside-enhanced"!==r)throw new Error(`Unsupported page load mechanism: ${r}`);Ue(o,t.replaceHistoryEntry)}}async function Xe(e,t,n,o=void 0,r=!1){if(Qe(),function(e){const t=e.indexOf("#");return t>-1&&location.href.replace(location.hash,"")===e.substring(0,t)}(e))return void function(e,t,n){Ge(e,t,n);const o=e.indexOf("#");o!==e.length-1&&Ke(e.substring(o+1))}(e,n,o);const i=nt();(r||!(null==i?void 0:i.hasLocationChangingEventListeners)||await Ze(e,o,t,i))&&(Re=!0,Ge(e,n,o),await et(t))}function Ge(e,t,n=void 0){t?history.replaceState({userState:n,_index:He},"",e):(He++,history.pushState({userState:n,_index:He},"",e))}function Ye(e){return new Promise((t=>{const n=ze;ze=()=>{ze=n,t()},history.go(e)}))}function Qe(){qe&&(qe(!1),qe=null)}function Ze(e,t,n,o){return new Promise((r=>{Qe(),We++,qe=r,o.locationChanging(We,e,t,n)}))}async function et(e,t){const n=null!=t?t:location.href;await Promise.all(Array.from(je,(async([t,o])=>{var r;T(t)&&await o.locationChanged(n,null===(r=history.state)||void 0===r?void 0:r.userState,e)})))}async function tt(e){var t,n;ze&&"serverside-enhanced"!==ot()&&await ze(e),He=null!==(n=null===(t=history.state)||void 0===t?void 0:t._index)&&void 0!==n?n:0}function nt(){const e=Fe();if(void 0!==e)return je.get(e)}function ot(){return Oe()?"clientside-router":Me()?"serverside-enhanced":window.Blazor._internal.isBlazorWeb?"serverside-fullpageload":"clientside-router"}const rt={focus:function(e,t){if(e instanceof HTMLElement)e.focus({preventScroll:t});else{if(!(e instanceof SVGElement))throw new Error("Unable to focus an invalid element.");if(!e.hasAttribute("tabindex"))throw new Error("Unable to focus an SVG element that does not have a tabindex.");e.focus({preventScroll:t})}},focusBySelector:function(e,t){const n=document.querySelector(e);n&&(n.hasAttribute("tabindex")||(n.tabIndex=-1),n.focus({preventScroll:!0}))}},it={init:function(e,t,n,o=50){const r=at(t);(r||document.documentElement).style.overflowAnchor="none";const i=document.createRange();u(n.parentElement)&&(t.style.display="table-row",n.style.display="table-row");const s=new IntersectionObserver((function(o){o.forEach((o=>{var r;if(!o.isIntersecting)return;i.setStartAfter(t),i.setEndBefore(n);const s=i.getBoundingClientRect().height,a=null===(r=o.rootBounds)||void 0===r?void 0:r.height;o.target===t?e.invokeMethodAsync("OnSpacerBeforeVisible",o.intersectionRect.top-o.boundingClientRect.top,s,a):o.target===n&&n.offsetHeight>0&&e.invokeMethodAsync("OnSpacerAfterVisible",o.boundingClientRect.bottom-o.intersectionRect.bottom,s,a)}))}),{root:r,rootMargin:`${o}px`});s.observe(t),s.observe(n);const a=d(t),c=d(n),{observersByDotNetObjectId:l,id:h}=ct(e);function d(e){const t={attributes:!0},n=new MutationObserver(((n,o)=>{u(e.parentElement)&&(o.disconnect(),e.style.display="table-row",o.observe(e,t)),s.unobserve(e),s.observe(e)}));return n.observe(e,t),n}function u(e){return null!==e&&(e instanceof HTMLTableElement&&""===e.style.display||"table"===e.style.display||e instanceof HTMLTableSectionElement&&""===e.style.display||"table-row-group"===e.style.display)}l[h]={intersectionObserver:s,mutationObserverBefore:a,mutationObserverAfter:c}},dispose:function(e){const{observersByDotNetObjectId:t,id:n}=ct(e),o=t[n];o&&(o.intersectionObserver.disconnect(),o.mutationObserverBefore.disconnect(),o.mutationObserverAfter.disconnect(),e.dispose(),delete t[n])}},st=Symbol();function at(e){return e&&e!==document.body&&e!==document.documentElement?"visible"!==getComputedStyle(e).overflowY?e:at(e.parentElement):null}function ct(e){var t;const n=e._callDispatcher,o=e._id;return null!==(t=n[st])&&void 0!==t||(n[st]={}),{observersByDotNetObjectId:n[st],id:o}}const lt={getAndRemoveExistingTitle:function(){var e;const t=document.head?document.head.getElementsByTagName("title"):[];if(0===t.length)return null;let n=null;for(let o=t.length-1;o>=0;o--){const r=t[o],i=r.previousSibling;i instanceof Comment&&null!==K(i)||(null===n&&(n=r.textContent),null===(e=r.parentNode)||void 0===e||e.removeChild(r))}return n}},ht={init:function(e,t){t._blazorInputFileNextFileId=0,t.addEventListener("click",(function(){t.value=""})),t.addEventListener("change",(function(){t._blazorFilesById={};const n=Array.prototype.map.call(t.files,(function(e){const n={id:++t._blazorInputFileNextFileId,lastModified:new Date(e.lastModified).toISOString(),name:e.name,size:e.size,contentType:e.type,readPromise:void 0,arrayBuffer:void 0,blob:e};return t._blazorFilesById[n.id]=n,n}));e.invokeMethodAsync("NotifyChange",n)}))},toImageFile:async function(e,t,n,o,r){const i=dt(e,t),s=await new Promise((function(e){const t=new Image;t.onload=function(){URL.revokeObjectURL(t.src),e(t)},t.onerror=function(){t.onerror=null,URL.revokeObjectURL(t.src)},t.src=URL.createObjectURL(i.blob)})),a=await new Promise((function(e){var t;const i=Math.min(1,o/s.width),a=Math.min(1,r/s.height),c=Math.min(i,a),l=document.createElement("canvas");l.width=Math.round(s.width*c),l.height=Math.round(s.height*c),null===(t=l.getContext("2d"))||void 0===t||t.drawImage(s,0,0,l.width,l.height),l.toBlob(e,n)})),c={id:++e._blazorInputFileNextFileId,lastModified:i.lastModified,name:i.name,size:(null==a?void 0:a.size)||0,contentType:n,blob:a||i.blob};return e._blazorFilesById[c.id]=c,c},readFileData:async function(e,t){return dt(e,t).blob}};function dt(e,t){const n=e._blazorFilesById[t];if(!n)throw new Error(`There is no file with ID ${t}. The file list may have changed. See https://aka.ms/aspnet/blazor-input-file-multiple-selections.`);return n}const ut=new Set,pt={enableNavigationPrompt:function(e){0===ut.size&&window.addEventListener("beforeunload",ft),ut.add(e)},disableNavigationPrompt:function(e){ut.delete(e),0===ut.size&&window.removeEventListener("beforeunload",ft)}};function ft(e){e.preventDefault(),e.returnValue=!0}async function gt(e,t,n){return e instanceof Blob?await async function(e,t,n){const o=e.slice(t,t+n),r=await o.arrayBuffer();return new Uint8Array(r)}(e,t,n):function(e,t,n){return new Uint8Array(e.buffer,e.byteOffset+t,n)}(e,t,n)}const mt=new Map,vt={navigateTo:function(e,t,n=!1){Ve(e,t instanceof Object?t:{forceLoad:t,replaceHistoryEntry:n})},registerCustomEventType:function(e,t){if(!t)throw new Error("The options parameter is required.");if(i.has(e))throw new Error(`The event '${e}' is already registered.`);if(t.browserEventName){const n=s.get(t.browserEventName);n?n.push(e):s.set(t.browserEventName,[e]),a.forEach((n=>n(e,t.browserEventName)))}i.set(e,t)},rootComponents:y,runtime:{},_internal:{navigationManager:Je,domWrapper:rt,Virtualize:it,PageTitle:lt,InputFile:ht,NavigationLock:pt,getJSDataStreamChunk:gt,attachWebRendererInterop:k}};var yt;window.Blazor=vt,function(e){e[e.Trace=0]="Trace",e[e.Debug=1]="Debug",e[e.Information=2]="Information",e[e.Warning=3]="Warning",e[e.Error=4]="Error",e[e.Critical=5]="Critical",e[e.None=6]="None"}(yt||(yt={}));class wt{log(e,t){}}wt.instance=new wt;class bt{constructor(e){this.minLevel=e}log(e,t){if(e>=this.minLevel){const n=`[${(new Date).toISOString()}] ${yt[e]}: ${t}`;switch(e){case yt.Critical:case yt.Error:console.error(n);break;case yt.Warning:console.warn(n);break;case yt.Information:console.info(n);break;default:console.log(n)}}}}function _t(e,t){switch(t){case"webassembly":return Tt(e,"webassembly");case"server":return function(e){return Tt(e,"server").sort(((e,t)=>e.sequence-t.sequence))}(e);case"auto":return Tt(e,"auto")}}const St=/^\s*Blazor-Server-Component-State:(?[a-zA-Z0-9+/=]+)$/,Ct=/^\s*Blazor-WebAssembly-Component-State:(?[a-zA-Z0-9+/=]+)$/,Et=/^\s*Blazor-Web-Initializers:(?[a-zA-Z0-9+/=]+)$/;function It(e){return kt(e,St)}function kt(e,t,n="state"){var o;if(e.nodeType===Node.COMMENT_NODE){const r=e.textContent||"",i=t.exec(r),s=i&&i.groups&&i.groups[n];return s&&(null===(o=e.parentNode)||void 0===o||o.removeChild(e)),s}if(!e.hasChildNodes())return;const r=e.childNodes;for(let e=0;e.*)$/);function At(e,t){const n=e.currentElement;var o,r,i;if(n&&n.nodeType===Node.COMMENT_NODE&&n.textContent){const s=Rt.exec(n.textContent),a=s&&s.groups&&s.groups.descriptor;if(!a)return;!function(e){if(e.parentNode instanceof Document)throw new Error("Root components cannot be marked as interactive. The element must be rendered statically so that scripts are not evaluated multiple times.")}(n);try{const s=function(e){const t=JSON.parse(e),{type:n}=t;if("server"!==n&&"webassembly"!==n&&"auto"!==n)throw new Error(`Invalid component type '${n}'.`);return t}(a),c=function(e,t,n){const{prerenderId:o}=e;if(o){for(;n.next()&&n.currentElement;){const e=n.currentElement;if(e.nodeType!==Node.COMMENT_NODE)continue;if(!e.textContent)continue;const t=Rt.exec(e.textContent),r=t&&t[1];if(r)return Pt(r,o),e}throw new Error(`Could not find an end component comment for '${t}'.`)}}(s,n,e);if(t!==s.type)return;switch(s.type){case"webassembly":return r=n,i=c,Nt(o=s),{...o,uniqueId:Dt++,start:r,end:i};case"server":return function(e,t,n){return xt(e),{...e,uniqueId:Dt++,start:t,end:n}}(s,n,c);case"auto":return function(e,t,n){return xt(e),Nt(e),{...e,uniqueId:Dt++,start:t,end:n}}(s,n,c)}}catch(e){throw new Error(`Found malformed component comment at ${n.textContent}`)}}}let Dt=0;function xt(e){const{descriptor:t,sequence:n}=e;if(!t)throw new Error("descriptor must be defined when using a descriptor.");if(void 0===n)throw new Error("sequence must be defined when using a descriptor.");if(!Number.isInteger(n))throw new Error(`Error parsing the sequence '${n}' for component '${JSON.stringify(e)}'`)}function Nt(e){const{assembly:t,typeName:n}=e;if(!t)throw new Error("assembly must be defined when using a descriptor.");if(!n)throw new Error("typeName must be defined when using a descriptor.");e.parameterDefinitions=e.parameterDefinitions&&atob(e.parameterDefinitions),e.parameterValues=e.parameterValues&&atob(e.parameterValues)}function Pt(e,t){const n=JSON.parse(e);if(1!==Object.keys(n).length)throw new Error(`Invalid end of component comment: '${e}'`);const o=n.prerenderId;if(!o)throw new Error(`End of component comment must have a value for the prerendered property: '${e}'`);if(o!==t)throw new Error(`End of component comment prerendered property must match the start comment prerender id: '${t}', '${o}'`)}class Mt{constructor(e){this.childNodes=e,this.currentIndex=-1,this.length=e.length}next(){return this.currentIndex++,this.currentIndex{n+=`0x${e<16?"0":""}${e.toString(16)} `})),n.substr(0,n.length-1)}(e)}'`)):"string"==typeof e&&(n=`String data of length ${e.length}`,t&&(n+=`. Content: '${e}'`)),n}function zt(e){return e&&"undefined"!=typeof ArrayBuffer&&(e instanceof ArrayBuffer||e.constructor&&"ArrayBuffer"===e.constructor.name)}async function qt(e,t,n,o,r,i){const s={},[a,c]=Vt();s[a]=c,e.log(Ot.Trace,`(${t} transport) sending data. ${jt(r,i.logMessageContent)}.`);const l=zt(r)?"arraybuffer":"text",h=await n.post(o,{content:r,headers:{...s,...i.headers},responseType:l,timeout:i.timeout,withCredentials:i.withCredentials});e.log(Ot.Trace,`(${t} transport) request complete. Response status: ${h.statusCode}.`)}class Jt{constructor(e,t){this._subject=e,this._observer=t}dispose(){const e=this._subject.observers.indexOf(this._observer);e>-1&&this._subject.observers.splice(e,1),0===this._subject.observers.length&&this._subject.cancelCallback&&this._subject.cancelCallback().catch((e=>{}))}}class Kt{constructor(e){this._minLevel=e,this.out=console}log(e,t){if(e>=this._minLevel){const n=`[${(new Date).toISOString()}] ${Ot[e]}: ${t}`;switch(e){case Ot.Critical:case Ot.Error:this.out.error(n);break;case Ot.Warning:this.out.warn(n);break;case Ot.Information:this.out.info(n);break;default:this.out.log(n)}}}}function Vt(){let e="X-SignalR-User-Agent";return Wt.isNode&&(e="User-Agent"),[e,Xt($t,Gt(),Wt.isNode?"NodeJS":"Browser",Yt())]}function Xt(e,t,n,o){let r="Microsoft SignalR/";const i=e.split(".");return r+=`${i[0]}.${i[1]}`,r+=` (${e}; `,r+=t&&""!==t?`${t}; `:"Unknown OS; ",r+=`${n}`,r+=o?`; ${o}`:"; Unknown Runtime Version",r+=")",r}function Gt(){if(!Wt.isNode)return"";switch(process.platform){case"win32":return"Windows NT";case"darwin":return"macOS";case"linux":return"Linux";default:return process.platform}}function Yt(){if(Wt.isNode)return process.versions.node}function Qt(e){return e.stack?e.stack:e.message?e.message:`${e}`}class Zt{writeHandshakeRequest(e){return Bt.write(JSON.stringify(e))}parseHandshakeResponse(e){let t,n;if(zt(e)){const o=new Uint8Array(e),r=o.indexOf(Bt.RecordSeparatorCode);if(-1===r)throw new Error("Message is incomplete.");const i=r+1;t=String.fromCharCode.apply(null,Array.prototype.slice.call(o.slice(0,i))),n=o.byteLength>i?o.slice(i).buffer:null}else{const o=e,r=o.indexOf(Bt.RecordSeparator);if(-1===r)throw new Error("Message is incomplete.");const i=r+1;t=o.substring(0,i),n=o.length>i?o.substring(i):null}const o=Bt.parse(t),r=JSON.parse(o[0]);if(r.type)throw new Error("Expected a handshake response from the server.");return[n,r]}}class en extends Error{constructor(e,t){const n=new.target.prototype;super(`${e}: Status code '${t}'`),this.statusCode=t,this.__proto__=n}}class tn extends Error{constructor(e="A timeout occurred."){const t=new.target.prototype;super(e),this.__proto__=t}}class nn extends Error{constructor(e="An abort occurred."){const t=new.target.prototype;super(e),this.__proto__=t}}class on extends Error{constructor(e,t){const n=new.target.prototype;super(e),this.transport=t,this.errorType="UnsupportedTransportError",this.__proto__=n}}class rn extends Error{constructor(e,t){const n=new.target.prototype;super(e),this.transport=t,this.errorType="DisabledTransportError",this.__proto__=n}}class sn extends Error{constructor(e,t){const n=new.target.prototype;super(e),this.transport=t,this.errorType="FailedToStartTransportError",this.__proto__=n}}class an extends Error{constructor(e){const t=new.target.prototype;super(e),this.errorType="FailedToNegotiateWithServerError",this.__proto__=t}}class cn extends Error{constructor(e,t){const n=new.target.prototype;super(e),this.innerErrors=t,this.__proto__=n}}var ln,hn;!function(e){e[e.Invocation=1]="Invocation",e[e.StreamItem=2]="StreamItem",e[e.Completion=3]="Completion",e[e.StreamInvocation=4]="StreamInvocation",e[e.CancelInvocation=5]="CancelInvocation",e[e.Ping=6]="Ping",e[e.Close=7]="Close",e[e.Ack=8]="Ack",e[e.Sequence=9]="Sequence"}(ln||(ln={}));class dn{constructor(){this.observers=[]}next(e){for(const t of this.observers)t.next(e)}error(e){for(const t of this.observers)t.error&&t.error(e)}complete(){for(const e of this.observers)e.complete&&e.complete()}subscribe(e){return this.observers.push(e),new Jt(this,e)}}class un{constructor(e,t,n){this._bufferSize=1e5,this._messages=[],this._totalMessageCount=0,this._waitForSequenceMessage=!1,this._nextReceivingSequenceId=1,this._latestReceivedSequenceId=0,this._bufferedByteCount=0,this._reconnectInProgress=!1,this._protocol=e,this._connection=t,this._bufferSize=n}async _send(e){const t=this._protocol.writeMessage(e);let n=Promise.resolve();if(this._isInvocationMessage(e)){this._totalMessageCount++;let e=()=>{},o=()=>{};zt(t)?this._bufferedByteCount+=t.byteLength:this._bufferedByteCount+=t.length,this._bufferedByteCount>=this._bufferSize&&(n=new Promise(((t,n)=>{e=t,o=n}))),this._messages.push(new pn(t,this._totalMessageCount,e,o))}try{this._reconnectInProgress||await this._connection.send(t)}catch{this._disconnected()}await n}_ack(e){let t=-1;for(let n=0;nthis._nextReceivingSequenceId?this._connection.stop(new Error("Sequence ID greater than amount of messages we've received.")):this._nextReceivingSequenceId=e.sequenceId}_disconnected(){this._reconnectInProgress=!0,this._waitForSequenceMessage=!0}async _resend(){const e=0!==this._messages.length?this._messages[0]._id:this._totalMessageCount+1;await this._connection.send(this._protocol.writeMessage({type:ln.Sequence,sequenceId:e}));const t=this._messages;for(const e of t)await this._connection.send(e._message);this._reconnectInProgress=!1}_dispose(e){null!=e||(e=new Error("Unable to reconnect to server."));for(const t of this._messages)t._rejector(e)}_isInvocationMessage(e){switch(e.type){case ln.Invocation:case ln.StreamItem:case ln.Completion:case ln.StreamInvocation:case ln.CancelInvocation:return!0;case ln.Close:case ln.Sequence:case ln.Ping:case ln.Ack:return!1}}_ackTimer(){void 0===this._ackTimerHandle&&(this._ackTimerHandle=setTimeout((async()=>{try{this._reconnectInProgress||await this._connection.send(this._protocol.writeMessage({type:ln.Ack,sequenceId:this._latestReceivedSequenceId}))}catch{}clearTimeout(this._ackTimerHandle),this._ackTimerHandle=void 0}),1e3))}}class pn{constructor(e,t,n,o){this._message=e,this._id=t,this._resolver=n,this._rejector=o}}!function(e){e.Disconnected="Disconnected",e.Connecting="Connecting",e.Connected="Connected",e.Disconnecting="Disconnecting",e.Reconnecting="Reconnecting"}(hn||(hn={}));class fn{static create(e,t,n,o,r,i,s){return new fn(e,t,n,o,r,i,s)}constructor(e,t,n,o,r,i,s){this._nextKeepAlive=0,this._freezeEventListener=()=>{this._logger.log(Ot.Warning,"The page is being frozen, this will likely lead to the connection being closed and messages being lost. For more information see the docs at https://learn.microsoft.com/aspnet/core/signalr/javascript-client#bsleep")},Ht.isRequired(e,"connection"),Ht.isRequired(t,"logger"),Ht.isRequired(n,"protocol"),this.serverTimeoutInMilliseconds=null!=r?r:3e4,this.keepAliveIntervalInMilliseconds=null!=i?i:15e3,this._statefulReconnectBufferSize=null!=s?s:1e5,this._logger=t,this._protocol=n,this.connection=e,this._reconnectPolicy=o,this._handshakeProtocol=new Zt,this.connection.onreceive=e=>this._processIncomingData(e),this.connection.onclose=e=>this._connectionClosed(e),this._callbacks={},this._methods={},this._closedCallbacks=[],this._reconnectingCallbacks=[],this._reconnectedCallbacks=[],this._invocationId=0,this._receivedHandshakeResponse=!1,this._connectionState=hn.Disconnected,this._connectionStarted=!1,this._cachedPingMessage=this._protocol.writeMessage({type:ln.Ping})}get state(){return this._connectionState}get connectionId(){return this.connection&&this.connection.connectionId||null}get baseUrl(){return this.connection.baseUrl||""}set baseUrl(e){if(this._connectionState!==hn.Disconnected&&this._connectionState!==hn.Reconnecting)throw new Error("The HubConnection must be in the Disconnected or Reconnecting state to change the url.");if(!e)throw new Error("The HubConnection url must be a valid url.");this.connection.baseUrl=e}start(){return this._startPromise=this._startWithStateTransitions(),this._startPromise}async _startWithStateTransitions(){if(this._connectionState!==hn.Disconnected)return Promise.reject(new Error("Cannot start a HubConnection that is not in the 'Disconnected' state."));this._connectionState=hn.Connecting,this._logger.log(Ot.Debug,"Starting HubConnection.");try{await this._startInternal(),Wt.isBrowser&&window.document.addEventListener("freeze",this._freezeEventListener),this._connectionState=hn.Connected,this._connectionStarted=!0,this._logger.log(Ot.Debug,"HubConnection connected successfully.")}catch(e){return this._connectionState=hn.Disconnected,this._logger.log(Ot.Debug,`HubConnection failed to start successfully because of error '${e}'.`),Promise.reject(e)}}async _startInternal(){this._stopDuringStartError=void 0,this._receivedHandshakeResponse=!1;const e=new Promise(((e,t)=>{this._handshakeResolver=e,this._handshakeRejecter=t}));await this.connection.start(this._protocol.transferFormat);try{let t=this._protocol.version;this.connection.features.reconnect||(t=1);const n={protocol:this._protocol.name,version:t};if(this._logger.log(Ot.Debug,"Sending handshake request."),await this._sendMessage(this._handshakeProtocol.writeHandshakeRequest(n)),this._logger.log(Ot.Information,`Using HubProtocol '${this._protocol.name}'.`),this._cleanupTimeout(),this._resetTimeoutPeriod(),this._resetKeepAliveInterval(),await e,this._stopDuringStartError)throw this._stopDuringStartError;!!this.connection.features.reconnect&&(this._messageBuffer=new un(this._protocol,this.connection,this._statefulReconnectBufferSize),this.connection.features.disconnected=this._messageBuffer._disconnected.bind(this._messageBuffer),this.connection.features.resend=()=>{if(this._messageBuffer)return this._messageBuffer._resend()}),this.connection.features.inherentKeepAlive||await this._sendMessage(this._cachedPingMessage)}catch(e){throw this._logger.log(Ot.Debug,`Hub handshake failed with error '${e}' during start(). Stopping HubConnection.`),this._cleanupTimeout(),this._cleanupPingTimer(),await this.connection.stop(e),e}}async stop(){const e=this._startPromise;this.connection.features.reconnect=!1,this._stopPromise=this._stopInternal(),await this._stopPromise;try{await e}catch(e){}}_stopInternal(e){if(this._connectionState===hn.Disconnected)return this._logger.log(Ot.Debug,`Call to HubConnection.stop(${e}) ignored because it is already in the disconnected state.`),Promise.resolve();if(this._connectionState===hn.Disconnecting)return this._logger.log(Ot.Debug,`Call to HttpConnection.stop(${e}) ignored because the connection is already in the disconnecting state.`),this._stopPromise;const t=this._connectionState;return this._connectionState=hn.Disconnecting,this._logger.log(Ot.Debug,"Stopping HubConnection."),this._reconnectDelayHandle?(this._logger.log(Ot.Debug,"Connection stopped during reconnect delay. Done reconnecting."),clearTimeout(this._reconnectDelayHandle),this._reconnectDelayHandle=void 0,this._completeClose(),Promise.resolve()):(t===hn.Connected&&this._sendCloseMessage(),this._cleanupTimeout(),this._cleanupPingTimer(),this._stopDuringStartError=e||new nn("The connection was stopped before the hub handshake could complete."),this.connection.stop(e))}async _sendCloseMessage(){try{await this._sendWithProtocol(this._createCloseMessage())}catch{}}stream(e,...t){const[n,o]=this._replaceStreamingParams(t),r=this._createStreamInvocation(e,t,o);let i;const s=new dn;return s.cancelCallback=()=>{const e=this._createCancelInvocation(r.invocationId);return delete this._callbacks[r.invocationId],i.then((()=>this._sendWithProtocol(e)))},this._callbacks[r.invocationId]=(e,t)=>{t?s.error(t):e&&(e.type===ln.Completion?e.error?s.error(new Error(e.error)):s.complete():s.next(e.item))},i=this._sendWithProtocol(r).catch((e=>{s.error(e),delete this._callbacks[r.invocationId]})),this._launchStreams(n,i),s}_sendMessage(e){return this._resetKeepAliveInterval(),this.connection.send(e)}_sendWithProtocol(e){return this._messageBuffer?this._messageBuffer._send(e):this._sendMessage(this._protocol.writeMessage(e))}send(e,...t){const[n,o]=this._replaceStreamingParams(t),r=this._sendWithProtocol(this._createInvocation(e,t,!0,o));return this._launchStreams(n,r),r}invoke(e,...t){const[n,o]=this._replaceStreamingParams(t),r=this._createInvocation(e,t,!1,o);return new Promise(((e,t)=>{this._callbacks[r.invocationId]=(n,o)=>{o?t(o):n&&(n.type===ln.Completion?n.error?t(new Error(n.error)):e(n.result):t(new Error(`Unexpected message type: ${n.type}`)))};const o=this._sendWithProtocol(r).catch((e=>{t(e),delete this._callbacks[r.invocationId]}));this._launchStreams(n,o)}))}on(e,t){e&&t&&(e=e.toLowerCase(),this._methods[e]||(this._methods[e]=[]),-1===this._methods[e].indexOf(t)&&this._methods[e].push(t))}off(e,t){if(!e)return;e=e.toLowerCase();const n=this._methods[e];if(n)if(t){const o=n.indexOf(t);-1!==o&&(n.splice(o,1),0===n.length&&delete this._methods[e])}else delete this._methods[e]}onclose(e){e&&this._closedCallbacks.push(e)}onreconnecting(e){e&&this._reconnectingCallbacks.push(e)}onreconnected(e){e&&this._reconnectedCallbacks.push(e)}_processIncomingData(e){if(this._cleanupTimeout(),this._receivedHandshakeResponse||(e=this._processHandshakeResponse(e),this._receivedHandshakeResponse=!0),e){const t=this._protocol.parseMessages(e,this._logger);for(const e of t)if(!this._messageBuffer||this._messageBuffer._shouldProcessMessage(e))switch(e.type){case ln.Invocation:this._invokeClientMethod(e);break;case ln.StreamItem:case ln.Completion:{const t=this._callbacks[e.invocationId];if(t){e.type===ln.Completion&&delete this._callbacks[e.invocationId];try{t(e)}catch(e){this._logger.log(Ot.Error,`Stream callback threw error: ${Qt(e)}`)}}break}case ln.Ping:break;case ln.Close:{this._logger.log(Ot.Information,"Close message received from server.");const t=e.error?new Error("Server returned an error on close: "+e.error):void 0;!0===e.allowReconnect?this.connection.stop(t):this._stopPromise=this._stopInternal(t);break}case ln.Ack:this._messageBuffer&&this._messageBuffer._ack(e);break;case ln.Sequence:this._messageBuffer&&this._messageBuffer._resetSequence(e);break;default:this._logger.log(Ot.Warning,`Invalid message type: ${e.type}.`)}}this._resetTimeoutPeriod()}_processHandshakeResponse(e){let t,n;try{[n,t]=this._handshakeProtocol.parseHandshakeResponse(e)}catch(e){const t="Error parsing handshake response: "+e;this._logger.log(Ot.Error,t);const n=new Error(t);throw this._handshakeRejecter(n),n}if(t.error){const e="Server returned handshake error: "+t.error;this._logger.log(Ot.Error,e);const n=new Error(e);throw this._handshakeRejecter(n),n}return this._logger.log(Ot.Debug,"Server handshake complete."),this._handshakeResolver(),n}_resetKeepAliveInterval(){this.connection.features.inherentKeepAlive||(this._nextKeepAlive=(new Date).getTime()+this.keepAliveIntervalInMilliseconds,this._cleanupPingTimer())}_resetTimeoutPeriod(){if(!(this.connection.features&&this.connection.features.inherentKeepAlive||(this._timeoutHandle=setTimeout((()=>this.serverTimeout()),this.serverTimeoutInMilliseconds),void 0!==this._pingServerHandle))){let e=this._nextKeepAlive-(new Date).getTime();e<0&&(e=0),this._pingServerHandle=setTimeout((async()=>{if(this._connectionState===hn.Connected)try{await this._sendMessage(this._cachedPingMessage)}catch{this._cleanupPingTimer()}}),e)}}serverTimeout(){this.connection.stop(new Error("Server timeout elapsed without receiving a message from the server."))}async _invokeClientMethod(e){const t=e.target.toLowerCase(),n=this._methods[t];if(!n)return this._logger.log(Ot.Warning,`No client method with the name '${t}' found.`),void(e.invocationId&&(this._logger.log(Ot.Warning,`No result given for '${t}' method and invocation ID '${e.invocationId}'.`),await this._sendWithProtocol(this._createCompletionMessage(e.invocationId,"Client didn't provide a result.",null))));const o=n.slice(),r=!!e.invocationId;let i,s,a;for(const n of o)try{const o=i;i=await n.apply(this,e.arguments),r&&i&&o&&(this._logger.log(Ot.Error,`Multiple results provided for '${t}'. Sending error to server.`),a=this._createCompletionMessage(e.invocationId,"Client provided multiple results.",null)),s=void 0}catch(e){s=e,this._logger.log(Ot.Error,`A callback for the method '${t}' threw error '${e}'.`)}a?await this._sendWithProtocol(a):r?(s?a=this._createCompletionMessage(e.invocationId,`${s}`,null):void 0!==i?a=this._createCompletionMessage(e.invocationId,null,i):(this._logger.log(Ot.Warning,`No result given for '${t}' method and invocation ID '${e.invocationId}'.`),a=this._createCompletionMessage(e.invocationId,"Client didn't provide a result.",null)),await this._sendWithProtocol(a)):i&&this._logger.log(Ot.Error,`Result given for '${t}' method but server is not expecting a result.`)}_connectionClosed(e){this._logger.log(Ot.Debug,`HubConnection.connectionClosed(${e}) called while in state ${this._connectionState}.`),this._stopDuringStartError=this._stopDuringStartError||e||new nn("The underlying connection was closed before the hub handshake could complete."),this._handshakeResolver&&this._handshakeResolver(),this._cancelCallbacksWithError(e||new Error("Invocation canceled due to the underlying connection being closed.")),this._cleanupTimeout(),this._cleanupPingTimer(),this._connectionState===hn.Disconnecting?this._completeClose(e):this._connectionState===hn.Connected&&this._reconnectPolicy?this._reconnect(e):this._connectionState===hn.Connected&&this._completeClose(e)}_completeClose(e){if(this._connectionStarted){this._connectionState=hn.Disconnected,this._connectionStarted=!1,this._messageBuffer&&(this._messageBuffer._dispose(null!=e?e:new Error("Connection closed.")),this._messageBuffer=void 0),Wt.isBrowser&&window.document.removeEventListener("freeze",this._freezeEventListener);try{this._closedCallbacks.forEach((t=>t.apply(this,[e])))}catch(t){this._logger.log(Ot.Error,`An onclose callback called with error '${e}' threw error '${t}'.`)}}}async _reconnect(e){const t=Date.now();let n=0,o=void 0!==e?e:new Error("Attempting to reconnect due to a unknown error."),r=this._getNextRetryDelay(n++,0,o);if(null===r)return this._logger.log(Ot.Debug,"Connection not reconnecting because the IRetryPolicy returned null on the first reconnect attempt."),void this._completeClose(e);if(this._connectionState=hn.Reconnecting,e?this._logger.log(Ot.Information,`Connection reconnecting because of error '${e}'.`):this._logger.log(Ot.Information,"Connection reconnecting."),0!==this._reconnectingCallbacks.length){try{this._reconnectingCallbacks.forEach((t=>t.apply(this,[e])))}catch(t){this._logger.log(Ot.Error,`An onreconnecting callback called with error '${e}' threw error '${t}'.`)}if(this._connectionState!==hn.Reconnecting)return void this._logger.log(Ot.Debug,"Connection left the reconnecting state in onreconnecting callback. Done reconnecting.")}for(;null!==r;){if(this._logger.log(Ot.Information,`Reconnect attempt number ${n} will start in ${r} ms.`),await new Promise((e=>{this._reconnectDelayHandle=setTimeout(e,r)})),this._reconnectDelayHandle=void 0,this._connectionState!==hn.Reconnecting)return void this._logger.log(Ot.Debug,"Connection left the reconnecting state during reconnect delay. Done reconnecting.");try{if(await this._startInternal(),this._connectionState=hn.Connected,this._logger.log(Ot.Information,"HubConnection reconnected successfully."),0!==this._reconnectedCallbacks.length)try{this._reconnectedCallbacks.forEach((e=>e.apply(this,[this.connection.connectionId])))}catch(e){this._logger.log(Ot.Error,`An onreconnected callback called with connectionId '${this.connection.connectionId}; threw error '${e}'.`)}return}catch(e){if(this._logger.log(Ot.Information,`Reconnect attempt failed because of error '${e}'.`),this._connectionState!==hn.Reconnecting)return this._logger.log(Ot.Debug,`Connection moved to the '${this._connectionState}' from the reconnecting state during reconnect attempt. Done reconnecting.`),void(this._connectionState===hn.Disconnecting&&this._completeClose());o=e instanceof Error?e:new Error(e.toString()),r=this._getNextRetryDelay(n++,Date.now()-t,o)}}this._logger.log(Ot.Information,`Reconnect retries have been exhausted after ${Date.now()-t} ms and ${n} failed attempts. Connection disconnecting.`),this._completeClose()}_getNextRetryDelay(e,t,n){try{return this._reconnectPolicy.nextRetryDelayInMilliseconds({elapsedMilliseconds:t,previousRetryCount:e,retryReason:n})}catch(n){return this._logger.log(Ot.Error,`IRetryPolicy.nextRetryDelayInMilliseconds(${e}, ${t}) threw error '${n}'.`),null}}_cancelCallbacksWithError(e){const t=this._callbacks;this._callbacks={},Object.keys(t).forEach((n=>{const o=t[n];try{o(null,e)}catch(t){this._logger.log(Ot.Error,`Stream 'error' callback called with '${e}' threw error: ${Qt(t)}`)}}))}_cleanupPingTimer(){this._pingServerHandle&&(clearTimeout(this._pingServerHandle),this._pingServerHandle=void 0)}_cleanupTimeout(){this._timeoutHandle&&clearTimeout(this._timeoutHandle)}_createInvocation(e,t,n,o){if(n)return 0!==o.length?{arguments:t,streamIds:o,target:e,type:ln.Invocation}:{arguments:t,target:e,type:ln.Invocation};{const n=this._invocationId;return this._invocationId++,0!==o.length?{arguments:t,invocationId:n.toString(),streamIds:o,target:e,type:ln.Invocation}:{arguments:t,invocationId:n.toString(),target:e,type:ln.Invocation}}}_launchStreams(e,t){if(0!==e.length){t||(t=Promise.resolve());for(const n in e)e[n].subscribe({complete:()=>{t=t.then((()=>this._sendWithProtocol(this._createCompletionMessage(n))))},error:e=>{let o;o=e instanceof Error?e.message:e&&e.toString?e.toString():"Unknown error",t=t.then((()=>this._sendWithProtocol(this._createCompletionMessage(n,o))))},next:e=>{t=t.then((()=>this._sendWithProtocol(this._createStreamItemMessage(n,e))))}})}}_replaceStreamingParams(e){const t=[],n=[];for(let o=0;o0)&&(t=!1,this._accessToken=await this._accessTokenFactory()),this._setAuthorizationHeader(e);const n=await this._innerClient.send(e);return t&&401===n.statusCode&&this._accessTokenFactory?(this._accessToken=await this._accessTokenFactory(),this._setAuthorizationHeader(e),await this._innerClient.send(e)):n}_setAuthorizationHeader(e){e.headers||(e.headers={}),this._accessToken?e.headers[vn.Authorization]=`Bearer ${this._accessToken}`:this._accessTokenFactory&&e.headers[vn.Authorization]&&delete e.headers[vn.Authorization]}getCookieString(e){return this._innerClient.getCookieString(e)}}class _n extends wn{constructor(e){super(),this._logger=e;const t={_fetchType:void 0,_jar:void 0};var o;o=t,"undefined"==typeof fetch&&(o._jar=new(n(628).CookieJar),"undefined"==typeof fetch?o._fetchType=n(200):o._fetchType=fetch,o._fetchType=n(203)(o._fetchType,o._jar),1)?(this._fetchType=t._fetchType,this._jar=t._jar):this._fetchType=fetch.bind(function(){if("undefined"!=typeof globalThis)return globalThis;if("undefined"!=typeof self)return self;if("undefined"!=typeof window)return window;if(void 0!==n.g)return n.g;throw new Error("could not find global")}()),this._abortControllerType=AbortController;const r={_abortControllerType:this._abortControllerType};(function(e){return"undefined"==typeof AbortController&&(e._abortControllerType=n(778),!0)})(r)&&(this._abortControllerType=r._abortControllerType)}async send(e){if(e.abortSignal&&e.abortSignal.aborted)throw new nn;if(!e.method)throw new Error("No method defined.");if(!e.url)throw new Error("No url defined.");const t=new this._abortControllerType;let n;e.abortSignal&&(e.abortSignal.onabort=()=>{t.abort(),n=new nn});let o,r=null;if(e.timeout){const o=e.timeout;r=setTimeout((()=>{t.abort(),this._logger.log(Ot.Warning,"Timeout from HTTP request."),n=new tn}),o)}""===e.content&&(e.content=void 0),e.content&&(e.headers=e.headers||{},zt(e.content)?e.headers["Content-Type"]="application/octet-stream":e.headers["Content-Type"]="text/plain;charset=UTF-8");try{o=await this._fetchType(e.url,{body:e.content,cache:"no-cache",credentials:!0===e.withCredentials?"include":"same-origin",headers:{"X-Requested-With":"XMLHttpRequest",...e.headers},method:e.method,mode:"cors",redirect:"follow",signal:t.signal})}catch(e){if(n)throw n;throw this._logger.log(Ot.Warning,`Error from HTTP request. ${e}.`),e}finally{r&&clearTimeout(r),e.abortSignal&&(e.abortSignal.onabort=null)}if(!o.ok){const e=await Sn(o,"text");throw new en(e||o.statusText,o.status)}const i=Sn(o,e.responseType),s=await i;return new yn(o.status,o.statusText,s)}getCookieString(e){return""}}function Sn(e,t){let n;switch(t){case"arraybuffer":n=e.arrayBuffer();break;case"text":default:n=e.text();break;case"blob":case"document":case"json":throw new Error(`${t} is not supported.`)}return n}class Cn extends wn{constructor(e){super(),this._logger=e}send(e){return e.abortSignal&&e.abortSignal.aborted?Promise.reject(new nn):e.method?e.url?new Promise(((t,n)=>{const o=new XMLHttpRequest;o.open(e.method,e.url,!0),o.withCredentials=void 0===e.withCredentials||e.withCredentials,o.setRequestHeader("X-Requested-With","XMLHttpRequest"),""===e.content&&(e.content=void 0),e.content&&(zt(e.content)?o.setRequestHeader("Content-Type","application/octet-stream"):o.setRequestHeader("Content-Type","text/plain;charset=UTF-8"));const r=e.headers;r&&Object.keys(r).forEach((e=>{o.setRequestHeader(e,r[e])})),e.responseType&&(o.responseType=e.responseType),e.abortSignal&&(e.abortSignal.onabort=()=>{o.abort(),n(new nn)}),e.timeout&&(o.timeout=e.timeout),o.onload=()=>{e.abortSignal&&(e.abortSignal.onabort=null),o.status>=200&&o.status<300?t(new yn(o.status,o.statusText,o.response||o.responseText)):n(new en(o.response||o.responseText||o.statusText,o.status))},o.onerror=()=>{this._logger.log(Ot.Warning,`Error from HTTP request. ${o.status}: ${o.statusText}.`),n(new en(o.statusText,o.status))},o.ontimeout=()=>{this._logger.log(Ot.Warning,"Timeout from HTTP request."),n(new tn)},o.send(e.content)})):Promise.reject(new Error("No url defined.")):Promise.reject(new Error("No method defined."))}}class En extends wn{constructor(e){if(super(),"undefined"!=typeof fetch)this._httpClient=new _n(e);else{if("undefined"==typeof XMLHttpRequest)throw new Error("No usable HttpClient found.");this._httpClient=new Cn(e)}}send(e){return e.abortSignal&&e.abortSignal.aborted?Promise.reject(new nn):e.method?e.url?this._httpClient.send(e):Promise.reject(new Error("No url defined.")):Promise.reject(new Error("No method defined."))}getCookieString(e){return this._httpClient.getCookieString(e)}}var In,kn;!function(e){e[e.None=0]="None",e[e.WebSockets=1]="WebSockets",e[e.ServerSentEvents=2]="ServerSentEvents",e[e.LongPolling=4]="LongPolling"}(In||(In={})),function(e){e[e.Text=1]="Text",e[e.Binary=2]="Binary"}(kn||(kn={}));class Tn{constructor(){this._isAborted=!1,this.onabort=null}abort(){this._isAborted||(this._isAborted=!0,this.onabort&&this.onabort())}get signal(){return this}get aborted(){return this._isAborted}}class Rn{get pollAborted(){return this._pollAbort.aborted}constructor(e,t,n){this._httpClient=e,this._logger=t,this._pollAbort=new Tn,this._options=n,this._running=!1,this.onreceive=null,this.onclose=null}async connect(e,t){if(Ht.isRequired(e,"url"),Ht.isRequired(t,"transferFormat"),Ht.isIn(t,kn,"transferFormat"),this._url=e,this._logger.log(Ot.Trace,"(LongPolling transport) Connecting."),t===kn.Binary&&"undefined"!=typeof XMLHttpRequest&&"string"!=typeof(new XMLHttpRequest).responseType)throw new Error("Binary protocols over XmlHttpRequest not implementing advanced features are not supported.");const[n,o]=Vt(),r={[n]:o,...this._options.headers},i={abortSignal:this._pollAbort.signal,headers:r,timeout:1e5,withCredentials:this._options.withCredentials};t===kn.Binary&&(i.responseType="arraybuffer");const s=`${e}&_=${Date.now()}`;this._logger.log(Ot.Trace,`(LongPolling transport) polling: ${s}.`);const a=await this._httpClient.get(s,i);200!==a.statusCode?(this._logger.log(Ot.Error,`(LongPolling transport) Unexpected response code: ${a.statusCode}.`),this._closeError=new en(a.statusText||"",a.statusCode),this._running=!1):this._running=!0,this._receiving=this._poll(this._url,i)}async _poll(e,t){try{for(;this._running;)try{const n=`${e}&_=${Date.now()}`;this._logger.log(Ot.Trace,`(LongPolling transport) polling: ${n}.`);const o=await this._httpClient.get(n,t);204===o.statusCode?(this._logger.log(Ot.Information,"(LongPolling transport) Poll terminated by server."),this._running=!1):200!==o.statusCode?(this._logger.log(Ot.Error,`(LongPolling transport) Unexpected response code: ${o.statusCode}.`),this._closeError=new en(o.statusText||"",o.statusCode),this._running=!1):o.content?(this._logger.log(Ot.Trace,`(LongPolling transport) data received. ${jt(o.content,this._options.logMessageContent)}.`),this.onreceive&&this.onreceive(o.content)):this._logger.log(Ot.Trace,"(LongPolling transport) Poll timed out, reissuing.")}catch(e){this._running?e instanceof tn?this._logger.log(Ot.Trace,"(LongPolling transport) Poll timed out, reissuing."):(this._closeError=e,this._running=!1):this._logger.log(Ot.Trace,`(LongPolling transport) Poll errored after shutdown: ${e.message}`)}}finally{this._logger.log(Ot.Trace,"(LongPolling transport) Polling complete."),this.pollAborted||this._raiseOnClose()}}async send(e){return this._running?qt(this._logger,"LongPolling",this._httpClient,this._url,e,this._options):Promise.reject(new Error("Cannot send until the transport is connected"))}async stop(){this._logger.log(Ot.Trace,"(LongPolling transport) Stopping polling."),this._running=!1,this._pollAbort.abort();try{await this._receiving,this._logger.log(Ot.Trace,`(LongPolling transport) sending DELETE request to ${this._url}.`);const e={},[t,n]=Vt();e[t]=n;const o={headers:{...e,...this._options.headers},timeout:this._options.timeout,withCredentials:this._options.withCredentials};let r;try{await this._httpClient.delete(this._url,o)}catch(e){r=e}r?r instanceof en&&(404===r.statusCode?this._logger.log(Ot.Trace,"(LongPolling transport) A 404 response was returned from sending a DELETE request."):this._logger.log(Ot.Trace,`(LongPolling transport) Error sending a DELETE request: ${r}`)):this._logger.log(Ot.Trace,"(LongPolling transport) DELETE request accepted.")}finally{this._logger.log(Ot.Trace,"(LongPolling transport) Stop finished."),this._raiseOnClose()}}_raiseOnClose(){if(this.onclose){let e="(LongPolling transport) Firing onclose event.";this._closeError&&(e+=" Error: "+this._closeError),this._logger.log(Ot.Trace,e),this.onclose(this._closeError)}}}class An{constructor(e,t,n,o){this._httpClient=e,this._accessToken=t,this._logger=n,this._options=o,this.onreceive=null,this.onclose=null}async connect(e,t){return Ht.isRequired(e,"url"),Ht.isRequired(t,"transferFormat"),Ht.isIn(t,kn,"transferFormat"),this._logger.log(Ot.Trace,"(SSE transport) Connecting."),this._url=e,this._accessToken&&(e+=(e.indexOf("?")<0?"?":"&")+`access_token=${encodeURIComponent(this._accessToken)}`),new Promise(((n,o)=>{let r,i=!1;if(t===kn.Text){if(Wt.isBrowser||Wt.isWebWorker)r=new this._options.EventSource(e,{withCredentials:this._options.withCredentials});else{const t=this._httpClient.getCookieString(e),n={};n.Cookie=t;const[o,i]=Vt();n[o]=i,r=new this._options.EventSource(e,{withCredentials:this._options.withCredentials,headers:{...n,...this._options.headers}})}try{r.onmessage=e=>{if(this.onreceive)try{this._logger.log(Ot.Trace,`(SSE transport) data received. ${jt(e.data,this._options.logMessageContent)}.`),this.onreceive(e.data)}catch(e){return void this._close(e)}},r.onerror=e=>{i?this._close():o(new Error("EventSource failed to connect. The connection could not be found on the server, either the connection ID is not present on the server, or a proxy is refusing/buffering the connection. If you have multiple servers check that sticky sessions are enabled."))},r.onopen=()=>{this._logger.log(Ot.Information,`SSE connected to ${this._url}`),this._eventSource=r,i=!0,n()}}catch(e){return void o(e)}}else o(new Error("The Server-Sent Events transport only supports the 'Text' transfer format"))}))}async send(e){return this._eventSource?qt(this._logger,"SSE",this._httpClient,this._url,e,this._options):Promise.reject(new Error("Cannot send until the transport is connected"))}stop(){return this._close(),Promise.resolve()}_close(e){this._eventSource&&(this._eventSource.close(),this._eventSource=void 0,this.onclose&&this.onclose(e))}}class Dn{constructor(e,t,n,o,r,i){this._logger=n,this._accessTokenFactory=t,this._logMessageContent=o,this._webSocketConstructor=r,this._httpClient=e,this.onreceive=null,this.onclose=null,this._headers=i}async connect(e,t){let n;return Ht.isRequired(e,"url"),Ht.isRequired(t,"transferFormat"),Ht.isIn(t,kn,"transferFormat"),this._logger.log(Ot.Trace,"(WebSockets transport) Connecting."),this._accessTokenFactory&&(n=await this._accessTokenFactory()),new Promise(((o,r)=>{let i;e=e.replace(/^http/,"ws");const s=this._httpClient.getCookieString(e);let a=!1;if(Wt.isReactNative){const t={},[o,r]=Vt();t[o]=r,n&&(t[vn.Authorization]=`Bearer ${n}`),s&&(t[vn.Cookie]=s),i=new this._webSocketConstructor(e,void 0,{headers:{...t,...this._headers}})}else n&&(e+=(e.indexOf("?")<0?"?":"&")+`access_token=${encodeURIComponent(n)}`);i||(i=new this._webSocketConstructor(e)),t===kn.Binary&&(i.binaryType="arraybuffer"),i.onopen=t=>{this._logger.log(Ot.Information,`WebSocket connected to ${e}.`),this._webSocket=i,a=!0,o()},i.onerror=e=>{let t=null;t="undefined"!=typeof ErrorEvent&&e instanceof ErrorEvent?e.error:"There was an error with the transport",this._logger.log(Ot.Information,`(WebSockets transport) ${t}.`)},i.onmessage=e=>{if(this._logger.log(Ot.Trace,`(WebSockets transport) data received. ${jt(e.data,this._logMessageContent)}.`),this.onreceive)try{this.onreceive(e.data)}catch(e){return void this._close(e)}},i.onclose=e=>{if(a)this._close(e);else{let t=null;t="undefined"!=typeof ErrorEvent&&e instanceof ErrorEvent?e.error:"WebSocket failed to connect. The connection could not be found on the server, either the endpoint may not be a SignalR endpoint, the connection ID is not present on the server, or there is a proxy blocking WebSockets. If you have multiple servers check that sticky sessions are enabled.",r(new Error(t))}}}))}send(e){return this._webSocket&&this._webSocket.readyState===this._webSocketConstructor.OPEN?(this._logger.log(Ot.Trace,`(WebSockets transport) sending data. ${jt(e,this._logMessageContent)}.`),this._webSocket.send(e),Promise.resolve()):Promise.reject("WebSocket is not in the OPEN state")}stop(){return this._webSocket&&this._close(void 0),Promise.resolve()}_close(e){this._webSocket&&(this._webSocket.onclose=()=>{},this._webSocket.onmessage=()=>{},this._webSocket.onerror=()=>{},this._webSocket.close(),this._webSocket=void 0),this._logger.log(Ot.Trace,"(WebSockets transport) socket closed."),this.onclose&&(!this._isCloseEvent(e)||!1!==e.wasClean&&1e3===e.code?e instanceof Error?this.onclose(e):this.onclose():this.onclose(new Error(`WebSocket closed with status code: ${e.code} (${e.reason||"no reason given"}).`)))}_isCloseEvent(e){return e&&"boolean"==typeof e.wasClean&&"number"==typeof e.code}}class xn{constructor(e,t={}){if(this._stopPromiseResolver=()=>{},this.features={},this._negotiateVersion=1,Ht.isRequired(e,"url"),this._logger=function(e){return void 0===e?new Kt(Ot.Information):null===e?Ft.instance:void 0!==e.log?e:new Kt(e)}(t.logger),this.baseUrl=this._resolveUrl(e),(t=t||{}).logMessageContent=void 0!==t.logMessageContent&&t.logMessageContent,"boolean"!=typeof t.withCredentials&&void 0!==t.withCredentials)throw new Error("withCredentials option was not a 'boolean' or 'undefined' value");t.withCredentials=void 0===t.withCredentials||t.withCredentials,t.timeout=void 0===t.timeout?1e5:t.timeout,"undefined"==typeof WebSocket||t.WebSocket||(t.WebSocket=WebSocket),"undefined"==typeof EventSource||t.EventSource||(t.EventSource=EventSource),this._httpClient=new bn(t.httpClient||new En(this._logger),t.accessTokenFactory),this._connectionState="Disconnected",this._connectionStarted=!1,this._options=t,this.onreceive=null,this.onclose=null}async start(e){if(e=e||kn.Binary,Ht.isIn(e,kn,"transferFormat"),this._logger.log(Ot.Debug,`Starting connection with transfer format '${kn[e]}'.`),"Disconnected"!==this._connectionState)return Promise.reject(new Error("Cannot start an HttpConnection that is not in the 'Disconnected' state."));if(this._connectionState="Connecting",this._startInternalPromise=this._startInternal(e),await this._startInternalPromise,"Disconnecting"===this._connectionState){const e="Failed to start the HttpConnection before stop() was called.";return this._logger.log(Ot.Error,e),await this._stopPromise,Promise.reject(new nn(e))}if("Connected"!==this._connectionState){const e="HttpConnection.startInternal completed gracefully but didn't enter the connection into the connected state!";return this._logger.log(Ot.Error,e),Promise.reject(new nn(e))}this._connectionStarted=!0}send(e){return"Connected"!==this._connectionState?Promise.reject(new Error("Cannot send data if the connection is not in the 'Connected' State.")):(this._sendQueue||(this._sendQueue=new Nn(this.transport)),this._sendQueue.send(e))}async stop(e){return"Disconnected"===this._connectionState?(this._logger.log(Ot.Debug,`Call to HttpConnection.stop(${e}) ignored because the connection is already in the disconnected state.`),Promise.resolve()):"Disconnecting"===this._connectionState?(this._logger.log(Ot.Debug,`Call to HttpConnection.stop(${e}) ignored because the connection is already in the disconnecting state.`),this._stopPromise):(this._connectionState="Disconnecting",this._stopPromise=new Promise((e=>{this._stopPromiseResolver=e})),await this._stopInternal(e),void await this._stopPromise)}async _stopInternal(e){this._stopError=e;try{await this._startInternalPromise}catch(e){}if(this.transport){try{await this.transport.stop()}catch(e){this._logger.log(Ot.Error,`HttpConnection.transport.stop() threw error '${e}'.`),this._stopConnection()}this.transport=void 0}else this._logger.log(Ot.Debug,"HttpConnection.transport is undefined in HttpConnection.stop() because start() failed.")}async _startInternal(e){let t=this.baseUrl;this._accessTokenFactory=this._options.accessTokenFactory,this._httpClient._accessTokenFactory=this._accessTokenFactory;try{if(this._options.skipNegotiation){if(this._options.transport!==In.WebSockets)throw new Error("Negotiation can only be skipped when using the WebSocket transport directly.");this.transport=this._constructTransport(In.WebSockets),await this._startTransport(t,e)}else{let n=null,o=0;do{if(n=await this._getNegotiationResponse(t),"Disconnecting"===this._connectionState||"Disconnected"===this._connectionState)throw new nn("The connection was stopped during negotiation.");if(n.error)throw new Error(n.error);if(n.ProtocolVersion)throw new Error("Detected a connection attempt to an ASP.NET SignalR Server. This client only supports connecting to an ASP.NET Core SignalR Server. See https://aka.ms/signalr-core-differences for details.");if(n.url&&(t=n.url),n.accessToken){const e=n.accessToken;this._accessTokenFactory=()=>e,this._httpClient._accessToken=e,this._httpClient._accessTokenFactory=void 0}o++}while(n.url&&o<100);if(100===o&&n.url)throw new Error("Negotiate redirection limit exceeded.");await this._createTransport(t,this._options.transport,n,e)}this.transport instanceof Rn&&(this.features.inherentKeepAlive=!0),"Connecting"===this._connectionState&&(this._logger.log(Ot.Debug,"The HttpConnection connected successfully."),this._connectionState="Connected")}catch(e){return this._logger.log(Ot.Error,"Failed to start the connection: "+e),this._connectionState="Disconnected",this.transport=void 0,this._stopPromiseResolver(),Promise.reject(e)}}async _getNegotiationResponse(e){const t={},[n,o]=Vt();t[n]=o;const r=this._resolveNegotiateUrl(e);this._logger.log(Ot.Debug,`Sending negotiation request: ${r}.`);try{const e=await this._httpClient.post(r,{content:"",headers:{...t,...this._options.headers},timeout:this._options.timeout,withCredentials:this._options.withCredentials});if(200!==e.statusCode)return Promise.reject(new Error(`Unexpected status code returned from negotiate '${e.statusCode}'`));const n=JSON.parse(e.content);return(!n.negotiateVersion||n.negotiateVersion<1)&&(n.connectionToken=n.connectionId),n.useStatefulReconnect&&!0!==this._options._useStatefulReconnect?Promise.reject(new an("Client didn't negotiate Stateful Reconnect but the server did.")):n}catch(e){let t="Failed to complete negotiation with the server: "+e;return e instanceof en&&404===e.statusCode&&(t+=" Either this is not a SignalR endpoint or there is a proxy blocking the connection."),this._logger.log(Ot.Error,t),Promise.reject(new an(t))}}_createConnectUrl(e,t){return t?e+(-1===e.indexOf("?")?"?":"&")+`id=${t}`:e}async _createTransport(e,t,n,o){let r=this._createConnectUrl(e,n.connectionToken);if(this._isITransport(t))return this._logger.log(Ot.Debug,"Connection was provided an instance of ITransport, using that directly."),this.transport=t,await this._startTransport(r,o),void(this.connectionId=n.connectionId);const i=[],s=n.availableTransports||[];let a=n;for(const n of s){const s=this._resolveTransportOrError(n,t,o,!0===(null==a?void 0:a.useStatefulReconnect));if(s instanceof Error)i.push(`${n.transport} failed:`),i.push(s);else if(this._isITransport(s)){if(this.transport=s,!a){try{a=await this._getNegotiationResponse(e)}catch(e){return Promise.reject(e)}r=this._createConnectUrl(e,a.connectionToken)}try{return await this._startTransport(r,o),void(this.connectionId=a.connectionId)}catch(e){if(this._logger.log(Ot.Error,`Failed to start the transport '${n.transport}': ${e}`),a=void 0,i.push(new sn(`${n.transport} failed: ${e}`,In[n.transport])),"Connecting"!==this._connectionState){const e="Failed to select transport before stop() was called.";return this._logger.log(Ot.Debug,e),Promise.reject(new nn(e))}}}}return i.length>0?Promise.reject(new cn(`Unable to connect to the server with any of the available transports. ${i.join(" ")}`,i)):Promise.reject(new Error("None of the transports supported by the client are supported by the server."))}_constructTransport(e){switch(e){case In.WebSockets:if(!this._options.WebSocket)throw new Error("'WebSocket' is not supported in your environment.");return new Dn(this._httpClient,this._accessTokenFactory,this._logger,this._options.logMessageContent,this._options.WebSocket,this._options.headers||{});case In.ServerSentEvents:if(!this._options.EventSource)throw new Error("'EventSource' is not supported in your environment.");return new An(this._httpClient,this._httpClient._accessToken,this._logger,this._options);case In.LongPolling:return new Rn(this._httpClient,this._logger,this._options);default:throw new Error(`Unknown transport: ${e}.`)}}_startTransport(e,t){return this.transport.onreceive=this.onreceive,this.features.reconnect?this.transport.onclose=async n=>{let o=!1;if(this.features.reconnect){try{this.features.disconnected(),await this.transport.connect(e,t),await this.features.resend()}catch{o=!0}o&&this._stopConnection(n)}else this._stopConnection(n)}:this.transport.onclose=e=>this._stopConnection(e),this.transport.connect(e,t)}_resolveTransportOrError(e,t,n,o){const r=In[e.transport];if(null==r)return this._logger.log(Ot.Debug,`Skipping transport '${e.transport}' because it is not supported by this client.`),new Error(`Skipping transport '${e.transport}' because it is not supported by this client.`);if(!function(e,t){return!e||0!=(t&e)}(t,r))return this._logger.log(Ot.Debug,`Skipping transport '${In[r]}' because it was disabled by the client.`),new rn(`'${In[r]}' is disabled by the client.`,r);if(!(e.transferFormats.map((e=>kn[e])).indexOf(n)>=0))return this._logger.log(Ot.Debug,`Skipping transport '${In[r]}' because it does not support the requested transfer format '${kn[n]}'.`),new Error(`'${In[r]}' does not support ${kn[n]}.`);if(r===In.WebSockets&&!this._options.WebSocket||r===In.ServerSentEvents&&!this._options.EventSource)return this._logger.log(Ot.Debug,`Skipping transport '${In[r]}' because it is not supported in your environment.'`),new on(`'${In[r]}' is not supported in your environment.`,r);this._logger.log(Ot.Debug,`Selecting transport '${In[r]}'.`);try{return this.features.reconnect=r===In.WebSockets?o:void 0,this._constructTransport(r)}catch(e){return e}}_isITransport(e){return e&&"object"==typeof e&&"connect"in e}_stopConnection(e){if(this._logger.log(Ot.Debug,`HttpConnection.stopConnection(${e}) called while in state ${this._connectionState}.`),this.transport=void 0,e=this._stopError||e,this._stopError=void 0,"Disconnected"!==this._connectionState){if("Connecting"===this._connectionState)throw this._logger.log(Ot.Warning,`Call to HttpConnection.stopConnection(${e}) was ignored because the connection is still in the connecting state.`),new Error(`HttpConnection.stopConnection(${e}) was called while the connection is still in the connecting state.`);if("Disconnecting"===this._connectionState&&this._stopPromiseResolver(),e?this._logger.log(Ot.Error,`Connection disconnected with error '${e}'.`):this._logger.log(Ot.Information,"Connection disconnected."),this._sendQueue&&(this._sendQueue.stop().catch((e=>{this._logger.log(Ot.Error,`TransportSendQueue.stop() threw error '${e}'.`)})),this._sendQueue=void 0),this.connectionId=void 0,this._connectionState="Disconnected",this._connectionStarted){this._connectionStarted=!1;try{this.onclose&&this.onclose(e)}catch(t){this._logger.log(Ot.Error,`HttpConnection.onclose(${e}) threw error '${t}'.`)}}}else this._logger.log(Ot.Debug,`Call to HttpConnection.stopConnection(${e}) was ignored because the connection is already in the disconnected state.`)}_resolveUrl(e){if(0===e.lastIndexOf("https://",0)||0===e.lastIndexOf("http://",0))return e;if(!Wt.isBrowser)throw new Error(`Cannot resolve '${e}'.`);const t=window.document.createElement("a");return t.href=e,this._logger.log(Ot.Information,`Normalizing '${e}' to '${t.href}'.`),t.href}_resolveNegotiateUrl(e){const t=new URL(e);t.pathname.endsWith("/")?t.pathname+="negotiate":t.pathname+="/negotiate";const n=new URLSearchParams(t.searchParams);return n.has("negotiateVersion")||n.append("negotiateVersion",this._negotiateVersion.toString()),n.has("useStatefulReconnect")?"true"===n.get("useStatefulReconnect")&&(this._options._useStatefulReconnect=!0):!0===this._options._useStatefulReconnect&&n.append("useStatefulReconnect","true"),t.search=n.toString(),t.toString()}}class Nn{constructor(e){this._transport=e,this._buffer=[],this._executing=!0,this._sendBufferedData=new Pn,this._transportResult=new Pn,this._sendLoopPromise=this._sendLoop()}send(e){return this._bufferData(e),this._transportResult||(this._transportResult=new Pn),this._transportResult.promise}stop(){return this._executing=!1,this._sendBufferedData.resolve(),this._sendLoopPromise}_bufferData(e){if(this._buffer.length&&typeof this._buffer[0]!=typeof e)throw new Error(`Expected data to be of type ${typeof this._buffer} but was of type ${typeof e}`);this._buffer.push(e),this._sendBufferedData.resolve()}async _sendLoop(){for(;;){if(await this._sendBufferedData.promise,!this._executing){this._transportResult&&this._transportResult.reject("Connection stopped.");break}this._sendBufferedData=new Pn;const e=this._transportResult;this._transportResult=void 0;const t="string"==typeof this._buffer[0]?this._buffer.join(""):Nn._concatBuffers(this._buffer);this._buffer.length=0;try{await this._transport.send(t),e.resolve()}catch(t){e.reject(t)}}}static _concatBuffers(e){const t=e.map((e=>e.byteLength)).reduce(((e,t)=>e+t)),n=new Uint8Array(t);let o=0;for(const t of e)n.set(new Uint8Array(t),o),o+=t.byteLength;return n.buffer}}class Pn{constructor(){this.promise=new Promise(((e,t)=>[this._resolver,this._rejecter]=[e,t]))}resolve(){this._resolver()}reject(e){this._rejecter(e)}}class Mn{constructor(){this.name="json",this.version=2,this.transferFormat=kn.Text}parseMessages(e,t){if("string"!=typeof e)throw new Error("Invalid input for JSON hub protocol. Expected a string.");if(!e)return[];null===t&&(t=Ft.instance);const n=Bt.parse(e),o=[];for(const e of n){const n=JSON.parse(e);if("number"!=typeof n.type)throw new Error("Invalid payload.");switch(n.type){case ln.Invocation:this._isInvocationMessage(n);break;case ln.StreamItem:this._isStreamItemMessage(n);break;case ln.Completion:this._isCompletionMessage(n);break;case ln.Ping:case ln.Close:break;case ln.Ack:this._isAckMessage(n);break;case ln.Sequence:this._isSequenceMessage(n);break;default:t.log(Ot.Information,"Unknown message type '"+n.type+"' ignored.");continue}o.push(n)}return o}writeMessage(e){return Bt.write(JSON.stringify(e))}_isInvocationMessage(e){this._assertNotEmptyString(e.target,"Invalid payload for Invocation message."),void 0!==e.invocationId&&this._assertNotEmptyString(e.invocationId,"Invalid payload for Invocation message.")}_isStreamItemMessage(e){if(this._assertNotEmptyString(e.invocationId,"Invalid payload for StreamItem message."),void 0===e.item)throw new Error("Invalid payload for StreamItem message.")}_isCompletionMessage(e){if(e.result&&e.error)throw new Error("Invalid payload for Completion message.");!e.result&&e.error&&this._assertNotEmptyString(e.error,"Invalid payload for Completion message."),this._assertNotEmptyString(e.invocationId,"Invalid payload for Completion message.")}_isAckMessage(e){if("number"!=typeof e.sequenceId)throw new Error("Invalid SequenceId for Ack message.")}_isSequenceMessage(e){if("number"!=typeof e.sequenceId)throw new Error("Invalid SequenceId for Sequence message.")}_assertNotEmptyString(e,t){if("string"!=typeof e||""===e)throw new Error(t)}}const Un={trace:Ot.Trace,debug:Ot.Debug,info:Ot.Information,information:Ot.Information,warn:Ot.Warning,warning:Ot.Warning,error:Ot.Error,critical:Ot.Critical,none:Ot.None};class Ln{configureLogging(e){if(Ht.isRequired(e,"logging"),function(e){return void 0!==e.log}(e))this.logger=e;else if("string"==typeof e){const t=function(e){const t=Un[e.toLowerCase()];if(void 0!==t)return t;throw new Error(`Unknown log level: ${e}`)}(e);this.logger=new Kt(t)}else this.logger=new Kt(e);return this}withUrl(e,t){return Ht.isRequired(e,"url"),Ht.isNotEmpty(e,"url"),this.url=e,this.httpConnectionOptions="object"==typeof t?{...this.httpConnectionOptions,...t}:{...this.httpConnectionOptions,transport:t},this}withHubProtocol(e){return Ht.isRequired(e,"protocol"),this.protocol=e,this}withAutomaticReconnect(e){if(this.reconnectPolicy)throw new Error("A reconnectPolicy has already been set.");return e?Array.isArray(e)?this.reconnectPolicy=new mn(e):this.reconnectPolicy=e:this.reconnectPolicy=new mn,this}withServerTimeout(e){return Ht.isRequired(e,"milliseconds"),this._serverTimeoutInMilliseconds=e,this}withKeepAliveInterval(e){return Ht.isRequired(e,"milliseconds"),this._keepAliveIntervalInMilliseconds=e,this}withStatefulReconnect(e){return void 0===this.httpConnectionOptions&&(this.httpConnectionOptions={}),this.httpConnectionOptions._useStatefulReconnect=!0,this._statefulReconnectBufferSize=null==e?void 0:e.bufferSize,this}build(){const e=this.httpConnectionOptions||{};if(void 0===e.logger&&(e.logger=this.logger),!this.url)throw new Error("The 'HubConnectionBuilder.withUrl' method must be called before building the connection.");const t=new xn(this.url,e);return fn.create(t,this.logger||Ft.instance,this.protocol||new Mn,this.reconnectPolicy,this._serverTimeoutInMilliseconds,this._keepAliveIntervalInMilliseconds,this._statefulReconnectBufferSize)}}var Bn;!function(e){e[e.Default=0]="Default",e[e.Server=1]="Server",e[e.WebAssembly=2]="WebAssembly",e[e.WebView=3]="WebView"}(Bn||(Bn={}));var On,Fn,$n,Hn=4294967295;function Wn(e,t,n){var o=Math.floor(n/4294967296),r=n;e.setUint32(t,o),e.setUint32(t+4,r)}function jn(e,t){return 4294967296*e.getInt32(t)+e.getUint32(t+4)}var zn=("undefined"==typeof process||"never"!==(null===(On=null===process||void 0===process?void 0:process.env)||void 0===On?void 0:On.TEXT_ENCODING))&&"undefined"!=typeof TextEncoder&&"undefined"!=typeof TextDecoder;function qn(e){for(var t=e.length,n=0,o=0;o=55296&&r<=56319&&o65535&&(h-=65536,i.push(h>>>10&1023|55296),h=56320|1023&h),i.push(h)}else i.push(a);i.length>=4096&&(s+=String.fromCharCode.apply(String,i),i.length=0)}return i.length>0&&(s+=String.fromCharCode.apply(String,i)),s}var Gn,Yn=zn?new TextDecoder:null,Qn=zn?"undefined"!=typeof process&&"force"!==(null===($n=null===process||void 0===process?void 0:process.env)||void 0===$n?void 0:$n.TEXT_DECODER)?200:0:Hn,Zn=function(e,t){this.type=e,this.data=t},eo=(Gn=function(e,t){return Gn=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},Gn(e,t)},function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function n(){this.constructor=e}Gn(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}),to=function(e){function t(n){var o=e.call(this,n)||this,r=Object.create(t.prototype);return Object.setPrototypeOf(o,r),Object.defineProperty(o,"name",{configurable:!0,enumerable:!1,value:t.name}),o}return eo(t,e),t}(Error),no={type:-1,encode:function(e){var t,n,o,r;return e instanceof Date?function(e){var t,n=e.sec,o=e.nsec;if(n>=0&&o>=0&&n<=17179869183){if(0===o&&n<=4294967295){var r=new Uint8Array(4);return(t=new DataView(r.buffer)).setUint32(0,n),r}var i=n/4294967296,s=4294967295&n;return r=new Uint8Array(8),(t=new DataView(r.buffer)).setUint32(0,o<<2|3&i),t.setUint32(4,s),r}return r=new Uint8Array(12),(t=new DataView(r.buffer)).setUint32(0,o),Wn(t,4,n),r}((o=1e6*((t=e.getTime())-1e3*(n=Math.floor(t/1e3))),{sec:n+(r=Math.floor(o/1e9)),nsec:o-1e9*r})):null},decode:function(e){var t=function(e){var t=new DataView(e.buffer,e.byteOffset,e.byteLength);switch(e.byteLength){case 4:return{sec:t.getUint32(0),nsec:0};case 8:var n=t.getUint32(0);return{sec:4294967296*(3&n)+t.getUint32(4),nsec:n>>>2};case 12:return{sec:jn(t,4),nsec:t.getUint32(0)};default:throw new to("Unrecognized data size for timestamp (expected 4, 8, or 12): ".concat(e.length))}}(e);return new Date(1e3*t.sec+t.nsec/1e6)}},oo=function(){function e(){this.builtInEncoders=[],this.builtInDecoders=[],this.encoders=[],this.decoders=[],this.register(no)}return e.prototype.register=function(e){var t=e.type,n=e.encode,o=e.decode;if(t>=0)this.encoders[t]=n,this.decoders[t]=o;else{var r=1+t;this.builtInEncoders[r]=n,this.builtInDecoders[r]=o}},e.prototype.tryToEncode=function(e,t){for(var n=0;nthis.maxDepth)throw new Error("Too deep objects in depth ".concat(t));null==e?this.encodeNil():"boolean"==typeof e?this.encodeBoolean(e):"number"==typeof e?this.encodeNumber(e):"string"==typeof e?this.encodeString(e):this.encodeObject(e,t)},e.prototype.ensureBufferSizeToWrite=function(e){var t=this.pos+e;this.view.byteLength=0?e<128?this.writeU8(e):e<256?(this.writeU8(204),this.writeU8(e)):e<65536?(this.writeU8(205),this.writeU16(e)):e<4294967296?(this.writeU8(206),this.writeU32(e)):(this.writeU8(207),this.writeU64(e)):e>=-32?this.writeU8(224|e+32):e>=-128?(this.writeU8(208),this.writeI8(e)):e>=-32768?(this.writeU8(209),this.writeI16(e)):e>=-2147483648?(this.writeU8(210),this.writeI32(e)):(this.writeU8(211),this.writeI64(e)):this.forceFloat32?(this.writeU8(202),this.writeF32(e)):(this.writeU8(203),this.writeF64(e))},e.prototype.writeStringHeader=function(e){if(e<32)this.writeU8(160+e);else if(e<256)this.writeU8(217),this.writeU8(e);else if(e<65536)this.writeU8(218),this.writeU16(e);else{if(!(e<4294967296))throw new Error("Too long string: ".concat(e," bytes in UTF-8"));this.writeU8(219),this.writeU32(e)}},e.prototype.encodeString=function(e){if(e.length>Kn){var t=qn(e);this.ensureBufferSizeToWrite(5+t),this.writeStringHeader(t),Vn(e,this.bytes,this.pos),this.pos+=t}else t=qn(e),this.ensureBufferSizeToWrite(5+t),this.writeStringHeader(t),function(e,t,n){for(var o=e.length,r=n,i=0;i>6&31|192;else{if(s>=55296&&s<=56319&&i>12&15|224,t[r++]=s>>6&63|128):(t[r++]=s>>18&7|240,t[r++]=s>>12&63|128,t[r++]=s>>6&63|128)}t[r++]=63&s|128}else t[r++]=s}}(e,this.bytes,this.pos),this.pos+=t},e.prototype.encodeObject=function(e,t){var n=this.extensionCodec.tryToEncode(e,this.context);if(null!=n)this.encodeExtension(n);else if(Array.isArray(e))this.encodeArray(e,t);else if(ArrayBuffer.isView(e))this.encodeBinary(e);else{if("object"!=typeof e)throw new Error("Unrecognized object: ".concat(Object.prototype.toString.apply(e)));this.encodeMap(e,t)}},e.prototype.encodeBinary=function(e){var t=e.byteLength;if(t<256)this.writeU8(196),this.writeU8(t);else if(t<65536)this.writeU8(197),this.writeU16(t);else{if(!(t<4294967296))throw new Error("Too large binary: ".concat(t));this.writeU8(198),this.writeU32(t)}var n=ro(e);this.writeU8a(n)},e.prototype.encodeArray=function(e,t){var n=e.length;if(n<16)this.writeU8(144+n);else if(n<65536)this.writeU8(220),this.writeU16(n);else{if(!(n<4294967296))throw new Error("Too large array: ".concat(n));this.writeU8(221),this.writeU32(n)}for(var o=0,r=e;o0&&e<=this.maxKeyLength},e.prototype.find=function(e,t,n){e:for(var o=0,r=this.caches[n-1];o=this.maxLengthPerKey?n[Math.random()*n.length|0]=o:n.push(o)},e.prototype.decode=function(e,t,n){var o=this.find(e,t,n);if(null!=o)return this.hit++,o;this.miss++;var r=Xn(e,t,n),i=Uint8Array.prototype.slice.call(e,t,t+n);return this.store(i,r),r},e}(),co=function(e,t){var n,o,r,i,s={label:0,sent:function(){if(1&r[0])throw r[1];return r[1]},trys:[],ops:[]};return i={next:a(0),throw:a(1),return:a(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function a(i){return function(a){return function(i){if(n)throw new TypeError("Generator is already executing.");for(;s;)try{if(n=1,o&&(r=2&i[0]?o.return:i[0]?o.throw||((r=o.return)&&r.call(o),0):o.next)&&!(r=r.call(o,i[1])).done)return r;switch(o=0,r&&(i=[2&i[0],r.value]),i[0]){case 0:case 1:r=i;break;case 4:return s.label++,{value:i[1],done:!1};case 5:s.label++,o=i[1],i=[0];continue;case 7:i=s.ops.pop(),s.trys.pop();continue;default:if(!((r=(r=s.trys).length>0&&r[r.length-1])||6!==i[0]&&2!==i[0])){s=0;continue}if(3===i[0]&&(!r||i[1]>r[0]&&i[1]=e},e.prototype.createExtraByteError=function(e){var t=this.view,n=this.pos;return new RangeError("Extra ".concat(t.byteLength-n," of ").concat(t.byteLength," byte(s) found at buffer[").concat(e,"]"))},e.prototype.decode=function(e){this.reinitializeState(),this.setBuffer(e);var t=this.doDecodeSync();if(this.hasRemaining(1))throw this.createExtraByteError(this.pos);return t},e.prototype.decodeMulti=function(e){return co(this,(function(t){switch(t.label){case 0:this.reinitializeState(),this.setBuffer(e),t.label=1;case 1:return this.hasRemaining(1)?[4,this.doDecodeSync()]:[3,3];case 2:return t.sent(),[3,1];case 3:return[2]}}))},e.prototype.decodeAsync=function(e){var t,n,o,r,i,s,a;return i=this,void 0,a=function(){var i,s,a,c,l,h,d,u;return co(this,(function(p){switch(p.label){case 0:i=!1,p.label=1;case 1:p.trys.push([1,6,7,12]),t=lo(e),p.label=2;case 2:return[4,t.next()];case 3:if((n=p.sent()).done)return[3,5];if(a=n.value,i)throw this.createExtraByteError(this.totalPos);this.appendBuffer(a);try{s=this.doDecodeSync(),i=!0}catch(e){if(!(e instanceof fo))throw e}this.totalPos+=this.pos,p.label=4;case 4:return[3,2];case 5:return[3,12];case 6:return c=p.sent(),o={error:c},[3,12];case 7:return p.trys.push([7,,10,11]),n&&!n.done&&(r=t.return)?[4,r.call(t)]:[3,9];case 8:p.sent(),p.label=9;case 9:return[3,11];case 10:if(o)throw o.error;return[7];case 11:return[7];case 12:if(i){if(this.hasRemaining(1))throw this.createExtraByteError(this.totalPos);return[2,s]}throw h=(l=this).headByte,d=l.pos,u=l.totalPos,new RangeError("Insufficient data in parsing ".concat(so(h)," at ").concat(u," (").concat(d," in the current buffer)"))}}))},new((s=void 0)||(s=Promise))((function(e,t){function n(e){try{r(a.next(e))}catch(e){t(e)}}function o(e){try{r(a.throw(e))}catch(e){t(e)}}function r(t){var r;t.done?e(t.value):(r=t.value,r instanceof s?r:new s((function(e){e(r)}))).then(n,o)}r((a=a.apply(i,[])).next())}))},e.prototype.decodeArrayStream=function(e){return this.decodeMultiAsync(e,!0)},e.prototype.decodeStream=function(e){return this.decodeMultiAsync(e,!1)},e.prototype.decodeMultiAsync=function(e,t){return function(n,o,r){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var i,s=function(){var n,o,r,i,s,a,c,l,h;return co(this,(function(d){switch(d.label){case 0:n=t,o=-1,d.label=1;case 1:d.trys.push([1,13,14,19]),r=lo(e),d.label=2;case 2:return[4,ho(r.next())];case 3:if((i=d.sent()).done)return[3,12];if(s=i.value,t&&0===o)throw this.createExtraByteError(this.totalPos);this.appendBuffer(s),n&&(o=this.readArraySize(),n=!1,this.complete()),d.label=4;case 4:d.trys.push([4,9,,10]),d.label=5;case 5:return[4,ho(this.doDecodeSync())];case 6:return[4,d.sent()];case 7:return d.sent(),0==--o?[3,8]:[3,5];case 8:return[3,10];case 9:if(!((a=d.sent())instanceof fo))throw a;return[3,10];case 10:this.totalPos+=this.pos,d.label=11;case 11:return[3,2];case 12:return[3,19];case 13:return c=d.sent(),l={error:c},[3,19];case 14:return d.trys.push([14,,17,18]),i&&!i.done&&(h=r.return)?[4,ho(h.call(r))]:[3,16];case 15:d.sent(),d.label=16;case 16:return[3,18];case 17:if(l)throw l.error;return[7];case 18:return[7];case 19:return[2]}}))}.apply(n,o||[]),a=[];return i={},c("next"),c("throw"),c("return"),i[Symbol.asyncIterator]=function(){return this},i;function c(e){s[e]&&(i[e]=function(t){return new Promise((function(n,o){a.push([e,t,n,o])>1||l(e,t)}))})}function l(e,t){try{(n=s[e](t)).value instanceof ho?Promise.resolve(n.value.v).then(h,d):u(a[0][2],n)}catch(e){u(a[0][3],e)}var n}function h(e){l("next",e)}function d(e){l("throw",e)}function u(e,t){e(t),a.shift(),a.length&&l(a[0][0],a[0][1])}}(this,arguments)},e.prototype.doDecodeSync=function(){e:for(;;){var e=this.readHeadByte(),t=void 0;if(e>=224)t=e-256;else if(e<192)if(e<128)t=e;else if(e<144){if(0!=(o=e-128)){this.pushMapState(o),this.complete();continue e}t={}}else if(e<160){if(0!=(o=e-144)){this.pushArrayState(o),this.complete();continue e}t=[]}else{var n=e-160;t=this.decodeUtf8String(n,0)}else if(192===e)t=null;else if(194===e)t=!1;else if(195===e)t=!0;else if(202===e)t=this.readF32();else if(203===e)t=this.readF64();else if(204===e)t=this.readU8();else if(205===e)t=this.readU16();else if(206===e)t=this.readU32();else if(207===e)t=this.readU64();else if(208===e)t=this.readI8();else if(209===e)t=this.readI16();else if(210===e)t=this.readI32();else if(211===e)t=this.readI64();else if(217===e)n=this.lookU8(),t=this.decodeUtf8String(n,1);else if(218===e)n=this.lookU16(),t=this.decodeUtf8String(n,2);else if(219===e)n=this.lookU32(),t=this.decodeUtf8String(n,4);else if(220===e){if(0!==(o=this.readU16())){this.pushArrayState(o),this.complete();continue e}t=[]}else if(221===e){if(0!==(o=this.readU32())){this.pushArrayState(o),this.complete();continue e}t=[]}else if(222===e){if(0!==(o=this.readU16())){this.pushMapState(o),this.complete();continue e}t={}}else if(223===e){if(0!==(o=this.readU32())){this.pushMapState(o),this.complete();continue e}t={}}else if(196===e){var o=this.lookU8();t=this.decodeBinary(o,1)}else if(197===e)o=this.lookU16(),t=this.decodeBinary(o,2);else if(198===e)o=this.lookU32(),t=this.decodeBinary(o,4);else if(212===e)t=this.decodeExtension(1,0);else if(213===e)t=this.decodeExtension(2,0);else if(214===e)t=this.decodeExtension(4,0);else if(215===e)t=this.decodeExtension(8,0);else if(216===e)t=this.decodeExtension(16,0);else if(199===e)o=this.lookU8(),t=this.decodeExtension(o,1);else if(200===e)o=this.lookU16(),t=this.decodeExtension(o,2);else{if(201!==e)throw new to("Unrecognized type byte: ".concat(so(e)));o=this.lookU32(),t=this.decodeExtension(o,4)}this.complete();for(var r=this.stack;r.length>0;){var i=r[r.length-1];if(0===i.type){if(i.array[i.position]=t,i.position++,i.position!==i.size)continue e;r.pop(),t=i.array}else{if(1===i.type){if("string"!=(s=typeof t)&&"number"!==s)throw new to("The type of key must be string or number but "+typeof t);if("__proto__"===t)throw new to("The key __proto__ is not allowed");i.key=t,i.type=2;continue e}if(i.map[i.key]=t,i.readCount++,i.readCount!==i.size){i.key=null,i.type=1;continue e}r.pop(),t=i.map}}return t}var s},e.prototype.readHeadByte=function(){return-1===this.headByte&&(this.headByte=this.readU8()),this.headByte},e.prototype.complete=function(){this.headByte=-1},e.prototype.readArraySize=function(){var e=this.readHeadByte();switch(e){case 220:return this.readU16();case 221:return this.readU32();default:if(e<160)return e-144;throw new to("Unrecognized array type byte: ".concat(so(e)))}},e.prototype.pushMapState=function(e){if(e>this.maxMapLength)throw new to("Max length exceeded: map length (".concat(e,") > maxMapLengthLength (").concat(this.maxMapLength,")"));this.stack.push({type:1,size:e,key:null,readCount:0,map:{}})},e.prototype.pushArrayState=function(e){if(e>this.maxArrayLength)throw new to("Max length exceeded: array length (".concat(e,") > maxArrayLength (").concat(this.maxArrayLength,")"));this.stack.push({type:0,size:e,array:new Array(e),position:0})},e.prototype.decodeUtf8String=function(e,t){var n;if(e>this.maxStrLength)throw new to("Max length exceeded: UTF-8 byte length (".concat(e,") > maxStrLength (").concat(this.maxStrLength,")"));if(this.bytes.byteLengthQn?function(e,t,n){var o=e.subarray(t,t+n);return Yn.decode(o)}(this.bytes,r,e):Xn(this.bytes,r,e),this.pos+=t+e,o},e.prototype.stateIsMapKey=function(){return this.stack.length>0&&1===this.stack[this.stack.length-1].type},e.prototype.decodeBinary=function(e,t){if(e>this.maxBinLength)throw new to("Max length exceeded: bin length (".concat(e,") > maxBinLength (").concat(this.maxBinLength,")"));if(!this.hasRemaining(e+t))throw go;var n=this.pos+t,o=this.bytes.subarray(n,n+e);return this.pos+=t+e,o},e.prototype.decodeExtension=function(e,t){if(e>this.maxExtLength)throw new to("Max length exceeded: ext length (".concat(e,") > maxExtLength (").concat(this.maxExtLength,")"));var n=this.view.getInt8(this.pos+t),o=this.decodeBinary(e,t+1);return this.extensionCodec.decode(o,n,this.context)},e.prototype.lookU8=function(){return this.view.getUint8(this.pos)},e.prototype.lookU16=function(){return this.view.getUint16(this.pos)},e.prototype.lookU32=function(){return this.view.getUint32(this.pos)},e.prototype.readU8=function(){var e=this.view.getUint8(this.pos);return this.pos++,e},e.prototype.readI8=function(){var e=this.view.getInt8(this.pos);return this.pos++,e},e.prototype.readU16=function(){var e=this.view.getUint16(this.pos);return this.pos+=2,e},e.prototype.readI16=function(){var e=this.view.getInt16(this.pos);return this.pos+=2,e},e.prototype.readU32=function(){var e=this.view.getUint32(this.pos);return this.pos+=4,e},e.prototype.readI32=function(){var e=this.view.getInt32(this.pos);return this.pos+=4,e},e.prototype.readU64=function(){var e,t,n=(e=this.view,t=this.pos,4294967296*e.getUint32(t)+e.getUint32(t+4));return this.pos+=8,n},e.prototype.readI64=function(){var e=jn(this.view,this.pos);return this.pos+=8,e},e.prototype.readF32=function(){var e=this.view.getFloat32(this.pos);return this.pos+=4,e},e.prototype.readF64=function(){var e=this.view.getFloat64(this.pos);return this.pos+=8,e},e}();class yo{static write(e){let t=e.byteLength||e.length;const n=[];do{let e=127&t;t>>=7,t>0&&(e|=128),n.push(e)}while(t>0);t=e.byteLength||e.length;const o=new Uint8Array(n.length+t);return o.set(n,0),o.set(e,n.length),o.buffer}static parse(e){const t=[],n=new Uint8Array(e),o=[0,7,14,21,28];for(let r=0;r7)throw new Error("Messages bigger than 2GB are not supported.");if(!(n.byteLength>=r+s+a))throw new Error("Incomplete message.");t.push(n.slice?n.slice(r+s,r+s+a):n.subarray(r+s,r+s+a)),r=r+s+a}return t}}const wo=new Uint8Array([145,ln.Ping]);class bo{constructor(e){this.name="messagepack",this.version=2,this.transferFormat=kn.Binary,this._errorResult=1,this._voidResult=2,this._nonVoidResult=3,e=e||{},this._encoder=new io(e.extensionCodec,e.context,e.maxDepth,e.initialBufferSize,e.sortKeys,e.forceFloat32,e.ignoreUndefined,e.forceIntegerToFloat),this._decoder=new vo(e.extensionCodec,e.context,e.maxStrLength,e.maxBinLength,e.maxArrayLength,e.maxMapLength,e.maxExtLength)}parseMessages(e,t){if(!(n=e)||"undefined"==typeof ArrayBuffer||!(n instanceof ArrayBuffer||n.constructor&&"ArrayBuffer"===n.constructor.name))throw new Error("Invalid input for MessagePack hub protocol. Expected an ArrayBuffer.");var n;null===t&&(t=Ft.instance);const o=yo.parse(e),r=[];for(const e of o){const n=this._parseMessage(e,t);n&&r.push(n)}return r}writeMessage(e){switch(e.type){case ln.Invocation:return this._writeInvocation(e);case ln.StreamInvocation:return this._writeStreamInvocation(e);case ln.StreamItem:return this._writeStreamItem(e);case ln.Completion:return this._writeCompletion(e);case ln.Ping:return yo.write(wo);case ln.CancelInvocation:return this._writeCancelInvocation(e);case ln.Close:return this._writeClose();case ln.Ack:return this._writeAck(e);case ln.Sequence:return this._writeSequence(e);default:throw new Error("Invalid message type.")}}_parseMessage(e,t){if(0===e.length)throw new Error("Invalid payload.");const n=this._decoder.decode(e);if(0===n.length||!(n instanceof Array))throw new Error("Invalid payload.");const o=n[0];switch(o){case ln.Invocation:return this._createInvocationMessage(this._readHeaders(n),n);case ln.StreamItem:return this._createStreamItemMessage(this._readHeaders(n),n);case ln.Completion:return this._createCompletionMessage(this._readHeaders(n),n);case ln.Ping:return this._createPingMessage(n);case ln.Close:return this._createCloseMessage(n);case ln.Ack:return this._createAckMessage(n);case ln.Sequence:return this._createSequenceMessage(n);default:return t.log(Ot.Information,"Unknown message type '"+o+"' ignored."),null}}_createCloseMessage(e){if(e.length<2)throw new Error("Invalid payload for Close message.");return{allowReconnect:e.length>=3?e[2]:void 0,error:e[1],type:ln.Close}}_createPingMessage(e){if(e.length<1)throw new Error("Invalid payload for Ping message.");return{type:ln.Ping}}_createInvocationMessage(e,t){if(t.length<5)throw new Error("Invalid payload for Invocation message.");const n=t[2];return n?{arguments:t[4],headers:e,invocationId:n,streamIds:[],target:t[3],type:ln.Invocation}:{arguments:t[4],headers:e,streamIds:[],target:t[3],type:ln.Invocation}}_createStreamItemMessage(e,t){if(t.length<4)throw new Error("Invalid payload for StreamItem message.");return{headers:e,invocationId:t[2],item:t[3],type:ln.StreamItem}}_createCompletionMessage(e,t){if(t.length<4)throw new Error("Invalid payload for Completion message.");const n=t[3];if(n!==this._voidResult&&t.length<5)throw new Error("Invalid payload for Completion message.");let o,r;switch(n){case this._errorResult:o=t[4];break;case this._nonVoidResult:r=t[4]}return{error:o,headers:e,invocationId:t[2],result:r,type:ln.Completion}}_createAckMessage(e){if(e.length<1)throw new Error("Invalid payload for Ack message.");return{sequenceId:e[1],type:ln.Ack}}_createSequenceMessage(e){if(e.length<1)throw new Error("Invalid payload for Sequence message.");return{sequenceId:e[1],type:ln.Sequence}}_writeInvocation(e){let t;return t=e.streamIds?this._encoder.encode([ln.Invocation,e.headers||{},e.invocationId||null,e.target,e.arguments,e.streamIds]):this._encoder.encode([ln.Invocation,e.headers||{},e.invocationId||null,e.target,e.arguments]),yo.write(t.slice())}_writeStreamInvocation(e){let t;return t=e.streamIds?this._encoder.encode([ln.StreamInvocation,e.headers||{},e.invocationId,e.target,e.arguments,e.streamIds]):this._encoder.encode([ln.StreamInvocation,e.headers||{},e.invocationId,e.target,e.arguments]),yo.write(t.slice())}_writeStreamItem(e){const t=this._encoder.encode([ln.StreamItem,e.headers||{},e.invocationId,e.item]);return yo.write(t.slice())}_writeCompletion(e){const t=e.error?this._errorResult:void 0!==e.result?this._nonVoidResult:this._voidResult;let n;switch(t){case this._errorResult:n=this._encoder.encode([ln.Completion,e.headers||{},e.invocationId,t,e.error]);break;case this._voidResult:n=this._encoder.encode([ln.Completion,e.headers||{},e.invocationId,t]);break;case this._nonVoidResult:n=this._encoder.encode([ln.Completion,e.headers||{},e.invocationId,t,e.result])}return yo.write(n.slice())}_writeCancelInvocation(e){const t=this._encoder.encode([ln.CancelInvocation,e.headers||{},e.invocationId]);return yo.write(t.slice())}_writeClose(){const e=this._encoder.encode([ln.Close,null]);return yo.write(e.slice())}_writeAck(e){const t=this._encoder.encode([ln.Ack,e.sequenceId]);return yo.write(t.slice())}_writeSequence(e){const t=this._encoder.encode([ln.Sequence,e.sequenceId]);return yo.write(t.slice())}_readHeaders(e){const t=e[1];if("object"!=typeof t)throw new Error("Invalid headers.");return t}}const _o="function"==typeof TextDecoder?new TextDecoder("utf-8"):null,So=_o?_o.decode.bind(_o):function(e){let t=0;const n=e.length,o=[],r=[];for(;t65535&&(r-=65536,o.push(r>>>10&1023|55296),r=56320|1023&r),o.push(r)}o.length>1024&&(r.push(String.fromCharCode.apply(null,o)),o.length=0)}return r.push(String.fromCharCode.apply(null,o)),r.join("")},Co=Math.pow(2,32),Eo=Math.pow(2,21)-1;function Io(e,t){return e[t]|e[t+1]<<8|e[t+2]<<16|e[t+3]<<24}function ko(e,t){return e[t]+(e[t+1]<<8)+(e[t+2]<<16)+(e[t+3]<<24>>>0)}function To(e,t){const n=ko(e,t+4);if(n>Eo)throw new Error(`Cannot read uint64 with high order part ${n}, because the result would exceed Number.MAX_SAFE_INTEGER.`);return n*Co+ko(e,t)}class Ro{constructor(e){this.batchData=e;const t=new No(e);this.arrayRangeReader=new Po(e),this.arrayBuilderSegmentReader=new Mo(e),this.diffReader=new Ao(e),this.editReader=new Do(e,t),this.frameReader=new xo(e,t)}updatedComponents(){return Io(this.batchData,this.batchData.length-20)}referenceFrames(){return Io(this.batchData,this.batchData.length-16)}disposedComponentIds(){return Io(this.batchData,this.batchData.length-12)}disposedEventHandlerIds(){return Io(this.batchData,this.batchData.length-8)}updatedComponentsEntry(e,t){const n=e+4*t;return Io(this.batchData,n)}referenceFramesEntry(e,t){return e+20*t}disposedComponentIdsEntry(e,t){const n=e+4*t;return Io(this.batchData,n)}disposedEventHandlerIdsEntry(e,t){const n=e+8*t;return To(this.batchData,n)}}class Ao{constructor(e){this.batchDataUint8=e}componentId(e){return Io(this.batchDataUint8,e)}edits(e){return e+4}editsEntry(e,t){return e+16*t}}class Do{constructor(e,t){this.batchDataUint8=e,this.stringReader=t}editType(e){return Io(this.batchDataUint8,e)}siblingIndex(e){return Io(this.batchDataUint8,e+4)}newTreeIndex(e){return Io(this.batchDataUint8,e+8)}moveToSiblingIndex(e){return Io(this.batchDataUint8,e+8)}removedAttributeName(e){const t=Io(this.batchDataUint8,e+12);return this.stringReader.readString(t)}}class xo{constructor(e,t){this.batchDataUint8=e,this.stringReader=t}frameType(e){return Io(this.batchDataUint8,e)}subtreeLength(e){return Io(this.batchDataUint8,e+4)}elementReferenceCaptureId(e){const t=Io(this.batchDataUint8,e+4);return this.stringReader.readString(t)}componentId(e){return Io(this.batchDataUint8,e+8)}elementName(e){const t=Io(this.batchDataUint8,e+8);return this.stringReader.readString(t)}textContent(e){const t=Io(this.batchDataUint8,e+4);return this.stringReader.readString(t)}markupContent(e){const t=Io(this.batchDataUint8,e+4);return this.stringReader.readString(t)}attributeName(e){const t=Io(this.batchDataUint8,e+4);return this.stringReader.readString(t)}attributeValue(e){const t=Io(this.batchDataUint8,e+8);return this.stringReader.readString(t)}attributeEventHandlerId(e){return To(this.batchDataUint8,e+12)}}class No{constructor(e){this.batchDataUint8=e,this.stringTableStartIndex=Io(e,e.length-4)}readString(e){if(-1===e)return null;{const n=Io(this.batchDataUint8,this.stringTableStartIndex+4*e),o=function(e,t){let n=0,o=0;for(let r=0;r<4;r++){const i=e[t+r];if(n|=(127&i)<this.nextBatchId)return this.fatalError?(this.logger.log(yt.Debug,`Received a new batch ${e} but errored out on a previous batch ${this.nextBatchId-1}`),void await n.send("OnRenderCompleted",this.nextBatchId-1,this.fatalError.toString())):void this.logger.log(yt.Debug,`Waiting for batch ${this.nextBatchId}. Batch ${e} not processed.`);try{this.nextBatchId++,this.logger.log(yt.Debug,`Applying batch ${e}.`),xe(Bn.Server,new Ro(t)),await this.completeBatch(n,e)}catch(t){throw this.fatalError=t.toString(),this.logger.log(yt.Error,`There was an error applying batch ${e}.`),n.send("OnRenderCompleted",e,t.toString()),t}}getLastBatchid(){return this.nextBatchId-1}async completeBatch(e,t){try{await e.send("OnRenderCompleted",t,null)}catch{this.logger.log(yt.Warning,`Failed to deliver completion notification for render '${t}'.`)}}}let Lo=!1;function Bo(){const e=document.querySelector("#blazor-error-ui");e&&(e.style.display="block"),Lo||(Lo=!0,document.querySelectorAll("#blazor-error-ui .reload").forEach((e=>{e.onclick=function(e){location.reload(),e.preventDefault()}})),document.querySelectorAll("#blazor-error-ui .dismiss").forEach((e=>{e.onclick=function(e){const t=document.querySelector("#blazor-error-ui");t&&(t.style.display="none"),e.preventDefault()}})))}class Oo{constructor(t,n,o,r){this._firstUpdate=!0,this._renderingFailed=!1,this._disposed=!1,this._circuitId=void 0,this._applicationState=n,this._componentManager=t,this._options=o,this._logger=r,this._renderQueue=new Uo(this._logger),this._dispatcher=e.attachDispatcher(this)}start(){if(this.isDisposedOrDisposing())throw new Error("Cannot start a disposed circuit.");return this._startPromise||(this._startPromise=this.startCore()),this._startPromise}updateRootComponents(e){var t,n;return this._firstUpdate?(this._firstUpdate=!1,null===(t=this._connection)||void 0===t?void 0:t.send("UpdateRootComponents",e,this._applicationState)):null===(n=this._connection)||void 0===n?void 0:n.send("UpdateRootComponents",e,"")}async startCore(){if(this._connection=await this.startConnection(),this._connection.state!==hn.Connected)return!1;const e=JSON.stringify(this._componentManager.initialComponents.map((e=>Ut(e))));if(this._circuitId=await this._connection.invoke("StartCircuit",Je.getBaseURI(),Je.getLocationHref(),e,this._applicationState||""),!this._circuitId)return!1;for(const e of this._options.circuitHandlers)e.onCircuitOpened&&e.onCircuitOpened();return!0}async startConnection(){var e,t;const n=new bo;n.name="blazorpack";const o=(new Ln).withUrl("_blazor").withHubProtocol(n);this._options.configureSignalR(o);const r=o.build();r.on("JS.AttachComponent",((e,t)=>Ae(Bn.Server,this.resolveElement(t),e,!1))),r.on("JS.BeginInvokeJS",this._dispatcher.beginInvokeJSFromDotNet.bind(this._dispatcher)),r.on("JS.EndInvokeDotNet",this._dispatcher.endInvokeDotNetFromJS.bind(this._dispatcher)),r.on("JS.ReceiveByteArray",this._dispatcher.receiveByteArray.bind(this._dispatcher)),r.on("JS.BeginTransmitStream",(e=>{const t=new ReadableStream({start:t=>{r.stream("SendDotNetStreamToJS",e).subscribe({next:e=>t.enqueue(e),complete:()=>t.close(),error:e=>t.error(e)})}});this._dispatcher.supplyDotNetStream(e,t)})),r.on("JS.RenderBatch",(async(e,t)=>{var n,o;this._logger.log(Ot.Debug,`Received render batch with id ${e} and ${t.byteLength} bytes.`),await this._renderQueue.processBatch(e,t,this._connection),null===(o=(n=this._componentManager).onAfterRenderBatch)||void 0===o||o.call(n,Bn.Server)})),r.on("JS.EndUpdateRootComponents",(e=>{var t,n;null===(n=(t=this._componentManager).onAfterUpdateRootComponents)||void 0===n||n.call(t,e)})),r.on("JS.EndLocationChanging",vt._internal.navigationManager.endLocationChanging),r.onclose((e=>{this._interopMethodsForReconnection=function(e){const t=C.get(e);if(!t)throw new Error(`Interop methods are not registered for renderer ${e}`);return C.delete(e),t}(Bn.Server),this._disposed||this._renderingFailed||this._options.reconnectionHandler.onConnectionDown(this._options.reconnectionOptions,e)})),r.on("JS.Error",(e=>{this._renderingFailed=!0,this.unhandledError(e),Bo()}));try{await r.start()}catch(e){if(this.unhandledError(e),"FailedToNegotiateWithServerError"===e.errorType)throw e;Bo(),e.innerErrors&&(e.innerErrors.some((e=>"UnsupportedTransportError"===e.errorType&&e.transport===In.WebSockets))?this._logger.log(Ot.Error,"Unable to connect, please ensure you are using an updated browser that supports WebSockets."):e.innerErrors.some((e=>"FailedToStartTransportError"===e.errorType&&e.transport===In.WebSockets))?this._logger.log(Ot.Error,"Unable to connect, please ensure WebSockets are available. A VPN or proxy may be blocking the connection."):e.innerErrors.some((e=>"DisabledTransportError"===e.errorType&&e.transport===In.LongPolling))&&this._logger.log(Ot.Error,"Unable to initiate a SignalR connection to the server. This might be because the server is not configured to support WebSockets. For additional details, visit https://aka.ms/blazor-server-websockets-error."))}return(null===(t=null===(e=r.connection)||void 0===e?void 0:e.features)||void 0===t?void 0:t.inherentKeepAlive)&&this._logger.log(Ot.Warning,"Failed to connect via WebSockets, using the Long Polling fallback transport. This may be due to a VPN or proxy blocking the connection. To troubleshoot this, visit https://aka.ms/blazor-server-using-fallback-long-polling."),r}async disconnect(){var e;await(null===(e=this._connection)||void 0===e?void 0:e.stop())}async reconnect(){if(!this._circuitId)throw new Error("Circuit host not initialized.");return this._connection.state===hn.Connected||(this._connection=await this.startConnection(),this._interopMethodsForReconnection&&(k(Bn.Server,this._interopMethodsForReconnection),this._interopMethodsForReconnection=void 0),!!await this._connection.invoke("ConnectCircuit",this._circuitId)&&(this._options.reconnectionHandler.onConnectionUp(),!0))}beginInvokeDotNetFromJS(e,t,n,o,r){this.throwIfDispatchingWhenDisposed(),this._connection.send("BeginInvokeDotNetFromJS",e?e.toString():null,t,n,o||0,r)}endInvokeJSFromDotNet(e,t,n){this.throwIfDispatchingWhenDisposed(),this._connection.send("EndInvokeJSFromDotNet",e,t,n)}sendByteArray(e,t){this.throwIfDispatchingWhenDisposed(),this._connection.send("ReceiveByteArray",e,t)}throwIfDispatchingWhenDisposed(){if(this._disposed)throw new Error("The circuit associated with this dispatcher is no longer available.")}sendLocationChanged(e,t,n){return this._connection.send("OnLocationChanged",e,t,n)}sendLocationChanging(e,t,n,o){return this._connection.send("OnLocationChanging",e,t,n,o)}sendJsDataStream(e,t,n){return function(e,t,n,o){setTimeout((async()=>{let r=5,i=(new Date).valueOf();try{const s=t instanceof Blob?t.size:t.byteLength;let a=0,c=0;for(;a1)await e.send("ReceiveJSDataChunk",n,c,h,null);else{if(!await e.invoke("ReceiveJSDataChunk",n,c,h,null))break;const t=(new Date).valueOf(),o=t-i;i=t,r=Math.max(1,Math.round(500/Math.max(1,o)))}a+=l,c++}}catch(t){await e.send("ReceiveJSDataChunk",n,-1,null,t.toString())}}),0)}(this._connection,e,t,n)}resolveElement(e){const t=w(e);if(t)return W(t,!0);const n=Number.parseInt(e);if(!Number.isNaN(n))return H(this._componentManager.resolveRootComponent(n));throw new Error(`Invalid sequence number or identifier '${e}'.`)}getRootComponentManager(){return this._componentManager}unhandledError(e){this._logger.log(Ot.Error,e),this.disconnect()}getDisconnectFormData(){const e=new FormData,t=this._circuitId;return e.append("circuitId",t),e}didRenderingFail(){return this._renderingFailed}isDisposedOrDisposing(){return void 0!==this._disposePromise}sendDisconnectBeacon(){if(this._disposed)return;const e=this.getDisconnectFormData();this._disposed=navigator.sendBeacon("_blazor/disconnect",e)}dispose(){return this._disposePromise||(this._disposePromise=this.disposeCore()),this._disposePromise}async disposeCore(){var e;if(!this._startPromise)return void(this._disposed=!0);await this._startPromise,this._disposed=!0,null===(e=this._connection)||void 0===e||e.stop();const t=this.getDisconnectFormData();fetch("http://github.com/_blazor/disconnect",{method:"POST",body:t});for(const e of this._options.circuitHandlers)e.onCircuitClosed&&e.onCircuitClosed()}}function Fo(e){const t={...$o,...e};return e&&e.reconnectionOptions&&(t.reconnectionOptions={...$o.reconnectionOptions,...e.reconnectionOptions}),t}const $o={configureSignalR:e=>{},logLevel:yt.Warning,initializers:void 0,circuitHandlers:[],reconnectionOptions:{maxRetries:8,retryIntervalMilliseconds:2e4,dialogId:"components-reconnect-modal"}};class Ho{constructor(e,t,n,o){this.maxRetries=t,this.document=n,this.logger=o,this.modal=this.document.createElement("div"),this.modal.id=e,this.maxRetries=t,this.modal.style.cssText=["position: fixed","top: 0","right: 0","bottom: 0","left: 0","z-index: 1050","display: none","overflow: hidden","background-color: #fff","opacity: 0.8","text-align: center","font-weight: bold","transition: visibility 0s linear 500ms"].join(";"),this.message=this.document.createElement("h5"),this.message.style.cssText="margin-top: 20px",this.button=this.document.createElement("button"),this.button.style.cssText="margin:5px auto 5px",this.button.textContent="Retry";const r=this.document.createElement("a");r.addEventListener("click",(()=>location.reload())),r.textContent="reload",this.reloadParagraph=this.document.createElement("p"),this.reloadParagraph.textContent="Alternatively, ",this.reloadParagraph.appendChild(r),this.modal.appendChild(this.message),this.modal.appendChild(this.button),this.modal.appendChild(this.reloadParagraph),this.loader=this.getLoader(),this.message.after(this.loader),this.button.addEventListener("click",(async()=>{this.show();try{await vt.reconnect()||this.rejected()}catch(e){this.logger.log(yt.Error,e),this.failed()}}))}show(){this.document.contains(this.modal)||this.document.body.appendChild(this.modal),this.modal.style.display="block",this.loader.style.display="inline-block",this.button.style.display="none",this.reloadParagraph.style.display="none",this.message.textContent="Attempting to reconnect to the server...",this.modal.style.visibility="hidden",setTimeout((()=>{this.modal.style.visibility="visible"}),0)}update(e){this.message.textContent=`Attempting to reconnect to the server: ${e} of ${this.maxRetries}`}hide(){this.modal.style.display="none"}failed(){this.button.style.display="block",this.reloadParagraph.style.display="none",this.loader.style.display="none";const e=this.document.createTextNode("Reconnection failed. Try "),t=this.document.createElement("a");t.textContent="reloading",t.setAttribute("href",""),t.addEventListener("click",(()=>location.reload()));const n=this.document.createTextNode(" the page if you're unable to reconnect.");this.message.replaceChildren(e,t,n)}rejected(){this.button.style.display="none",this.reloadParagraph.style.display="none",this.loader.style.display="none";const e=this.document.createTextNode("Could not reconnect to the server. "),t=this.document.createElement("a");t.textContent="Reload",t.setAttribute("href",""),t.addEventListener("click",(()=>location.reload()));const n=this.document.createTextNode(" the page to restore functionality.");this.message.replaceChildren(e,t,n)}getLoader(){const e=this.document.createElement("div");return e.style.cssText=["border: 0.3em solid #f3f3f3","border-top: 0.3em solid #3498db","border-radius: 50%","width: 2em","height: 2em","display: inline-block"].join(";"),e.animate([{transform:"rotate(0deg)"},{transform:"rotate(360deg)"}],{duration:2e3,iterations:1/0}),e}}class Wo{constructor(e,t,n){this.dialog=e,this.maxRetries=t,this.document=n,this.document=n;const o=this.document.getElementById(Wo.MaxRetriesId);o&&(o.innerText=this.maxRetries.toString())}show(){this.removeClasses(),this.dialog.classList.add(Wo.ShowClassName)}update(e){const t=this.document.getElementById(Wo.CurrentAttemptId);t&&(t.innerText=e.toString())}hide(){this.removeClasses(),this.dialog.classList.add(Wo.HideClassName)}failed(){this.removeClasses(),this.dialog.classList.add(Wo.FailedClassName)}rejected(){this.removeClasses(),this.dialog.classList.add(Wo.RejectedClassName)}removeClasses(){this.dialog.classList.remove(Wo.ShowClassName,Wo.HideClassName,Wo.FailedClassName,Wo.RejectedClassName)}}Wo.ShowClassName="components-reconnect-show",Wo.HideClassName="components-reconnect-hide",Wo.FailedClassName="components-reconnect-failed",Wo.RejectedClassName="components-reconnect-rejected",Wo.MaxRetriesId="components-reconnect-max-retries",Wo.CurrentAttemptId="components-reconnect-current-attempt";class jo{constructor(e,t,n){this._currentReconnectionProcess=null,this._logger=e,this._reconnectionDisplay=t,this._reconnectCallback=n||vt.reconnect}onConnectionDown(e,t){if(!this._reconnectionDisplay){const t=document.getElementById(e.dialogId);this._reconnectionDisplay=t?new Wo(t,e.maxRetries,document):new Ho(e.dialogId,e.maxRetries,document,this._logger)}this._currentReconnectionProcess||(this._currentReconnectionProcess=new zo(e,this._logger,this._reconnectCallback,this._reconnectionDisplay))}onConnectionUp(){this._currentReconnectionProcess&&(this._currentReconnectionProcess.dispose(),this._currentReconnectionProcess=null)}}class zo{constructor(e,t,n,o){this.logger=t,this.reconnectCallback=n,this.isDisposed=!1,this.reconnectDisplay=o,this.reconnectDisplay.show(),this.attemptPeriodicReconnection(e)}dispose(){this.isDisposed=!0,this.reconnectDisplay.hide()}async attemptPeriodicReconnection(e){for(let t=0;tzo.MaximumFirstRetryInterval?zo.MaximumFirstRetryInterval:e.retryIntervalMilliseconds;if(await this.delay(n),this.isDisposed)break;try{return await this.reconnectCallback()?void 0:void this.reconnectDisplay.rejected()}catch(e){this.logger.log(yt.Error,e)}}this.reconnectDisplay.failed()}delay(e){return new Promise((t=>setTimeout(t,e)))}}zo.MaximumFirstRetryInterval=3e3;class qo{constructor(e=!0,t,n,o=0){this.singleRuntime=e,this.logger=t,this.webRendererId=o,this.afterStartedCallbacks=[],n&&this.afterStartedCallbacks.push(...n)}async importInitializersAsync(e,t){await Promise.all(e.map((e=>async function(e,n){const o=function(e){const t=document.baseURI;return t.endsWith("/")?`${t}${e}`:`${t}/${e}`}(n),r=await import(o);if(void 0!==r){if(e.singleRuntime){const{beforeStart:n,afterStarted:o,beforeWebAssemblyStart:s,afterWebAssemblyStarted:a,beforeServerStart:c,afterServerStarted:l}=r;let h=n;e.webRendererId===Bn.Server&&c&&(h=c),e.webRendererId===Bn.WebAssembly&&s&&(h=s);let d=o;return e.webRendererId===Bn.Server&&l&&(d=l),e.webRendererId===Bn.WebAssembly&&a&&(d=a),i(e,h,d,t)}return function(e,t,n){var r;const s=n[0],{beforeStart:a,afterStarted:c,beforeWebStart:l,afterWebStarted:h,beforeWebAssemblyStart:d,afterWebAssemblyStarted:u,beforeServerStart:p,afterServerStarted:f}=t,g=!(l||h||d||u||p||f||!a&&!c),m=g&&s.enableClassicInitializers;if(g&&!s.enableClassicInitializers)null===(r=e.logger)||void 0===r||r.log(yt.Warning,`Initializer '${o}' will be ignored because multiple runtimes are available. use 'before(web|webAssembly|server)Start' and 'after(web|webAssembly|server)Started?' instead.)`);else if(m)return i(e,a,c,n);if(function(e){e.webAssembly?e.webAssembly.initializers||(e.webAssembly.initializers={beforeStart:[],afterStarted:[]}):e.webAssembly={initializers:{beforeStart:[],afterStarted:[]}},e.circuit?e.circuit.initializers||(e.circuit.initializers={beforeStart:[],afterStarted:[]}):e.circuit={initializers:{beforeStart:[],afterStarted:[]}}}(s),d&&s.webAssembly.initializers.beforeStart.push(d),u&&s.webAssembly.initializers.afterStarted.push(u),p&&s.circuit.initializers.beforeStart.push(p),f&&s.circuit.initializers.afterStarted.push(f),h&&e.afterStartedCallbacks.push(h),l)return l(s)}(e,r,t)}function i(e,t,n,o){if(n&&e.afterStartedCallbacks.push(n),t)return t(...o)}}(this,e))))}async invokeAfterStartedCallbacks(e){const t=function(e){var t;return null===(t=I.get(e))||void 0===t?void 0:t[1]}(this.webRendererId);t&&await t,await Promise.all(this.afterStartedCallbacks.map((t=>t(e))))}}let Jo,Ko,Vo,Xo,Go,Yo,Qo,Zo;function er(e){if(Xo)throw new Error("Circuit options have already been configured.");if(Xo)throw new Error("WebAssembly options have already been configured.");Jo=async function(e){const t=await e;Xo=Fo(t)}(e)}function tr(e){if(void 0!==Yo)throw new Error("Blazor Server has already started.");return Yo=new Promise(nr.bind(null,e)),Yo}async function nr(e,t,n){await Jo;const o=await async function(e){if(e.initializers)return await Promise.all(e.initializers.beforeStart.map((t=>t(e)))),new qo(!1,void 0,e.initializers.afterStarted,Bn.Server);const t=await fetch("http://github.com/_blazor/initializers",{method:"GET",credentials:"include",cache:"no-cache"}),n=await t.json(),o=new qo(!0,void 0,void 0,Bn.Server);return await o.importInitializersAsync(n,[e]),o}(Xo);if(Ko=It(document)||"",Go=new bt(Xo.logLevel),Vo=new Oo(e,Ko,Xo,Go),Go.log(yt.Information,"Starting up Blazor server-side application."),vt.reconnect=async()=>!(Vo.didRenderingFail()||!await Vo.reconnect()&&(Go.log(yt.Information,"Reconnection attempt to the circuit was rejected by the server. This may indicate that the associated state is no longer available on the server."),1)),vt.defaultReconnectionHandler=new jo(Go),Xo.reconnectionHandler=Xo.reconnectionHandler||vt.defaultReconnectionHandler,vt._internal.navigationManager.listenForNavigationEvents(Bn.Server,((e,t,n)=>Vo.sendLocationChanged(e,t,n)),((e,t,n,o)=>Vo.sendLocationChanging(e,t,n,o))),vt._internal.forceCloseConnection=()=>Vo.disconnect(),vt._internal.sendJSDataStream=(e,t,n)=>Vo.sendJsDataStream(e,t,n),!await Vo.start())return Go.log(yt.Error,"Failed to start the circuit."),void t();const r=()=>{Vo.sendDisconnectBeacon()};vt.disconnect=r,window.addEventListener("unload",r,{capture:!1,once:!0}),Go.log(yt.Information,"Blazor server-side application started."),o.invokeAfterStartedCallbacks(vt),t()}async function or(){if(!Yo)throw new Error("Cannot start the circuit until Blazor Server has started.");return!(!Vo||Vo.isDisposedOrDisposing())||(Qo?await Qo:(await Yo,(!Vo||!Vo.didRenderingFail())&&(Vo&&Vo.isDisposedOrDisposing()&&(Ko=It(document)||"",Vo=new Oo(Vo.getRootComponentManager(),Ko,Xo,Go)),Qo=Vo.start(),async function(e){await e,Qo===e&&(Qo=void 0)}(Qo),Qo)))}function rr(e){if(Vo&&!Vo.isDisposedOrDisposing())return Vo.updateRootComponents(e);!async function(e){await Yo,await or()&&Vo.updateRootComponents(e)}(e)}function ir(e){return Zo=e,Zo}var sr,ar;const cr=navigator,lr=cr.userAgentData&&cr.userAgentData.brands,hr=lr&&lr.length>0?lr.some((e=>"Google Chrome"===e.brand||"Microsoft Edge"===e.brand||"Chromium"===e.brand)):window.chrome,dr=null!==(ar=null===(sr=cr.userAgentData)||void 0===sr?void 0:sr.platform)&&void 0!==ar?ar:navigator.platform;function ur(e){return 0!==e.debugLevel&&(hr||navigator.userAgent.includes("Firefox"))}let pr,fr,gr,mr,vr,yr,wr;const br=Math.pow(2,32),_r=Math.pow(2,21)-1;let Sr=null;function Cr(e){return fr.getI32(e)}const Er={load:function(e,t){return async function(e,t){const{dotnet:n}=await async function(e){if("undefined"==typeof WebAssembly||!WebAssembly.validate)throw new Error("This browser does not support WebAssembly.");let t="_framework/dotnet.js";if(e.loadBootResource){const n="dotnetjs",o=e.loadBootResource(n,"dotnet.js",t,"","js-module-dotnet");if("string"==typeof o)t=o;else if(o)throw new Error(`For a ${n} resource, custom loaders must supply a URI string.`)}const n=new URL(t,document.baseURI).toString();return await import(n)}(e),o=function(e,t){const n={maxParallelDownloads:1e6,enableDownloadRetry:!1,applicationEnvironment:e.environment},o={...window.Module||{},onConfigLoaded:async n=>{n.environmentVariables||(n.environmentVariables={}),"sharded"===n.globalizationMode&&(n.environmentVariables.__BLAZOR_SHARDED_ICU="1"),vt._internal.getApplicationEnvironment=()=>n.applicationEnvironment,null==t||t(n),wr=await async function(e,t){var n,o,r;if(e.initializers)return await Promise.all(e.initializers.beforeStart.map((t=>t(e)))),new qo(!1,void 0,e.initializers.afterStarted,Bn.WebAssembly);{const i=[e,null!==(o=null===(n=t.resources)||void 0===n?void 0:n.extensions)&&void 0!==o?o:{}],s=new qo(!0,void 0,void 0,Bn.WebAssembly),a=Object.keys((null===(r=null==t?void 0:t.resources)||void 0===r?void 0:r.libraryInitializers)||{});return await s.importInitializersAsync(a,i),s}}(e,n)},onDownloadResourceProgress:Ir,config:n,disableDotnet6Compatibility:!1,out:Tr,err:Rr};return o}(e,t);e.applicationCulture&&n.withApplicationCulture(e.applicationCulture),e.environment&&n.withApplicationEnvironment(e.environment),e.loadBootResource&&n.withResourceLoader(e.loadBootResource),n.withModuleConfig(o),e.configureRuntime&&e.configureRuntime(n),yr=await n.create()}(e,t)},start:function(){return async function(){if(!yr)throw new Error("The runtime must be loaded it gets configured.");const{MONO:t,BINDING:n,Module:o,setModuleImports:r,INTERNAL:i,getConfig:s,invokeLibraryInitializers:a}=yr;gr=o,pr=n,fr=t,vr=i,function(e){const t=dr.match(/^Mac/i)?"Cmd":"Alt";ur(e)&&console.info(`Debugging hotkey: Shift+${t}+D (when application has focus)`),document.addEventListener("keydown",(t=>{t.shiftKey&&(t.metaKey||t.altKey)&&"KeyD"===t.code&&(ur(e)?navigator.userAgent.includes("Firefox")?async function(){const e=await fetch(`_framework/debug?url=${encodeURIComponent(location.href)}&isFirefox=true`);200!==e.status&&console.warn(await e.text())}():hr?function(){const e=document.createElement("a");e.href=`_framework/debug?url=${encodeURIComponent(location.href)}`,e.target="_blank",e.rel="noopener noreferrer",e.click()}():console.error("Currently, only Microsoft Edge (80+), Google Chrome, or Chromium, are supported for debugging."):console.error("Cannot start debugging, because the application was not compiled with debugging enabled."))}))}(s()),vt.runtime=yr,vt._internal.dotNetCriticalError=Rr,r("blazor-internal",{Blazor:{_internal:vt._internal}});const c=await yr.getAssemblyExports("Microsoft.AspNetCore.Components.WebAssembly");return Object.assign(vt._internal,{dotNetExports:{...c.Microsoft.AspNetCore.Components.WebAssembly.Services.DefaultWebAssemblyJSRuntime}}),mr=e.attachDispatcher({beginInvokeDotNetFromJS:(e,t,n,o,r)=>{if(Dr(),!o&&!t)throw new Error("Either assemblyName or dotNetObjectId must have a non null value.");const i=o?o.toString():t;vt._internal.dotNetExports.BeginInvokeDotNet(e?e.toString():null,i,n,r)},endInvokeJSFromDotNet:(e,t,n)=>{vt._internal.dotNetExports.EndInvokeJS(n)},sendByteArray:(e,t)=>{vt._internal.dotNetExports.ReceiveByteArrayFromJS(e,t)},invokeDotNetFromJS:(e,t,n,o)=>(Dr(),vt._internal.dotNetExports.InvokeDotNet(e||null,t,null!=n?n:0,o))}),{invokeLibraryInitializers:a}}()},callEntryPoint:async function(){try{await yr.runMain(yr.getConfig().mainAssemblyName,[])}catch(e){console.error(e),Bo()}},toUint8Array:function(e){const t=Ar(e),n=Cr(t),o=new Uint8Array(n);return o.set(gr.HEAPU8.subarray(t+4,t+4+n)),o},getArrayLength:function(e){return Cr(Ar(e))},getArrayEntryPtr:function(e,t,n){return Ar(e)+4+t*n},getObjectFieldsBaseAddress:function(e){return e+8},readInt16Field:function(e,t){return n=e+(t||0),fr.getI16(n);var n},readInt32Field:function(e,t){return Cr(e+(t||0))},readUint64Field:function(e,t){return function(e){const t=e>>2,n=gr.HEAPU32[t+1];if(n>_r)throw new Error(`Cannot read uint64 with high order part ${n}, because the result would exceed Number.MAX_SAFE_INTEGER.`);return n*br+gr.HEAPU32[t]}(e+(t||0))},readFloatField:function(e,t){return n=e+(t||0),fr.getF32(n);var n},readObjectField:function(e,t){return Cr(e+(t||0))},readStringField:function(e,t,n){const o=Cr(e+(t||0));if(0===o)return null;if(n){const e=pr.unbox_mono_obj(o);return"boolean"==typeof e?e?"":null:e}return pr.conv_string(o)},readStructField:function(e,t){return e+(t||0)},beginHeapLock:function(){return Dr(),Sr=xr.create(),Sr},invokeWhenHeapUnlocked:function(e){Sr?Sr.enqueuePostReleaseAction(e):e()}};function Ir(e,t){const n=e/t*100;document.documentElement.style.setProperty("--blazor-load-percentage",`${n}%`),document.documentElement.style.setProperty("--blazor-load-percentage-text",`"${Math.floor(n)}%"`)}const kr=["DEBUGGING ENABLED"],Tr=e=>kr.indexOf(e)<0&&console.log(e),Rr=e=>{console.error(e||"(null)"),Bo()};function Ar(e){return e+12}function Dr(){if(Sr)throw new Error("Assertion failed - heap is currently locked")}class xr{enqueuePostReleaseAction(e){this.postReleaseActions||(this.postReleaseActions=[]),this.postReleaseActions.push(e)}release(){var e;if(Sr!==this)throw new Error("Trying to release a lock which isn't current");for(vr.mono_wasm_gc_unlock(),Sr=null;null===(e=this.postReleaseActions)||void 0===e?void 0:e.length;)this.postReleaseActions.shift()(),Dr()}static create(){return vr.mono_wasm_gc_lock(),new xr}}class Nr{constructor(e){this.batchAddress=e,this.arrayRangeReader=Pr,this.arrayBuilderSegmentReader=Mr,this.diffReader=Ur,this.editReader=Lr,this.frameReader=Br}updatedComponents(){return Zo.readStructField(this.batchAddress,0)}referenceFrames(){return Zo.readStructField(this.batchAddress,Pr.structLength)}disposedComponentIds(){return Zo.readStructField(this.batchAddress,2*Pr.structLength)}disposedEventHandlerIds(){return Zo.readStructField(this.batchAddress,3*Pr.structLength)}updatedComponentsEntry(e,t){return Or(e,t,Ur.structLength)}referenceFramesEntry(e,t){return Or(e,t,Br.structLength)}disposedComponentIdsEntry(e,t){const n=Or(e,t,4);return Zo.readInt32Field(n)}disposedEventHandlerIdsEntry(e,t){const n=Or(e,t,8);return Zo.readUint64Field(n)}}const Pr={structLength:8,values:e=>Zo.readObjectField(e,0),count:e=>Zo.readInt32Field(e,4)},Mr={structLength:12,values:e=>{const t=Zo.readObjectField(e,0),n=Zo.getObjectFieldsBaseAddress(t);return Zo.readObjectField(n,0)},offset:e=>Zo.readInt32Field(e,4),count:e=>Zo.readInt32Field(e,8)},Ur={structLength:4+Mr.structLength,componentId:e=>Zo.readInt32Field(e,0),edits:e=>Zo.readStructField(e,4),editsEntry:(e,t)=>Or(e,t,Lr.structLength)},Lr={structLength:20,editType:e=>Zo.readInt32Field(e,0),siblingIndex:e=>Zo.readInt32Field(e,4),newTreeIndex:e=>Zo.readInt32Field(e,8),moveToSiblingIndex:e=>Zo.readInt32Field(e,8),removedAttributeName:e=>Zo.readStringField(e,16)},Br={structLength:36,frameType:e=>Zo.readInt16Field(e,4),subtreeLength:e=>Zo.readInt32Field(e,8),elementReferenceCaptureId:e=>Zo.readStringField(e,16),componentId:e=>Zo.readInt32Field(e,12),elementName:e=>Zo.readStringField(e,16),textContent:e=>Zo.readStringField(e,16),markupContent:e=>Zo.readStringField(e,16),attributeName:e=>Zo.readStringField(e,16),attributeValue:e=>Zo.readStringField(e,24,!0),attributeEventHandlerId:e=>Zo.readUint64Field(e,8)};function Or(e,t,n){return Zo.getArrayEntryPtr(e,t,n)}class Fr{constructor(e){this.componentManager=e}resolveRegisteredElement(e){const t=Number.parseInt(e);if(!Number.isNaN(t))return H(this.componentManager.resolveRootComponent(t))}getParameterValues(e){return this.componentManager.initialComponents[e].parameterValues}getParameterDefinitions(e){return this.componentManager.initialComponents[e].parameterDefinitions}getTypeName(e){return this.componentManager.initialComponents[e].typeName}getAssembly(e){return this.componentManager.initialComponents[e].assembly}getCount(){return this.componentManager.initialComponents.length}}let $r,Hr,Wr,jr,zr,qr=!1,Jr=!1,Kr=!0,Vr=!1;const Xr=new Promise((e=>{zr=e}));let Gr;const Yr=new Promise((e=>{Gr=e}));let Qr;function Zr(e){if(void 0!==jr)throw new Error("Blazor WebAssembly has already started.");return jr=new Promise(ei.bind(null,e)),jr}async function ei(e,t,n){(function(){if(window.parent!==window&&!window.opener&&window.frameElement){const e=window.sessionStorage&&window.sessionStorage["Microsoft.AspNetCore.Components.WebAssembly.Authentication.CachedAuthSettings"],t=e&&JSON.parse(e);return t&&t.redirect_uri&&location.href.startsWith(t.redirect_uri)}return!1})()&&await new Promise((()=>{}));const o=ti();!function(e){const t=D;D=(e,n,o)=>{((e,t,n)=>{const o=De(e);(null==o?void 0:o.eventDelegator.getHandler(t))&&Er.invokeWhenHeapUnlocked(n)})(e,n,(()=>t(e,n,o)))}}(),vt._internal.applyHotReload=(e,t,n,o)=>{mr.invokeDotNetStaticMethod("Microsoft.AspNetCore.Components.WebAssembly","ApplyHotReloadDelta",e,t,n,o)},vt._internal.getApplyUpdateCapabilities=()=>mr.invokeDotNetStaticMethod("Microsoft.AspNetCore.Components.WebAssembly","GetApplyUpdateCapabilities"),vt._internal.invokeJSFromDotNet=oi,vt._internal.invokeJSJson=ri,vt._internal.endInvokeDotNetFromJS=ii,vt._internal.receiveWebAssemblyDotNetDataStream=si,vt._internal.receiveByteArray=ai;const r=ir(Er);vt.platform=r,vt._internal.renderBatch=(e,t)=>{const n=Er.beginHeapLock();try{xe(e,new Nr(t))}finally{n.release()}},vt._internal.navigationManager.listenForNavigationEvents(Bn.WebAssembly,(async(e,t,n)=>{await mr.invokeDotNetStaticMethodAsync("Microsoft.AspNetCore.Components.WebAssembly","NotifyLocationChanged",e,t,n)}),(async(e,t,n,o)=>{const r=await mr.invokeDotNetStaticMethodAsync("Microsoft.AspNetCore.Components.WebAssembly","NotifyLocationChangingAsync",t,n,o);vt._internal.navigationManager.endLocationChanging(e,r)}));const i=new Fr(e);let s;vt._internal.registeredComponents={getRegisteredComponentsCount:()=>i.getCount(),getAssembly:e=>i.getAssembly(e),getTypeName:e=>i.getTypeName(e),getParameterDefinitions:e=>i.getParameterDefinitions(e)||"",getParameterValues:e=>i.getParameterValues(e)||""},vt._internal.getPersistedState=()=>kt(document,Ct)||"",vt._internal.getInitialComponentsUpdate=()=>Yr,vt._internal.updateRootComponents=e=>{var t;return null===(t=vt._internal.dotNetExports)||void 0===t?void 0:t.UpdateRootComponentsCore(e)},vt._internal.endUpdateRootComponents=t=>{var n;return null===(n=e.onAfterUpdateRootComponents)||void 0===n?void 0:n.call(e,t)},vt._internal.attachRootComponentToElement=(e,t,n)=>{const o=i.resolveRegisteredElement(e);o?Ae(n,o,t,!1):function(e,t,n){const o="::before";let r=!1;if(e.endsWith("::after"))e=e.slice(0,-7),r=!0;else if(e.endsWith(o))throw new Error(`The '${o}' selector is not supported.`);const i=w(e)||document.querySelector(e);if(!i)throw new Error(`Could not find any element matching selector '${e}'.`);Ae(n,W(i,!0),t,r)}(e,t,n)};try{await o,s=await r.start()}catch(e){throw new Error(`Failed to start platform. Reason: ${e}`)}r.callEntryPoint(),wr.invokeAfterStartedCallbacks(vt),Jr=!0,t()}function ti(){return null!=Wr||(Wr=(async()=>{await Hr;const e=null!=$r?$r:{},t=null==$r?void 0:$r.configureRuntime;e.configureRuntime=e=>{null==t||t(e),Vr&&e.withEnvironmentVariable("__BLAZOR_WEBASSEMBLY_WAIT_FOR_ROOT_COMPONENTS","true")},await Er.load(e,zr),qr=!0})()),Wr}function ni(){return qr}function oi(t,n,o,r){const i=Er.readStringField(t,0),s=Er.readInt32Field(t,4),a=Er.readStringField(t,8),c=Er.readUint64Field(t,20);if(null!==a){const e=Er.readUint64Field(t,12);if(0!==e)return mr.beginInvokeJSFromDotNet(e,i,a,s,c),0;{const e=mr.invokeJSFromDotNet(i,a,s,c);return null===e?0:pr.js_string_to_mono_string(e)}}{const t=e.findJSFunction(i,c).call(null,n,o,r);switch(s){case e.JSCallResultType.Default:return t;case e.JSCallResultType.JSObjectReference:return e.createJSObjectReference(t).__jsObjectId;case e.JSCallResultType.JSStreamReference:{const n=e.createJSStreamReference(t),o=JSON.stringify(n);return pr.js_string_to_mono_string(o)}case e.JSCallResultType.JSVoidResult:return null;default:throw new Error(`Invalid JS call result type '${s}'.`)}}}function ri(e,t,n,o,r){return 0!==r?(mr.beginInvokeJSFromDotNet(r,e,o,n,t),null):mr.invokeJSFromDotNet(e,o,n,t)}function ii(e,t,n){mr.endInvokeDotNetFromJS(e,t,n)}function si(e,t,n,o){!function(e,t,n,o,r){let i=mt.get(t);if(!i){const n=new ReadableStream({start(e){mt.set(t,e),i=e}});e.supplyDotNetStream(t,n)}r?(i.error(r),mt.delete(t)):0===o?(i.close(),mt.delete(t)):i.enqueue(n.length===o?n:n.subarray(0,o))}(mr,e,t,n,o)}function ai(e,t){mr.receiveByteArray(e,t)}function ci(e,t){t.namespaceURI?e.setAttributeNS(t.namespaceURI,t.name,t.value):e.setAttribute(t.name,t.value)}Hr=new Promise((e=>{Qr=e}));const li="data-permanent";var hi,di;!function(e){e[e.None=0]="None",e[e.Some=1]="Some",e[e.Infinite=2]="Infinite"}(hi||(hi={})),function(e){e.Keep="keep",e.Update="update",e.Insert="insert",e.Delete="delete"}(di||(di={}));class ui{static create(e,t,n){return 0===t&&n===e.length?e:new ui(e,t,n)}constructor(e,t,n){this.source=e,this.startIndex=t,this.length=n}item(e){return this.source.item(e+this.startIndex)}forEach(e,t){for(let t=0;t=n&&s>=o&&r(e.item(i),t.item(s))===hi.None;)i--,s--,a++;return a}(e,t,o,o,n),i=function(e){var t;const n=[];let o=e.length-1,r=(null===(t=e[o])||void 0===t?void 0:t.length)-1;for(;o>0||r>0;){const t=0===o?di.Insert:0===r?di.Delete:e[o][r];switch(n.unshift(t),t){case di.Keep:case di.Update:o--,r--;break;case di.Insert:r--;break;case di.Delete:o--}}return n}(function(e,t,n){const o=[],r=[],i=e.length,s=t.length;if(0===i&&0===s)return[];for(let e=0;e<=i;e++)(o[e]=Array(s+1))[0]=e,r[e]=Array(s+1);const a=o[0];for(let e=1;e<=s;e++)a[e]=e;for(let a=1;a<=i;a++)for(let i=1;i<=s;i++){const s=n(e.item(a-1),t.item(i-1)),c=o[a-1][i]+1,l=o[a][i-1]+1;let h;switch(s){case hi.None:h=o[a-1][i-1];break;case hi.Some:h=o[a-1][i-1]+1;break;case hi.Infinite:h=Number.MAX_VALUE}h{history.pushState(null,"",e),Ui(e,!0)}))}function Pi(e){Oe()||Ui(location.href,!1)}function Mi(e){var t,n,o,r,i;if(Oe()||e.defaultPrevented)return;const s=e.target;if(s instanceof HTMLFormElement){if(!function(e){const t=e.getAttribute("data-enhance");return"string"==typeof t&&""===t||"true"===(null==t?void 0:t.toLowerCase())}(s))return;const a=(null===(t=e.submitter)||void 0===t?void 0:t.getAttribute("formmethod"))||s.method;if("dialog"===a)return void console.warn('A form cannot be enhanced when its method is "dialog".');const c=(null===(n=e.submitter)||void 0===n?void 0:n.getAttribute("formtarget"))||s.target;if(""!==c&&"_self"!==c)return void console.warn('A form cannot be enhanced when its target is different from the default value "_self".');e.preventDefault();const l=new URL((null===(o=e.submitter)||void 0===o?void 0:o.getAttribute("formaction"))||s.action,document.baseURI),h={method:a},d=new FormData(s),u=null===(r=e.submitter)||void 0===r?void 0:r.getAttribute("name"),p=e.submitter.getAttribute("value");u&&p&&d.append(u,p);const f=new URLSearchParams(d).toString();if("get"===h.method)l.search=f,history.pushState(null,"",l.toString());else{const t=(null===(i=e.submitter)||void 0===i?void 0:i.getAttribute("formenctype"))||s.enctype;"multipart/form-data"===t?h.body=d:(h.body=f,h.headers={"content-type":t,accept:Ii})}Ui(l.toString(),!1,h)}}async function Ui(e,t,n,o){Ri=!0,null==ki||ki.abort(),function(e,t){null==ke||ke(e,t)}(e,t),ki=new AbortController;const r=ki.signal,i=fetch(e,Object.assign({signal:r,mode:"no-cors",headers:{accept:Ii}},n));let s=null;if(await async function(e,t,n,o){let r;try{if(r=await e,!r.body)return void n(r,"");const t=r.headers.get("ssr-framing");if(!t){const e=await r.text();return void n(r,e)}let o=!0;await r.body.pipeThrough(new TextDecoderStream).pipeThrough(function(e){let t="";return new TransformStream({transform(n,o){if(t+=n,t.indexOf(e,t.length-n.length-e.length)>=0){const n=t.split(e);n.slice(0,-1).forEach((e=>o.enqueue(e))),t=n[n.length-1]}},flush(e){e.enqueue(t)}})}(`\x3c!--${t}--\x3e`)).pipeTo(new WritableStream({write(e){o?(o=!1,n(r,e)):(e=>{const t=document.createRange().createContextualFragment(e);for(;t.firstChild;)document.body.appendChild(t.firstChild)})(e)}}))}catch(e){if("AbortError"===e.name&&t.aborted)return;throw e}}(i,r,((t,r)=>{const i=!(null==n?void 0:n.method)||"get"===n.method,a=t.status>=200&&t.status<300;if("opaque"===t.type){if(i)return void Bi(e);throw new Error("Enhanced navigation does not support making a non-GET request to an endpoint that redirects to an external origin. Avoid enabling enhanced navigation for form posts that may perform external redirections.")}if(a&&"allow"!==t.headers.get("blazor-enhanced-nav")){if(i)return void Bi(e);throw new Error("Enhanced navigation does not support making a non-GET request to a non-Blazor endpoint. Avoid enabling enhanced navigation for forms that post to a non-Blazor endpoint.")}(t.redirected||o)&&((o?"get"===o:i)?history.replaceState(null,"",t.url):t.url!==location.href&&history.pushState(null,"",t.url),e=t.url);const c=t.headers.get("blazor-enhanced-nav-redirect-location");if(c)return void location.replace(c);t.redirected||i||!a||(function(e){const t=new URL(e.url),n=new URL(Ai);return t.protocol===n.protocol&&t.host===n.host&&t.port===n.port&&t.pathname===n.pathname}(t)?location.href!==Ai&&history.pushState(null,"",Ai):s=`Cannot perform enhanced form submission that changes the URL (except via a redirection), because then back/forward would not work. Either remove this form's 'action' attribute, or change its method to 'get', or do not mark it as enhanced.\nOld URL: ${location.href}\nNew URL: ${t.url}`),Ai=t.url;const l=t.headers.get("content-type");if((null==l?void 0:l.startsWith("text/html"))&&r){const e=(new DOMParser).parseFromString(r,"text/html");fi(document,e),Ti.documentUpdated()}else(null==l?void 0:l.startsWith("text/"))&&r?Li(r):a||r?i?Bi(e):Li(`Error: ${n.method} request to ${e} returned non-HTML content of type ${l||"unspecified"}.`):Li(`Error: ${t.status} ${t.statusText}`)})),!r.aborted){const t=e.indexOf("#");if(t>=0){const n=e.substring(t+1),o=document.getElementById(n);null==o||o.scrollIntoView()}if(Ri=!1,Ti.enhancedNavigationCompleted(),s)throw new Error(s)}}function Li(e){document.documentElement.textContent=e;const t=document.documentElement.style;t.fontFamily="consolas, monospace",t.whiteSpace="pre-wrap",t.padding="1rem"}function Bi(e){history.replaceState(null,"",e+"?"),location.replace(e)}let Oi,Fi=!0;class $i extends HTMLElement{connectedCallback(){var e;const t=this.parentNode;null===(e=t.parentNode)||void 0===e||e.removeChild(t),t.childNodes.forEach((e=>{if(e instanceof HTMLTemplateElement){const t=e.getAttribute("blazor-component-id");if(t)"true"!==e.getAttribute("enhanced-nav")&&ki||function(e,t){const n=function(e){const t=`bl:${e}`,n=document.createNodeIterator(document,NodeFilter.SHOW_COMMENT);let o=null;for(;(o=n.nextNode())&&o.textContent!==t;);if(!o)return null;const r=`/bl:${e}`;let i=null;for(;(i=n.nextNode())&&i.textContent!==r;);return i?{startMarker:o,endMarker:i}:null}(e);if(n){const{startMarker:e,endMarker:o}=n;if(Fi)fi({startExclusive:e,endExclusive:o},t);else{const n=o.parentNode,r=new Range;for(r.setStart(e,e.textContent.length),r.setEnd(o,0),r.deleteContents();t.childNodes[0];)n.insertBefore(t.childNodes[0],o)}Oi.documentUpdated()}}(t,e.content);else switch(e.getAttribute("type")){case"redirection":const t=Le(e.content.textContent),n="form-post"===e.getAttribute("from");"true"===e.getAttribute("enhanced")&&Pe(t)?Ui(t,!1,void 0,n?"post":"get"):n?t!==location.href&&location.assign(t):location.replace(t);break;case"error":Li(e.content.textContent||"Error")}}}))}}class Hi{constructor(e){var t;this._circuitInactivityTimeoutMs=e,this._rootComponentsBySsrComponentId=new Map,this._seenDescriptors=new Set,this._pendingOperationBatches={},this._nextOperationBatchId=1,this._nextSsrComponentId=1,this._didWebAssemblyFailToLoadQuickly=!1,this._isComponentRefreshPending=!1,this.initialComponents=[],t=()=>{this.rootComponentsMayRequireRefresh()},E.push(t)}onAfterRenderBatch(e){e===Bn.Server&&this.circuitMayHaveNoRootComponents()}onDocumentUpdated(){this.rootComponentsMayRequireRefresh()}onEnhancedNavigationCompleted(){this.rootComponentsMayRequireRefresh()}registerComponent(e){if(this._seenDescriptors.has(e))return;"auto"!==e.type&&"webassembly"!==e.type||this.startLoadingWebAssemblyIfNotStarted();const t=this._nextSsrComponentId++;this._seenDescriptors.add(e),this._rootComponentsBySsrComponentId.set(t,{descriptor:e,ssrComponentId:t})}unregisterComponent(e){this._seenDescriptors.delete(e.descriptor),this._rootComponentsBySsrComponentId.delete(e.ssrComponentId),this.circuitMayHaveNoRootComponents()}async startLoadingWebAssemblyIfNotStarted(){if(void 0!==Wr)return;Vr=!0;const e=ti();setTimeout((()=>{ni()||this.onWebAssemblyFailedToLoadQuickly()}),vt._internal.loadWebAssemblyQuicklyTimeout);const t=await Xr;(function(e){if(!e.cacheBootResources)return!1;const t=Wi(e);if(!t)return!1;const n=window.localStorage.getItem(t.key);return t.value===n})(t)||this.onWebAssemblyFailedToLoadQuickly(),await e,function(e){const t=Wi(e);t&&window.localStorage.setItem(t.key,t.value)}(t),this.rootComponentsMayRequireRefresh()}onWebAssemblyFailedToLoadQuickly(){this._didWebAssemblyFailToLoadQuickly||(this._didWebAssemblyFailToLoadQuickly=!0,this.rootComponentsMayRequireRefresh())}startCircutIfNotStarted(){return void 0===Yo?tr(this):!Vo||Vo.isDisposedOrDisposing()?or():void 0}async startWebAssemblyIfNotStarted(){this.startLoadingWebAssemblyIfNotStarted(),void 0===jr&&await Zr(this)}rootComponentsMayRequireRefresh(){this._isComponentRefreshPending||(this._isComponentRefreshPending=!0,setTimeout((()=>{this._isComponentRefreshPending=!1,this.refreshRootComponents(this._rootComponentsBySsrComponentId.values())}),0))}circuitMayHaveNoRootComponents(){if(this.rendererHasExistingOrPendingComponents(Bn.Server,"server","auto"))return clearTimeout(this._circuitInactivityTimeoutId),void(this._circuitInactivityTimeoutId=void 0);void 0===this._circuitInactivityTimeoutId&&(this._circuitInactivityTimeoutId=setTimeout((()=>{this.rendererHasExistingOrPendingComponents(Bn.Server,"server","auto")||(async function(){await(null==Vo?void 0:Vo.dispose())}(),this._circuitInactivityTimeoutId=void 0)}),this._circuitInactivityTimeoutMs))}rendererHasComponents(e){const t=De(e);return void 0!==t&&t.getRootComponentCount()>0}rendererHasExistingOrPendingComponents(e,...t){if(this.rendererHasComponents(e))return!0;for(const{descriptor:{type:n},assignedRendererId:o}of this._rootComponentsBySsrComponentId.values()){if(o===e)return!0;if(void 0===o&&-1!==t.indexOf(n))return!0}return!1}refreshRootComponents(e){const t=new Map;for(const n of e){const e=this.determinePendingOperation(n);if(!e)continue;const o=n.assignedRendererId;if(!o)throw new Error("Descriptors must be assigned a renderer ID before getting used as root components");let r=t.get(o);r||(r=[],t.set(o,r)),r.push(e)}for(const[e,n]of t){const t={batchId:this._nextOperationBatchId++,operations:n};this._pendingOperationBatches[t.batchId]=t;const o=JSON.stringify(t);e===Bn.Server?rr(o):this.updateWebAssemblyRootComponents(o)}}updateWebAssemblyRootComponents(e){Kr?(Gr(e),Kr=!1):function(e){if(!jr)throw new Error("Blazor WebAssembly has not started.");if(!vt._internal.updateRootComponents)throw new Error("Blazor WebAssembly has not initialized.");Jr?vt._internal.updateRootComponents(e):async function(e){if(await jr,!vt._internal.updateRootComponents)throw new Error("Blazor WebAssembly has not initialized.");vt._internal.updateRootComponents(e)}(e)}(e)}resolveRendererIdForDescriptor(e){switch("auto"===e.type?this.getAutoRenderMode():e.type){case"server":return this.startCircutIfNotStarted(),Bn.Server;case"webassembly":return this.startWebAssemblyIfNotStarted(),Bn.WebAssembly;case null:return null}}getAutoRenderMode(){return this.rendererHasExistingOrPendingComponents(Bn.WebAssembly,"webassembly")?"webassembly":this.rendererHasExistingOrPendingComponents(Bn.Server,"server")?"server":ni()?"webassembly":this._didWebAssemblyFailToLoadQuickly?"server":null}determinePendingOperation(e){if(t=e.descriptor,document.contains(t.start)){if(void 0===e.assignedRendererId){if(Ri||"loading"===document.readyState)return null;const t=this.resolveRendererIdForDescriptor(e.descriptor);return null===t?null:T(t)?(be(e.descriptor.start,!0),e.assignedRendererId=t,e.uniqueIdAtLastUpdate=e.descriptor.uniqueId,{type:"add",ssrComponentId:e.ssrComponentId,marker:Ut(e.descriptor)}):null}return T(e.assignedRendererId)?e.uniqueIdAtLastUpdate===e.descriptor.uniqueId?null:(e.uniqueIdAtLastUpdate=e.descriptor.uniqueId,{type:"update",ssrComponentId:e.ssrComponentId,marker:Ut(e.descriptor)}):null}return e.hasPendingRemoveOperation?null:void 0===e.assignedRendererId?(this.unregisterComponent(e),null):T(e.assignedRendererId)?(be(e.descriptor.start,!1),e.hasPendingRemoveOperation=!0,{type:"remove",ssrComponentId:e.ssrComponentId}):null;var t}resolveRootComponent(e){const t=this._rootComponentsBySsrComponentId.get(e);if(!t)throw new Error(`Could not resolve a root component with SSR component ID '${e}'.`);return t.descriptor}onAfterUpdateRootComponents(e){const t=this._pendingOperationBatches[e];delete this._pendingOperationBatches[e];for(const e of t.operations)switch(e.type){case"remove":{const t=this._rootComponentsBySsrComponentId.get(e.ssrComponentId);t&&this.unregisterComponent(t);break}}}}function Wi(e){var t;const n=null===(t=e.resources)||void 0===t?void 0:t.hash,o=e.mainAssemblyName;return n&&o?{key:`blazor-resource-hash:${o}`,value:n}:null}class ji{constructor(){this._eventListeners=new Map}static create(e){const t=new ji;return e.addEventListener=t.addEventListener.bind(t),e.removeEventListener=t.removeEventListener.bind(t),t}addEventListener(e,t){let n=this._eventListeners.get(e);n||(n=new Set,this._eventListeners.set(e,n)),n.add(t)}removeEventListener(e,t){var n;null===(n=this._eventListeners.get(e))||void 0===n||n.delete(t)}dispatchEvent(e,t){const n=this._eventListeners.get(e);if(!n)return;const o={...t,type:e};for(const e of n)e(o)}}let zi,qi=!1;function Ji(e){var t,n,o,r;if(qi)throw new Error("Blazor has already started.");qi=!0,null!==(t=(e=e||{}).logLevel)&&void 0!==t||(e.logLevel=yt.Error),vt._internal.loadWebAssemblyQuicklyTimeout=3e3,vt._internal.isBlazorWeb=!0,vt._internal.hotReloadApplied=()=>{Me()&&Ue(location.href,!0)},zi=new Hi(null!==(o=null===(n=null==e?void 0:e.ssr)||void 0===n?void 0:n.circuitInactivityTimeoutMs)&&void 0!==o?o:2e3);const i=ji.create(vt),s={documentUpdated:()=>{zi.onDocumentUpdated(),i.dispatchEvent("enhancedload",{})},enhancedNavigationCompleted(){zi.onEnhancedNavigationCompleted()}};return pi=zi,function(e,t){Oi=t,(null==e?void 0:e.disableDomPreservation)&&(Fi=!1),customElements.define("blazor-ssr-end",$i)}(null==e?void 0:e.ssr,s),(null===(r=null==e?void 0:e.ssr)||void 0===r?void 0:r.disableDomPreservation)||Di(s),"loading"===document.readyState?document.addEventListener("DOMContentLoaded",Ki.bind(null,e)):Ki(e),Promise.resolve()}function Ki(e){const t=Fo((null==e?void 0:e.circuit)||{});e.circuit=t;const n=async function(e,t){var n;const o=kt(document,Et,"initializers");if(!o)return new qo(!1,t);const r=null!==(n=JSON.parse(atob(o)))&&void 0!==n?n:[],i=new qo(!1,t);return await i.importInitializersAsync(r,[e]),i}(e,new bt(t.logLevel));er(Vi(n,t)),function(e){if($r)throw new Error("WebAssembly options have already been configured.");!async function(e){const t=await e;$r=t,Qr()}(e)}(Vi(n,(null==e?void 0:e.webAssembly)||{})),function(e){const t=bi(document);for(const e of t)null==pi||pi.registerComponent(e)}(),zi.onDocumentUpdated(),async function(e){const t=await e;await t.invokeAfterStartedCallbacks(vt)}(n)}async function Vi(e,t){return await e,t}vt.start=Ji,window.DotNet=e,document&&document.currentScript&&"false"!==document.currentScript.getAttribute("autostart")&&Ji()})()})(); \ No newline at end of file diff --git a/src/Components/Web.JS/src/Rendering/StreamingRendering.ts b/src/Components/Web.JS/src/Rendering/StreamingRendering.ts index 9884322115ba..06c650c2f99c 100644 --- a/src/Components/Web.JS/src/Rendering/StreamingRendering.ts +++ b/src/Components/Web.JS/src/Rendering/StreamingRendering.ts @@ -53,19 +53,24 @@ class BlazorStreamingUpdate extends HTMLElement { const isFormPost = node.getAttribute('from') === 'form-post'; const isEnhancedNav = node.getAttribute('enhanced') === 'true'; if (isEnhancedNav && isWithinBaseUriSpace(destinationUrl)) { + // At this point the destinationUrl might be an opaque URL so we don't know whether it's internal/external or + // whether it's even going to the same URL we're currently on. So we don't know how to update the history. + // Defer that until the redirection is resolved by performEnhancedPageLoad. + const treatAsRedirectionFromMethod = isFormPost ? 'post' : 'get'; + const fetchOptions = undefined; + performEnhancedPageLoad(destinationUrl, /* interceptedLink */ false, fetchOptions, treatAsRedirectionFromMethod); + } else { if (isFormPost) { // The URL is not yet updated. Push a whole new entry so that 'back' goes back to the pre-redirection location. - history.pushState(null, '', destinationUrl); + // WARNING: The following check to avoid duplicating history entries won't work if the redirection is to an opaque URL. + // We could change the server-side logic to return URLs in plaintext if they match the current request URL already, + // but it's arguably easier to understand that history non-duplication only works for enhanced nav, which is also the + // case for non-streaming responses. + if (destinationUrl !== location.href) { + location.assign(destinationUrl); + } } else { // The URL was already updated on the original link click. Replace so that 'back' goes to the pre-redirection location. - history.replaceState(null, '', destinationUrl); - } - performEnhancedPageLoad(destinationUrl, /* interceptedLink */ false); - } else { - // Same reason for varying as above - if (isFormPost) { - location.assign(destinationUrl); - } else { location.replace(destinationUrl); } } diff --git a/src/Components/Web.JS/src/Services/NavigationEnhancement.ts b/src/Components/Web.JS/src/Services/NavigationEnhancement.ts index a5d6b9c324e0..4b9bedac1672 100644 --- a/src/Components/Web.JS/src/Services/NavigationEnhancement.ts +++ b/src/Components/Web.JS/src/Services/NavigationEnhancement.ts @@ -132,10 +132,10 @@ function onDocumentSubmit(event: SubmitEvent) { event.preventDefault(); - const url = new URL(event.submitter?.getAttribute('formaction') || formElem.action, document.baseURI); - const fetchOptions: RequestInit = { method: method}; + const url = new URL(event.submitter?.getAttribute('formaction') || formElem.action, document.baseURI); + const fetchOptions: RequestInit = { method: method}; const formData = new FormData(formElem); - + const submitterName = event.submitter?.getAttribute('name'); const submitterValue = event.submitter!.getAttribute('value'); if (submitterName && submitterValue) { @@ -153,8 +153,8 @@ function onDocumentSubmit(event: SubmitEvent) { } else { // Setting request body and content-type header depending on enctype const enctype = event.submitter?.getAttribute('formenctype') || formElem.enctype; - if (enctype === 'multipart/form-data') { - // Content-Type header will be set to 'multipart/form-data' + if (enctype === 'multipart/form-data') { + // Content-Type header will be set to 'multipart/form-data' fetchOptions.body = formData; } else { fetchOptions.body = urlSearchParams; @@ -170,7 +170,7 @@ function onDocumentSubmit(event: SubmitEvent) { } } -export async function performEnhancedPageLoad(internalDestinationHref: string, interceptedLink: boolean, fetchOptions?: RequestInit) { +export async function performEnhancedPageLoad(internalDestinationHref: string, interceptedLink: boolean, fetchOptions?: RequestInit, treatAsRedirectionFromMethod?: 'get' | 'post') { performingEnhancedPageLoad = true; // First, stop any preceding enhanced page load @@ -232,8 +232,9 @@ export async function performEnhancedPageLoad(internalDestinationHref: string, i // For 301/302/etc redirections to internal URLs, the browser will already have followed the chain of redirections // to the end, and given us the final content. We do still need to update the current URL to match the final location, // then let the rest of enhanced nav logic run to patch the new content into the DOM. - if (response.redirected) { - if (isGetRequest) { + if (response.redirected || treatAsRedirectionFromMethod) { + const treatAsGet = treatAsRedirectionFromMethod ? (treatAsRedirectionFromMethod === 'get') : isGetRequest; + if (treatAsGet) { // For gets, the intermediate (redirecting) URL is already in the address bar, so we have to use 'replace' // so that 'back' would go to the page before the redirection history.replaceState(null, '', response.url); diff --git a/src/Components/test/E2ETest/ServerRenderingTests/FormHandlingTests/FormWithParentBindingContextTest.cs b/src/Components/test/E2ETest/ServerRenderingTests/FormHandlingTests/FormWithParentBindingContextTest.cs index b2e025fdf868..271d6bf686e5 100644 --- a/src/Components/test/E2ETest/ServerRenderingTests/FormHandlingTests/FormWithParentBindingContextTest.cs +++ b/src/Components/test/E2ETest/ServerRenderingTests/FormHandlingTests/FormWithParentBindingContextTest.cs @@ -1466,6 +1466,8 @@ public void SubmitButtonFormenctypeAttributeOverridesEnhancedFormEnctype() [Fact] public void EnhancedFormThatCallsNavigationManagerRefreshDoesNotPushHistoryEntry() { + GoTo("about:blank"); + var startUrl = Browser.Url; GoTo("forms/form-that-calls-navigation-manager-refresh"); var guid = Browser.Exists(By.Id("guid")).Text; @@ -1482,6 +1484,30 @@ public void EnhancedFormThatCallsNavigationManagerRefreshDoesNotPushHistoryEntry Browser.Navigate().Back(); Browser.Equal(startUrl, () => Browser.Url); } + + [Fact] + public void EnhancedFormThatCallsNavigationManagerRefreshDoesNotPushHistoryEntry_Streaming() + { + GoTo("about:blank"); + + var startUrl = Browser.Url; + GoTo("forms/form-that-calls-navigation-manager-refresh-streaming"); + + // Submit the form + Browser.FindElement(By.Id("some-text")).SendKeys("test string"); + Browser.Equal("test string", () => Browser.FindElement(By.Id("some-text")).GetAttribute("value")); + Browser.Exists(By.Id("submit-button")).Click(); + + // Wait for the async/streaming process to complete. We know this happened + // if the loading indicator says we're done, and the textbox was cleared + // due to the refresh + Browser.Equal("False", () => Browser.FindElement(By.Id("loading-indicator")).Text); + Browser.Equal("", () => Browser.FindElement(By.Id("some-text")).GetAttribute("value")); + + // Checking that the history entry was not pushed + Browser.Navigate().Back(); + Browser.Equal(startUrl, () => Browser.Url); + } // Can't just use GetAttribute or GetDomAttribute because they both auto-resolve it // to an absolute URL. We want to be able to assert about the attribute's literal value. diff --git a/src/Components/test/testassets/Components.TestServer/RazorComponents/Pages/Forms/FormThatCallsNavigationManagerRefreshStreaming.razor b/src/Components/test/testassets/Components.TestServer/RazorComponents/Pages/Forms/FormThatCallsNavigationManagerRefreshStreaming.razor new file mode 100644 index 000000000000..10c9700fb101 --- /dev/null +++ b/src/Components/test/testassets/Components.TestServer/RazorComponents/Pages/Forms/FormThatCallsNavigationManagerRefreshStreaming.razor @@ -0,0 +1,41 @@ +@page "/forms/form-that-calls-navigation-manager-refresh-streaming" +@using Microsoft.AspNetCore.Components.Forms +@attribute [StreamRendering] +@inject NavigationManager Nav + +

Form That Calls NavigationManager.Refresh() with streaming

+ +
+ + + + + +

Loading: @loading

+ +@if (missingText) +{ +

Enter some text, so you can see it go back to blank after the refresh happened.

+} + +@code { + [SupplyParameterFromForm] + public string SomeText { get; set; } + + bool loading; + bool missingText; + + async Task RefreshAfterDelayAsync() + { + if (string.IsNullOrEmpty(SomeText)) + { + missingText = true; + } + else + { + loading = true; + await Task.Delay(1000); + Nav.Refresh(); + } + } +} From aca7af502d4319b39551833f1f43e06beaac523a Mon Sep 17 00:00:00 2001 From: Steve Sanderson Date: Tue, 16 Jan 2024 16:41:52 +0000 Subject: [PATCH 090/391] Add title to column options. Fixes #52141 (#53299) # Add title to column options In QuickGrid, adds a title attribute to the column options button. Required for accessibility. ## Description Attaches the title "Column options" to the column options button. Fixes the "Buttons must have discernible text" accessibility requirement. Fixes #52141 ## Customer Impact Previously the button only showed an icon, which is not helpful for screen readers. After this PR you can hover to see the tooltip, and it may be read by assistive technologies. ## Regression? - [ ] Yes - [x] No [If yes, specify the version the behavior has regressed from] ## Risk - [ ] High - [ ] Medium - [x] Low It's literally just adding an HTML attribute that has no other effect. ## Verification - [x] Manual (required) - [ ] Automated ## Packaging changes reviewed? - [ ] Yes - [ ] No - [x] N/A --- .../src/Columns/ColumnBase.razor | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Components/QuickGrid/Microsoft.AspNetCore.Components.QuickGrid/src/Columns/ColumnBase.razor b/src/Components/QuickGrid/Microsoft.AspNetCore.Components.QuickGrid/src/Columns/ColumnBase.razor index 9edc78f4a580..f9d50dfdc2b7 100644 --- a/src/Components/QuickGrid/Microsoft.AspNetCore.Components.QuickGrid/src/Columns/ColumnBase.razor +++ b/src/Components/QuickGrid/Microsoft.AspNetCore.Components.QuickGrid/src/Columns/ColumnBase.razor @@ -19,7 +19,7 @@ { @if (ColumnOptions is not null && (Align != Align.Right && Align != Align.End)) { - + } if (Sortable.HasValue ? Sortable.Value : IsSortableByDefault()) @@ -38,7 +38,7 @@ @if (ColumnOptions is not null && (Align == Align.Right || Align == Align.End)) { - + } } } From 37c8f0d77dccd359a2eb21b9d710eac8604aa556 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 16 Jan 2024 08:43:21 -0800 Subject: [PATCH 091/391] Update Microsoft.AspNetCore.Components.WebView.csproj (#52971) Backport of #52638 to release/8.0 /cc @MackinnonBuck # Fix `Microsoft.AspNetCore.Components.WebView.props` not getting packed correctly Fixes an issue where `Microsoft.AspNetCore.Components.WebView.props` was not getting packed correctly. This was causing build failures for any project referencing `Microsoft.AspNetCore.Components.WebView`. ## Description Fixes #52637 ## Customer Impact If customers were to reference a new version of this package without this fix, their app would fail to build. Our temporary workaround is to avoid shipping new versions of `Microsoft.AspNetCore.Components.WebView` until this issue gets fixed. ## Regression? - [X] Yes - [ ] No Regressed from package version 8.0.0. ## Risk - [ ] High - [ ] Medium - [X] Low The fix is straightforward, and we've verified that the packages produced in CI contain the correct assets. A [MAUI dependency update](https://github.com/dotnet/maui/pull/19236) was failing due to this bug, and the fix has shown to address it. ## Verification - [X] Manual (required) - [ ] Automated ## Packaging changes reviewed? - [ ] Yes - [ ] No - [X] N/A Co-authored-by: Mackinnon Buck --- .../WebView/src/Microsoft.AspNetCore.Components.WebView.csproj | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/Components/WebView/WebView/src/Microsoft.AspNetCore.Components.WebView.csproj b/src/Components/WebView/WebView/src/Microsoft.AspNetCore.Components.WebView.csproj index c0bbf58dcf44..e122d680ea8f 100644 --- a/src/Components/WebView/WebView/src/Microsoft.AspNetCore.Components.WebView.csproj +++ b/src/Components/WebView/WebView/src/Microsoft.AspNetCore.Components.WebView.csproj @@ -35,6 +35,8 @@ + + From e74a5cfdd1a82f50dcda8c33b83861ebe169cf9b Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 16 Jan 2024 08:45:18 -0800 Subject: [PATCH 092/391] [release/8.0] [Blazor] Blazor InputRadio is broken by IHandleEvent (#53270) Backport of #53245 to release/8.0 /cc @javiercn # [Blazor] Blazor InputRadio is broken by IHandleEvent Update `InputRadioContext` to get the `CurrentValue` directly from the `InputRadioGroup` rather than using a copy that needs to be updated. ## Description Input radio groups did not update their values correctly when the component that used them implemented IHandleEvent. When the user clicked on the input radio, the value would not be updated in the UI. Fixes #52069 ## Customer Impact Input radio elements are not correctly updated when the component that uses them implements IHandleEvent. ## Regression? - [X] Yes - [ ] No 7.0 ## Risk - [ ] High - [ ] Medium - [X] Low [Justify the selection above] ## Verification - [ ] Manual (required) - [X] Automated ## Packaging changes reviewed? - [ ] Yes - [ ] No - [x] N/A ---- ## When servicing release/2.1 - [ ] Make necessary changes in eng/PatchConfig.props --------- Co-authored-by: jacalvar --- .../Web/src/Forms/IInputRadioValueProvider.cs | 9 +++++++ .../Web/src/Forms/InputRadioContext.cs | 12 ++++------ .../Web/src/Forms/InputRadioGroup.cs | 8 ++++--- .../test/E2ETest/Tests/FormsTest.cs | 24 +++++++++++++++++++ ...putRadioParentImplementsIHandleEvent.razor | 14 +++++++++++ .../test/testassets/BasicTestApp/Index.razor | 1 + 6 files changed, 58 insertions(+), 10 deletions(-) create mode 100644 src/Components/Web/src/Forms/IInputRadioValueProvider.cs create mode 100644 src/Components/test/testassets/BasicTestApp/FormsTest/InputRadioParentImplementsIHandleEvent.razor diff --git a/src/Components/Web/src/Forms/IInputRadioValueProvider.cs b/src/Components/Web/src/Forms/IInputRadioValueProvider.cs new file mode 100644 index 000000000000..f197063148b9 --- /dev/null +++ b/src/Components/Web/src/Forms/IInputRadioValueProvider.cs @@ -0,0 +1,9 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. + +namespace Microsoft.AspNetCore.Components; + +internal interface IInputRadioValueProvider +{ + public object? CurrentValue { get; } +} diff --git a/src/Components/Web/src/Forms/InputRadioContext.cs b/src/Components/Web/src/Forms/InputRadioContext.cs index aee261960e54..8dc9c2f72b77 100644 --- a/src/Components/Web/src/Forms/InputRadioContext.cs +++ b/src/Components/Web/src/Forms/InputRadioContext.cs @@ -8,21 +8,19 @@ namespace Microsoft.AspNetCore.Components.Forms; /// internal sealed class InputRadioContext { + private readonly IInputRadioValueProvider _valueProvider; + public InputRadioContext? ParentContext { get; } public EventCallback ChangeEventCallback { get; } + public object? CurrentValue => _valueProvider.CurrentValue; // Mutable properties that may change any time an InputRadioGroup is rendered public string? GroupName { get; set; } - public object? CurrentValue { get; set; } public string? FieldClass { get; set; } - /// - /// Instantiates a new . - /// - /// The parent context, if any. - /// The event callback to be invoked when the selected value is changed. - public InputRadioContext(InputRadioContext? parentContext, EventCallback changeEventCallback) + public InputRadioContext(IInputRadioValueProvider valueProvider, InputRadioContext? parentContext, EventCallback changeEventCallback) { + _valueProvider = valueProvider; ParentContext = parentContext; ChangeEventCallback = changeEventCallback; } diff --git a/src/Components/Web/src/Forms/InputRadioGroup.cs b/src/Components/Web/src/Forms/InputRadioGroup.cs index d3a4d02dad34..ba258e3052f0 100644 --- a/src/Components/Web/src/Forms/InputRadioGroup.cs +++ b/src/Components/Web/src/Forms/InputRadioGroup.cs @@ -10,7 +10,7 @@ namespace Microsoft.AspNetCore.Components.Forms; /// /// Groups child components. /// -public class InputRadioGroup<[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] TValue> : InputBase +public class InputRadioGroup<[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] TValue> : InputBase, IInputRadioValueProvider { private readonly string _defaultGroupName = Guid.NewGuid().ToString("N"); private InputRadioContext? _context; @@ -27,6 +27,8 @@ public class InputRadioGroup<[DynamicallyAccessedMembers(DynamicallyAccessedMemb [CascadingParameter] private InputRadioContext? CascadedContext { get; set; } + object? IInputRadioValueProvider.CurrentValue => CurrentValue; + /// protected override void OnParametersSet() { @@ -34,7 +36,7 @@ protected override void OnParametersSet() if (_context is null) { var changeEventCallback = EventCallback.Factory.CreateBinder(this, __value => CurrentValueAsString = __value, CurrentValueAsString); - _context = new InputRadioContext(CascadedContext, changeEventCallback); + _context = new InputRadioContext(this, CascadedContext, changeEventCallback); } else if (_context.ParentContext != CascadedContext) { @@ -59,7 +61,7 @@ protected override void OnParametersSet() // Otherwise, just use a GUID to disambiguate this group's radio inputs from any others on the page. _context.GroupName = _defaultGroupName; } - _context.CurrentValue = CurrentValue; + _context.FieldClass = EditContext?.FieldCssClass(FieldIdentifier); } diff --git a/src/Components/test/E2ETest/Tests/FormsTest.cs b/src/Components/test/E2ETest/Tests/FormsTest.cs index 3cfce5d3dbb0..9cba5e1f65d0 100644 --- a/src/Components/test/E2ETest/Tests/FormsTest.cs +++ b/src/Components/test/E2ETest/Tests/FormsTest.cs @@ -844,6 +844,30 @@ public void InputRadioGroupWorksWithMutatingSetter() Browser.Equal("False", () => tuesday.GetDomProperty("checked")); } + [Theory] + [InlineData(0)] + [InlineData(2)] + public void InputRadioGroupWorksWithParentImplementingIHandleEvent(int n) + { + Browser.Url = new UriBuilder(Browser.Url) { Query = ($"?n={n}") }.ToString(); + var appElement = Browser.MountTestComponent(); + var zero = appElement.FindElement(By.Id("inputradiogroup-parent-ihandle-event-0")); + var one = appElement.FindElement(By.Id("inputradiogroup-parent-ihandle-event-1")); + + Browser.Equal(n == 0 ? "True" : "False", () => zero.GetDomProperty("checked")); + Browser.Equal("False", () => one.GetDomProperty("checked")); + + // Observe the changes after a click + one.Click(); + Browser.Equal("False", () => zero.GetDomProperty("checked")); + Browser.Equal("True", () => one.GetDomProperty("checked")); + + // Ensure other options can be selected + zero.Click(); + Browser.Equal("False", () => one.GetDomProperty("checked")); + Browser.Equal("True", () => zero.GetDomProperty("checked")); + } + [Fact] public void InputSelectWorksWithMutatingSetter() { diff --git a/src/Components/test/testassets/BasicTestApp/FormsTest/InputRadioParentImplementsIHandleEvent.razor b/src/Components/test/testassets/BasicTestApp/FormsTest/InputRadioParentImplementsIHandleEvent.razor new file mode 100644 index 000000000000..334d79312716 --- /dev/null +++ b/src/Components/test/testassets/BasicTestApp/FormsTest/InputRadioParentImplementsIHandleEvent.razor @@ -0,0 +1,14 @@ +@using Microsoft.AspNetCore.Components.Forms +@implements IHandleEvent + + + + + + +@code { + + [SupplyParameterFromQuery(Name = "n")] int? N { get; set; } + + Task IHandleEvent.HandleEventAsync(EventCallbackWorkItem callback, object arg) => callback.InvokeAsync(arg); +} diff --git a/src/Components/test/testassets/BasicTestApp/Index.razor b/src/Components/test/testassets/BasicTestApp/Index.razor index 63f31415b00c..d0382fbdc547 100644 --- a/src/Components/test/testassets/BasicTestApp/Index.razor +++ b/src/Components/test/testassets/BasicTestApp/Index.razor @@ -49,6 +49,7 @@ + From 303c6f906f401179d3e3cc21dbab9b764eb33c96 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 16 Jan 2024 08:46:42 -0800 Subject: [PATCH 093/391] [release/8.0] [Blazor] each navigation to external logs 2 errors a minute later (#53297) Backport of #53271 to release/8.0 /cc @javiercn # [Blazor] each navigation to external logs 2 errors a minute later Capture an exception and log a message when navigation fails because the session has ended. ## Description - The user clicks the link to the target URL. - That link is intercepted in the JavaScript. - .NET is called to determine if navigation to the URL needs to be prevented. - It is determined that there is no need to prevent navigation and "navigateTo" is called via JS interop in NavigationManager.ts. - The URL is determined to be external by "navigateTo" and the location is set to the new URL. - The unload event in the browser is automatically triggered, which in turn triggers the call to _disconnect. - As a result, the promise to "navigateTo" never completes (the page gets unloaded before that) and the associated task in .NET ends up getting cancelled with a timeout. Fixes #45267 ## Customer Impact Customers see a large number of errors in their logs when their sites contain links to external sites, which in turn can trigger alerts in their incident monitoring systems. ## Regression? - [ ] Yes - [X] No ## Risk - [ ] High - [ ] Medium - [X] Low The scenario in which the issue happens is well defined and the fix is simple. ## Verification - [X] Manual (required) - [ ] Automated ![image](https://github.com/dotnet/aspnetcore/assets/6995051/a61a9898-771a-414c-a83c-7836bf88697c) ## Packaging changes reviewed? - [ ] Yes - [ ] No - [X] N/A ---- ## When servicing release/2.1 - [ ] Make necessary changes in eng/PatchConfig.props --------- Co-authored-by: jacalvar --- .../Server/src/Circuits/RemoteJSRuntime.cs | 2 ++ .../Server/src/Circuits/RemoteNavigationManager.cs | 12 ++++++++++++ 2 files changed, 14 insertions(+) diff --git a/src/Components/Server/src/Circuits/RemoteJSRuntime.cs b/src/Components/Server/src/Circuits/RemoteJSRuntime.cs index 7e9e94d52e16..34c76baada6f 100644 --- a/src/Components/Server/src/Circuits/RemoteJSRuntime.cs +++ b/src/Components/Server/src/Circuits/RemoteJSRuntime.cs @@ -30,6 +30,8 @@ internal partial class RemoteJSRuntime : JSRuntime public bool IsInitialized => _clientProxy is not null; + internal bool IsPermanentlyDisconnected => _permanentlyDisconnected; + /// /// Notifies when a runtime exception occurred. /// diff --git a/src/Components/Server/src/Circuits/RemoteNavigationManager.cs b/src/Components/Server/src/Circuits/RemoteNavigationManager.cs index 4841f8f58417..aec11e7d68db 100644 --- a/src/Components/Server/src/Circuits/RemoteNavigationManager.cs +++ b/src/Components/Server/src/Circuits/RemoteNavigationManager.cs @@ -106,6 +106,12 @@ async Task PerformNavigationAsync() } await _jsRuntime.InvokeVoidAsync(Interop.NavigateTo, uri, options); + Log.NavigationCompleted(_logger, uri); + } + catch (TaskCanceledException) + when (_jsRuntime is RemoteJSRuntime remoteRuntime && remoteRuntime.IsPermanentlyDisconnected) + { + Log.NavigationStoppedSessionEnded(_logger, uri); } catch (Exception ex) { @@ -190,5 +196,11 @@ public static void RequestingNavigation(ILogger logger, string uri, NavigationOp [LoggerMessage(5, LogLevel.Error, "Failed to refresh", EventName = "RefreshFailed")] public static partial void RefreshFailed(ILogger logger, Exception exception); + + [LoggerMessage(6, LogLevel.Debug, "Navigation completed when changing the location to {Uri}", EventName = "NavigationCompleted")] + public static partial void NavigationCompleted(ILogger logger, string uri); + + [LoggerMessage(7, LogLevel.Debug, "Navigation stopped because the session ended when navigating to {Uri}", EventName = "NavigationStoppedSessionEnded")] + public static partial void NavigationStoppedSessionEnded(ILogger logger, string uri); } } From d4b8ba6cf8d539348cb953875ca60ca44999caaf Mon Sep 17 00:00:00 2001 From: Mackinnon Buck Date: Tue, 16 Jan 2024 13:57:39 -0800 Subject: [PATCH 094/391] [Blazor] Dispatch inbound activity handlers in Blazor Web apps (#53185) (#53313) # Dispatch inbound activity handlers in Blazor Web apps Fixes an issue where inbound activity handlers were not getting invoked in Blazor Web apps. ## Description Inbound activity handlers were a new feature introduced in .NET 8 to allow Blazor Server apps to monitor circuit activity and make services available to Blazor components that wouldn't otherwise be accessible. However, we also introduced a new "Blazor Web" app model that didn't incorporate this new feature correctly. This PR fixes the issue by: * Building the inbound activity pipeline in Blazor Web apps just after circuit handlers are retrieved * Invoking inbound activity handlers in web root component updates Fixes #51934 ## Customer Impact Multiple customers have indicated being affected by this issue. Since this is a new feature in .NET 8, customers expect it to work in Blazor Web apps, which we recommend for new projects. Without this fix, the functionality only works in traditional Blazor Server apps. ## Regression? - [ ] Yes - [X] No This is a new feature in .NET 8. ## Risk - [ ] High - [ ] Medium - [X] Low The fix is simple and applies to a well-tested area of the framework, so our E2E tests are likely to catch issues with this change. ## Verification - [X] Manual (required) - [X] Automated ## Packaging changes reviewed? - [ ] Yes - [ ] No - [X] N/A --- .../Server/src/Circuits/CircuitHost.cs | 96 +++++++++++-------- .../ServerRenderingTests/InteractivityTest.cs | 8 ++ .../RazorComponentEndpointsStartup.cs | 5 + .../Interactivity/CircuitContextPage.razor | 25 +++++ 4 files changed, 95 insertions(+), 39 deletions(-) create mode 100644 src/Components/test/testassets/Components.TestServer/RazorComponents/Pages/Interactivity/CircuitContextPage.razor diff --git a/src/Components/Server/src/Circuits/CircuitHost.cs b/src/Components/Server/src/Circuits/CircuitHost.cs index 24bceaa091aa..cd2f861846f0 100644 --- a/src/Components/Server/src/Circuits/CircuitHost.cs +++ b/src/Components/Server/src/Circuits/CircuitHost.cs @@ -22,7 +22,7 @@ internal partial class CircuitHost : IAsyncDisposable private readonly CircuitOptions _options; private readonly RemoteNavigationManager _navigationManager; private readonly ILogger _logger; - private readonly Func, Task> _dispatchInboundActivity; + private Func, Task> _dispatchInboundActivity; private CircuitHandler[] _circuitHandlers; private bool _initialized; private bool _isFirstUpdate = true; @@ -735,11 +735,10 @@ internal Task UpdateRootComponents( return Renderer.Dispatcher.InvokeAsync(async () => { - var webRootComponentManager = Renderer.GetOrCreateWebRootComponentManager(); var shouldClearStore = false; + var shouldWaitForQuiescence = false; var operations = operationBatch.Operations; var batchId = operationBatch.BatchId; - Task[]? pendingTasks = null; try { if (Descriptors.Count > 0) @@ -752,6 +751,7 @@ internal Task UpdateRootComponents( if (_isFirstUpdate) { _isFirstUpdate = false; + shouldWaitForQuiescence = true; if (store != null) { shouldClearStore = true; @@ -763,6 +763,7 @@ internal Task UpdateRootComponents( // Retrieve the circuit handlers at this point. _circuitHandlers = [.. _scope.ServiceProvider.GetServices().OrderBy(h => h.Order)]; + _dispatchInboundActivity = BuildInboundActivityDispatcher(_circuitHandlers, Circuit); await OnCircuitOpenedAsync(cancellation); await OnConnectionUpAsync(cancellation); @@ -774,44 +775,9 @@ internal Task UpdateRootComponents( throw new InvalidOperationException($"The first set of update operations must always be of type {nameof(RootComponentOperationType.Add)}"); } } - - pendingTasks = new Task[operations.Length]; - } - - for (var i = 0; i < operations.Length; i++) - { - var operation = operations[i]; - switch (operation.Type) - { - case RootComponentOperationType.Add: - var task = webRootComponentManager.AddRootComponentAsync( - operation.SsrComponentId, - operation.Descriptor.ComponentType, - operation.Marker.Value.Key, - operation.Descriptor.Parameters); - if (pendingTasks != null) - { - pendingTasks[i] = task; - } - break; - case RootComponentOperationType.Update: - // We don't need to await component updates as any unhandled exception will be reported and terminate the circuit. - _ = webRootComponentManager.UpdateRootComponentAsync( - operation.SsrComponentId, - operation.Descriptor.ComponentType, - operation.Marker.Value.Key, - operation.Descriptor.Parameters); - break; - case RootComponentOperationType.Remove: - webRootComponentManager.RemoveRootComponent(operation.SsrComponentId); - break; - } } - if (pendingTasks != null) - { - await Task.WhenAll(pendingTasks); - } + await PerformRootComponentOperations(operations, shouldWaitForQuiescence); await Client.SendAsync("JS.EndUpdateRootComponents", batchId); @@ -837,6 +803,58 @@ internal Task UpdateRootComponents( }); } + private async ValueTask PerformRootComponentOperations( + RootComponentOperation[] operations, + bool shouldWaitForQuiescence) + { + var webRootComponentManager = Renderer.GetOrCreateWebRootComponentManager(); + var pendingTasks = shouldWaitForQuiescence + ? new Task[operations.Length] + : null; + + // The inbound activity pipeline needs to be awaited because it populates + // the pending tasks used to wait for quiescence. + await HandleInboundActivityAsync(() => + { + for (var i = 0; i < operations.Length; i++) + { + var operation = operations[i]; + switch (operation.Type) + { + case RootComponentOperationType.Add: + var task = webRootComponentManager.AddRootComponentAsync( + operation.SsrComponentId, + operation.Descriptor.ComponentType, + operation.Marker.Value.Key, + operation.Descriptor.Parameters); + if (pendingTasks != null) + { + pendingTasks[i] = task; + } + break; + case RootComponentOperationType.Update: + // We don't need to await component updates as any unhandled exception will be reported and terminate the circuit. + _ = webRootComponentManager.UpdateRootComponentAsync( + operation.SsrComponentId, + operation.Descriptor.ComponentType, + operation.Marker.Value.Key, + operation.Descriptor.Parameters); + break; + case RootComponentOperationType.Remove: + webRootComponentManager.RemoveRootComponent(operation.SsrComponentId); + break; + } + } + + return Task.CompletedTask; + }); + + if (pendingTasks != null) + { + await Task.WhenAll(pendingTasks); + } + } + private static partial class Log { // 100s used for lifecycle stuff diff --git a/src/Components/test/E2ETest/ServerRenderingTests/InteractivityTest.cs b/src/Components/test/E2ETest/ServerRenderingTests/InteractivityTest.cs index df2c4b906661..889ab26ad5d2 100644 --- a/src/Components/test/E2ETest/ServerRenderingTests/InteractivityTest.cs +++ b/src/Components/test/E2ETest/ServerRenderingTests/InteractivityTest.cs @@ -1159,6 +1159,14 @@ public void NavigationManagerCanRefreshSSRPageWhenServerInteractivityEnabled() Browser.Equal("GET", () => Browser.Exists(By.Id("method")).Text); } + [Fact] + public void InteractiveServerRootComponent_CanAccessCircuitContext() + { + Navigate($"{ServerPathBase}/interactivity/circuit-context"); + + Browser.Equal("True", () => Browser.FindElement(By.Id("has-circuit-context")).Text); + } + private void BlockWebAssemblyResourceLoad() { ((IJavaScriptExecutor)Browser).ExecuteScript("sessionStorage.setItem('block-load-boot-resource', 'true')"); diff --git a/src/Components/test/testassets/Components.TestServer/RazorComponentEndpointsStartup.cs b/src/Components/test/testassets/Components.TestServer/RazorComponentEndpointsStartup.cs index dead36b67e18..be68ef2ffd7e 100644 --- a/src/Components/test/testassets/Components.TestServer/RazorComponentEndpointsStartup.cs +++ b/src/Components/test/testassets/Components.TestServer/RazorComponentEndpointsStartup.cs @@ -8,6 +8,7 @@ using Components.TestServer.RazorComponents; using Components.TestServer.RazorComponents.Pages.Forms; using Components.TestServer.Services; +using Microsoft.AspNetCore.Components.Server.Circuits; using Microsoft.AspNetCore.Mvc; namespace TestServer; @@ -35,6 +36,10 @@ public void ConfigureServices(IServiceCollection services) services.AddHttpContextAccessor(); services.AddSingleton(); services.AddCascadingAuthenticationState(); + + var circuitContextAccessor = new TestCircuitContextAccessor(); + services.AddSingleton(circuitContextAccessor); + services.AddSingleton(circuitContextAccessor); } // This method gets called by the runtime. Use this method to configure the HTTP request pipeline. diff --git a/src/Components/test/testassets/Components.TestServer/RazorComponents/Pages/Interactivity/CircuitContextPage.razor b/src/Components/test/testassets/Components.TestServer/RazorComponents/Pages/Interactivity/CircuitContextPage.razor new file mode 100644 index 000000000000..801358ec69f1 --- /dev/null +++ b/src/Components/test/testassets/Components.TestServer/RazorComponents/Pages/Interactivity/CircuitContextPage.razor @@ -0,0 +1,25 @@ +@page "/interactivity/circuit-context" +@rendermode RenderMode.InteractiveServer +@inject TestCircuitContextAccessor CircuitContextAccessor + +

Circuit context

+ +

+ Has circuit context: @_hasCircuitContext +

+ +@code { + private bool _hasCircuitContext; + + protected override async Task OnAfterRenderAsync(bool firstRender) + { + if (firstRender) + { + await Task.Yield(); + + _hasCircuitContext = CircuitContextAccessor.HasCircuitContext; + + StateHasChanged(); + } + } +} From c53fa3a630491fb94515a6b2b2a8e8846efb462e Mon Sep 17 00:00:00 2001 From: Mackinnon Buck Date: Tue, 16 Jan 2024 23:19:02 +0000 Subject: [PATCH 095/391] Merged PR 36408: [release/8.0] [Blazor] Auto render mode improvements MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit # Auto render mode improvements Backport of https://github.com/dotnet/aspnetcore/pull/53159 Improves the Auto render mode so that components are more responsive and have a decreased initial time to interactivity when WebAssembly resources are not already cached. ## Description One of the goals of the Auto render mode was to allow apps to become interactive as quickly as possible via Server interactivity, while WebAssembly bits were downloaded in the background for use on future visits to the site. However, since WebAssembly resources were being downloaded with maximal parallelism, the quality of the websocket connection required for Server interactivity was negatively impacted, often to the extent that the websocket wouldn't connect until WebAssembly resources had finished downloading completely, largely defeating the purpose of the Auto render mode. This PR makes the following improvements: * Removes a problematic timeout on loading the WebAssembly boot config. This fixes a problem where Server interactivity was always being used when the boot config took too long to load. * Introduces a limit to the maximum parallel WebAssembly resource downloads when an Auto component initiates the startup of the WebAssembly runtime. This limit is set to 1 and overrides any user-specified limit. * Fixes an issue where the circuit sometimes remains open even if WebAssembly gets selected for Auto interactivity. I provided a preview of these changes in https://github.com/dotnet/aspnetcore/issues/52154#issuecomment-1843535849 so that customers could try them out, and the feedback so far has been very positive. Fixes https://github.com/dotnet/aspnetcore/issues/52154 ## Customer Impact A significant number of customers reported being affected by this problem in issues like https://github.com/dotnet/aspnetcore/issues/52154. I supplied customers with a preview of the fix that they could patch it into their app, and many indicated that their problems were resolved by the fix. The Auto render mode was one of the key features released in .NET 8, so it's important that it works in the way we've been advertising.   ## Regression? - [ ] Yes - [X] No ## Risk - [ ] High - [ ] Medium - [X] Low The core Auto render mode functionality is unaffected by this change - we added small tweaks to adjust the throttling amount and remove a problematic timeout. Additional tests were added to verify the changes in behavior, and we've been testing these changes manually to ensure they work well in real-world scenarios (various device types and connection qualities). ## Verification - [X] Manual (required) - [X] Automated ## Packaging changes reviewed? - [ ] Yes - [ ] No - [X] N/A --- .../Web.JS/dist/Release/blazor.web.js | 2 +- src/Components/Web.JS/src/Boot.Web.ts | 1 - src/Components/Web.JS/src/GlobalExports.ts | 1 - .../src/Services/WebRootComponentManager.ts | 35 +++++----- .../ServerRenderingTests/InteractivityTest.cs | 68 +++++++++++-------- .../E2ETest/Tests/StatePersistenceTest.cs | 31 +++++++-- .../RazorComponents/App.razor | 15 ++-- ...teractiveStreamingRenderingComponent.razor | 11 +++ .../PageWithWebAssemblyInteractivity.razor | 8 +++ 9 files changed, 111 insertions(+), 61 deletions(-) create mode 100644 src/Components/test/testassets/Components.TestServer/RazorComponents/Pages/PersistentState/PageWithWebAssemblyInteractivity.razor diff --git a/src/Components/Web.JS/dist/Release/blazor.web.js b/src/Components/Web.JS/dist/Release/blazor.web.js index 5a638ce83025..f494e7e479c1 100644 --- a/src/Components/Web.JS/dist/Release/blazor.web.js +++ b/src/Components/Web.JS/dist/Release/blazor.web.js @@ -1 +1 @@ -(()=>{var e={778:()=>{},77:()=>{},203:()=>{},200:()=>{},628:()=>{},321:()=>{}},t={};function n(o){var r=t[o];if(void 0!==r)return r.exports;var i=t[o]={exports:{}};return e[o](i,i.exports,n),i.exports}n.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),(()=>{"use strict";var e,t,o;!function(e){const t=[],n="__jsObjectId",o="__dotNetObject",r="__byte[]",i="__dotNetStream",s="__jsStreamReferenceLength";let a,c;class l{constructor(e){this._jsObject=e,this._cachedFunctions=new Map}findFunction(e){const t=this._cachedFunctions.get(e);if(t)return t;let n,o=this._jsObject;if(e.split(".").forEach((t=>{if(!(t in o))throw new Error(`Could not find '${e}' ('${t}' was undefined).`);n=o,o=o[t]})),o instanceof Function)return o=o.bind(n),this._cachedFunctions.set(e,o),o;throw new Error(`The value '${e}' is not a function.`)}getWrappedObject(){return this._jsObject}}const h={0:new l(window)};h[0]._cachedFunctions.set("import",(e=>("string"==typeof e&&e.startsWith("./")&&(e=new URL(e.substr(2),document.baseURI).toString()),import(e))));let d,u=1;function p(e){t.push(e)}function f(e){if(e&&"object"==typeof e){h[u]=new l(e);const t={[n]:u};return u++,t}throw new Error(`Cannot create a JSObjectReference from the value '${e}'.`)}function g(e){let t=-1;if(e instanceof ArrayBuffer&&(e=new Uint8Array(e)),e instanceof Blob)t=e.size;else{if(!(e.buffer instanceof ArrayBuffer))throw new Error("Supplied value is not a typed array or blob.");if(void 0===e.byteLength)throw new Error(`Cannot create a JSStreamReference from the value '${e}' as it doesn't have a byteLength.`);t=e.byteLength}const o={[s]:t};try{const t=f(e);o[n]=t[n]}catch(t){throw new Error(`Cannot create a JSStreamReference from the value '${e}'.`)}return o}function m(e,n){c=e;const o=n?JSON.parse(n,((e,n)=>t.reduce(((t,n)=>n(e,t)),n))):null;return c=void 0,o}function v(){if(void 0===a)throw new Error("No call dispatcher has been set.");if(null===a)throw new Error("There are multiple .NET runtimes present, so a default dispatcher could not be resolved. Use DotNetObject to invoke .NET instance methods.");return a}e.attachDispatcher=function(e){const t=new y(e);return void 0===a?a=t:a&&(a=null),t},e.attachReviver=p,e.invokeMethod=function(e,t,...n){return v().invokeDotNetStaticMethod(e,t,...n)},e.invokeMethodAsync=function(e,t,...n){return v().invokeDotNetStaticMethodAsync(e,t,...n)},e.createJSObjectReference=f,e.createJSStreamReference=g,e.disposeJSObjectReference=function(e){const t=e&&e[n];"number"==typeof t&&_(t)},function(e){e[e.Default=0]="Default",e[e.JSObjectReference=1]="JSObjectReference",e[e.JSStreamReference=2]="JSStreamReference",e[e.JSVoidResult=3]="JSVoidResult"}(d=e.JSCallResultType||(e.JSCallResultType={}));class y{constructor(e){this._dotNetCallDispatcher=e,this._byteArraysToBeRevived=new Map,this._pendingDotNetToJSStreams=new Map,this._pendingAsyncCalls={},this._nextAsyncCallId=1}getDotNetCallDispatcher(){return this._dotNetCallDispatcher}invokeJSFromDotNet(e,t,n,o){const r=m(this,t),i=I(b(e,o)(...r||[]),n);return null==i?null:T(this,i)}beginInvokeJSFromDotNet(e,t,n,o,r){const i=new Promise((e=>{const o=m(this,n);e(b(t,r)(...o||[]))}));e&&i.then((t=>T(this,[e,!0,I(t,o)]))).then((t=>this._dotNetCallDispatcher.endInvokeJSFromDotNet(e,!0,t)),(t=>this._dotNetCallDispatcher.endInvokeJSFromDotNet(e,!1,JSON.stringify([e,!1,w(t)]))))}endInvokeDotNetFromJS(e,t,n){const o=t?m(this,n):new Error(n);this.completePendingCall(parseInt(e,10),t,o)}invokeDotNetStaticMethod(e,t,...n){return this.invokeDotNetMethod(e,t,null,n)}invokeDotNetStaticMethodAsync(e,t,...n){return this.invokeDotNetMethodAsync(e,t,null,n)}invokeDotNetMethod(e,t,n,o){if(this._dotNetCallDispatcher.invokeDotNetFromJS){const r=T(this,o),i=this._dotNetCallDispatcher.invokeDotNetFromJS(e,t,n,r);return i?m(this,i):null}throw new Error("The current dispatcher does not support synchronous calls from JS to .NET. Use invokeDotNetMethodAsync instead.")}invokeDotNetMethodAsync(e,t,n,o){if(e&&n)throw new Error(`For instance method calls, assemblyName should be null. Received '${e}'.`);const r=this._nextAsyncCallId++,i=new Promise(((e,t)=>{this._pendingAsyncCalls[r]={resolve:e,reject:t}}));try{const i=T(this,o);this._dotNetCallDispatcher.beginInvokeDotNetFromJS(r,e,t,n,i)}catch(e){this.completePendingCall(r,!1,e)}return i}receiveByteArray(e,t){this._byteArraysToBeRevived.set(e,t)}processByteArray(e){const t=this._byteArraysToBeRevived.get(e);return t?(this._byteArraysToBeRevived.delete(e),t):null}supplyDotNetStream(e,t){if(this._pendingDotNetToJSStreams.has(e)){const n=this._pendingDotNetToJSStreams.get(e);this._pendingDotNetToJSStreams.delete(e),n.resolve(t)}else{const n=new E;n.resolve(t),this._pendingDotNetToJSStreams.set(e,n)}}getDotNetStreamPromise(e){let t;if(this._pendingDotNetToJSStreams.has(e))t=this._pendingDotNetToJSStreams.get(e).streamPromise,this._pendingDotNetToJSStreams.delete(e);else{const n=new E;this._pendingDotNetToJSStreams.set(e,n),t=n.streamPromise}return t}completePendingCall(e,t,n){if(!this._pendingAsyncCalls.hasOwnProperty(e))throw new Error(`There is no pending async call with ID ${e}.`);const o=this._pendingAsyncCalls[e];delete this._pendingAsyncCalls[e],t?o.resolve(n):o.reject(n)}}function w(e){return e instanceof Error?`${e.message}\n${e.stack}`:e?e.toString():"null"}function b(e,t){const n=h[t];if(n)return n.findFunction(e);throw new Error(`JS object instance with ID ${t} does not exist (has it been disposed?).`)}function _(e){delete h[e]}e.findJSFunction=b,e.disposeJSObjectReferenceById=_;class S{constructor(e,t){this._id=e,this._callDispatcher=t}invokeMethod(e,...t){return this._callDispatcher.invokeDotNetMethod(null,e,this._id,t)}invokeMethodAsync(e,...t){return this._callDispatcher.invokeDotNetMethodAsync(null,e,this._id,t)}dispose(){this._callDispatcher.invokeDotNetMethodAsync(null,"__Dispose",this._id,null).catch((e=>console.error(e)))}serializeAsArg(){return{[o]:this._id}}}e.DotNetObject=S,p((function(e,t){if(t&&"object"==typeof t){if(t.hasOwnProperty(o))return new S(t[o],c);if(t.hasOwnProperty(n)){const e=t[n],o=h[e];if(o)return o.getWrappedObject();throw new Error(`JS object instance with Id '${e}' does not exist. It may have been disposed.`)}if(t.hasOwnProperty(r)){const e=t[r],n=c.processByteArray(e);if(void 0===n)throw new Error(`Byte array index '${e}' does not exist.`);return n}if(t.hasOwnProperty(i)){const e=t[i],n=c.getDotNetStreamPromise(e);return new C(n)}}return t}));class C{constructor(e){this._streamPromise=e}stream(){return this._streamPromise}async arrayBuffer(){return new Response(await this.stream()).arrayBuffer()}}class E{constructor(){this.streamPromise=new Promise(((e,t)=>{this.resolve=e,this.reject=t}))}}function I(e,t){switch(t){case d.Default:return e;case d.JSObjectReference:return f(e);case d.JSStreamReference:return g(e);case d.JSVoidResult:return null;default:throw new Error(`Invalid JS call result type '${t}'.`)}}let k=0;function T(e,t){k=0,c=e;const n=JSON.stringify(t,R);return c=void 0,n}function R(e,t){if(t instanceof S)return t.serializeAsArg();if(t instanceof Uint8Array){c.getDotNetCallDispatcher().sendByteArray(k,t);const e={[r]:k};return k++,e}return t}}(e||(e={})),function(e){e[e.prependFrame=1]="prependFrame",e[e.removeFrame=2]="removeFrame",e[e.setAttribute=3]="setAttribute",e[e.removeAttribute=4]="removeAttribute",e[e.updateText=5]="updateText",e[e.stepIn=6]="stepIn",e[e.stepOut=7]="stepOut",e[e.updateMarkup=8]="updateMarkup",e[e.permutationListEntry=9]="permutationListEntry",e[e.permutationListEnd=10]="permutationListEnd"}(t||(t={})),function(e){e[e.element=1]="element",e[e.text=2]="text",e[e.attribute=3]="attribute",e[e.component=4]="component",e[e.region=5]="region",e[e.elementReferenceCapture=6]="elementReferenceCapture",e[e.markup=8]="markup",e[e.namedEvent=10]="namedEvent"}(o||(o={}));class r{constructor(e,t){this.componentId=e,this.fieldValue=t}static fromEvent(e,t){const n=t.target;if(n instanceof Element){const t=function(e){return e instanceof HTMLInputElement?e.type&&"checkbox"===e.type.toLowerCase()?{value:e.checked}:{value:e.value}:e instanceof HTMLSelectElement||e instanceof HTMLTextAreaElement?{value:e.value}:null}(n);if(t)return new r(e,t.value)}return null}}const i=new Map,s=new Map,a=[];function c(e){return i.get(e)}function l(e){const t=i.get(e);return(null==t?void 0:t.browserEventName)||e}function h(e,t){e.forEach((e=>i.set(e,t)))}function d(e){const t=[];for(let n=0;ne.selected)).map((e=>e.value))}}{const e=function(e){return!!e&&"INPUT"===e.tagName&&"checkbox"===e.getAttribute("type")}(t);return{value:e?!!t.checked:t.value}}}}),h(["copy","cut","paste"],{createEventArgs:e=>({type:e.type})}),h(["drag","dragend","dragenter","dragleave","dragover","dragstart","drop"],{createEventArgs:e=>{return{...u(t=e),dataTransfer:t.dataTransfer?{dropEffect:t.dataTransfer.dropEffect,effectAllowed:t.dataTransfer.effectAllowed,files:Array.from(t.dataTransfer.files).map((e=>e.name)),items:Array.from(t.dataTransfer.items).map((e=>({kind:e.kind,type:e.type}))),types:t.dataTransfer.types}:null};var t}}),h(["focus","blur","focusin","focusout"],{createEventArgs:e=>({type:e.type})}),h(["keydown","keyup","keypress"],{createEventArgs:e=>{return{key:(t=e).key,code:t.code,location:t.location,repeat:t.repeat,ctrlKey:t.ctrlKey,shiftKey:t.shiftKey,altKey:t.altKey,metaKey:t.metaKey,type:t.type};var t}}),h(["contextmenu","click","mouseover","mouseout","mousemove","mousedown","mouseup","mouseleave","mouseenter","dblclick"],{createEventArgs:e=>u(e)}),h(["error"],{createEventArgs:e=>{return{message:(t=e).message,filename:t.filename,lineno:t.lineno,colno:t.colno,type:t.type};var t}}),h(["loadstart","timeout","abort","load","loadend","progress"],{createEventArgs:e=>{return{lengthComputable:(t=e).lengthComputable,loaded:t.loaded,total:t.total,type:t.type};var t}}),h(["touchcancel","touchend","touchmove","touchenter","touchleave","touchstart"],{createEventArgs:e=>{return{detail:(t=e).detail,touches:d(t.touches),targetTouches:d(t.targetTouches),changedTouches:d(t.changedTouches),ctrlKey:t.ctrlKey,shiftKey:t.shiftKey,altKey:t.altKey,metaKey:t.metaKey,type:t.type};var t}}),h(["gotpointercapture","lostpointercapture","pointercancel","pointerdown","pointerenter","pointerleave","pointermove","pointerout","pointerover","pointerup"],{createEventArgs:e=>{return{...u(t=e),pointerId:t.pointerId,width:t.width,height:t.height,pressure:t.pressure,tiltX:t.tiltX,tiltY:t.tiltY,pointerType:t.pointerType,isPrimary:t.isPrimary};var t}}),h(["wheel","mousewheel"],{createEventArgs:e=>{return{...u(t=e),deltaX:t.deltaX,deltaY:t.deltaY,deltaZ:t.deltaZ,deltaMode:t.deltaMode};var t}}),h(["cancel","close","toggle"],{createEventArgs:()=>({})});const p=["date","datetime-local","month","time","week"],f=new Map;let g,m,v=0;const y={async add(e,t,n){if(!n)throw new Error("initialParameters must be an object, even if empty.");const o="__bl-dynamic-root:"+(++v).toString();f.set(o,e);const r=await S().invokeMethodAsync("AddRootComponent",t,o),i=new _(r,m[t]);return await i.setParameters(n),i}};function w(e){const t=f.get(e);if(t)return f.delete(e),t}class b{invoke(e){return this._callback(e)}setCallback(t){this._selfJSObjectReference||(this._selfJSObjectReference=e.createJSObjectReference(this)),this._callback=t}getJSObjectReference(){return this._selfJSObjectReference}dispose(){this._selfJSObjectReference&&e.disposeJSObjectReference(this._selfJSObjectReference)}}class _{constructor(e,t){this._jsEventCallbackWrappers=new Map,this._componentId=e;for(const e of t)"eventcallback"===e.type&&this._jsEventCallbackWrappers.set(e.name.toLowerCase(),new b)}setParameters(e){const t={},n=Object.entries(e||{}),o=n.length;for(const[e,o]of n){const n=this._jsEventCallbackWrappers.get(e.toLowerCase());n&&o?(n.setCallback(o),t[e]=n.getJSObjectReference()):t[e]=o}return S().invokeMethodAsync("SetRootComponentParameters",this._componentId,o,t)}async dispose(){if(null!==this._componentId){await S().invokeMethodAsync("RemoveRootComponent",this._componentId),this._componentId=null;for(const e of this._jsEventCallbackWrappers.values())e.dispose()}}}function S(){if(!g)throw new Error("Dynamic root components have not been enabled in this application.");return g}const C=new Map,E=[],I=new Map;function k(t,n,o,r){var i,s;if(C.has(t))throw new Error(`Interop methods are already registered for renderer ${t}`);C.set(t,n),o&&r&&Object.keys(o).length>0&&function(t,n,o){if(g)throw new Error("Dynamic root components have already been enabled.");g=t,m=n;for(const[t,r]of Object.entries(o)){const o=e.findJSFunction(t,0);for(const e of r)o(e,n[e])}}(A(t),o,r),null===(s=null===(i=I.get(t))||void 0===i?void 0:i[0])||void 0===s||s.call(i),function(e){for(const t of E)t(e)}(t)}function T(e){return C.has(e)}function R(e,t,n){return D(e,t.eventHandlerId,(()=>A(e).invokeMethodAsync("DispatchEventAsync",t,n)))}function A(e){const t=C.get(e);if(!t)throw new Error(`No interop methods are registered for renderer ${e}`);return t}let D=(e,t,n)=>n();const x=B(["abort","blur","cancel","canplay","canplaythrough","change","close","cuechange","durationchange","emptied","ended","error","focus","load","loadeddata","loadedmetadata","loadend","loadstart","mouseenter","mouseleave","pointerenter","pointerleave","pause","play","playing","progress","ratechange","reset","scroll","seeked","seeking","stalled","submit","suspend","timeupdate","toggle","unload","volumechange","waiting","DOMNodeInsertedIntoDocument","DOMNodeRemovedFromDocument"]),N={submit:!0},P=B(["click","dblclick","mousedown","mousemove","mouseup"]);class M{constructor(e){this.browserRendererId=e,this.afterClickCallbacks=[];const t=++M.nextEventDelegatorId;this.eventsCollectionKey=`_blazorEvents_${t}`,this.eventInfoStore=new U(this.onGlobalEvent.bind(this))}setListener(e,t,n,o){const r=this.getEventHandlerInfosForElement(e,!0),i=r.getHandler(t);if(i)this.eventInfoStore.update(i.eventHandlerId,n);else{const i={element:e,eventName:t,eventHandlerId:n,renderingComponentId:o};this.eventInfoStore.add(i),r.setHandler(t,i)}}getHandler(e){return this.eventInfoStore.get(e)}removeListener(e){const t=this.eventInfoStore.remove(e);if(t){const e=t.element,n=this.getEventHandlerInfosForElement(e,!1);n&&n.removeHandler(t.eventName)}}notifyAfterClick(e){this.afterClickCallbacks.push(e),this.eventInfoStore.addGlobalListener("click")}setStopPropagation(e,t,n){this.getEventHandlerInfosForElement(e,!0).stopPropagation(t,n)}setPreventDefault(e,t,n){this.getEventHandlerInfosForElement(e,!0).preventDefault(t,n)}onGlobalEvent(e){if(!(e.target instanceof Element))return;this.dispatchGlobalEventToAllElements(e.type,e);const t=(n=e.type,s.get(n));var n;t&&t.forEach((t=>this.dispatchGlobalEventToAllElements(t,e))),"click"===e.type&&this.afterClickCallbacks.forEach((t=>t(e)))}dispatchGlobalEventToAllElements(e,t){const n=t.composedPath();let o=n.shift(),i=null,s=!1;const a=Object.prototype.hasOwnProperty.call(x,e);let l=!1;for(;o;){const u=o,p=this.getEventHandlerInfosForElement(u,!1);if(p){const n=p.getHandler(e);if(n&&(h=u,d=t.type,!((h instanceof HTMLButtonElement||h instanceof HTMLInputElement||h instanceof HTMLTextAreaElement||h instanceof HTMLSelectElement)&&Object.prototype.hasOwnProperty.call(P,d)&&h.disabled))){if(!s){const n=c(e);i=(null==n?void 0:n.createEventArgs)?n.createEventArgs(t):{},s=!0}Object.prototype.hasOwnProperty.call(N,t.type)&&t.preventDefault(),R(this.browserRendererId,{eventHandlerId:n.eventHandlerId,eventName:e,eventFieldInfo:r.fromEvent(n.renderingComponentId,t)},i)}p.stopPropagation(e)&&(l=!0),p.preventDefault(e)&&t.preventDefault()}o=a||l?void 0:n.shift()}var h,d}getEventHandlerInfosForElement(e,t){return Object.prototype.hasOwnProperty.call(e,this.eventsCollectionKey)?e[this.eventsCollectionKey]:t?e[this.eventsCollectionKey]=new L:null}}M.nextEventDelegatorId=0;class U{constructor(e){this.globalListener=e,this.infosByEventHandlerId={},this.countByEventName={},a.push(this.handleEventNameAliasAdded.bind(this))}add(e){if(this.infosByEventHandlerId[e.eventHandlerId])throw new Error(`Event ${e.eventHandlerId} is already tracked`);this.infosByEventHandlerId[e.eventHandlerId]=e,this.addGlobalListener(e.eventName)}get(e){return this.infosByEventHandlerId[e]}addGlobalListener(e){if(e=l(e),Object.prototype.hasOwnProperty.call(this.countByEventName,e))this.countByEventName[e]++;else{this.countByEventName[e]=1;const t=Object.prototype.hasOwnProperty.call(x,e);document.addEventListener(e,this.globalListener,t)}}update(e,t){if(Object.prototype.hasOwnProperty.call(this.infosByEventHandlerId,t))throw new Error(`Event ${t} is already tracked`);const n=this.infosByEventHandlerId[e];delete this.infosByEventHandlerId[e],n.eventHandlerId=t,this.infosByEventHandlerId[t]=n}remove(e){const t=this.infosByEventHandlerId[e];if(t){delete this.infosByEventHandlerId[e];const n=l(t.eventName);0==--this.countByEventName[n]&&(delete this.countByEventName[n],document.removeEventListener(n,this.globalListener))}return t}handleEventNameAliasAdded(e,t){if(Object.prototype.hasOwnProperty.call(this.countByEventName,e)){const n=this.countByEventName[e];delete this.countByEventName[e],document.removeEventListener(e,this.globalListener),this.addGlobalListener(t),this.countByEventName[t]+=n-1}}}class L{constructor(){this.handlers={},this.preventDefaultFlags=null,this.stopPropagationFlags=null}getHandler(e){return Object.prototype.hasOwnProperty.call(this.handlers,e)?this.handlers[e]:null}setHandler(e,t){this.handlers[e]=t}removeHandler(e){delete this.handlers[e]}preventDefault(e,t){return void 0!==t&&(this.preventDefaultFlags=this.preventDefaultFlags||{},this.preventDefaultFlags[e]=t),!!this.preventDefaultFlags&&this.preventDefaultFlags[e]}stopPropagation(e,t){return void 0!==t&&(this.stopPropagationFlags=this.stopPropagationFlags||{},this.stopPropagationFlags[e]=t),!!this.stopPropagationFlags&&this.stopPropagationFlags[e]}}function B(e){const t={};return e.forEach((e=>{t[e]=!0})),t}const O=Symbol(),F=Symbol(),$=Symbol();function H(e){const{start:t,end:n}=e,o=t[$];if(o){if(o!==e)throw new Error("The start component comment was already associated with another component descriptor.");return t}const r=t.parentNode;if(!r)throw new Error(`Comment not connected to the DOM ${t.textContent}`);const i=W(r,!0),s=Y(i);t[F]=i,t[$]=e;const a=W(t);if(n){const e=Y(a),o=Array.prototype.indexOf.call(s,a)+1;let r=null;for(;r!==n;){const n=s.splice(o,1)[0];if(!n)throw new Error("Could not find the end component comment in the parent logical node list");n[F]=t,e.push(n),r=n}}return a}function W(e,t){if(O in e)return e;const n=[];if(e.childNodes.length>0){if(!t)throw new Error("New logical elements must start empty, or allowExistingContents must be true");e.childNodes.forEach((t=>{const o=W(t,!0);o[F]=e,n.push(o)}))}return e[O]=n,e}function j(e){const t=Y(e);for(;t.length;)J(e,0)}function z(e,t){const n=document.createComment("!");return q(n,e,t),n}function q(e,t,n){const o=e;let r=e;if(e instanceof Comment){const t=Y(o);if((null==t?void 0:t.length)>0){const t=oe(o),n=new Range;n.setStartBefore(e),n.setEndAfter(t),r=n.extractContents()}}const i=K(o);if(i){const e=Y(i),t=Array.prototype.indexOf.call(e,o);e.splice(t,1),delete o[F]}const s=Y(t);if(n0;)J(n,0)}const o=n;o.parentNode.removeChild(o)}function K(e){return e[F]||null}function V(e,t){return Y(e)[t]}function X(e){return e[$]||null}function G(e){const t=te(e);return"http://www.w3.org/2000/svg"===t.namespaceURI&&"foreignObject"!==t.tagName}function Y(e){return e[O]}function Q(e){const t=Y(K(e));return t[Array.prototype.indexOf.call(t,e)+1]||null}function Z(e){return O in e}function ee(e,t){const n=Y(e);t.forEach((e=>{e.moveRangeStart=n[e.fromSiblingIndex],e.moveRangeEnd=oe(e.moveRangeStart)})),t.forEach((t=>{const o=document.createComment("marker");t.moveToBeforeMarker=o;const r=n[t.toSiblingIndex+1];r?r.parentNode.insertBefore(o,r):ne(o,e)})),t.forEach((e=>{const t=e.moveToBeforeMarker,n=t.parentNode,o=e.moveRangeStart,r=e.moveRangeEnd;let i=o;for(;i;){const e=i.nextSibling;if(n.insertBefore(i,t),i===r)break;i=e}n.removeChild(t)})),t.forEach((e=>{n[e.toSiblingIndex]=e.moveRangeStart}))}function te(e){if(e instanceof Element||e instanceof DocumentFragment)return e;if(e instanceof Comment)return e.parentNode;throw new Error("Not a valid logical element")}function ne(e,t){if(t instanceof Element||t instanceof DocumentFragment)t.appendChild(e);else{if(!(t instanceof Comment))throw new Error(`Cannot append node because the parent is not a valid logical element. Parent: ${t}`);{const n=Q(t);n?n.parentNode.insertBefore(e,n):ne(e,K(t))}}}function oe(e){if(e instanceof Element||e instanceof DocumentFragment)return e;const t=Q(e);if(t)return t.previousSibling;{const t=K(e);return t instanceof Element||t instanceof DocumentFragment?t.lastChild:oe(t)}}function re(e){return`_bl_${e}`}const ie="__internalId";e.attachReviver(((e,t)=>t&&"object"==typeof t&&Object.prototype.hasOwnProperty.call(t,ie)&&"string"==typeof t[ie]?function(e){const t=`[${re(e)}]`;return document.querySelector(t)}(t[ie]):t));const se="_blazorDeferredValue";function ae(e){e instanceof HTMLOptionElement?de(e):se in e&&he(e,e[se])}function ce(e){return"select-multiple"===e.type}function le(e,t){e.value=t||""}function he(e,t){e instanceof HTMLSelectElement?ce(e)?function(e,t){t||(t=[]);for(let n=0;n{Oe()&&Ne(e,(e=>{Xe(e,!0,!1)}))}))}getRootComponentCount(){return this.rootComponentIds.size}attachRootComponentToLogicalElement(e,t,n){if(we(t))throw new Error(`Root component '${e}' could not be attached because its target element is already associated with a root component`);n&&(t=z(t,Y(t).length)),ye(t,!0),this.attachComponentToElement(e,t),this.rootComponentIds.add(e),fe.add(t)}updateComponent(e,t,n,o){var r;const i=this.childComponentLocations[t];if(!i)throw new Error(`No element is currently associated with component ${t}`);fe.delete(i)&&(j(i),i instanceof Comment&&(i.textContent="!"));const s=null===(r=te(i))||void 0===r?void 0:r.getRootNode(),a=s&&s.activeElement;this.applyEdits(e,t,i,0,n,o),a instanceof HTMLElement&&s&&s.activeElement!==a&&a.focus()}disposeComponent(e){if(this.rootComponentIds.delete(e)){const t=this.childComponentLocations[e];ye(t,!1),!0===t[me]?fe.add(t):j(t)}delete this.childComponentLocations[e]}disposeEventHandler(e){this.eventDelegator.removeListener(e)}attachComponentToElement(e,t){this.childComponentLocations[e]=t}applyEdits(e,n,o,r,i,s){let a,c=0,l=r;const h=e.arrayBuilderSegmentReader,d=e.editReader,u=e.frameReader,p=h.values(i),f=h.offset(i),g=f+h.count(i);for(let i=f;i{const t=document.createElement("script");t.textContent=e.textContent,e.getAttributeNames().forEach((n=>{t.setAttribute(n,e.getAttribute(n))})),e.parentNode.replaceChild(t,e)})),ue.content));var s;let a=0;for(;i.firstChild;)q(i.firstChild,r,a++)}applyAttribute(e,t,n,o){const r=e.frameReader,i=r.attributeName(o),s=r.attributeEventHandlerId(o);if(s){const e=Se(i);return void this.eventDelegator.setListener(n,e,s,t)}const a=r.attributeValue(o);this.setOrRemoveAttributeOrProperty(n,i,a)}insertFrameRange(e,t,n,o,r,i,s){const a=o;for(let a=i;a{et(t,e)})},enableNavigationInterception:function(e){if(void 0!==Ee&&Ee!==e)throw new Error("Only one interactive runtime may enable navigation interception at a time.");Ee=e},setHasLocationChangingListeners:function(e,t){const n=je.get(e);if(!n)throw new Error(`Renderer with ID '${e}' is not listening for navigation events`);n.hasLocationChangingEventListeners=t},endLocationChanging:function(e,t){qe&&e===We&&(qe(t),qe=null)},navigateTo:function(e,t){Ve(e,t,!0)},refresh:function(e){!e&&Me()?Ue(location.href,!0):location.reload()},getBaseURI:()=>document.baseURI,getLocationHref:()=>location.href,scrollToElement:Ke};function Ke(e){const t=document.getElementById(e);return!!t&&(t.scrollIntoView(),!0)}function Ve(e,t,n=!1){const o=Le(e),r=ot();if(t.forceLoad||!Pe(o)||"serverside-fullpageload"===r)!function(e,t){if(location.href===e){const t=e+"?";history.replaceState(null,"",t),location.replace(e)}else t?location.replace(e):location.href=e}(e,t.replaceHistoryEntry);else if("clientside-router"===r)Xe(o,!1,t.replaceHistoryEntry,t.historyEntryState,n);else{if("serverside-enhanced"!==r)throw new Error(`Unsupported page load mechanism: ${r}`);Ue(o,t.replaceHistoryEntry)}}async function Xe(e,t,n,o=void 0,r=!1){if(Qe(),function(e){const t=e.indexOf("#");return t>-1&&location.href.replace(location.hash,"")===e.substring(0,t)}(e))return void function(e,t,n){Ge(e,t,n);const o=e.indexOf("#");o!==e.length-1&&Ke(e.substring(o+1))}(e,n,o);const i=nt();(r||!(null==i?void 0:i.hasLocationChangingEventListeners)||await Ze(e,o,t,i))&&(Re=!0,Ge(e,n,o),await et(t))}function Ge(e,t,n=void 0){t?history.replaceState({userState:n,_index:He},"",e):(He++,history.pushState({userState:n,_index:He},"",e))}function Ye(e){return new Promise((t=>{const n=ze;ze=()=>{ze=n,t()},history.go(e)}))}function Qe(){qe&&(qe(!1),qe=null)}function Ze(e,t,n,o){return new Promise((r=>{Qe(),We++,qe=r,o.locationChanging(We,e,t,n)}))}async function et(e,t){const n=null!=t?t:location.href;await Promise.all(Array.from(je,(async([t,o])=>{var r;T(t)&&await o.locationChanged(n,null===(r=history.state)||void 0===r?void 0:r.userState,e)})))}async function tt(e){var t,n;ze&&"serverside-enhanced"!==ot()&&await ze(e),He=null!==(n=null===(t=history.state)||void 0===t?void 0:t._index)&&void 0!==n?n:0}function nt(){const e=Fe();if(void 0!==e)return je.get(e)}function ot(){return Oe()?"clientside-router":Me()?"serverside-enhanced":window.Blazor._internal.isBlazorWeb?"serverside-fullpageload":"clientside-router"}const rt={focus:function(e,t){if(e instanceof HTMLElement)e.focus({preventScroll:t});else{if(!(e instanceof SVGElement))throw new Error("Unable to focus an invalid element.");if(!e.hasAttribute("tabindex"))throw new Error("Unable to focus an SVG element that does not have a tabindex.");e.focus({preventScroll:t})}},focusBySelector:function(e,t){const n=document.querySelector(e);n&&(n.hasAttribute("tabindex")||(n.tabIndex=-1),n.focus({preventScroll:!0}))}},it={init:function(e,t,n,o=50){const r=at(t);(r||document.documentElement).style.overflowAnchor="none";const i=document.createRange();u(n.parentElement)&&(t.style.display="table-row",n.style.display="table-row");const s=new IntersectionObserver((function(o){o.forEach((o=>{var r;if(!o.isIntersecting)return;i.setStartAfter(t),i.setEndBefore(n);const s=i.getBoundingClientRect().height,a=null===(r=o.rootBounds)||void 0===r?void 0:r.height;o.target===t?e.invokeMethodAsync("OnSpacerBeforeVisible",o.intersectionRect.top-o.boundingClientRect.top,s,a):o.target===n&&n.offsetHeight>0&&e.invokeMethodAsync("OnSpacerAfterVisible",o.boundingClientRect.bottom-o.intersectionRect.bottom,s,a)}))}),{root:r,rootMargin:`${o}px`});s.observe(t),s.observe(n);const a=d(t),c=d(n),{observersByDotNetObjectId:l,id:h}=ct(e);function d(e){const t={attributes:!0},n=new MutationObserver(((n,o)=>{u(e.parentElement)&&(o.disconnect(),e.style.display="table-row",o.observe(e,t)),s.unobserve(e),s.observe(e)}));return n.observe(e,t),n}function u(e){return null!==e&&(e instanceof HTMLTableElement&&""===e.style.display||"table"===e.style.display||e instanceof HTMLTableSectionElement&&""===e.style.display||"table-row-group"===e.style.display)}l[h]={intersectionObserver:s,mutationObserverBefore:a,mutationObserverAfter:c}},dispose:function(e){const{observersByDotNetObjectId:t,id:n}=ct(e),o=t[n];o&&(o.intersectionObserver.disconnect(),o.mutationObserverBefore.disconnect(),o.mutationObserverAfter.disconnect(),e.dispose(),delete t[n])}},st=Symbol();function at(e){return e&&e!==document.body&&e!==document.documentElement?"visible"!==getComputedStyle(e).overflowY?e:at(e.parentElement):null}function ct(e){var t;const n=e._callDispatcher,o=e._id;return null!==(t=n[st])&&void 0!==t||(n[st]={}),{observersByDotNetObjectId:n[st],id:o}}const lt={getAndRemoveExistingTitle:function(){var e;const t=document.head?document.head.getElementsByTagName("title"):[];if(0===t.length)return null;let n=null;for(let o=t.length-1;o>=0;o--){const r=t[o],i=r.previousSibling;i instanceof Comment&&null!==K(i)||(null===n&&(n=r.textContent),null===(e=r.parentNode)||void 0===e||e.removeChild(r))}return n}},ht={init:function(e,t){t._blazorInputFileNextFileId=0,t.addEventListener("click",(function(){t.value=""})),t.addEventListener("change",(function(){t._blazorFilesById={};const n=Array.prototype.map.call(t.files,(function(e){const n={id:++t._blazorInputFileNextFileId,lastModified:new Date(e.lastModified).toISOString(),name:e.name,size:e.size,contentType:e.type,readPromise:void 0,arrayBuffer:void 0,blob:e};return t._blazorFilesById[n.id]=n,n}));e.invokeMethodAsync("NotifyChange",n)}))},toImageFile:async function(e,t,n,o,r){const i=dt(e,t),s=await new Promise((function(e){const t=new Image;t.onload=function(){URL.revokeObjectURL(t.src),e(t)},t.onerror=function(){t.onerror=null,URL.revokeObjectURL(t.src)},t.src=URL.createObjectURL(i.blob)})),a=await new Promise((function(e){var t;const i=Math.min(1,o/s.width),a=Math.min(1,r/s.height),c=Math.min(i,a),l=document.createElement("canvas");l.width=Math.round(s.width*c),l.height=Math.round(s.height*c),null===(t=l.getContext("2d"))||void 0===t||t.drawImage(s,0,0,l.width,l.height),l.toBlob(e,n)})),c={id:++e._blazorInputFileNextFileId,lastModified:i.lastModified,name:i.name,size:(null==a?void 0:a.size)||0,contentType:n,blob:a||i.blob};return e._blazorFilesById[c.id]=c,c},readFileData:async function(e,t){return dt(e,t).blob}};function dt(e,t){const n=e._blazorFilesById[t];if(!n)throw new Error(`There is no file with ID ${t}. The file list may have changed. See https://aka.ms/aspnet/blazor-input-file-multiple-selections.`);return n}const ut=new Set,pt={enableNavigationPrompt:function(e){0===ut.size&&window.addEventListener("beforeunload",ft),ut.add(e)},disableNavigationPrompt:function(e){ut.delete(e),0===ut.size&&window.removeEventListener("beforeunload",ft)}};function ft(e){e.preventDefault(),e.returnValue=!0}async function gt(e,t,n){return e instanceof Blob?await async function(e,t,n){const o=e.slice(t,t+n),r=await o.arrayBuffer();return new Uint8Array(r)}(e,t,n):function(e,t,n){return new Uint8Array(e.buffer,e.byteOffset+t,n)}(e,t,n)}const mt=new Map,vt={navigateTo:function(e,t,n=!1){Ve(e,t instanceof Object?t:{forceLoad:t,replaceHistoryEntry:n})},registerCustomEventType:function(e,t){if(!t)throw new Error("The options parameter is required.");if(i.has(e))throw new Error(`The event '${e}' is already registered.`);if(t.browserEventName){const n=s.get(t.browserEventName);n?n.push(e):s.set(t.browserEventName,[e]),a.forEach((n=>n(e,t.browserEventName)))}i.set(e,t)},rootComponents:y,runtime:{},_internal:{navigationManager:Je,domWrapper:rt,Virtualize:it,PageTitle:lt,InputFile:ht,NavigationLock:pt,getJSDataStreamChunk:gt,attachWebRendererInterop:k}};var yt;window.Blazor=vt,function(e){e[e.Trace=0]="Trace",e[e.Debug=1]="Debug",e[e.Information=2]="Information",e[e.Warning=3]="Warning",e[e.Error=4]="Error",e[e.Critical=5]="Critical",e[e.None=6]="None"}(yt||(yt={}));class wt{log(e,t){}}wt.instance=new wt;class bt{constructor(e){this.minLevel=e}log(e,t){if(e>=this.minLevel){const n=`[${(new Date).toISOString()}] ${yt[e]}: ${t}`;switch(e){case yt.Critical:case yt.Error:console.error(n);break;case yt.Warning:console.warn(n);break;case yt.Information:console.info(n);break;default:console.log(n)}}}}function _t(e,t){switch(t){case"webassembly":return Tt(e,"webassembly");case"server":return function(e){return Tt(e,"server").sort(((e,t)=>e.sequence-t.sequence))}(e);case"auto":return Tt(e,"auto")}}const St=/^\s*Blazor-Server-Component-State:(?[a-zA-Z0-9+/=]+)$/,Ct=/^\s*Blazor-WebAssembly-Component-State:(?[a-zA-Z0-9+/=]+)$/,Et=/^\s*Blazor-Web-Initializers:(?[a-zA-Z0-9+/=]+)$/;function It(e){return kt(e,St)}function kt(e,t,n="state"){var o;if(e.nodeType===Node.COMMENT_NODE){const r=e.textContent||"",i=t.exec(r),s=i&&i.groups&&i.groups[n];return s&&(null===(o=e.parentNode)||void 0===o||o.removeChild(e)),s}if(!e.hasChildNodes())return;const r=e.childNodes;for(let e=0;e.*)$/);function At(e,t){const n=e.currentElement;var o,r,i;if(n&&n.nodeType===Node.COMMENT_NODE&&n.textContent){const s=Rt.exec(n.textContent),a=s&&s.groups&&s.groups.descriptor;if(!a)return;!function(e){if(e.parentNode instanceof Document)throw new Error("Root components cannot be marked as interactive. The element must be rendered statically so that scripts are not evaluated multiple times.")}(n);try{const s=function(e){const t=JSON.parse(e),{type:n}=t;if("server"!==n&&"webassembly"!==n&&"auto"!==n)throw new Error(`Invalid component type '${n}'.`);return t}(a),c=function(e,t,n){const{prerenderId:o}=e;if(o){for(;n.next()&&n.currentElement;){const e=n.currentElement;if(e.nodeType!==Node.COMMENT_NODE)continue;if(!e.textContent)continue;const t=Rt.exec(e.textContent),r=t&&t[1];if(r)return Pt(r,o),e}throw new Error(`Could not find an end component comment for '${t}'.`)}}(s,n,e);if(t!==s.type)return;switch(s.type){case"webassembly":return r=n,i=c,Nt(o=s),{...o,uniqueId:Dt++,start:r,end:i};case"server":return function(e,t,n){return xt(e),{...e,uniqueId:Dt++,start:t,end:n}}(s,n,c);case"auto":return function(e,t,n){return xt(e),Nt(e),{...e,uniqueId:Dt++,start:t,end:n}}(s,n,c)}}catch(e){throw new Error(`Found malformed component comment at ${n.textContent}`)}}}let Dt=0;function xt(e){const{descriptor:t,sequence:n}=e;if(!t)throw new Error("descriptor must be defined when using a descriptor.");if(void 0===n)throw new Error("sequence must be defined when using a descriptor.");if(!Number.isInteger(n))throw new Error(`Error parsing the sequence '${n}' for component '${JSON.stringify(e)}'`)}function Nt(e){const{assembly:t,typeName:n}=e;if(!t)throw new Error("assembly must be defined when using a descriptor.");if(!n)throw new Error("typeName must be defined when using a descriptor.");e.parameterDefinitions=e.parameterDefinitions&&atob(e.parameterDefinitions),e.parameterValues=e.parameterValues&&atob(e.parameterValues)}function Pt(e,t){const n=JSON.parse(e);if(1!==Object.keys(n).length)throw new Error(`Invalid end of component comment: '${e}'`);const o=n.prerenderId;if(!o)throw new Error(`End of component comment must have a value for the prerendered property: '${e}'`);if(o!==t)throw new Error(`End of component comment prerendered property must match the start comment prerender id: '${t}', '${o}'`)}class Mt{constructor(e){this.childNodes=e,this.currentIndex=-1,this.length=e.length}next(){return this.currentIndex++,this.currentIndex{n+=`0x${e<16?"0":""}${e.toString(16)} `})),n.substr(0,n.length-1)}(e)}'`)):"string"==typeof e&&(n=`String data of length ${e.length}`,t&&(n+=`. Content: '${e}'`)),n}function zt(e){return e&&"undefined"!=typeof ArrayBuffer&&(e instanceof ArrayBuffer||e.constructor&&"ArrayBuffer"===e.constructor.name)}async function qt(e,t,n,o,r,i){const s={},[a,c]=Vt();s[a]=c,e.log(Ot.Trace,`(${t} transport) sending data. ${jt(r,i.logMessageContent)}.`);const l=zt(r)?"arraybuffer":"text",h=await n.post(o,{content:r,headers:{...s,...i.headers},responseType:l,timeout:i.timeout,withCredentials:i.withCredentials});e.log(Ot.Trace,`(${t} transport) request complete. Response status: ${h.statusCode}.`)}class Jt{constructor(e,t){this._subject=e,this._observer=t}dispose(){const e=this._subject.observers.indexOf(this._observer);e>-1&&this._subject.observers.splice(e,1),0===this._subject.observers.length&&this._subject.cancelCallback&&this._subject.cancelCallback().catch((e=>{}))}}class Kt{constructor(e){this._minLevel=e,this.out=console}log(e,t){if(e>=this._minLevel){const n=`[${(new Date).toISOString()}] ${Ot[e]}: ${t}`;switch(e){case Ot.Critical:case Ot.Error:this.out.error(n);break;case Ot.Warning:this.out.warn(n);break;case Ot.Information:this.out.info(n);break;default:this.out.log(n)}}}}function Vt(){let e="X-SignalR-User-Agent";return Wt.isNode&&(e="User-Agent"),[e,Xt($t,Gt(),Wt.isNode?"NodeJS":"Browser",Yt())]}function Xt(e,t,n,o){let r="Microsoft SignalR/";const i=e.split(".");return r+=`${i[0]}.${i[1]}`,r+=` (${e}; `,r+=t&&""!==t?`${t}; `:"Unknown OS; ",r+=`${n}`,r+=o?`; ${o}`:"; Unknown Runtime Version",r+=")",r}function Gt(){if(!Wt.isNode)return"";switch(process.platform){case"win32":return"Windows NT";case"darwin":return"macOS";case"linux":return"Linux";default:return process.platform}}function Yt(){if(Wt.isNode)return process.versions.node}function Qt(e){return e.stack?e.stack:e.message?e.message:`${e}`}class Zt{writeHandshakeRequest(e){return Bt.write(JSON.stringify(e))}parseHandshakeResponse(e){let t,n;if(zt(e)){const o=new Uint8Array(e),r=o.indexOf(Bt.RecordSeparatorCode);if(-1===r)throw new Error("Message is incomplete.");const i=r+1;t=String.fromCharCode.apply(null,Array.prototype.slice.call(o.slice(0,i))),n=o.byteLength>i?o.slice(i).buffer:null}else{const o=e,r=o.indexOf(Bt.RecordSeparator);if(-1===r)throw new Error("Message is incomplete.");const i=r+1;t=o.substring(0,i),n=o.length>i?o.substring(i):null}const o=Bt.parse(t),r=JSON.parse(o[0]);if(r.type)throw new Error("Expected a handshake response from the server.");return[n,r]}}class en extends Error{constructor(e,t){const n=new.target.prototype;super(`${e}: Status code '${t}'`),this.statusCode=t,this.__proto__=n}}class tn extends Error{constructor(e="A timeout occurred."){const t=new.target.prototype;super(e),this.__proto__=t}}class nn extends Error{constructor(e="An abort occurred."){const t=new.target.prototype;super(e),this.__proto__=t}}class on extends Error{constructor(e,t){const n=new.target.prototype;super(e),this.transport=t,this.errorType="UnsupportedTransportError",this.__proto__=n}}class rn extends Error{constructor(e,t){const n=new.target.prototype;super(e),this.transport=t,this.errorType="DisabledTransportError",this.__proto__=n}}class sn extends Error{constructor(e,t){const n=new.target.prototype;super(e),this.transport=t,this.errorType="FailedToStartTransportError",this.__proto__=n}}class an extends Error{constructor(e){const t=new.target.prototype;super(e),this.errorType="FailedToNegotiateWithServerError",this.__proto__=t}}class cn extends Error{constructor(e,t){const n=new.target.prototype;super(e),this.innerErrors=t,this.__proto__=n}}var ln,hn;!function(e){e[e.Invocation=1]="Invocation",e[e.StreamItem=2]="StreamItem",e[e.Completion=3]="Completion",e[e.StreamInvocation=4]="StreamInvocation",e[e.CancelInvocation=5]="CancelInvocation",e[e.Ping=6]="Ping",e[e.Close=7]="Close",e[e.Ack=8]="Ack",e[e.Sequence=9]="Sequence"}(ln||(ln={}));class dn{constructor(){this.observers=[]}next(e){for(const t of this.observers)t.next(e)}error(e){for(const t of this.observers)t.error&&t.error(e)}complete(){for(const e of this.observers)e.complete&&e.complete()}subscribe(e){return this.observers.push(e),new Jt(this,e)}}class un{constructor(e,t,n){this._bufferSize=1e5,this._messages=[],this._totalMessageCount=0,this._waitForSequenceMessage=!1,this._nextReceivingSequenceId=1,this._latestReceivedSequenceId=0,this._bufferedByteCount=0,this._reconnectInProgress=!1,this._protocol=e,this._connection=t,this._bufferSize=n}async _send(e){const t=this._protocol.writeMessage(e);let n=Promise.resolve();if(this._isInvocationMessage(e)){this._totalMessageCount++;let e=()=>{},o=()=>{};zt(t)?this._bufferedByteCount+=t.byteLength:this._bufferedByteCount+=t.length,this._bufferedByteCount>=this._bufferSize&&(n=new Promise(((t,n)=>{e=t,o=n}))),this._messages.push(new pn(t,this._totalMessageCount,e,o))}try{this._reconnectInProgress||await this._connection.send(t)}catch{this._disconnected()}await n}_ack(e){let t=-1;for(let n=0;nthis._nextReceivingSequenceId?this._connection.stop(new Error("Sequence ID greater than amount of messages we've received.")):this._nextReceivingSequenceId=e.sequenceId}_disconnected(){this._reconnectInProgress=!0,this._waitForSequenceMessage=!0}async _resend(){const e=0!==this._messages.length?this._messages[0]._id:this._totalMessageCount+1;await this._connection.send(this._protocol.writeMessage({type:ln.Sequence,sequenceId:e}));const t=this._messages;for(const e of t)await this._connection.send(e._message);this._reconnectInProgress=!1}_dispose(e){null!=e||(e=new Error("Unable to reconnect to server."));for(const t of this._messages)t._rejector(e)}_isInvocationMessage(e){switch(e.type){case ln.Invocation:case ln.StreamItem:case ln.Completion:case ln.StreamInvocation:case ln.CancelInvocation:return!0;case ln.Close:case ln.Sequence:case ln.Ping:case ln.Ack:return!1}}_ackTimer(){void 0===this._ackTimerHandle&&(this._ackTimerHandle=setTimeout((async()=>{try{this._reconnectInProgress||await this._connection.send(this._protocol.writeMessage({type:ln.Ack,sequenceId:this._latestReceivedSequenceId}))}catch{}clearTimeout(this._ackTimerHandle),this._ackTimerHandle=void 0}),1e3))}}class pn{constructor(e,t,n,o){this._message=e,this._id=t,this._resolver=n,this._rejector=o}}!function(e){e.Disconnected="Disconnected",e.Connecting="Connecting",e.Connected="Connected",e.Disconnecting="Disconnecting",e.Reconnecting="Reconnecting"}(hn||(hn={}));class fn{static create(e,t,n,o,r,i,s){return new fn(e,t,n,o,r,i,s)}constructor(e,t,n,o,r,i,s){this._nextKeepAlive=0,this._freezeEventListener=()=>{this._logger.log(Ot.Warning,"The page is being frozen, this will likely lead to the connection being closed and messages being lost. For more information see the docs at https://learn.microsoft.com/aspnet/core/signalr/javascript-client#bsleep")},Ht.isRequired(e,"connection"),Ht.isRequired(t,"logger"),Ht.isRequired(n,"protocol"),this.serverTimeoutInMilliseconds=null!=r?r:3e4,this.keepAliveIntervalInMilliseconds=null!=i?i:15e3,this._statefulReconnectBufferSize=null!=s?s:1e5,this._logger=t,this._protocol=n,this.connection=e,this._reconnectPolicy=o,this._handshakeProtocol=new Zt,this.connection.onreceive=e=>this._processIncomingData(e),this.connection.onclose=e=>this._connectionClosed(e),this._callbacks={},this._methods={},this._closedCallbacks=[],this._reconnectingCallbacks=[],this._reconnectedCallbacks=[],this._invocationId=0,this._receivedHandshakeResponse=!1,this._connectionState=hn.Disconnected,this._connectionStarted=!1,this._cachedPingMessage=this._protocol.writeMessage({type:ln.Ping})}get state(){return this._connectionState}get connectionId(){return this.connection&&this.connection.connectionId||null}get baseUrl(){return this.connection.baseUrl||""}set baseUrl(e){if(this._connectionState!==hn.Disconnected&&this._connectionState!==hn.Reconnecting)throw new Error("The HubConnection must be in the Disconnected or Reconnecting state to change the url.");if(!e)throw new Error("The HubConnection url must be a valid url.");this.connection.baseUrl=e}start(){return this._startPromise=this._startWithStateTransitions(),this._startPromise}async _startWithStateTransitions(){if(this._connectionState!==hn.Disconnected)return Promise.reject(new Error("Cannot start a HubConnection that is not in the 'Disconnected' state."));this._connectionState=hn.Connecting,this._logger.log(Ot.Debug,"Starting HubConnection.");try{await this._startInternal(),Wt.isBrowser&&window.document.addEventListener("freeze",this._freezeEventListener),this._connectionState=hn.Connected,this._connectionStarted=!0,this._logger.log(Ot.Debug,"HubConnection connected successfully.")}catch(e){return this._connectionState=hn.Disconnected,this._logger.log(Ot.Debug,`HubConnection failed to start successfully because of error '${e}'.`),Promise.reject(e)}}async _startInternal(){this._stopDuringStartError=void 0,this._receivedHandshakeResponse=!1;const e=new Promise(((e,t)=>{this._handshakeResolver=e,this._handshakeRejecter=t}));await this.connection.start(this._protocol.transferFormat);try{let t=this._protocol.version;this.connection.features.reconnect||(t=1);const n={protocol:this._protocol.name,version:t};if(this._logger.log(Ot.Debug,"Sending handshake request."),await this._sendMessage(this._handshakeProtocol.writeHandshakeRequest(n)),this._logger.log(Ot.Information,`Using HubProtocol '${this._protocol.name}'.`),this._cleanupTimeout(),this._resetTimeoutPeriod(),this._resetKeepAliveInterval(),await e,this._stopDuringStartError)throw this._stopDuringStartError;!!this.connection.features.reconnect&&(this._messageBuffer=new un(this._protocol,this.connection,this._statefulReconnectBufferSize),this.connection.features.disconnected=this._messageBuffer._disconnected.bind(this._messageBuffer),this.connection.features.resend=()=>{if(this._messageBuffer)return this._messageBuffer._resend()}),this.connection.features.inherentKeepAlive||await this._sendMessage(this._cachedPingMessage)}catch(e){throw this._logger.log(Ot.Debug,`Hub handshake failed with error '${e}' during start(). Stopping HubConnection.`),this._cleanupTimeout(),this._cleanupPingTimer(),await this.connection.stop(e),e}}async stop(){const e=this._startPromise;this.connection.features.reconnect=!1,this._stopPromise=this._stopInternal(),await this._stopPromise;try{await e}catch(e){}}_stopInternal(e){if(this._connectionState===hn.Disconnected)return this._logger.log(Ot.Debug,`Call to HubConnection.stop(${e}) ignored because it is already in the disconnected state.`),Promise.resolve();if(this._connectionState===hn.Disconnecting)return this._logger.log(Ot.Debug,`Call to HttpConnection.stop(${e}) ignored because the connection is already in the disconnecting state.`),this._stopPromise;const t=this._connectionState;return this._connectionState=hn.Disconnecting,this._logger.log(Ot.Debug,"Stopping HubConnection."),this._reconnectDelayHandle?(this._logger.log(Ot.Debug,"Connection stopped during reconnect delay. Done reconnecting."),clearTimeout(this._reconnectDelayHandle),this._reconnectDelayHandle=void 0,this._completeClose(),Promise.resolve()):(t===hn.Connected&&this._sendCloseMessage(),this._cleanupTimeout(),this._cleanupPingTimer(),this._stopDuringStartError=e||new nn("The connection was stopped before the hub handshake could complete."),this.connection.stop(e))}async _sendCloseMessage(){try{await this._sendWithProtocol(this._createCloseMessage())}catch{}}stream(e,...t){const[n,o]=this._replaceStreamingParams(t),r=this._createStreamInvocation(e,t,o);let i;const s=new dn;return s.cancelCallback=()=>{const e=this._createCancelInvocation(r.invocationId);return delete this._callbacks[r.invocationId],i.then((()=>this._sendWithProtocol(e)))},this._callbacks[r.invocationId]=(e,t)=>{t?s.error(t):e&&(e.type===ln.Completion?e.error?s.error(new Error(e.error)):s.complete():s.next(e.item))},i=this._sendWithProtocol(r).catch((e=>{s.error(e),delete this._callbacks[r.invocationId]})),this._launchStreams(n,i),s}_sendMessage(e){return this._resetKeepAliveInterval(),this.connection.send(e)}_sendWithProtocol(e){return this._messageBuffer?this._messageBuffer._send(e):this._sendMessage(this._protocol.writeMessage(e))}send(e,...t){const[n,o]=this._replaceStreamingParams(t),r=this._sendWithProtocol(this._createInvocation(e,t,!0,o));return this._launchStreams(n,r),r}invoke(e,...t){const[n,o]=this._replaceStreamingParams(t),r=this._createInvocation(e,t,!1,o);return new Promise(((e,t)=>{this._callbacks[r.invocationId]=(n,o)=>{o?t(o):n&&(n.type===ln.Completion?n.error?t(new Error(n.error)):e(n.result):t(new Error(`Unexpected message type: ${n.type}`)))};const o=this._sendWithProtocol(r).catch((e=>{t(e),delete this._callbacks[r.invocationId]}));this._launchStreams(n,o)}))}on(e,t){e&&t&&(e=e.toLowerCase(),this._methods[e]||(this._methods[e]=[]),-1===this._methods[e].indexOf(t)&&this._methods[e].push(t))}off(e,t){if(!e)return;e=e.toLowerCase();const n=this._methods[e];if(n)if(t){const o=n.indexOf(t);-1!==o&&(n.splice(o,1),0===n.length&&delete this._methods[e])}else delete this._methods[e]}onclose(e){e&&this._closedCallbacks.push(e)}onreconnecting(e){e&&this._reconnectingCallbacks.push(e)}onreconnected(e){e&&this._reconnectedCallbacks.push(e)}_processIncomingData(e){if(this._cleanupTimeout(),this._receivedHandshakeResponse||(e=this._processHandshakeResponse(e),this._receivedHandshakeResponse=!0),e){const t=this._protocol.parseMessages(e,this._logger);for(const e of t)if(!this._messageBuffer||this._messageBuffer._shouldProcessMessage(e))switch(e.type){case ln.Invocation:this._invokeClientMethod(e);break;case ln.StreamItem:case ln.Completion:{const t=this._callbacks[e.invocationId];if(t){e.type===ln.Completion&&delete this._callbacks[e.invocationId];try{t(e)}catch(e){this._logger.log(Ot.Error,`Stream callback threw error: ${Qt(e)}`)}}break}case ln.Ping:break;case ln.Close:{this._logger.log(Ot.Information,"Close message received from server.");const t=e.error?new Error("Server returned an error on close: "+e.error):void 0;!0===e.allowReconnect?this.connection.stop(t):this._stopPromise=this._stopInternal(t);break}case ln.Ack:this._messageBuffer&&this._messageBuffer._ack(e);break;case ln.Sequence:this._messageBuffer&&this._messageBuffer._resetSequence(e);break;default:this._logger.log(Ot.Warning,`Invalid message type: ${e.type}.`)}}this._resetTimeoutPeriod()}_processHandshakeResponse(e){let t,n;try{[n,t]=this._handshakeProtocol.parseHandshakeResponse(e)}catch(e){const t="Error parsing handshake response: "+e;this._logger.log(Ot.Error,t);const n=new Error(t);throw this._handshakeRejecter(n),n}if(t.error){const e="Server returned handshake error: "+t.error;this._logger.log(Ot.Error,e);const n=new Error(e);throw this._handshakeRejecter(n),n}return this._logger.log(Ot.Debug,"Server handshake complete."),this._handshakeResolver(),n}_resetKeepAliveInterval(){this.connection.features.inherentKeepAlive||(this._nextKeepAlive=(new Date).getTime()+this.keepAliveIntervalInMilliseconds,this._cleanupPingTimer())}_resetTimeoutPeriod(){if(!(this.connection.features&&this.connection.features.inherentKeepAlive||(this._timeoutHandle=setTimeout((()=>this.serverTimeout()),this.serverTimeoutInMilliseconds),void 0!==this._pingServerHandle))){let e=this._nextKeepAlive-(new Date).getTime();e<0&&(e=0),this._pingServerHandle=setTimeout((async()=>{if(this._connectionState===hn.Connected)try{await this._sendMessage(this._cachedPingMessage)}catch{this._cleanupPingTimer()}}),e)}}serverTimeout(){this.connection.stop(new Error("Server timeout elapsed without receiving a message from the server."))}async _invokeClientMethod(e){const t=e.target.toLowerCase(),n=this._methods[t];if(!n)return this._logger.log(Ot.Warning,`No client method with the name '${t}' found.`),void(e.invocationId&&(this._logger.log(Ot.Warning,`No result given for '${t}' method and invocation ID '${e.invocationId}'.`),await this._sendWithProtocol(this._createCompletionMessage(e.invocationId,"Client didn't provide a result.",null))));const o=n.slice(),r=!!e.invocationId;let i,s,a;for(const n of o)try{const o=i;i=await n.apply(this,e.arguments),r&&i&&o&&(this._logger.log(Ot.Error,`Multiple results provided for '${t}'. Sending error to server.`),a=this._createCompletionMessage(e.invocationId,"Client provided multiple results.",null)),s=void 0}catch(e){s=e,this._logger.log(Ot.Error,`A callback for the method '${t}' threw error '${e}'.`)}a?await this._sendWithProtocol(a):r?(s?a=this._createCompletionMessage(e.invocationId,`${s}`,null):void 0!==i?a=this._createCompletionMessage(e.invocationId,null,i):(this._logger.log(Ot.Warning,`No result given for '${t}' method and invocation ID '${e.invocationId}'.`),a=this._createCompletionMessage(e.invocationId,"Client didn't provide a result.",null)),await this._sendWithProtocol(a)):i&&this._logger.log(Ot.Error,`Result given for '${t}' method but server is not expecting a result.`)}_connectionClosed(e){this._logger.log(Ot.Debug,`HubConnection.connectionClosed(${e}) called while in state ${this._connectionState}.`),this._stopDuringStartError=this._stopDuringStartError||e||new nn("The underlying connection was closed before the hub handshake could complete."),this._handshakeResolver&&this._handshakeResolver(),this._cancelCallbacksWithError(e||new Error("Invocation canceled due to the underlying connection being closed.")),this._cleanupTimeout(),this._cleanupPingTimer(),this._connectionState===hn.Disconnecting?this._completeClose(e):this._connectionState===hn.Connected&&this._reconnectPolicy?this._reconnect(e):this._connectionState===hn.Connected&&this._completeClose(e)}_completeClose(e){if(this._connectionStarted){this._connectionState=hn.Disconnected,this._connectionStarted=!1,this._messageBuffer&&(this._messageBuffer._dispose(null!=e?e:new Error("Connection closed.")),this._messageBuffer=void 0),Wt.isBrowser&&window.document.removeEventListener("freeze",this._freezeEventListener);try{this._closedCallbacks.forEach((t=>t.apply(this,[e])))}catch(t){this._logger.log(Ot.Error,`An onclose callback called with error '${e}' threw error '${t}'.`)}}}async _reconnect(e){const t=Date.now();let n=0,o=void 0!==e?e:new Error("Attempting to reconnect due to a unknown error."),r=this._getNextRetryDelay(n++,0,o);if(null===r)return this._logger.log(Ot.Debug,"Connection not reconnecting because the IRetryPolicy returned null on the first reconnect attempt."),void this._completeClose(e);if(this._connectionState=hn.Reconnecting,e?this._logger.log(Ot.Information,`Connection reconnecting because of error '${e}'.`):this._logger.log(Ot.Information,"Connection reconnecting."),0!==this._reconnectingCallbacks.length){try{this._reconnectingCallbacks.forEach((t=>t.apply(this,[e])))}catch(t){this._logger.log(Ot.Error,`An onreconnecting callback called with error '${e}' threw error '${t}'.`)}if(this._connectionState!==hn.Reconnecting)return void this._logger.log(Ot.Debug,"Connection left the reconnecting state in onreconnecting callback. Done reconnecting.")}for(;null!==r;){if(this._logger.log(Ot.Information,`Reconnect attempt number ${n} will start in ${r} ms.`),await new Promise((e=>{this._reconnectDelayHandle=setTimeout(e,r)})),this._reconnectDelayHandle=void 0,this._connectionState!==hn.Reconnecting)return void this._logger.log(Ot.Debug,"Connection left the reconnecting state during reconnect delay. Done reconnecting.");try{if(await this._startInternal(),this._connectionState=hn.Connected,this._logger.log(Ot.Information,"HubConnection reconnected successfully."),0!==this._reconnectedCallbacks.length)try{this._reconnectedCallbacks.forEach((e=>e.apply(this,[this.connection.connectionId])))}catch(e){this._logger.log(Ot.Error,`An onreconnected callback called with connectionId '${this.connection.connectionId}; threw error '${e}'.`)}return}catch(e){if(this._logger.log(Ot.Information,`Reconnect attempt failed because of error '${e}'.`),this._connectionState!==hn.Reconnecting)return this._logger.log(Ot.Debug,`Connection moved to the '${this._connectionState}' from the reconnecting state during reconnect attempt. Done reconnecting.`),void(this._connectionState===hn.Disconnecting&&this._completeClose());o=e instanceof Error?e:new Error(e.toString()),r=this._getNextRetryDelay(n++,Date.now()-t,o)}}this._logger.log(Ot.Information,`Reconnect retries have been exhausted after ${Date.now()-t} ms and ${n} failed attempts. Connection disconnecting.`),this._completeClose()}_getNextRetryDelay(e,t,n){try{return this._reconnectPolicy.nextRetryDelayInMilliseconds({elapsedMilliseconds:t,previousRetryCount:e,retryReason:n})}catch(n){return this._logger.log(Ot.Error,`IRetryPolicy.nextRetryDelayInMilliseconds(${e}, ${t}) threw error '${n}'.`),null}}_cancelCallbacksWithError(e){const t=this._callbacks;this._callbacks={},Object.keys(t).forEach((n=>{const o=t[n];try{o(null,e)}catch(t){this._logger.log(Ot.Error,`Stream 'error' callback called with '${e}' threw error: ${Qt(t)}`)}}))}_cleanupPingTimer(){this._pingServerHandle&&(clearTimeout(this._pingServerHandle),this._pingServerHandle=void 0)}_cleanupTimeout(){this._timeoutHandle&&clearTimeout(this._timeoutHandle)}_createInvocation(e,t,n,o){if(n)return 0!==o.length?{arguments:t,streamIds:o,target:e,type:ln.Invocation}:{arguments:t,target:e,type:ln.Invocation};{const n=this._invocationId;return this._invocationId++,0!==o.length?{arguments:t,invocationId:n.toString(),streamIds:o,target:e,type:ln.Invocation}:{arguments:t,invocationId:n.toString(),target:e,type:ln.Invocation}}}_launchStreams(e,t){if(0!==e.length){t||(t=Promise.resolve());for(const n in e)e[n].subscribe({complete:()=>{t=t.then((()=>this._sendWithProtocol(this._createCompletionMessage(n))))},error:e=>{let o;o=e instanceof Error?e.message:e&&e.toString?e.toString():"Unknown error",t=t.then((()=>this._sendWithProtocol(this._createCompletionMessage(n,o))))},next:e=>{t=t.then((()=>this._sendWithProtocol(this._createStreamItemMessage(n,e))))}})}}_replaceStreamingParams(e){const t=[],n=[];for(let o=0;o0)&&(t=!1,this._accessToken=await this._accessTokenFactory()),this._setAuthorizationHeader(e);const n=await this._innerClient.send(e);return t&&401===n.statusCode&&this._accessTokenFactory?(this._accessToken=await this._accessTokenFactory(),this._setAuthorizationHeader(e),await this._innerClient.send(e)):n}_setAuthorizationHeader(e){e.headers||(e.headers={}),this._accessToken?e.headers[vn.Authorization]=`Bearer ${this._accessToken}`:this._accessTokenFactory&&e.headers[vn.Authorization]&&delete e.headers[vn.Authorization]}getCookieString(e){return this._innerClient.getCookieString(e)}}class _n extends wn{constructor(e){super(),this._logger=e;const t={_fetchType:void 0,_jar:void 0};var o;o=t,"undefined"==typeof fetch&&(o._jar=new(n(628).CookieJar),"undefined"==typeof fetch?o._fetchType=n(200):o._fetchType=fetch,o._fetchType=n(203)(o._fetchType,o._jar),1)?(this._fetchType=t._fetchType,this._jar=t._jar):this._fetchType=fetch.bind(function(){if("undefined"!=typeof globalThis)return globalThis;if("undefined"!=typeof self)return self;if("undefined"!=typeof window)return window;if(void 0!==n.g)return n.g;throw new Error("could not find global")}()),this._abortControllerType=AbortController;const r={_abortControllerType:this._abortControllerType};(function(e){return"undefined"==typeof AbortController&&(e._abortControllerType=n(778),!0)})(r)&&(this._abortControllerType=r._abortControllerType)}async send(e){if(e.abortSignal&&e.abortSignal.aborted)throw new nn;if(!e.method)throw new Error("No method defined.");if(!e.url)throw new Error("No url defined.");const t=new this._abortControllerType;let n;e.abortSignal&&(e.abortSignal.onabort=()=>{t.abort(),n=new nn});let o,r=null;if(e.timeout){const o=e.timeout;r=setTimeout((()=>{t.abort(),this._logger.log(Ot.Warning,"Timeout from HTTP request."),n=new tn}),o)}""===e.content&&(e.content=void 0),e.content&&(e.headers=e.headers||{},zt(e.content)?e.headers["Content-Type"]="application/octet-stream":e.headers["Content-Type"]="text/plain;charset=UTF-8");try{o=await this._fetchType(e.url,{body:e.content,cache:"no-cache",credentials:!0===e.withCredentials?"include":"same-origin",headers:{"X-Requested-With":"XMLHttpRequest",...e.headers},method:e.method,mode:"cors",redirect:"follow",signal:t.signal})}catch(e){if(n)throw n;throw this._logger.log(Ot.Warning,`Error from HTTP request. ${e}.`),e}finally{r&&clearTimeout(r),e.abortSignal&&(e.abortSignal.onabort=null)}if(!o.ok){const e=await Sn(o,"text");throw new en(e||o.statusText,o.status)}const i=Sn(o,e.responseType),s=await i;return new yn(o.status,o.statusText,s)}getCookieString(e){return""}}function Sn(e,t){let n;switch(t){case"arraybuffer":n=e.arrayBuffer();break;case"text":default:n=e.text();break;case"blob":case"document":case"json":throw new Error(`${t} is not supported.`)}return n}class Cn extends wn{constructor(e){super(),this._logger=e}send(e){return e.abortSignal&&e.abortSignal.aborted?Promise.reject(new nn):e.method?e.url?new Promise(((t,n)=>{const o=new XMLHttpRequest;o.open(e.method,e.url,!0),o.withCredentials=void 0===e.withCredentials||e.withCredentials,o.setRequestHeader("X-Requested-With","XMLHttpRequest"),""===e.content&&(e.content=void 0),e.content&&(zt(e.content)?o.setRequestHeader("Content-Type","application/octet-stream"):o.setRequestHeader("Content-Type","text/plain;charset=UTF-8"));const r=e.headers;r&&Object.keys(r).forEach((e=>{o.setRequestHeader(e,r[e])})),e.responseType&&(o.responseType=e.responseType),e.abortSignal&&(e.abortSignal.onabort=()=>{o.abort(),n(new nn)}),e.timeout&&(o.timeout=e.timeout),o.onload=()=>{e.abortSignal&&(e.abortSignal.onabort=null),o.status>=200&&o.status<300?t(new yn(o.status,o.statusText,o.response||o.responseText)):n(new en(o.response||o.responseText||o.statusText,o.status))},o.onerror=()=>{this._logger.log(Ot.Warning,`Error from HTTP request. ${o.status}: ${o.statusText}.`),n(new en(o.statusText,o.status))},o.ontimeout=()=>{this._logger.log(Ot.Warning,"Timeout from HTTP request."),n(new tn)},o.send(e.content)})):Promise.reject(new Error("No url defined.")):Promise.reject(new Error("No method defined."))}}class En extends wn{constructor(e){if(super(),"undefined"!=typeof fetch)this._httpClient=new _n(e);else{if("undefined"==typeof XMLHttpRequest)throw new Error("No usable HttpClient found.");this._httpClient=new Cn(e)}}send(e){return e.abortSignal&&e.abortSignal.aborted?Promise.reject(new nn):e.method?e.url?this._httpClient.send(e):Promise.reject(new Error("No url defined.")):Promise.reject(new Error("No method defined."))}getCookieString(e){return this._httpClient.getCookieString(e)}}var In,kn;!function(e){e[e.None=0]="None",e[e.WebSockets=1]="WebSockets",e[e.ServerSentEvents=2]="ServerSentEvents",e[e.LongPolling=4]="LongPolling"}(In||(In={})),function(e){e[e.Text=1]="Text",e[e.Binary=2]="Binary"}(kn||(kn={}));class Tn{constructor(){this._isAborted=!1,this.onabort=null}abort(){this._isAborted||(this._isAborted=!0,this.onabort&&this.onabort())}get signal(){return this}get aborted(){return this._isAborted}}class Rn{get pollAborted(){return this._pollAbort.aborted}constructor(e,t,n){this._httpClient=e,this._logger=t,this._pollAbort=new Tn,this._options=n,this._running=!1,this.onreceive=null,this.onclose=null}async connect(e,t){if(Ht.isRequired(e,"url"),Ht.isRequired(t,"transferFormat"),Ht.isIn(t,kn,"transferFormat"),this._url=e,this._logger.log(Ot.Trace,"(LongPolling transport) Connecting."),t===kn.Binary&&"undefined"!=typeof XMLHttpRequest&&"string"!=typeof(new XMLHttpRequest).responseType)throw new Error("Binary protocols over XmlHttpRequest not implementing advanced features are not supported.");const[n,o]=Vt(),r={[n]:o,...this._options.headers},i={abortSignal:this._pollAbort.signal,headers:r,timeout:1e5,withCredentials:this._options.withCredentials};t===kn.Binary&&(i.responseType="arraybuffer");const s=`${e}&_=${Date.now()}`;this._logger.log(Ot.Trace,`(LongPolling transport) polling: ${s}.`);const a=await this._httpClient.get(s,i);200!==a.statusCode?(this._logger.log(Ot.Error,`(LongPolling transport) Unexpected response code: ${a.statusCode}.`),this._closeError=new en(a.statusText||"",a.statusCode),this._running=!1):this._running=!0,this._receiving=this._poll(this._url,i)}async _poll(e,t){try{for(;this._running;)try{const n=`${e}&_=${Date.now()}`;this._logger.log(Ot.Trace,`(LongPolling transport) polling: ${n}.`);const o=await this._httpClient.get(n,t);204===o.statusCode?(this._logger.log(Ot.Information,"(LongPolling transport) Poll terminated by server."),this._running=!1):200!==o.statusCode?(this._logger.log(Ot.Error,`(LongPolling transport) Unexpected response code: ${o.statusCode}.`),this._closeError=new en(o.statusText||"",o.statusCode),this._running=!1):o.content?(this._logger.log(Ot.Trace,`(LongPolling transport) data received. ${jt(o.content,this._options.logMessageContent)}.`),this.onreceive&&this.onreceive(o.content)):this._logger.log(Ot.Trace,"(LongPolling transport) Poll timed out, reissuing.")}catch(e){this._running?e instanceof tn?this._logger.log(Ot.Trace,"(LongPolling transport) Poll timed out, reissuing."):(this._closeError=e,this._running=!1):this._logger.log(Ot.Trace,`(LongPolling transport) Poll errored after shutdown: ${e.message}`)}}finally{this._logger.log(Ot.Trace,"(LongPolling transport) Polling complete."),this.pollAborted||this._raiseOnClose()}}async send(e){return this._running?qt(this._logger,"LongPolling",this._httpClient,this._url,e,this._options):Promise.reject(new Error("Cannot send until the transport is connected"))}async stop(){this._logger.log(Ot.Trace,"(LongPolling transport) Stopping polling."),this._running=!1,this._pollAbort.abort();try{await this._receiving,this._logger.log(Ot.Trace,`(LongPolling transport) sending DELETE request to ${this._url}.`);const e={},[t,n]=Vt();e[t]=n;const o={headers:{...e,...this._options.headers},timeout:this._options.timeout,withCredentials:this._options.withCredentials};let r;try{await this._httpClient.delete(this._url,o)}catch(e){r=e}r?r instanceof en&&(404===r.statusCode?this._logger.log(Ot.Trace,"(LongPolling transport) A 404 response was returned from sending a DELETE request."):this._logger.log(Ot.Trace,`(LongPolling transport) Error sending a DELETE request: ${r}`)):this._logger.log(Ot.Trace,"(LongPolling transport) DELETE request accepted.")}finally{this._logger.log(Ot.Trace,"(LongPolling transport) Stop finished."),this._raiseOnClose()}}_raiseOnClose(){if(this.onclose){let e="(LongPolling transport) Firing onclose event.";this._closeError&&(e+=" Error: "+this._closeError),this._logger.log(Ot.Trace,e),this.onclose(this._closeError)}}}class An{constructor(e,t,n,o){this._httpClient=e,this._accessToken=t,this._logger=n,this._options=o,this.onreceive=null,this.onclose=null}async connect(e,t){return Ht.isRequired(e,"url"),Ht.isRequired(t,"transferFormat"),Ht.isIn(t,kn,"transferFormat"),this._logger.log(Ot.Trace,"(SSE transport) Connecting."),this._url=e,this._accessToken&&(e+=(e.indexOf("?")<0?"?":"&")+`access_token=${encodeURIComponent(this._accessToken)}`),new Promise(((n,o)=>{let r,i=!1;if(t===kn.Text){if(Wt.isBrowser||Wt.isWebWorker)r=new this._options.EventSource(e,{withCredentials:this._options.withCredentials});else{const t=this._httpClient.getCookieString(e),n={};n.Cookie=t;const[o,i]=Vt();n[o]=i,r=new this._options.EventSource(e,{withCredentials:this._options.withCredentials,headers:{...n,...this._options.headers}})}try{r.onmessage=e=>{if(this.onreceive)try{this._logger.log(Ot.Trace,`(SSE transport) data received. ${jt(e.data,this._options.logMessageContent)}.`),this.onreceive(e.data)}catch(e){return void this._close(e)}},r.onerror=e=>{i?this._close():o(new Error("EventSource failed to connect. The connection could not be found on the server, either the connection ID is not present on the server, or a proxy is refusing/buffering the connection. If you have multiple servers check that sticky sessions are enabled."))},r.onopen=()=>{this._logger.log(Ot.Information,`SSE connected to ${this._url}`),this._eventSource=r,i=!0,n()}}catch(e){return void o(e)}}else o(new Error("The Server-Sent Events transport only supports the 'Text' transfer format"))}))}async send(e){return this._eventSource?qt(this._logger,"SSE",this._httpClient,this._url,e,this._options):Promise.reject(new Error("Cannot send until the transport is connected"))}stop(){return this._close(),Promise.resolve()}_close(e){this._eventSource&&(this._eventSource.close(),this._eventSource=void 0,this.onclose&&this.onclose(e))}}class Dn{constructor(e,t,n,o,r,i){this._logger=n,this._accessTokenFactory=t,this._logMessageContent=o,this._webSocketConstructor=r,this._httpClient=e,this.onreceive=null,this.onclose=null,this._headers=i}async connect(e,t){let n;return Ht.isRequired(e,"url"),Ht.isRequired(t,"transferFormat"),Ht.isIn(t,kn,"transferFormat"),this._logger.log(Ot.Trace,"(WebSockets transport) Connecting."),this._accessTokenFactory&&(n=await this._accessTokenFactory()),new Promise(((o,r)=>{let i;e=e.replace(/^http/,"ws");const s=this._httpClient.getCookieString(e);let a=!1;if(Wt.isReactNative){const t={},[o,r]=Vt();t[o]=r,n&&(t[vn.Authorization]=`Bearer ${n}`),s&&(t[vn.Cookie]=s),i=new this._webSocketConstructor(e,void 0,{headers:{...t,...this._headers}})}else n&&(e+=(e.indexOf("?")<0?"?":"&")+`access_token=${encodeURIComponent(n)}`);i||(i=new this._webSocketConstructor(e)),t===kn.Binary&&(i.binaryType="arraybuffer"),i.onopen=t=>{this._logger.log(Ot.Information,`WebSocket connected to ${e}.`),this._webSocket=i,a=!0,o()},i.onerror=e=>{let t=null;t="undefined"!=typeof ErrorEvent&&e instanceof ErrorEvent?e.error:"There was an error with the transport",this._logger.log(Ot.Information,`(WebSockets transport) ${t}.`)},i.onmessage=e=>{if(this._logger.log(Ot.Trace,`(WebSockets transport) data received. ${jt(e.data,this._logMessageContent)}.`),this.onreceive)try{this.onreceive(e.data)}catch(e){return void this._close(e)}},i.onclose=e=>{if(a)this._close(e);else{let t=null;t="undefined"!=typeof ErrorEvent&&e instanceof ErrorEvent?e.error:"WebSocket failed to connect. The connection could not be found on the server, either the endpoint may not be a SignalR endpoint, the connection ID is not present on the server, or there is a proxy blocking WebSockets. If you have multiple servers check that sticky sessions are enabled.",r(new Error(t))}}}))}send(e){return this._webSocket&&this._webSocket.readyState===this._webSocketConstructor.OPEN?(this._logger.log(Ot.Trace,`(WebSockets transport) sending data. ${jt(e,this._logMessageContent)}.`),this._webSocket.send(e),Promise.resolve()):Promise.reject("WebSocket is not in the OPEN state")}stop(){return this._webSocket&&this._close(void 0),Promise.resolve()}_close(e){this._webSocket&&(this._webSocket.onclose=()=>{},this._webSocket.onmessage=()=>{},this._webSocket.onerror=()=>{},this._webSocket.close(),this._webSocket=void 0),this._logger.log(Ot.Trace,"(WebSockets transport) socket closed."),this.onclose&&(!this._isCloseEvent(e)||!1!==e.wasClean&&1e3===e.code?e instanceof Error?this.onclose(e):this.onclose():this.onclose(new Error(`WebSocket closed with status code: ${e.code} (${e.reason||"no reason given"}).`)))}_isCloseEvent(e){return e&&"boolean"==typeof e.wasClean&&"number"==typeof e.code}}class xn{constructor(e,t={}){if(this._stopPromiseResolver=()=>{},this.features={},this._negotiateVersion=1,Ht.isRequired(e,"url"),this._logger=function(e){return void 0===e?new Kt(Ot.Information):null===e?Ft.instance:void 0!==e.log?e:new Kt(e)}(t.logger),this.baseUrl=this._resolveUrl(e),(t=t||{}).logMessageContent=void 0!==t.logMessageContent&&t.logMessageContent,"boolean"!=typeof t.withCredentials&&void 0!==t.withCredentials)throw new Error("withCredentials option was not a 'boolean' or 'undefined' value");t.withCredentials=void 0===t.withCredentials||t.withCredentials,t.timeout=void 0===t.timeout?1e5:t.timeout,"undefined"==typeof WebSocket||t.WebSocket||(t.WebSocket=WebSocket),"undefined"==typeof EventSource||t.EventSource||(t.EventSource=EventSource),this._httpClient=new bn(t.httpClient||new En(this._logger),t.accessTokenFactory),this._connectionState="Disconnected",this._connectionStarted=!1,this._options=t,this.onreceive=null,this.onclose=null}async start(e){if(e=e||kn.Binary,Ht.isIn(e,kn,"transferFormat"),this._logger.log(Ot.Debug,`Starting connection with transfer format '${kn[e]}'.`),"Disconnected"!==this._connectionState)return Promise.reject(new Error("Cannot start an HttpConnection that is not in the 'Disconnected' state."));if(this._connectionState="Connecting",this._startInternalPromise=this._startInternal(e),await this._startInternalPromise,"Disconnecting"===this._connectionState){const e="Failed to start the HttpConnection before stop() was called.";return this._logger.log(Ot.Error,e),await this._stopPromise,Promise.reject(new nn(e))}if("Connected"!==this._connectionState){const e="HttpConnection.startInternal completed gracefully but didn't enter the connection into the connected state!";return this._logger.log(Ot.Error,e),Promise.reject(new nn(e))}this._connectionStarted=!0}send(e){return"Connected"!==this._connectionState?Promise.reject(new Error("Cannot send data if the connection is not in the 'Connected' State.")):(this._sendQueue||(this._sendQueue=new Nn(this.transport)),this._sendQueue.send(e))}async stop(e){return"Disconnected"===this._connectionState?(this._logger.log(Ot.Debug,`Call to HttpConnection.stop(${e}) ignored because the connection is already in the disconnected state.`),Promise.resolve()):"Disconnecting"===this._connectionState?(this._logger.log(Ot.Debug,`Call to HttpConnection.stop(${e}) ignored because the connection is already in the disconnecting state.`),this._stopPromise):(this._connectionState="Disconnecting",this._stopPromise=new Promise((e=>{this._stopPromiseResolver=e})),await this._stopInternal(e),void await this._stopPromise)}async _stopInternal(e){this._stopError=e;try{await this._startInternalPromise}catch(e){}if(this.transport){try{await this.transport.stop()}catch(e){this._logger.log(Ot.Error,`HttpConnection.transport.stop() threw error '${e}'.`),this._stopConnection()}this.transport=void 0}else this._logger.log(Ot.Debug,"HttpConnection.transport is undefined in HttpConnection.stop() because start() failed.")}async _startInternal(e){let t=this.baseUrl;this._accessTokenFactory=this._options.accessTokenFactory,this._httpClient._accessTokenFactory=this._accessTokenFactory;try{if(this._options.skipNegotiation){if(this._options.transport!==In.WebSockets)throw new Error("Negotiation can only be skipped when using the WebSocket transport directly.");this.transport=this._constructTransport(In.WebSockets),await this._startTransport(t,e)}else{let n=null,o=0;do{if(n=await this._getNegotiationResponse(t),"Disconnecting"===this._connectionState||"Disconnected"===this._connectionState)throw new nn("The connection was stopped during negotiation.");if(n.error)throw new Error(n.error);if(n.ProtocolVersion)throw new Error("Detected a connection attempt to an ASP.NET SignalR Server. This client only supports connecting to an ASP.NET Core SignalR Server. See https://aka.ms/signalr-core-differences for details.");if(n.url&&(t=n.url),n.accessToken){const e=n.accessToken;this._accessTokenFactory=()=>e,this._httpClient._accessToken=e,this._httpClient._accessTokenFactory=void 0}o++}while(n.url&&o<100);if(100===o&&n.url)throw new Error("Negotiate redirection limit exceeded.");await this._createTransport(t,this._options.transport,n,e)}this.transport instanceof Rn&&(this.features.inherentKeepAlive=!0),"Connecting"===this._connectionState&&(this._logger.log(Ot.Debug,"The HttpConnection connected successfully."),this._connectionState="Connected")}catch(e){return this._logger.log(Ot.Error,"Failed to start the connection: "+e),this._connectionState="Disconnected",this.transport=void 0,this._stopPromiseResolver(),Promise.reject(e)}}async _getNegotiationResponse(e){const t={},[n,o]=Vt();t[n]=o;const r=this._resolveNegotiateUrl(e);this._logger.log(Ot.Debug,`Sending negotiation request: ${r}.`);try{const e=await this._httpClient.post(r,{content:"",headers:{...t,...this._options.headers},timeout:this._options.timeout,withCredentials:this._options.withCredentials});if(200!==e.statusCode)return Promise.reject(new Error(`Unexpected status code returned from negotiate '${e.statusCode}'`));const n=JSON.parse(e.content);return(!n.negotiateVersion||n.negotiateVersion<1)&&(n.connectionToken=n.connectionId),n.useStatefulReconnect&&!0!==this._options._useStatefulReconnect?Promise.reject(new an("Client didn't negotiate Stateful Reconnect but the server did.")):n}catch(e){let t="Failed to complete negotiation with the server: "+e;return e instanceof en&&404===e.statusCode&&(t+=" Either this is not a SignalR endpoint or there is a proxy blocking the connection."),this._logger.log(Ot.Error,t),Promise.reject(new an(t))}}_createConnectUrl(e,t){return t?e+(-1===e.indexOf("?")?"?":"&")+`id=${t}`:e}async _createTransport(e,t,n,o){let r=this._createConnectUrl(e,n.connectionToken);if(this._isITransport(t))return this._logger.log(Ot.Debug,"Connection was provided an instance of ITransport, using that directly."),this.transport=t,await this._startTransport(r,o),void(this.connectionId=n.connectionId);const i=[],s=n.availableTransports||[];let a=n;for(const n of s){const s=this._resolveTransportOrError(n,t,o,!0===(null==a?void 0:a.useStatefulReconnect));if(s instanceof Error)i.push(`${n.transport} failed:`),i.push(s);else if(this._isITransport(s)){if(this.transport=s,!a){try{a=await this._getNegotiationResponse(e)}catch(e){return Promise.reject(e)}r=this._createConnectUrl(e,a.connectionToken)}try{return await this._startTransport(r,o),void(this.connectionId=a.connectionId)}catch(e){if(this._logger.log(Ot.Error,`Failed to start the transport '${n.transport}': ${e}`),a=void 0,i.push(new sn(`${n.transport} failed: ${e}`,In[n.transport])),"Connecting"!==this._connectionState){const e="Failed to select transport before stop() was called.";return this._logger.log(Ot.Debug,e),Promise.reject(new nn(e))}}}}return i.length>0?Promise.reject(new cn(`Unable to connect to the server with any of the available transports. ${i.join(" ")}`,i)):Promise.reject(new Error("None of the transports supported by the client are supported by the server."))}_constructTransport(e){switch(e){case In.WebSockets:if(!this._options.WebSocket)throw new Error("'WebSocket' is not supported in your environment.");return new Dn(this._httpClient,this._accessTokenFactory,this._logger,this._options.logMessageContent,this._options.WebSocket,this._options.headers||{});case In.ServerSentEvents:if(!this._options.EventSource)throw new Error("'EventSource' is not supported in your environment.");return new An(this._httpClient,this._httpClient._accessToken,this._logger,this._options);case In.LongPolling:return new Rn(this._httpClient,this._logger,this._options);default:throw new Error(`Unknown transport: ${e}.`)}}_startTransport(e,t){return this.transport.onreceive=this.onreceive,this.features.reconnect?this.transport.onclose=async n=>{let o=!1;if(this.features.reconnect){try{this.features.disconnected(),await this.transport.connect(e,t),await this.features.resend()}catch{o=!0}o&&this._stopConnection(n)}else this._stopConnection(n)}:this.transport.onclose=e=>this._stopConnection(e),this.transport.connect(e,t)}_resolveTransportOrError(e,t,n,o){const r=In[e.transport];if(null==r)return this._logger.log(Ot.Debug,`Skipping transport '${e.transport}' because it is not supported by this client.`),new Error(`Skipping transport '${e.transport}' because it is not supported by this client.`);if(!function(e,t){return!e||0!=(t&e)}(t,r))return this._logger.log(Ot.Debug,`Skipping transport '${In[r]}' because it was disabled by the client.`),new rn(`'${In[r]}' is disabled by the client.`,r);if(!(e.transferFormats.map((e=>kn[e])).indexOf(n)>=0))return this._logger.log(Ot.Debug,`Skipping transport '${In[r]}' because it does not support the requested transfer format '${kn[n]}'.`),new Error(`'${In[r]}' does not support ${kn[n]}.`);if(r===In.WebSockets&&!this._options.WebSocket||r===In.ServerSentEvents&&!this._options.EventSource)return this._logger.log(Ot.Debug,`Skipping transport '${In[r]}' because it is not supported in your environment.'`),new on(`'${In[r]}' is not supported in your environment.`,r);this._logger.log(Ot.Debug,`Selecting transport '${In[r]}'.`);try{return this.features.reconnect=r===In.WebSockets?o:void 0,this._constructTransport(r)}catch(e){return e}}_isITransport(e){return e&&"object"==typeof e&&"connect"in e}_stopConnection(e){if(this._logger.log(Ot.Debug,`HttpConnection.stopConnection(${e}) called while in state ${this._connectionState}.`),this.transport=void 0,e=this._stopError||e,this._stopError=void 0,"Disconnected"!==this._connectionState){if("Connecting"===this._connectionState)throw this._logger.log(Ot.Warning,`Call to HttpConnection.stopConnection(${e}) was ignored because the connection is still in the connecting state.`),new Error(`HttpConnection.stopConnection(${e}) was called while the connection is still in the connecting state.`);if("Disconnecting"===this._connectionState&&this._stopPromiseResolver(),e?this._logger.log(Ot.Error,`Connection disconnected with error '${e}'.`):this._logger.log(Ot.Information,"Connection disconnected."),this._sendQueue&&(this._sendQueue.stop().catch((e=>{this._logger.log(Ot.Error,`TransportSendQueue.stop() threw error '${e}'.`)})),this._sendQueue=void 0),this.connectionId=void 0,this._connectionState="Disconnected",this._connectionStarted){this._connectionStarted=!1;try{this.onclose&&this.onclose(e)}catch(t){this._logger.log(Ot.Error,`HttpConnection.onclose(${e}) threw error '${t}'.`)}}}else this._logger.log(Ot.Debug,`Call to HttpConnection.stopConnection(${e}) was ignored because the connection is already in the disconnected state.`)}_resolveUrl(e){if(0===e.lastIndexOf("https://",0)||0===e.lastIndexOf("http://",0))return e;if(!Wt.isBrowser)throw new Error(`Cannot resolve '${e}'.`);const t=window.document.createElement("a");return t.href=e,this._logger.log(Ot.Information,`Normalizing '${e}' to '${t.href}'.`),t.href}_resolveNegotiateUrl(e){const t=new URL(e);t.pathname.endsWith("/")?t.pathname+="negotiate":t.pathname+="/negotiate";const n=new URLSearchParams(t.searchParams);return n.has("negotiateVersion")||n.append("negotiateVersion",this._negotiateVersion.toString()),n.has("useStatefulReconnect")?"true"===n.get("useStatefulReconnect")&&(this._options._useStatefulReconnect=!0):!0===this._options._useStatefulReconnect&&n.append("useStatefulReconnect","true"),t.search=n.toString(),t.toString()}}class Nn{constructor(e){this._transport=e,this._buffer=[],this._executing=!0,this._sendBufferedData=new Pn,this._transportResult=new Pn,this._sendLoopPromise=this._sendLoop()}send(e){return this._bufferData(e),this._transportResult||(this._transportResult=new Pn),this._transportResult.promise}stop(){return this._executing=!1,this._sendBufferedData.resolve(),this._sendLoopPromise}_bufferData(e){if(this._buffer.length&&typeof this._buffer[0]!=typeof e)throw new Error(`Expected data to be of type ${typeof this._buffer} but was of type ${typeof e}`);this._buffer.push(e),this._sendBufferedData.resolve()}async _sendLoop(){for(;;){if(await this._sendBufferedData.promise,!this._executing){this._transportResult&&this._transportResult.reject("Connection stopped.");break}this._sendBufferedData=new Pn;const e=this._transportResult;this._transportResult=void 0;const t="string"==typeof this._buffer[0]?this._buffer.join(""):Nn._concatBuffers(this._buffer);this._buffer.length=0;try{await this._transport.send(t),e.resolve()}catch(t){e.reject(t)}}}static _concatBuffers(e){const t=e.map((e=>e.byteLength)).reduce(((e,t)=>e+t)),n=new Uint8Array(t);let o=0;for(const t of e)n.set(new Uint8Array(t),o),o+=t.byteLength;return n.buffer}}class Pn{constructor(){this.promise=new Promise(((e,t)=>[this._resolver,this._rejecter]=[e,t]))}resolve(){this._resolver()}reject(e){this._rejecter(e)}}class Mn{constructor(){this.name="json",this.version=2,this.transferFormat=kn.Text}parseMessages(e,t){if("string"!=typeof e)throw new Error("Invalid input for JSON hub protocol. Expected a string.");if(!e)return[];null===t&&(t=Ft.instance);const n=Bt.parse(e),o=[];for(const e of n){const n=JSON.parse(e);if("number"!=typeof n.type)throw new Error("Invalid payload.");switch(n.type){case ln.Invocation:this._isInvocationMessage(n);break;case ln.StreamItem:this._isStreamItemMessage(n);break;case ln.Completion:this._isCompletionMessage(n);break;case ln.Ping:case ln.Close:break;case ln.Ack:this._isAckMessage(n);break;case ln.Sequence:this._isSequenceMessage(n);break;default:t.log(Ot.Information,"Unknown message type '"+n.type+"' ignored.");continue}o.push(n)}return o}writeMessage(e){return Bt.write(JSON.stringify(e))}_isInvocationMessage(e){this._assertNotEmptyString(e.target,"Invalid payload for Invocation message."),void 0!==e.invocationId&&this._assertNotEmptyString(e.invocationId,"Invalid payload for Invocation message.")}_isStreamItemMessage(e){if(this._assertNotEmptyString(e.invocationId,"Invalid payload for StreamItem message."),void 0===e.item)throw new Error("Invalid payload for StreamItem message.")}_isCompletionMessage(e){if(e.result&&e.error)throw new Error("Invalid payload for Completion message.");!e.result&&e.error&&this._assertNotEmptyString(e.error,"Invalid payload for Completion message."),this._assertNotEmptyString(e.invocationId,"Invalid payload for Completion message.")}_isAckMessage(e){if("number"!=typeof e.sequenceId)throw new Error("Invalid SequenceId for Ack message.")}_isSequenceMessage(e){if("number"!=typeof e.sequenceId)throw new Error("Invalid SequenceId for Sequence message.")}_assertNotEmptyString(e,t){if("string"!=typeof e||""===e)throw new Error(t)}}const Un={trace:Ot.Trace,debug:Ot.Debug,info:Ot.Information,information:Ot.Information,warn:Ot.Warning,warning:Ot.Warning,error:Ot.Error,critical:Ot.Critical,none:Ot.None};class Ln{configureLogging(e){if(Ht.isRequired(e,"logging"),function(e){return void 0!==e.log}(e))this.logger=e;else if("string"==typeof e){const t=function(e){const t=Un[e.toLowerCase()];if(void 0!==t)return t;throw new Error(`Unknown log level: ${e}`)}(e);this.logger=new Kt(t)}else this.logger=new Kt(e);return this}withUrl(e,t){return Ht.isRequired(e,"url"),Ht.isNotEmpty(e,"url"),this.url=e,this.httpConnectionOptions="object"==typeof t?{...this.httpConnectionOptions,...t}:{...this.httpConnectionOptions,transport:t},this}withHubProtocol(e){return Ht.isRequired(e,"protocol"),this.protocol=e,this}withAutomaticReconnect(e){if(this.reconnectPolicy)throw new Error("A reconnectPolicy has already been set.");return e?Array.isArray(e)?this.reconnectPolicy=new mn(e):this.reconnectPolicy=e:this.reconnectPolicy=new mn,this}withServerTimeout(e){return Ht.isRequired(e,"milliseconds"),this._serverTimeoutInMilliseconds=e,this}withKeepAliveInterval(e){return Ht.isRequired(e,"milliseconds"),this._keepAliveIntervalInMilliseconds=e,this}withStatefulReconnect(e){return void 0===this.httpConnectionOptions&&(this.httpConnectionOptions={}),this.httpConnectionOptions._useStatefulReconnect=!0,this._statefulReconnectBufferSize=null==e?void 0:e.bufferSize,this}build(){const e=this.httpConnectionOptions||{};if(void 0===e.logger&&(e.logger=this.logger),!this.url)throw new Error("The 'HubConnectionBuilder.withUrl' method must be called before building the connection.");const t=new xn(this.url,e);return fn.create(t,this.logger||Ft.instance,this.protocol||new Mn,this.reconnectPolicy,this._serverTimeoutInMilliseconds,this._keepAliveIntervalInMilliseconds,this._statefulReconnectBufferSize)}}var Bn;!function(e){e[e.Default=0]="Default",e[e.Server=1]="Server",e[e.WebAssembly=2]="WebAssembly",e[e.WebView=3]="WebView"}(Bn||(Bn={}));var On,Fn,$n,Hn=4294967295;function Wn(e,t,n){var o=Math.floor(n/4294967296),r=n;e.setUint32(t,o),e.setUint32(t+4,r)}function jn(e,t){return 4294967296*e.getInt32(t)+e.getUint32(t+4)}var zn=("undefined"==typeof process||"never"!==(null===(On=null===process||void 0===process?void 0:process.env)||void 0===On?void 0:On.TEXT_ENCODING))&&"undefined"!=typeof TextEncoder&&"undefined"!=typeof TextDecoder;function qn(e){for(var t=e.length,n=0,o=0;o=55296&&r<=56319&&o65535&&(h-=65536,i.push(h>>>10&1023|55296),h=56320|1023&h),i.push(h)}else i.push(a);i.length>=4096&&(s+=String.fromCharCode.apply(String,i),i.length=0)}return i.length>0&&(s+=String.fromCharCode.apply(String,i)),s}var Gn,Yn=zn?new TextDecoder:null,Qn=zn?"undefined"!=typeof process&&"force"!==(null===($n=null===process||void 0===process?void 0:process.env)||void 0===$n?void 0:$n.TEXT_DECODER)?200:0:Hn,Zn=function(e,t){this.type=e,this.data=t},eo=(Gn=function(e,t){return Gn=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},Gn(e,t)},function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function n(){this.constructor=e}Gn(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}),to=function(e){function t(n){var o=e.call(this,n)||this,r=Object.create(t.prototype);return Object.setPrototypeOf(o,r),Object.defineProperty(o,"name",{configurable:!0,enumerable:!1,value:t.name}),o}return eo(t,e),t}(Error),no={type:-1,encode:function(e){var t,n,o,r;return e instanceof Date?function(e){var t,n=e.sec,o=e.nsec;if(n>=0&&o>=0&&n<=17179869183){if(0===o&&n<=4294967295){var r=new Uint8Array(4);return(t=new DataView(r.buffer)).setUint32(0,n),r}var i=n/4294967296,s=4294967295&n;return r=new Uint8Array(8),(t=new DataView(r.buffer)).setUint32(0,o<<2|3&i),t.setUint32(4,s),r}return r=new Uint8Array(12),(t=new DataView(r.buffer)).setUint32(0,o),Wn(t,4,n),r}((o=1e6*((t=e.getTime())-1e3*(n=Math.floor(t/1e3))),{sec:n+(r=Math.floor(o/1e9)),nsec:o-1e9*r})):null},decode:function(e){var t=function(e){var t=new DataView(e.buffer,e.byteOffset,e.byteLength);switch(e.byteLength){case 4:return{sec:t.getUint32(0),nsec:0};case 8:var n=t.getUint32(0);return{sec:4294967296*(3&n)+t.getUint32(4),nsec:n>>>2};case 12:return{sec:jn(t,4),nsec:t.getUint32(0)};default:throw new to("Unrecognized data size for timestamp (expected 4, 8, or 12): ".concat(e.length))}}(e);return new Date(1e3*t.sec+t.nsec/1e6)}},oo=function(){function e(){this.builtInEncoders=[],this.builtInDecoders=[],this.encoders=[],this.decoders=[],this.register(no)}return e.prototype.register=function(e){var t=e.type,n=e.encode,o=e.decode;if(t>=0)this.encoders[t]=n,this.decoders[t]=o;else{var r=1+t;this.builtInEncoders[r]=n,this.builtInDecoders[r]=o}},e.prototype.tryToEncode=function(e,t){for(var n=0;nthis.maxDepth)throw new Error("Too deep objects in depth ".concat(t));null==e?this.encodeNil():"boolean"==typeof e?this.encodeBoolean(e):"number"==typeof e?this.encodeNumber(e):"string"==typeof e?this.encodeString(e):this.encodeObject(e,t)},e.prototype.ensureBufferSizeToWrite=function(e){var t=this.pos+e;this.view.byteLength=0?e<128?this.writeU8(e):e<256?(this.writeU8(204),this.writeU8(e)):e<65536?(this.writeU8(205),this.writeU16(e)):e<4294967296?(this.writeU8(206),this.writeU32(e)):(this.writeU8(207),this.writeU64(e)):e>=-32?this.writeU8(224|e+32):e>=-128?(this.writeU8(208),this.writeI8(e)):e>=-32768?(this.writeU8(209),this.writeI16(e)):e>=-2147483648?(this.writeU8(210),this.writeI32(e)):(this.writeU8(211),this.writeI64(e)):this.forceFloat32?(this.writeU8(202),this.writeF32(e)):(this.writeU8(203),this.writeF64(e))},e.prototype.writeStringHeader=function(e){if(e<32)this.writeU8(160+e);else if(e<256)this.writeU8(217),this.writeU8(e);else if(e<65536)this.writeU8(218),this.writeU16(e);else{if(!(e<4294967296))throw new Error("Too long string: ".concat(e," bytes in UTF-8"));this.writeU8(219),this.writeU32(e)}},e.prototype.encodeString=function(e){if(e.length>Kn){var t=qn(e);this.ensureBufferSizeToWrite(5+t),this.writeStringHeader(t),Vn(e,this.bytes,this.pos),this.pos+=t}else t=qn(e),this.ensureBufferSizeToWrite(5+t),this.writeStringHeader(t),function(e,t,n){for(var o=e.length,r=n,i=0;i>6&31|192;else{if(s>=55296&&s<=56319&&i>12&15|224,t[r++]=s>>6&63|128):(t[r++]=s>>18&7|240,t[r++]=s>>12&63|128,t[r++]=s>>6&63|128)}t[r++]=63&s|128}else t[r++]=s}}(e,this.bytes,this.pos),this.pos+=t},e.prototype.encodeObject=function(e,t){var n=this.extensionCodec.tryToEncode(e,this.context);if(null!=n)this.encodeExtension(n);else if(Array.isArray(e))this.encodeArray(e,t);else if(ArrayBuffer.isView(e))this.encodeBinary(e);else{if("object"!=typeof e)throw new Error("Unrecognized object: ".concat(Object.prototype.toString.apply(e)));this.encodeMap(e,t)}},e.prototype.encodeBinary=function(e){var t=e.byteLength;if(t<256)this.writeU8(196),this.writeU8(t);else if(t<65536)this.writeU8(197),this.writeU16(t);else{if(!(t<4294967296))throw new Error("Too large binary: ".concat(t));this.writeU8(198),this.writeU32(t)}var n=ro(e);this.writeU8a(n)},e.prototype.encodeArray=function(e,t){var n=e.length;if(n<16)this.writeU8(144+n);else if(n<65536)this.writeU8(220),this.writeU16(n);else{if(!(n<4294967296))throw new Error("Too large array: ".concat(n));this.writeU8(221),this.writeU32(n)}for(var o=0,r=e;o0&&e<=this.maxKeyLength},e.prototype.find=function(e,t,n){e:for(var o=0,r=this.caches[n-1];o=this.maxLengthPerKey?n[Math.random()*n.length|0]=o:n.push(o)},e.prototype.decode=function(e,t,n){var o=this.find(e,t,n);if(null!=o)return this.hit++,o;this.miss++;var r=Xn(e,t,n),i=Uint8Array.prototype.slice.call(e,t,t+n);return this.store(i,r),r},e}(),co=function(e,t){var n,o,r,i,s={label:0,sent:function(){if(1&r[0])throw r[1];return r[1]},trys:[],ops:[]};return i={next:a(0),throw:a(1),return:a(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function a(i){return function(a){return function(i){if(n)throw new TypeError("Generator is already executing.");for(;s;)try{if(n=1,o&&(r=2&i[0]?o.return:i[0]?o.throw||((r=o.return)&&r.call(o),0):o.next)&&!(r=r.call(o,i[1])).done)return r;switch(o=0,r&&(i=[2&i[0],r.value]),i[0]){case 0:case 1:r=i;break;case 4:return s.label++,{value:i[1],done:!1};case 5:s.label++,o=i[1],i=[0];continue;case 7:i=s.ops.pop(),s.trys.pop();continue;default:if(!((r=(r=s.trys).length>0&&r[r.length-1])||6!==i[0]&&2!==i[0])){s=0;continue}if(3===i[0]&&(!r||i[1]>r[0]&&i[1]=e},e.prototype.createExtraByteError=function(e){var t=this.view,n=this.pos;return new RangeError("Extra ".concat(t.byteLength-n," of ").concat(t.byteLength," byte(s) found at buffer[").concat(e,"]"))},e.prototype.decode=function(e){this.reinitializeState(),this.setBuffer(e);var t=this.doDecodeSync();if(this.hasRemaining(1))throw this.createExtraByteError(this.pos);return t},e.prototype.decodeMulti=function(e){return co(this,(function(t){switch(t.label){case 0:this.reinitializeState(),this.setBuffer(e),t.label=1;case 1:return this.hasRemaining(1)?[4,this.doDecodeSync()]:[3,3];case 2:return t.sent(),[3,1];case 3:return[2]}}))},e.prototype.decodeAsync=function(e){var t,n,o,r,i,s,a;return i=this,void 0,a=function(){var i,s,a,c,l,h,d,u;return co(this,(function(p){switch(p.label){case 0:i=!1,p.label=1;case 1:p.trys.push([1,6,7,12]),t=lo(e),p.label=2;case 2:return[4,t.next()];case 3:if((n=p.sent()).done)return[3,5];if(a=n.value,i)throw this.createExtraByteError(this.totalPos);this.appendBuffer(a);try{s=this.doDecodeSync(),i=!0}catch(e){if(!(e instanceof fo))throw e}this.totalPos+=this.pos,p.label=4;case 4:return[3,2];case 5:return[3,12];case 6:return c=p.sent(),o={error:c},[3,12];case 7:return p.trys.push([7,,10,11]),n&&!n.done&&(r=t.return)?[4,r.call(t)]:[3,9];case 8:p.sent(),p.label=9;case 9:return[3,11];case 10:if(o)throw o.error;return[7];case 11:return[7];case 12:if(i){if(this.hasRemaining(1))throw this.createExtraByteError(this.totalPos);return[2,s]}throw h=(l=this).headByte,d=l.pos,u=l.totalPos,new RangeError("Insufficient data in parsing ".concat(so(h)," at ").concat(u," (").concat(d," in the current buffer)"))}}))},new((s=void 0)||(s=Promise))((function(e,t){function n(e){try{r(a.next(e))}catch(e){t(e)}}function o(e){try{r(a.throw(e))}catch(e){t(e)}}function r(t){var r;t.done?e(t.value):(r=t.value,r instanceof s?r:new s((function(e){e(r)}))).then(n,o)}r((a=a.apply(i,[])).next())}))},e.prototype.decodeArrayStream=function(e){return this.decodeMultiAsync(e,!0)},e.prototype.decodeStream=function(e){return this.decodeMultiAsync(e,!1)},e.prototype.decodeMultiAsync=function(e,t){return function(n,o,r){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var i,s=function(){var n,o,r,i,s,a,c,l,h;return co(this,(function(d){switch(d.label){case 0:n=t,o=-1,d.label=1;case 1:d.trys.push([1,13,14,19]),r=lo(e),d.label=2;case 2:return[4,ho(r.next())];case 3:if((i=d.sent()).done)return[3,12];if(s=i.value,t&&0===o)throw this.createExtraByteError(this.totalPos);this.appendBuffer(s),n&&(o=this.readArraySize(),n=!1,this.complete()),d.label=4;case 4:d.trys.push([4,9,,10]),d.label=5;case 5:return[4,ho(this.doDecodeSync())];case 6:return[4,d.sent()];case 7:return d.sent(),0==--o?[3,8]:[3,5];case 8:return[3,10];case 9:if(!((a=d.sent())instanceof fo))throw a;return[3,10];case 10:this.totalPos+=this.pos,d.label=11;case 11:return[3,2];case 12:return[3,19];case 13:return c=d.sent(),l={error:c},[3,19];case 14:return d.trys.push([14,,17,18]),i&&!i.done&&(h=r.return)?[4,ho(h.call(r))]:[3,16];case 15:d.sent(),d.label=16;case 16:return[3,18];case 17:if(l)throw l.error;return[7];case 18:return[7];case 19:return[2]}}))}.apply(n,o||[]),a=[];return i={},c("next"),c("throw"),c("return"),i[Symbol.asyncIterator]=function(){return this},i;function c(e){s[e]&&(i[e]=function(t){return new Promise((function(n,o){a.push([e,t,n,o])>1||l(e,t)}))})}function l(e,t){try{(n=s[e](t)).value instanceof ho?Promise.resolve(n.value.v).then(h,d):u(a[0][2],n)}catch(e){u(a[0][3],e)}var n}function h(e){l("next",e)}function d(e){l("throw",e)}function u(e,t){e(t),a.shift(),a.length&&l(a[0][0],a[0][1])}}(this,arguments)},e.prototype.doDecodeSync=function(){e:for(;;){var e=this.readHeadByte(),t=void 0;if(e>=224)t=e-256;else if(e<192)if(e<128)t=e;else if(e<144){if(0!=(o=e-128)){this.pushMapState(o),this.complete();continue e}t={}}else if(e<160){if(0!=(o=e-144)){this.pushArrayState(o),this.complete();continue e}t=[]}else{var n=e-160;t=this.decodeUtf8String(n,0)}else if(192===e)t=null;else if(194===e)t=!1;else if(195===e)t=!0;else if(202===e)t=this.readF32();else if(203===e)t=this.readF64();else if(204===e)t=this.readU8();else if(205===e)t=this.readU16();else if(206===e)t=this.readU32();else if(207===e)t=this.readU64();else if(208===e)t=this.readI8();else if(209===e)t=this.readI16();else if(210===e)t=this.readI32();else if(211===e)t=this.readI64();else if(217===e)n=this.lookU8(),t=this.decodeUtf8String(n,1);else if(218===e)n=this.lookU16(),t=this.decodeUtf8String(n,2);else if(219===e)n=this.lookU32(),t=this.decodeUtf8String(n,4);else if(220===e){if(0!==(o=this.readU16())){this.pushArrayState(o),this.complete();continue e}t=[]}else if(221===e){if(0!==(o=this.readU32())){this.pushArrayState(o),this.complete();continue e}t=[]}else if(222===e){if(0!==(o=this.readU16())){this.pushMapState(o),this.complete();continue e}t={}}else if(223===e){if(0!==(o=this.readU32())){this.pushMapState(o),this.complete();continue e}t={}}else if(196===e){var o=this.lookU8();t=this.decodeBinary(o,1)}else if(197===e)o=this.lookU16(),t=this.decodeBinary(o,2);else if(198===e)o=this.lookU32(),t=this.decodeBinary(o,4);else if(212===e)t=this.decodeExtension(1,0);else if(213===e)t=this.decodeExtension(2,0);else if(214===e)t=this.decodeExtension(4,0);else if(215===e)t=this.decodeExtension(8,0);else if(216===e)t=this.decodeExtension(16,0);else if(199===e)o=this.lookU8(),t=this.decodeExtension(o,1);else if(200===e)o=this.lookU16(),t=this.decodeExtension(o,2);else{if(201!==e)throw new to("Unrecognized type byte: ".concat(so(e)));o=this.lookU32(),t=this.decodeExtension(o,4)}this.complete();for(var r=this.stack;r.length>0;){var i=r[r.length-1];if(0===i.type){if(i.array[i.position]=t,i.position++,i.position!==i.size)continue e;r.pop(),t=i.array}else{if(1===i.type){if("string"!=(s=typeof t)&&"number"!==s)throw new to("The type of key must be string or number but "+typeof t);if("__proto__"===t)throw new to("The key __proto__ is not allowed");i.key=t,i.type=2;continue e}if(i.map[i.key]=t,i.readCount++,i.readCount!==i.size){i.key=null,i.type=1;continue e}r.pop(),t=i.map}}return t}var s},e.prototype.readHeadByte=function(){return-1===this.headByte&&(this.headByte=this.readU8()),this.headByte},e.prototype.complete=function(){this.headByte=-1},e.prototype.readArraySize=function(){var e=this.readHeadByte();switch(e){case 220:return this.readU16();case 221:return this.readU32();default:if(e<160)return e-144;throw new to("Unrecognized array type byte: ".concat(so(e)))}},e.prototype.pushMapState=function(e){if(e>this.maxMapLength)throw new to("Max length exceeded: map length (".concat(e,") > maxMapLengthLength (").concat(this.maxMapLength,")"));this.stack.push({type:1,size:e,key:null,readCount:0,map:{}})},e.prototype.pushArrayState=function(e){if(e>this.maxArrayLength)throw new to("Max length exceeded: array length (".concat(e,") > maxArrayLength (").concat(this.maxArrayLength,")"));this.stack.push({type:0,size:e,array:new Array(e),position:0})},e.prototype.decodeUtf8String=function(e,t){var n;if(e>this.maxStrLength)throw new to("Max length exceeded: UTF-8 byte length (".concat(e,") > maxStrLength (").concat(this.maxStrLength,")"));if(this.bytes.byteLengthQn?function(e,t,n){var o=e.subarray(t,t+n);return Yn.decode(o)}(this.bytes,r,e):Xn(this.bytes,r,e),this.pos+=t+e,o},e.prototype.stateIsMapKey=function(){return this.stack.length>0&&1===this.stack[this.stack.length-1].type},e.prototype.decodeBinary=function(e,t){if(e>this.maxBinLength)throw new to("Max length exceeded: bin length (".concat(e,") > maxBinLength (").concat(this.maxBinLength,")"));if(!this.hasRemaining(e+t))throw go;var n=this.pos+t,o=this.bytes.subarray(n,n+e);return this.pos+=t+e,o},e.prototype.decodeExtension=function(e,t){if(e>this.maxExtLength)throw new to("Max length exceeded: ext length (".concat(e,") > maxExtLength (").concat(this.maxExtLength,")"));var n=this.view.getInt8(this.pos+t),o=this.decodeBinary(e,t+1);return this.extensionCodec.decode(o,n,this.context)},e.prototype.lookU8=function(){return this.view.getUint8(this.pos)},e.prototype.lookU16=function(){return this.view.getUint16(this.pos)},e.prototype.lookU32=function(){return this.view.getUint32(this.pos)},e.prototype.readU8=function(){var e=this.view.getUint8(this.pos);return this.pos++,e},e.prototype.readI8=function(){var e=this.view.getInt8(this.pos);return this.pos++,e},e.prototype.readU16=function(){var e=this.view.getUint16(this.pos);return this.pos+=2,e},e.prototype.readI16=function(){var e=this.view.getInt16(this.pos);return this.pos+=2,e},e.prototype.readU32=function(){var e=this.view.getUint32(this.pos);return this.pos+=4,e},e.prototype.readI32=function(){var e=this.view.getInt32(this.pos);return this.pos+=4,e},e.prototype.readU64=function(){var e,t,n=(e=this.view,t=this.pos,4294967296*e.getUint32(t)+e.getUint32(t+4));return this.pos+=8,n},e.prototype.readI64=function(){var e=jn(this.view,this.pos);return this.pos+=8,e},e.prototype.readF32=function(){var e=this.view.getFloat32(this.pos);return this.pos+=4,e},e.prototype.readF64=function(){var e=this.view.getFloat64(this.pos);return this.pos+=8,e},e}();class yo{static write(e){let t=e.byteLength||e.length;const n=[];do{let e=127&t;t>>=7,t>0&&(e|=128),n.push(e)}while(t>0);t=e.byteLength||e.length;const o=new Uint8Array(n.length+t);return o.set(n,0),o.set(e,n.length),o.buffer}static parse(e){const t=[],n=new Uint8Array(e),o=[0,7,14,21,28];for(let r=0;r7)throw new Error("Messages bigger than 2GB are not supported.");if(!(n.byteLength>=r+s+a))throw new Error("Incomplete message.");t.push(n.slice?n.slice(r+s,r+s+a):n.subarray(r+s,r+s+a)),r=r+s+a}return t}}const wo=new Uint8Array([145,ln.Ping]);class bo{constructor(e){this.name="messagepack",this.version=2,this.transferFormat=kn.Binary,this._errorResult=1,this._voidResult=2,this._nonVoidResult=3,e=e||{},this._encoder=new io(e.extensionCodec,e.context,e.maxDepth,e.initialBufferSize,e.sortKeys,e.forceFloat32,e.ignoreUndefined,e.forceIntegerToFloat),this._decoder=new vo(e.extensionCodec,e.context,e.maxStrLength,e.maxBinLength,e.maxArrayLength,e.maxMapLength,e.maxExtLength)}parseMessages(e,t){if(!(n=e)||"undefined"==typeof ArrayBuffer||!(n instanceof ArrayBuffer||n.constructor&&"ArrayBuffer"===n.constructor.name))throw new Error("Invalid input for MessagePack hub protocol. Expected an ArrayBuffer.");var n;null===t&&(t=Ft.instance);const o=yo.parse(e),r=[];for(const e of o){const n=this._parseMessage(e,t);n&&r.push(n)}return r}writeMessage(e){switch(e.type){case ln.Invocation:return this._writeInvocation(e);case ln.StreamInvocation:return this._writeStreamInvocation(e);case ln.StreamItem:return this._writeStreamItem(e);case ln.Completion:return this._writeCompletion(e);case ln.Ping:return yo.write(wo);case ln.CancelInvocation:return this._writeCancelInvocation(e);case ln.Close:return this._writeClose();case ln.Ack:return this._writeAck(e);case ln.Sequence:return this._writeSequence(e);default:throw new Error("Invalid message type.")}}_parseMessage(e,t){if(0===e.length)throw new Error("Invalid payload.");const n=this._decoder.decode(e);if(0===n.length||!(n instanceof Array))throw new Error("Invalid payload.");const o=n[0];switch(o){case ln.Invocation:return this._createInvocationMessage(this._readHeaders(n),n);case ln.StreamItem:return this._createStreamItemMessage(this._readHeaders(n),n);case ln.Completion:return this._createCompletionMessage(this._readHeaders(n),n);case ln.Ping:return this._createPingMessage(n);case ln.Close:return this._createCloseMessage(n);case ln.Ack:return this._createAckMessage(n);case ln.Sequence:return this._createSequenceMessage(n);default:return t.log(Ot.Information,"Unknown message type '"+o+"' ignored."),null}}_createCloseMessage(e){if(e.length<2)throw new Error("Invalid payload for Close message.");return{allowReconnect:e.length>=3?e[2]:void 0,error:e[1],type:ln.Close}}_createPingMessage(e){if(e.length<1)throw new Error("Invalid payload for Ping message.");return{type:ln.Ping}}_createInvocationMessage(e,t){if(t.length<5)throw new Error("Invalid payload for Invocation message.");const n=t[2];return n?{arguments:t[4],headers:e,invocationId:n,streamIds:[],target:t[3],type:ln.Invocation}:{arguments:t[4],headers:e,streamIds:[],target:t[3],type:ln.Invocation}}_createStreamItemMessage(e,t){if(t.length<4)throw new Error("Invalid payload for StreamItem message.");return{headers:e,invocationId:t[2],item:t[3],type:ln.StreamItem}}_createCompletionMessage(e,t){if(t.length<4)throw new Error("Invalid payload for Completion message.");const n=t[3];if(n!==this._voidResult&&t.length<5)throw new Error("Invalid payload for Completion message.");let o,r;switch(n){case this._errorResult:o=t[4];break;case this._nonVoidResult:r=t[4]}return{error:o,headers:e,invocationId:t[2],result:r,type:ln.Completion}}_createAckMessage(e){if(e.length<1)throw new Error("Invalid payload for Ack message.");return{sequenceId:e[1],type:ln.Ack}}_createSequenceMessage(e){if(e.length<1)throw new Error("Invalid payload for Sequence message.");return{sequenceId:e[1],type:ln.Sequence}}_writeInvocation(e){let t;return t=e.streamIds?this._encoder.encode([ln.Invocation,e.headers||{},e.invocationId||null,e.target,e.arguments,e.streamIds]):this._encoder.encode([ln.Invocation,e.headers||{},e.invocationId||null,e.target,e.arguments]),yo.write(t.slice())}_writeStreamInvocation(e){let t;return t=e.streamIds?this._encoder.encode([ln.StreamInvocation,e.headers||{},e.invocationId,e.target,e.arguments,e.streamIds]):this._encoder.encode([ln.StreamInvocation,e.headers||{},e.invocationId,e.target,e.arguments]),yo.write(t.slice())}_writeStreamItem(e){const t=this._encoder.encode([ln.StreamItem,e.headers||{},e.invocationId,e.item]);return yo.write(t.slice())}_writeCompletion(e){const t=e.error?this._errorResult:void 0!==e.result?this._nonVoidResult:this._voidResult;let n;switch(t){case this._errorResult:n=this._encoder.encode([ln.Completion,e.headers||{},e.invocationId,t,e.error]);break;case this._voidResult:n=this._encoder.encode([ln.Completion,e.headers||{},e.invocationId,t]);break;case this._nonVoidResult:n=this._encoder.encode([ln.Completion,e.headers||{},e.invocationId,t,e.result])}return yo.write(n.slice())}_writeCancelInvocation(e){const t=this._encoder.encode([ln.CancelInvocation,e.headers||{},e.invocationId]);return yo.write(t.slice())}_writeClose(){const e=this._encoder.encode([ln.Close,null]);return yo.write(e.slice())}_writeAck(e){const t=this._encoder.encode([ln.Ack,e.sequenceId]);return yo.write(t.slice())}_writeSequence(e){const t=this._encoder.encode([ln.Sequence,e.sequenceId]);return yo.write(t.slice())}_readHeaders(e){const t=e[1];if("object"!=typeof t)throw new Error("Invalid headers.");return t}}const _o="function"==typeof TextDecoder?new TextDecoder("utf-8"):null,So=_o?_o.decode.bind(_o):function(e){let t=0;const n=e.length,o=[],r=[];for(;t65535&&(r-=65536,o.push(r>>>10&1023|55296),r=56320|1023&r),o.push(r)}o.length>1024&&(r.push(String.fromCharCode.apply(null,o)),o.length=0)}return r.push(String.fromCharCode.apply(null,o)),r.join("")},Co=Math.pow(2,32),Eo=Math.pow(2,21)-1;function Io(e,t){return e[t]|e[t+1]<<8|e[t+2]<<16|e[t+3]<<24}function ko(e,t){return e[t]+(e[t+1]<<8)+(e[t+2]<<16)+(e[t+3]<<24>>>0)}function To(e,t){const n=ko(e,t+4);if(n>Eo)throw new Error(`Cannot read uint64 with high order part ${n}, because the result would exceed Number.MAX_SAFE_INTEGER.`);return n*Co+ko(e,t)}class Ro{constructor(e){this.batchData=e;const t=new No(e);this.arrayRangeReader=new Po(e),this.arrayBuilderSegmentReader=new Mo(e),this.diffReader=new Ao(e),this.editReader=new Do(e,t),this.frameReader=new xo(e,t)}updatedComponents(){return Io(this.batchData,this.batchData.length-20)}referenceFrames(){return Io(this.batchData,this.batchData.length-16)}disposedComponentIds(){return Io(this.batchData,this.batchData.length-12)}disposedEventHandlerIds(){return Io(this.batchData,this.batchData.length-8)}updatedComponentsEntry(e,t){const n=e+4*t;return Io(this.batchData,n)}referenceFramesEntry(e,t){return e+20*t}disposedComponentIdsEntry(e,t){const n=e+4*t;return Io(this.batchData,n)}disposedEventHandlerIdsEntry(e,t){const n=e+8*t;return To(this.batchData,n)}}class Ao{constructor(e){this.batchDataUint8=e}componentId(e){return Io(this.batchDataUint8,e)}edits(e){return e+4}editsEntry(e,t){return e+16*t}}class Do{constructor(e,t){this.batchDataUint8=e,this.stringReader=t}editType(e){return Io(this.batchDataUint8,e)}siblingIndex(e){return Io(this.batchDataUint8,e+4)}newTreeIndex(e){return Io(this.batchDataUint8,e+8)}moveToSiblingIndex(e){return Io(this.batchDataUint8,e+8)}removedAttributeName(e){const t=Io(this.batchDataUint8,e+12);return this.stringReader.readString(t)}}class xo{constructor(e,t){this.batchDataUint8=e,this.stringReader=t}frameType(e){return Io(this.batchDataUint8,e)}subtreeLength(e){return Io(this.batchDataUint8,e+4)}elementReferenceCaptureId(e){const t=Io(this.batchDataUint8,e+4);return this.stringReader.readString(t)}componentId(e){return Io(this.batchDataUint8,e+8)}elementName(e){const t=Io(this.batchDataUint8,e+8);return this.stringReader.readString(t)}textContent(e){const t=Io(this.batchDataUint8,e+4);return this.stringReader.readString(t)}markupContent(e){const t=Io(this.batchDataUint8,e+4);return this.stringReader.readString(t)}attributeName(e){const t=Io(this.batchDataUint8,e+4);return this.stringReader.readString(t)}attributeValue(e){const t=Io(this.batchDataUint8,e+8);return this.stringReader.readString(t)}attributeEventHandlerId(e){return To(this.batchDataUint8,e+12)}}class No{constructor(e){this.batchDataUint8=e,this.stringTableStartIndex=Io(e,e.length-4)}readString(e){if(-1===e)return null;{const n=Io(this.batchDataUint8,this.stringTableStartIndex+4*e),o=function(e,t){let n=0,o=0;for(let r=0;r<4;r++){const i=e[t+r];if(n|=(127&i)<this.nextBatchId)return this.fatalError?(this.logger.log(yt.Debug,`Received a new batch ${e} but errored out on a previous batch ${this.nextBatchId-1}`),void await n.send("OnRenderCompleted",this.nextBatchId-1,this.fatalError.toString())):void this.logger.log(yt.Debug,`Waiting for batch ${this.nextBatchId}. Batch ${e} not processed.`);try{this.nextBatchId++,this.logger.log(yt.Debug,`Applying batch ${e}.`),xe(Bn.Server,new Ro(t)),await this.completeBatch(n,e)}catch(t){throw this.fatalError=t.toString(),this.logger.log(yt.Error,`There was an error applying batch ${e}.`),n.send("OnRenderCompleted",e,t.toString()),t}}getLastBatchid(){return this.nextBatchId-1}async completeBatch(e,t){try{await e.send("OnRenderCompleted",t,null)}catch{this.logger.log(yt.Warning,`Failed to deliver completion notification for render '${t}'.`)}}}let Lo=!1;function Bo(){const e=document.querySelector("#blazor-error-ui");e&&(e.style.display="block"),Lo||(Lo=!0,document.querySelectorAll("#blazor-error-ui .reload").forEach((e=>{e.onclick=function(e){location.reload(),e.preventDefault()}})),document.querySelectorAll("#blazor-error-ui .dismiss").forEach((e=>{e.onclick=function(e){const t=document.querySelector("#blazor-error-ui");t&&(t.style.display="none"),e.preventDefault()}})))}class Oo{constructor(t,n,o,r){this._firstUpdate=!0,this._renderingFailed=!1,this._disposed=!1,this._circuitId=void 0,this._applicationState=n,this._componentManager=t,this._options=o,this._logger=r,this._renderQueue=new Uo(this._logger),this._dispatcher=e.attachDispatcher(this)}start(){if(this.isDisposedOrDisposing())throw new Error("Cannot start a disposed circuit.");return this._startPromise||(this._startPromise=this.startCore()),this._startPromise}updateRootComponents(e){var t,n;return this._firstUpdate?(this._firstUpdate=!1,null===(t=this._connection)||void 0===t?void 0:t.send("UpdateRootComponents",e,this._applicationState)):null===(n=this._connection)||void 0===n?void 0:n.send("UpdateRootComponents",e,"")}async startCore(){if(this._connection=await this.startConnection(),this._connection.state!==hn.Connected)return!1;const e=JSON.stringify(this._componentManager.initialComponents.map((e=>Ut(e))));if(this._circuitId=await this._connection.invoke("StartCircuit",Je.getBaseURI(),Je.getLocationHref(),e,this._applicationState||""),!this._circuitId)return!1;for(const e of this._options.circuitHandlers)e.onCircuitOpened&&e.onCircuitOpened();return!0}async startConnection(){var e,t;const n=new bo;n.name="blazorpack";const o=(new Ln).withUrl("_blazor").withHubProtocol(n);this._options.configureSignalR(o);const r=o.build();r.on("JS.AttachComponent",((e,t)=>Ae(Bn.Server,this.resolveElement(t),e,!1))),r.on("JS.BeginInvokeJS",this._dispatcher.beginInvokeJSFromDotNet.bind(this._dispatcher)),r.on("JS.EndInvokeDotNet",this._dispatcher.endInvokeDotNetFromJS.bind(this._dispatcher)),r.on("JS.ReceiveByteArray",this._dispatcher.receiveByteArray.bind(this._dispatcher)),r.on("JS.BeginTransmitStream",(e=>{const t=new ReadableStream({start:t=>{r.stream("SendDotNetStreamToJS",e).subscribe({next:e=>t.enqueue(e),complete:()=>t.close(),error:e=>t.error(e)})}});this._dispatcher.supplyDotNetStream(e,t)})),r.on("JS.RenderBatch",(async(e,t)=>{var n,o;this._logger.log(Ot.Debug,`Received render batch with id ${e} and ${t.byteLength} bytes.`),await this._renderQueue.processBatch(e,t,this._connection),null===(o=(n=this._componentManager).onAfterRenderBatch)||void 0===o||o.call(n,Bn.Server)})),r.on("JS.EndUpdateRootComponents",(e=>{var t,n;null===(n=(t=this._componentManager).onAfterUpdateRootComponents)||void 0===n||n.call(t,e)})),r.on("JS.EndLocationChanging",vt._internal.navigationManager.endLocationChanging),r.onclose((e=>{this._interopMethodsForReconnection=function(e){const t=C.get(e);if(!t)throw new Error(`Interop methods are not registered for renderer ${e}`);return C.delete(e),t}(Bn.Server),this._disposed||this._renderingFailed||this._options.reconnectionHandler.onConnectionDown(this._options.reconnectionOptions,e)})),r.on("JS.Error",(e=>{this._renderingFailed=!0,this.unhandledError(e),Bo()}));try{await r.start()}catch(e){if(this.unhandledError(e),"FailedToNegotiateWithServerError"===e.errorType)throw e;Bo(),e.innerErrors&&(e.innerErrors.some((e=>"UnsupportedTransportError"===e.errorType&&e.transport===In.WebSockets))?this._logger.log(Ot.Error,"Unable to connect, please ensure you are using an updated browser that supports WebSockets."):e.innerErrors.some((e=>"FailedToStartTransportError"===e.errorType&&e.transport===In.WebSockets))?this._logger.log(Ot.Error,"Unable to connect, please ensure WebSockets are available. A VPN or proxy may be blocking the connection."):e.innerErrors.some((e=>"DisabledTransportError"===e.errorType&&e.transport===In.LongPolling))&&this._logger.log(Ot.Error,"Unable to initiate a SignalR connection to the server. This might be because the server is not configured to support WebSockets. For additional details, visit https://aka.ms/blazor-server-websockets-error."))}return(null===(t=null===(e=r.connection)||void 0===e?void 0:e.features)||void 0===t?void 0:t.inherentKeepAlive)&&this._logger.log(Ot.Warning,"Failed to connect via WebSockets, using the Long Polling fallback transport. This may be due to a VPN or proxy blocking the connection. To troubleshoot this, visit https://aka.ms/blazor-server-using-fallback-long-polling."),r}async disconnect(){var e;await(null===(e=this._connection)||void 0===e?void 0:e.stop())}async reconnect(){if(!this._circuitId)throw new Error("Circuit host not initialized.");return this._connection.state===hn.Connected||(this._connection=await this.startConnection(),this._interopMethodsForReconnection&&(k(Bn.Server,this._interopMethodsForReconnection),this._interopMethodsForReconnection=void 0),!!await this._connection.invoke("ConnectCircuit",this._circuitId)&&(this._options.reconnectionHandler.onConnectionUp(),!0))}beginInvokeDotNetFromJS(e,t,n,o,r){this.throwIfDispatchingWhenDisposed(),this._connection.send("BeginInvokeDotNetFromJS",e?e.toString():null,t,n,o||0,r)}endInvokeJSFromDotNet(e,t,n){this.throwIfDispatchingWhenDisposed(),this._connection.send("EndInvokeJSFromDotNet",e,t,n)}sendByteArray(e,t){this.throwIfDispatchingWhenDisposed(),this._connection.send("ReceiveByteArray",e,t)}throwIfDispatchingWhenDisposed(){if(this._disposed)throw new Error("The circuit associated with this dispatcher is no longer available.")}sendLocationChanged(e,t,n){return this._connection.send("OnLocationChanged",e,t,n)}sendLocationChanging(e,t,n,o){return this._connection.send("OnLocationChanging",e,t,n,o)}sendJsDataStream(e,t,n){return function(e,t,n,o){setTimeout((async()=>{let r=5,i=(new Date).valueOf();try{const s=t instanceof Blob?t.size:t.byteLength;let a=0,c=0;for(;a1)await e.send("ReceiveJSDataChunk",n,c,h,null);else{if(!await e.invoke("ReceiveJSDataChunk",n,c,h,null))break;const t=(new Date).valueOf(),o=t-i;i=t,r=Math.max(1,Math.round(500/Math.max(1,o)))}a+=l,c++}}catch(t){await e.send("ReceiveJSDataChunk",n,-1,null,t.toString())}}),0)}(this._connection,e,t,n)}resolveElement(e){const t=w(e);if(t)return W(t,!0);const n=Number.parseInt(e);if(!Number.isNaN(n))return H(this._componentManager.resolveRootComponent(n));throw new Error(`Invalid sequence number or identifier '${e}'.`)}getRootComponentManager(){return this._componentManager}unhandledError(e){this._logger.log(Ot.Error,e),this.disconnect()}getDisconnectFormData(){const e=new FormData,t=this._circuitId;return e.append("circuitId",t),e}didRenderingFail(){return this._renderingFailed}isDisposedOrDisposing(){return void 0!==this._disposePromise}sendDisconnectBeacon(){if(this._disposed)return;const e=this.getDisconnectFormData();this._disposed=navigator.sendBeacon("_blazor/disconnect",e)}dispose(){return this._disposePromise||(this._disposePromise=this.disposeCore()),this._disposePromise}async disposeCore(){var e;if(!this._startPromise)return void(this._disposed=!0);await this._startPromise,this._disposed=!0,null===(e=this._connection)||void 0===e||e.stop();const t=this.getDisconnectFormData();fetch("http://github.com/_blazor/disconnect",{method:"POST",body:t});for(const e of this._options.circuitHandlers)e.onCircuitClosed&&e.onCircuitClosed()}}function Fo(e){const t={...$o,...e};return e&&e.reconnectionOptions&&(t.reconnectionOptions={...$o.reconnectionOptions,...e.reconnectionOptions}),t}const $o={configureSignalR:e=>{},logLevel:yt.Warning,initializers:void 0,circuitHandlers:[],reconnectionOptions:{maxRetries:8,retryIntervalMilliseconds:2e4,dialogId:"components-reconnect-modal"}};class Ho{constructor(e,t,n,o){this.maxRetries=t,this.document=n,this.logger=o,this.modal=this.document.createElement("div"),this.modal.id=e,this.maxRetries=t,this.modal.style.cssText=["position: fixed","top: 0","right: 0","bottom: 0","left: 0","z-index: 1050","display: none","overflow: hidden","background-color: #fff","opacity: 0.8","text-align: center","font-weight: bold","transition: visibility 0s linear 500ms"].join(";"),this.message=this.document.createElement("h5"),this.message.style.cssText="margin-top: 20px",this.button=this.document.createElement("button"),this.button.style.cssText="margin:5px auto 5px",this.button.textContent="Retry";const r=this.document.createElement("a");r.addEventListener("click",(()=>location.reload())),r.textContent="reload",this.reloadParagraph=this.document.createElement("p"),this.reloadParagraph.textContent="Alternatively, ",this.reloadParagraph.appendChild(r),this.modal.appendChild(this.message),this.modal.appendChild(this.button),this.modal.appendChild(this.reloadParagraph),this.loader=this.getLoader(),this.message.after(this.loader),this.button.addEventListener("click",(async()=>{this.show();try{await vt.reconnect()||this.rejected()}catch(e){this.logger.log(yt.Error,e),this.failed()}}))}show(){this.document.contains(this.modal)||this.document.body.appendChild(this.modal),this.modal.style.display="block",this.loader.style.display="inline-block",this.button.style.display="none",this.reloadParagraph.style.display="none",this.message.textContent="Attempting to reconnect to the server...",this.modal.style.visibility="hidden",setTimeout((()=>{this.modal.style.visibility="visible"}),0)}update(e){this.message.textContent=`Attempting to reconnect to the server: ${e} of ${this.maxRetries}`}hide(){this.modal.style.display="none"}failed(){this.button.style.display="block",this.reloadParagraph.style.display="none",this.loader.style.display="none";const e=this.document.createTextNode("Reconnection failed. Try "),t=this.document.createElement("a");t.textContent="reloading",t.setAttribute("href",""),t.addEventListener("click",(()=>location.reload()));const n=this.document.createTextNode(" the page if you're unable to reconnect.");this.message.replaceChildren(e,t,n)}rejected(){this.button.style.display="none",this.reloadParagraph.style.display="none",this.loader.style.display="none";const e=this.document.createTextNode("Could not reconnect to the server. "),t=this.document.createElement("a");t.textContent="Reload",t.setAttribute("href",""),t.addEventListener("click",(()=>location.reload()));const n=this.document.createTextNode(" the page to restore functionality.");this.message.replaceChildren(e,t,n)}getLoader(){const e=this.document.createElement("div");return e.style.cssText=["border: 0.3em solid #f3f3f3","border-top: 0.3em solid #3498db","border-radius: 50%","width: 2em","height: 2em","display: inline-block"].join(";"),e.animate([{transform:"rotate(0deg)"},{transform:"rotate(360deg)"}],{duration:2e3,iterations:1/0}),e}}class Wo{constructor(e,t,n){this.dialog=e,this.maxRetries=t,this.document=n,this.document=n;const o=this.document.getElementById(Wo.MaxRetriesId);o&&(o.innerText=this.maxRetries.toString())}show(){this.removeClasses(),this.dialog.classList.add(Wo.ShowClassName)}update(e){const t=this.document.getElementById(Wo.CurrentAttemptId);t&&(t.innerText=e.toString())}hide(){this.removeClasses(),this.dialog.classList.add(Wo.HideClassName)}failed(){this.removeClasses(),this.dialog.classList.add(Wo.FailedClassName)}rejected(){this.removeClasses(),this.dialog.classList.add(Wo.RejectedClassName)}removeClasses(){this.dialog.classList.remove(Wo.ShowClassName,Wo.HideClassName,Wo.FailedClassName,Wo.RejectedClassName)}}Wo.ShowClassName="components-reconnect-show",Wo.HideClassName="components-reconnect-hide",Wo.FailedClassName="components-reconnect-failed",Wo.RejectedClassName="components-reconnect-rejected",Wo.MaxRetriesId="components-reconnect-max-retries",Wo.CurrentAttemptId="components-reconnect-current-attempt";class jo{constructor(e,t,n){this._currentReconnectionProcess=null,this._logger=e,this._reconnectionDisplay=t,this._reconnectCallback=n||vt.reconnect}onConnectionDown(e,t){if(!this._reconnectionDisplay){const t=document.getElementById(e.dialogId);this._reconnectionDisplay=t?new Wo(t,e.maxRetries,document):new Ho(e.dialogId,e.maxRetries,document,this._logger)}this._currentReconnectionProcess||(this._currentReconnectionProcess=new zo(e,this._logger,this._reconnectCallback,this._reconnectionDisplay))}onConnectionUp(){this._currentReconnectionProcess&&(this._currentReconnectionProcess.dispose(),this._currentReconnectionProcess=null)}}class zo{constructor(e,t,n,o){this.logger=t,this.reconnectCallback=n,this.isDisposed=!1,this.reconnectDisplay=o,this.reconnectDisplay.show(),this.attemptPeriodicReconnection(e)}dispose(){this.isDisposed=!0,this.reconnectDisplay.hide()}async attemptPeriodicReconnection(e){for(let t=0;tzo.MaximumFirstRetryInterval?zo.MaximumFirstRetryInterval:e.retryIntervalMilliseconds;if(await this.delay(n),this.isDisposed)break;try{return await this.reconnectCallback()?void 0:void this.reconnectDisplay.rejected()}catch(e){this.logger.log(yt.Error,e)}}this.reconnectDisplay.failed()}delay(e){return new Promise((t=>setTimeout(t,e)))}}zo.MaximumFirstRetryInterval=3e3;class qo{constructor(e=!0,t,n,o=0){this.singleRuntime=e,this.logger=t,this.webRendererId=o,this.afterStartedCallbacks=[],n&&this.afterStartedCallbacks.push(...n)}async importInitializersAsync(e,t){await Promise.all(e.map((e=>async function(e,n){const o=function(e){const t=document.baseURI;return t.endsWith("/")?`${t}${e}`:`${t}/${e}`}(n),r=await import(o);if(void 0!==r){if(e.singleRuntime){const{beforeStart:n,afterStarted:o,beforeWebAssemblyStart:s,afterWebAssemblyStarted:a,beforeServerStart:c,afterServerStarted:l}=r;let h=n;e.webRendererId===Bn.Server&&c&&(h=c),e.webRendererId===Bn.WebAssembly&&s&&(h=s);let d=o;return e.webRendererId===Bn.Server&&l&&(d=l),e.webRendererId===Bn.WebAssembly&&a&&(d=a),i(e,h,d,t)}return function(e,t,n){var r;const s=n[0],{beforeStart:a,afterStarted:c,beforeWebStart:l,afterWebStarted:h,beforeWebAssemblyStart:d,afterWebAssemblyStarted:u,beforeServerStart:p,afterServerStarted:f}=t,g=!(l||h||d||u||p||f||!a&&!c),m=g&&s.enableClassicInitializers;if(g&&!s.enableClassicInitializers)null===(r=e.logger)||void 0===r||r.log(yt.Warning,`Initializer '${o}' will be ignored because multiple runtimes are available. use 'before(web|webAssembly|server)Start' and 'after(web|webAssembly|server)Started?' instead.)`);else if(m)return i(e,a,c,n);if(function(e){e.webAssembly?e.webAssembly.initializers||(e.webAssembly.initializers={beforeStart:[],afterStarted:[]}):e.webAssembly={initializers:{beforeStart:[],afterStarted:[]}},e.circuit?e.circuit.initializers||(e.circuit.initializers={beforeStart:[],afterStarted:[]}):e.circuit={initializers:{beforeStart:[],afterStarted:[]}}}(s),d&&s.webAssembly.initializers.beforeStart.push(d),u&&s.webAssembly.initializers.afterStarted.push(u),p&&s.circuit.initializers.beforeStart.push(p),f&&s.circuit.initializers.afterStarted.push(f),h&&e.afterStartedCallbacks.push(h),l)return l(s)}(e,r,t)}function i(e,t,n,o){if(n&&e.afterStartedCallbacks.push(n),t)return t(...o)}}(this,e))))}async invokeAfterStartedCallbacks(e){const t=function(e){var t;return null===(t=I.get(e))||void 0===t?void 0:t[1]}(this.webRendererId);t&&await t,await Promise.all(this.afterStartedCallbacks.map((t=>t(e))))}}let Jo,Ko,Vo,Xo,Go,Yo,Qo,Zo;function er(e){if(Xo)throw new Error("Circuit options have already been configured.");if(Xo)throw new Error("WebAssembly options have already been configured.");Jo=async function(e){const t=await e;Xo=Fo(t)}(e)}function tr(e){if(void 0!==Yo)throw new Error("Blazor Server has already started.");return Yo=new Promise(nr.bind(null,e)),Yo}async function nr(e,t,n){await Jo;const o=await async function(e){if(e.initializers)return await Promise.all(e.initializers.beforeStart.map((t=>t(e)))),new qo(!1,void 0,e.initializers.afterStarted,Bn.Server);const t=await fetch("http://github.com/_blazor/initializers",{method:"GET",credentials:"include",cache:"no-cache"}),n=await t.json(),o=new qo(!0,void 0,void 0,Bn.Server);return await o.importInitializersAsync(n,[e]),o}(Xo);if(Ko=It(document)||"",Go=new bt(Xo.logLevel),Vo=new Oo(e,Ko,Xo,Go),Go.log(yt.Information,"Starting up Blazor server-side application."),vt.reconnect=async()=>!(Vo.didRenderingFail()||!await Vo.reconnect()&&(Go.log(yt.Information,"Reconnection attempt to the circuit was rejected by the server. This may indicate that the associated state is no longer available on the server."),1)),vt.defaultReconnectionHandler=new jo(Go),Xo.reconnectionHandler=Xo.reconnectionHandler||vt.defaultReconnectionHandler,vt._internal.navigationManager.listenForNavigationEvents(Bn.Server,((e,t,n)=>Vo.sendLocationChanged(e,t,n)),((e,t,n,o)=>Vo.sendLocationChanging(e,t,n,o))),vt._internal.forceCloseConnection=()=>Vo.disconnect(),vt._internal.sendJSDataStream=(e,t,n)=>Vo.sendJsDataStream(e,t,n),!await Vo.start())return Go.log(yt.Error,"Failed to start the circuit."),void t();const r=()=>{Vo.sendDisconnectBeacon()};vt.disconnect=r,window.addEventListener("unload",r,{capture:!1,once:!0}),Go.log(yt.Information,"Blazor server-side application started."),o.invokeAfterStartedCallbacks(vt),t()}async function or(){if(!Yo)throw new Error("Cannot start the circuit until Blazor Server has started.");return!(!Vo||Vo.isDisposedOrDisposing())||(Qo?await Qo:(await Yo,(!Vo||!Vo.didRenderingFail())&&(Vo&&Vo.isDisposedOrDisposing()&&(Ko=It(document)||"",Vo=new Oo(Vo.getRootComponentManager(),Ko,Xo,Go)),Qo=Vo.start(),async function(e){await e,Qo===e&&(Qo=void 0)}(Qo),Qo)))}function rr(e){if(Vo&&!Vo.isDisposedOrDisposing())return Vo.updateRootComponents(e);!async function(e){await Yo,await or()&&Vo.updateRootComponents(e)}(e)}function ir(e){return Zo=e,Zo}var sr,ar;const cr=navigator,lr=cr.userAgentData&&cr.userAgentData.brands,hr=lr&&lr.length>0?lr.some((e=>"Google Chrome"===e.brand||"Microsoft Edge"===e.brand||"Chromium"===e.brand)):window.chrome,dr=null!==(ar=null===(sr=cr.userAgentData)||void 0===sr?void 0:sr.platform)&&void 0!==ar?ar:navigator.platform;function ur(e){return 0!==e.debugLevel&&(hr||navigator.userAgent.includes("Firefox"))}let pr,fr,gr,mr,vr,yr,wr;const br=Math.pow(2,32),_r=Math.pow(2,21)-1;let Sr=null;function Cr(e){return fr.getI32(e)}const Er={load:function(e,t){return async function(e,t){const{dotnet:n}=await async function(e){if("undefined"==typeof WebAssembly||!WebAssembly.validate)throw new Error("This browser does not support WebAssembly.");let t="_framework/dotnet.js";if(e.loadBootResource){const n="dotnetjs",o=e.loadBootResource(n,"dotnet.js",t,"","js-module-dotnet");if("string"==typeof o)t=o;else if(o)throw new Error(`For a ${n} resource, custom loaders must supply a URI string.`)}const n=new URL(t,document.baseURI).toString();return await import(n)}(e),o=function(e,t){const n={maxParallelDownloads:1e6,enableDownloadRetry:!1,applicationEnvironment:e.environment},o={...window.Module||{},onConfigLoaded:async n=>{n.environmentVariables||(n.environmentVariables={}),"sharded"===n.globalizationMode&&(n.environmentVariables.__BLAZOR_SHARDED_ICU="1"),vt._internal.getApplicationEnvironment=()=>n.applicationEnvironment,null==t||t(n),wr=await async function(e,t){var n,o,r;if(e.initializers)return await Promise.all(e.initializers.beforeStart.map((t=>t(e)))),new qo(!1,void 0,e.initializers.afterStarted,Bn.WebAssembly);{const i=[e,null!==(o=null===(n=t.resources)||void 0===n?void 0:n.extensions)&&void 0!==o?o:{}],s=new qo(!0,void 0,void 0,Bn.WebAssembly),a=Object.keys((null===(r=null==t?void 0:t.resources)||void 0===r?void 0:r.libraryInitializers)||{});return await s.importInitializersAsync(a,i),s}}(e,n)},onDownloadResourceProgress:Ir,config:n,disableDotnet6Compatibility:!1,out:Tr,err:Rr};return o}(e,t);e.applicationCulture&&n.withApplicationCulture(e.applicationCulture),e.environment&&n.withApplicationEnvironment(e.environment),e.loadBootResource&&n.withResourceLoader(e.loadBootResource),n.withModuleConfig(o),e.configureRuntime&&e.configureRuntime(n),yr=await n.create()}(e,t)},start:function(){return async function(){if(!yr)throw new Error("The runtime must be loaded it gets configured.");const{MONO:t,BINDING:n,Module:o,setModuleImports:r,INTERNAL:i,getConfig:s,invokeLibraryInitializers:a}=yr;gr=o,pr=n,fr=t,vr=i,function(e){const t=dr.match(/^Mac/i)?"Cmd":"Alt";ur(e)&&console.info(`Debugging hotkey: Shift+${t}+D (when application has focus)`),document.addEventListener("keydown",(t=>{t.shiftKey&&(t.metaKey||t.altKey)&&"KeyD"===t.code&&(ur(e)?navigator.userAgent.includes("Firefox")?async function(){const e=await fetch(`_framework/debug?url=${encodeURIComponent(location.href)}&isFirefox=true`);200!==e.status&&console.warn(await e.text())}():hr?function(){const e=document.createElement("a");e.href=`_framework/debug?url=${encodeURIComponent(location.href)}`,e.target="_blank",e.rel="noopener noreferrer",e.click()}():console.error("Currently, only Microsoft Edge (80+), Google Chrome, or Chromium, are supported for debugging."):console.error("Cannot start debugging, because the application was not compiled with debugging enabled."))}))}(s()),vt.runtime=yr,vt._internal.dotNetCriticalError=Rr,r("blazor-internal",{Blazor:{_internal:vt._internal}});const c=await yr.getAssemblyExports("Microsoft.AspNetCore.Components.WebAssembly");return Object.assign(vt._internal,{dotNetExports:{...c.Microsoft.AspNetCore.Components.WebAssembly.Services.DefaultWebAssemblyJSRuntime}}),mr=e.attachDispatcher({beginInvokeDotNetFromJS:(e,t,n,o,r)=>{if(Dr(),!o&&!t)throw new Error("Either assemblyName or dotNetObjectId must have a non null value.");const i=o?o.toString():t;vt._internal.dotNetExports.BeginInvokeDotNet(e?e.toString():null,i,n,r)},endInvokeJSFromDotNet:(e,t,n)=>{vt._internal.dotNetExports.EndInvokeJS(n)},sendByteArray:(e,t)=>{vt._internal.dotNetExports.ReceiveByteArrayFromJS(e,t)},invokeDotNetFromJS:(e,t,n,o)=>(Dr(),vt._internal.dotNetExports.InvokeDotNet(e||null,t,null!=n?n:0,o))}),{invokeLibraryInitializers:a}}()},callEntryPoint:async function(){try{await yr.runMain(yr.getConfig().mainAssemblyName,[])}catch(e){console.error(e),Bo()}},toUint8Array:function(e){const t=Ar(e),n=Cr(t),o=new Uint8Array(n);return o.set(gr.HEAPU8.subarray(t+4,t+4+n)),o},getArrayLength:function(e){return Cr(Ar(e))},getArrayEntryPtr:function(e,t,n){return Ar(e)+4+t*n},getObjectFieldsBaseAddress:function(e){return e+8},readInt16Field:function(e,t){return n=e+(t||0),fr.getI16(n);var n},readInt32Field:function(e,t){return Cr(e+(t||0))},readUint64Field:function(e,t){return function(e){const t=e>>2,n=gr.HEAPU32[t+1];if(n>_r)throw new Error(`Cannot read uint64 with high order part ${n}, because the result would exceed Number.MAX_SAFE_INTEGER.`);return n*br+gr.HEAPU32[t]}(e+(t||0))},readFloatField:function(e,t){return n=e+(t||0),fr.getF32(n);var n},readObjectField:function(e,t){return Cr(e+(t||0))},readStringField:function(e,t,n){const o=Cr(e+(t||0));if(0===o)return null;if(n){const e=pr.unbox_mono_obj(o);return"boolean"==typeof e?e?"":null:e}return pr.conv_string(o)},readStructField:function(e,t){return e+(t||0)},beginHeapLock:function(){return Dr(),Sr=xr.create(),Sr},invokeWhenHeapUnlocked:function(e){Sr?Sr.enqueuePostReleaseAction(e):e()}};function Ir(e,t){const n=e/t*100;document.documentElement.style.setProperty("--blazor-load-percentage",`${n}%`),document.documentElement.style.setProperty("--blazor-load-percentage-text",`"${Math.floor(n)}%"`)}const kr=["DEBUGGING ENABLED"],Tr=e=>kr.indexOf(e)<0&&console.log(e),Rr=e=>{console.error(e||"(null)"),Bo()};function Ar(e){return e+12}function Dr(){if(Sr)throw new Error("Assertion failed - heap is currently locked")}class xr{enqueuePostReleaseAction(e){this.postReleaseActions||(this.postReleaseActions=[]),this.postReleaseActions.push(e)}release(){var e;if(Sr!==this)throw new Error("Trying to release a lock which isn't current");for(vr.mono_wasm_gc_unlock(),Sr=null;null===(e=this.postReleaseActions)||void 0===e?void 0:e.length;)this.postReleaseActions.shift()(),Dr()}static create(){return vr.mono_wasm_gc_lock(),new xr}}class Nr{constructor(e){this.batchAddress=e,this.arrayRangeReader=Pr,this.arrayBuilderSegmentReader=Mr,this.diffReader=Ur,this.editReader=Lr,this.frameReader=Br}updatedComponents(){return Zo.readStructField(this.batchAddress,0)}referenceFrames(){return Zo.readStructField(this.batchAddress,Pr.structLength)}disposedComponentIds(){return Zo.readStructField(this.batchAddress,2*Pr.structLength)}disposedEventHandlerIds(){return Zo.readStructField(this.batchAddress,3*Pr.structLength)}updatedComponentsEntry(e,t){return Or(e,t,Ur.structLength)}referenceFramesEntry(e,t){return Or(e,t,Br.structLength)}disposedComponentIdsEntry(e,t){const n=Or(e,t,4);return Zo.readInt32Field(n)}disposedEventHandlerIdsEntry(e,t){const n=Or(e,t,8);return Zo.readUint64Field(n)}}const Pr={structLength:8,values:e=>Zo.readObjectField(e,0),count:e=>Zo.readInt32Field(e,4)},Mr={structLength:12,values:e=>{const t=Zo.readObjectField(e,0),n=Zo.getObjectFieldsBaseAddress(t);return Zo.readObjectField(n,0)},offset:e=>Zo.readInt32Field(e,4),count:e=>Zo.readInt32Field(e,8)},Ur={structLength:4+Mr.structLength,componentId:e=>Zo.readInt32Field(e,0),edits:e=>Zo.readStructField(e,4),editsEntry:(e,t)=>Or(e,t,Lr.structLength)},Lr={structLength:20,editType:e=>Zo.readInt32Field(e,0),siblingIndex:e=>Zo.readInt32Field(e,4),newTreeIndex:e=>Zo.readInt32Field(e,8),moveToSiblingIndex:e=>Zo.readInt32Field(e,8),removedAttributeName:e=>Zo.readStringField(e,16)},Br={structLength:36,frameType:e=>Zo.readInt16Field(e,4),subtreeLength:e=>Zo.readInt32Field(e,8),elementReferenceCaptureId:e=>Zo.readStringField(e,16),componentId:e=>Zo.readInt32Field(e,12),elementName:e=>Zo.readStringField(e,16),textContent:e=>Zo.readStringField(e,16),markupContent:e=>Zo.readStringField(e,16),attributeName:e=>Zo.readStringField(e,16),attributeValue:e=>Zo.readStringField(e,24,!0),attributeEventHandlerId:e=>Zo.readUint64Field(e,8)};function Or(e,t,n){return Zo.getArrayEntryPtr(e,t,n)}class Fr{constructor(e){this.componentManager=e}resolveRegisteredElement(e){const t=Number.parseInt(e);if(!Number.isNaN(t))return H(this.componentManager.resolveRootComponent(t))}getParameterValues(e){return this.componentManager.initialComponents[e].parameterValues}getParameterDefinitions(e){return this.componentManager.initialComponents[e].parameterDefinitions}getTypeName(e){return this.componentManager.initialComponents[e].typeName}getAssembly(e){return this.componentManager.initialComponents[e].assembly}getCount(){return this.componentManager.initialComponents.length}}let $r,Hr,Wr,jr,zr,qr=!1,Jr=!1,Kr=!0,Vr=!1;const Xr=new Promise((e=>{zr=e}));let Gr;const Yr=new Promise((e=>{Gr=e}));let Qr;function Zr(e){if(void 0!==jr)throw new Error("Blazor WebAssembly has already started.");return jr=new Promise(ei.bind(null,e)),jr}async function ei(e,t,n){(function(){if(window.parent!==window&&!window.opener&&window.frameElement){const e=window.sessionStorage&&window.sessionStorage["Microsoft.AspNetCore.Components.WebAssembly.Authentication.CachedAuthSettings"],t=e&&JSON.parse(e);return t&&t.redirect_uri&&location.href.startsWith(t.redirect_uri)}return!1})()&&await new Promise((()=>{}));const o=ti();!function(e){const t=D;D=(e,n,o)=>{((e,t,n)=>{const o=De(e);(null==o?void 0:o.eventDelegator.getHandler(t))&&Er.invokeWhenHeapUnlocked(n)})(e,n,(()=>t(e,n,o)))}}(),vt._internal.applyHotReload=(e,t,n,o)=>{mr.invokeDotNetStaticMethod("Microsoft.AspNetCore.Components.WebAssembly","ApplyHotReloadDelta",e,t,n,o)},vt._internal.getApplyUpdateCapabilities=()=>mr.invokeDotNetStaticMethod("Microsoft.AspNetCore.Components.WebAssembly","GetApplyUpdateCapabilities"),vt._internal.invokeJSFromDotNet=oi,vt._internal.invokeJSJson=ri,vt._internal.endInvokeDotNetFromJS=ii,vt._internal.receiveWebAssemblyDotNetDataStream=si,vt._internal.receiveByteArray=ai;const r=ir(Er);vt.platform=r,vt._internal.renderBatch=(e,t)=>{const n=Er.beginHeapLock();try{xe(e,new Nr(t))}finally{n.release()}},vt._internal.navigationManager.listenForNavigationEvents(Bn.WebAssembly,(async(e,t,n)=>{await mr.invokeDotNetStaticMethodAsync("Microsoft.AspNetCore.Components.WebAssembly","NotifyLocationChanged",e,t,n)}),(async(e,t,n,o)=>{const r=await mr.invokeDotNetStaticMethodAsync("Microsoft.AspNetCore.Components.WebAssembly","NotifyLocationChangingAsync",t,n,o);vt._internal.navigationManager.endLocationChanging(e,r)}));const i=new Fr(e);let s;vt._internal.registeredComponents={getRegisteredComponentsCount:()=>i.getCount(),getAssembly:e=>i.getAssembly(e),getTypeName:e=>i.getTypeName(e),getParameterDefinitions:e=>i.getParameterDefinitions(e)||"",getParameterValues:e=>i.getParameterValues(e)||""},vt._internal.getPersistedState=()=>kt(document,Ct)||"",vt._internal.getInitialComponentsUpdate=()=>Yr,vt._internal.updateRootComponents=e=>{var t;return null===(t=vt._internal.dotNetExports)||void 0===t?void 0:t.UpdateRootComponentsCore(e)},vt._internal.endUpdateRootComponents=t=>{var n;return null===(n=e.onAfterUpdateRootComponents)||void 0===n?void 0:n.call(e,t)},vt._internal.attachRootComponentToElement=(e,t,n)=>{const o=i.resolveRegisteredElement(e);o?Ae(n,o,t,!1):function(e,t,n){const o="::before";let r=!1;if(e.endsWith("::after"))e=e.slice(0,-7),r=!0;else if(e.endsWith(o))throw new Error(`The '${o}' selector is not supported.`);const i=w(e)||document.querySelector(e);if(!i)throw new Error(`Could not find any element matching selector '${e}'.`);Ae(n,W(i,!0),t,r)}(e,t,n)};try{await o,s=await r.start()}catch(e){throw new Error(`Failed to start platform. Reason: ${e}`)}r.callEntryPoint(),wr.invokeAfterStartedCallbacks(vt),Jr=!0,t()}function ti(){return null!=Wr||(Wr=(async()=>{await Hr;const e=null!=$r?$r:{},t=null==$r?void 0:$r.configureRuntime;e.configureRuntime=e=>{null==t||t(e),Vr&&e.withEnvironmentVariable("__BLAZOR_WEBASSEMBLY_WAIT_FOR_ROOT_COMPONENTS","true")},await Er.load(e,zr),qr=!0})()),Wr}function ni(){return qr}function oi(t,n,o,r){const i=Er.readStringField(t,0),s=Er.readInt32Field(t,4),a=Er.readStringField(t,8),c=Er.readUint64Field(t,20);if(null!==a){const e=Er.readUint64Field(t,12);if(0!==e)return mr.beginInvokeJSFromDotNet(e,i,a,s,c),0;{const e=mr.invokeJSFromDotNet(i,a,s,c);return null===e?0:pr.js_string_to_mono_string(e)}}{const t=e.findJSFunction(i,c).call(null,n,o,r);switch(s){case e.JSCallResultType.Default:return t;case e.JSCallResultType.JSObjectReference:return e.createJSObjectReference(t).__jsObjectId;case e.JSCallResultType.JSStreamReference:{const n=e.createJSStreamReference(t),o=JSON.stringify(n);return pr.js_string_to_mono_string(o)}case e.JSCallResultType.JSVoidResult:return null;default:throw new Error(`Invalid JS call result type '${s}'.`)}}}function ri(e,t,n,o,r){return 0!==r?(mr.beginInvokeJSFromDotNet(r,e,o,n,t),null):mr.invokeJSFromDotNet(e,o,n,t)}function ii(e,t,n){mr.endInvokeDotNetFromJS(e,t,n)}function si(e,t,n,o){!function(e,t,n,o,r){let i=mt.get(t);if(!i){const n=new ReadableStream({start(e){mt.set(t,e),i=e}});e.supplyDotNetStream(t,n)}r?(i.error(r),mt.delete(t)):0===o?(i.close(),mt.delete(t)):i.enqueue(n.length===o?n:n.subarray(0,o))}(mr,e,t,n,o)}function ai(e,t){mr.receiveByteArray(e,t)}function ci(e,t){t.namespaceURI?e.setAttributeNS(t.namespaceURI,t.name,t.value):e.setAttribute(t.name,t.value)}Hr=new Promise((e=>{Qr=e}));const li="data-permanent";var hi,di;!function(e){e[e.None=0]="None",e[e.Some=1]="Some",e[e.Infinite=2]="Infinite"}(hi||(hi={})),function(e){e.Keep="keep",e.Update="update",e.Insert="insert",e.Delete="delete"}(di||(di={}));class ui{static create(e,t,n){return 0===t&&n===e.length?e:new ui(e,t,n)}constructor(e,t,n){this.source=e,this.startIndex=t,this.length=n}item(e){return this.source.item(e+this.startIndex)}forEach(e,t){for(let t=0;t=n&&s>=o&&r(e.item(i),t.item(s))===hi.None;)i--,s--,a++;return a}(e,t,o,o,n),i=function(e){var t;const n=[];let o=e.length-1,r=(null===(t=e[o])||void 0===t?void 0:t.length)-1;for(;o>0||r>0;){const t=0===o?di.Insert:0===r?di.Delete:e[o][r];switch(n.unshift(t),t){case di.Keep:case di.Update:o--,r--;break;case di.Insert:r--;break;case di.Delete:o--}}return n}(function(e,t,n){const o=[],r=[],i=e.length,s=t.length;if(0===i&&0===s)return[];for(let e=0;e<=i;e++)(o[e]=Array(s+1))[0]=e,r[e]=Array(s+1);const a=o[0];for(let e=1;e<=s;e++)a[e]=e;for(let a=1;a<=i;a++)for(let i=1;i<=s;i++){const s=n(e.item(a-1),t.item(i-1)),c=o[a-1][i]+1,l=o[a][i-1]+1;let h;switch(s){case hi.None:h=o[a-1][i-1];break;case hi.Some:h=o[a-1][i-1]+1;break;case hi.Infinite:h=Number.MAX_VALUE}h{history.pushState(null,"",e),Ui(e,!0)}))}function Pi(e){Oe()||Ui(location.href,!1)}function Mi(e){var t,n,o,r,i;if(Oe()||e.defaultPrevented)return;const s=e.target;if(s instanceof HTMLFormElement){if(!function(e){const t=e.getAttribute("data-enhance");return"string"==typeof t&&""===t||"true"===(null==t?void 0:t.toLowerCase())}(s))return;const a=(null===(t=e.submitter)||void 0===t?void 0:t.getAttribute("formmethod"))||s.method;if("dialog"===a)return void console.warn('A form cannot be enhanced when its method is "dialog".');const c=(null===(n=e.submitter)||void 0===n?void 0:n.getAttribute("formtarget"))||s.target;if(""!==c&&"_self"!==c)return void console.warn('A form cannot be enhanced when its target is different from the default value "_self".');e.preventDefault();const l=new URL((null===(o=e.submitter)||void 0===o?void 0:o.getAttribute("formaction"))||s.action,document.baseURI),h={method:a},d=new FormData(s),u=null===(r=e.submitter)||void 0===r?void 0:r.getAttribute("name"),p=e.submitter.getAttribute("value");u&&p&&d.append(u,p);const f=new URLSearchParams(d).toString();if("get"===h.method)l.search=f,history.pushState(null,"",l.toString());else{const t=(null===(i=e.submitter)||void 0===i?void 0:i.getAttribute("formenctype"))||s.enctype;"multipart/form-data"===t?h.body=d:(h.body=f,h.headers={"content-type":t,accept:Ii})}Ui(l.toString(),!1,h)}}async function Ui(e,t,n,o){Ri=!0,null==ki||ki.abort(),function(e,t){null==ke||ke(e,t)}(e,t),ki=new AbortController;const r=ki.signal,i=fetch(e,Object.assign({signal:r,mode:"no-cors",headers:{accept:Ii}},n));let s=null;if(await async function(e,t,n,o){let r;try{if(r=await e,!r.body)return void n(r,"");const t=r.headers.get("ssr-framing");if(!t){const e=await r.text();return void n(r,e)}let o=!0;await r.body.pipeThrough(new TextDecoderStream).pipeThrough(function(e){let t="";return new TransformStream({transform(n,o){if(t+=n,t.indexOf(e,t.length-n.length-e.length)>=0){const n=t.split(e);n.slice(0,-1).forEach((e=>o.enqueue(e))),t=n[n.length-1]}},flush(e){e.enqueue(t)}})}(`\x3c!--${t}--\x3e`)).pipeTo(new WritableStream({write(e){o?(o=!1,n(r,e)):(e=>{const t=document.createRange().createContextualFragment(e);for(;t.firstChild;)document.body.appendChild(t.firstChild)})(e)}}))}catch(e){if("AbortError"===e.name&&t.aborted)return;throw e}}(i,r,((t,r)=>{const i=!(null==n?void 0:n.method)||"get"===n.method,a=t.status>=200&&t.status<300;if("opaque"===t.type){if(i)return void Bi(e);throw new Error("Enhanced navigation does not support making a non-GET request to an endpoint that redirects to an external origin. Avoid enabling enhanced navigation for form posts that may perform external redirections.")}if(a&&"allow"!==t.headers.get("blazor-enhanced-nav")){if(i)return void Bi(e);throw new Error("Enhanced navigation does not support making a non-GET request to a non-Blazor endpoint. Avoid enabling enhanced navigation for forms that post to a non-Blazor endpoint.")}(t.redirected||o)&&((o?"get"===o:i)?history.replaceState(null,"",t.url):t.url!==location.href&&history.pushState(null,"",t.url),e=t.url);const c=t.headers.get("blazor-enhanced-nav-redirect-location");if(c)return void location.replace(c);t.redirected||i||!a||(function(e){const t=new URL(e.url),n=new URL(Ai);return t.protocol===n.protocol&&t.host===n.host&&t.port===n.port&&t.pathname===n.pathname}(t)?location.href!==Ai&&history.pushState(null,"",Ai):s=`Cannot perform enhanced form submission that changes the URL (except via a redirection), because then back/forward would not work. Either remove this form's 'action' attribute, or change its method to 'get', or do not mark it as enhanced.\nOld URL: ${location.href}\nNew URL: ${t.url}`),Ai=t.url;const l=t.headers.get("content-type");if((null==l?void 0:l.startsWith("text/html"))&&r){const e=(new DOMParser).parseFromString(r,"text/html");fi(document,e),Ti.documentUpdated()}else(null==l?void 0:l.startsWith("text/"))&&r?Li(r):a||r?i?Bi(e):Li(`Error: ${n.method} request to ${e} returned non-HTML content of type ${l||"unspecified"}.`):Li(`Error: ${t.status} ${t.statusText}`)})),!r.aborted){const t=e.indexOf("#");if(t>=0){const n=e.substring(t+1),o=document.getElementById(n);null==o||o.scrollIntoView()}if(Ri=!1,Ti.enhancedNavigationCompleted(),s)throw new Error(s)}}function Li(e){document.documentElement.textContent=e;const t=document.documentElement.style;t.fontFamily="consolas, monospace",t.whiteSpace="pre-wrap",t.padding="1rem"}function Bi(e){history.replaceState(null,"",e+"?"),location.replace(e)}let Oi,Fi=!0;class $i extends HTMLElement{connectedCallback(){var e;const t=this.parentNode;null===(e=t.parentNode)||void 0===e||e.removeChild(t),t.childNodes.forEach((e=>{if(e instanceof HTMLTemplateElement){const t=e.getAttribute("blazor-component-id");if(t)"true"!==e.getAttribute("enhanced-nav")&&ki||function(e,t){const n=function(e){const t=`bl:${e}`,n=document.createNodeIterator(document,NodeFilter.SHOW_COMMENT);let o=null;for(;(o=n.nextNode())&&o.textContent!==t;);if(!o)return null;const r=`/bl:${e}`;let i=null;for(;(i=n.nextNode())&&i.textContent!==r;);return i?{startMarker:o,endMarker:i}:null}(e);if(n){const{startMarker:e,endMarker:o}=n;if(Fi)fi({startExclusive:e,endExclusive:o},t);else{const n=o.parentNode,r=new Range;for(r.setStart(e,e.textContent.length),r.setEnd(o,0),r.deleteContents();t.childNodes[0];)n.insertBefore(t.childNodes[0],o)}Oi.documentUpdated()}}(t,e.content);else switch(e.getAttribute("type")){case"redirection":const t=Le(e.content.textContent),n="form-post"===e.getAttribute("from");"true"===e.getAttribute("enhanced")&&Pe(t)?Ui(t,!1,void 0,n?"post":"get"):n?t!==location.href&&location.assign(t):location.replace(t);break;case"error":Li(e.content.textContent||"Error")}}}))}}class Hi{constructor(e){var t;this._circuitInactivityTimeoutMs=e,this._rootComponentsBySsrComponentId=new Map,this._seenDescriptors=new Set,this._pendingOperationBatches={},this._nextOperationBatchId=1,this._nextSsrComponentId=1,this._didWebAssemblyFailToLoadQuickly=!1,this._isComponentRefreshPending=!1,this.initialComponents=[],t=()=>{this.rootComponentsMayRequireRefresh()},E.push(t)}onAfterRenderBatch(e){e===Bn.Server&&this.circuitMayHaveNoRootComponents()}onDocumentUpdated(){this.rootComponentsMayRequireRefresh()}onEnhancedNavigationCompleted(){this.rootComponentsMayRequireRefresh()}registerComponent(e){if(this._seenDescriptors.has(e))return;"auto"!==e.type&&"webassembly"!==e.type||this.startLoadingWebAssemblyIfNotStarted();const t=this._nextSsrComponentId++;this._seenDescriptors.add(e),this._rootComponentsBySsrComponentId.set(t,{descriptor:e,ssrComponentId:t})}unregisterComponent(e){this._seenDescriptors.delete(e.descriptor),this._rootComponentsBySsrComponentId.delete(e.ssrComponentId),this.circuitMayHaveNoRootComponents()}async startLoadingWebAssemblyIfNotStarted(){if(void 0!==Wr)return;Vr=!0;const e=ti();setTimeout((()=>{ni()||this.onWebAssemblyFailedToLoadQuickly()}),vt._internal.loadWebAssemblyQuicklyTimeout);const t=await Xr;(function(e){if(!e.cacheBootResources)return!1;const t=Wi(e);if(!t)return!1;const n=window.localStorage.getItem(t.key);return t.value===n})(t)||this.onWebAssemblyFailedToLoadQuickly(),await e,function(e){const t=Wi(e);t&&window.localStorage.setItem(t.key,t.value)}(t),this.rootComponentsMayRequireRefresh()}onWebAssemblyFailedToLoadQuickly(){this._didWebAssemblyFailToLoadQuickly||(this._didWebAssemblyFailToLoadQuickly=!0,this.rootComponentsMayRequireRefresh())}startCircutIfNotStarted(){return void 0===Yo?tr(this):!Vo||Vo.isDisposedOrDisposing()?or():void 0}async startWebAssemblyIfNotStarted(){this.startLoadingWebAssemblyIfNotStarted(),void 0===jr&&await Zr(this)}rootComponentsMayRequireRefresh(){this._isComponentRefreshPending||(this._isComponentRefreshPending=!0,setTimeout((()=>{this._isComponentRefreshPending=!1,this.refreshRootComponents(this._rootComponentsBySsrComponentId.values())}),0))}circuitMayHaveNoRootComponents(){if(this.rendererHasExistingOrPendingComponents(Bn.Server,"server","auto"))return clearTimeout(this._circuitInactivityTimeoutId),void(this._circuitInactivityTimeoutId=void 0);void 0===this._circuitInactivityTimeoutId&&(this._circuitInactivityTimeoutId=setTimeout((()=>{this.rendererHasExistingOrPendingComponents(Bn.Server,"server","auto")||(async function(){await(null==Vo?void 0:Vo.dispose())}(),this._circuitInactivityTimeoutId=void 0)}),this._circuitInactivityTimeoutMs))}rendererHasComponents(e){const t=De(e);return void 0!==t&&t.getRootComponentCount()>0}rendererHasExistingOrPendingComponents(e,...t){if(this.rendererHasComponents(e))return!0;for(const{descriptor:{type:n},assignedRendererId:o}of this._rootComponentsBySsrComponentId.values()){if(o===e)return!0;if(void 0===o&&-1!==t.indexOf(n))return!0}return!1}refreshRootComponents(e){const t=new Map;for(const n of e){const e=this.determinePendingOperation(n);if(!e)continue;const o=n.assignedRendererId;if(!o)throw new Error("Descriptors must be assigned a renderer ID before getting used as root components");let r=t.get(o);r||(r=[],t.set(o,r)),r.push(e)}for(const[e,n]of t){const t={batchId:this._nextOperationBatchId++,operations:n};this._pendingOperationBatches[t.batchId]=t;const o=JSON.stringify(t);e===Bn.Server?rr(o):this.updateWebAssemblyRootComponents(o)}}updateWebAssemblyRootComponents(e){Kr?(Gr(e),Kr=!1):function(e){if(!jr)throw new Error("Blazor WebAssembly has not started.");if(!vt._internal.updateRootComponents)throw new Error("Blazor WebAssembly has not initialized.");Jr?vt._internal.updateRootComponents(e):async function(e){if(await jr,!vt._internal.updateRootComponents)throw new Error("Blazor WebAssembly has not initialized.");vt._internal.updateRootComponents(e)}(e)}(e)}resolveRendererIdForDescriptor(e){switch("auto"===e.type?this.getAutoRenderMode():e.type){case"server":return this.startCircutIfNotStarted(),Bn.Server;case"webassembly":return this.startWebAssemblyIfNotStarted(),Bn.WebAssembly;case null:return null}}getAutoRenderMode(){return this.rendererHasExistingOrPendingComponents(Bn.WebAssembly,"webassembly")?"webassembly":this.rendererHasExistingOrPendingComponents(Bn.Server,"server")?"server":ni()?"webassembly":this._didWebAssemblyFailToLoadQuickly?"server":null}determinePendingOperation(e){if(t=e.descriptor,document.contains(t.start)){if(void 0===e.assignedRendererId){if(Ri||"loading"===document.readyState)return null;const t=this.resolveRendererIdForDescriptor(e.descriptor);return null===t?null:T(t)?(be(e.descriptor.start,!0),e.assignedRendererId=t,e.uniqueIdAtLastUpdate=e.descriptor.uniqueId,{type:"add",ssrComponentId:e.ssrComponentId,marker:Ut(e.descriptor)}):null}return T(e.assignedRendererId)?e.uniqueIdAtLastUpdate===e.descriptor.uniqueId?null:(e.uniqueIdAtLastUpdate=e.descriptor.uniqueId,{type:"update",ssrComponentId:e.ssrComponentId,marker:Ut(e.descriptor)}):null}return e.hasPendingRemoveOperation?null:void 0===e.assignedRendererId?(this.unregisterComponent(e),null):T(e.assignedRendererId)?(be(e.descriptor.start,!1),e.hasPendingRemoveOperation=!0,{type:"remove",ssrComponentId:e.ssrComponentId}):null;var t}resolveRootComponent(e){const t=this._rootComponentsBySsrComponentId.get(e);if(!t)throw new Error(`Could not resolve a root component with SSR component ID '${e}'.`);return t.descriptor}onAfterUpdateRootComponents(e){const t=this._pendingOperationBatches[e];delete this._pendingOperationBatches[e];for(const e of t.operations)switch(e.type){case"remove":{const t=this._rootComponentsBySsrComponentId.get(e.ssrComponentId);t&&this.unregisterComponent(t);break}}}}function Wi(e){var t;const n=null===(t=e.resources)||void 0===t?void 0:t.hash,o=e.mainAssemblyName;return n&&o?{key:`blazor-resource-hash:${o}`,value:n}:null}class ji{constructor(){this._eventListeners=new Map}static create(e){const t=new ji;return e.addEventListener=t.addEventListener.bind(t),e.removeEventListener=t.removeEventListener.bind(t),t}addEventListener(e,t){let n=this._eventListeners.get(e);n||(n=new Set,this._eventListeners.set(e,n)),n.add(t)}removeEventListener(e,t){var n;null===(n=this._eventListeners.get(e))||void 0===n||n.delete(t)}dispatchEvent(e,t){const n=this._eventListeners.get(e);if(!n)return;const o={...t,type:e};for(const e of n)e(o)}}let zi,qi=!1;function Ji(e){var t,n,o,r;if(qi)throw new Error("Blazor has already started.");qi=!0,null!==(t=(e=e||{}).logLevel)&&void 0!==t||(e.logLevel=yt.Error),vt._internal.loadWebAssemblyQuicklyTimeout=3e3,vt._internal.isBlazorWeb=!0,vt._internal.hotReloadApplied=()=>{Me()&&Ue(location.href,!0)},zi=new Hi(null!==(o=null===(n=null==e?void 0:e.ssr)||void 0===n?void 0:n.circuitInactivityTimeoutMs)&&void 0!==o?o:2e3);const i=ji.create(vt),s={documentUpdated:()=>{zi.onDocumentUpdated(),i.dispatchEvent("enhancedload",{})},enhancedNavigationCompleted(){zi.onEnhancedNavigationCompleted()}};return pi=zi,function(e,t){Oi=t,(null==e?void 0:e.disableDomPreservation)&&(Fi=!1),customElements.define("blazor-ssr-end",$i)}(null==e?void 0:e.ssr,s),(null===(r=null==e?void 0:e.ssr)||void 0===r?void 0:r.disableDomPreservation)||Di(s),"loading"===document.readyState?document.addEventListener("DOMContentLoaded",Ki.bind(null,e)):Ki(e),Promise.resolve()}function Ki(e){const t=Fo((null==e?void 0:e.circuit)||{});e.circuit=t;const n=async function(e,t){var n;const o=kt(document,Et,"initializers");if(!o)return new qo(!1,t);const r=null!==(n=JSON.parse(atob(o)))&&void 0!==n?n:[],i=new qo(!1,t);return await i.importInitializersAsync(r,[e]),i}(e,new bt(t.logLevel));er(Vi(n,t)),function(e){if($r)throw new Error("WebAssembly options have already been configured.");!async function(e){const t=await e;$r=t,Qr()}(e)}(Vi(n,(null==e?void 0:e.webAssembly)||{})),function(e){const t=bi(document);for(const e of t)null==pi||pi.registerComponent(e)}(),zi.onDocumentUpdated(),async function(e){const t=await e;await t.invokeAfterStartedCallbacks(vt)}(n)}async function Vi(e,t){return await e,t}vt.start=Ji,window.DotNet=e,document&&document.currentScript&&"false"!==document.currentScript.getAttribute("autostart")&&Ji()})()})(); \ No newline at end of file +(()=>{var e={778:()=>{},77:()=>{},203:()=>{},200:()=>{},628:()=>{},321:()=>{}},t={};function n(o){var r=t[o];if(void 0!==r)return r.exports;var i=t[o]={exports:{}};return e[o](i,i.exports,n),i.exports}n.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),(()=>{"use strict";var e,t,o;!function(e){const t=[],n="__jsObjectId",o="__dotNetObject",r="__byte[]",i="__dotNetStream",s="__jsStreamReferenceLength";let a,c;class l{constructor(e){this._jsObject=e,this._cachedFunctions=new Map}findFunction(e){const t=this._cachedFunctions.get(e);if(t)return t;let n,o=this._jsObject;if(e.split(".").forEach((t=>{if(!(t in o))throw new Error(`Could not find '${e}' ('${t}' was undefined).`);n=o,o=o[t]})),o instanceof Function)return o=o.bind(n),this._cachedFunctions.set(e,o),o;throw new Error(`The value '${e}' is not a function.`)}getWrappedObject(){return this._jsObject}}const h={0:new l(window)};h[0]._cachedFunctions.set("import",(e=>("string"==typeof e&&e.startsWith("./")&&(e=new URL(e.substr(2),document.baseURI).toString()),import(e))));let d,u=1;function p(e){t.push(e)}function f(e){if(e&&"object"==typeof e){h[u]=new l(e);const t={[n]:u};return u++,t}throw new Error(`Cannot create a JSObjectReference from the value '${e}'.`)}function g(e){let t=-1;if(e instanceof ArrayBuffer&&(e=new Uint8Array(e)),e instanceof Blob)t=e.size;else{if(!(e.buffer instanceof ArrayBuffer))throw new Error("Supplied value is not a typed array or blob.");if(void 0===e.byteLength)throw new Error(`Cannot create a JSStreamReference from the value '${e}' as it doesn't have a byteLength.`);t=e.byteLength}const o={[s]:t};try{const t=f(e);o[n]=t[n]}catch(t){throw new Error(`Cannot create a JSStreamReference from the value '${e}'.`)}return o}function m(e,n){c=e;const o=n?JSON.parse(n,((e,n)=>t.reduce(((t,n)=>n(e,t)),n))):null;return c=void 0,o}function v(){if(void 0===a)throw new Error("No call dispatcher has been set.");if(null===a)throw new Error("There are multiple .NET runtimes present, so a default dispatcher could not be resolved. Use DotNetObject to invoke .NET instance methods.");return a}e.attachDispatcher=function(e){const t=new y(e);return void 0===a?a=t:a&&(a=null),t},e.attachReviver=p,e.invokeMethod=function(e,t,...n){return v().invokeDotNetStaticMethod(e,t,...n)},e.invokeMethodAsync=function(e,t,...n){return v().invokeDotNetStaticMethodAsync(e,t,...n)},e.createJSObjectReference=f,e.createJSStreamReference=g,e.disposeJSObjectReference=function(e){const t=e&&e[n];"number"==typeof t&&_(t)},function(e){e[e.Default=0]="Default",e[e.JSObjectReference=1]="JSObjectReference",e[e.JSStreamReference=2]="JSStreamReference",e[e.JSVoidResult=3]="JSVoidResult"}(d=e.JSCallResultType||(e.JSCallResultType={}));class y{constructor(e){this._dotNetCallDispatcher=e,this._byteArraysToBeRevived=new Map,this._pendingDotNetToJSStreams=new Map,this._pendingAsyncCalls={},this._nextAsyncCallId=1}getDotNetCallDispatcher(){return this._dotNetCallDispatcher}invokeJSFromDotNet(e,t,n,o){const r=m(this,t),i=I(b(e,o)(...r||[]),n);return null==i?null:T(this,i)}beginInvokeJSFromDotNet(e,t,n,o,r){const i=new Promise((e=>{const o=m(this,n);e(b(t,r)(...o||[]))}));e&&i.then((t=>T(this,[e,!0,I(t,o)]))).then((t=>this._dotNetCallDispatcher.endInvokeJSFromDotNet(e,!0,t)),(t=>this._dotNetCallDispatcher.endInvokeJSFromDotNet(e,!1,JSON.stringify([e,!1,w(t)]))))}endInvokeDotNetFromJS(e,t,n){const o=t?m(this,n):new Error(n);this.completePendingCall(parseInt(e,10),t,o)}invokeDotNetStaticMethod(e,t,...n){return this.invokeDotNetMethod(e,t,null,n)}invokeDotNetStaticMethodAsync(e,t,...n){return this.invokeDotNetMethodAsync(e,t,null,n)}invokeDotNetMethod(e,t,n,o){if(this._dotNetCallDispatcher.invokeDotNetFromJS){const r=T(this,o),i=this._dotNetCallDispatcher.invokeDotNetFromJS(e,t,n,r);return i?m(this,i):null}throw new Error("The current dispatcher does not support synchronous calls from JS to .NET. Use invokeDotNetMethodAsync instead.")}invokeDotNetMethodAsync(e,t,n,o){if(e&&n)throw new Error(`For instance method calls, assemblyName should be null. Received '${e}'.`);const r=this._nextAsyncCallId++,i=new Promise(((e,t)=>{this._pendingAsyncCalls[r]={resolve:e,reject:t}}));try{const i=T(this,o);this._dotNetCallDispatcher.beginInvokeDotNetFromJS(r,e,t,n,i)}catch(e){this.completePendingCall(r,!1,e)}return i}receiveByteArray(e,t){this._byteArraysToBeRevived.set(e,t)}processByteArray(e){const t=this._byteArraysToBeRevived.get(e);return t?(this._byteArraysToBeRevived.delete(e),t):null}supplyDotNetStream(e,t){if(this._pendingDotNetToJSStreams.has(e)){const n=this._pendingDotNetToJSStreams.get(e);this._pendingDotNetToJSStreams.delete(e),n.resolve(t)}else{const n=new E;n.resolve(t),this._pendingDotNetToJSStreams.set(e,n)}}getDotNetStreamPromise(e){let t;if(this._pendingDotNetToJSStreams.has(e))t=this._pendingDotNetToJSStreams.get(e).streamPromise,this._pendingDotNetToJSStreams.delete(e);else{const n=new E;this._pendingDotNetToJSStreams.set(e,n),t=n.streamPromise}return t}completePendingCall(e,t,n){if(!this._pendingAsyncCalls.hasOwnProperty(e))throw new Error(`There is no pending async call with ID ${e}.`);const o=this._pendingAsyncCalls[e];delete this._pendingAsyncCalls[e],t?o.resolve(n):o.reject(n)}}function w(e){return e instanceof Error?`${e.message}\n${e.stack}`:e?e.toString():"null"}function b(e,t){const n=h[t];if(n)return n.findFunction(e);throw new Error(`JS object instance with ID ${t} does not exist (has it been disposed?).`)}function _(e){delete h[e]}e.findJSFunction=b,e.disposeJSObjectReferenceById=_;class S{constructor(e,t){this._id=e,this._callDispatcher=t}invokeMethod(e,...t){return this._callDispatcher.invokeDotNetMethod(null,e,this._id,t)}invokeMethodAsync(e,...t){return this._callDispatcher.invokeDotNetMethodAsync(null,e,this._id,t)}dispose(){this._callDispatcher.invokeDotNetMethodAsync(null,"__Dispose",this._id,null).catch((e=>console.error(e)))}serializeAsArg(){return{[o]:this._id}}}e.DotNetObject=S,p((function(e,t){if(t&&"object"==typeof t){if(t.hasOwnProperty(o))return new S(t[o],c);if(t.hasOwnProperty(n)){const e=t[n],o=h[e];if(o)return o.getWrappedObject();throw new Error(`JS object instance with Id '${e}' does not exist. It may have been disposed.`)}if(t.hasOwnProperty(r)){const e=t[r],n=c.processByteArray(e);if(void 0===n)throw new Error(`Byte array index '${e}' does not exist.`);return n}if(t.hasOwnProperty(i)){const e=t[i],n=c.getDotNetStreamPromise(e);return new C(n)}}return t}));class C{constructor(e){this._streamPromise=e}stream(){return this._streamPromise}async arrayBuffer(){return new Response(await this.stream()).arrayBuffer()}}class E{constructor(){this.streamPromise=new Promise(((e,t)=>{this.resolve=e,this.reject=t}))}}function I(e,t){switch(t){case d.Default:return e;case d.JSObjectReference:return f(e);case d.JSStreamReference:return g(e);case d.JSVoidResult:return null;default:throw new Error(`Invalid JS call result type '${t}'.`)}}let k=0;function T(e,t){k=0,c=e;const n=JSON.stringify(t,R);return c=void 0,n}function R(e,t){if(t instanceof S)return t.serializeAsArg();if(t instanceof Uint8Array){c.getDotNetCallDispatcher().sendByteArray(k,t);const e={[r]:k};return k++,e}return t}}(e||(e={})),function(e){e[e.prependFrame=1]="prependFrame",e[e.removeFrame=2]="removeFrame",e[e.setAttribute=3]="setAttribute",e[e.removeAttribute=4]="removeAttribute",e[e.updateText=5]="updateText",e[e.stepIn=6]="stepIn",e[e.stepOut=7]="stepOut",e[e.updateMarkup=8]="updateMarkup",e[e.permutationListEntry=9]="permutationListEntry",e[e.permutationListEnd=10]="permutationListEnd"}(t||(t={})),function(e){e[e.element=1]="element",e[e.text=2]="text",e[e.attribute=3]="attribute",e[e.component=4]="component",e[e.region=5]="region",e[e.elementReferenceCapture=6]="elementReferenceCapture",e[e.markup=8]="markup",e[e.namedEvent=10]="namedEvent"}(o||(o={}));class r{constructor(e,t){this.componentId=e,this.fieldValue=t}static fromEvent(e,t){const n=t.target;if(n instanceof Element){const t=function(e){return e instanceof HTMLInputElement?e.type&&"checkbox"===e.type.toLowerCase()?{value:e.checked}:{value:e.value}:e instanceof HTMLSelectElement||e instanceof HTMLTextAreaElement?{value:e.value}:null}(n);if(t)return new r(e,t.value)}return null}}const i=new Map,s=new Map,a=[];function c(e){return i.get(e)}function l(e){const t=i.get(e);return(null==t?void 0:t.browserEventName)||e}function h(e,t){e.forEach((e=>i.set(e,t)))}function d(e){const t=[];for(let n=0;ne.selected)).map((e=>e.value))}}{const e=function(e){return!!e&&"INPUT"===e.tagName&&"checkbox"===e.getAttribute("type")}(t);return{value:e?!!t.checked:t.value}}}}),h(["copy","cut","paste"],{createEventArgs:e=>({type:e.type})}),h(["drag","dragend","dragenter","dragleave","dragover","dragstart","drop"],{createEventArgs:e=>{return{...u(t=e),dataTransfer:t.dataTransfer?{dropEffect:t.dataTransfer.dropEffect,effectAllowed:t.dataTransfer.effectAllowed,files:Array.from(t.dataTransfer.files).map((e=>e.name)),items:Array.from(t.dataTransfer.items).map((e=>({kind:e.kind,type:e.type}))),types:t.dataTransfer.types}:null};var t}}),h(["focus","blur","focusin","focusout"],{createEventArgs:e=>({type:e.type})}),h(["keydown","keyup","keypress"],{createEventArgs:e=>{return{key:(t=e).key,code:t.code,location:t.location,repeat:t.repeat,ctrlKey:t.ctrlKey,shiftKey:t.shiftKey,altKey:t.altKey,metaKey:t.metaKey,type:t.type};var t}}),h(["contextmenu","click","mouseover","mouseout","mousemove","mousedown","mouseup","mouseleave","mouseenter","dblclick"],{createEventArgs:e=>u(e)}),h(["error"],{createEventArgs:e=>{return{message:(t=e).message,filename:t.filename,lineno:t.lineno,colno:t.colno,type:t.type};var t}}),h(["loadstart","timeout","abort","load","loadend","progress"],{createEventArgs:e=>{return{lengthComputable:(t=e).lengthComputable,loaded:t.loaded,total:t.total,type:t.type};var t}}),h(["touchcancel","touchend","touchmove","touchenter","touchleave","touchstart"],{createEventArgs:e=>{return{detail:(t=e).detail,touches:d(t.touches),targetTouches:d(t.targetTouches),changedTouches:d(t.changedTouches),ctrlKey:t.ctrlKey,shiftKey:t.shiftKey,altKey:t.altKey,metaKey:t.metaKey,type:t.type};var t}}),h(["gotpointercapture","lostpointercapture","pointercancel","pointerdown","pointerenter","pointerleave","pointermove","pointerout","pointerover","pointerup"],{createEventArgs:e=>{return{...u(t=e),pointerId:t.pointerId,width:t.width,height:t.height,pressure:t.pressure,tiltX:t.tiltX,tiltY:t.tiltY,pointerType:t.pointerType,isPrimary:t.isPrimary};var t}}),h(["wheel","mousewheel"],{createEventArgs:e=>{return{...u(t=e),deltaX:t.deltaX,deltaY:t.deltaY,deltaZ:t.deltaZ,deltaMode:t.deltaMode};var t}}),h(["cancel","close","toggle"],{createEventArgs:()=>({})});const p=["date","datetime-local","month","time","week"],f=new Map;let g,m,v=0;const y={async add(e,t,n){if(!n)throw new Error("initialParameters must be an object, even if empty.");const o="__bl-dynamic-root:"+(++v).toString();f.set(o,e);const r=await S().invokeMethodAsync("AddRootComponent",t,o),i=new _(r,m[t]);return await i.setParameters(n),i}};function w(e){const t=f.get(e);if(t)return f.delete(e),t}class b{invoke(e){return this._callback(e)}setCallback(t){this._selfJSObjectReference||(this._selfJSObjectReference=e.createJSObjectReference(this)),this._callback=t}getJSObjectReference(){return this._selfJSObjectReference}dispose(){this._selfJSObjectReference&&e.disposeJSObjectReference(this._selfJSObjectReference)}}class _{constructor(e,t){this._jsEventCallbackWrappers=new Map,this._componentId=e;for(const e of t)"eventcallback"===e.type&&this._jsEventCallbackWrappers.set(e.name.toLowerCase(),new b)}setParameters(e){const t={},n=Object.entries(e||{}),o=n.length;for(const[e,o]of n){const n=this._jsEventCallbackWrappers.get(e.toLowerCase());n&&o?(n.setCallback(o),t[e]=n.getJSObjectReference()):t[e]=o}return S().invokeMethodAsync("SetRootComponentParameters",this._componentId,o,t)}async dispose(){if(null!==this._componentId){await S().invokeMethodAsync("RemoveRootComponent",this._componentId),this._componentId=null;for(const e of this._jsEventCallbackWrappers.values())e.dispose()}}}function S(){if(!g)throw new Error("Dynamic root components have not been enabled in this application.");return g}const C=new Map,E=[],I=new Map;function k(t,n,o,r){var i,s;if(C.has(t))throw new Error(`Interop methods are already registered for renderer ${t}`);C.set(t,n),o&&r&&Object.keys(o).length>0&&function(t,n,o){if(g)throw new Error("Dynamic root components have already been enabled.");g=t,m=n;for(const[t,r]of Object.entries(o)){const o=e.findJSFunction(t,0);for(const e of r)o(e,n[e])}}(D(t),o,r),null===(s=null===(i=I.get(t))||void 0===i?void 0:i[0])||void 0===s||s.call(i),function(e){for(const t of E)t(e)}(t)}function T(e){return C.has(e)}function R(e,t,n){return A(e,t.eventHandlerId,(()=>D(e).invokeMethodAsync("DispatchEventAsync",t,n)))}function D(e){const t=C.get(e);if(!t)throw new Error(`No interop methods are registered for renderer ${e}`);return t}let A=(e,t,n)=>n();const x=B(["abort","blur","cancel","canplay","canplaythrough","change","close","cuechange","durationchange","emptied","ended","error","focus","load","loadeddata","loadedmetadata","loadend","loadstart","mouseenter","mouseleave","pointerenter","pointerleave","pause","play","playing","progress","ratechange","reset","scroll","seeked","seeking","stalled","submit","suspend","timeupdate","toggle","unload","volumechange","waiting","DOMNodeInsertedIntoDocument","DOMNodeRemovedFromDocument"]),N={submit:!0},P=B(["click","dblclick","mousedown","mousemove","mouseup"]);class M{constructor(e){this.browserRendererId=e,this.afterClickCallbacks=[];const t=++M.nextEventDelegatorId;this.eventsCollectionKey=`_blazorEvents_${t}`,this.eventInfoStore=new U(this.onGlobalEvent.bind(this))}setListener(e,t,n,o){const r=this.getEventHandlerInfosForElement(e,!0),i=r.getHandler(t);if(i)this.eventInfoStore.update(i.eventHandlerId,n);else{const i={element:e,eventName:t,eventHandlerId:n,renderingComponentId:o};this.eventInfoStore.add(i),r.setHandler(t,i)}}getHandler(e){return this.eventInfoStore.get(e)}removeListener(e){const t=this.eventInfoStore.remove(e);if(t){const e=t.element,n=this.getEventHandlerInfosForElement(e,!1);n&&n.removeHandler(t.eventName)}}notifyAfterClick(e){this.afterClickCallbacks.push(e),this.eventInfoStore.addGlobalListener("click")}setStopPropagation(e,t,n){this.getEventHandlerInfosForElement(e,!0).stopPropagation(t,n)}setPreventDefault(e,t,n){this.getEventHandlerInfosForElement(e,!0).preventDefault(t,n)}onGlobalEvent(e){if(!(e.target instanceof Element))return;this.dispatchGlobalEventToAllElements(e.type,e);const t=(n=e.type,s.get(n));var n;t&&t.forEach((t=>this.dispatchGlobalEventToAllElements(t,e))),"click"===e.type&&this.afterClickCallbacks.forEach((t=>t(e)))}dispatchGlobalEventToAllElements(e,t){const n=t.composedPath();let o=n.shift(),i=null,s=!1;const a=Object.prototype.hasOwnProperty.call(x,e);let l=!1;for(;o;){const u=o,p=this.getEventHandlerInfosForElement(u,!1);if(p){const n=p.getHandler(e);if(n&&(h=u,d=t.type,!((h instanceof HTMLButtonElement||h instanceof HTMLInputElement||h instanceof HTMLTextAreaElement||h instanceof HTMLSelectElement)&&Object.prototype.hasOwnProperty.call(P,d)&&h.disabled))){if(!s){const n=c(e);i=(null==n?void 0:n.createEventArgs)?n.createEventArgs(t):{},s=!0}Object.prototype.hasOwnProperty.call(N,t.type)&&t.preventDefault(),R(this.browserRendererId,{eventHandlerId:n.eventHandlerId,eventName:e,eventFieldInfo:r.fromEvent(n.renderingComponentId,t)},i)}p.stopPropagation(e)&&(l=!0),p.preventDefault(e)&&t.preventDefault()}o=a||l?void 0:n.shift()}var h,d}getEventHandlerInfosForElement(e,t){return Object.prototype.hasOwnProperty.call(e,this.eventsCollectionKey)?e[this.eventsCollectionKey]:t?e[this.eventsCollectionKey]=new L:null}}M.nextEventDelegatorId=0;class U{constructor(e){this.globalListener=e,this.infosByEventHandlerId={},this.countByEventName={},a.push(this.handleEventNameAliasAdded.bind(this))}add(e){if(this.infosByEventHandlerId[e.eventHandlerId])throw new Error(`Event ${e.eventHandlerId} is already tracked`);this.infosByEventHandlerId[e.eventHandlerId]=e,this.addGlobalListener(e.eventName)}get(e){return this.infosByEventHandlerId[e]}addGlobalListener(e){if(e=l(e),Object.prototype.hasOwnProperty.call(this.countByEventName,e))this.countByEventName[e]++;else{this.countByEventName[e]=1;const t=Object.prototype.hasOwnProperty.call(x,e);document.addEventListener(e,this.globalListener,t)}}update(e,t){if(Object.prototype.hasOwnProperty.call(this.infosByEventHandlerId,t))throw new Error(`Event ${t} is already tracked`);const n=this.infosByEventHandlerId[e];delete this.infosByEventHandlerId[e],n.eventHandlerId=t,this.infosByEventHandlerId[t]=n}remove(e){const t=this.infosByEventHandlerId[e];if(t){delete this.infosByEventHandlerId[e];const n=l(t.eventName);0==--this.countByEventName[n]&&(delete this.countByEventName[n],document.removeEventListener(n,this.globalListener))}return t}handleEventNameAliasAdded(e,t){if(Object.prototype.hasOwnProperty.call(this.countByEventName,e)){const n=this.countByEventName[e];delete this.countByEventName[e],document.removeEventListener(e,this.globalListener),this.addGlobalListener(t),this.countByEventName[t]+=n-1}}}class L{constructor(){this.handlers={},this.preventDefaultFlags=null,this.stopPropagationFlags=null}getHandler(e){return Object.prototype.hasOwnProperty.call(this.handlers,e)?this.handlers[e]:null}setHandler(e,t){this.handlers[e]=t}removeHandler(e){delete this.handlers[e]}preventDefault(e,t){return void 0!==t&&(this.preventDefaultFlags=this.preventDefaultFlags||{},this.preventDefaultFlags[e]=t),!!this.preventDefaultFlags&&this.preventDefaultFlags[e]}stopPropagation(e,t){return void 0!==t&&(this.stopPropagationFlags=this.stopPropagationFlags||{},this.stopPropagationFlags[e]=t),!!this.stopPropagationFlags&&this.stopPropagationFlags[e]}}function B(e){const t={};return e.forEach((e=>{t[e]=!0})),t}const O=Symbol(),F=Symbol(),$=Symbol();function H(e){const{start:t,end:n}=e,o=t[$];if(o){if(o!==e)throw new Error("The start component comment was already associated with another component descriptor.");return t}const r=t.parentNode;if(!r)throw new Error(`Comment not connected to the DOM ${t.textContent}`);const i=W(r,!0),s=Y(i);t[F]=i,t[$]=e;const a=W(t);if(n){const e=Y(a),o=Array.prototype.indexOf.call(s,a)+1;let r=null;for(;r!==n;){const n=s.splice(o,1)[0];if(!n)throw new Error("Could not find the end component comment in the parent logical node list");n[F]=t,e.push(n),r=n}}return a}function W(e,t){if(O in e)return e;const n=[];if(e.childNodes.length>0){if(!t)throw new Error("New logical elements must start empty, or allowExistingContents must be true");e.childNodes.forEach((t=>{const o=W(t,!0);o[F]=e,n.push(o)}))}return e[O]=n,e}function j(e){const t=Y(e);for(;t.length;)J(e,0)}function z(e,t){const n=document.createComment("!");return q(n,e,t),n}function q(e,t,n){const o=e;let r=e;if(e instanceof Comment){const t=Y(o);if((null==t?void 0:t.length)>0){const t=oe(o),n=new Range;n.setStartBefore(e),n.setEndAfter(t),r=n.extractContents()}}const i=K(o);if(i){const e=Y(i),t=Array.prototype.indexOf.call(e,o);e.splice(t,1),delete o[F]}const s=Y(t);if(n0;)J(n,0)}const o=n;o.parentNode.removeChild(o)}function K(e){return e[F]||null}function V(e,t){return Y(e)[t]}function X(e){return e[$]||null}function G(e){const t=te(e);return"http://www.w3.org/2000/svg"===t.namespaceURI&&"foreignObject"!==t.tagName}function Y(e){return e[O]}function Q(e){const t=Y(K(e));return t[Array.prototype.indexOf.call(t,e)+1]||null}function Z(e){return O in e}function ee(e,t){const n=Y(e);t.forEach((e=>{e.moveRangeStart=n[e.fromSiblingIndex],e.moveRangeEnd=oe(e.moveRangeStart)})),t.forEach((t=>{const o=document.createComment("marker");t.moveToBeforeMarker=o;const r=n[t.toSiblingIndex+1];r?r.parentNode.insertBefore(o,r):ne(o,e)})),t.forEach((e=>{const t=e.moveToBeforeMarker,n=t.parentNode,o=e.moveRangeStart,r=e.moveRangeEnd;let i=o;for(;i;){const e=i.nextSibling;if(n.insertBefore(i,t),i===r)break;i=e}n.removeChild(t)})),t.forEach((e=>{n[e.toSiblingIndex]=e.moveRangeStart}))}function te(e){if(e instanceof Element||e instanceof DocumentFragment)return e;if(e instanceof Comment)return e.parentNode;throw new Error("Not a valid logical element")}function ne(e,t){if(t instanceof Element||t instanceof DocumentFragment)t.appendChild(e);else{if(!(t instanceof Comment))throw new Error(`Cannot append node because the parent is not a valid logical element. Parent: ${t}`);{const n=Q(t);n?n.parentNode.insertBefore(e,n):ne(e,K(t))}}}function oe(e){if(e instanceof Element||e instanceof DocumentFragment)return e;const t=Q(e);if(t)return t.previousSibling;{const t=K(e);return t instanceof Element||t instanceof DocumentFragment?t.lastChild:oe(t)}}function re(e){return`_bl_${e}`}const ie="__internalId";e.attachReviver(((e,t)=>t&&"object"==typeof t&&Object.prototype.hasOwnProperty.call(t,ie)&&"string"==typeof t[ie]?function(e){const t=`[${re(e)}]`;return document.querySelector(t)}(t[ie]):t));const se="_blazorDeferredValue";function ae(e){e instanceof HTMLOptionElement?de(e):se in e&&he(e,e[se])}function ce(e){return"select-multiple"===e.type}function le(e,t){e.value=t||""}function he(e,t){e instanceof HTMLSelectElement?ce(e)?function(e,t){t||(t=[]);for(let n=0;n{Oe()&&Ne(e,(e=>{Xe(e,!0,!1)}))}))}getRootComponentCount(){return this.rootComponentIds.size}attachRootComponentToLogicalElement(e,t,n){if(we(t))throw new Error(`Root component '${e}' could not be attached because its target element is already associated with a root component`);n&&(t=z(t,Y(t).length)),ye(t,!0),this.attachComponentToElement(e,t),this.rootComponentIds.add(e),fe.add(t)}updateComponent(e,t,n,o){var r;const i=this.childComponentLocations[t];if(!i)throw new Error(`No element is currently associated with component ${t}`);fe.delete(i)&&(j(i),i instanceof Comment&&(i.textContent="!"));const s=null===(r=te(i))||void 0===r?void 0:r.getRootNode(),a=s&&s.activeElement;this.applyEdits(e,t,i,0,n,o),a instanceof HTMLElement&&s&&s.activeElement!==a&&a.focus()}disposeComponent(e){if(this.rootComponentIds.delete(e)){const t=this.childComponentLocations[e];ye(t,!1),!0===t[me]?fe.add(t):j(t)}delete this.childComponentLocations[e]}disposeEventHandler(e){this.eventDelegator.removeListener(e)}attachComponentToElement(e,t){this.childComponentLocations[e]=t}applyEdits(e,n,o,r,i,s){let a,c=0,l=r;const h=e.arrayBuilderSegmentReader,d=e.editReader,u=e.frameReader,p=h.values(i),f=h.offset(i),g=f+h.count(i);for(let i=f;i{const t=document.createElement("script");t.textContent=e.textContent,e.getAttributeNames().forEach((n=>{t.setAttribute(n,e.getAttribute(n))})),e.parentNode.replaceChild(t,e)})),ue.content));var s;let a=0;for(;i.firstChild;)q(i.firstChild,r,a++)}applyAttribute(e,t,n,o){const r=e.frameReader,i=r.attributeName(o),s=r.attributeEventHandlerId(o);if(s){const e=Se(i);return void this.eventDelegator.setListener(n,e,s,t)}const a=r.attributeValue(o);this.setOrRemoveAttributeOrProperty(n,i,a)}insertFrameRange(e,t,n,o,r,i,s){const a=o;for(let a=i;a{et(t,e)})},enableNavigationInterception:function(e){if(void 0!==Ee&&Ee!==e)throw new Error("Only one interactive runtime may enable navigation interception at a time.");Ee=e},setHasLocationChangingListeners:function(e,t){const n=je.get(e);if(!n)throw new Error(`Renderer with ID '${e}' is not listening for navigation events`);n.hasLocationChangingEventListeners=t},endLocationChanging:function(e,t){qe&&e===We&&(qe(t),qe=null)},navigateTo:function(e,t){Ve(e,t,!0)},refresh:function(e){!e&&Me()?Ue(location.href,!0):location.reload()},getBaseURI:()=>document.baseURI,getLocationHref:()=>location.href,scrollToElement:Ke};function Ke(e){const t=document.getElementById(e);return!!t&&(t.scrollIntoView(),!0)}function Ve(e,t,n=!1){const o=Le(e),r=ot();if(t.forceLoad||!Pe(o)||"serverside-fullpageload"===r)!function(e,t){if(location.href===e){const t=e+"?";history.replaceState(null,"",t),location.replace(e)}else t?location.replace(e):location.href=e}(e,t.replaceHistoryEntry);else if("clientside-router"===r)Xe(o,!1,t.replaceHistoryEntry,t.historyEntryState,n);else{if("serverside-enhanced"!==r)throw new Error(`Unsupported page load mechanism: ${r}`);Ue(o,t.replaceHistoryEntry)}}async function Xe(e,t,n,o=void 0,r=!1){if(Qe(),function(e){const t=e.indexOf("#");return t>-1&&location.href.replace(location.hash,"")===e.substring(0,t)}(e))return void function(e,t,n){Ge(e,t,n);const o=e.indexOf("#");o!==e.length-1&&Ke(e.substring(o+1))}(e,n,o);const i=nt();(r||!(null==i?void 0:i.hasLocationChangingEventListeners)||await Ze(e,o,t,i))&&(Re=!0,Ge(e,n,o),await et(t))}function Ge(e,t,n=void 0){t?history.replaceState({userState:n,_index:He},"",e):(He++,history.pushState({userState:n,_index:He},"",e))}function Ye(e){return new Promise((t=>{const n=ze;ze=()=>{ze=n,t()},history.go(e)}))}function Qe(){qe&&(qe(!1),qe=null)}function Ze(e,t,n,o){return new Promise((r=>{Qe(),We++,qe=r,o.locationChanging(We,e,t,n)}))}async function et(e,t){const n=null!=t?t:location.href;await Promise.all(Array.from(je,(async([t,o])=>{var r;T(t)&&await o.locationChanged(n,null===(r=history.state)||void 0===r?void 0:r.userState,e)})))}async function tt(e){var t,n;ze&&"serverside-enhanced"!==ot()&&await ze(e),He=null!==(n=null===(t=history.state)||void 0===t?void 0:t._index)&&void 0!==n?n:0}function nt(){const e=Fe();if(void 0!==e)return je.get(e)}function ot(){return Oe()?"clientside-router":Me()?"serverside-enhanced":window.Blazor._internal.isBlazorWeb?"serverside-fullpageload":"clientside-router"}const rt={focus:function(e,t){if(e instanceof HTMLElement)e.focus({preventScroll:t});else{if(!(e instanceof SVGElement))throw new Error("Unable to focus an invalid element.");if(!e.hasAttribute("tabindex"))throw new Error("Unable to focus an SVG element that does not have a tabindex.");e.focus({preventScroll:t})}},focusBySelector:function(e,t){const n=document.querySelector(e);n&&(n.hasAttribute("tabindex")||(n.tabIndex=-1),n.focus({preventScroll:!0}))}},it={init:function(e,t,n,o=50){const r=at(t);(r||document.documentElement).style.overflowAnchor="none";const i=document.createRange();u(n.parentElement)&&(t.style.display="table-row",n.style.display="table-row");const s=new IntersectionObserver((function(o){o.forEach((o=>{var r;if(!o.isIntersecting)return;i.setStartAfter(t),i.setEndBefore(n);const s=i.getBoundingClientRect().height,a=null===(r=o.rootBounds)||void 0===r?void 0:r.height;o.target===t?e.invokeMethodAsync("OnSpacerBeforeVisible",o.intersectionRect.top-o.boundingClientRect.top,s,a):o.target===n&&n.offsetHeight>0&&e.invokeMethodAsync("OnSpacerAfterVisible",o.boundingClientRect.bottom-o.intersectionRect.bottom,s,a)}))}),{root:r,rootMargin:`${o}px`});s.observe(t),s.observe(n);const a=d(t),c=d(n),{observersByDotNetObjectId:l,id:h}=ct(e);function d(e){const t={attributes:!0},n=new MutationObserver(((n,o)=>{u(e.parentElement)&&(o.disconnect(),e.style.display="table-row",o.observe(e,t)),s.unobserve(e),s.observe(e)}));return n.observe(e,t),n}function u(e){return null!==e&&(e instanceof HTMLTableElement&&""===e.style.display||"table"===e.style.display||e instanceof HTMLTableSectionElement&&""===e.style.display||"table-row-group"===e.style.display)}l[h]={intersectionObserver:s,mutationObserverBefore:a,mutationObserverAfter:c}},dispose:function(e){const{observersByDotNetObjectId:t,id:n}=ct(e),o=t[n];o&&(o.intersectionObserver.disconnect(),o.mutationObserverBefore.disconnect(),o.mutationObserverAfter.disconnect(),e.dispose(),delete t[n])}},st=Symbol();function at(e){return e&&e!==document.body&&e!==document.documentElement?"visible"!==getComputedStyle(e).overflowY?e:at(e.parentElement):null}function ct(e){var t;const n=e._callDispatcher,o=e._id;return null!==(t=n[st])&&void 0!==t||(n[st]={}),{observersByDotNetObjectId:n[st],id:o}}const lt={getAndRemoveExistingTitle:function(){var e;const t=document.head?document.head.getElementsByTagName("title"):[];if(0===t.length)return null;let n=null;for(let o=t.length-1;o>=0;o--){const r=t[o],i=r.previousSibling;i instanceof Comment&&null!==K(i)||(null===n&&(n=r.textContent),null===(e=r.parentNode)||void 0===e||e.removeChild(r))}return n}},ht={init:function(e,t){t._blazorInputFileNextFileId=0,t.addEventListener("click",(function(){t.value=""})),t.addEventListener("change",(function(){t._blazorFilesById={};const n=Array.prototype.map.call(t.files,(function(e){const n={id:++t._blazorInputFileNextFileId,lastModified:new Date(e.lastModified).toISOString(),name:e.name,size:e.size,contentType:e.type,readPromise:void 0,arrayBuffer:void 0,blob:e};return t._blazorFilesById[n.id]=n,n}));e.invokeMethodAsync("NotifyChange",n)}))},toImageFile:async function(e,t,n,o,r){const i=dt(e,t),s=await new Promise((function(e){const t=new Image;t.onload=function(){URL.revokeObjectURL(t.src),e(t)},t.onerror=function(){t.onerror=null,URL.revokeObjectURL(t.src)},t.src=URL.createObjectURL(i.blob)})),a=await new Promise((function(e){var t;const i=Math.min(1,o/s.width),a=Math.min(1,r/s.height),c=Math.min(i,a),l=document.createElement("canvas");l.width=Math.round(s.width*c),l.height=Math.round(s.height*c),null===(t=l.getContext("2d"))||void 0===t||t.drawImage(s,0,0,l.width,l.height),l.toBlob(e,n)})),c={id:++e._blazorInputFileNextFileId,lastModified:i.lastModified,name:i.name,size:(null==a?void 0:a.size)||0,contentType:n,blob:a||i.blob};return e._blazorFilesById[c.id]=c,c},readFileData:async function(e,t){return dt(e,t).blob}};function dt(e,t){const n=e._blazorFilesById[t];if(!n)throw new Error(`There is no file with ID ${t}. The file list may have changed. See https://aka.ms/aspnet/blazor-input-file-multiple-selections.`);return n}const ut=new Set,pt={enableNavigationPrompt:function(e){0===ut.size&&window.addEventListener("beforeunload",ft),ut.add(e)},disableNavigationPrompt:function(e){ut.delete(e),0===ut.size&&window.removeEventListener("beforeunload",ft)}};function ft(e){e.preventDefault(),e.returnValue=!0}async function gt(e,t,n){return e instanceof Blob?await async function(e,t,n){const o=e.slice(t,t+n),r=await o.arrayBuffer();return new Uint8Array(r)}(e,t,n):function(e,t,n){return new Uint8Array(e.buffer,e.byteOffset+t,n)}(e,t,n)}const mt=new Map,vt={navigateTo:function(e,t,n=!1){Ve(e,t instanceof Object?t:{forceLoad:t,replaceHistoryEntry:n})},registerCustomEventType:function(e,t){if(!t)throw new Error("The options parameter is required.");if(i.has(e))throw new Error(`The event '${e}' is already registered.`);if(t.browserEventName){const n=s.get(t.browserEventName);n?n.push(e):s.set(t.browserEventName,[e]),a.forEach((n=>n(e,t.browserEventName)))}i.set(e,t)},rootComponents:y,runtime:{},_internal:{navigationManager:Je,domWrapper:rt,Virtualize:it,PageTitle:lt,InputFile:ht,NavigationLock:pt,getJSDataStreamChunk:gt,attachWebRendererInterop:k}};var yt;window.Blazor=vt,function(e){e[e.Trace=0]="Trace",e[e.Debug=1]="Debug",e[e.Information=2]="Information",e[e.Warning=3]="Warning",e[e.Error=4]="Error",e[e.Critical=5]="Critical",e[e.None=6]="None"}(yt||(yt={}));class wt{log(e,t){}}wt.instance=new wt;class bt{constructor(e){this.minLevel=e}log(e,t){if(e>=this.minLevel){const n=`[${(new Date).toISOString()}] ${yt[e]}: ${t}`;switch(e){case yt.Critical:case yt.Error:console.error(n);break;case yt.Warning:console.warn(n);break;case yt.Information:console.info(n);break;default:console.log(n)}}}}function _t(e,t){switch(t){case"webassembly":return Tt(e,"webassembly");case"server":return function(e){return Tt(e,"server").sort(((e,t)=>e.sequence-t.sequence))}(e);case"auto":return Tt(e,"auto")}}const St=/^\s*Blazor-Server-Component-State:(?[a-zA-Z0-9+/=]+)$/,Ct=/^\s*Blazor-WebAssembly-Component-State:(?[a-zA-Z0-9+/=]+)$/,Et=/^\s*Blazor-Web-Initializers:(?[a-zA-Z0-9+/=]+)$/;function It(e){return kt(e,St)}function kt(e,t,n="state"){var o;if(e.nodeType===Node.COMMENT_NODE){const r=e.textContent||"",i=t.exec(r),s=i&&i.groups&&i.groups[n];return s&&(null===(o=e.parentNode)||void 0===o||o.removeChild(e)),s}if(!e.hasChildNodes())return;const r=e.childNodes;for(let e=0;e.*)$/);function Dt(e,t){const n=e.currentElement;var o,r,i;if(n&&n.nodeType===Node.COMMENT_NODE&&n.textContent){const s=Rt.exec(n.textContent),a=s&&s.groups&&s.groups.descriptor;if(!a)return;!function(e){if(e.parentNode instanceof Document)throw new Error("Root components cannot be marked as interactive. The element must be rendered statically so that scripts are not evaluated multiple times.")}(n);try{const s=function(e){const t=JSON.parse(e),{type:n}=t;if("server"!==n&&"webassembly"!==n&&"auto"!==n)throw new Error(`Invalid component type '${n}'.`);return t}(a),c=function(e,t,n){const{prerenderId:o}=e;if(o){for(;n.next()&&n.currentElement;){const e=n.currentElement;if(e.nodeType!==Node.COMMENT_NODE)continue;if(!e.textContent)continue;const t=Rt.exec(e.textContent),r=t&&t[1];if(r)return Pt(r,o),e}throw new Error(`Could not find an end component comment for '${t}'.`)}}(s,n,e);if(t!==s.type)return;switch(s.type){case"webassembly":return r=n,i=c,Nt(o=s),{...o,uniqueId:At++,start:r,end:i};case"server":return function(e,t,n){return xt(e),{...e,uniqueId:At++,start:t,end:n}}(s,n,c);case"auto":return function(e,t,n){return xt(e),Nt(e),{...e,uniqueId:At++,start:t,end:n}}(s,n,c)}}catch(e){throw new Error(`Found malformed component comment at ${n.textContent}`)}}}let At=0;function xt(e){const{descriptor:t,sequence:n}=e;if(!t)throw new Error("descriptor must be defined when using a descriptor.");if(void 0===n)throw new Error("sequence must be defined when using a descriptor.");if(!Number.isInteger(n))throw new Error(`Error parsing the sequence '${n}' for component '${JSON.stringify(e)}'`)}function Nt(e){const{assembly:t,typeName:n}=e;if(!t)throw new Error("assembly must be defined when using a descriptor.");if(!n)throw new Error("typeName must be defined when using a descriptor.");e.parameterDefinitions=e.parameterDefinitions&&atob(e.parameterDefinitions),e.parameterValues=e.parameterValues&&atob(e.parameterValues)}function Pt(e,t){const n=JSON.parse(e);if(1!==Object.keys(n).length)throw new Error(`Invalid end of component comment: '${e}'`);const o=n.prerenderId;if(!o)throw new Error(`End of component comment must have a value for the prerendered property: '${e}'`);if(o!==t)throw new Error(`End of component comment prerendered property must match the start comment prerender id: '${t}', '${o}'`)}class Mt{constructor(e){this.childNodes=e,this.currentIndex=-1,this.length=e.length}next(){return this.currentIndex++,this.currentIndex{n+=`0x${e<16?"0":""}${e.toString(16)} `})),n.substr(0,n.length-1)}(e)}'`)):"string"==typeof e&&(n=`String data of length ${e.length}`,t&&(n+=`. Content: '${e}'`)),n}function zt(e){return e&&"undefined"!=typeof ArrayBuffer&&(e instanceof ArrayBuffer||e.constructor&&"ArrayBuffer"===e.constructor.name)}async function qt(e,t,n,o,r,i){const s={},[a,c]=Vt();s[a]=c,e.log(Ot.Trace,`(${t} transport) sending data. ${jt(r,i.logMessageContent)}.`);const l=zt(r)?"arraybuffer":"text",h=await n.post(o,{content:r,headers:{...s,...i.headers},responseType:l,timeout:i.timeout,withCredentials:i.withCredentials});e.log(Ot.Trace,`(${t} transport) request complete. Response status: ${h.statusCode}.`)}class Jt{constructor(e,t){this._subject=e,this._observer=t}dispose(){const e=this._subject.observers.indexOf(this._observer);e>-1&&this._subject.observers.splice(e,1),0===this._subject.observers.length&&this._subject.cancelCallback&&this._subject.cancelCallback().catch((e=>{}))}}class Kt{constructor(e){this._minLevel=e,this.out=console}log(e,t){if(e>=this._minLevel){const n=`[${(new Date).toISOString()}] ${Ot[e]}: ${t}`;switch(e){case Ot.Critical:case Ot.Error:this.out.error(n);break;case Ot.Warning:this.out.warn(n);break;case Ot.Information:this.out.info(n);break;default:this.out.log(n)}}}}function Vt(){let e="X-SignalR-User-Agent";return Wt.isNode&&(e="User-Agent"),[e,Xt($t,Gt(),Wt.isNode?"NodeJS":"Browser",Yt())]}function Xt(e,t,n,o){let r="Microsoft SignalR/";const i=e.split(".");return r+=`${i[0]}.${i[1]}`,r+=` (${e}; `,r+=t&&""!==t?`${t}; `:"Unknown OS; ",r+=`${n}`,r+=o?`; ${o}`:"; Unknown Runtime Version",r+=")",r}function Gt(){if(!Wt.isNode)return"";switch(process.platform){case"win32":return"Windows NT";case"darwin":return"macOS";case"linux":return"Linux";default:return process.platform}}function Yt(){if(Wt.isNode)return process.versions.node}function Qt(e){return e.stack?e.stack:e.message?e.message:`${e}`}class Zt{writeHandshakeRequest(e){return Bt.write(JSON.stringify(e))}parseHandshakeResponse(e){let t,n;if(zt(e)){const o=new Uint8Array(e),r=o.indexOf(Bt.RecordSeparatorCode);if(-1===r)throw new Error("Message is incomplete.");const i=r+1;t=String.fromCharCode.apply(null,Array.prototype.slice.call(o.slice(0,i))),n=o.byteLength>i?o.slice(i).buffer:null}else{const o=e,r=o.indexOf(Bt.RecordSeparator);if(-1===r)throw new Error("Message is incomplete.");const i=r+1;t=o.substring(0,i),n=o.length>i?o.substring(i):null}const o=Bt.parse(t),r=JSON.parse(o[0]);if(r.type)throw new Error("Expected a handshake response from the server.");return[n,r]}}class en extends Error{constructor(e,t){const n=new.target.prototype;super(`${e}: Status code '${t}'`),this.statusCode=t,this.__proto__=n}}class tn extends Error{constructor(e="A timeout occurred."){const t=new.target.prototype;super(e),this.__proto__=t}}class nn extends Error{constructor(e="An abort occurred."){const t=new.target.prototype;super(e),this.__proto__=t}}class on extends Error{constructor(e,t){const n=new.target.prototype;super(e),this.transport=t,this.errorType="UnsupportedTransportError",this.__proto__=n}}class rn extends Error{constructor(e,t){const n=new.target.prototype;super(e),this.transport=t,this.errorType="DisabledTransportError",this.__proto__=n}}class sn extends Error{constructor(e,t){const n=new.target.prototype;super(e),this.transport=t,this.errorType="FailedToStartTransportError",this.__proto__=n}}class an extends Error{constructor(e){const t=new.target.prototype;super(e),this.errorType="FailedToNegotiateWithServerError",this.__proto__=t}}class cn extends Error{constructor(e,t){const n=new.target.prototype;super(e),this.innerErrors=t,this.__proto__=n}}var ln,hn;!function(e){e[e.Invocation=1]="Invocation",e[e.StreamItem=2]="StreamItem",e[e.Completion=3]="Completion",e[e.StreamInvocation=4]="StreamInvocation",e[e.CancelInvocation=5]="CancelInvocation",e[e.Ping=6]="Ping",e[e.Close=7]="Close",e[e.Ack=8]="Ack",e[e.Sequence=9]="Sequence"}(ln||(ln={}));class dn{constructor(){this.observers=[]}next(e){for(const t of this.observers)t.next(e)}error(e){for(const t of this.observers)t.error&&t.error(e)}complete(){for(const e of this.observers)e.complete&&e.complete()}subscribe(e){return this.observers.push(e),new Jt(this,e)}}class un{constructor(e,t,n){this._bufferSize=1e5,this._messages=[],this._totalMessageCount=0,this._waitForSequenceMessage=!1,this._nextReceivingSequenceId=1,this._latestReceivedSequenceId=0,this._bufferedByteCount=0,this._reconnectInProgress=!1,this._protocol=e,this._connection=t,this._bufferSize=n}async _send(e){const t=this._protocol.writeMessage(e);let n=Promise.resolve();if(this._isInvocationMessage(e)){this._totalMessageCount++;let e=()=>{},o=()=>{};zt(t)?this._bufferedByteCount+=t.byteLength:this._bufferedByteCount+=t.length,this._bufferedByteCount>=this._bufferSize&&(n=new Promise(((t,n)=>{e=t,o=n}))),this._messages.push(new pn(t,this._totalMessageCount,e,o))}try{this._reconnectInProgress||await this._connection.send(t)}catch{this._disconnected()}await n}_ack(e){let t=-1;for(let n=0;nthis._nextReceivingSequenceId?this._connection.stop(new Error("Sequence ID greater than amount of messages we've received.")):this._nextReceivingSequenceId=e.sequenceId}_disconnected(){this._reconnectInProgress=!0,this._waitForSequenceMessage=!0}async _resend(){const e=0!==this._messages.length?this._messages[0]._id:this._totalMessageCount+1;await this._connection.send(this._protocol.writeMessage({type:ln.Sequence,sequenceId:e}));const t=this._messages;for(const e of t)await this._connection.send(e._message);this._reconnectInProgress=!1}_dispose(e){null!=e||(e=new Error("Unable to reconnect to server."));for(const t of this._messages)t._rejector(e)}_isInvocationMessage(e){switch(e.type){case ln.Invocation:case ln.StreamItem:case ln.Completion:case ln.StreamInvocation:case ln.CancelInvocation:return!0;case ln.Close:case ln.Sequence:case ln.Ping:case ln.Ack:return!1}}_ackTimer(){void 0===this._ackTimerHandle&&(this._ackTimerHandle=setTimeout((async()=>{try{this._reconnectInProgress||await this._connection.send(this._protocol.writeMessage({type:ln.Ack,sequenceId:this._latestReceivedSequenceId}))}catch{}clearTimeout(this._ackTimerHandle),this._ackTimerHandle=void 0}),1e3))}}class pn{constructor(e,t,n,o){this._message=e,this._id=t,this._resolver=n,this._rejector=o}}!function(e){e.Disconnected="Disconnected",e.Connecting="Connecting",e.Connected="Connected",e.Disconnecting="Disconnecting",e.Reconnecting="Reconnecting"}(hn||(hn={}));class fn{static create(e,t,n,o,r,i,s){return new fn(e,t,n,o,r,i,s)}constructor(e,t,n,o,r,i,s){this._nextKeepAlive=0,this._freezeEventListener=()=>{this._logger.log(Ot.Warning,"The page is being frozen, this will likely lead to the connection being closed and messages being lost. For more information see the docs at https://learn.microsoft.com/aspnet/core/signalr/javascript-client#bsleep")},Ht.isRequired(e,"connection"),Ht.isRequired(t,"logger"),Ht.isRequired(n,"protocol"),this.serverTimeoutInMilliseconds=null!=r?r:3e4,this.keepAliveIntervalInMilliseconds=null!=i?i:15e3,this._statefulReconnectBufferSize=null!=s?s:1e5,this._logger=t,this._protocol=n,this.connection=e,this._reconnectPolicy=o,this._handshakeProtocol=new Zt,this.connection.onreceive=e=>this._processIncomingData(e),this.connection.onclose=e=>this._connectionClosed(e),this._callbacks={},this._methods={},this._closedCallbacks=[],this._reconnectingCallbacks=[],this._reconnectedCallbacks=[],this._invocationId=0,this._receivedHandshakeResponse=!1,this._connectionState=hn.Disconnected,this._connectionStarted=!1,this._cachedPingMessage=this._protocol.writeMessage({type:ln.Ping})}get state(){return this._connectionState}get connectionId(){return this.connection&&this.connection.connectionId||null}get baseUrl(){return this.connection.baseUrl||""}set baseUrl(e){if(this._connectionState!==hn.Disconnected&&this._connectionState!==hn.Reconnecting)throw new Error("The HubConnection must be in the Disconnected or Reconnecting state to change the url.");if(!e)throw new Error("The HubConnection url must be a valid url.");this.connection.baseUrl=e}start(){return this._startPromise=this._startWithStateTransitions(),this._startPromise}async _startWithStateTransitions(){if(this._connectionState!==hn.Disconnected)return Promise.reject(new Error("Cannot start a HubConnection that is not in the 'Disconnected' state."));this._connectionState=hn.Connecting,this._logger.log(Ot.Debug,"Starting HubConnection.");try{await this._startInternal(),Wt.isBrowser&&window.document.addEventListener("freeze",this._freezeEventListener),this._connectionState=hn.Connected,this._connectionStarted=!0,this._logger.log(Ot.Debug,"HubConnection connected successfully.")}catch(e){return this._connectionState=hn.Disconnected,this._logger.log(Ot.Debug,`HubConnection failed to start successfully because of error '${e}'.`),Promise.reject(e)}}async _startInternal(){this._stopDuringStartError=void 0,this._receivedHandshakeResponse=!1;const e=new Promise(((e,t)=>{this._handshakeResolver=e,this._handshakeRejecter=t}));await this.connection.start(this._protocol.transferFormat);try{let t=this._protocol.version;this.connection.features.reconnect||(t=1);const n={protocol:this._protocol.name,version:t};if(this._logger.log(Ot.Debug,"Sending handshake request."),await this._sendMessage(this._handshakeProtocol.writeHandshakeRequest(n)),this._logger.log(Ot.Information,`Using HubProtocol '${this._protocol.name}'.`),this._cleanupTimeout(),this._resetTimeoutPeriod(),this._resetKeepAliveInterval(),await e,this._stopDuringStartError)throw this._stopDuringStartError;!!this.connection.features.reconnect&&(this._messageBuffer=new un(this._protocol,this.connection,this._statefulReconnectBufferSize),this.connection.features.disconnected=this._messageBuffer._disconnected.bind(this._messageBuffer),this.connection.features.resend=()=>{if(this._messageBuffer)return this._messageBuffer._resend()}),this.connection.features.inherentKeepAlive||await this._sendMessage(this._cachedPingMessage)}catch(e){throw this._logger.log(Ot.Debug,`Hub handshake failed with error '${e}' during start(). Stopping HubConnection.`),this._cleanupTimeout(),this._cleanupPingTimer(),await this.connection.stop(e),e}}async stop(){const e=this._startPromise;this.connection.features.reconnect=!1,this._stopPromise=this._stopInternal(),await this._stopPromise;try{await e}catch(e){}}_stopInternal(e){if(this._connectionState===hn.Disconnected)return this._logger.log(Ot.Debug,`Call to HubConnection.stop(${e}) ignored because it is already in the disconnected state.`),Promise.resolve();if(this._connectionState===hn.Disconnecting)return this._logger.log(Ot.Debug,`Call to HttpConnection.stop(${e}) ignored because the connection is already in the disconnecting state.`),this._stopPromise;const t=this._connectionState;return this._connectionState=hn.Disconnecting,this._logger.log(Ot.Debug,"Stopping HubConnection."),this._reconnectDelayHandle?(this._logger.log(Ot.Debug,"Connection stopped during reconnect delay. Done reconnecting."),clearTimeout(this._reconnectDelayHandle),this._reconnectDelayHandle=void 0,this._completeClose(),Promise.resolve()):(t===hn.Connected&&this._sendCloseMessage(),this._cleanupTimeout(),this._cleanupPingTimer(),this._stopDuringStartError=e||new nn("The connection was stopped before the hub handshake could complete."),this.connection.stop(e))}async _sendCloseMessage(){try{await this._sendWithProtocol(this._createCloseMessage())}catch{}}stream(e,...t){const[n,o]=this._replaceStreamingParams(t),r=this._createStreamInvocation(e,t,o);let i;const s=new dn;return s.cancelCallback=()=>{const e=this._createCancelInvocation(r.invocationId);return delete this._callbacks[r.invocationId],i.then((()=>this._sendWithProtocol(e)))},this._callbacks[r.invocationId]=(e,t)=>{t?s.error(t):e&&(e.type===ln.Completion?e.error?s.error(new Error(e.error)):s.complete():s.next(e.item))},i=this._sendWithProtocol(r).catch((e=>{s.error(e),delete this._callbacks[r.invocationId]})),this._launchStreams(n,i),s}_sendMessage(e){return this._resetKeepAliveInterval(),this.connection.send(e)}_sendWithProtocol(e){return this._messageBuffer?this._messageBuffer._send(e):this._sendMessage(this._protocol.writeMessage(e))}send(e,...t){const[n,o]=this._replaceStreamingParams(t),r=this._sendWithProtocol(this._createInvocation(e,t,!0,o));return this._launchStreams(n,r),r}invoke(e,...t){const[n,o]=this._replaceStreamingParams(t),r=this._createInvocation(e,t,!1,o);return new Promise(((e,t)=>{this._callbacks[r.invocationId]=(n,o)=>{o?t(o):n&&(n.type===ln.Completion?n.error?t(new Error(n.error)):e(n.result):t(new Error(`Unexpected message type: ${n.type}`)))};const o=this._sendWithProtocol(r).catch((e=>{t(e),delete this._callbacks[r.invocationId]}));this._launchStreams(n,o)}))}on(e,t){e&&t&&(e=e.toLowerCase(),this._methods[e]||(this._methods[e]=[]),-1===this._methods[e].indexOf(t)&&this._methods[e].push(t))}off(e,t){if(!e)return;e=e.toLowerCase();const n=this._methods[e];if(n)if(t){const o=n.indexOf(t);-1!==o&&(n.splice(o,1),0===n.length&&delete this._methods[e])}else delete this._methods[e]}onclose(e){e&&this._closedCallbacks.push(e)}onreconnecting(e){e&&this._reconnectingCallbacks.push(e)}onreconnected(e){e&&this._reconnectedCallbacks.push(e)}_processIncomingData(e){if(this._cleanupTimeout(),this._receivedHandshakeResponse||(e=this._processHandshakeResponse(e),this._receivedHandshakeResponse=!0),e){const t=this._protocol.parseMessages(e,this._logger);for(const e of t)if(!this._messageBuffer||this._messageBuffer._shouldProcessMessage(e))switch(e.type){case ln.Invocation:this._invokeClientMethod(e);break;case ln.StreamItem:case ln.Completion:{const t=this._callbacks[e.invocationId];if(t){e.type===ln.Completion&&delete this._callbacks[e.invocationId];try{t(e)}catch(e){this._logger.log(Ot.Error,`Stream callback threw error: ${Qt(e)}`)}}break}case ln.Ping:break;case ln.Close:{this._logger.log(Ot.Information,"Close message received from server.");const t=e.error?new Error("Server returned an error on close: "+e.error):void 0;!0===e.allowReconnect?this.connection.stop(t):this._stopPromise=this._stopInternal(t);break}case ln.Ack:this._messageBuffer&&this._messageBuffer._ack(e);break;case ln.Sequence:this._messageBuffer&&this._messageBuffer._resetSequence(e);break;default:this._logger.log(Ot.Warning,`Invalid message type: ${e.type}.`)}}this._resetTimeoutPeriod()}_processHandshakeResponse(e){let t,n;try{[n,t]=this._handshakeProtocol.parseHandshakeResponse(e)}catch(e){const t="Error parsing handshake response: "+e;this._logger.log(Ot.Error,t);const n=new Error(t);throw this._handshakeRejecter(n),n}if(t.error){const e="Server returned handshake error: "+t.error;this._logger.log(Ot.Error,e);const n=new Error(e);throw this._handshakeRejecter(n),n}return this._logger.log(Ot.Debug,"Server handshake complete."),this._handshakeResolver(),n}_resetKeepAliveInterval(){this.connection.features.inherentKeepAlive||(this._nextKeepAlive=(new Date).getTime()+this.keepAliveIntervalInMilliseconds,this._cleanupPingTimer())}_resetTimeoutPeriod(){if(!(this.connection.features&&this.connection.features.inherentKeepAlive||(this._timeoutHandle=setTimeout((()=>this.serverTimeout()),this.serverTimeoutInMilliseconds),void 0!==this._pingServerHandle))){let e=this._nextKeepAlive-(new Date).getTime();e<0&&(e=0),this._pingServerHandle=setTimeout((async()=>{if(this._connectionState===hn.Connected)try{await this._sendMessage(this._cachedPingMessage)}catch{this._cleanupPingTimer()}}),e)}}serverTimeout(){this.connection.stop(new Error("Server timeout elapsed without receiving a message from the server."))}async _invokeClientMethod(e){const t=e.target.toLowerCase(),n=this._methods[t];if(!n)return this._logger.log(Ot.Warning,`No client method with the name '${t}' found.`),void(e.invocationId&&(this._logger.log(Ot.Warning,`No result given for '${t}' method and invocation ID '${e.invocationId}'.`),await this._sendWithProtocol(this._createCompletionMessage(e.invocationId,"Client didn't provide a result.",null))));const o=n.slice(),r=!!e.invocationId;let i,s,a;for(const n of o)try{const o=i;i=await n.apply(this,e.arguments),r&&i&&o&&(this._logger.log(Ot.Error,`Multiple results provided for '${t}'. Sending error to server.`),a=this._createCompletionMessage(e.invocationId,"Client provided multiple results.",null)),s=void 0}catch(e){s=e,this._logger.log(Ot.Error,`A callback for the method '${t}' threw error '${e}'.`)}a?await this._sendWithProtocol(a):r?(s?a=this._createCompletionMessage(e.invocationId,`${s}`,null):void 0!==i?a=this._createCompletionMessage(e.invocationId,null,i):(this._logger.log(Ot.Warning,`No result given for '${t}' method and invocation ID '${e.invocationId}'.`),a=this._createCompletionMessage(e.invocationId,"Client didn't provide a result.",null)),await this._sendWithProtocol(a)):i&&this._logger.log(Ot.Error,`Result given for '${t}' method but server is not expecting a result.`)}_connectionClosed(e){this._logger.log(Ot.Debug,`HubConnection.connectionClosed(${e}) called while in state ${this._connectionState}.`),this._stopDuringStartError=this._stopDuringStartError||e||new nn("The underlying connection was closed before the hub handshake could complete."),this._handshakeResolver&&this._handshakeResolver(),this._cancelCallbacksWithError(e||new Error("Invocation canceled due to the underlying connection being closed.")),this._cleanupTimeout(),this._cleanupPingTimer(),this._connectionState===hn.Disconnecting?this._completeClose(e):this._connectionState===hn.Connected&&this._reconnectPolicy?this._reconnect(e):this._connectionState===hn.Connected&&this._completeClose(e)}_completeClose(e){if(this._connectionStarted){this._connectionState=hn.Disconnected,this._connectionStarted=!1,this._messageBuffer&&(this._messageBuffer._dispose(null!=e?e:new Error("Connection closed.")),this._messageBuffer=void 0),Wt.isBrowser&&window.document.removeEventListener("freeze",this._freezeEventListener);try{this._closedCallbacks.forEach((t=>t.apply(this,[e])))}catch(t){this._logger.log(Ot.Error,`An onclose callback called with error '${e}' threw error '${t}'.`)}}}async _reconnect(e){const t=Date.now();let n=0,o=void 0!==e?e:new Error("Attempting to reconnect due to a unknown error."),r=this._getNextRetryDelay(n++,0,o);if(null===r)return this._logger.log(Ot.Debug,"Connection not reconnecting because the IRetryPolicy returned null on the first reconnect attempt."),void this._completeClose(e);if(this._connectionState=hn.Reconnecting,e?this._logger.log(Ot.Information,`Connection reconnecting because of error '${e}'.`):this._logger.log(Ot.Information,"Connection reconnecting."),0!==this._reconnectingCallbacks.length){try{this._reconnectingCallbacks.forEach((t=>t.apply(this,[e])))}catch(t){this._logger.log(Ot.Error,`An onreconnecting callback called with error '${e}' threw error '${t}'.`)}if(this._connectionState!==hn.Reconnecting)return void this._logger.log(Ot.Debug,"Connection left the reconnecting state in onreconnecting callback. Done reconnecting.")}for(;null!==r;){if(this._logger.log(Ot.Information,`Reconnect attempt number ${n} will start in ${r} ms.`),await new Promise((e=>{this._reconnectDelayHandle=setTimeout(e,r)})),this._reconnectDelayHandle=void 0,this._connectionState!==hn.Reconnecting)return void this._logger.log(Ot.Debug,"Connection left the reconnecting state during reconnect delay. Done reconnecting.");try{if(await this._startInternal(),this._connectionState=hn.Connected,this._logger.log(Ot.Information,"HubConnection reconnected successfully."),0!==this._reconnectedCallbacks.length)try{this._reconnectedCallbacks.forEach((e=>e.apply(this,[this.connection.connectionId])))}catch(e){this._logger.log(Ot.Error,`An onreconnected callback called with connectionId '${this.connection.connectionId}; threw error '${e}'.`)}return}catch(e){if(this._logger.log(Ot.Information,`Reconnect attempt failed because of error '${e}'.`),this._connectionState!==hn.Reconnecting)return this._logger.log(Ot.Debug,`Connection moved to the '${this._connectionState}' from the reconnecting state during reconnect attempt. Done reconnecting.`),void(this._connectionState===hn.Disconnecting&&this._completeClose());o=e instanceof Error?e:new Error(e.toString()),r=this._getNextRetryDelay(n++,Date.now()-t,o)}}this._logger.log(Ot.Information,`Reconnect retries have been exhausted after ${Date.now()-t} ms and ${n} failed attempts. Connection disconnecting.`),this._completeClose()}_getNextRetryDelay(e,t,n){try{return this._reconnectPolicy.nextRetryDelayInMilliseconds({elapsedMilliseconds:t,previousRetryCount:e,retryReason:n})}catch(n){return this._logger.log(Ot.Error,`IRetryPolicy.nextRetryDelayInMilliseconds(${e}, ${t}) threw error '${n}'.`),null}}_cancelCallbacksWithError(e){const t=this._callbacks;this._callbacks={},Object.keys(t).forEach((n=>{const o=t[n];try{o(null,e)}catch(t){this._logger.log(Ot.Error,`Stream 'error' callback called with '${e}' threw error: ${Qt(t)}`)}}))}_cleanupPingTimer(){this._pingServerHandle&&(clearTimeout(this._pingServerHandle),this._pingServerHandle=void 0)}_cleanupTimeout(){this._timeoutHandle&&clearTimeout(this._timeoutHandle)}_createInvocation(e,t,n,o){if(n)return 0!==o.length?{arguments:t,streamIds:o,target:e,type:ln.Invocation}:{arguments:t,target:e,type:ln.Invocation};{const n=this._invocationId;return this._invocationId++,0!==o.length?{arguments:t,invocationId:n.toString(),streamIds:o,target:e,type:ln.Invocation}:{arguments:t,invocationId:n.toString(),target:e,type:ln.Invocation}}}_launchStreams(e,t){if(0!==e.length){t||(t=Promise.resolve());for(const n in e)e[n].subscribe({complete:()=>{t=t.then((()=>this._sendWithProtocol(this._createCompletionMessage(n))))},error:e=>{let o;o=e instanceof Error?e.message:e&&e.toString?e.toString():"Unknown error",t=t.then((()=>this._sendWithProtocol(this._createCompletionMessage(n,o))))},next:e=>{t=t.then((()=>this._sendWithProtocol(this._createStreamItemMessage(n,e))))}})}}_replaceStreamingParams(e){const t=[],n=[];for(let o=0;o0)&&(t=!1,this._accessToken=await this._accessTokenFactory()),this._setAuthorizationHeader(e);const n=await this._innerClient.send(e);return t&&401===n.statusCode&&this._accessTokenFactory?(this._accessToken=await this._accessTokenFactory(),this._setAuthorizationHeader(e),await this._innerClient.send(e)):n}_setAuthorizationHeader(e){e.headers||(e.headers={}),this._accessToken?e.headers[vn.Authorization]=`Bearer ${this._accessToken}`:this._accessTokenFactory&&e.headers[vn.Authorization]&&delete e.headers[vn.Authorization]}getCookieString(e){return this._innerClient.getCookieString(e)}}class _n extends wn{constructor(e){super(),this._logger=e;const t={_fetchType:void 0,_jar:void 0};var o;o=t,"undefined"==typeof fetch&&(o._jar=new(n(628).CookieJar),"undefined"==typeof fetch?o._fetchType=n(200):o._fetchType=fetch,o._fetchType=n(203)(o._fetchType,o._jar),1)?(this._fetchType=t._fetchType,this._jar=t._jar):this._fetchType=fetch.bind(function(){if("undefined"!=typeof globalThis)return globalThis;if("undefined"!=typeof self)return self;if("undefined"!=typeof window)return window;if(void 0!==n.g)return n.g;throw new Error("could not find global")}()),this._abortControllerType=AbortController;const r={_abortControllerType:this._abortControllerType};(function(e){return"undefined"==typeof AbortController&&(e._abortControllerType=n(778),!0)})(r)&&(this._abortControllerType=r._abortControllerType)}async send(e){if(e.abortSignal&&e.abortSignal.aborted)throw new nn;if(!e.method)throw new Error("No method defined.");if(!e.url)throw new Error("No url defined.");const t=new this._abortControllerType;let n;e.abortSignal&&(e.abortSignal.onabort=()=>{t.abort(),n=new nn});let o,r=null;if(e.timeout){const o=e.timeout;r=setTimeout((()=>{t.abort(),this._logger.log(Ot.Warning,"Timeout from HTTP request."),n=new tn}),o)}""===e.content&&(e.content=void 0),e.content&&(e.headers=e.headers||{},zt(e.content)?e.headers["Content-Type"]="application/octet-stream":e.headers["Content-Type"]="text/plain;charset=UTF-8");try{o=await this._fetchType(e.url,{body:e.content,cache:"no-cache",credentials:!0===e.withCredentials?"include":"same-origin",headers:{"X-Requested-With":"XMLHttpRequest",...e.headers},method:e.method,mode:"cors",redirect:"follow",signal:t.signal})}catch(e){if(n)throw n;throw this._logger.log(Ot.Warning,`Error from HTTP request. ${e}.`),e}finally{r&&clearTimeout(r),e.abortSignal&&(e.abortSignal.onabort=null)}if(!o.ok){const e=await Sn(o,"text");throw new en(e||o.statusText,o.status)}const i=Sn(o,e.responseType),s=await i;return new yn(o.status,o.statusText,s)}getCookieString(e){return""}}function Sn(e,t){let n;switch(t){case"arraybuffer":n=e.arrayBuffer();break;case"text":default:n=e.text();break;case"blob":case"document":case"json":throw new Error(`${t} is not supported.`)}return n}class Cn extends wn{constructor(e){super(),this._logger=e}send(e){return e.abortSignal&&e.abortSignal.aborted?Promise.reject(new nn):e.method?e.url?new Promise(((t,n)=>{const o=new XMLHttpRequest;o.open(e.method,e.url,!0),o.withCredentials=void 0===e.withCredentials||e.withCredentials,o.setRequestHeader("X-Requested-With","XMLHttpRequest"),""===e.content&&(e.content=void 0),e.content&&(zt(e.content)?o.setRequestHeader("Content-Type","application/octet-stream"):o.setRequestHeader("Content-Type","text/plain;charset=UTF-8"));const r=e.headers;r&&Object.keys(r).forEach((e=>{o.setRequestHeader(e,r[e])})),e.responseType&&(o.responseType=e.responseType),e.abortSignal&&(e.abortSignal.onabort=()=>{o.abort(),n(new nn)}),e.timeout&&(o.timeout=e.timeout),o.onload=()=>{e.abortSignal&&(e.abortSignal.onabort=null),o.status>=200&&o.status<300?t(new yn(o.status,o.statusText,o.response||o.responseText)):n(new en(o.response||o.responseText||o.statusText,o.status))},o.onerror=()=>{this._logger.log(Ot.Warning,`Error from HTTP request. ${o.status}: ${o.statusText}.`),n(new en(o.statusText,o.status))},o.ontimeout=()=>{this._logger.log(Ot.Warning,"Timeout from HTTP request."),n(new tn)},o.send(e.content)})):Promise.reject(new Error("No url defined.")):Promise.reject(new Error("No method defined."))}}class En extends wn{constructor(e){if(super(),"undefined"!=typeof fetch)this._httpClient=new _n(e);else{if("undefined"==typeof XMLHttpRequest)throw new Error("No usable HttpClient found.");this._httpClient=new Cn(e)}}send(e){return e.abortSignal&&e.abortSignal.aborted?Promise.reject(new nn):e.method?e.url?this._httpClient.send(e):Promise.reject(new Error("No url defined.")):Promise.reject(new Error("No method defined."))}getCookieString(e){return this._httpClient.getCookieString(e)}}var In,kn;!function(e){e[e.None=0]="None",e[e.WebSockets=1]="WebSockets",e[e.ServerSentEvents=2]="ServerSentEvents",e[e.LongPolling=4]="LongPolling"}(In||(In={})),function(e){e[e.Text=1]="Text",e[e.Binary=2]="Binary"}(kn||(kn={}));class Tn{constructor(){this._isAborted=!1,this.onabort=null}abort(){this._isAborted||(this._isAborted=!0,this.onabort&&this.onabort())}get signal(){return this}get aborted(){return this._isAborted}}class Rn{get pollAborted(){return this._pollAbort.aborted}constructor(e,t,n){this._httpClient=e,this._logger=t,this._pollAbort=new Tn,this._options=n,this._running=!1,this.onreceive=null,this.onclose=null}async connect(e,t){if(Ht.isRequired(e,"url"),Ht.isRequired(t,"transferFormat"),Ht.isIn(t,kn,"transferFormat"),this._url=e,this._logger.log(Ot.Trace,"(LongPolling transport) Connecting."),t===kn.Binary&&"undefined"!=typeof XMLHttpRequest&&"string"!=typeof(new XMLHttpRequest).responseType)throw new Error("Binary protocols over XmlHttpRequest not implementing advanced features are not supported.");const[n,o]=Vt(),r={[n]:o,...this._options.headers},i={abortSignal:this._pollAbort.signal,headers:r,timeout:1e5,withCredentials:this._options.withCredentials};t===kn.Binary&&(i.responseType="arraybuffer");const s=`${e}&_=${Date.now()}`;this._logger.log(Ot.Trace,`(LongPolling transport) polling: ${s}.`);const a=await this._httpClient.get(s,i);200!==a.statusCode?(this._logger.log(Ot.Error,`(LongPolling transport) Unexpected response code: ${a.statusCode}.`),this._closeError=new en(a.statusText||"",a.statusCode),this._running=!1):this._running=!0,this._receiving=this._poll(this._url,i)}async _poll(e,t){try{for(;this._running;)try{const n=`${e}&_=${Date.now()}`;this._logger.log(Ot.Trace,`(LongPolling transport) polling: ${n}.`);const o=await this._httpClient.get(n,t);204===o.statusCode?(this._logger.log(Ot.Information,"(LongPolling transport) Poll terminated by server."),this._running=!1):200!==o.statusCode?(this._logger.log(Ot.Error,`(LongPolling transport) Unexpected response code: ${o.statusCode}.`),this._closeError=new en(o.statusText||"",o.statusCode),this._running=!1):o.content?(this._logger.log(Ot.Trace,`(LongPolling transport) data received. ${jt(o.content,this._options.logMessageContent)}.`),this.onreceive&&this.onreceive(o.content)):this._logger.log(Ot.Trace,"(LongPolling transport) Poll timed out, reissuing.")}catch(e){this._running?e instanceof tn?this._logger.log(Ot.Trace,"(LongPolling transport) Poll timed out, reissuing."):(this._closeError=e,this._running=!1):this._logger.log(Ot.Trace,`(LongPolling transport) Poll errored after shutdown: ${e.message}`)}}finally{this._logger.log(Ot.Trace,"(LongPolling transport) Polling complete."),this.pollAborted||this._raiseOnClose()}}async send(e){return this._running?qt(this._logger,"LongPolling",this._httpClient,this._url,e,this._options):Promise.reject(new Error("Cannot send until the transport is connected"))}async stop(){this._logger.log(Ot.Trace,"(LongPolling transport) Stopping polling."),this._running=!1,this._pollAbort.abort();try{await this._receiving,this._logger.log(Ot.Trace,`(LongPolling transport) sending DELETE request to ${this._url}.`);const e={},[t,n]=Vt();e[t]=n;const o={headers:{...e,...this._options.headers},timeout:this._options.timeout,withCredentials:this._options.withCredentials};let r;try{await this._httpClient.delete(this._url,o)}catch(e){r=e}r?r instanceof en&&(404===r.statusCode?this._logger.log(Ot.Trace,"(LongPolling transport) A 404 response was returned from sending a DELETE request."):this._logger.log(Ot.Trace,`(LongPolling transport) Error sending a DELETE request: ${r}`)):this._logger.log(Ot.Trace,"(LongPolling transport) DELETE request accepted.")}finally{this._logger.log(Ot.Trace,"(LongPolling transport) Stop finished."),this._raiseOnClose()}}_raiseOnClose(){if(this.onclose){let e="(LongPolling transport) Firing onclose event.";this._closeError&&(e+=" Error: "+this._closeError),this._logger.log(Ot.Trace,e),this.onclose(this._closeError)}}}class Dn{constructor(e,t,n,o){this._httpClient=e,this._accessToken=t,this._logger=n,this._options=o,this.onreceive=null,this.onclose=null}async connect(e,t){return Ht.isRequired(e,"url"),Ht.isRequired(t,"transferFormat"),Ht.isIn(t,kn,"transferFormat"),this._logger.log(Ot.Trace,"(SSE transport) Connecting."),this._url=e,this._accessToken&&(e+=(e.indexOf("?")<0?"?":"&")+`access_token=${encodeURIComponent(this._accessToken)}`),new Promise(((n,o)=>{let r,i=!1;if(t===kn.Text){if(Wt.isBrowser||Wt.isWebWorker)r=new this._options.EventSource(e,{withCredentials:this._options.withCredentials});else{const t=this._httpClient.getCookieString(e),n={};n.Cookie=t;const[o,i]=Vt();n[o]=i,r=new this._options.EventSource(e,{withCredentials:this._options.withCredentials,headers:{...n,...this._options.headers}})}try{r.onmessage=e=>{if(this.onreceive)try{this._logger.log(Ot.Trace,`(SSE transport) data received. ${jt(e.data,this._options.logMessageContent)}.`),this.onreceive(e.data)}catch(e){return void this._close(e)}},r.onerror=e=>{i?this._close():o(new Error("EventSource failed to connect. The connection could not be found on the server, either the connection ID is not present on the server, or a proxy is refusing/buffering the connection. If you have multiple servers check that sticky sessions are enabled."))},r.onopen=()=>{this._logger.log(Ot.Information,`SSE connected to ${this._url}`),this._eventSource=r,i=!0,n()}}catch(e){return void o(e)}}else o(new Error("The Server-Sent Events transport only supports the 'Text' transfer format"))}))}async send(e){return this._eventSource?qt(this._logger,"SSE",this._httpClient,this._url,e,this._options):Promise.reject(new Error("Cannot send until the transport is connected"))}stop(){return this._close(),Promise.resolve()}_close(e){this._eventSource&&(this._eventSource.close(),this._eventSource=void 0,this.onclose&&this.onclose(e))}}class An{constructor(e,t,n,o,r,i){this._logger=n,this._accessTokenFactory=t,this._logMessageContent=o,this._webSocketConstructor=r,this._httpClient=e,this.onreceive=null,this.onclose=null,this._headers=i}async connect(e,t){let n;return Ht.isRequired(e,"url"),Ht.isRequired(t,"transferFormat"),Ht.isIn(t,kn,"transferFormat"),this._logger.log(Ot.Trace,"(WebSockets transport) Connecting."),this._accessTokenFactory&&(n=await this._accessTokenFactory()),new Promise(((o,r)=>{let i;e=e.replace(/^http/,"ws");const s=this._httpClient.getCookieString(e);let a=!1;if(Wt.isReactNative){const t={},[o,r]=Vt();t[o]=r,n&&(t[vn.Authorization]=`Bearer ${n}`),s&&(t[vn.Cookie]=s),i=new this._webSocketConstructor(e,void 0,{headers:{...t,...this._headers}})}else n&&(e+=(e.indexOf("?")<0?"?":"&")+`access_token=${encodeURIComponent(n)}`);i||(i=new this._webSocketConstructor(e)),t===kn.Binary&&(i.binaryType="arraybuffer"),i.onopen=t=>{this._logger.log(Ot.Information,`WebSocket connected to ${e}.`),this._webSocket=i,a=!0,o()},i.onerror=e=>{let t=null;t="undefined"!=typeof ErrorEvent&&e instanceof ErrorEvent?e.error:"There was an error with the transport",this._logger.log(Ot.Information,`(WebSockets transport) ${t}.`)},i.onmessage=e=>{if(this._logger.log(Ot.Trace,`(WebSockets transport) data received. ${jt(e.data,this._logMessageContent)}.`),this.onreceive)try{this.onreceive(e.data)}catch(e){return void this._close(e)}},i.onclose=e=>{if(a)this._close(e);else{let t=null;t="undefined"!=typeof ErrorEvent&&e instanceof ErrorEvent?e.error:"WebSocket failed to connect. The connection could not be found on the server, either the endpoint may not be a SignalR endpoint, the connection ID is not present on the server, or there is a proxy blocking WebSockets. If you have multiple servers check that sticky sessions are enabled.",r(new Error(t))}}}))}send(e){return this._webSocket&&this._webSocket.readyState===this._webSocketConstructor.OPEN?(this._logger.log(Ot.Trace,`(WebSockets transport) sending data. ${jt(e,this._logMessageContent)}.`),this._webSocket.send(e),Promise.resolve()):Promise.reject("WebSocket is not in the OPEN state")}stop(){return this._webSocket&&this._close(void 0),Promise.resolve()}_close(e){this._webSocket&&(this._webSocket.onclose=()=>{},this._webSocket.onmessage=()=>{},this._webSocket.onerror=()=>{},this._webSocket.close(),this._webSocket=void 0),this._logger.log(Ot.Trace,"(WebSockets transport) socket closed."),this.onclose&&(!this._isCloseEvent(e)||!1!==e.wasClean&&1e3===e.code?e instanceof Error?this.onclose(e):this.onclose():this.onclose(new Error(`WebSocket closed with status code: ${e.code} (${e.reason||"no reason given"}).`)))}_isCloseEvent(e){return e&&"boolean"==typeof e.wasClean&&"number"==typeof e.code}}class xn{constructor(e,t={}){if(this._stopPromiseResolver=()=>{},this.features={},this._negotiateVersion=1,Ht.isRequired(e,"url"),this._logger=function(e){return void 0===e?new Kt(Ot.Information):null===e?Ft.instance:void 0!==e.log?e:new Kt(e)}(t.logger),this.baseUrl=this._resolveUrl(e),(t=t||{}).logMessageContent=void 0!==t.logMessageContent&&t.logMessageContent,"boolean"!=typeof t.withCredentials&&void 0!==t.withCredentials)throw new Error("withCredentials option was not a 'boolean' or 'undefined' value");t.withCredentials=void 0===t.withCredentials||t.withCredentials,t.timeout=void 0===t.timeout?1e5:t.timeout,"undefined"==typeof WebSocket||t.WebSocket||(t.WebSocket=WebSocket),"undefined"==typeof EventSource||t.EventSource||(t.EventSource=EventSource),this._httpClient=new bn(t.httpClient||new En(this._logger),t.accessTokenFactory),this._connectionState="Disconnected",this._connectionStarted=!1,this._options=t,this.onreceive=null,this.onclose=null}async start(e){if(e=e||kn.Binary,Ht.isIn(e,kn,"transferFormat"),this._logger.log(Ot.Debug,`Starting connection with transfer format '${kn[e]}'.`),"Disconnected"!==this._connectionState)return Promise.reject(new Error("Cannot start an HttpConnection that is not in the 'Disconnected' state."));if(this._connectionState="Connecting",this._startInternalPromise=this._startInternal(e),await this._startInternalPromise,"Disconnecting"===this._connectionState){const e="Failed to start the HttpConnection before stop() was called.";return this._logger.log(Ot.Error,e),await this._stopPromise,Promise.reject(new nn(e))}if("Connected"!==this._connectionState){const e="HttpConnection.startInternal completed gracefully but didn't enter the connection into the connected state!";return this._logger.log(Ot.Error,e),Promise.reject(new nn(e))}this._connectionStarted=!0}send(e){return"Connected"!==this._connectionState?Promise.reject(new Error("Cannot send data if the connection is not in the 'Connected' State.")):(this._sendQueue||(this._sendQueue=new Nn(this.transport)),this._sendQueue.send(e))}async stop(e){return"Disconnected"===this._connectionState?(this._logger.log(Ot.Debug,`Call to HttpConnection.stop(${e}) ignored because the connection is already in the disconnected state.`),Promise.resolve()):"Disconnecting"===this._connectionState?(this._logger.log(Ot.Debug,`Call to HttpConnection.stop(${e}) ignored because the connection is already in the disconnecting state.`),this._stopPromise):(this._connectionState="Disconnecting",this._stopPromise=new Promise((e=>{this._stopPromiseResolver=e})),await this._stopInternal(e),void await this._stopPromise)}async _stopInternal(e){this._stopError=e;try{await this._startInternalPromise}catch(e){}if(this.transport){try{await this.transport.stop()}catch(e){this._logger.log(Ot.Error,`HttpConnection.transport.stop() threw error '${e}'.`),this._stopConnection()}this.transport=void 0}else this._logger.log(Ot.Debug,"HttpConnection.transport is undefined in HttpConnection.stop() because start() failed.")}async _startInternal(e){let t=this.baseUrl;this._accessTokenFactory=this._options.accessTokenFactory,this._httpClient._accessTokenFactory=this._accessTokenFactory;try{if(this._options.skipNegotiation){if(this._options.transport!==In.WebSockets)throw new Error("Negotiation can only be skipped when using the WebSocket transport directly.");this.transport=this._constructTransport(In.WebSockets),await this._startTransport(t,e)}else{let n=null,o=0;do{if(n=await this._getNegotiationResponse(t),"Disconnecting"===this._connectionState||"Disconnected"===this._connectionState)throw new nn("The connection was stopped during negotiation.");if(n.error)throw new Error(n.error);if(n.ProtocolVersion)throw new Error("Detected a connection attempt to an ASP.NET SignalR Server. This client only supports connecting to an ASP.NET Core SignalR Server. See https://aka.ms/signalr-core-differences for details.");if(n.url&&(t=n.url),n.accessToken){const e=n.accessToken;this._accessTokenFactory=()=>e,this._httpClient._accessToken=e,this._httpClient._accessTokenFactory=void 0}o++}while(n.url&&o<100);if(100===o&&n.url)throw new Error("Negotiate redirection limit exceeded.");await this._createTransport(t,this._options.transport,n,e)}this.transport instanceof Rn&&(this.features.inherentKeepAlive=!0),"Connecting"===this._connectionState&&(this._logger.log(Ot.Debug,"The HttpConnection connected successfully."),this._connectionState="Connected")}catch(e){return this._logger.log(Ot.Error,"Failed to start the connection: "+e),this._connectionState="Disconnected",this.transport=void 0,this._stopPromiseResolver(),Promise.reject(e)}}async _getNegotiationResponse(e){const t={},[n,o]=Vt();t[n]=o;const r=this._resolveNegotiateUrl(e);this._logger.log(Ot.Debug,`Sending negotiation request: ${r}.`);try{const e=await this._httpClient.post(r,{content:"",headers:{...t,...this._options.headers},timeout:this._options.timeout,withCredentials:this._options.withCredentials});if(200!==e.statusCode)return Promise.reject(new Error(`Unexpected status code returned from negotiate '${e.statusCode}'`));const n=JSON.parse(e.content);return(!n.negotiateVersion||n.negotiateVersion<1)&&(n.connectionToken=n.connectionId),n.useStatefulReconnect&&!0!==this._options._useStatefulReconnect?Promise.reject(new an("Client didn't negotiate Stateful Reconnect but the server did.")):n}catch(e){let t="Failed to complete negotiation with the server: "+e;return e instanceof en&&404===e.statusCode&&(t+=" Either this is not a SignalR endpoint or there is a proxy blocking the connection."),this._logger.log(Ot.Error,t),Promise.reject(new an(t))}}_createConnectUrl(e,t){return t?e+(-1===e.indexOf("?")?"?":"&")+`id=${t}`:e}async _createTransport(e,t,n,o){let r=this._createConnectUrl(e,n.connectionToken);if(this._isITransport(t))return this._logger.log(Ot.Debug,"Connection was provided an instance of ITransport, using that directly."),this.transport=t,await this._startTransport(r,o),void(this.connectionId=n.connectionId);const i=[],s=n.availableTransports||[];let a=n;for(const n of s){const s=this._resolveTransportOrError(n,t,o,!0===(null==a?void 0:a.useStatefulReconnect));if(s instanceof Error)i.push(`${n.transport} failed:`),i.push(s);else if(this._isITransport(s)){if(this.transport=s,!a){try{a=await this._getNegotiationResponse(e)}catch(e){return Promise.reject(e)}r=this._createConnectUrl(e,a.connectionToken)}try{return await this._startTransport(r,o),void(this.connectionId=a.connectionId)}catch(e){if(this._logger.log(Ot.Error,`Failed to start the transport '${n.transport}': ${e}`),a=void 0,i.push(new sn(`${n.transport} failed: ${e}`,In[n.transport])),"Connecting"!==this._connectionState){const e="Failed to select transport before stop() was called.";return this._logger.log(Ot.Debug,e),Promise.reject(new nn(e))}}}}return i.length>0?Promise.reject(new cn(`Unable to connect to the server with any of the available transports. ${i.join(" ")}`,i)):Promise.reject(new Error("None of the transports supported by the client are supported by the server."))}_constructTransport(e){switch(e){case In.WebSockets:if(!this._options.WebSocket)throw new Error("'WebSocket' is not supported in your environment.");return new An(this._httpClient,this._accessTokenFactory,this._logger,this._options.logMessageContent,this._options.WebSocket,this._options.headers||{});case In.ServerSentEvents:if(!this._options.EventSource)throw new Error("'EventSource' is not supported in your environment.");return new Dn(this._httpClient,this._httpClient._accessToken,this._logger,this._options);case In.LongPolling:return new Rn(this._httpClient,this._logger,this._options);default:throw new Error(`Unknown transport: ${e}.`)}}_startTransport(e,t){return this.transport.onreceive=this.onreceive,this.features.reconnect?this.transport.onclose=async n=>{let o=!1;if(this.features.reconnect){try{this.features.disconnected(),await this.transport.connect(e,t),await this.features.resend()}catch{o=!0}o&&this._stopConnection(n)}else this._stopConnection(n)}:this.transport.onclose=e=>this._stopConnection(e),this.transport.connect(e,t)}_resolveTransportOrError(e,t,n,o){const r=In[e.transport];if(null==r)return this._logger.log(Ot.Debug,`Skipping transport '${e.transport}' because it is not supported by this client.`),new Error(`Skipping transport '${e.transport}' because it is not supported by this client.`);if(!function(e,t){return!e||0!=(t&e)}(t,r))return this._logger.log(Ot.Debug,`Skipping transport '${In[r]}' because it was disabled by the client.`),new rn(`'${In[r]}' is disabled by the client.`,r);if(!(e.transferFormats.map((e=>kn[e])).indexOf(n)>=0))return this._logger.log(Ot.Debug,`Skipping transport '${In[r]}' because it does not support the requested transfer format '${kn[n]}'.`),new Error(`'${In[r]}' does not support ${kn[n]}.`);if(r===In.WebSockets&&!this._options.WebSocket||r===In.ServerSentEvents&&!this._options.EventSource)return this._logger.log(Ot.Debug,`Skipping transport '${In[r]}' because it is not supported in your environment.'`),new on(`'${In[r]}' is not supported in your environment.`,r);this._logger.log(Ot.Debug,`Selecting transport '${In[r]}'.`);try{return this.features.reconnect=r===In.WebSockets?o:void 0,this._constructTransport(r)}catch(e){return e}}_isITransport(e){return e&&"object"==typeof e&&"connect"in e}_stopConnection(e){if(this._logger.log(Ot.Debug,`HttpConnection.stopConnection(${e}) called while in state ${this._connectionState}.`),this.transport=void 0,e=this._stopError||e,this._stopError=void 0,"Disconnected"!==this._connectionState){if("Connecting"===this._connectionState)throw this._logger.log(Ot.Warning,`Call to HttpConnection.stopConnection(${e}) was ignored because the connection is still in the connecting state.`),new Error(`HttpConnection.stopConnection(${e}) was called while the connection is still in the connecting state.`);if("Disconnecting"===this._connectionState&&this._stopPromiseResolver(),e?this._logger.log(Ot.Error,`Connection disconnected with error '${e}'.`):this._logger.log(Ot.Information,"Connection disconnected."),this._sendQueue&&(this._sendQueue.stop().catch((e=>{this._logger.log(Ot.Error,`TransportSendQueue.stop() threw error '${e}'.`)})),this._sendQueue=void 0),this.connectionId=void 0,this._connectionState="Disconnected",this._connectionStarted){this._connectionStarted=!1;try{this.onclose&&this.onclose(e)}catch(t){this._logger.log(Ot.Error,`HttpConnection.onclose(${e}) threw error '${t}'.`)}}}else this._logger.log(Ot.Debug,`Call to HttpConnection.stopConnection(${e}) was ignored because the connection is already in the disconnected state.`)}_resolveUrl(e){if(0===e.lastIndexOf("https://",0)||0===e.lastIndexOf("http://",0))return e;if(!Wt.isBrowser)throw new Error(`Cannot resolve '${e}'.`);const t=window.document.createElement("a");return t.href=e,this._logger.log(Ot.Information,`Normalizing '${e}' to '${t.href}'.`),t.href}_resolveNegotiateUrl(e){const t=new URL(e);t.pathname.endsWith("/")?t.pathname+="negotiate":t.pathname+="/negotiate";const n=new URLSearchParams(t.searchParams);return n.has("negotiateVersion")||n.append("negotiateVersion",this._negotiateVersion.toString()),n.has("useStatefulReconnect")?"true"===n.get("useStatefulReconnect")&&(this._options._useStatefulReconnect=!0):!0===this._options._useStatefulReconnect&&n.append("useStatefulReconnect","true"),t.search=n.toString(),t.toString()}}class Nn{constructor(e){this._transport=e,this._buffer=[],this._executing=!0,this._sendBufferedData=new Pn,this._transportResult=new Pn,this._sendLoopPromise=this._sendLoop()}send(e){return this._bufferData(e),this._transportResult||(this._transportResult=new Pn),this._transportResult.promise}stop(){return this._executing=!1,this._sendBufferedData.resolve(),this._sendLoopPromise}_bufferData(e){if(this._buffer.length&&typeof this._buffer[0]!=typeof e)throw new Error(`Expected data to be of type ${typeof this._buffer} but was of type ${typeof e}`);this._buffer.push(e),this._sendBufferedData.resolve()}async _sendLoop(){for(;;){if(await this._sendBufferedData.promise,!this._executing){this._transportResult&&this._transportResult.reject("Connection stopped.");break}this._sendBufferedData=new Pn;const e=this._transportResult;this._transportResult=void 0;const t="string"==typeof this._buffer[0]?this._buffer.join(""):Nn._concatBuffers(this._buffer);this._buffer.length=0;try{await this._transport.send(t),e.resolve()}catch(t){e.reject(t)}}}static _concatBuffers(e){const t=e.map((e=>e.byteLength)).reduce(((e,t)=>e+t)),n=new Uint8Array(t);let o=0;for(const t of e)n.set(new Uint8Array(t),o),o+=t.byteLength;return n.buffer}}class Pn{constructor(){this.promise=new Promise(((e,t)=>[this._resolver,this._rejecter]=[e,t]))}resolve(){this._resolver()}reject(e){this._rejecter(e)}}class Mn{constructor(){this.name="json",this.version=2,this.transferFormat=kn.Text}parseMessages(e,t){if("string"!=typeof e)throw new Error("Invalid input for JSON hub protocol. Expected a string.");if(!e)return[];null===t&&(t=Ft.instance);const n=Bt.parse(e),o=[];for(const e of n){const n=JSON.parse(e);if("number"!=typeof n.type)throw new Error("Invalid payload.");switch(n.type){case ln.Invocation:this._isInvocationMessage(n);break;case ln.StreamItem:this._isStreamItemMessage(n);break;case ln.Completion:this._isCompletionMessage(n);break;case ln.Ping:case ln.Close:break;case ln.Ack:this._isAckMessage(n);break;case ln.Sequence:this._isSequenceMessage(n);break;default:t.log(Ot.Information,"Unknown message type '"+n.type+"' ignored.");continue}o.push(n)}return o}writeMessage(e){return Bt.write(JSON.stringify(e))}_isInvocationMessage(e){this._assertNotEmptyString(e.target,"Invalid payload for Invocation message."),void 0!==e.invocationId&&this._assertNotEmptyString(e.invocationId,"Invalid payload for Invocation message.")}_isStreamItemMessage(e){if(this._assertNotEmptyString(e.invocationId,"Invalid payload for StreamItem message."),void 0===e.item)throw new Error("Invalid payload for StreamItem message.")}_isCompletionMessage(e){if(e.result&&e.error)throw new Error("Invalid payload for Completion message.");!e.result&&e.error&&this._assertNotEmptyString(e.error,"Invalid payload for Completion message."),this._assertNotEmptyString(e.invocationId,"Invalid payload for Completion message.")}_isAckMessage(e){if("number"!=typeof e.sequenceId)throw new Error("Invalid SequenceId for Ack message.")}_isSequenceMessage(e){if("number"!=typeof e.sequenceId)throw new Error("Invalid SequenceId for Sequence message.")}_assertNotEmptyString(e,t){if("string"!=typeof e||""===e)throw new Error(t)}}const Un={trace:Ot.Trace,debug:Ot.Debug,info:Ot.Information,information:Ot.Information,warn:Ot.Warning,warning:Ot.Warning,error:Ot.Error,critical:Ot.Critical,none:Ot.None};class Ln{configureLogging(e){if(Ht.isRequired(e,"logging"),function(e){return void 0!==e.log}(e))this.logger=e;else if("string"==typeof e){const t=function(e){const t=Un[e.toLowerCase()];if(void 0!==t)return t;throw new Error(`Unknown log level: ${e}`)}(e);this.logger=new Kt(t)}else this.logger=new Kt(e);return this}withUrl(e,t){return Ht.isRequired(e,"url"),Ht.isNotEmpty(e,"url"),this.url=e,this.httpConnectionOptions="object"==typeof t?{...this.httpConnectionOptions,...t}:{...this.httpConnectionOptions,transport:t},this}withHubProtocol(e){return Ht.isRequired(e,"protocol"),this.protocol=e,this}withAutomaticReconnect(e){if(this.reconnectPolicy)throw new Error("A reconnectPolicy has already been set.");return e?Array.isArray(e)?this.reconnectPolicy=new mn(e):this.reconnectPolicy=e:this.reconnectPolicy=new mn,this}withServerTimeout(e){return Ht.isRequired(e,"milliseconds"),this._serverTimeoutInMilliseconds=e,this}withKeepAliveInterval(e){return Ht.isRequired(e,"milliseconds"),this._keepAliveIntervalInMilliseconds=e,this}withStatefulReconnect(e){return void 0===this.httpConnectionOptions&&(this.httpConnectionOptions={}),this.httpConnectionOptions._useStatefulReconnect=!0,this._statefulReconnectBufferSize=null==e?void 0:e.bufferSize,this}build(){const e=this.httpConnectionOptions||{};if(void 0===e.logger&&(e.logger=this.logger),!this.url)throw new Error("The 'HubConnectionBuilder.withUrl' method must be called before building the connection.");const t=new xn(this.url,e);return fn.create(t,this.logger||Ft.instance,this.protocol||new Mn,this.reconnectPolicy,this._serverTimeoutInMilliseconds,this._keepAliveIntervalInMilliseconds,this._statefulReconnectBufferSize)}}var Bn;!function(e){e[e.Default=0]="Default",e[e.Server=1]="Server",e[e.WebAssembly=2]="WebAssembly",e[e.WebView=3]="WebView"}(Bn||(Bn={}));var On,Fn,$n,Hn=4294967295;function Wn(e,t,n){var o=Math.floor(n/4294967296),r=n;e.setUint32(t,o),e.setUint32(t+4,r)}function jn(e,t){return 4294967296*e.getInt32(t)+e.getUint32(t+4)}var zn=("undefined"==typeof process||"never"!==(null===(On=null===process||void 0===process?void 0:process.env)||void 0===On?void 0:On.TEXT_ENCODING))&&"undefined"!=typeof TextEncoder&&"undefined"!=typeof TextDecoder;function qn(e){for(var t=e.length,n=0,o=0;o=55296&&r<=56319&&o65535&&(h-=65536,i.push(h>>>10&1023|55296),h=56320|1023&h),i.push(h)}else i.push(a);i.length>=4096&&(s+=String.fromCharCode.apply(String,i),i.length=0)}return i.length>0&&(s+=String.fromCharCode.apply(String,i)),s}var Gn,Yn=zn?new TextDecoder:null,Qn=zn?"undefined"!=typeof process&&"force"!==(null===($n=null===process||void 0===process?void 0:process.env)||void 0===$n?void 0:$n.TEXT_DECODER)?200:0:Hn,Zn=function(e,t){this.type=e,this.data=t},eo=(Gn=function(e,t){return Gn=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},Gn(e,t)},function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function n(){this.constructor=e}Gn(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}),to=function(e){function t(n){var o=e.call(this,n)||this,r=Object.create(t.prototype);return Object.setPrototypeOf(o,r),Object.defineProperty(o,"name",{configurable:!0,enumerable:!1,value:t.name}),o}return eo(t,e),t}(Error),no={type:-1,encode:function(e){var t,n,o,r;return e instanceof Date?function(e){var t,n=e.sec,o=e.nsec;if(n>=0&&o>=0&&n<=17179869183){if(0===o&&n<=4294967295){var r=new Uint8Array(4);return(t=new DataView(r.buffer)).setUint32(0,n),r}var i=n/4294967296,s=4294967295&n;return r=new Uint8Array(8),(t=new DataView(r.buffer)).setUint32(0,o<<2|3&i),t.setUint32(4,s),r}return r=new Uint8Array(12),(t=new DataView(r.buffer)).setUint32(0,o),Wn(t,4,n),r}((o=1e6*((t=e.getTime())-1e3*(n=Math.floor(t/1e3))),{sec:n+(r=Math.floor(o/1e9)),nsec:o-1e9*r})):null},decode:function(e){var t=function(e){var t=new DataView(e.buffer,e.byteOffset,e.byteLength);switch(e.byteLength){case 4:return{sec:t.getUint32(0),nsec:0};case 8:var n=t.getUint32(0);return{sec:4294967296*(3&n)+t.getUint32(4),nsec:n>>>2};case 12:return{sec:jn(t,4),nsec:t.getUint32(0)};default:throw new to("Unrecognized data size for timestamp (expected 4, 8, or 12): ".concat(e.length))}}(e);return new Date(1e3*t.sec+t.nsec/1e6)}},oo=function(){function e(){this.builtInEncoders=[],this.builtInDecoders=[],this.encoders=[],this.decoders=[],this.register(no)}return e.prototype.register=function(e){var t=e.type,n=e.encode,o=e.decode;if(t>=0)this.encoders[t]=n,this.decoders[t]=o;else{var r=1+t;this.builtInEncoders[r]=n,this.builtInDecoders[r]=o}},e.prototype.tryToEncode=function(e,t){for(var n=0;nthis.maxDepth)throw new Error("Too deep objects in depth ".concat(t));null==e?this.encodeNil():"boolean"==typeof e?this.encodeBoolean(e):"number"==typeof e?this.encodeNumber(e):"string"==typeof e?this.encodeString(e):this.encodeObject(e,t)},e.prototype.ensureBufferSizeToWrite=function(e){var t=this.pos+e;this.view.byteLength=0?e<128?this.writeU8(e):e<256?(this.writeU8(204),this.writeU8(e)):e<65536?(this.writeU8(205),this.writeU16(e)):e<4294967296?(this.writeU8(206),this.writeU32(e)):(this.writeU8(207),this.writeU64(e)):e>=-32?this.writeU8(224|e+32):e>=-128?(this.writeU8(208),this.writeI8(e)):e>=-32768?(this.writeU8(209),this.writeI16(e)):e>=-2147483648?(this.writeU8(210),this.writeI32(e)):(this.writeU8(211),this.writeI64(e)):this.forceFloat32?(this.writeU8(202),this.writeF32(e)):(this.writeU8(203),this.writeF64(e))},e.prototype.writeStringHeader=function(e){if(e<32)this.writeU8(160+e);else if(e<256)this.writeU8(217),this.writeU8(e);else if(e<65536)this.writeU8(218),this.writeU16(e);else{if(!(e<4294967296))throw new Error("Too long string: ".concat(e," bytes in UTF-8"));this.writeU8(219),this.writeU32(e)}},e.prototype.encodeString=function(e){if(e.length>Kn){var t=qn(e);this.ensureBufferSizeToWrite(5+t),this.writeStringHeader(t),Vn(e,this.bytes,this.pos),this.pos+=t}else t=qn(e),this.ensureBufferSizeToWrite(5+t),this.writeStringHeader(t),function(e,t,n){for(var o=e.length,r=n,i=0;i>6&31|192;else{if(s>=55296&&s<=56319&&i>12&15|224,t[r++]=s>>6&63|128):(t[r++]=s>>18&7|240,t[r++]=s>>12&63|128,t[r++]=s>>6&63|128)}t[r++]=63&s|128}else t[r++]=s}}(e,this.bytes,this.pos),this.pos+=t},e.prototype.encodeObject=function(e,t){var n=this.extensionCodec.tryToEncode(e,this.context);if(null!=n)this.encodeExtension(n);else if(Array.isArray(e))this.encodeArray(e,t);else if(ArrayBuffer.isView(e))this.encodeBinary(e);else{if("object"!=typeof e)throw new Error("Unrecognized object: ".concat(Object.prototype.toString.apply(e)));this.encodeMap(e,t)}},e.prototype.encodeBinary=function(e){var t=e.byteLength;if(t<256)this.writeU8(196),this.writeU8(t);else if(t<65536)this.writeU8(197),this.writeU16(t);else{if(!(t<4294967296))throw new Error("Too large binary: ".concat(t));this.writeU8(198),this.writeU32(t)}var n=ro(e);this.writeU8a(n)},e.prototype.encodeArray=function(e,t){var n=e.length;if(n<16)this.writeU8(144+n);else if(n<65536)this.writeU8(220),this.writeU16(n);else{if(!(n<4294967296))throw new Error("Too large array: ".concat(n));this.writeU8(221),this.writeU32(n)}for(var o=0,r=e;o0&&e<=this.maxKeyLength},e.prototype.find=function(e,t,n){e:for(var o=0,r=this.caches[n-1];o=this.maxLengthPerKey?n[Math.random()*n.length|0]=o:n.push(o)},e.prototype.decode=function(e,t,n){var o=this.find(e,t,n);if(null!=o)return this.hit++,o;this.miss++;var r=Xn(e,t,n),i=Uint8Array.prototype.slice.call(e,t,t+n);return this.store(i,r),r},e}(),co=function(e,t){var n,o,r,i,s={label:0,sent:function(){if(1&r[0])throw r[1];return r[1]},trys:[],ops:[]};return i={next:a(0),throw:a(1),return:a(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function a(i){return function(a){return function(i){if(n)throw new TypeError("Generator is already executing.");for(;s;)try{if(n=1,o&&(r=2&i[0]?o.return:i[0]?o.throw||((r=o.return)&&r.call(o),0):o.next)&&!(r=r.call(o,i[1])).done)return r;switch(o=0,r&&(i=[2&i[0],r.value]),i[0]){case 0:case 1:r=i;break;case 4:return s.label++,{value:i[1],done:!1};case 5:s.label++,o=i[1],i=[0];continue;case 7:i=s.ops.pop(),s.trys.pop();continue;default:if(!((r=(r=s.trys).length>0&&r[r.length-1])||6!==i[0]&&2!==i[0])){s=0;continue}if(3===i[0]&&(!r||i[1]>r[0]&&i[1]=e},e.prototype.createExtraByteError=function(e){var t=this.view,n=this.pos;return new RangeError("Extra ".concat(t.byteLength-n," of ").concat(t.byteLength," byte(s) found at buffer[").concat(e,"]"))},e.prototype.decode=function(e){this.reinitializeState(),this.setBuffer(e);var t=this.doDecodeSync();if(this.hasRemaining(1))throw this.createExtraByteError(this.pos);return t},e.prototype.decodeMulti=function(e){return co(this,(function(t){switch(t.label){case 0:this.reinitializeState(),this.setBuffer(e),t.label=1;case 1:return this.hasRemaining(1)?[4,this.doDecodeSync()]:[3,3];case 2:return t.sent(),[3,1];case 3:return[2]}}))},e.prototype.decodeAsync=function(e){var t,n,o,r,i,s,a;return i=this,void 0,a=function(){var i,s,a,c,l,h,d,u;return co(this,(function(p){switch(p.label){case 0:i=!1,p.label=1;case 1:p.trys.push([1,6,7,12]),t=lo(e),p.label=2;case 2:return[4,t.next()];case 3:if((n=p.sent()).done)return[3,5];if(a=n.value,i)throw this.createExtraByteError(this.totalPos);this.appendBuffer(a);try{s=this.doDecodeSync(),i=!0}catch(e){if(!(e instanceof fo))throw e}this.totalPos+=this.pos,p.label=4;case 4:return[3,2];case 5:return[3,12];case 6:return c=p.sent(),o={error:c},[3,12];case 7:return p.trys.push([7,,10,11]),n&&!n.done&&(r=t.return)?[4,r.call(t)]:[3,9];case 8:p.sent(),p.label=9;case 9:return[3,11];case 10:if(o)throw o.error;return[7];case 11:return[7];case 12:if(i){if(this.hasRemaining(1))throw this.createExtraByteError(this.totalPos);return[2,s]}throw h=(l=this).headByte,d=l.pos,u=l.totalPos,new RangeError("Insufficient data in parsing ".concat(so(h)," at ").concat(u," (").concat(d," in the current buffer)"))}}))},new((s=void 0)||(s=Promise))((function(e,t){function n(e){try{r(a.next(e))}catch(e){t(e)}}function o(e){try{r(a.throw(e))}catch(e){t(e)}}function r(t){var r;t.done?e(t.value):(r=t.value,r instanceof s?r:new s((function(e){e(r)}))).then(n,o)}r((a=a.apply(i,[])).next())}))},e.prototype.decodeArrayStream=function(e){return this.decodeMultiAsync(e,!0)},e.prototype.decodeStream=function(e){return this.decodeMultiAsync(e,!1)},e.prototype.decodeMultiAsync=function(e,t){return function(n,o,r){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var i,s=function(){var n,o,r,i,s,a,c,l,h;return co(this,(function(d){switch(d.label){case 0:n=t,o=-1,d.label=1;case 1:d.trys.push([1,13,14,19]),r=lo(e),d.label=2;case 2:return[4,ho(r.next())];case 3:if((i=d.sent()).done)return[3,12];if(s=i.value,t&&0===o)throw this.createExtraByteError(this.totalPos);this.appendBuffer(s),n&&(o=this.readArraySize(),n=!1,this.complete()),d.label=4;case 4:d.trys.push([4,9,,10]),d.label=5;case 5:return[4,ho(this.doDecodeSync())];case 6:return[4,d.sent()];case 7:return d.sent(),0==--o?[3,8]:[3,5];case 8:return[3,10];case 9:if(!((a=d.sent())instanceof fo))throw a;return[3,10];case 10:this.totalPos+=this.pos,d.label=11;case 11:return[3,2];case 12:return[3,19];case 13:return c=d.sent(),l={error:c},[3,19];case 14:return d.trys.push([14,,17,18]),i&&!i.done&&(h=r.return)?[4,ho(h.call(r))]:[3,16];case 15:d.sent(),d.label=16;case 16:return[3,18];case 17:if(l)throw l.error;return[7];case 18:return[7];case 19:return[2]}}))}.apply(n,o||[]),a=[];return i={},c("next"),c("throw"),c("return"),i[Symbol.asyncIterator]=function(){return this},i;function c(e){s[e]&&(i[e]=function(t){return new Promise((function(n,o){a.push([e,t,n,o])>1||l(e,t)}))})}function l(e,t){try{(n=s[e](t)).value instanceof ho?Promise.resolve(n.value.v).then(h,d):u(a[0][2],n)}catch(e){u(a[0][3],e)}var n}function h(e){l("next",e)}function d(e){l("throw",e)}function u(e,t){e(t),a.shift(),a.length&&l(a[0][0],a[0][1])}}(this,arguments)},e.prototype.doDecodeSync=function(){e:for(;;){var e=this.readHeadByte(),t=void 0;if(e>=224)t=e-256;else if(e<192)if(e<128)t=e;else if(e<144){if(0!=(o=e-128)){this.pushMapState(o),this.complete();continue e}t={}}else if(e<160){if(0!=(o=e-144)){this.pushArrayState(o),this.complete();continue e}t=[]}else{var n=e-160;t=this.decodeUtf8String(n,0)}else if(192===e)t=null;else if(194===e)t=!1;else if(195===e)t=!0;else if(202===e)t=this.readF32();else if(203===e)t=this.readF64();else if(204===e)t=this.readU8();else if(205===e)t=this.readU16();else if(206===e)t=this.readU32();else if(207===e)t=this.readU64();else if(208===e)t=this.readI8();else if(209===e)t=this.readI16();else if(210===e)t=this.readI32();else if(211===e)t=this.readI64();else if(217===e)n=this.lookU8(),t=this.decodeUtf8String(n,1);else if(218===e)n=this.lookU16(),t=this.decodeUtf8String(n,2);else if(219===e)n=this.lookU32(),t=this.decodeUtf8String(n,4);else if(220===e){if(0!==(o=this.readU16())){this.pushArrayState(o),this.complete();continue e}t=[]}else if(221===e){if(0!==(o=this.readU32())){this.pushArrayState(o),this.complete();continue e}t=[]}else if(222===e){if(0!==(o=this.readU16())){this.pushMapState(o),this.complete();continue e}t={}}else if(223===e){if(0!==(o=this.readU32())){this.pushMapState(o),this.complete();continue e}t={}}else if(196===e){var o=this.lookU8();t=this.decodeBinary(o,1)}else if(197===e)o=this.lookU16(),t=this.decodeBinary(o,2);else if(198===e)o=this.lookU32(),t=this.decodeBinary(o,4);else if(212===e)t=this.decodeExtension(1,0);else if(213===e)t=this.decodeExtension(2,0);else if(214===e)t=this.decodeExtension(4,0);else if(215===e)t=this.decodeExtension(8,0);else if(216===e)t=this.decodeExtension(16,0);else if(199===e)o=this.lookU8(),t=this.decodeExtension(o,1);else if(200===e)o=this.lookU16(),t=this.decodeExtension(o,2);else{if(201!==e)throw new to("Unrecognized type byte: ".concat(so(e)));o=this.lookU32(),t=this.decodeExtension(o,4)}this.complete();for(var r=this.stack;r.length>0;){var i=r[r.length-1];if(0===i.type){if(i.array[i.position]=t,i.position++,i.position!==i.size)continue e;r.pop(),t=i.array}else{if(1===i.type){if("string"!=(s=typeof t)&&"number"!==s)throw new to("The type of key must be string or number but "+typeof t);if("__proto__"===t)throw new to("The key __proto__ is not allowed");i.key=t,i.type=2;continue e}if(i.map[i.key]=t,i.readCount++,i.readCount!==i.size){i.key=null,i.type=1;continue e}r.pop(),t=i.map}}return t}var s},e.prototype.readHeadByte=function(){return-1===this.headByte&&(this.headByte=this.readU8()),this.headByte},e.prototype.complete=function(){this.headByte=-1},e.prototype.readArraySize=function(){var e=this.readHeadByte();switch(e){case 220:return this.readU16();case 221:return this.readU32();default:if(e<160)return e-144;throw new to("Unrecognized array type byte: ".concat(so(e)))}},e.prototype.pushMapState=function(e){if(e>this.maxMapLength)throw new to("Max length exceeded: map length (".concat(e,") > maxMapLengthLength (").concat(this.maxMapLength,")"));this.stack.push({type:1,size:e,key:null,readCount:0,map:{}})},e.prototype.pushArrayState=function(e){if(e>this.maxArrayLength)throw new to("Max length exceeded: array length (".concat(e,") > maxArrayLength (").concat(this.maxArrayLength,")"));this.stack.push({type:0,size:e,array:new Array(e),position:0})},e.prototype.decodeUtf8String=function(e,t){var n;if(e>this.maxStrLength)throw new to("Max length exceeded: UTF-8 byte length (".concat(e,") > maxStrLength (").concat(this.maxStrLength,")"));if(this.bytes.byteLengthQn?function(e,t,n){var o=e.subarray(t,t+n);return Yn.decode(o)}(this.bytes,r,e):Xn(this.bytes,r,e),this.pos+=t+e,o},e.prototype.stateIsMapKey=function(){return this.stack.length>0&&1===this.stack[this.stack.length-1].type},e.prototype.decodeBinary=function(e,t){if(e>this.maxBinLength)throw new to("Max length exceeded: bin length (".concat(e,") > maxBinLength (").concat(this.maxBinLength,")"));if(!this.hasRemaining(e+t))throw go;var n=this.pos+t,o=this.bytes.subarray(n,n+e);return this.pos+=t+e,o},e.prototype.decodeExtension=function(e,t){if(e>this.maxExtLength)throw new to("Max length exceeded: ext length (".concat(e,") > maxExtLength (").concat(this.maxExtLength,")"));var n=this.view.getInt8(this.pos+t),o=this.decodeBinary(e,t+1);return this.extensionCodec.decode(o,n,this.context)},e.prototype.lookU8=function(){return this.view.getUint8(this.pos)},e.prototype.lookU16=function(){return this.view.getUint16(this.pos)},e.prototype.lookU32=function(){return this.view.getUint32(this.pos)},e.prototype.readU8=function(){var e=this.view.getUint8(this.pos);return this.pos++,e},e.prototype.readI8=function(){var e=this.view.getInt8(this.pos);return this.pos++,e},e.prototype.readU16=function(){var e=this.view.getUint16(this.pos);return this.pos+=2,e},e.prototype.readI16=function(){var e=this.view.getInt16(this.pos);return this.pos+=2,e},e.prototype.readU32=function(){var e=this.view.getUint32(this.pos);return this.pos+=4,e},e.prototype.readI32=function(){var e=this.view.getInt32(this.pos);return this.pos+=4,e},e.prototype.readU64=function(){var e,t,n=(e=this.view,t=this.pos,4294967296*e.getUint32(t)+e.getUint32(t+4));return this.pos+=8,n},e.prototype.readI64=function(){var e=jn(this.view,this.pos);return this.pos+=8,e},e.prototype.readF32=function(){var e=this.view.getFloat32(this.pos);return this.pos+=4,e},e.prototype.readF64=function(){var e=this.view.getFloat64(this.pos);return this.pos+=8,e},e}();class yo{static write(e){let t=e.byteLength||e.length;const n=[];do{let e=127&t;t>>=7,t>0&&(e|=128),n.push(e)}while(t>0);t=e.byteLength||e.length;const o=new Uint8Array(n.length+t);return o.set(n,0),o.set(e,n.length),o.buffer}static parse(e){const t=[],n=new Uint8Array(e),o=[0,7,14,21,28];for(let r=0;r7)throw new Error("Messages bigger than 2GB are not supported.");if(!(n.byteLength>=r+s+a))throw new Error("Incomplete message.");t.push(n.slice?n.slice(r+s,r+s+a):n.subarray(r+s,r+s+a)),r=r+s+a}return t}}const wo=new Uint8Array([145,ln.Ping]);class bo{constructor(e){this.name="messagepack",this.version=2,this.transferFormat=kn.Binary,this._errorResult=1,this._voidResult=2,this._nonVoidResult=3,e=e||{},this._encoder=new io(e.extensionCodec,e.context,e.maxDepth,e.initialBufferSize,e.sortKeys,e.forceFloat32,e.ignoreUndefined,e.forceIntegerToFloat),this._decoder=new vo(e.extensionCodec,e.context,e.maxStrLength,e.maxBinLength,e.maxArrayLength,e.maxMapLength,e.maxExtLength)}parseMessages(e,t){if(!(n=e)||"undefined"==typeof ArrayBuffer||!(n instanceof ArrayBuffer||n.constructor&&"ArrayBuffer"===n.constructor.name))throw new Error("Invalid input for MessagePack hub protocol. Expected an ArrayBuffer.");var n;null===t&&(t=Ft.instance);const o=yo.parse(e),r=[];for(const e of o){const n=this._parseMessage(e,t);n&&r.push(n)}return r}writeMessage(e){switch(e.type){case ln.Invocation:return this._writeInvocation(e);case ln.StreamInvocation:return this._writeStreamInvocation(e);case ln.StreamItem:return this._writeStreamItem(e);case ln.Completion:return this._writeCompletion(e);case ln.Ping:return yo.write(wo);case ln.CancelInvocation:return this._writeCancelInvocation(e);case ln.Close:return this._writeClose();case ln.Ack:return this._writeAck(e);case ln.Sequence:return this._writeSequence(e);default:throw new Error("Invalid message type.")}}_parseMessage(e,t){if(0===e.length)throw new Error("Invalid payload.");const n=this._decoder.decode(e);if(0===n.length||!(n instanceof Array))throw new Error("Invalid payload.");const o=n[0];switch(o){case ln.Invocation:return this._createInvocationMessage(this._readHeaders(n),n);case ln.StreamItem:return this._createStreamItemMessage(this._readHeaders(n),n);case ln.Completion:return this._createCompletionMessage(this._readHeaders(n),n);case ln.Ping:return this._createPingMessage(n);case ln.Close:return this._createCloseMessage(n);case ln.Ack:return this._createAckMessage(n);case ln.Sequence:return this._createSequenceMessage(n);default:return t.log(Ot.Information,"Unknown message type '"+o+"' ignored."),null}}_createCloseMessage(e){if(e.length<2)throw new Error("Invalid payload for Close message.");return{allowReconnect:e.length>=3?e[2]:void 0,error:e[1],type:ln.Close}}_createPingMessage(e){if(e.length<1)throw new Error("Invalid payload for Ping message.");return{type:ln.Ping}}_createInvocationMessage(e,t){if(t.length<5)throw new Error("Invalid payload for Invocation message.");const n=t[2];return n?{arguments:t[4],headers:e,invocationId:n,streamIds:[],target:t[3],type:ln.Invocation}:{arguments:t[4],headers:e,streamIds:[],target:t[3],type:ln.Invocation}}_createStreamItemMessage(e,t){if(t.length<4)throw new Error("Invalid payload for StreamItem message.");return{headers:e,invocationId:t[2],item:t[3],type:ln.StreamItem}}_createCompletionMessage(e,t){if(t.length<4)throw new Error("Invalid payload for Completion message.");const n=t[3];if(n!==this._voidResult&&t.length<5)throw new Error("Invalid payload for Completion message.");let o,r;switch(n){case this._errorResult:o=t[4];break;case this._nonVoidResult:r=t[4]}return{error:o,headers:e,invocationId:t[2],result:r,type:ln.Completion}}_createAckMessage(e){if(e.length<1)throw new Error("Invalid payload for Ack message.");return{sequenceId:e[1],type:ln.Ack}}_createSequenceMessage(e){if(e.length<1)throw new Error("Invalid payload for Sequence message.");return{sequenceId:e[1],type:ln.Sequence}}_writeInvocation(e){let t;return t=e.streamIds?this._encoder.encode([ln.Invocation,e.headers||{},e.invocationId||null,e.target,e.arguments,e.streamIds]):this._encoder.encode([ln.Invocation,e.headers||{},e.invocationId||null,e.target,e.arguments]),yo.write(t.slice())}_writeStreamInvocation(e){let t;return t=e.streamIds?this._encoder.encode([ln.StreamInvocation,e.headers||{},e.invocationId,e.target,e.arguments,e.streamIds]):this._encoder.encode([ln.StreamInvocation,e.headers||{},e.invocationId,e.target,e.arguments]),yo.write(t.slice())}_writeStreamItem(e){const t=this._encoder.encode([ln.StreamItem,e.headers||{},e.invocationId,e.item]);return yo.write(t.slice())}_writeCompletion(e){const t=e.error?this._errorResult:void 0!==e.result?this._nonVoidResult:this._voidResult;let n;switch(t){case this._errorResult:n=this._encoder.encode([ln.Completion,e.headers||{},e.invocationId,t,e.error]);break;case this._voidResult:n=this._encoder.encode([ln.Completion,e.headers||{},e.invocationId,t]);break;case this._nonVoidResult:n=this._encoder.encode([ln.Completion,e.headers||{},e.invocationId,t,e.result])}return yo.write(n.slice())}_writeCancelInvocation(e){const t=this._encoder.encode([ln.CancelInvocation,e.headers||{},e.invocationId]);return yo.write(t.slice())}_writeClose(){const e=this._encoder.encode([ln.Close,null]);return yo.write(e.slice())}_writeAck(e){const t=this._encoder.encode([ln.Ack,e.sequenceId]);return yo.write(t.slice())}_writeSequence(e){const t=this._encoder.encode([ln.Sequence,e.sequenceId]);return yo.write(t.slice())}_readHeaders(e){const t=e[1];if("object"!=typeof t)throw new Error("Invalid headers.");return t}}const _o="function"==typeof TextDecoder?new TextDecoder("utf-8"):null,So=_o?_o.decode.bind(_o):function(e){let t=0;const n=e.length,o=[],r=[];for(;t65535&&(r-=65536,o.push(r>>>10&1023|55296),r=56320|1023&r),o.push(r)}o.length>1024&&(r.push(String.fromCharCode.apply(null,o)),o.length=0)}return r.push(String.fromCharCode.apply(null,o)),r.join("")},Co=Math.pow(2,32),Eo=Math.pow(2,21)-1;function Io(e,t){return e[t]|e[t+1]<<8|e[t+2]<<16|e[t+3]<<24}function ko(e,t){return e[t]+(e[t+1]<<8)+(e[t+2]<<16)+(e[t+3]<<24>>>0)}function To(e,t){const n=ko(e,t+4);if(n>Eo)throw new Error(`Cannot read uint64 with high order part ${n}, because the result would exceed Number.MAX_SAFE_INTEGER.`);return n*Co+ko(e,t)}class Ro{constructor(e){this.batchData=e;const t=new No(e);this.arrayRangeReader=new Po(e),this.arrayBuilderSegmentReader=new Mo(e),this.diffReader=new Do(e),this.editReader=new Ao(e,t),this.frameReader=new xo(e,t)}updatedComponents(){return Io(this.batchData,this.batchData.length-20)}referenceFrames(){return Io(this.batchData,this.batchData.length-16)}disposedComponentIds(){return Io(this.batchData,this.batchData.length-12)}disposedEventHandlerIds(){return Io(this.batchData,this.batchData.length-8)}updatedComponentsEntry(e,t){const n=e+4*t;return Io(this.batchData,n)}referenceFramesEntry(e,t){return e+20*t}disposedComponentIdsEntry(e,t){const n=e+4*t;return Io(this.batchData,n)}disposedEventHandlerIdsEntry(e,t){const n=e+8*t;return To(this.batchData,n)}}class Do{constructor(e){this.batchDataUint8=e}componentId(e){return Io(this.batchDataUint8,e)}edits(e){return e+4}editsEntry(e,t){return e+16*t}}class Ao{constructor(e,t){this.batchDataUint8=e,this.stringReader=t}editType(e){return Io(this.batchDataUint8,e)}siblingIndex(e){return Io(this.batchDataUint8,e+4)}newTreeIndex(e){return Io(this.batchDataUint8,e+8)}moveToSiblingIndex(e){return Io(this.batchDataUint8,e+8)}removedAttributeName(e){const t=Io(this.batchDataUint8,e+12);return this.stringReader.readString(t)}}class xo{constructor(e,t){this.batchDataUint8=e,this.stringReader=t}frameType(e){return Io(this.batchDataUint8,e)}subtreeLength(e){return Io(this.batchDataUint8,e+4)}elementReferenceCaptureId(e){const t=Io(this.batchDataUint8,e+4);return this.stringReader.readString(t)}componentId(e){return Io(this.batchDataUint8,e+8)}elementName(e){const t=Io(this.batchDataUint8,e+8);return this.stringReader.readString(t)}textContent(e){const t=Io(this.batchDataUint8,e+4);return this.stringReader.readString(t)}markupContent(e){const t=Io(this.batchDataUint8,e+4);return this.stringReader.readString(t)}attributeName(e){const t=Io(this.batchDataUint8,e+4);return this.stringReader.readString(t)}attributeValue(e){const t=Io(this.batchDataUint8,e+8);return this.stringReader.readString(t)}attributeEventHandlerId(e){return To(this.batchDataUint8,e+12)}}class No{constructor(e){this.batchDataUint8=e,this.stringTableStartIndex=Io(e,e.length-4)}readString(e){if(-1===e)return null;{const n=Io(this.batchDataUint8,this.stringTableStartIndex+4*e),o=function(e,t){let n=0,o=0;for(let r=0;r<4;r++){const i=e[t+r];if(n|=(127&i)<this.nextBatchId)return this.fatalError?(this.logger.log(yt.Debug,`Received a new batch ${e} but errored out on a previous batch ${this.nextBatchId-1}`),void await n.send("OnRenderCompleted",this.nextBatchId-1,this.fatalError.toString())):void this.logger.log(yt.Debug,`Waiting for batch ${this.nextBatchId}. Batch ${e} not processed.`);try{this.nextBatchId++,this.logger.log(yt.Debug,`Applying batch ${e}.`),xe(Bn.Server,new Ro(t)),await this.completeBatch(n,e)}catch(t){throw this.fatalError=t.toString(),this.logger.log(yt.Error,`There was an error applying batch ${e}.`),n.send("OnRenderCompleted",e,t.toString()),t}}getLastBatchid(){return this.nextBatchId-1}async completeBatch(e,t){try{await e.send("OnRenderCompleted",t,null)}catch{this.logger.log(yt.Warning,`Failed to deliver completion notification for render '${t}'.`)}}}let Lo=!1;function Bo(){const e=document.querySelector("#blazor-error-ui");e&&(e.style.display="block"),Lo||(Lo=!0,document.querySelectorAll("#blazor-error-ui .reload").forEach((e=>{e.onclick=function(e){location.reload(),e.preventDefault()}})),document.querySelectorAll("#blazor-error-ui .dismiss").forEach((e=>{e.onclick=function(e){const t=document.querySelector("#blazor-error-ui");t&&(t.style.display="none"),e.preventDefault()}})))}class Oo{constructor(t,n,o,r){this._firstUpdate=!0,this._renderingFailed=!1,this._disposed=!1,this._circuitId=void 0,this._applicationState=n,this._componentManager=t,this._options=o,this._logger=r,this._renderQueue=new Uo(this._logger),this._dispatcher=e.attachDispatcher(this)}start(){if(this.isDisposedOrDisposing())throw new Error("Cannot start a disposed circuit.");return this._startPromise||(this._startPromise=this.startCore()),this._startPromise}updateRootComponents(e){var t,n;return this._firstUpdate?(this._firstUpdate=!1,null===(t=this._connection)||void 0===t?void 0:t.send("UpdateRootComponents",e,this._applicationState)):null===(n=this._connection)||void 0===n?void 0:n.send("UpdateRootComponents",e,"")}async startCore(){if(this._connection=await this.startConnection(),this._connection.state!==hn.Connected)return!1;const e=JSON.stringify(this._componentManager.initialComponents.map((e=>Ut(e))));if(this._circuitId=await this._connection.invoke("StartCircuit",Je.getBaseURI(),Je.getLocationHref(),e,this._applicationState||""),!this._circuitId)return!1;for(const e of this._options.circuitHandlers)e.onCircuitOpened&&e.onCircuitOpened();return!0}async startConnection(){var e,t;const n=new bo;n.name="blazorpack";const o=(new Ln).withUrl("_blazor").withHubProtocol(n);this._options.configureSignalR(o);const r=o.build();r.on("JS.AttachComponent",((e,t)=>De(Bn.Server,this.resolveElement(t),e,!1))),r.on("JS.BeginInvokeJS",this._dispatcher.beginInvokeJSFromDotNet.bind(this._dispatcher)),r.on("JS.EndInvokeDotNet",this._dispatcher.endInvokeDotNetFromJS.bind(this._dispatcher)),r.on("JS.ReceiveByteArray",this._dispatcher.receiveByteArray.bind(this._dispatcher)),r.on("JS.BeginTransmitStream",(e=>{const t=new ReadableStream({start:t=>{r.stream("SendDotNetStreamToJS",e).subscribe({next:e=>t.enqueue(e),complete:()=>t.close(),error:e=>t.error(e)})}});this._dispatcher.supplyDotNetStream(e,t)})),r.on("JS.RenderBatch",(async(e,t)=>{var n,o;this._logger.log(Ot.Debug,`Received render batch with id ${e} and ${t.byteLength} bytes.`),await this._renderQueue.processBatch(e,t,this._connection),null===(o=(n=this._componentManager).onAfterRenderBatch)||void 0===o||o.call(n,Bn.Server)})),r.on("JS.EndUpdateRootComponents",(e=>{var t,n;null===(n=(t=this._componentManager).onAfterUpdateRootComponents)||void 0===n||n.call(t,e)})),r.on("JS.EndLocationChanging",vt._internal.navigationManager.endLocationChanging),r.onclose((e=>{this._interopMethodsForReconnection=function(e){const t=C.get(e);if(!t)throw new Error(`Interop methods are not registered for renderer ${e}`);return C.delete(e),t}(Bn.Server),this._disposed||this._renderingFailed||this._options.reconnectionHandler.onConnectionDown(this._options.reconnectionOptions,e)})),r.on("JS.Error",(e=>{this._renderingFailed=!0,this.unhandledError(e),Bo()}));try{await r.start()}catch(e){if(this.unhandledError(e),"FailedToNegotiateWithServerError"===e.errorType)throw e;Bo(),e.innerErrors&&(e.innerErrors.some((e=>"UnsupportedTransportError"===e.errorType&&e.transport===In.WebSockets))?this._logger.log(Ot.Error,"Unable to connect, please ensure you are using an updated browser that supports WebSockets."):e.innerErrors.some((e=>"FailedToStartTransportError"===e.errorType&&e.transport===In.WebSockets))?this._logger.log(Ot.Error,"Unable to connect, please ensure WebSockets are available. A VPN or proxy may be blocking the connection."):e.innerErrors.some((e=>"DisabledTransportError"===e.errorType&&e.transport===In.LongPolling))&&this._logger.log(Ot.Error,"Unable to initiate a SignalR connection to the server. This might be because the server is not configured to support WebSockets. For additional details, visit https://aka.ms/blazor-server-websockets-error."))}return(null===(t=null===(e=r.connection)||void 0===e?void 0:e.features)||void 0===t?void 0:t.inherentKeepAlive)&&this._logger.log(Ot.Warning,"Failed to connect via WebSockets, using the Long Polling fallback transport. This may be due to a VPN or proxy blocking the connection. To troubleshoot this, visit https://aka.ms/blazor-server-using-fallback-long-polling."),r}async disconnect(){var e;await(null===(e=this._connection)||void 0===e?void 0:e.stop())}async reconnect(){if(!this._circuitId)throw new Error("Circuit host not initialized.");return this._connection.state===hn.Connected||(this._connection=await this.startConnection(),this._interopMethodsForReconnection&&(k(Bn.Server,this._interopMethodsForReconnection),this._interopMethodsForReconnection=void 0),!!await this._connection.invoke("ConnectCircuit",this._circuitId)&&(this._options.reconnectionHandler.onConnectionUp(),!0))}beginInvokeDotNetFromJS(e,t,n,o,r){this.throwIfDispatchingWhenDisposed(),this._connection.send("BeginInvokeDotNetFromJS",e?e.toString():null,t,n,o||0,r)}endInvokeJSFromDotNet(e,t,n){this.throwIfDispatchingWhenDisposed(),this._connection.send("EndInvokeJSFromDotNet",e,t,n)}sendByteArray(e,t){this.throwIfDispatchingWhenDisposed(),this._connection.send("ReceiveByteArray",e,t)}throwIfDispatchingWhenDisposed(){if(this._disposed)throw new Error("The circuit associated with this dispatcher is no longer available.")}sendLocationChanged(e,t,n){return this._connection.send("OnLocationChanged",e,t,n)}sendLocationChanging(e,t,n,o){return this._connection.send("OnLocationChanging",e,t,n,o)}sendJsDataStream(e,t,n){return function(e,t,n,o){setTimeout((async()=>{let r=5,i=(new Date).valueOf();try{const s=t instanceof Blob?t.size:t.byteLength;let a=0,c=0;for(;a1)await e.send("ReceiveJSDataChunk",n,c,h,null);else{if(!await e.invoke("ReceiveJSDataChunk",n,c,h,null))break;const t=(new Date).valueOf(),o=t-i;i=t,r=Math.max(1,Math.round(500/Math.max(1,o)))}a+=l,c++}}catch(t){await e.send("ReceiveJSDataChunk",n,-1,null,t.toString())}}),0)}(this._connection,e,t,n)}resolveElement(e){const t=w(e);if(t)return W(t,!0);const n=Number.parseInt(e);if(!Number.isNaN(n))return H(this._componentManager.resolveRootComponent(n));throw new Error(`Invalid sequence number or identifier '${e}'.`)}getRootComponentManager(){return this._componentManager}unhandledError(e){this._logger.log(Ot.Error,e),this.disconnect()}getDisconnectFormData(){const e=new FormData,t=this._circuitId;return e.append("circuitId",t),e}didRenderingFail(){return this._renderingFailed}isDisposedOrDisposing(){return void 0!==this._disposePromise}sendDisconnectBeacon(){if(this._disposed)return;const e=this.getDisconnectFormData();this._disposed=navigator.sendBeacon("_blazor/disconnect",e)}dispose(){return this._disposePromise||(this._disposePromise=this.disposeCore()),this._disposePromise}async disposeCore(){var e;if(!this._startPromise)return void(this._disposed=!0);await this._startPromise,this._disposed=!0,null===(e=this._connection)||void 0===e||e.stop();const t=this.getDisconnectFormData();fetch("http://github.com/_blazor/disconnect",{method:"POST",body:t});for(const e of this._options.circuitHandlers)e.onCircuitClosed&&e.onCircuitClosed()}}function Fo(e){const t={...$o,...e};return e&&e.reconnectionOptions&&(t.reconnectionOptions={...$o.reconnectionOptions,...e.reconnectionOptions}),t}const $o={configureSignalR:e=>{},logLevel:yt.Warning,initializers:void 0,circuitHandlers:[],reconnectionOptions:{maxRetries:8,retryIntervalMilliseconds:2e4,dialogId:"components-reconnect-modal"}};class Ho{constructor(e,t,n,o){this.maxRetries=t,this.document=n,this.logger=o,this.modal=this.document.createElement("div"),this.modal.id=e,this.maxRetries=t,this.modal.style.cssText=["position: fixed","top: 0","right: 0","bottom: 0","left: 0","z-index: 1050","display: none","overflow: hidden","background-color: #fff","opacity: 0.8","text-align: center","font-weight: bold","transition: visibility 0s linear 500ms"].join(";"),this.message=this.document.createElement("h5"),this.message.style.cssText="margin-top: 20px",this.button=this.document.createElement("button"),this.button.style.cssText="margin:5px auto 5px",this.button.textContent="Retry";const r=this.document.createElement("a");r.addEventListener("click",(()=>location.reload())),r.textContent="reload",this.reloadParagraph=this.document.createElement("p"),this.reloadParagraph.textContent="Alternatively, ",this.reloadParagraph.appendChild(r),this.modal.appendChild(this.message),this.modal.appendChild(this.button),this.modal.appendChild(this.reloadParagraph),this.loader=this.getLoader(),this.message.after(this.loader),this.button.addEventListener("click",(async()=>{this.show();try{await vt.reconnect()||this.rejected()}catch(e){this.logger.log(yt.Error,e),this.failed()}}))}show(){this.document.contains(this.modal)||this.document.body.appendChild(this.modal),this.modal.style.display="block",this.loader.style.display="inline-block",this.button.style.display="none",this.reloadParagraph.style.display="none",this.message.textContent="Attempting to reconnect to the server...",this.modal.style.visibility="hidden",setTimeout((()=>{this.modal.style.visibility="visible"}),0)}update(e){this.message.textContent=`Attempting to reconnect to the server: ${e} of ${this.maxRetries}`}hide(){this.modal.style.display="none"}failed(){this.button.style.display="block",this.reloadParagraph.style.display="none",this.loader.style.display="none";const e=this.document.createTextNode("Reconnection failed. Try "),t=this.document.createElement("a");t.textContent="reloading",t.setAttribute("href",""),t.addEventListener("click",(()=>location.reload()));const n=this.document.createTextNode(" the page if you're unable to reconnect.");this.message.replaceChildren(e,t,n)}rejected(){this.button.style.display="none",this.reloadParagraph.style.display="none",this.loader.style.display="none";const e=this.document.createTextNode("Could not reconnect to the server. "),t=this.document.createElement("a");t.textContent="Reload",t.setAttribute("href",""),t.addEventListener("click",(()=>location.reload()));const n=this.document.createTextNode(" the page to restore functionality.");this.message.replaceChildren(e,t,n)}getLoader(){const e=this.document.createElement("div");return e.style.cssText=["border: 0.3em solid #f3f3f3","border-top: 0.3em solid #3498db","border-radius: 50%","width: 2em","height: 2em","display: inline-block"].join(";"),e.animate([{transform:"rotate(0deg)"},{transform:"rotate(360deg)"}],{duration:2e3,iterations:1/0}),e}}class Wo{constructor(e,t,n){this.dialog=e,this.maxRetries=t,this.document=n,this.document=n;const o=this.document.getElementById(Wo.MaxRetriesId);o&&(o.innerText=this.maxRetries.toString())}show(){this.removeClasses(),this.dialog.classList.add(Wo.ShowClassName)}update(e){const t=this.document.getElementById(Wo.CurrentAttemptId);t&&(t.innerText=e.toString())}hide(){this.removeClasses(),this.dialog.classList.add(Wo.HideClassName)}failed(){this.removeClasses(),this.dialog.classList.add(Wo.FailedClassName)}rejected(){this.removeClasses(),this.dialog.classList.add(Wo.RejectedClassName)}removeClasses(){this.dialog.classList.remove(Wo.ShowClassName,Wo.HideClassName,Wo.FailedClassName,Wo.RejectedClassName)}}Wo.ShowClassName="components-reconnect-show",Wo.HideClassName="components-reconnect-hide",Wo.FailedClassName="components-reconnect-failed",Wo.RejectedClassName="components-reconnect-rejected",Wo.MaxRetriesId="components-reconnect-max-retries",Wo.CurrentAttemptId="components-reconnect-current-attempt";class jo{constructor(e,t,n){this._currentReconnectionProcess=null,this._logger=e,this._reconnectionDisplay=t,this._reconnectCallback=n||vt.reconnect}onConnectionDown(e,t){if(!this._reconnectionDisplay){const t=document.getElementById(e.dialogId);this._reconnectionDisplay=t?new Wo(t,e.maxRetries,document):new Ho(e.dialogId,e.maxRetries,document,this._logger)}this._currentReconnectionProcess||(this._currentReconnectionProcess=new zo(e,this._logger,this._reconnectCallback,this._reconnectionDisplay))}onConnectionUp(){this._currentReconnectionProcess&&(this._currentReconnectionProcess.dispose(),this._currentReconnectionProcess=null)}}class zo{constructor(e,t,n,o){this.logger=t,this.reconnectCallback=n,this.isDisposed=!1,this.reconnectDisplay=o,this.reconnectDisplay.show(),this.attemptPeriodicReconnection(e)}dispose(){this.isDisposed=!0,this.reconnectDisplay.hide()}async attemptPeriodicReconnection(e){for(let t=0;tzo.MaximumFirstRetryInterval?zo.MaximumFirstRetryInterval:e.retryIntervalMilliseconds;if(await this.delay(n),this.isDisposed)break;try{return await this.reconnectCallback()?void 0:void this.reconnectDisplay.rejected()}catch(e){this.logger.log(yt.Error,e)}}this.reconnectDisplay.failed()}delay(e){return new Promise((t=>setTimeout(t,e)))}}zo.MaximumFirstRetryInterval=3e3;class qo{constructor(e=!0,t,n,o=0){this.singleRuntime=e,this.logger=t,this.webRendererId=o,this.afterStartedCallbacks=[],n&&this.afterStartedCallbacks.push(...n)}async importInitializersAsync(e,t){await Promise.all(e.map((e=>async function(e,n){const o=function(e){const t=document.baseURI;return t.endsWith("/")?`${t}${e}`:`${t}/${e}`}(n),r=await import(o);if(void 0!==r){if(e.singleRuntime){const{beforeStart:n,afterStarted:o,beforeWebAssemblyStart:s,afterWebAssemblyStarted:a,beforeServerStart:c,afterServerStarted:l}=r;let h=n;e.webRendererId===Bn.Server&&c&&(h=c),e.webRendererId===Bn.WebAssembly&&s&&(h=s);let d=o;return e.webRendererId===Bn.Server&&l&&(d=l),e.webRendererId===Bn.WebAssembly&&a&&(d=a),i(e,h,d,t)}return function(e,t,n){var r;const s=n[0],{beforeStart:a,afterStarted:c,beforeWebStart:l,afterWebStarted:h,beforeWebAssemblyStart:d,afterWebAssemblyStarted:u,beforeServerStart:p,afterServerStarted:f}=t,g=!(l||h||d||u||p||f||!a&&!c),m=g&&s.enableClassicInitializers;if(g&&!s.enableClassicInitializers)null===(r=e.logger)||void 0===r||r.log(yt.Warning,`Initializer '${o}' will be ignored because multiple runtimes are available. use 'before(web|webAssembly|server)Start' and 'after(web|webAssembly|server)Started?' instead.)`);else if(m)return i(e,a,c,n);if(function(e){e.webAssembly?e.webAssembly.initializers||(e.webAssembly.initializers={beforeStart:[],afterStarted:[]}):e.webAssembly={initializers:{beforeStart:[],afterStarted:[]}},e.circuit?e.circuit.initializers||(e.circuit.initializers={beforeStart:[],afterStarted:[]}):e.circuit={initializers:{beforeStart:[],afterStarted:[]}}}(s),d&&s.webAssembly.initializers.beforeStart.push(d),u&&s.webAssembly.initializers.afterStarted.push(u),p&&s.circuit.initializers.beforeStart.push(p),f&&s.circuit.initializers.afterStarted.push(f),h&&e.afterStartedCallbacks.push(h),l)return l(s)}(e,r,t)}function i(e,t,n,o){if(n&&e.afterStartedCallbacks.push(n),t)return t(...o)}}(this,e))))}async invokeAfterStartedCallbacks(e){const t=function(e){var t;return null===(t=I.get(e))||void 0===t?void 0:t[1]}(this.webRendererId);t&&await t,await Promise.all(this.afterStartedCallbacks.map((t=>t(e))))}}let Jo,Ko,Vo,Xo,Go,Yo,Qo,Zo;function er(e){if(Xo)throw new Error("Circuit options have already been configured.");if(Xo)throw new Error("WebAssembly options have already been configured.");Jo=async function(e){const t=await e;Xo=Fo(t)}(e)}function tr(e){if(void 0!==Yo)throw new Error("Blazor Server has already started.");return Yo=new Promise(nr.bind(null,e)),Yo}async function nr(e,t,n){await Jo;const o=await async function(e){if(e.initializers)return await Promise.all(e.initializers.beforeStart.map((t=>t(e)))),new qo(!1,void 0,e.initializers.afterStarted,Bn.Server);const t=await fetch("http://github.com/_blazor/initializers",{method:"GET",credentials:"include",cache:"no-cache"}),n=await t.json(),o=new qo(!0,void 0,void 0,Bn.Server);return await o.importInitializersAsync(n,[e]),o}(Xo);if(Ko=It(document)||"",Go=new bt(Xo.logLevel),Vo=new Oo(e,Ko,Xo,Go),Go.log(yt.Information,"Starting up Blazor server-side application."),vt.reconnect=async()=>!(Vo.didRenderingFail()||!await Vo.reconnect()&&(Go.log(yt.Information,"Reconnection attempt to the circuit was rejected by the server. This may indicate that the associated state is no longer available on the server."),1)),vt.defaultReconnectionHandler=new jo(Go),Xo.reconnectionHandler=Xo.reconnectionHandler||vt.defaultReconnectionHandler,vt._internal.navigationManager.listenForNavigationEvents(Bn.Server,((e,t,n)=>Vo.sendLocationChanged(e,t,n)),((e,t,n,o)=>Vo.sendLocationChanging(e,t,n,o))),vt._internal.forceCloseConnection=()=>Vo.disconnect(),vt._internal.sendJSDataStream=(e,t,n)=>Vo.sendJsDataStream(e,t,n),!await Vo.start())return Go.log(yt.Error,"Failed to start the circuit."),void t();const r=()=>{Vo.sendDisconnectBeacon()};vt.disconnect=r,window.addEventListener("unload",r,{capture:!1,once:!0}),Go.log(yt.Information,"Blazor server-side application started."),o.invokeAfterStartedCallbacks(vt),t()}async function or(){if(!Yo)throw new Error("Cannot start the circuit until Blazor Server has started.");return!(!Vo||Vo.isDisposedOrDisposing())||(Qo?await Qo:(await Yo,(!Vo||!Vo.didRenderingFail())&&(Vo&&Vo.isDisposedOrDisposing()&&(Ko=It(document)||"",Vo=new Oo(Vo.getRootComponentManager(),Ko,Xo,Go)),Qo=Vo.start(),async function(e){await e,Qo===e&&(Qo=void 0)}(Qo),Qo)))}function rr(e){if(Vo&&!Vo.isDisposedOrDisposing())return Vo.updateRootComponents(e);!async function(e){await Yo,await or()&&Vo.updateRootComponents(e)}(e)}function ir(e){return Zo=e,Zo}var sr,ar;const cr=navigator,lr=cr.userAgentData&&cr.userAgentData.brands,hr=lr&&lr.length>0?lr.some((e=>"Google Chrome"===e.brand||"Microsoft Edge"===e.brand||"Chromium"===e.brand)):window.chrome,dr=null!==(ar=null===(sr=cr.userAgentData)||void 0===sr?void 0:sr.platform)&&void 0!==ar?ar:navigator.platform;function ur(e){return 0!==e.debugLevel&&(hr||navigator.userAgent.includes("Firefox"))}let pr,fr,gr,mr,vr,yr,wr;const br=Math.pow(2,32),_r=Math.pow(2,21)-1;let Sr=null;function Cr(e){return fr.getI32(e)}const Er={load:function(e,t){return async function(e,t){const{dotnet:n}=await async function(e){if("undefined"==typeof WebAssembly||!WebAssembly.validate)throw new Error("This browser does not support WebAssembly.");let t="_framework/dotnet.js";if(e.loadBootResource){const n="dotnetjs",o=e.loadBootResource(n,"dotnet.js",t,"","js-module-dotnet");if("string"==typeof o)t=o;else if(o)throw new Error(`For a ${n} resource, custom loaders must supply a URI string.`)}const n=new URL(t,document.baseURI).toString();return await import(n)}(e),o=function(e,t){const n={maxParallelDownloads:1e6,enableDownloadRetry:!1,applicationEnvironment:e.environment},o={...window.Module||{},onConfigLoaded:async n=>{n.environmentVariables||(n.environmentVariables={}),"sharded"===n.globalizationMode&&(n.environmentVariables.__BLAZOR_SHARDED_ICU="1"),vt._internal.getApplicationEnvironment=()=>n.applicationEnvironment,null==t||t(n),wr=await async function(e,t){var n,o,r;if(e.initializers)return await Promise.all(e.initializers.beforeStart.map((t=>t(e)))),new qo(!1,void 0,e.initializers.afterStarted,Bn.WebAssembly);{const i=[e,null!==(o=null===(n=t.resources)||void 0===n?void 0:n.extensions)&&void 0!==o?o:{}],s=new qo(!0,void 0,void 0,Bn.WebAssembly),a=Object.keys((null===(r=null==t?void 0:t.resources)||void 0===r?void 0:r.libraryInitializers)||{});return await s.importInitializersAsync(a,i),s}}(e,n)},onDownloadResourceProgress:Ir,config:n,disableDotnet6Compatibility:!1,out:Tr,err:Rr};return o}(e,t);e.applicationCulture&&n.withApplicationCulture(e.applicationCulture),e.environment&&n.withApplicationEnvironment(e.environment),e.loadBootResource&&n.withResourceLoader(e.loadBootResource),n.withModuleConfig(o),e.configureRuntime&&e.configureRuntime(n),yr=await n.create()}(e,t)},start:function(){return async function(){if(!yr)throw new Error("The runtime must be loaded it gets configured.");const{MONO:t,BINDING:n,Module:o,setModuleImports:r,INTERNAL:i,getConfig:s,invokeLibraryInitializers:a}=yr;gr=o,pr=n,fr=t,vr=i,function(e){const t=dr.match(/^Mac/i)?"Cmd":"Alt";ur(e)&&console.info(`Debugging hotkey: Shift+${t}+D (when application has focus)`),document.addEventListener("keydown",(t=>{t.shiftKey&&(t.metaKey||t.altKey)&&"KeyD"===t.code&&(ur(e)?navigator.userAgent.includes("Firefox")?async function(){const e=await fetch(`_framework/debug?url=${encodeURIComponent(location.href)}&isFirefox=true`);200!==e.status&&console.warn(await e.text())}():hr?function(){const e=document.createElement("a");e.href=`_framework/debug?url=${encodeURIComponent(location.href)}`,e.target="_blank",e.rel="noopener noreferrer",e.click()}():console.error("Currently, only Microsoft Edge (80+), Google Chrome, or Chromium, are supported for debugging."):console.error("Cannot start debugging, because the application was not compiled with debugging enabled."))}))}(s()),vt.runtime=yr,vt._internal.dotNetCriticalError=Rr,r("blazor-internal",{Blazor:{_internal:vt._internal}});const c=await yr.getAssemblyExports("Microsoft.AspNetCore.Components.WebAssembly");return Object.assign(vt._internal,{dotNetExports:{...c.Microsoft.AspNetCore.Components.WebAssembly.Services.DefaultWebAssemblyJSRuntime}}),mr=e.attachDispatcher({beginInvokeDotNetFromJS:(e,t,n,o,r)=>{if(Ar(),!o&&!t)throw new Error("Either assemblyName or dotNetObjectId must have a non null value.");const i=o?o.toString():t;vt._internal.dotNetExports.BeginInvokeDotNet(e?e.toString():null,i,n,r)},endInvokeJSFromDotNet:(e,t,n)=>{vt._internal.dotNetExports.EndInvokeJS(n)},sendByteArray:(e,t)=>{vt._internal.dotNetExports.ReceiveByteArrayFromJS(e,t)},invokeDotNetFromJS:(e,t,n,o)=>(Ar(),vt._internal.dotNetExports.InvokeDotNet(e||null,t,null!=n?n:0,o))}),{invokeLibraryInitializers:a}}()},callEntryPoint:async function(){try{await yr.runMain(yr.getConfig().mainAssemblyName,[])}catch(e){console.error(e),Bo()}},toUint8Array:function(e){const t=Dr(e),n=Cr(t),o=new Uint8Array(n);return o.set(gr.HEAPU8.subarray(t+4,t+4+n)),o},getArrayLength:function(e){return Cr(Dr(e))},getArrayEntryPtr:function(e,t,n){return Dr(e)+4+t*n},getObjectFieldsBaseAddress:function(e){return e+8},readInt16Field:function(e,t){return n=e+(t||0),fr.getI16(n);var n},readInt32Field:function(e,t){return Cr(e+(t||0))},readUint64Field:function(e,t){return function(e){const t=e>>2,n=gr.HEAPU32[t+1];if(n>_r)throw new Error(`Cannot read uint64 with high order part ${n}, because the result would exceed Number.MAX_SAFE_INTEGER.`);return n*br+gr.HEAPU32[t]}(e+(t||0))},readFloatField:function(e,t){return n=e+(t||0),fr.getF32(n);var n},readObjectField:function(e,t){return Cr(e+(t||0))},readStringField:function(e,t,n){const o=Cr(e+(t||0));if(0===o)return null;if(n){const e=pr.unbox_mono_obj(o);return"boolean"==typeof e?e?"":null:e}return pr.conv_string(o)},readStructField:function(e,t){return e+(t||0)},beginHeapLock:function(){return Ar(),Sr=xr.create(),Sr},invokeWhenHeapUnlocked:function(e){Sr?Sr.enqueuePostReleaseAction(e):e()}};function Ir(e,t){const n=e/t*100;document.documentElement.style.setProperty("--blazor-load-percentage",`${n}%`),document.documentElement.style.setProperty("--blazor-load-percentage-text",`"${Math.floor(n)}%"`)}const kr=["DEBUGGING ENABLED"],Tr=e=>kr.indexOf(e)<0&&console.log(e),Rr=e=>{console.error(e||"(null)"),Bo()};function Dr(e){return e+12}function Ar(){if(Sr)throw new Error("Assertion failed - heap is currently locked")}class xr{enqueuePostReleaseAction(e){this.postReleaseActions||(this.postReleaseActions=[]),this.postReleaseActions.push(e)}release(){var e;if(Sr!==this)throw new Error("Trying to release a lock which isn't current");for(vr.mono_wasm_gc_unlock(),Sr=null;null===(e=this.postReleaseActions)||void 0===e?void 0:e.length;)this.postReleaseActions.shift()(),Ar()}static create(){return vr.mono_wasm_gc_lock(),new xr}}class Nr{constructor(e){this.batchAddress=e,this.arrayRangeReader=Pr,this.arrayBuilderSegmentReader=Mr,this.diffReader=Ur,this.editReader=Lr,this.frameReader=Br}updatedComponents(){return Zo.readStructField(this.batchAddress,0)}referenceFrames(){return Zo.readStructField(this.batchAddress,Pr.structLength)}disposedComponentIds(){return Zo.readStructField(this.batchAddress,2*Pr.structLength)}disposedEventHandlerIds(){return Zo.readStructField(this.batchAddress,3*Pr.structLength)}updatedComponentsEntry(e,t){return Or(e,t,Ur.structLength)}referenceFramesEntry(e,t){return Or(e,t,Br.structLength)}disposedComponentIdsEntry(e,t){const n=Or(e,t,4);return Zo.readInt32Field(n)}disposedEventHandlerIdsEntry(e,t){const n=Or(e,t,8);return Zo.readUint64Field(n)}}const Pr={structLength:8,values:e=>Zo.readObjectField(e,0),count:e=>Zo.readInt32Field(e,4)},Mr={structLength:12,values:e=>{const t=Zo.readObjectField(e,0),n=Zo.getObjectFieldsBaseAddress(t);return Zo.readObjectField(n,0)},offset:e=>Zo.readInt32Field(e,4),count:e=>Zo.readInt32Field(e,8)},Ur={structLength:4+Mr.structLength,componentId:e=>Zo.readInt32Field(e,0),edits:e=>Zo.readStructField(e,4),editsEntry:(e,t)=>Or(e,t,Lr.structLength)},Lr={structLength:20,editType:e=>Zo.readInt32Field(e,0),siblingIndex:e=>Zo.readInt32Field(e,4),newTreeIndex:e=>Zo.readInt32Field(e,8),moveToSiblingIndex:e=>Zo.readInt32Field(e,8),removedAttributeName:e=>Zo.readStringField(e,16)},Br={structLength:36,frameType:e=>Zo.readInt16Field(e,4),subtreeLength:e=>Zo.readInt32Field(e,8),elementReferenceCaptureId:e=>Zo.readStringField(e,16),componentId:e=>Zo.readInt32Field(e,12),elementName:e=>Zo.readStringField(e,16),textContent:e=>Zo.readStringField(e,16),markupContent:e=>Zo.readStringField(e,16),attributeName:e=>Zo.readStringField(e,16),attributeValue:e=>Zo.readStringField(e,24,!0),attributeEventHandlerId:e=>Zo.readUint64Field(e,8)};function Or(e,t,n){return Zo.getArrayEntryPtr(e,t,n)}class Fr{constructor(e){this.componentManager=e}resolveRegisteredElement(e){const t=Number.parseInt(e);if(!Number.isNaN(t))return H(this.componentManager.resolveRootComponent(t))}getParameterValues(e){return this.componentManager.initialComponents[e].parameterValues}getParameterDefinitions(e){return this.componentManager.initialComponents[e].parameterDefinitions}getTypeName(e){return this.componentManager.initialComponents[e].typeName}getAssembly(e){return this.componentManager.initialComponents[e].assembly}getCount(){return this.componentManager.initialComponents.length}}let $r,Hr,Wr,jr,zr,qr=!1,Jr=!1,Kr=!0,Vr=!1;const Xr=new Promise((e=>{zr=e}));let Gr;const Yr=new Promise((e=>{Gr=e}));let Qr;function Zr(e){if(void 0!==jr)throw new Error("Blazor WebAssembly has already started.");return jr=new Promise(ei.bind(null,e)),jr}async function ei(e,t,n){(function(){if(window.parent!==window&&!window.opener&&window.frameElement){const e=window.sessionStorage&&window.sessionStorage["Microsoft.AspNetCore.Components.WebAssembly.Authentication.CachedAuthSettings"],t=e&&JSON.parse(e);return t&&t.redirect_uri&&location.href.startsWith(t.redirect_uri)}return!1})()&&await new Promise((()=>{}));const o=ti();!function(e){const t=A;A=(e,n,o)=>{((e,t,n)=>{const o=Ae(e);(null==o?void 0:o.eventDelegator.getHandler(t))&&Er.invokeWhenHeapUnlocked(n)})(e,n,(()=>t(e,n,o)))}}(),vt._internal.applyHotReload=(e,t,n,o)=>{mr.invokeDotNetStaticMethod("Microsoft.AspNetCore.Components.WebAssembly","ApplyHotReloadDelta",e,t,n,o)},vt._internal.getApplyUpdateCapabilities=()=>mr.invokeDotNetStaticMethod("Microsoft.AspNetCore.Components.WebAssembly","GetApplyUpdateCapabilities"),vt._internal.invokeJSFromDotNet=ni,vt._internal.invokeJSJson=oi,vt._internal.endInvokeDotNetFromJS=ri,vt._internal.receiveWebAssemblyDotNetDataStream=ii,vt._internal.receiveByteArray=si;const r=ir(Er);vt.platform=r,vt._internal.renderBatch=(e,t)=>{const n=Er.beginHeapLock();try{xe(e,new Nr(t))}finally{n.release()}},vt._internal.navigationManager.listenForNavigationEvents(Bn.WebAssembly,(async(e,t,n)=>{await mr.invokeDotNetStaticMethodAsync("Microsoft.AspNetCore.Components.WebAssembly","NotifyLocationChanged",e,t,n)}),(async(e,t,n,o)=>{const r=await mr.invokeDotNetStaticMethodAsync("Microsoft.AspNetCore.Components.WebAssembly","NotifyLocationChangingAsync",t,n,o);vt._internal.navigationManager.endLocationChanging(e,r)}));const i=new Fr(e);let s;vt._internal.registeredComponents={getRegisteredComponentsCount:()=>i.getCount(),getAssembly:e=>i.getAssembly(e),getTypeName:e=>i.getTypeName(e),getParameterDefinitions:e=>i.getParameterDefinitions(e)||"",getParameterValues:e=>i.getParameterValues(e)||""},vt._internal.getPersistedState=()=>kt(document,Ct)||"",vt._internal.getInitialComponentsUpdate=()=>Yr,vt._internal.updateRootComponents=e=>{var t;return null===(t=vt._internal.dotNetExports)||void 0===t?void 0:t.UpdateRootComponentsCore(e)},vt._internal.endUpdateRootComponents=t=>{var n;return null===(n=e.onAfterUpdateRootComponents)||void 0===n?void 0:n.call(e,t)},vt._internal.attachRootComponentToElement=(e,t,n)=>{const o=i.resolveRegisteredElement(e);o?De(n,o,t,!1):function(e,t,n){const o="::before";let r=!1;if(e.endsWith("::after"))e=e.slice(0,-7),r=!0;else if(e.endsWith(o))throw new Error(`The '${o}' selector is not supported.`);const i=w(e)||document.querySelector(e);if(!i)throw new Error(`Could not find any element matching selector '${e}'.`);De(n,W(i,!0),t,r)}(e,t,n)};try{await o,s=await r.start()}catch(e){throw new Error(`Failed to start platform. Reason: ${e}`)}r.callEntryPoint(),wr.invokeAfterStartedCallbacks(vt),Jr=!0,t()}function ti(){return null!=Wr||(Wr=(async()=>{await Hr;const e=null!=$r?$r:{},t=null==$r?void 0:$r.configureRuntime;e.configureRuntime=e=>{null==t||t(e),Vr&&e.withEnvironmentVariable("__BLAZOR_WEBASSEMBLY_WAIT_FOR_ROOT_COMPONENTS","true")},await Er.load(e,zr),qr=!0})()),Wr}function ni(t,n,o,r){const i=Er.readStringField(t,0),s=Er.readInt32Field(t,4),a=Er.readStringField(t,8),c=Er.readUint64Field(t,20);if(null!==a){const e=Er.readUint64Field(t,12);if(0!==e)return mr.beginInvokeJSFromDotNet(e,i,a,s,c),0;{const e=mr.invokeJSFromDotNet(i,a,s,c);return null===e?0:pr.js_string_to_mono_string(e)}}{const t=e.findJSFunction(i,c).call(null,n,o,r);switch(s){case e.JSCallResultType.Default:return t;case e.JSCallResultType.JSObjectReference:return e.createJSObjectReference(t).__jsObjectId;case e.JSCallResultType.JSStreamReference:{const n=e.createJSStreamReference(t),o=JSON.stringify(n);return pr.js_string_to_mono_string(o)}case e.JSCallResultType.JSVoidResult:return null;default:throw new Error(`Invalid JS call result type '${s}'.`)}}}function oi(e,t,n,o,r){return 0!==r?(mr.beginInvokeJSFromDotNet(r,e,o,n,t),null):mr.invokeJSFromDotNet(e,o,n,t)}function ri(e,t,n){mr.endInvokeDotNetFromJS(e,t,n)}function ii(e,t,n,o){!function(e,t,n,o,r){let i=mt.get(t);if(!i){const n=new ReadableStream({start(e){mt.set(t,e),i=e}});e.supplyDotNetStream(t,n)}r?(i.error(r),mt.delete(t)):0===o?(i.close(),mt.delete(t)):i.enqueue(n.length===o?n:n.subarray(0,o))}(mr,e,t,n,o)}function si(e,t){mr.receiveByteArray(e,t)}function ai(e,t){t.namespaceURI?e.setAttributeNS(t.namespaceURI,t.name,t.value):e.setAttribute(t.name,t.value)}Hr=new Promise((e=>{Qr=e}));const ci="data-permanent";var li,hi;!function(e){e[e.None=0]="None",e[e.Some=1]="Some",e[e.Infinite=2]="Infinite"}(li||(li={})),function(e){e.Keep="keep",e.Update="update",e.Insert="insert",e.Delete="delete"}(hi||(hi={}));class di{static create(e,t,n){return 0===t&&n===e.length?e:new di(e,t,n)}constructor(e,t,n){this.source=e,this.startIndex=t,this.length=n}item(e){return this.source.item(e+this.startIndex)}forEach(e,t){for(let t=0;t=n&&s>=o&&r(e.item(i),t.item(s))===li.None;)i--,s--,a++;return a}(e,t,o,o,n),i=function(e){var t;const n=[];let o=e.length-1,r=(null===(t=e[o])||void 0===t?void 0:t.length)-1;for(;o>0||r>0;){const t=0===o?hi.Insert:0===r?hi.Delete:e[o][r];switch(n.unshift(t),t){case hi.Keep:case hi.Update:o--,r--;break;case hi.Insert:r--;break;case hi.Delete:o--}}return n}(function(e,t,n){const o=[],r=[],i=e.length,s=t.length;if(0===i&&0===s)return[];for(let e=0;e<=i;e++)(o[e]=Array(s+1))[0]=e,r[e]=Array(s+1);const a=o[0];for(let e=1;e<=s;e++)a[e]=e;for(let a=1;a<=i;a++)for(let i=1;i<=s;i++){const s=n(e.item(a-1),t.item(i-1)),c=o[a-1][i]+1,l=o[a][i-1]+1;let h;switch(s){case li.None:h=o[a-1][i-1];break;case li.Some:h=o[a-1][i-1]+1;break;case li.Infinite:h=Number.MAX_VALUE}h{history.pushState(null,"",e),Mi(e,!0)}))}function Ni(e){Oe()||Mi(location.href,!1)}function Pi(e){var t,n,o,r,i;if(Oe()||e.defaultPrevented)return;const s=e.target;if(s instanceof HTMLFormElement){if(!function(e){const t=e.getAttribute("data-enhance");return"string"==typeof t&&""===t||"true"===(null==t?void 0:t.toLowerCase())}(s))return;const a=(null===(t=e.submitter)||void 0===t?void 0:t.getAttribute("formmethod"))||s.method;if("dialog"===a)return void console.warn('A form cannot be enhanced when its method is "dialog".');const c=(null===(n=e.submitter)||void 0===n?void 0:n.getAttribute("formtarget"))||s.target;if(""!==c&&"_self"!==c)return void console.warn('A form cannot be enhanced when its target is different from the default value "_self".');e.preventDefault();const l=new URL((null===(o=e.submitter)||void 0===o?void 0:o.getAttribute("formaction"))||s.action,document.baseURI),h={method:a},d=new FormData(s),u=null===(r=e.submitter)||void 0===r?void 0:r.getAttribute("name"),p=e.submitter.getAttribute("value");u&&p&&d.append(u,p);const f=new URLSearchParams(d).toString();if("get"===h.method)l.search=f,history.pushState(null,"",l.toString());else{const t=(null===(i=e.submitter)||void 0===i?void 0:i.getAttribute("formenctype"))||s.enctype;"multipart/form-data"===t?h.body=d:(h.body=f,h.headers={"content-type":t,accept:Ei})}Mi(l.toString(),!1,h)}}async function Mi(e,t,n,o){Ti=!0,null==Ii||Ii.abort(),function(e,t){null==ke||ke(e,t)}(e,t),Ii=new AbortController;const r=Ii.signal,i=fetch(e,Object.assign({signal:r,mode:"no-cors",headers:{accept:Ei}},n));let s=null;if(await async function(e,t,n,o){let r;try{if(r=await e,!r.body)return void n(r,"");const t=r.headers.get("ssr-framing");if(!t){const e=await r.text();return void n(r,e)}let o=!0;await r.body.pipeThrough(new TextDecoderStream).pipeThrough(function(e){let t="";return new TransformStream({transform(n,o){if(t+=n,t.indexOf(e,t.length-n.length-e.length)>=0){const n=t.split(e);n.slice(0,-1).forEach((e=>o.enqueue(e))),t=n[n.length-1]}},flush(e){e.enqueue(t)}})}(`\x3c!--${t}--\x3e`)).pipeTo(new WritableStream({write(e){o?(o=!1,n(r,e)):(e=>{const t=document.createRange().createContextualFragment(e);for(;t.firstChild;)document.body.appendChild(t.firstChild)})(e)}}))}catch(e){if("AbortError"===e.name&&t.aborted)return;throw e}}(i,r,((t,r)=>{const i=!(null==n?void 0:n.method)||"get"===n.method,a=t.status>=200&&t.status<300;if("opaque"===t.type){if(i)return void Li(e);throw new Error("Enhanced navigation does not support making a non-GET request to an endpoint that redirects to an external origin. Avoid enabling enhanced navigation for form posts that may perform external redirections.")}if(a&&"allow"!==t.headers.get("blazor-enhanced-nav")){if(i)return void Li(e);throw new Error("Enhanced navigation does not support making a non-GET request to a non-Blazor endpoint. Avoid enabling enhanced navigation for forms that post to a non-Blazor endpoint.")}(t.redirected||o)&&((o?"get"===o:i)?history.replaceState(null,"",t.url):t.url!==location.href&&history.pushState(null,"",t.url),e=t.url);const c=t.headers.get("blazor-enhanced-nav-redirect-location");if(c)return void location.replace(c);t.redirected||i||!a||(function(e){const t=new URL(e.url),n=new URL(Ri);return t.protocol===n.protocol&&t.host===n.host&&t.port===n.port&&t.pathname===n.pathname}(t)?location.href!==Ri&&history.pushState(null,"",Ri):s=`Cannot perform enhanced form submission that changes the URL (except via a redirection), because then back/forward would not work. Either remove this form's 'action' attribute, or change its method to 'get', or do not mark it as enhanced.\nOld URL: ${location.href}\nNew URL: ${t.url}`),Ri=t.url;const l=t.headers.get("content-type");if((null==l?void 0:l.startsWith("text/html"))&&r){const e=(new DOMParser).parseFromString(r,"text/html");pi(document,e),ki.documentUpdated()}else(null==l?void 0:l.startsWith("text/"))&&r?Ui(r):a||r?i?Li(e):Ui(`Error: ${n.method} request to ${e} returned non-HTML content of type ${l||"unspecified"}.`):Ui(`Error: ${t.status} ${t.statusText}`)})),!r.aborted){const t=e.indexOf("#");if(t>=0){const n=e.substring(t+1),o=document.getElementById(n);null==o||o.scrollIntoView()}if(Ti=!1,ki.enhancedNavigationCompleted(),s)throw new Error(s)}}function Ui(e){document.documentElement.textContent=e;const t=document.documentElement.style;t.fontFamily="consolas, monospace",t.whiteSpace="pre-wrap",t.padding="1rem"}function Li(e){history.replaceState(null,"",e+"?"),location.replace(e)}let Bi,Oi=!0;class Fi extends HTMLElement{connectedCallback(){var e;const t=this.parentNode;null===(e=t.parentNode)||void 0===e||e.removeChild(t),t.childNodes.forEach((e=>{if(e instanceof HTMLTemplateElement){const t=e.getAttribute("blazor-component-id");if(t)"true"!==e.getAttribute("enhanced-nav")&&Ii||function(e,t){const n=function(e){const t=`bl:${e}`,n=document.createNodeIterator(document,NodeFilter.SHOW_COMMENT);let o=null;for(;(o=n.nextNode())&&o.textContent!==t;);if(!o)return null;const r=`/bl:${e}`;let i=null;for(;(i=n.nextNode())&&i.textContent!==r;);return i?{startMarker:o,endMarker:i}:null}(e);if(n){const{startMarker:e,endMarker:o}=n;if(Oi)pi({startExclusive:e,endExclusive:o},t);else{const n=o.parentNode,r=new Range;for(r.setStart(e,e.textContent.length),r.setEnd(o,0),r.deleteContents();t.childNodes[0];)n.insertBefore(t.childNodes[0],o)}Bi.documentUpdated()}}(t,e.content);else switch(e.getAttribute("type")){case"redirection":const t=Le(e.content.textContent),n="form-post"===e.getAttribute("from");"true"===e.getAttribute("enhanced")&&Pe(t)?Mi(t,!1,void 0,n?"post":"get"):n?t!==location.href&&location.assign(t):location.replace(t);break;case"error":Ui(e.content.textContent||"Error")}}}))}}class $i{constructor(e){var t;this._circuitInactivityTimeoutMs=e,this._rootComponentsBySsrComponentId=new Map,this._seenDescriptors=new Set,this._pendingOperationBatches={},this._nextOperationBatchId=1,this._nextSsrComponentId=1,this._didWebAssemblyFailToLoadQuickly=!1,this._isComponentRefreshPending=!1,this.initialComponents=[],t=()=>{this.rootComponentsMayRequireRefresh()},E.push(t)}onAfterRenderBatch(e){e===Bn.Server&&this.circuitMayHaveNoRootComponents()}onDocumentUpdated(){this.rootComponentsMayRequireRefresh()}onEnhancedNavigationCompleted(){this.rootComponentsMayRequireRefresh()}registerComponent(e){if(this._seenDescriptors.has(e))return;"webassembly"===e.type?this.startLoadingWebAssemblyIfNotStarted():"auto"===e.type&&this.startLoadingWebAssemblyIfNotStarted(1);const t=this._nextSsrComponentId++;this._seenDescriptors.add(e),this._rootComponentsBySsrComponentId.set(t,{descriptor:e,ssrComponentId:t})}unregisterComponent(e){this._seenDescriptors.delete(e.descriptor),this._rootComponentsBySsrComponentId.delete(e.ssrComponentId),this.circuitMayHaveNoRootComponents()}async startLoadingWebAssemblyIfNotStarted(e){if(void 0!==Wr)return;Vr=!0;const t=ti(),n=await Xr;void 0!==e&&(n.maxParallelDownloads=e),function(e){if(!e.cacheBootResources)return!1;const t=Hi(e);if(!t)return!1;const n=window.localStorage.getItem(t.key);return t.value===n}(n)||this.onWebAssemblyFailedToLoadQuickly(),await t,function(e){const t=Hi(e);t&&window.localStorage.setItem(t.key,t.value)}(n),this.rootComponentsMayRequireRefresh()}onWebAssemblyFailedToLoadQuickly(){this._didWebAssemblyFailToLoadQuickly||(this._didWebAssemblyFailToLoadQuickly=!0,this.rootComponentsMayRequireRefresh())}startCircutIfNotStarted(){return void 0===Yo?tr(this):!Vo||Vo.isDisposedOrDisposing()?or():void 0}async startWebAssemblyIfNotStarted(){this.startLoadingWebAssemblyIfNotStarted(),void 0===jr&&await Zr(this)}rootComponentsMayRequireRefresh(){this._isComponentRefreshPending||(this._isComponentRefreshPending=!0,setTimeout((()=>{this._isComponentRefreshPending=!1,this.refreshRootComponents(this._rootComponentsBySsrComponentId.values())}),0))}circuitMayHaveNoRootComponents(){if(this.rendererHasExistingOrPendingComponents(Bn.Server,"server","auto"))return clearTimeout(this._circuitInactivityTimeoutId),void(this._circuitInactivityTimeoutId=void 0);void 0===this._circuitInactivityTimeoutId&&(this._circuitInactivityTimeoutId=setTimeout((()=>{this.rendererHasExistingOrPendingComponents(Bn.Server,"server","auto")||(async function(){await(null==Vo?void 0:Vo.dispose())}(),this._circuitInactivityTimeoutId=void 0)}),this._circuitInactivityTimeoutMs))}rendererHasComponents(e){const t=Ae(e);return void 0!==t&&t.getRootComponentCount()>0}rendererHasExistingOrPendingComponents(e,...t){if(this.rendererHasComponents(e))return!0;for(const{descriptor:{type:n},assignedRendererId:o}of this._rootComponentsBySsrComponentId.values()){if(o===e)return!0;if(void 0===o&&-1!==t.indexOf(n))return!0}return!1}refreshRootComponents(e){const t=new Map;for(const n of e){const e=this.determinePendingOperation(n);if(!e)continue;const o=n.assignedRendererId;if(!o)throw new Error("Descriptors must be assigned a renderer ID before getting used as root components");let r=t.get(o);r||(r=[],t.set(o,r)),r.push(e)}for(const[e,n]of t){const t={batchId:this._nextOperationBatchId++,operations:n};this._pendingOperationBatches[t.batchId]=t;const o=JSON.stringify(t);e===Bn.Server?rr(o):this.updateWebAssemblyRootComponents(o)}this.circuitMayHaveNoRootComponents()}updateWebAssemblyRootComponents(e){Kr?(Gr(e),Kr=!1):function(e){if(!jr)throw new Error("Blazor WebAssembly has not started.");if(!vt._internal.updateRootComponents)throw new Error("Blazor WebAssembly has not initialized.");Jr?vt._internal.updateRootComponents(e):async function(e){if(await jr,!vt._internal.updateRootComponents)throw new Error("Blazor WebAssembly has not initialized.");vt._internal.updateRootComponents(e)}(e)}(e)}resolveRendererIdForDescriptor(e){switch("auto"===e.type?this.getAutoRenderMode():e.type){case"server":return this.startCircutIfNotStarted(),Bn.Server;case"webassembly":return this.startWebAssemblyIfNotStarted(),Bn.WebAssembly;case null:return null}}getAutoRenderMode(){return this.rendererHasExistingOrPendingComponents(Bn.WebAssembly,"webassembly")?"webassembly":this.rendererHasExistingOrPendingComponents(Bn.Server,"server")?"server":qr?"webassembly":this._didWebAssemblyFailToLoadQuickly?"server":null}determinePendingOperation(e){if(t=e.descriptor,document.contains(t.start)){if(void 0===e.assignedRendererId){if(Ti||"loading"===document.readyState)return null;const t=this.resolveRendererIdForDescriptor(e.descriptor);return null===t?null:T(t)?(be(e.descriptor.start,!0),e.assignedRendererId=t,e.uniqueIdAtLastUpdate=e.descriptor.uniqueId,{type:"add",ssrComponentId:e.ssrComponentId,marker:Ut(e.descriptor)}):null}return T(e.assignedRendererId)?e.uniqueIdAtLastUpdate===e.descriptor.uniqueId?null:(e.uniqueIdAtLastUpdate=e.descriptor.uniqueId,{type:"update",ssrComponentId:e.ssrComponentId,marker:Ut(e.descriptor)}):null}return e.hasPendingRemoveOperation?null:void 0===e.assignedRendererId?(this.unregisterComponent(e),null):T(e.assignedRendererId)?(be(e.descriptor.start,!1),e.hasPendingRemoveOperation=!0,{type:"remove",ssrComponentId:e.ssrComponentId}):null;var t}resolveRootComponent(e){const t=this._rootComponentsBySsrComponentId.get(e);if(!t)throw new Error(`Could not resolve a root component with SSR component ID '${e}'.`);return t.descriptor}onAfterUpdateRootComponents(e){const t=this._pendingOperationBatches[e];delete this._pendingOperationBatches[e];for(const e of t.operations)switch(e.type){case"remove":{const t=this._rootComponentsBySsrComponentId.get(e.ssrComponentId);t&&this.unregisterComponent(t);break}}}}function Hi(e){var t;const n=null===(t=e.resources)||void 0===t?void 0:t.hash,o=e.mainAssemblyName;return n&&o?{key:`blazor-resource-hash:${o}`,value:n}:null}class Wi{constructor(){this._eventListeners=new Map}static create(e){const t=new Wi;return e.addEventListener=t.addEventListener.bind(t),e.removeEventListener=t.removeEventListener.bind(t),t}addEventListener(e,t){let n=this._eventListeners.get(e);n||(n=new Set,this._eventListeners.set(e,n)),n.add(t)}removeEventListener(e,t){var n;null===(n=this._eventListeners.get(e))||void 0===n||n.delete(t)}dispatchEvent(e,t){const n=this._eventListeners.get(e);if(!n)return;const o={...t,type:e};for(const e of n)e(o)}}let ji,zi=!1;function qi(e){var t,n,o,r;if(zi)throw new Error("Blazor has already started.");zi=!0,null!==(t=(e=e||{}).logLevel)&&void 0!==t||(e.logLevel=yt.Error),vt._internal.isBlazorWeb=!0,vt._internal.hotReloadApplied=()=>{Me()&&Ue(location.href,!0)},ji=new $i(null!==(o=null===(n=null==e?void 0:e.ssr)||void 0===n?void 0:n.circuitInactivityTimeoutMs)&&void 0!==o?o:2e3);const i=Wi.create(vt),s={documentUpdated:()=>{ji.onDocumentUpdated(),i.dispatchEvent("enhancedload",{})},enhancedNavigationCompleted(){ji.onEnhancedNavigationCompleted()}};return ui=ji,function(e,t){Bi=t,(null==e?void 0:e.disableDomPreservation)&&(Oi=!1),customElements.define("blazor-ssr-end",Fi)}(null==e?void 0:e.ssr,s),(null===(r=null==e?void 0:e.ssr)||void 0===r?void 0:r.disableDomPreservation)||Di(s),"loading"===document.readyState?document.addEventListener("DOMContentLoaded",Ji.bind(null,e)):Ji(e),Promise.resolve()}function Ji(e){const t=Fo((null==e?void 0:e.circuit)||{});e.circuit=t;const n=async function(e,t){var n;const o=kt(document,Et,"initializers");if(!o)return new qo(!1,t);const r=null!==(n=JSON.parse(atob(o)))&&void 0!==n?n:[],i=new qo(!1,t);return await i.importInitializersAsync(r,[e]),i}(e,new bt(t.logLevel));er(Ki(n,t)),function(e){if($r)throw new Error("WebAssembly options have already been configured.");!async function(e){const t=await e;$r=t,Qr()}(e)}(Ki(n,(null==e?void 0:e.webAssembly)||{})),function(e){const t=wi(document);for(const e of t)null==ui||ui.registerComponent(e)}(),ji.onDocumentUpdated(),async function(e){const t=await e;await t.invokeAfterStartedCallbacks(vt)}(n)}async function Ki(e,t){return await e,t}vt.start=qi,window.DotNet=e,document&&document.currentScript&&"false"!==document.currentScript.getAttribute("autostart")&&qi()})()})(); \ No newline at end of file diff --git a/src/Components/Web.JS/src/Boot.Web.ts b/src/Components/Web.JS/src/Boot.Web.ts index 8a1384a393de..2ba2d7d90b32 100644 --- a/src/Components/Web.JS/src/Boot.Web.ts +++ b/src/Components/Web.JS/src/Boot.Web.ts @@ -37,7 +37,6 @@ function boot(options?: Partial) : Promise { started = true; options = options || {}; options.logLevel ??= LogLevel.Error; - Blazor._internal.loadWebAssemblyQuicklyTimeout = 3000; Blazor._internal.isBlazorWeb = true; // Defined here to avoid inadvertently imported enhanced navigation diff --git a/src/Components/Web.JS/src/GlobalExports.ts b/src/Components/Web.JS/src/GlobalExports.ts index 4af7b56fbf32..46ec7fc7479b 100644 --- a/src/Components/Web.JS/src/GlobalExports.ts +++ b/src/Components/Web.JS/src/GlobalExports.ts @@ -79,7 +79,6 @@ export interface IBlazor { receiveWebAssemblyDotNetDataStream?: (streamId: number, data: any, bytesRead: number, errorMessage: string) => void; receiveWebViewDotNetDataStream?: (streamId: number, data: any, bytesRead: number, errorMessage: string) => void; attachWebRendererInterop?: typeof attachWebRendererInterop; - loadWebAssemblyQuicklyTimeout?: number; isBlazorWeb?: boolean; // JSExport APIs diff --git a/src/Components/Web.JS/src/Services/WebRootComponentManager.ts b/src/Components/Web.JS/src/Services/WebRootComponentManager.ts index 5bbbc34d89f0..9952990c45ea 100644 --- a/src/Components/Web.JS/src/Services/WebRootComponentManager.ts +++ b/src/Components/Web.JS/src/Services/WebRootComponentManager.ts @@ -9,7 +9,6 @@ import { disposeCircuit, hasStartedServer, isCircuitAvailable, startCircuit, sta import { hasLoadedWebAssemblyPlatform, hasStartedLoadingWebAssemblyPlatform, hasStartedWebAssembly, isFirstUpdate, loadWebAssemblyPlatformIfNotStarted, resolveInitialUpdate, setWaitForRootComponents, startWebAssembly, updateWebAssemblyRootComponents, waitForBootConfigLoaded } from '../Boot.WebAssembly.Common'; import { MonoConfig } from 'dotnet'; import { RootComponentManager } from './RootComponentManager'; -import { Blazor } from '../GlobalExports'; import { getRendererer } from '../Rendering/Renderer'; import { isPageLoading } from './NavigationEnhancement'; import { setShouldPreserveContentOnInteractiveComponentDisposal } from '../Rendering/BrowserRenderer'; @@ -100,12 +99,18 @@ export class WebRootComponentManager implements DescriptorHandler, RootComponent return; } - if (descriptor.type === 'auto' || descriptor.type === 'webassembly') { - // Eagerly start loading the WebAssembly runtime, even though we're not - // activating the component yet. This is becuase WebAssembly resources - // may take a long time to load, so starting to load them now potentially reduces - // the time to interactvity. + // When encountering a component with a WebAssembly or Auto render mode, + // start loading the WebAssembly runtime, even though we're not + // activating the component yet. This is becuase WebAssembly resources + // may take a long time to load, so starting to load them now potentially reduces + // the time to interactvity. + if (descriptor.type === 'webassembly') { this.startLoadingWebAssemblyIfNotStarted(); + } else if (descriptor.type === 'auto') { + // If the WebAssembly runtime starts downloading because an Auto component was added to + // the page, we limit the maximum number of parallel WebAssembly resource downloads to 1 + // so that the performance of any Blazor Server circuit is minimally impacted. + this.startLoadingWebAssemblyIfNotStarted(/* maxParallelDownloadsOverride */ 1); } const ssrComponentId = this._nextSsrComponentId++; @@ -120,7 +125,7 @@ export class WebRootComponentManager implements DescriptorHandler, RootComponent this.circuitMayHaveNoRootComponents(); } - private async startLoadingWebAssemblyIfNotStarted() { + private async startLoadingWebAssemblyIfNotStarted(maxParallelDownloadsOverride?: number) { if (hasStartedLoadingWebAssemblyPlatform()) { return; } @@ -128,18 +133,12 @@ export class WebRootComponentManager implements DescriptorHandler, RootComponent setWaitForRootComponents(); const loadWebAssemblyPromise = loadWebAssemblyPlatformIfNotStarted(); - - // If WebAssembly resources can't be loaded within some time limit, - // we take note of this fact so that "auto" components fall back - // to using Blazor Server. - setTimeout(() => { - if (!hasLoadedWebAssemblyPlatform()) { - this.onWebAssemblyFailedToLoadQuickly(); - } - }, Blazor._internal.loadWebAssemblyQuicklyTimeout); - const bootConfig = await waitForBootConfigLoaded(); + if (maxParallelDownloadsOverride !== undefined) { + bootConfig.maxParallelDownloads = maxParallelDownloadsOverride; + } + if (!areWebAssemblyResourcesLikelyCached(bootConfig)) { // Since WebAssembly resources aren't likely cached, // they will probably need to be fetched over the network. @@ -299,6 +298,8 @@ export class WebRootComponentManager implements DescriptorHandler, RootComponent this.updateWebAssemblyRootComponents(batchJson); } } + + this.circuitMayHaveNoRootComponents(); } private updateWebAssemblyRootComponents(operationsJson: string) { diff --git a/src/Components/test/E2ETest/ServerRenderingTests/InteractivityTest.cs b/src/Components/test/E2ETest/ServerRenderingTests/InteractivityTest.cs index 889ab26ad5d2..e6068c118a99 100644 --- a/src/Components/test/E2ETest/ServerRenderingTests/InteractivityTest.cs +++ b/src/Components/test/E2ETest/ServerRenderingTests/InteractivityTest.cs @@ -598,22 +598,6 @@ public void DynamicallyAddedSsrComponents_CanGetRemoved_BeforeStreamingRendering AssertBrowserLogDoesNotContainErrors(); } - [Fact] - public void AutoRenderMode_UsesBlazorServer_IfWebAssemblyResourcesTakeTooLongToLoad() - { - Navigate(ServerPathBase); - Browser.Equal("Hello", () => Browser.Exists(By.TagName("h1")).Text); - ForceWebAssemblyResourceCacheMiss(); - BlockWebAssemblyResourceLoad(); - - Navigate($"{ServerPathBase}/streaming-interactivity"); - Browser.Equal("Not streaming", () => Browser.FindElement(By.Id("status")).Text); - - Browser.Click(By.Id(AddAutoPrerenderedId)); - Browser.Equal("True", () => Browser.FindElement(By.Id("is-interactive-0")).Text); - Browser.Equal("Server", () => Browser.FindElement(By.Id("render-mode-0")).Text); - } - [Fact] public void AutoRenderMode_UsesBlazorWebAssembly_AfterAddingWebAssemblyRootComponent() { @@ -661,8 +645,6 @@ public void AutoRenderMode_UsesBlazorServerOnFirstLoad_ThenWebAssemblyOnSuccessi Navigate(ServerPathBase); Browser.Equal("Hello", () => Browser.Exists(By.TagName("h1")).Text); BlockWebAssemblyResourceLoad(); - UseLongWebAssemblyLoadTimeout(); - ForceWebAssemblyResourceCacheMiss(); Navigate($"{ServerPathBase}/streaming-interactivity"); Browser.Equal("Not streaming", () => Browser.FindElement(By.Id("status")).Text); @@ -699,8 +681,6 @@ public void AutoRenderMode_UsesBlazorServer_IfBootResourceHashChanges() Navigate(ServerPathBase); Browser.Equal("Hello", () => Browser.Exists(By.TagName("h1")).Text); BlockWebAssemblyResourceLoad(); - UseLongWebAssemblyLoadTimeout(); - ForceWebAssemblyResourceCacheMiss(); Navigate($"{ServerPathBase}/streaming-interactivity"); Browser.Equal("Not streaming", () => Browser.FindElement(By.Id("status")).Text); @@ -717,14 +697,11 @@ public void AutoRenderMode_UsesBlazorServer_IfBootResourceHashChanges() Browser.Click(By.Id($"remove-counter-link-1")); Browser.DoesNotExist(By.Id("is-interactive-1")); - UseLongWebAssemblyLoadTimeout(); Browser.Navigate().Refresh(); Browser.Equal("True", () => Browser.FindElement(By.Id("is-interactive-0")).Text); Browser.Equal("WebAssembly", () => Browser.FindElement(By.Id("render-mode-0")).Text); - BlockWebAssemblyResourceLoad(); - UseLongWebAssemblyLoadTimeout(); ForceWebAssemblyResourceCacheMiss("dummy hash"); Browser.Navigate().Refresh(); @@ -768,8 +745,6 @@ public void AutoRenderMode_CanUseBlazorServer_WhenMultipleAutoComponentsAreAdded Navigate(ServerPathBase); Browser.Equal("Hello", () => Browser.Exists(By.TagName("h1")).Text); BlockWebAssemblyResourceLoad(); - UseLongWebAssemblyLoadTimeout(); - ForceWebAssemblyResourceCacheMiss(); Navigate($"{ServerPathBase}/streaming-interactivity"); Browser.Equal("Not streaming", () => Browser.FindElement(By.Id("status")).Text); @@ -913,6 +888,36 @@ public void AutoRenderMode_UsesBlazorServer_AfterWebAssemblyComponentsNoLongerEx Browser.Equal("Server", () => Browser.FindElement(By.Id("render-mode-3")).Text); } + [Fact] + public void WebAssemblyRenderMode_DownloadsWebAssemblyResourcesInParallel() + { + Navigate($"{ServerPathBase}/streaming-interactivity?ClearSiteData=True"); + Browser.Equal("Not streaming", () => Browser.FindElement(By.Id("status")).Text); + + Browser.Click(By.Id(AddWebAssemblyPrerenderedId)); + Browser.Equal("True", () => Browser.FindElement(By.Id("is-interactive-0")).Text); + Browser.Equal("WebAssembly", () => Browser.FindElement(By.Id("render-mode-0")).Text); + + Browser.True(() => GetMaxParallelWebAssemblyResourceDownloadCount() > 1); + } + + [Fact] + public void AutoRenderMode_DoesNotDownloadWebAssemblyResourcesInParallel() + { + Navigate($"{ServerPathBase}/streaming-interactivity?ClearSiteData=True"); + Browser.Equal("Not streaming", () => Browser.FindElement(By.Id("status")).Text); + + Browser.Click(By.Id(AddAutoPrerenderedId)); + Browser.Equal("True", () => Browser.FindElement(By.Id("is-interactive-0")).Text); + Browser.Equal("Server", () => Browser.FindElement(By.Id("render-mode-0")).Text); + + Browser.Click(By.Id(AddWebAssemblyPrerenderedId)); + Browser.Equal("True", () => Browser.FindElement(By.Id("is-interactive-1")).Text); + Browser.Equal("WebAssembly", () => Browser.FindElement(By.Id("render-mode-1")).Text); + + Browser.Equal(1, GetMaxParallelWebAssemblyResourceDownloadCount); + } + [Fact] public void Circuit_ShutsDown_WhenAllBlazorServerComponentsGetRemoved() { @@ -1169,6 +1174,9 @@ public void InteractiveServerRootComponent_CanAccessCircuitContext() private void BlockWebAssemblyResourceLoad() { + // Force a WebAssembly resource cache miss so that we can fall back to using server interactivity + ForceWebAssemblyResourceCacheMiss(); + ((IJavaScriptExecutor)Browser).ExecuteScript("sessionStorage.setItem('block-load-boot-resource', 'true')"); // Clear caches so that we can block the resource load @@ -1180,11 +1188,6 @@ private void UnblockWebAssemblyResourceLoad() ((IJavaScriptExecutor)Browser).ExecuteScript("window.unblockLoadBootResource()"); } - private void UseLongWebAssemblyLoadTimeout() - { - ((IJavaScriptExecutor)Browser).ExecuteScript("sessionStorage.setItem('use-long-auto-timeout', 'true')"); - } - private void ForceWebAssemblyResourceCacheMiss(string resourceHash = null) { if (resourceHash is not null) @@ -1198,6 +1201,11 @@ private void ForceWebAssemblyResourceCacheMiss(string resourceHash = null) } } + private long GetMaxParallelWebAssemblyResourceDownloadCount() + { + return (long)((IJavaScriptExecutor)Browser).ExecuteScript("return window['__aspnetcore__testing__max__parallel__resource__download__count'] || 0;"); + } + private string InteractiveCallsiteUrl(bool prerender, int? serverIncrement = default, int? webAssemblyIncrement = default) { var result = $"{ServerPathBase}/interactive-callsite?suppress-autostart&prerender={prerender}"; diff --git a/src/Components/test/E2ETest/Tests/StatePersistenceTest.cs b/src/Components/test/E2ETest/Tests/StatePersistenceTest.cs index f77a4e38076c..acd87a7df369 100644 --- a/src/Components/test/E2ETest/Tests/StatePersistenceTest.cs +++ b/src/Components/test/E2ETest/Tests/StatePersistenceTest.cs @@ -31,7 +31,7 @@ public StatePersistenceTest( public override Task InitializeAsync() => InitializeAsync(BrowserFixture.StreamingContext + _nextStreamingIdContext++); - // Validates that we can use persisted state across server, webasembly, and auto modes, with and without + // Validates that we can use persisted state across server, webassembly, and auto modes, with and without // streaming rendering. // For streaming rendering, we validate that the state is captured and restored after streaming completes. // For enhanced navigation we validate that the state is captured at the time components are rendered for @@ -101,6 +101,12 @@ public void CanRenderComponentWithPersistedState(bool suppressEnhancedNavigation RenderComponentsWithPersistentStateAndValidate(suppressEnhancedNavigation, mode, renderMode, streaming, interactiveRuntime: "server"); UnblockWebAssemblyResourceLoad(); + + if (suppressEnhancedNavigation) + { + RenderWebAssemblyComponentAndWaitForWebAssemblyRuntime(returnUrl: Browser.Url); + } + Browser.Navigate().Refresh(); RenderComponentsWithPersistentStateAndValidate(suppressEnhancedNavigation, mode, renderMode, streaming, interactiveRuntime: "wasm"); @@ -123,16 +129,19 @@ public async Task StateIsProvidedEveryTimeACircuitGetsCreated(string streaming) } Browser.Click(By.Id("page-with-components-link")); - RenderComponentsWithPersistentStateAndValidate(suppresEnhancedNavigation: false, mode, typeof(InteractiveServerRenderMode), streaming); + RenderComponentsWithPersistentStateAndValidate(suppressEnhancedNavigation: false, mode, typeof(InteractiveServerRenderMode), streaming); Browser.Click(By.Id("page-no-components-link")); // Ensure that the circuit is gone. await Task.Delay(1000); Browser.Click(By.Id("page-with-components-link-and-state")); - RenderComponentsWithPersistentStateAndValidate(suppresEnhancedNavigation: false, mode, typeof(InteractiveServerRenderMode), streaming, stateValue: "other"); + RenderComponentsWithPersistentStateAndValidate(suppressEnhancedNavigation: false, mode, typeof(InteractiveServerRenderMode), streaming, stateValue: "other"); } private void BlockWebAssemblyResourceLoad() { + // Clear local storage so that the resource hash is not found + ((IJavaScriptExecutor)Browser).ExecuteScript("localStorage.clear()"); + ((IJavaScriptExecutor)Browser).ExecuteScript("sessionStorage.setItem('block-load-boot-resource', 'true')"); // Clear caches so that we can block the resource load @@ -145,7 +154,7 @@ private void UnblockWebAssemblyResourceLoad() } private void RenderComponentsWithPersistentStateAndValidate( - bool suppresEnhancedNavigation, + bool suppressEnhancedNavigation, string mode, Type renderMode, string streaming, @@ -154,7 +163,7 @@ private void RenderComponentsWithPersistentStateAndValidate( { stateValue ??= "restored"; // No need to navigate if we are using enhanced navigation, the tests will have already navigated to the page via a link. - if (suppresEnhancedNavigation) + if (suppressEnhancedNavigation) { // In this case we suppress auto start to check some server side state before we boot Blazor. if (streaming == null) @@ -232,6 +241,18 @@ private void AssertPageState( } } + private void RenderWebAssemblyComponentAndWaitForWebAssemblyRuntime(string returnUrl = null) + { + Navigate("subdir/persistent-state/page-with-webassembly-interactivity"); + + Browser.Equal("True", () => Browser.FindElement(By.Id("is-interactive-counter")).Text); + + if (returnUrl is not null) + { + Navigate(returnUrl); + } + } + private void SuppressEnhancedNavigation(bool shouldSuppress) => EnhancedNavigationTestUtil.SuppressEnhancedNavigation(this, shouldSuppress); } diff --git a/src/Components/test/testassets/Components.TestServer/RazorComponents/App.razor b/src/Components/test/testassets/Components.TestServer/RazorComponents/App.razor index 925d2f4a0817..befd36e52a53 100644 --- a/src/Components/test/testassets/Components.TestServer/RazorComponents/App.razor +++ b/src/Components/test/testassets/Components.TestServer/RazorComponents/App.razor @@ -21,10 +21,8 @@ const enableClassicInitializers = sessionStorage.getItem('enable-classic-initializers') === 'true'; const suppressEnhancedNavigation = sessionStorage.getItem('suppress-enhanced-navigation') === 'true'; const blockLoadBootResource = sessionStorage.getItem('block-load-boot-resource') === 'true'; - const useLongWebAssemblyTimeout = sessionStorage.getItem('use-long-auto-timeout') === 'true'; sessionStorage.removeItem('suppress-enhanced-navigation'); sessionStorage.removeItem('block-load-boot-resource'); - sessionStorage.removeItem('use-long-auto-timeout'); sessionStorage.removeItem('enable-classic-initializers'); let loadBootResourceUnblocked = null; @@ -34,6 +32,9 @@ }); } + let maxParallelResourceDownloadCount = 0; + let currentParallelResourceDownloadCount = 0; + function callBlazorStart() { Blazor.start({ ssr: { @@ -55,19 +56,21 @@ // The following allows us to arbitrarily delay the loading of WebAssembly resources. // This is useful for guaranteeing that auto mode components will fall back on // using Blazor server. + currentParallelResourceDownloadCount++; return fetch(`${document.baseURI}WasmMinimal/_framework/${name}?`, { method: "GET", }).then(async (response) => { + if (currentParallelResourceDownloadCount > maxParallelResourceDownloadCount) { + maxParallelResourceDownloadCount = currentParallelResourceDownloadCount; + window['__aspnetcore__testing__max__parallel__resource__download__count'] = maxParallelResourceDownloadCount; + } + currentParallelResourceDownloadCount--; await loadBootResourceUnblocked; return response; }); } }, }, - }).then(() => { - if (useLongWebAssemblyTimeout) { - Blazor._internal.loadWebAssemblyQuicklyTimeout = 10000000; - } }).then(() => { const startedParagraph = document.createElement('p'); startedParagraph.id = 'blazor-started'; diff --git a/src/Components/test/testassets/Components.TestServer/RazorComponents/Components/InteractiveStreamingRenderingComponent.razor b/src/Components/test/testassets/Components.TestServer/RazorComponents/Components/InteractiveStreamingRenderingComponent.razor index 9017ffe1023e..de9d5114a204 100644 --- a/src/Components/test/testassets/Components.TestServer/RazorComponents/Components/InteractiveStreamingRenderingComponent.razor +++ b/src/Components/test/testassets/Components.TestServer/RazorComponents/Components/InteractiveStreamingRenderingComponent.razor @@ -100,6 +100,9 @@ else ComponentState _state = new(ImmutableArray.Empty, NextCounterId: 0); bool _isStreaming = false; + [CascadingParameter] + public HttpContext HttpContext { get; set; } + [SupplyParameterFromQuery] public string? InitialState { get; set; } @@ -109,6 +112,9 @@ else [SupplyParameterFromQuery] public bool DisableKeys { get; set; } + [SupplyParameterFromQuery] + public bool ClearSiteData { get; set; } + protected override async Task OnInitializedAsync() { if (InitialState is not null) @@ -116,6 +122,11 @@ else _state = ReadStateFromJson(InitialState); } + if (ClearSiteData) + { + HttpContext.Response.Headers["Clear-Site-Data"] = "\"*\""; + } + if (ShouldStream) { _isStreaming = true; diff --git a/src/Components/test/testassets/Components.TestServer/RazorComponents/Pages/PersistentState/PageWithWebAssemblyInteractivity.razor b/src/Components/test/testassets/Components.TestServer/RazorComponents/Pages/PersistentState/PageWithWebAssemblyInteractivity.razor new file mode 100644 index 000000000000..0d24a1dfcac2 --- /dev/null +++ b/src/Components/test/testassets/Components.TestServer/RazorComponents/Pages/PersistentState/PageWithWebAssemblyInteractivity.razor @@ -0,0 +1,8 @@ +@page "/persistent-state/page-with-webassembly-interactivity" + +

+ This page is used to ensure that the WebAssembly runtime is downloaded and available + so that WebAssembly interactivity will get used for components with the Auto render mode +

+ + From 4e5205472f84a4284f4de8c25d76c369bba5410e Mon Sep 17 00:00:00 2001 From: William Godbe Date: Tue, 16 Jan 2024 15:50:48 -0800 Subject: [PATCH 096/391] Add 8.0 runs to helix matrix (#53415) --- .azure/pipelines/helix-matrix.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.azure/pipelines/helix-matrix.yml b/.azure/pipelines/helix-matrix.yml index 97b16c666094..f28571a50063 100644 --- a/.azure/pipelines/helix-matrix.yml +++ b/.azure/pipelines/helix-matrix.yml @@ -13,6 +13,7 @@ schedules: include: - release/6.0 - release/7.0 + - release/8.0 always: false variables: From cde24309c1a9d2d4f33216a591b798cfa53ce9a8 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 16 Jan 2024 20:06:55 -0800 Subject: [PATCH 097/391] [release/8.0] [Blazor] Accept an HTML encoder instance from DI if available (#53213) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Backport of #53140 to release/8.0 /cc @javiercn # [Blazor] Accept an HTML encoder instance from DI if available Checks the DI container to see if an instance of HtmlEncoder or JavaScriptEncoder has been registered and uses that instance when present. Falls back to the default implementation if not present. This aligns Blazor behavior in this area with MVC. ## Description Blazor hardcodes the HtmlEncoder used by the app to encode strings into HTML to the default implementation. The defaults work well for English but can be too agressive in encoding characters in other alphabets, like Cyrillic, Greek, etc. or special letters within some languages (German, Spanish). This results in the text being encoded and the pages significantly increasing in size and possibly displaying incorrectly in some contexts. Fixes #47477 ## Customer Impact Customer's can't use more leaning HtmlEncoding options like in MVC/Razor pages. This can be a migration blocker from those if the app depends on this behavior. It's also a blocker if you need this, since there isn't a workaround that can be applied. ## Regression? - [ ] Yes - [X] No [If yes, specify the version the behavior has regressed from] ## Risk - [ ] High - [ ] Medium - [X] Low The fix consists on checking in DI for the instance. ## Verification - [X] Manual (required) - [ ] Automated ```razor @{ var value = "Тест текст"; } ``` Before: `` After configuring a custom encoder in DI: ``` builder.Services.AddWebEncoders(encoders => { encoders.TextEncoderSettings = new TextEncoderSettings(UnicodeRanges.All); }); ``` `` ## Packaging changes reviewed? - [ ] Yes - [ ] No - [x] N/A ---- ## When servicing release/2.1 - [ ] Make necessary changes in eng/PatchConfig.props --------- Co-authored-by: jacalvar --- .../Web/src/HtmlRendering/StaticHtmlRenderer.HtmlWriting.cs | 4 ++-- src/Components/Web/src/HtmlRendering/StaticHtmlRenderer.cs | 3 +++ 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/src/Components/Web/src/HtmlRendering/StaticHtmlRenderer.HtmlWriting.cs b/src/Components/Web/src/HtmlRendering/StaticHtmlRenderer.HtmlWriting.cs index 634b6a100f5b..9cbc12e2aecd 100644 --- a/src/Components/Web/src/HtmlRendering/StaticHtmlRenderer.HtmlWriting.cs +++ b/src/Components/Web/src/HtmlRendering/StaticHtmlRenderer.HtmlWriting.cs @@ -21,8 +21,8 @@ public partial class StaticHtmlRenderer string.Empty, typeof(FormMappingContext)); - private static readonly TextEncoder _javaScriptEncoder = JavaScriptEncoder.Default; - private TextEncoder _htmlEncoder = HtmlEncoder.Default; + private readonly TextEncoder _javaScriptEncoder; + private TextEncoder _htmlEncoder; private string? _closestSelectValueAsString; /// diff --git a/src/Components/Web/src/HtmlRendering/StaticHtmlRenderer.cs b/src/Components/Web/src/HtmlRendering/StaticHtmlRenderer.cs index ad6cd29a32af..28cc2d3e9e69 100644 --- a/src/Components/Web/src/HtmlRendering/StaticHtmlRenderer.cs +++ b/src/Components/Web/src/HtmlRendering/StaticHtmlRenderer.cs @@ -3,6 +3,7 @@ using System.Diagnostics.CodeAnalysis; using System.Runtime.ExceptionServices; +using System.Text.Encodings.Web; using Microsoft.AspNetCore.Components.RenderTree; using Microsoft.AspNetCore.Components.Web; using Microsoft.AspNetCore.Components.Web.HtmlRendering; @@ -30,6 +31,8 @@ public StaticHtmlRenderer(IServiceProvider serviceProvider, ILoggerFactory logge : base(serviceProvider, loggerFactory) { _navigationManager = serviceProvider.GetService(); + _htmlEncoder = serviceProvider.GetService() ?? HtmlEncoder.Default; + _javaScriptEncoder = serviceProvider.GetService() ?? JavaScriptEncoder.Default; } /// From 658ddfb9d54b976d4cae0ba77146d704745ed413 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 17 Jan 2024 14:02:09 +0000 Subject: [PATCH 098/391] [release/8.0] Update karma.local.conf.js (#53411) * Update karma.local.conf.js * Update karma.local.conf.js * Update karma.local.conf.js --------- Co-authored-by: Brennan --- .../scripts/karma.local.conf.js | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/src/SignalR/clients/ts/FunctionalTests/scripts/karma.local.conf.js b/src/SignalR/clients/ts/FunctionalTests/scripts/karma.local.conf.js index aff36430d900..8687904e9b7f 100644 --- a/src/SignalR/clients/ts/FunctionalTests/scripts/karma.local.conf.js +++ b/src/SignalR/clients/ts/FunctionalTests/scripts/karma.local.conf.js @@ -1,3 +1,5 @@ +const os = require('os'); + try { // Karma configuration for a local run (the default) const createKarmaConfig = require("./karma.base.conf"); @@ -45,8 +47,16 @@ try { // We use the launchers themselves to figure out if the browser exists. It's a bit sneaky, but it works. tryAddBrowser("ChromeHeadlessNoSandbox", ChromeHeadlessBrowser.prototype); tryAddBrowser("ChromiumHeadlessIgnoreCert", ChromiumHeadlessBrowser.prototype); - if (!tryAddBrowser("FirefoxHeadless", FirefoxHeadlessBrowser.prototype)) { - tryAddBrowser("FirefoxDeveloperHeadless", FirefoxDeveloperHeadlessBrowser.prototype); + + if (os.platform() !== 'darwin') { + if (!tryAddBrowser("FirefoxHeadless", FirefoxHeadlessBrowser.prototype)) { + tryAddBrowser("FirefoxDeveloperHeadless", FirefoxDeveloperHeadlessBrowser.prototype); + } + } else { + // https://bugzilla.mozilla.org/show_bug.cgi?id=1871366 + // https://bugzilla.mozilla.org/show_bug.cgi?id=1871447 + // It looks like some Entitlements issue with Firefox and macOS, additionally, it seems 'firefox-bin' is being removed which is what the karma firefox launcher uses by default + tryAddBrowser("FirefoxHeadlessMac", FirefoxHeadlessBrowser.prototype); } // We need to receive an argument from the caller, but globals don't seem to work, so we use an environment variable. @@ -71,6 +81,11 @@ try { // Ignore cert errors to allow our test cert to work (NEVER do this outside of testing) flags: ["--allow-insecure-localhost", "--ignore-certificate-errors"] + }, + FirefoxHeadlessMac: { + base: 'FirefoxHeadless', + + command: '/Applications/FireFox.app/Contents/MacOS/firefox' } }, }); From e91e94da53fb4974d3ede2b7d35866aed330cfc2 Mon Sep 17 00:00:00 2001 From: Mackinnon Buck Date: Wed, 17 Jan 2024 13:25:06 -0800 Subject: [PATCH 099/391] [Blazor] Allow `null` parameter values to be supplied to interactive components via enhanced page update (#53317) (#53342) # Allow `null` parameter values to be supplied to interactive components via enhanced page update Backport of https://github.com/dotnet/aspnetcore/pull/53317 Fixes an issue where a `NullRefrenceException` would be thrown if an enhanced page update supplied a `null` parameter to an interactive root component. ## Description In .NET 8, SSR'd components can supply updated parameters to existing interactive root components. If one of those updated parameters is `null`, an exception currently gets thrown from within the framework. This causes the circuit to crash when using Server interactivity, and it would causes an error to be logged in the browser console when using WebAssembly interactivity. This PR fixes the problem by treating `null` as a valid value for a serialized parameter that gets supplied to an interactive root component. Fixes #52434 ## Customer Impact Without this fix, customers may encounter the unfriendly exception and have a hard time figuring out the underlying cause. We have not yet seen customer reports of the issue, but it's possible that customers have this bug in their apps without knowing it, especially since it only occurs when supplying updated parameters to existing components (not when supplying the initial set of parameters). One workaround would be to use a different value than `null` to specify an empty parameter value, but this may not be possible in cases where the parameter gets supplied by the framework (e.g., via route value), or if the interactive root component's implementation is not under the developer's control. ## Regression? - [ ] Yes - [X] No Only applicable to new scenarios in .NET 8. ## Risk - [ ] High - [ ] Medium - [X] Low The fix is straightforward and well-tested. ## Verification - [x] Manual (required) - [x] Automated ## Packaging changes reviewed? - [ ] Yes - [ ] No - [X] N/A --- .../test/WebRootComponentParametersTest.cs | 55 ++++++++++++++++--- .../Shared/src/WebRootComponentParameters.cs | 14 ++++- .../EnhancedNavigationTest.cs | 32 +++++++++++ ...eRenderingComponentWithNullParameter.razor | 24 ++++++++ .../Shared/EnhancedNavLayout.razor | 2 + .../ComponentAcceptingNullParameter.razor | 52 ++++++++++++++++++ 6 files changed, 167 insertions(+), 12 deletions(-) create mode 100644 src/Components/test/testassets/Components.TestServer/RazorComponents/Pages/EnhancedNav/PageRenderingComponentWithNullParameter.razor create mode 100644 src/Components/test/testassets/TestContentPackage/ComponentAcceptingNullParameter.razor diff --git a/src/Components/Endpoints/test/WebRootComponentParametersTest.cs b/src/Components/Endpoints/test/WebRootComponentParametersTest.cs index 624a8d609b41..e18c6e556c8c 100644 --- a/src/Components/Endpoints/test/WebRootComponentParametersTest.cs +++ b/src/Components/Endpoints/test/WebRootComponentParametersTest.cs @@ -100,36 +100,73 @@ public void WebRootComponentParameters_DefinitelyEquals_ReturnsTrue_ForEmptySetO } [Fact] - public void WebRootComponentParameters_DefinitelyEquals_Throws_WhenComparingNonJsonElementParameterToJsonElement() + public void WebRootComponentParameters_DefinitelyEquals_ReturnsFalse_WhenComparingNonJsonElementParameterToJsonElement() { // Arrange var parameters1 = CreateParametersWithNonJsonElements(new() { ["First"] = 123 }); var parameters2 = CreateParameters(new() { ["First"] = 456 }); - // Act/assert - Assert.Throws(() => parameters1.DefinitelyEquals(parameters2)); + // Act + var result = parameters1.DefinitelyEquals(parameters2); + + // Assert + Assert.False(result); } [Fact] - public void WebRootComponentParameters_DefinitelyEquals_Throws_WhenComparingJsonElementParameterToNonJsonElement() + public void WebRootComponentParameters_DefinitelyEquals_ReturnsFalse_WhenComparingJsonElementParameterToNonJsonElement() { // Arrange var parameters1 = CreateParameters(new() { ["First"] = 123 }); var parameters2 = CreateParametersWithNonJsonElements(new() { ["First"] = 456 }); - // Act/assert - Assert.Throws(() => parameters1.DefinitelyEquals(parameters2)); + // Act + var result = parameters1.DefinitelyEquals(parameters2); + + // Assert + Assert.False(result); + } + + [Fact] + public void WebRootComponentParameters_DefinitelyEquals_ReturnsTrue_WhenComparingEqualNonJsonElementParameters() + { + // Arrange + var parameters1 = CreateParametersWithNonJsonElements(new() { ["First"] = 123 }); + var parameters2 = CreateParametersWithNonJsonElements(new() { ["First"] = 123 }); + + // Act + var result = parameters1.DefinitelyEquals(parameters2); + + // Assert + Assert.True(result); } [Fact] - public void WebRootComponentParameters_DefinitelyEquals_Throws_WhenComparingNonJsonElementParameters() + public void WebRootComponentParameters_DefinitelyEquals_ReturnsFalse_WhenComparingInequalNonJsonElementParameters() { // Arrange var parameters1 = CreateParametersWithNonJsonElements(new() { ["First"] = 123 }); var parameters2 = CreateParametersWithNonJsonElements(new() { ["First"] = 456 }); - // Act/assert - Assert.Throws(() => parameters1.DefinitelyEquals(parameters2)); + // Act + var result = parameters1.DefinitelyEquals(parameters2); + + // Assert + Assert.False(result); + } + + [Fact] + public void WebRootComponentParameters_DefinitelyEquals_ReturnsTrue_WhenComparingNullParameters() + { + // Arrange + var parameters1 = CreateParametersWithNonJsonElements(new() { ["First"] = null }); + var parameters2 = CreateParametersWithNonJsonElements(new() { ["First"] = null }); + + // Act + var result = parameters1.DefinitelyEquals(parameters2); + + // Assert + Assert.True(result); } private static WebRootComponentParameters CreateParameters(Dictionary parameters) diff --git a/src/Components/Shared/src/WebRootComponentParameters.cs b/src/Components/Shared/src/WebRootComponentParameters.cs index 9e93ce924b37..8f07e8fb524e 100644 --- a/src/Components/Shared/src/WebRootComponentParameters.cs +++ b/src/Components/Shared/src/WebRootComponentParameters.cs @@ -45,9 +45,17 @@ public bool DefinitelyEquals(in WebRootComponentParameters other) return false; } - var value = ((JsonElement)_serializedParameterValues[i]).GetRawText(); - var otherValue = ((JsonElement)other._serializedParameterValues[i]).GetRawText(); - if (!string.Equals(value, otherValue, StringComparison.Ordinal)) + // We expect each serialized parameter value to be either a 'JsonElement' or 'null'. + var value = _serializedParameterValues[i]; + var otherValue = other._serializedParameterValues[i]; + if (value is JsonElement jsonValue && otherValue is JsonElement otherJsonValue) + { + if (!string.Equals(jsonValue.GetRawText(), otherJsonValue.GetRawText(), StringComparison.Ordinal)) + { + return false; + } + } + else if (!Equals(value, otherValue)) { return false; } diff --git a/src/Components/test/E2ETest/ServerRenderingTests/EnhancedNavigationTest.cs b/src/Components/test/E2ETest/ServerRenderingTests/EnhancedNavigationTest.cs index f7d9e031ce95..7ed178425cfc 100644 --- a/src/Components/test/E2ETest/ServerRenderingTests/EnhancedNavigationTest.cs +++ b/src/Components/test/E2ETest/ServerRenderingTests/EnhancedNavigationTest.cs @@ -554,6 +554,38 @@ public void LocationChangingEventGetsInvokedOnEnhancedNavigationOnlyForRuntimeTh Browser.Equal("0", () => Browser.Exists(By.Id($"location-changing-count-{anotherRuntime}")).Text); } + [Theory] + [InlineData("server")] + [InlineData("wasm")] + public void CanReceiveNullParameterValueOnEnhancedNavigation(string renderMode) + { + // See: https://github.com/dotnet/aspnetcore/issues/52434 + Navigate($"{ServerPathBase}/nav"); + Browser.Equal("Hello", () => Browser.Exists(By.TagName("h1")).Text); + + Browser.Exists(By.TagName("nav")).FindElement(By.LinkText($"Null component parameter ({renderMode})")).Click(); + Browser.Equal("Page rendering component with null parameter", () => Browser.Exists(By.TagName("h1")).Text); + Browser.Equal("0", () => Browser.Exists(By.Id("current-count")).Text); + + Browser.Exists(By.Id("button-increment")).Click(); + Browser.Equal("0", () => Browser.Exists(By.Id("location-changed-count")).Text); + Browser.Equal("1", () => Browser.Exists(By.Id("current-count")).Text); + + // This refresh causes the interactive component to receive a 'null' parameter value + Browser.Exists(By.Id("button-refresh")).Click(); + Browser.Equal("1", () => Browser.Exists(By.Id("location-changed-count")).Text); + Browser.Equal("1", () => Browser.Exists(By.Id("current-count")).Text); + + // Increment the count again to ensure that interactivity still works + Browser.Exists(By.Id("button-increment")).Click(); + Browser.Equal("2", () => Browser.Exists(By.Id("current-count")).Text); + + // Even if the interactive runtime continues to function (as the WebAssembly runtime might), + // fail the test if any errors were logged to the browser console + var logs = Browser.GetBrowserLogs(LogLevel.Warning); + Assert.DoesNotContain(logs, log => log.Message.Contains("Error")); + } + private void AssertEnhancedUpdateCountEquals(long count) => Browser.Equal(count, () => ((IJavaScriptExecutor)Browser).ExecuteScript("return window.enhancedPageUpdateCount;")); diff --git a/src/Components/test/testassets/Components.TestServer/RazorComponents/Pages/EnhancedNav/PageRenderingComponentWithNullParameter.razor b/src/Components/test/testassets/Components.TestServer/RazorComponents/Pages/EnhancedNav/PageRenderingComponentWithNullParameter.razor new file mode 100644 index 000000000000..5603f0a2a3a3 --- /dev/null +++ b/src/Components/test/testassets/Components.TestServer/RazorComponents/Pages/EnhancedNav/PageRenderingComponentWithNullParameter.razor @@ -0,0 +1,24 @@ +@page "/nav/null-parameter/{mode}" +@using TestContentPackage + +@* https://github.com/dotnet/aspnetcore/issues/52434 *@ + +

Page rendering component with null parameter

+ +@if (Mode == "server") +{ + +} +else if (Mode == "wasm") +{ + +} +else +{ +

Expected a render mode of 'server' or 'wasm', but got '@Mode'.

+} + +@code { + [Parameter] + public string? Mode { get; set; } +} diff --git a/src/Components/test/testassets/Components.TestServer/RazorComponents/Shared/EnhancedNavLayout.razor b/src/Components/test/testassets/Components.TestServer/RazorComponents/Shared/EnhancedNavLayout.razor index 5362f567049e..d6c0928d658f 100644 --- a/src/Components/test/testassets/Components.TestServer/RazorComponents/Shared/EnhancedNavLayout.razor +++ b/src/Components/test/testassets/Components.TestServer/RazorComponents/Shared/EnhancedNavLayout.razor @@ -23,6 +23,8 @@ LocationChanged/LocationChanging event (server) LocationChanged/LocationChanging event (wasm) LocationChanged/LocationChanging event (server-and-wasm) + Null component parameter (server) + Null component parameter (wasm)
diff --git a/src/Components/test/testassets/TestContentPackage/ComponentAcceptingNullParameter.razor b/src/Components/test/testassets/TestContentPackage/ComponentAcceptingNullParameter.razor new file mode 100644 index 000000000000..404f82c5fa3e --- /dev/null +++ b/src/Components/test/testassets/TestContentPackage/ComponentAcceptingNullParameter.razor @@ -0,0 +1,52 @@ +@implements IDisposable +@inject NavigationManager NavigationManager +@using Microsoft.AspNetCore.Components.Routing + +

Value: @(Value ?? "(null)")

+ +@if (_interactive) +{ + + +

Location changed count: @_locationChangedCount

+} + +@code { + private bool _interactive; + private int _count; + private int _locationChangedCount; + + [Parameter] + public string Value { get; set; } + + protected override void OnAfterRender(bool firstRender) + { + if (firstRender) + { + NavigationManager.LocationChanged += OnLocationChanged; + _interactive = true; + StateHasChanged(); + } + } + + private void OnLocationChanged(object sender, LocationChangedEventArgs e) + { + _locationChangedCount++; + StateHasChanged(); + } + + private void Increment() + { + _count++; + } + + private void Refresh() + { + NavigationManager.Refresh(); + } + + public void Dispose() + { + NavigationManager.LocationChanged -= OnLocationChanged; + } +} From a48fa2c65030b315c294bce6d94bb49aeb749b16 Mon Sep 17 00:00:00 2001 From: DotNet Bot Date: Thu, 18 Jan 2024 00:48:24 +0000 Subject: [PATCH 100/391] Merged PR 36489: [internal/release/8.0] Update dependencies from dnceng/internal/dotnet-efcore This pull request updates the following dependencies [marker]: <> (Begin:e179a2a7-bc5d-4498-2467-08dbd53ba9ce) ## From https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - **Subscription**: e179a2a7-bc5d-4498-2467-08dbd53ba9ce - **Build**: 20240116.13 - **Date Produced**: January 16, 2024 5:25:41 PM UTC - **Commit**: 813b3f77e6761ae5f931d0581e9f43428538a6aa - **Branch**: refs/heads/internal/release/8.0 [DependencyUpdate]: <> (Begin) - **Updates**: - **dotnet-ef**: [from 8.0.2 to 8.0.2][3] - **Microsoft.EntityFrameworkCore**: [from 8.0.2 to 8.0.2][3] - **Microsoft.EntityFrameworkCore.Design**: [from 8.0.2 to 8.0.2][3] - **Microsoft.EntityFrameworkCore.InMemory**: [from 8.0.2 to 8.0.2][3] - **Microsoft.EntityFrameworkCore.Relational**: [from 8.0.2 to 8.0.2][3] - **Microsoft.EntityFrameworkCore.Sqlite**: [from 8.0.2 to 8.0.2][3] - **Microsoft.EntityFrameworkCore.SqlServer**: [from 8.0.2 to 8.0.2][3] - **Microsoft.EntityFrameworkCore.Tools**: [from 8.0.2 to 8.0.2][3] [3]: https://dev.azure.com/dnceng/internal/_git/dotnet-efcore/branches?baseVersion=GCe6ea1d746b32c71b700a1c89891ff5b390f7b36b&targetVersion=GC813b3f77e6761ae5f931d0581e9f43428538a6aa&_a=files [DependencyUpdate]: <> (End) [marker]: <> (End:e179a2a7-bc5d-4498-2467-08dbd53ba9ce) --- NuGet.config | 4 ++-- eng/Version.Details.xml | 16 ++++++++-------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/NuGet.config b/NuGet.config index 0dfccf30306f..35299f5b182a 100644 --- a/NuGet.config +++ b/NuGet.config @@ -6,7 +6,7 @@ - + @@ -30,7 +30,7 @@ - + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 918ea70bdaf9..d2862f5de2e5 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -11,35 +11,35 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - e6ea1d746b32c71b700a1c89891ff5b390f7b36b + 813b3f77e6761ae5f931d0581e9f43428538a6aa https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - e6ea1d746b32c71b700a1c89891ff5b390f7b36b + 813b3f77e6761ae5f931d0581e9f43428538a6aa https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - e6ea1d746b32c71b700a1c89891ff5b390f7b36b + 813b3f77e6761ae5f931d0581e9f43428538a6aa https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - e6ea1d746b32c71b700a1c89891ff5b390f7b36b + 813b3f77e6761ae5f931d0581e9f43428538a6aa https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - e6ea1d746b32c71b700a1c89891ff5b390f7b36b + 813b3f77e6761ae5f931d0581e9f43428538a6aa https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - e6ea1d746b32c71b700a1c89891ff5b390f7b36b + 813b3f77e6761ae5f931d0581e9f43428538a6aa https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - e6ea1d746b32c71b700a1c89891ff5b390f7b36b + 813b3f77e6761ae5f931d0581e9f43428538a6aa https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - e6ea1d746b32c71b700a1c89891ff5b390f7b36b + 813b3f77e6761ae5f931d0581e9f43428538a6aa https://dev.azure.com/dnceng/internal/_git/dotnet-runtime From bb84444a88433cb2d69d778cfa05c57671271262 Mon Sep 17 00:00:00 2001 From: DotNet Bot Date: Thu, 18 Jan 2024 05:00:06 +0000 Subject: [PATCH 101/391] [internal/release/8.0] Update dependencies from dnceng/internal/dotnet-runtime --- NuGet.config | 4 ++-- eng/Version.Details.xml | 34 +++++++++++++++++----------------- eng/Versions.props | 12 ++++++------ 3 files changed, 25 insertions(+), 25 deletions(-) diff --git a/NuGet.config b/NuGet.config index 35299f5b182a..bbb39434cdc9 100644 --- a/NuGet.config +++ b/NuGet.config @@ -9,7 +9,7 @@ - + @@ -33,7 +33,7 @@ - + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index d2862f5de2e5..5607dda094cc 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -121,9 +121,9 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime 5535e31a712343a63f5d7d796cd874e563e5ac14 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 806d04b02e42254b0be9b0b85119f3e9133462bd + 441c91dab92ca259db1952ee64f5a7522b12f59b https://dev.azure.com/dnceng/internal/_git/dotnet-runtime @@ -185,9 +185,9 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime 5535e31a712343a63f5d7d796cd874e563e5ac14 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 806d04b02e42254b0be9b0b85119f3e9133462bd + 441c91dab92ca259db1952ee64f5a7522b12f59b https://github.com/dotnet/source-build-externals @@ -255,9 +255,9 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime 5535e31a712343a63f5d7d796cd874e563e5ac14 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 806d04b02e42254b0be9b0b85119f3e9133462bd + 441c91dab92ca259db1952ee64f5a7522b12f59b https://dev.azure.com/dnceng/internal/_git/dotnet-runtime @@ -277,15 +277,15 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 806d04b02e42254b0be9b0b85119f3e9133462bd + 441c91dab92ca259db1952ee64f5a7522b12f59b https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 806d04b02e42254b0be9b0b85119f3e9133462bd + 441c91dab92ca259db1952ee64f5a7522b12f59b https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 806d04b02e42254b0be9b0b85119f3e9133462bd + 441c91dab92ca259db1952ee64f5a7522b12f59b https://dev.azure.com/dnceng/internal/_git/dotnet-runtime @@ -318,20 +318,20 @@ --> https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 806d04b02e42254b0be9b0b85119f3e9133462bd + 441c91dab92ca259db1952ee64f5a7522b12f59b - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 806d04b02e42254b0be9b0b85119f3e9133462bd + 441c91dab92ca259db1952ee64f5a7522b12f59b https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 806d04b02e42254b0be9b0b85119f3e9133462bd + 441c91dab92ca259db1952ee64f5a7522b12f59b - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 806d04b02e42254b0be9b0b85119f3e9133462bd + 441c91dab92ca259db1952ee64f5a7522b12f59b https://github.com/dotnet/xdt @@ -368,9 +368,9 @@ - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 806d04b02e42254b0be9b0b85119f3e9133462bd + 441c91dab92ca259db1952ee64f5a7522b12f59b https://github.com/dotnet/winforms diff --git a/eng/Versions.props b/eng/Versions.props index 09bb5fe3a033..3653358bbf5a 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -71,7 +71,7 @@ 8.0.2 8.0.2 8.0.2 - 8.0.2-servicing.24065.5 + 8.0.2-servicing.24066.27 8.0.0 8.0.0 8.0.0 @@ -92,7 +92,7 @@ 8.0.0 8.0.0 8.0.0 - 8.0.2-servicing.24065.5 + 8.0.2-servicing.24066.27 8.0.0 8.0.0 8.0.0 @@ -108,7 +108,7 @@ 8.0.0 8.0.1 8.0.0 - 8.0.2-servicing.24065.5 + 8.0.2-servicing.24066.27 8.0.0 8.0.0 8.0.0 @@ -124,13 +124,13 @@ 8.0.0 8.0.0 8.0.0 - 8.0.1 + 8.0.2 8.0.0 8.0.0 8.0.0 - 8.0.2-servicing.24065.5 + 8.0.2-servicing.24066.27 - 8.0.2-servicing.24065.5 + 8.0.2-servicing.24066.27 8.0.0 8.0.1 From 8fdc5e83158ba585d172ac85aacde7e0818fd5eb Mon Sep 17 00:00:00 2001 From: DotNet Bot Date: Thu, 18 Jan 2024 06:31:10 +0000 Subject: [PATCH 102/391] [internal/release/8.0] Update dependencies from dnceng/internal/dotnet-efcore --- NuGet.config | 4 ++-- eng/Version.Details.xml | 16 ++++++++-------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/NuGet.config b/NuGet.config index bbb39434cdc9..0e285cbd438b 100644 --- a/NuGet.config +++ b/NuGet.config @@ -6,7 +6,7 @@ - + @@ -30,7 +30,7 @@ - + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 5607dda094cc..2aa5c33f5244 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -11,35 +11,35 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 813b3f77e6761ae5f931d0581e9f43428538a6aa + 4016ea7917df4be7a23ea18c2cf934249a7a5168 https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 813b3f77e6761ae5f931d0581e9f43428538a6aa + 4016ea7917df4be7a23ea18c2cf934249a7a5168 https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 813b3f77e6761ae5f931d0581e9f43428538a6aa + 4016ea7917df4be7a23ea18c2cf934249a7a5168 https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 813b3f77e6761ae5f931d0581e9f43428538a6aa + 4016ea7917df4be7a23ea18c2cf934249a7a5168 https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 813b3f77e6761ae5f931d0581e9f43428538a6aa + 4016ea7917df4be7a23ea18c2cf934249a7a5168 https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 813b3f77e6761ae5f931d0581e9f43428538a6aa + 4016ea7917df4be7a23ea18c2cf934249a7a5168 https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 813b3f77e6761ae5f931d0581e9f43428538a6aa + 4016ea7917df4be7a23ea18c2cf934249a7a5168 https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 813b3f77e6761ae5f931d0581e9f43428538a6aa + 4016ea7917df4be7a23ea18c2cf934249a7a5168 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime From 0c785c548b249b978199fe28825cb8b921ce1fd6 Mon Sep 17 00:00:00 2001 From: DotNet Bot Date: Thu, 18 Jan 2024 11:31:37 +0000 Subject: [PATCH 103/391] [internal/release/8.0] Update dependencies from dnceng/internal/dotnet-runtime --- NuGet.config | 4 ++-- eng/Version.Details.xml | 36 ++++++++++++++++++------------------ eng/Versions.props | 12 ++++++------ 3 files changed, 26 insertions(+), 26 deletions(-) diff --git a/NuGet.config b/NuGet.config index 0e285cbd438b..357221b0c630 100644 --- a/NuGet.config +++ b/NuGet.config @@ -9,7 +9,7 @@ - + @@ -33,7 +33,7 @@ - + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 2aa5c33f5244..e9a2b78405f8 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -121,9 +121,9 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime 5535e31a712343a63f5d7d796cd874e563e5ac14 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 441c91dab92ca259db1952ee64f5a7522b12f59b + 1381d5ebd2ab1f292848d5b19b80cf71ac332508 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime @@ -177,17 +177,17 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime 5535e31a712343a63f5d7d796cd874e563e5ac14 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - bf5e279d9239bfef5bb1b8d6212f1b971c434606 + 1381d5ebd2ab1f292848d5b19b80cf71ac332508 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime 5535e31a712343a63f5d7d796cd874e563e5ac14 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 441c91dab92ca259db1952ee64f5a7522b12f59b + 1381d5ebd2ab1f292848d5b19b80cf71ac332508 https://github.com/dotnet/source-build-externals @@ -257,7 +257,7 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 441c91dab92ca259db1952ee64f5a7522b12f59b + 1381d5ebd2ab1f292848d5b19b80cf71ac332508 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime @@ -277,15 +277,15 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 441c91dab92ca259db1952ee64f5a7522b12f59b + 1381d5ebd2ab1f292848d5b19b80cf71ac332508 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 441c91dab92ca259db1952ee64f5a7522b12f59b + 1381d5ebd2ab1f292848d5b19b80cf71ac332508 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 441c91dab92ca259db1952ee64f5a7522b12f59b + 1381d5ebd2ab1f292848d5b19b80cf71ac332508 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime @@ -318,20 +318,20 @@ --> https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 441c91dab92ca259db1952ee64f5a7522b12f59b + 1381d5ebd2ab1f292848d5b19b80cf71ac332508 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 441c91dab92ca259db1952ee64f5a7522b12f59b + 1381d5ebd2ab1f292848d5b19b80cf71ac332508 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 441c91dab92ca259db1952ee64f5a7522b12f59b + 1381d5ebd2ab1f292848d5b19b80cf71ac332508 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 441c91dab92ca259db1952ee64f5a7522b12f59b + 1381d5ebd2ab1f292848d5b19b80cf71ac332508 https://github.com/dotnet/xdt @@ -368,9 +368,9 @@ - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 441c91dab92ca259db1952ee64f5a7522b12f59b + 1381d5ebd2ab1f292848d5b19b80cf71ac332508 https://github.com/dotnet/winforms diff --git a/eng/Versions.props b/eng/Versions.props index 3653358bbf5a..f2dc400692f8 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -71,7 +71,7 @@ 8.0.2 8.0.2 8.0.2 - 8.0.2-servicing.24066.27 + 8.0.2-servicing.24067.11 8.0.0 8.0.0 8.0.0 @@ -92,7 +92,7 @@ 8.0.0 8.0.0 8.0.0 - 8.0.2-servicing.24066.27 + 8.0.2-servicing.24067.11 8.0.0 8.0.0 8.0.0 @@ -106,9 +106,9 @@ 8.0.0 8.0.0 8.0.0 - 8.0.1 + 8.0.2 8.0.0 - 8.0.2-servicing.24066.27 + 8.0.2-servicing.24067.11 8.0.0 8.0.0 8.0.0 @@ -128,9 +128,9 @@ 8.0.0 8.0.0 8.0.0 - 8.0.2-servicing.24066.27 + 8.0.2-servicing.24067.11 - 8.0.2-servicing.24066.27 + 8.0.2-servicing.24067.11 8.0.0 8.0.1 From da7e9894ce22ef8cc02e5acc56e95a6f8cf8f644 Mon Sep 17 00:00:00 2001 From: DotNet Bot Date: Thu, 18 Jan 2024 13:20:34 +0000 Subject: [PATCH 104/391] [internal/release/8.0] Update dependencies from dnceng/internal/dotnet-efcore --- NuGet.config | 4 ++-- eng/Version.Details.xml | 16 ++++++++-------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/NuGet.config b/NuGet.config index 357221b0c630..f038c0aad35f 100644 --- a/NuGet.config +++ b/NuGet.config @@ -6,7 +6,7 @@ - + @@ -30,7 +30,7 @@ - + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index e9a2b78405f8..4d6216446367 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -11,35 +11,35 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 4016ea7917df4be7a23ea18c2cf934249a7a5168 + a97f6ffcf78100056683c8c3b116721a89e5c58c https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 4016ea7917df4be7a23ea18c2cf934249a7a5168 + a97f6ffcf78100056683c8c3b116721a89e5c58c https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 4016ea7917df4be7a23ea18c2cf934249a7a5168 + a97f6ffcf78100056683c8c3b116721a89e5c58c https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 4016ea7917df4be7a23ea18c2cf934249a7a5168 + a97f6ffcf78100056683c8c3b116721a89e5c58c https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 4016ea7917df4be7a23ea18c2cf934249a7a5168 + a97f6ffcf78100056683c8c3b116721a89e5c58c https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 4016ea7917df4be7a23ea18c2cf934249a7a5168 + a97f6ffcf78100056683c8c3b116721a89e5c58c https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 4016ea7917df4be7a23ea18c2cf934249a7a5168 + a97f6ffcf78100056683c8c3b116721a89e5c58c https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 4016ea7917df4be7a23ea18c2cf934249a7a5168 + a97f6ffcf78100056683c8c3b116721a89e5c58c https://dev.azure.com/dnceng/internal/_git/dotnet-runtime From a7ecf260cbbb4101ae5d5cce154c8fd352cc0568 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 1 Feb 2024 13:21:36 -0800 Subject: [PATCH 105/391] [release/8.0] (deps): Bump src/submodules/googletest (#53756) Bumps [src/submodules/googletest](https://github.com/google/googletest) from `7e33b6a` to `4565741`. - [Release notes](https://github.com/google/googletest/releases) - [Commits](https://github.com/google/googletest/compare/7e33b6a1c497ced1e98fc60175aeb4678419281c...456574145cf71a5375777cab58453acfd92a920b) --- updated-dependencies: - dependency-name: src/submodules/googletest dependency-type: direct:production ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- src/submodules/googletest | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/submodules/googletest b/src/submodules/googletest index 7e33b6a1c497..456574145cf7 160000 --- a/src/submodules/googletest +++ b/src/submodules/googletest @@ -1 +1 @@ -Subproject commit 7e33b6a1c497ced1e98fc60175aeb4678419281c +Subproject commit 456574145cf71a5375777cab58453acfd92a920b From 372a712ff36cb53412795558bc2cebaeaa83a004 Mon Sep 17 00:00:00 2001 From: vseanreesermsft <78103370+vseanreesermsft@users.noreply.github.com> Date: Tue, 6 Feb 2024 14:22:34 -0800 Subject: [PATCH 106/391] Update branding to 8.0.3 (#53854) --- eng/Versions.props | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/eng/Versions.props b/eng/Versions.props index f8ea2770dc0c..45f184345849 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -8,10 +8,10 @@ 8 0 - 2 + 3 - true + false 7.1.2 + 1.10.2 0.9.9 0.13.0 4.2.1 diff --git a/src/Caching/SqlServer/src/Microsoft.Extensions.Caching.SqlServer.csproj b/src/Caching/SqlServer/src/Microsoft.Extensions.Caching.SqlServer.csproj index 4be0de35b382..4c9ccf3a112e 100644 --- a/src/Caching/SqlServer/src/Microsoft.Extensions.Caching.SqlServer.csproj +++ b/src/Caching/SqlServer/src/Microsoft.Extensions.Caching.SqlServer.csproj @@ -19,6 +19,7 @@ + From b62909df58a6bd5772c69fcff01b16bd8099b905 Mon Sep 17 00:00:00 2001 From: Andrew Casey Date: Tue, 6 Feb 2024 14:27:29 -0800 Subject: [PATCH 108/391] Update Selenium (#53775) ...as port of normal buildops rotation. --- eng/Versions.props | 4 ++-- src/Components/benchmarkapps/Wasm.Performance/dockerfile | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/eng/Versions.props b/eng/Versions.props index eb986e5fa89e..30b5e9c3378f 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -314,8 +314,8 @@ 1.28.0 3.0.0 7.2.4 - 4.14.1 - 4.14.1 + 4.17.0 + 4.17.0 1.4.0 4.0.0 2.6.122 diff --git a/src/Components/benchmarkapps/Wasm.Performance/dockerfile b/src/Components/benchmarkapps/Wasm.Performance/dockerfile index 87c97b3c7bf6..be10d1e1e786 100644 --- a/src/Components/benchmarkapps/Wasm.Performance/dockerfile +++ b/src/Components/benchmarkapps/Wasm.Performance/dockerfile @@ -28,7 +28,7 @@ RUN .dotnet/dotnet publish -c Release --no-restore -o /app ./src/Components/benc RUN chmod +x /app/Wasm.Performance.Driver WORKDIR /app -FROM selenium/standalone-chrome:114.0 as final +FROM selenium/standalone-chrome:120.0 as final COPY --from=build ./app ./ COPY ./exec.sh ./ From 67316529dcf7b7b1c67abc0c616fa96bc726de34 Mon Sep 17 00:00:00 2001 From: Andrew Casey Date: Tue, 6 Feb 2024 14:27:43 -0800 Subject: [PATCH 109/391] Bump Microsoft.Data.SqlClient version to 4.0.5 (#53772) --- eng/Versions.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/eng/Versions.props b/eng/Versions.props index 30b5e9c3378f..9ea1583b734f 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -328,7 +328,7 @@ $(XunitVersion) $(XunitVersion) 2.4.3 - 4.0.1 + 4.0.5 6.0.0-preview.3.21167.1 1.4.3 From a7ed28a5e2fc4b42ea546dac24e1f732c60a15b6 Mon Sep 17 00:00:00 2001 From: Arvin Kahbazi Date: Wed, 7 Feb 2024 01:58:40 +0330 Subject: [PATCH 110/391] Add ForgotPasswordRequest to STJ source generation context (#52714) (#52830) Co-authored-by: joegoldman2 <147369450+joegoldman2@users.noreply.github.com> --- .../Core/src/Data/IdentityEndpointsJsonSerializerContext.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/src/Identity/Core/src/Data/IdentityEndpointsJsonSerializerContext.cs b/src/Identity/Core/src/Data/IdentityEndpointsJsonSerializerContext.cs index 1c3f09fbd462..e459042e9ce4 100644 --- a/src/Identity/Core/src/Data/IdentityEndpointsJsonSerializerContext.cs +++ b/src/Identity/Core/src/Data/IdentityEndpointsJsonSerializerContext.cs @@ -9,6 +9,7 @@ namespace Microsoft.AspNetCore.Identity.Data; [JsonSerializable(typeof(LoginRequest))] [JsonSerializable(typeof(RefreshRequest))] [JsonSerializable(typeof(ResetPasswordRequest))] +[JsonSerializable(typeof(ForgotPasswordRequest))] [JsonSerializable(typeof(ResendConfirmationEmailRequest))] [JsonSerializable(typeof(InfoRequest))] [JsonSerializable(typeof(InfoResponse))] From cdd2342a5a932d363ff98e38123d513a80be0566 Mon Sep 17 00:00:00 2001 From: Javier Calvarro Nelson Date: Tue, 6 Feb 2024 23:29:04 +0100 Subject: [PATCH 111/391] [Blazor] Fixed encoded values on Blazor Router (#53470) (#53538) As part of the routing unification process we switched the way we were decoding the URL prior to feeding it to routing and that introduced a small regression in interactive routing compared to .NET 7.0. This commit fixes that regression by using the same logic for decoding the URL in the client that is used on the server. In addition to that, the Blazor router now post processes the URL to replace instances of `%2F` with `/` when providing values to maintain the behavior in 7.0 where it used UnescapeDataString. This also makes the routing on the server and on the client consistent in their handling of encoded `/` characters. --- .../Microsoft.AspNetCore.Components.csproj | 3 +- .../Components/src/Routing/RouteContext.cs | 50 ++++++++++++++++++- .../Components/src/Routing/RouteTable.cs | 25 ++++++++++ .../UnifiedRoutingTests.cs | 31 ++++++++---- .../Routing/Encoded/EncodedCatchAll.razor | 25 ++++++++++ .../Encoded/EncodedComplexSegments.razor | 24 +++++++++ .../Routing/Encoded/EncodedParameters.razor | 24 +++++++++ .../RoutingTestCasesWithEncoding.razor | 15 ++++++ 8 files changed, 186 insertions(+), 11 deletions(-) create mode 100644 src/Components/test/testassets/Components.TestServer/RazorComponents/Pages/Routing/Encoded/EncodedCatchAll.razor create mode 100644 src/Components/test/testassets/Components.TestServer/RazorComponents/Pages/Routing/Encoded/EncodedComplexSegments.razor create mode 100644 src/Components/test/testassets/Components.TestServer/RazorComponents/Pages/Routing/Encoded/EncodedParameters.razor create mode 100644 src/Components/test/testassets/Components.TestServer/RazorComponents/Pages/Routing/RoutingTestCasesWithEncoding.razor diff --git a/src/Components/Components/src/Microsoft.AspNetCore.Components.csproj b/src/Components/Components/src/Microsoft.AspNetCore.Components.csproj index 2d13b0ccb7fc..9c4ab4216a93 100644 --- a/src/Components/Components/src/Microsoft.AspNetCore.Components.csproj +++ b/src/Components/Components/src/Microsoft.AspNetCore.Components.csproj @@ -19,10 +19,11 @@ + - + diff --git a/src/Components/Components/src/Routing/RouteContext.cs b/src/Components/Components/src/Routing/RouteContext.cs index de7aeedb7e5d..bb2739887103 100644 --- a/src/Components/Components/src/Routing/RouteContext.cs +++ b/src/Components/Components/src/Routing/RouteContext.cs @@ -1,7 +1,11 @@ // Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. +using System.Buffers; using System.Diagnostics.CodeAnalysis; +using System.Runtime.CompilerServices; +using System.Text; +using Microsoft.AspNetCore.Internal; using Microsoft.AspNetCore.Routing.Tree; using static Microsoft.AspNetCore.Internal.LinkerFlags; @@ -11,7 +15,28 @@ internal sealed class RouteContext { public RouteContext(string path) { - Path = Uri.UnescapeDataString(path); + Path = path.Contains('%') ? GetDecodedPath(path) : path; + + [SkipLocalsInit] + static string GetDecodedPath(string path) + { + using var uriBuffer = path.Length < 128 ? + new UriBuffer(stackalloc byte[path.Length]) : + new UriBuffer(path.Length); + + var utf8Span = uriBuffer.Buffer; + + if (Encoding.UTF8.TryGetBytes(path.AsSpan(), utf8Span, out var written)) + { + utf8Span = utf8Span[..written]; + var decodedLength = UrlDecoder.DecodeInPlace(utf8Span, isFormEncoding: false); + utf8Span = utf8Span[..decodedLength]; + path = Encoding.UTF8.GetString(utf8Span); + return path; + } + + return path; + } } public string Path { get; set; } @@ -24,4 +49,27 @@ public RouteContext(string path) public Type? Handler => Entry?.Handler; public IReadOnlyDictionary? Parameters => RouteValues; + + private readonly ref struct UriBuffer + { + private readonly byte[]? _pooled; + + public Span Buffer { get; } + + public UriBuffer(int length) + { + _pooled = ArrayPool.Shared.Rent(length); + Buffer = _pooled.AsSpan(0, length); + } + + public UriBuffer(Span buffer) => Buffer = buffer; + + public void Dispose() + { + if (_pooled != null) + { + ArrayPool.Shared.Return(_pooled); + } + } + } } diff --git a/src/Components/Components/src/Routing/RouteTable.cs b/src/Components/Components/src/Routing/RouteTable.cs index f657221bdde3..2d4c9335cc87 100644 --- a/src/Components/Components/src/Routing/RouteTable.cs +++ b/src/Components/Components/src/Routing/RouteTable.cs @@ -28,6 +28,18 @@ internal static RouteData ProcessParameters(RouteData endpointRouteData) ((Type page, string template) key) => RouteTableFactory.CreateEntry(key.page, key.template)); var routeValueDictionary = new RouteValueDictionary(endpointRouteData.RouteValues); + foreach (var kvp in endpointRouteData.RouteValues) + { + if (kvp.Value is string value) + { + // At this point the values have already been URL decoded, but we might not have decoded '/' characters. + // as that can cause issues when routing the request (You wouldn't be able to accept parameters that contained '/'). + // To be consistent with existing Blazor quirks that used Uri.UnescapeDataString, we'll replace %2F with /. + // We don't want to call Uri.UnescapeDataString here as that would decode other characters that we don't want to decode, + // for example, any value that was "double" encoded (for whatever reason) within the original URL. + routeValueDictionary[kvp.Key] = value.Replace("%2F", "/", StringComparison.OrdinalIgnoreCase); + } + } ProcessParameters(entry, routeValueDictionary); return new RouteData(endpointRouteData.PageType, routeValueDictionary) { @@ -66,6 +78,19 @@ private static void ProcessParameters(InboundRouteEntry entry, RouteValueDiction } } + foreach (var kvp in routeValues) + { + if (kvp.Value is string value) + { + // At this point the values have already been URL decoded, but we might not have decoded '/' characters. + // as that can cause issues when routing the request (You wouldn't be able to accept parameters that contained '/'). + // To be consistent with existing Blazor quirks that used Uri.UnescapeDataString, we'll replace %2F with /. + // We don't want to call Uri.UnescapeDataString here as that would decode other characters that we don't want to decode, + // for example, any value that was "double" encoded (for whatever reason) within the original URL. + routeValues[kvp.Key] = value.Replace("%2F", "/", StringComparison.OrdinalIgnoreCase); + } + } + foreach (var parameter in entry.RoutePattern.Parameters) { // Add null values for optional route parameters that weren't provided. diff --git a/src/Components/test/E2ETest/ServerRenderingTests/UnifiedRoutingTests.cs b/src/Components/test/E2ETest/ServerRenderingTests/UnifiedRoutingTests.cs index 11100ee530a2..d0fce2fb6203 100644 --- a/src/Components/test/E2ETest/ServerRenderingTests/UnifiedRoutingTests.cs +++ b/src/Components/test/E2ETest/ServerRenderingTests/UnifiedRoutingTests.cs @@ -24,10 +24,19 @@ public UnifiedRoutingTests( public override Task InitializeAsync() => InitializeAsync(BrowserFixture.StreamingContext); - [Fact] - public void Routing_CanRenderPagesWithParameters_And_TransitionToInteractive() + [Theory] + [InlineData("routing/parameters/value", "value")] + // Issue 53138 + [InlineData("%F0%9F%99%82/routing/parameters/http%3A%2F%2Fwww.example.com%2Flogin%2Fcallback", "http://www.example.com/login/callback")] + // Note this double encodes the final 2 slashes + [InlineData("%F0%9F%99%82/routing/parameters/http%3A%2F%2Fwww.example.com%2520login%2520callback", "http://www.example.com%20login%20callback")] + // Issue 53262 + [InlineData("routing/parameters/%21%40%23%24%25%5E%26%2A%28%29_%2B-%3D%5B%5D%7B%7D%5C%5C%7C%3B%27%3A%5C%22%3E%3F.%2F", """!@#$%^&*()_+-=[]{}\\|;':\">?./""")] + // Issue 52808 + [InlineData("routing/parameters/parts%20w%2F%20issue", "parts w/ issue")] + public void Routing_CanRenderPagesWithParameters_And_TransitionToInteractive(string url, string expectedValue) { - ExecuteRoutingTestCore("routing/parameters/value", "value"); + ExecuteRoutingTestCore(url, expectedValue); } [Fact] @@ -36,10 +45,12 @@ public void Routing_CanRenderPagesWithConstrainedParameters_And_TransitionToInte ExecuteRoutingTestCore("routing/constraints/5", "5"); } - [Fact] - public void Routing_CanRenderPagesWithComplexSegments_And_TransitionToInteractive() + [Theory] + [InlineData("routing/complex-segment(value)", "value")] + [InlineData("%F0%9F%99%82/routing/%F0%9F%99%82complex-segment(http%3A%2F%2Fwww.example.com%2Flogin%2Fcallback)", "http://www.example.com/login/callback")] + public void Routing_CanRenderPagesWithComplexSegments_And_TransitionToInteractive(string url, string expectedValue) { - ExecuteRoutingTestCore("routing/complex-segment(value)", "value"); + ExecuteRoutingTestCore(url, expectedValue); } [Fact] @@ -54,10 +65,12 @@ public void Routing_CanRenderPagesWithOptionalParameters_And_TransitionToInterac ExecuteRoutingTestCore("routing/optional", "null"); } - [Fact] - public void Routing_CanRenderPagesWithCatchAllParameters_And_TransitionToInteractive() + [Theory] + [InlineData("routing/catch-all/rest/of/the/path", "rest/of/the/path")] + [InlineData("%F0%9F%99%82/routing/catch-all/http%3A%2F%2Fwww.example.com%2Flogin%2Fcallback/another", "http://www.example.com/login/callback/another")] + public void Routing_CanRenderPagesWithCatchAllParameters_And_TransitionToInteractive(string url, string expectedValue) { - ExecuteRoutingTestCore("routing/catch-all/rest/of/the/path", "rest/of/the/path"); + ExecuteRoutingTestCore(url, expectedValue); } [Fact] diff --git a/src/Components/test/testassets/Components.TestServer/RazorComponents/Pages/Routing/Encoded/EncodedCatchAll.razor b/src/Components/test/testassets/Components.TestServer/RazorComponents/Pages/Routing/Encoded/EncodedCatchAll.razor new file mode 100644 index 000000000000..94a4010f2a7d --- /dev/null +++ b/src/Components/test/testassets/Components.TestServer/RazorComponents/Pages/Routing/Encoded/EncodedCatchAll.razor @@ -0,0 +1,25 @@ +@page "/🙂/routing/catch-all/{*parameter}" + +

Catch all

+ +

@Parameter

+ +@if (_interactive) +{ +

Rendered interactive.

+} + +@code { + private bool _interactive; + + [Parameter] public string Parameter { get; set; } + + protected override void OnAfterRender(bool firstRender) + { + if (firstRender) + { + _interactive = true; + StateHasChanged(); + } + } +} diff --git a/src/Components/test/testassets/Components.TestServer/RazorComponents/Pages/Routing/Encoded/EncodedComplexSegments.razor b/src/Components/test/testassets/Components.TestServer/RazorComponents/Pages/Routing/Encoded/EncodedComplexSegments.razor new file mode 100644 index 000000000000..aef674fc997b --- /dev/null +++ b/src/Components/test/testassets/Components.TestServer/RazorComponents/Pages/Routing/Encoded/EncodedComplexSegments.razor @@ -0,0 +1,24 @@ +@page "/🙂/routing/🙂complex-segment({parameter})" +

Complex segment parameters

+ +

@Parameter

+ +@if(_interactive) +{ +

Rendered interactive.

+} + +@code { + private bool _interactive; + + [Parameter] public string Parameter { get; set; } + + protected override void OnAfterRender(bool firstRender) + { + if (firstRender) + { + _interactive = true; + StateHasChanged(); + } + } +} diff --git a/src/Components/test/testassets/Components.TestServer/RazorComponents/Pages/Routing/Encoded/EncodedParameters.razor b/src/Components/test/testassets/Components.TestServer/RazorComponents/Pages/Routing/Encoded/EncodedParameters.razor new file mode 100644 index 000000000000..0a73e86965e8 --- /dev/null +++ b/src/Components/test/testassets/Components.TestServer/RazorComponents/Pages/Routing/Encoded/EncodedParameters.razor @@ -0,0 +1,24 @@ +@page "/🙂/routing/parameters/{parameter}" +

Parameters

+ +

@Parameter

+ +@if (_interactive) +{ +

Rendered interactive.

+} + +@code { + private bool _interactive; + + [Parameter] public string Parameter { get; set; } + + protected override void OnAfterRender(bool firstRender) + { + if (firstRender) + { + _interactive = true; + StateHasChanged(); + } + } +} diff --git a/src/Components/test/testassets/Components.TestServer/RazorComponents/Pages/Routing/RoutingTestCasesWithEncoding.razor b/src/Components/test/testassets/Components.TestServer/RazorComponents/Pages/Routing/RoutingTestCasesWithEncoding.razor new file mode 100644 index 000000000000..b91714bdb697 --- /dev/null +++ b/src/Components/test/testassets/Components.TestServer/RazorComponents/Pages/Routing/RoutingTestCasesWithEncoding.razor @@ -0,0 +1,15 @@ +@page "/🙂/routing" +@inject NavigationManager NavigationManager +

Routing test cases with encoded urls

+ + From 32ba87fb06334e50915445026b1fb1cf919ea0b6 Mon Sep 17 00:00:00 2001 From: Mackinnon Buck Date: Tue, 6 Feb 2024 14:29:18 -0800 Subject: [PATCH 112/391] Fix Navigation for anchor inside element (#51706) (#53541) * fix enhanced nav for svg element * small fix * simplify findClosestAnchorAncestorLegacy * added test for svg element inside anchor * removed _blazorDisableComposedPath logic and findClosestAnchorAncestorLegacy function * added test for anchor inside svg element dor client-side navigation * added SVGAElement to findAnchorTarget and Co-authored-by: Surayya Huseyn Zada <114938397+surayya-MS@users.noreply.github.com> --- .../Web.JS/dist/Release/blazor.server.js | 2 +- .../Web.JS/dist/Release/blazor.web.js | 2 +- .../Web.JS/dist/Release/blazor.webview.js | 2 +- .../src/Services/NavigationEnhancement.ts | 4 +- .../Web.JS/src/Services/NavigationUtils.ts | 32 ++++--------- .../EnhancedNavigationTest.cs | 45 ++++++++++++++++++- .../test/E2ETest/Tests/RoutingTest.cs | 15 +++++++ .../RouterTest/AnchorInsideSVGElement.razor | 28 ++++++++++++ .../BasicTestApp/RouterTest/Links.razor | 1 + .../Shared/EnhancedNavLayout.razor | 18 ++++++++ 10 files changed, 119 insertions(+), 30 deletions(-) create mode 100644 src/Components/test/testassets/BasicTestApp/RouterTest/AnchorInsideSVGElement.razor diff --git a/src/Components/Web.JS/dist/Release/blazor.server.js b/src/Components/Web.JS/dist/Release/blazor.server.js index 7b118ea39bf9..12213a01490a 100644 --- a/src/Components/Web.JS/dist/Release/blazor.server.js +++ b/src/Components/Web.JS/dist/Release/blazor.server.js @@ -1 +1 @@ -(()=>{var e={778:()=>{},77:()=>{},203:()=>{},200:()=>{},628:()=>{},321:()=>{}},t={};function n(r){var o=t[r];if(void 0!==o)return o.exports;var s=t[r]={exports:{}};return e[r](s,s.exports,n),s.exports}n.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),(()=>{"use strict";var e,t,r;!function(e){const t=[],n="__jsObjectId",r="__dotNetObject",o="__byte[]",s="__dotNetStream",i="__jsStreamReferenceLength";let a,c;class l{constructor(e){this._jsObject=e,this._cachedFunctions=new Map}findFunction(e){const t=this._cachedFunctions.get(e);if(t)return t;let n,r=this._jsObject;if(e.split(".").forEach((t=>{if(!(t in r))throw new Error(`Could not find '${e}' ('${t}' was undefined).`);n=r,r=r[t]})),r instanceof Function)return r=r.bind(n),this._cachedFunctions.set(e,r),r;throw new Error(`The value '${e}' is not a function.`)}getWrappedObject(){return this._jsObject}}const h={0:new l(window)};h[0]._cachedFunctions.set("import",(e=>("string"==typeof e&&e.startsWith("./")&&(e=new URL(e.substr(2),document.baseURI).toString()),import(e))));let d,u=1;function p(e){t.push(e)}function f(e){if(e&&"object"==typeof e){h[u]=new l(e);const t={[n]:u};return u++,t}throw new Error(`Cannot create a JSObjectReference from the value '${e}'.`)}function g(e){let t=-1;if(e instanceof ArrayBuffer&&(e=new Uint8Array(e)),e instanceof Blob)t=e.size;else{if(!(e.buffer instanceof ArrayBuffer))throw new Error("Supplied value is not a typed array or blob.");if(void 0===e.byteLength)throw new Error(`Cannot create a JSStreamReference from the value '${e}' as it doesn't have a byteLength.`);t=e.byteLength}const r={[i]:t};try{const t=f(e);r[n]=t[n]}catch(t){throw new Error(`Cannot create a JSStreamReference from the value '${e}'.`)}return r}function m(e,n){c=e;const r=n?JSON.parse(n,((e,n)=>t.reduce(((t,n)=>n(e,t)),n))):null;return c=void 0,r}function v(){if(void 0===a)throw new Error("No call dispatcher has been set.");if(null===a)throw new Error("There are multiple .NET runtimes present, so a default dispatcher could not be resolved. Use DotNetObject to invoke .NET instance methods.");return a}e.attachDispatcher=function(e){const t=new y(e);return void 0===a?a=t:a&&(a=null),t},e.attachReviver=p,e.invokeMethod=function(e,t,...n){return v().invokeDotNetStaticMethod(e,t,...n)},e.invokeMethodAsync=function(e,t,...n){return v().invokeDotNetStaticMethodAsync(e,t,...n)},e.createJSObjectReference=f,e.createJSStreamReference=g,e.disposeJSObjectReference=function(e){const t=e&&e[n];"number"==typeof t&&b(t)},function(e){e[e.Default=0]="Default",e[e.JSObjectReference=1]="JSObjectReference",e[e.JSStreamReference=2]="JSStreamReference",e[e.JSVoidResult=3]="JSVoidResult"}(d=e.JSCallResultType||(e.JSCallResultType={}));class y{constructor(e){this._dotNetCallDispatcher=e,this._byteArraysToBeRevived=new Map,this._pendingDotNetToJSStreams=new Map,this._pendingAsyncCalls={},this._nextAsyncCallId=1}getDotNetCallDispatcher(){return this._dotNetCallDispatcher}invokeJSFromDotNet(e,t,n,r){const o=m(this,t),s=I(_(e,r)(...o||[]),n);return null==s?null:T(this,s)}beginInvokeJSFromDotNet(e,t,n,r,o){const s=new Promise((e=>{const r=m(this,n);e(_(t,o)(...r||[]))}));e&&s.then((t=>T(this,[e,!0,I(t,r)]))).then((t=>this._dotNetCallDispatcher.endInvokeJSFromDotNet(e,!0,t)),(t=>this._dotNetCallDispatcher.endInvokeJSFromDotNet(e,!1,JSON.stringify([e,!1,w(t)]))))}endInvokeDotNetFromJS(e,t,n){const r=t?m(this,n):new Error(n);this.completePendingCall(parseInt(e,10),t,r)}invokeDotNetStaticMethod(e,t,...n){return this.invokeDotNetMethod(e,t,null,n)}invokeDotNetStaticMethodAsync(e,t,...n){return this.invokeDotNetMethodAsync(e,t,null,n)}invokeDotNetMethod(e,t,n,r){if(this._dotNetCallDispatcher.invokeDotNetFromJS){const o=T(this,r),s=this._dotNetCallDispatcher.invokeDotNetFromJS(e,t,n,o);return s?m(this,s):null}throw new Error("The current dispatcher does not support synchronous calls from JS to .NET. Use invokeDotNetMethodAsync instead.")}invokeDotNetMethodAsync(e,t,n,r){if(e&&n)throw new Error(`For instance method calls, assemblyName should be null. Received '${e}'.`);const o=this._nextAsyncCallId++,s=new Promise(((e,t)=>{this._pendingAsyncCalls[o]={resolve:e,reject:t}}));try{const s=T(this,r);this._dotNetCallDispatcher.beginInvokeDotNetFromJS(o,e,t,n,s)}catch(e){this.completePendingCall(o,!1,e)}return s}receiveByteArray(e,t){this._byteArraysToBeRevived.set(e,t)}processByteArray(e){const t=this._byteArraysToBeRevived.get(e);return t?(this._byteArraysToBeRevived.delete(e),t):null}supplyDotNetStream(e,t){if(this._pendingDotNetToJSStreams.has(e)){const n=this._pendingDotNetToJSStreams.get(e);this._pendingDotNetToJSStreams.delete(e),n.resolve(t)}else{const n=new C;n.resolve(t),this._pendingDotNetToJSStreams.set(e,n)}}getDotNetStreamPromise(e){let t;if(this._pendingDotNetToJSStreams.has(e))t=this._pendingDotNetToJSStreams.get(e).streamPromise,this._pendingDotNetToJSStreams.delete(e);else{const n=new C;this._pendingDotNetToJSStreams.set(e,n),t=n.streamPromise}return t}completePendingCall(e,t,n){if(!this._pendingAsyncCalls.hasOwnProperty(e))throw new Error(`There is no pending async call with ID ${e}.`);const r=this._pendingAsyncCalls[e];delete this._pendingAsyncCalls[e],t?r.resolve(n):r.reject(n)}}function w(e){return e instanceof Error?`${e.message}\n${e.stack}`:e?e.toString():"null"}function _(e,t){const n=h[t];if(n)return n.findFunction(e);throw new Error(`JS object instance with ID ${t} does not exist (has it been disposed?).`)}function b(e){delete h[e]}e.findJSFunction=_,e.disposeJSObjectReferenceById=b;class S{constructor(e,t){this._id=e,this._callDispatcher=t}invokeMethod(e,...t){return this._callDispatcher.invokeDotNetMethod(null,e,this._id,t)}invokeMethodAsync(e,...t){return this._callDispatcher.invokeDotNetMethodAsync(null,e,this._id,t)}dispose(){this._callDispatcher.invokeDotNetMethodAsync(null,"__Dispose",this._id,null).catch((e=>console.error(e)))}serializeAsArg(){return{[r]:this._id}}}e.DotNetObject=S,p((function(e,t){if(t&&"object"==typeof t){if(t.hasOwnProperty(r))return new S(t[r],c);if(t.hasOwnProperty(n)){const e=t[n],r=h[e];if(r)return r.getWrappedObject();throw new Error(`JS object instance with Id '${e}' does not exist. It may have been disposed.`)}if(t.hasOwnProperty(o)){const e=t[o],n=c.processByteArray(e);if(void 0===n)throw new Error(`Byte array index '${e}' does not exist.`);return n}if(t.hasOwnProperty(s)){const e=t[s],n=c.getDotNetStreamPromise(e);return new E(n)}}return t}));class E{constructor(e){this._streamPromise=e}stream(){return this._streamPromise}async arrayBuffer(){return new Response(await this.stream()).arrayBuffer()}}class C{constructor(){this.streamPromise=new Promise(((e,t)=>{this.resolve=e,this.reject=t}))}}function I(e,t){switch(t){case d.Default:return e;case d.JSObjectReference:return f(e);case d.JSStreamReference:return g(e);case d.JSVoidResult:return null;default:throw new Error(`Invalid JS call result type '${t}'.`)}}let k=0;function T(e,t){k=0,c=e;const n=JSON.stringify(t,D);return c=void 0,n}function D(e,t){if(t instanceof S)return t.serializeAsArg();if(t instanceof Uint8Array){c.getDotNetCallDispatcher().sendByteArray(k,t);const e={[o]:k};return k++,e}return t}}(e||(e={})),function(e){e[e.prependFrame=1]="prependFrame",e[e.removeFrame=2]="removeFrame",e[e.setAttribute=3]="setAttribute",e[e.removeAttribute=4]="removeAttribute",e[e.updateText=5]="updateText",e[e.stepIn=6]="stepIn",e[e.stepOut=7]="stepOut",e[e.updateMarkup=8]="updateMarkup",e[e.permutationListEntry=9]="permutationListEntry",e[e.permutationListEnd=10]="permutationListEnd"}(t||(t={})),function(e){e[e.element=1]="element",e[e.text=2]="text",e[e.attribute=3]="attribute",e[e.component=4]="component",e[e.region=5]="region",e[e.elementReferenceCapture=6]="elementReferenceCapture",e[e.markup=8]="markup",e[e.namedEvent=10]="namedEvent"}(r||(r={}));class o{constructor(e,t){this.componentId=e,this.fieldValue=t}static fromEvent(e,t){const n=t.target;if(n instanceof Element){const t=function(e){return e instanceof HTMLInputElement?e.type&&"checkbox"===e.type.toLowerCase()?{value:e.checked}:{value:e.value}:e instanceof HTMLSelectElement||e instanceof HTMLTextAreaElement?{value:e.value}:null}(n);if(t)return new o(e,t.value)}return null}}const s=new Map,i=new Map,a=[];function c(e){return s.get(e)}function l(e){const t=s.get(e);return(null==t?void 0:t.browserEventName)||e}function h(e,t){e.forEach((e=>s.set(e,t)))}function d(e){const t=[];for(let n=0;ne.selected)).map((e=>e.value))}}{const e=function(e){return!!e&&"INPUT"===e.tagName&&"checkbox"===e.getAttribute("type")}(t);return{value:e?!!t.checked:t.value}}}}),h(["copy","cut","paste"],{createEventArgs:e=>({type:e.type})}),h(["drag","dragend","dragenter","dragleave","dragover","dragstart","drop"],{createEventArgs:e=>{return{...u(t=e),dataTransfer:t.dataTransfer?{dropEffect:t.dataTransfer.dropEffect,effectAllowed:t.dataTransfer.effectAllowed,files:Array.from(t.dataTransfer.files).map((e=>e.name)),items:Array.from(t.dataTransfer.items).map((e=>({kind:e.kind,type:e.type}))),types:t.dataTransfer.types}:null};var t}}),h(["focus","blur","focusin","focusout"],{createEventArgs:e=>({type:e.type})}),h(["keydown","keyup","keypress"],{createEventArgs:e=>{return{key:(t=e).key,code:t.code,location:t.location,repeat:t.repeat,ctrlKey:t.ctrlKey,shiftKey:t.shiftKey,altKey:t.altKey,metaKey:t.metaKey,type:t.type};var t}}),h(["contextmenu","click","mouseover","mouseout","mousemove","mousedown","mouseup","mouseleave","mouseenter","dblclick"],{createEventArgs:e=>u(e)}),h(["error"],{createEventArgs:e=>{return{message:(t=e).message,filename:t.filename,lineno:t.lineno,colno:t.colno,type:t.type};var t}}),h(["loadstart","timeout","abort","load","loadend","progress"],{createEventArgs:e=>{return{lengthComputable:(t=e).lengthComputable,loaded:t.loaded,total:t.total,type:t.type};var t}}),h(["touchcancel","touchend","touchmove","touchenter","touchleave","touchstart"],{createEventArgs:e=>{return{detail:(t=e).detail,touches:d(t.touches),targetTouches:d(t.targetTouches),changedTouches:d(t.changedTouches),ctrlKey:t.ctrlKey,shiftKey:t.shiftKey,altKey:t.altKey,metaKey:t.metaKey,type:t.type};var t}}),h(["gotpointercapture","lostpointercapture","pointercancel","pointerdown","pointerenter","pointerleave","pointermove","pointerout","pointerover","pointerup"],{createEventArgs:e=>{return{...u(t=e),pointerId:t.pointerId,width:t.width,height:t.height,pressure:t.pressure,tiltX:t.tiltX,tiltY:t.tiltY,pointerType:t.pointerType,isPrimary:t.isPrimary};var t}}),h(["wheel","mousewheel"],{createEventArgs:e=>{return{...u(t=e),deltaX:t.deltaX,deltaY:t.deltaY,deltaZ:t.deltaZ,deltaMode:t.deltaMode};var t}}),h(["cancel","close","toggle"],{createEventArgs:()=>({})});const p=["date","datetime-local","month","time","week"],f=new Map;let g,m,v=0;const y={async add(e,t,n){if(!n)throw new Error("initialParameters must be an object, even if empty.");const r="__bl-dynamic-root:"+(++v).toString();f.set(r,e);const o=await b().invokeMethodAsync("AddRootComponent",t,r),s=new _(o,m[t]);return await s.setParameters(n),s}};class w{invoke(e){return this._callback(e)}setCallback(t){this._selfJSObjectReference||(this._selfJSObjectReference=e.createJSObjectReference(this)),this._callback=t}getJSObjectReference(){return this._selfJSObjectReference}dispose(){this._selfJSObjectReference&&e.disposeJSObjectReference(this._selfJSObjectReference)}}class _{constructor(e,t){this._jsEventCallbackWrappers=new Map,this._componentId=e;for(const e of t)"eventcallback"===e.type&&this._jsEventCallbackWrappers.set(e.name.toLowerCase(),new w)}setParameters(e){const t={},n=Object.entries(e||{}),r=n.length;for(const[e,r]of n){const n=this._jsEventCallbackWrappers.get(e.toLowerCase());n&&r?(n.setCallback(r),t[e]=n.getJSObjectReference()):t[e]=r}return b().invokeMethodAsync("SetRootComponentParameters",this._componentId,r,t)}async dispose(){if(null!==this._componentId){await b().invokeMethodAsync("RemoveRootComponent",this._componentId),this._componentId=null;for(const e of this._jsEventCallbackWrappers.values())e.dispose()}}}function b(){if(!g)throw new Error("Dynamic root components have not been enabled in this application.");return g}const S=new Map,E=[],C=new Map;function I(t,n,r,o){var s,i;if(S.has(t))throw new Error(`Interop methods are already registered for renderer ${t}`);S.set(t,n),r&&o&&Object.keys(r).length>0&&function(t,n,r){if(g)throw new Error("Dynamic root components have already been enabled.");g=t,m=n;for(const[t,o]of Object.entries(r)){const r=e.findJSFunction(t,0);for(const e of o)r(e,n[e])}}(T(t),r,o),null===(i=null===(s=C.get(t))||void 0===s?void 0:s[0])||void 0===i||i.call(s),function(e){for(const t of E)t(e)}(t)}function k(e,t,n){return D(e,t.eventHandlerId,(()=>T(e).invokeMethodAsync("DispatchEventAsync",t,n)))}function T(e){const t=S.get(e);if(!t)throw new Error(`No interop methods are registered for renderer ${e}`);return t}let D=(e,t,n)=>n();const R=M(["abort","blur","cancel","canplay","canplaythrough","change","close","cuechange","durationchange","emptied","ended","error","focus","load","loadeddata","loadedmetadata","loadend","loadstart","mouseenter","mouseleave","pointerenter","pointerleave","pause","play","playing","progress","ratechange","reset","scroll","seeked","seeking","stalled","submit","suspend","timeupdate","toggle","unload","volumechange","waiting","DOMNodeInsertedIntoDocument","DOMNodeRemovedFromDocument"]),x={submit:!0},A=M(["click","dblclick","mousedown","mousemove","mouseup"]);class P{constructor(e){this.browserRendererId=e,this.afterClickCallbacks=[];const t=++P.nextEventDelegatorId;this.eventsCollectionKey=`_blazorEvents_${t}`,this.eventInfoStore=new N(this.onGlobalEvent.bind(this))}setListener(e,t,n,r){const o=this.getEventHandlerInfosForElement(e,!0),s=o.getHandler(t);if(s)this.eventInfoStore.update(s.eventHandlerId,n);else{const s={element:e,eventName:t,eventHandlerId:n,renderingComponentId:r};this.eventInfoStore.add(s),o.setHandler(t,s)}}getHandler(e){return this.eventInfoStore.get(e)}removeListener(e){const t=this.eventInfoStore.remove(e);if(t){const e=t.element,n=this.getEventHandlerInfosForElement(e,!1);n&&n.removeHandler(t.eventName)}}notifyAfterClick(e){this.afterClickCallbacks.push(e),this.eventInfoStore.addGlobalListener("click")}setStopPropagation(e,t,n){this.getEventHandlerInfosForElement(e,!0).stopPropagation(t,n)}setPreventDefault(e,t,n){this.getEventHandlerInfosForElement(e,!0).preventDefault(t,n)}onGlobalEvent(e){if(!(e.target instanceof Element))return;this.dispatchGlobalEventToAllElements(e.type,e);const t=(n=e.type,i.get(n));var n;t&&t.forEach((t=>this.dispatchGlobalEventToAllElements(t,e))),"click"===e.type&&this.afterClickCallbacks.forEach((t=>t(e)))}dispatchGlobalEventToAllElements(e,t){const n=t.composedPath();let r=n.shift(),s=null,i=!1;const a=Object.prototype.hasOwnProperty.call(R,e);let l=!1;for(;r;){const u=r,p=this.getEventHandlerInfosForElement(u,!1);if(p){const n=p.getHandler(e);if(n&&(h=u,d=t.type,!((h instanceof HTMLButtonElement||h instanceof HTMLInputElement||h instanceof HTMLTextAreaElement||h instanceof HTMLSelectElement)&&Object.prototype.hasOwnProperty.call(A,d)&&h.disabled))){if(!i){const n=c(e);s=(null==n?void 0:n.createEventArgs)?n.createEventArgs(t):{},i=!0}Object.prototype.hasOwnProperty.call(x,t.type)&&t.preventDefault(),k(this.browserRendererId,{eventHandlerId:n.eventHandlerId,eventName:e,eventFieldInfo:o.fromEvent(n.renderingComponentId,t)},s)}p.stopPropagation(e)&&(l=!0),p.preventDefault(e)&&t.preventDefault()}r=a||l?void 0:n.shift()}var h,d}getEventHandlerInfosForElement(e,t){return Object.prototype.hasOwnProperty.call(e,this.eventsCollectionKey)?e[this.eventsCollectionKey]:t?e[this.eventsCollectionKey]=new U:null}}P.nextEventDelegatorId=0;class N{constructor(e){this.globalListener=e,this.infosByEventHandlerId={},this.countByEventName={},a.push(this.handleEventNameAliasAdded.bind(this))}add(e){if(this.infosByEventHandlerId[e.eventHandlerId])throw new Error(`Event ${e.eventHandlerId} is already tracked`);this.infosByEventHandlerId[e.eventHandlerId]=e,this.addGlobalListener(e.eventName)}get(e){return this.infosByEventHandlerId[e]}addGlobalListener(e){if(e=l(e),Object.prototype.hasOwnProperty.call(this.countByEventName,e))this.countByEventName[e]++;else{this.countByEventName[e]=1;const t=Object.prototype.hasOwnProperty.call(R,e);document.addEventListener(e,this.globalListener,t)}}update(e,t){if(Object.prototype.hasOwnProperty.call(this.infosByEventHandlerId,t))throw new Error(`Event ${t} is already tracked`);const n=this.infosByEventHandlerId[e];delete this.infosByEventHandlerId[e],n.eventHandlerId=t,this.infosByEventHandlerId[t]=n}remove(e){const t=this.infosByEventHandlerId[e];if(t){delete this.infosByEventHandlerId[e];const n=l(t.eventName);0==--this.countByEventName[n]&&(delete this.countByEventName[n],document.removeEventListener(n,this.globalListener))}return t}handleEventNameAliasAdded(e,t){if(Object.prototype.hasOwnProperty.call(this.countByEventName,e)){const n=this.countByEventName[e];delete this.countByEventName[e],document.removeEventListener(e,this.globalListener),this.addGlobalListener(t),this.countByEventName[t]+=n-1}}}class U{constructor(){this.handlers={},this.preventDefaultFlags=null,this.stopPropagationFlags=null}getHandler(e){return Object.prototype.hasOwnProperty.call(this.handlers,e)?this.handlers[e]:null}setHandler(e,t){this.handlers[e]=t}removeHandler(e){delete this.handlers[e]}preventDefault(e,t){return void 0!==t&&(this.preventDefaultFlags=this.preventDefaultFlags||{},this.preventDefaultFlags[e]=t),!!this.preventDefaultFlags&&this.preventDefaultFlags[e]}stopPropagation(e,t){return void 0!==t&&(this.stopPropagationFlags=this.stopPropagationFlags||{},this.stopPropagationFlags[e]=t),!!this.stopPropagationFlags&&this.stopPropagationFlags[e]}}function M(e){const t={};return e.forEach((e=>{t[e]=!0})),t}const B=Symbol(),L=Symbol(),$=Symbol();function O(e,t){if(B in e)return e;const n=[];if(e.childNodes.length>0){if(!t)throw new Error("New logical elements must start empty, or allowExistingContents must be true");e.childNodes.forEach((t=>{const r=O(t,!0);r[L]=e,n.push(r)}))}return e[B]=n,e}function F(e){const t=K(e);for(;t.length;)W(e,0)}function H(e,t){const n=document.createComment("!");return j(n,e,t),n}function j(e,t,n){const r=e;let o=e;if(e instanceof Comment){const t=K(r);if((null==t?void 0:t.length)>0){const t=Q(r),n=new Range;n.setStartBefore(e),n.setEndAfter(t),o=n.extractContents()}}const s=z(r);if(s){const e=K(s),t=Array.prototype.indexOf.call(e,r);e.splice(t,1),delete r[L]}const i=K(t);if(n0;)W(n,0)}const r=n;r.parentNode.removeChild(r)}function z(e){return e[L]||null}function q(e,t){return K(e)[t]}function J(e){const t=Y(e);return"http://www.w3.org/2000/svg"===t.namespaceURI&&"foreignObject"!==t.tagName}function K(e){return e[B]}function V(e){const t=K(z(e));return t[Array.prototype.indexOf.call(t,e)+1]||null}function X(e,t){const n=K(e);t.forEach((e=>{e.moveRangeStart=n[e.fromSiblingIndex],e.moveRangeEnd=Q(e.moveRangeStart)})),t.forEach((t=>{const r=document.createComment("marker");t.moveToBeforeMarker=r;const o=n[t.toSiblingIndex+1];o?o.parentNode.insertBefore(r,o):G(r,e)})),t.forEach((e=>{const t=e.moveToBeforeMarker,n=t.parentNode,r=e.moveRangeStart,o=e.moveRangeEnd;let s=r;for(;s;){const e=s.nextSibling;if(n.insertBefore(s,t),s===o)break;s=e}n.removeChild(t)})),t.forEach((e=>{n[e.toSiblingIndex]=e.moveRangeStart}))}function Y(e){if(e instanceof Element||e instanceof DocumentFragment)return e;if(e instanceof Comment)return e.parentNode;throw new Error("Not a valid logical element")}function G(e,t){if(t instanceof Element||t instanceof DocumentFragment)t.appendChild(e);else{if(!(t instanceof Comment))throw new Error(`Cannot append node because the parent is not a valid logical element. Parent: ${t}`);{const n=V(t);n?n.parentNode.insertBefore(e,n):G(e,z(t))}}}function Q(e){if(e instanceof Element||e instanceof DocumentFragment)return e;const t=V(e);if(t)return t.previousSibling;{const t=z(e);return t instanceof Element||t instanceof DocumentFragment?t.lastChild:Q(t)}}function Z(e){return`_bl_${e}`}const ee="__internalId";e.attachReviver(((e,t)=>t&&"object"==typeof t&&Object.prototype.hasOwnProperty.call(t,ee)&&"string"==typeof t[ee]?function(e){const t=`[${Z(e)}]`;return document.querySelector(t)}(t[ee]):t));const te="_blazorDeferredValue";function ne(e){return"select-multiple"===e.type}function re(e,t){e.value=t||""}function oe(e,t){e instanceof HTMLSelectElement?ne(e)?function(e,t){t||(t=[]);for(let n=0;n{ke()&&function(e,t){if(0!==e.button||function(e){return e.ctrlKey||e.shiftKey||e.altKey||e.metaKey}(e))return;if(e.defaultPrevented)return;const n=function(e){const t=!window._blazorDisableComposedPath&&e.composedPath&&e.composedPath();if(t){for(let e=0;e{const t=document.createElement("script");t.textContent=e.textContent,e.getAttributeNames().forEach((n=>{t.setAttribute(n,e.getAttribute(n))})),e.parentNode.replaceChild(t,e)})),ie.content));var i;let a=0;for(;s.firstChild;)j(s.firstChild,o,a++)}applyAttribute(e,t,n,r){const o=e.frameReader,s=o.attributeName(r),i=o.attributeEventHandlerId(r);if(i){const e=fe(s);return void this.eventDelegator.setListener(n,e,i,t)}const a=o.attributeValue(r);this.setOrRemoveAttributeOrProperty(n,s,a)}insertFrameRange(e,t,n,r,o,s,i){const a=r;for(let a=s;a{je(t,e)})},enableNavigationInterception:function(e){if(void 0!==me&&me!==e)throw new Error("Only one interactive runtime may enable navigation interception at a time.");me=e},setHasLocationChangingListeners:function(e,t){const n=Ae.get(e);if(!n)throw new Error(`Renderer with ID '${e}' is not listening for navigation events`);n.hasLocationChangingEventListeners=t},endLocationChanging:function(e,t){Ne&&e===xe&&(Ne(t),Ne=null)},navigateTo:function(e,t){Be(e,t,!0)},refresh:function(e){!e&&Se()?Ee(location.href,!0):location.reload()},getBaseURI:()=>document.baseURI,getLocationHref:()=>location.href,scrollToElement:Me};function Me(e){const t=document.getElementById(e);return!!t&&(t.scrollIntoView(),!0)}function Be(e,t,n=!1){const r=Ce(e),o=qe();if(t.forceLoad||!be(r)||"serverside-fullpageload"===o)!function(e,t){if(location.href===e){const t=e+"?";history.replaceState(null,"",t),location.replace(e)}else t?location.replace(e):location.href=e}(e,t.replaceHistoryEntry);else if("clientside-router"===o)Le(r,!1,t.replaceHistoryEntry,t.historyEntryState,n);else{if("serverside-enhanced"!==o)throw new Error(`Unsupported page load mechanism: ${o}`);Ee(r,t.replaceHistoryEntry)}}async function Le(e,t,n,r=void 0,o=!1){if(Fe(),function(e){const t=e.indexOf("#");return t>-1&&location.href.replace(location.hash,"")===e.substring(0,t)}(e))return void function(e,t,n){$e(e,t,n);const r=e.indexOf("#");r!==e.length-1&&Me(e.substring(r+1))}(e,n,r);const s=ze();(o||!(null==s?void 0:s.hasLocationChangingEventListeners)||await He(e,r,t,s))&&(_e=!0,$e(e,n,r),await je(t))}function $e(e,t,n=void 0){t?history.replaceState({userState:n,_index:Re},"",e):(Re++,history.pushState({userState:n,_index:Re},"",e))}function Oe(e){return new Promise((t=>{const n=Pe;Pe=()=>{Pe=n,t()},history.go(e)}))}function Fe(){Ne&&(Ne(!1),Ne=null)}function He(e,t,n,r){return new Promise((o=>{Fe(),xe++,Ne=o,r.locationChanging(xe,e,t,n)}))}async function je(e,t){const n=null!=t?t:location.href;await Promise.all(Array.from(Ae,(async([t,r])=>{var o,s;s=t,S.has(s)&&await r.locationChanged(n,null===(o=history.state)||void 0===o?void 0:o.userState,e)})))}async function We(e){var t,n;Pe&&"serverside-enhanced"!==qe()&&await Pe(e),Re=null!==(n=null===(t=history.state)||void 0===t?void 0:t._index)&&void 0!==n?n:0}function ze(){const e=Te();if(void 0!==e)return Ae.get(e)}function qe(){return ke()?"clientside-router":Se()?"serverside-enhanced":window.Blazor._internal.isBlazorWeb?"serverside-fullpageload":"clientside-router"}const Je={focus:function(e,t){if(e instanceof HTMLElement)e.focus({preventScroll:t});else{if(!(e instanceof SVGElement))throw new Error("Unable to focus an invalid element.");if(!e.hasAttribute("tabindex"))throw new Error("Unable to focus an SVG element that does not have a tabindex.");e.focus({preventScroll:t})}},focusBySelector:function(e,t){const n=document.querySelector(e);n&&(n.hasAttribute("tabindex")||(n.tabIndex=-1),n.focus({preventScroll:!0}))}},Ke={init:function(e,t,n,r=50){const o=Xe(t);(o||document.documentElement).style.overflowAnchor="none";const s=document.createRange();u(n.parentElement)&&(t.style.display="table-row",n.style.display="table-row");const i=new IntersectionObserver((function(r){r.forEach((r=>{var o;if(!r.isIntersecting)return;s.setStartAfter(t),s.setEndBefore(n);const i=s.getBoundingClientRect().height,a=null===(o=r.rootBounds)||void 0===o?void 0:o.height;r.target===t?e.invokeMethodAsync("OnSpacerBeforeVisible",r.intersectionRect.top-r.boundingClientRect.top,i,a):r.target===n&&n.offsetHeight>0&&e.invokeMethodAsync("OnSpacerAfterVisible",r.boundingClientRect.bottom-r.intersectionRect.bottom,i,a)}))}),{root:o,rootMargin:`${r}px`});i.observe(t),i.observe(n);const a=d(t),c=d(n),{observersByDotNetObjectId:l,id:h}=Ye(e);function d(e){const t={attributes:!0},n=new MutationObserver(((n,r)=>{u(e.parentElement)&&(r.disconnect(),e.style.display="table-row",r.observe(e,t)),i.unobserve(e),i.observe(e)}));return n.observe(e,t),n}function u(e){return null!==e&&(e instanceof HTMLTableElement&&""===e.style.display||"table"===e.style.display||e instanceof HTMLTableSectionElement&&""===e.style.display||"table-row-group"===e.style.display)}l[h]={intersectionObserver:i,mutationObserverBefore:a,mutationObserverAfter:c}},dispose:function(e){const{observersByDotNetObjectId:t,id:n}=Ye(e),r=t[n];r&&(r.intersectionObserver.disconnect(),r.mutationObserverBefore.disconnect(),r.mutationObserverAfter.disconnect(),e.dispose(),delete t[n])}},Ve=Symbol();function Xe(e){return e&&e!==document.body&&e!==document.documentElement?"visible"!==getComputedStyle(e).overflowY?e:Xe(e.parentElement):null}function Ye(e){var t;const n=e._callDispatcher,r=e._id;return null!==(t=n[Ve])&&void 0!==t||(n[Ve]={}),{observersByDotNetObjectId:n[Ve],id:r}}const Ge={getAndRemoveExistingTitle:function(){var e;const t=document.head?document.head.getElementsByTagName("title"):[];if(0===t.length)return null;let n=null;for(let r=t.length-1;r>=0;r--){const o=t[r],s=o.previousSibling;s instanceof Comment&&null!==z(s)||(null===n&&(n=o.textContent),null===(e=o.parentNode)||void 0===e||e.removeChild(o))}return n}},Qe={init:function(e,t){t._blazorInputFileNextFileId=0,t.addEventListener("click",(function(){t.value=""})),t.addEventListener("change",(function(){t._blazorFilesById={};const n=Array.prototype.map.call(t.files,(function(e){const n={id:++t._blazorInputFileNextFileId,lastModified:new Date(e.lastModified).toISOString(),name:e.name,size:e.size,contentType:e.type,readPromise:void 0,arrayBuffer:void 0,blob:e};return t._blazorFilesById[n.id]=n,n}));e.invokeMethodAsync("NotifyChange",n)}))},toImageFile:async function(e,t,n,r,o){const s=Ze(e,t),i=await new Promise((function(e){const t=new Image;t.onload=function(){URL.revokeObjectURL(t.src),e(t)},t.onerror=function(){t.onerror=null,URL.revokeObjectURL(t.src)},t.src=URL.createObjectURL(s.blob)})),a=await new Promise((function(e){var t;const s=Math.min(1,r/i.width),a=Math.min(1,o/i.height),c=Math.min(s,a),l=document.createElement("canvas");l.width=Math.round(i.width*c),l.height=Math.round(i.height*c),null===(t=l.getContext("2d"))||void 0===t||t.drawImage(i,0,0,l.width,l.height),l.toBlob(e,n)})),c={id:++e._blazorInputFileNextFileId,lastModified:s.lastModified,name:s.name,size:(null==a?void 0:a.size)||0,contentType:n,blob:a||s.blob};return e._blazorFilesById[c.id]=c,c},readFileData:async function(e,t){return Ze(e,t).blob}};function Ze(e,t){const n=e._blazorFilesById[t];if(!n)throw new Error(`There is no file with ID ${t}. The file list may have changed. See https://aka.ms/aspnet/blazor-input-file-multiple-selections.`);return n}const et=new Set,tt={enableNavigationPrompt:function(e){0===et.size&&window.addEventListener("beforeunload",nt),et.add(e)},disableNavigationPrompt:function(e){et.delete(e),0===et.size&&window.removeEventListener("beforeunload",nt)}};function nt(e){e.preventDefault(),e.returnValue=!0}async function rt(e,t,n){return e instanceof Blob?await async function(e,t,n){const r=e.slice(t,t+n),o=await r.arrayBuffer();return new Uint8Array(o)}(e,t,n):function(e,t,n){return new Uint8Array(e.buffer,e.byteOffset+t,n)}(e,t,n)}new Map;const ot={navigateTo:function(e,t,n=!1){Be(e,t instanceof Object?t:{forceLoad:t,replaceHistoryEntry:n})},registerCustomEventType:function(e,t){if(!t)throw new Error("The options parameter is required.");if(s.has(e))throw new Error(`The event '${e}' is already registered.`);if(t.browserEventName){const n=i.get(t.browserEventName);n?n.push(e):i.set(t.browserEventName,[e]),a.forEach((n=>n(e,t.browserEventName)))}s.set(e,t)},rootComponents:y,runtime:{},_internal:{navigationManager:Ue,domWrapper:Je,Virtualize:Ke,PageTitle:Ge,InputFile:Qe,NavigationLock:tt,getJSDataStreamChunk:rt,attachWebRendererInterop:I}};var st;function it(e){const t={...at,...e};return e&&e.reconnectionOptions&&(t.reconnectionOptions={...at.reconnectionOptions,...e.reconnectionOptions}),t}window.Blazor=ot,function(e){e[e.Trace=0]="Trace",e[e.Debug=1]="Debug",e[e.Information=2]="Information",e[e.Warning=3]="Warning",e[e.Error=4]="Error",e[e.Critical=5]="Critical",e[e.None=6]="None"}(st||(st={}));const at={configureSignalR:e=>{},logLevel:st.Warning,initializers:void 0,circuitHandlers:[],reconnectionOptions:{maxRetries:8,retryIntervalMilliseconds:2e4,dialogId:"components-reconnect-modal"}};class ct{log(e,t){}}ct.instance=new ct;class lt{constructor(e){this.minLevel=e}log(e,t){if(e>=this.minLevel){const n=`[${(new Date).toISOString()}] ${st[e]}: ${t}`;switch(e){case st.Critical:case st.Error:console.error(n);break;case st.Warning:console.warn(n);break;case st.Information:console.info(n);break;default:console.log(n)}}}}const ht=/^\s*Blazor-Server-Component-State:(?[a-zA-Z0-9+/=]+)$/;function dt(e,t,n="state"){var r;if(e.nodeType===Node.COMMENT_NODE){const o=e.textContent||"",s=t.exec(o),i=s&&s.groups&&s.groups[n];return i&&(null===(r=e.parentNode)||void 0===r||r.removeChild(e)),i}if(!e.hasChildNodes())return;const o=e.childNodes;for(let e=0;e.*)$/);function ft(e,t){const n=e.currentElement;var r,o,s;if(n&&n.nodeType===Node.COMMENT_NODE&&n.textContent){const i=pt.exec(n.textContent),a=i&&i.groups&&i.groups.descriptor;if(!a)return;!function(e){if(e.parentNode instanceof Document)throw new Error("Root components cannot be marked as interactive. The element must be rendered statically so that scripts are not evaluated multiple times.")}(n);try{const i=function(e){const t=JSON.parse(e),{type:n}=t;if("server"!==n&&"webassembly"!==n&&"auto"!==n)throw new Error(`Invalid component type '${n}'.`);return t}(a),c=function(e,t,n){const{prerenderId:r}=e;if(r){for(;n.next()&&n.currentElement;){const e=n.currentElement;if(e.nodeType!==Node.COMMENT_NODE)continue;if(!e.textContent)continue;const t=pt.exec(e.textContent),o=t&&t[1];if(o)return yt(o,r),e}throw new Error(`Could not find an end component comment for '${t}'.`)}}(i,n,e);if(t!==i.type)return;switch(i.type){case"webassembly":return o=n,s=c,vt(r=i),{...r,uniqueId:gt++,start:o,end:s};case"server":return function(e,t,n){return mt(e),{...e,uniqueId:gt++,start:t,end:n}}(i,n,c);case"auto":return function(e,t,n){return mt(e),vt(e),{...e,uniqueId:gt++,start:t,end:n}}(i,n,c)}}catch(e){throw new Error(`Found malformed component comment at ${n.textContent}`)}}}let gt=0;function mt(e){const{descriptor:t,sequence:n}=e;if(!t)throw new Error("descriptor must be defined when using a descriptor.");if(void 0===n)throw new Error("sequence must be defined when using a descriptor.");if(!Number.isInteger(n))throw new Error(`Error parsing the sequence '${n}' for component '${JSON.stringify(e)}'`)}function vt(e){const{assembly:t,typeName:n}=e;if(!t)throw new Error("assembly must be defined when using a descriptor.");if(!n)throw new Error("typeName must be defined when using a descriptor.");e.parameterDefinitions=e.parameterDefinitions&&atob(e.parameterDefinitions),e.parameterValues=e.parameterValues&&atob(e.parameterValues)}function yt(e,t){const n=JSON.parse(e);if(1!==Object.keys(n).length)throw new Error(`Invalid end of component comment: '${e}'`);const r=n.prerenderId;if(!r)throw new Error(`End of component comment must have a value for the prerendered property: '${e}'`);if(r!==t)throw new Error(`End of component comment prerendered property must match the start comment prerender id: '${t}', '${r}'`)}class wt{constructor(e){this.childNodes=e,this.currentIndex=-1,this.length=e.length}next(){return this.currentIndex++,this.currentIndex{n+=`0x${e<16?"0":""}${e.toString(16)} `})),n.substr(0,n.length-1)}(e)}'`)):"string"==typeof e&&(n=`String data of length ${e.length}`,t&&(n+=`. Content: '${e}'`)),n}function Tt(e){return e&&"undefined"!=typeof ArrayBuffer&&(e instanceof ArrayBuffer||e.constructor&&"ArrayBuffer"===e.constructor.name)}async function Dt(e,t,n,r,o,s){const i={},[a,c]=At();i[a]=c,e.log(bt.Trace,`(${t} transport) sending data. ${kt(o,s.logMessageContent)}.`);const l=Tt(o)?"arraybuffer":"text",h=await n.post(r,{content:o,headers:{...i,...s.headers},responseType:l,timeout:s.timeout,withCredentials:s.withCredentials});e.log(bt.Trace,`(${t} transport) request complete. Response status: ${h.statusCode}.`)}class Rt{constructor(e,t){this._subject=e,this._observer=t}dispose(){const e=this._subject.observers.indexOf(this._observer);e>-1&&this._subject.observers.splice(e,1),0===this._subject.observers.length&&this._subject.cancelCallback&&this._subject.cancelCallback().catch((e=>{}))}}class xt{constructor(e){this._minLevel=e,this.out=console}log(e,t){if(e>=this._minLevel){const n=`[${(new Date).toISOString()}] ${bt[e]}: ${t}`;switch(e){case bt.Critical:case bt.Error:this.out.error(n);break;case bt.Warning:this.out.warn(n);break;case bt.Information:this.out.info(n);break;default:this.out.log(n)}}}}function At(){let e="X-SignalR-User-Agent";return It.isNode&&(e="User-Agent"),[e,Pt(Et,Nt(),It.isNode?"NodeJS":"Browser",Ut())]}function Pt(e,t,n,r){let o="Microsoft SignalR/";const s=e.split(".");return o+=`${s[0]}.${s[1]}`,o+=` (${e}; `,o+=t&&""!==t?`${t}; `:"Unknown OS; ",o+=`${n}`,o+=r?`; ${r}`:"; Unknown Runtime Version",o+=")",o}function Nt(){if(!It.isNode)return"";switch(process.platform){case"win32":return"Windows NT";case"darwin":return"macOS";case"linux":return"Linux";default:return process.platform}}function Ut(){if(It.isNode)return process.versions.node}function Mt(e){return e.stack?e.stack:e.message?e.message:`${e}`}class Bt{writeHandshakeRequest(e){return _t.write(JSON.stringify(e))}parseHandshakeResponse(e){let t,n;if(Tt(e)){const r=new Uint8Array(e),o=r.indexOf(_t.RecordSeparatorCode);if(-1===o)throw new Error("Message is incomplete.");const s=o+1;t=String.fromCharCode.apply(null,Array.prototype.slice.call(r.slice(0,s))),n=r.byteLength>s?r.slice(s).buffer:null}else{const r=e,o=r.indexOf(_t.RecordSeparator);if(-1===o)throw new Error("Message is incomplete.");const s=o+1;t=r.substring(0,s),n=r.length>s?r.substring(s):null}const r=_t.parse(t),o=JSON.parse(r[0]);if(o.type)throw new Error("Expected a handshake response from the server.");return[n,o]}}class Lt extends Error{constructor(e,t){const n=new.target.prototype;super(`${e}: Status code '${t}'`),this.statusCode=t,this.__proto__=n}}class $t extends Error{constructor(e="A timeout occurred."){const t=new.target.prototype;super(e),this.__proto__=t}}class Ot extends Error{constructor(e="An abort occurred."){const t=new.target.prototype;super(e),this.__proto__=t}}class Ft extends Error{constructor(e,t){const n=new.target.prototype;super(e),this.transport=t,this.errorType="UnsupportedTransportError",this.__proto__=n}}class Ht extends Error{constructor(e,t){const n=new.target.prototype;super(e),this.transport=t,this.errorType="DisabledTransportError",this.__proto__=n}}class jt extends Error{constructor(e,t){const n=new.target.prototype;super(e),this.transport=t,this.errorType="FailedToStartTransportError",this.__proto__=n}}class Wt extends Error{constructor(e){const t=new.target.prototype;super(e),this.errorType="FailedToNegotiateWithServerError",this.__proto__=t}}class zt extends Error{constructor(e,t){const n=new.target.prototype;super(e),this.innerErrors=t,this.__proto__=n}}var qt,Jt;!function(e){e[e.Invocation=1]="Invocation",e[e.StreamItem=2]="StreamItem",e[e.Completion=3]="Completion",e[e.StreamInvocation=4]="StreamInvocation",e[e.CancelInvocation=5]="CancelInvocation",e[e.Ping=6]="Ping",e[e.Close=7]="Close",e[e.Ack=8]="Ack",e[e.Sequence=9]="Sequence"}(qt||(qt={}));class Kt{constructor(){this.observers=[]}next(e){for(const t of this.observers)t.next(e)}error(e){for(const t of this.observers)t.error&&t.error(e)}complete(){for(const e of this.observers)e.complete&&e.complete()}subscribe(e){return this.observers.push(e),new Rt(this,e)}}class Vt{constructor(e,t,n){this._bufferSize=1e5,this._messages=[],this._totalMessageCount=0,this._waitForSequenceMessage=!1,this._nextReceivingSequenceId=1,this._latestReceivedSequenceId=0,this._bufferedByteCount=0,this._reconnectInProgress=!1,this._protocol=e,this._connection=t,this._bufferSize=n}async _send(e){const t=this._protocol.writeMessage(e);let n=Promise.resolve();if(this._isInvocationMessage(e)){this._totalMessageCount++;let e=()=>{},r=()=>{};Tt(t)?this._bufferedByteCount+=t.byteLength:this._bufferedByteCount+=t.length,this._bufferedByteCount>=this._bufferSize&&(n=new Promise(((t,n)=>{e=t,r=n}))),this._messages.push(new Xt(t,this._totalMessageCount,e,r))}try{this._reconnectInProgress||await this._connection.send(t)}catch{this._disconnected()}await n}_ack(e){let t=-1;for(let n=0;nthis._nextReceivingSequenceId?this._connection.stop(new Error("Sequence ID greater than amount of messages we've received.")):this._nextReceivingSequenceId=e.sequenceId}_disconnected(){this._reconnectInProgress=!0,this._waitForSequenceMessage=!0}async _resend(){const e=0!==this._messages.length?this._messages[0]._id:this._totalMessageCount+1;await this._connection.send(this._protocol.writeMessage({type:qt.Sequence,sequenceId:e}));const t=this._messages;for(const e of t)await this._connection.send(e._message);this._reconnectInProgress=!1}_dispose(e){null!=e||(e=new Error("Unable to reconnect to server."));for(const t of this._messages)t._rejector(e)}_isInvocationMessage(e){switch(e.type){case qt.Invocation:case qt.StreamItem:case qt.Completion:case qt.StreamInvocation:case qt.CancelInvocation:return!0;case qt.Close:case qt.Sequence:case qt.Ping:case qt.Ack:return!1}}_ackTimer(){void 0===this._ackTimerHandle&&(this._ackTimerHandle=setTimeout((async()=>{try{this._reconnectInProgress||await this._connection.send(this._protocol.writeMessage({type:qt.Ack,sequenceId:this._latestReceivedSequenceId}))}catch{}clearTimeout(this._ackTimerHandle),this._ackTimerHandle=void 0}),1e3))}}class Xt{constructor(e,t,n,r){this._message=e,this._id=t,this._resolver=n,this._rejector=r}}!function(e){e.Disconnected="Disconnected",e.Connecting="Connecting",e.Connected="Connected",e.Disconnecting="Disconnecting",e.Reconnecting="Reconnecting"}(Jt||(Jt={}));class Yt{static create(e,t,n,r,o,s,i){return new Yt(e,t,n,r,o,s,i)}constructor(e,t,n,r,o,s,i){this._nextKeepAlive=0,this._freezeEventListener=()=>{this._logger.log(bt.Warning,"The page is being frozen, this will likely lead to the connection being closed and messages being lost. For more information see the docs at https://learn.microsoft.com/aspnet/core/signalr/javascript-client#bsleep")},Ct.isRequired(e,"connection"),Ct.isRequired(t,"logger"),Ct.isRequired(n,"protocol"),this.serverTimeoutInMilliseconds=null!=o?o:3e4,this.keepAliveIntervalInMilliseconds=null!=s?s:15e3,this._statefulReconnectBufferSize=null!=i?i:1e5,this._logger=t,this._protocol=n,this.connection=e,this._reconnectPolicy=r,this._handshakeProtocol=new Bt,this.connection.onreceive=e=>this._processIncomingData(e),this.connection.onclose=e=>this._connectionClosed(e),this._callbacks={},this._methods={},this._closedCallbacks=[],this._reconnectingCallbacks=[],this._reconnectedCallbacks=[],this._invocationId=0,this._receivedHandshakeResponse=!1,this._connectionState=Jt.Disconnected,this._connectionStarted=!1,this._cachedPingMessage=this._protocol.writeMessage({type:qt.Ping})}get state(){return this._connectionState}get connectionId(){return this.connection&&this.connection.connectionId||null}get baseUrl(){return this.connection.baseUrl||""}set baseUrl(e){if(this._connectionState!==Jt.Disconnected&&this._connectionState!==Jt.Reconnecting)throw new Error("The HubConnection must be in the Disconnected or Reconnecting state to change the url.");if(!e)throw new Error("The HubConnection url must be a valid url.");this.connection.baseUrl=e}start(){return this._startPromise=this._startWithStateTransitions(),this._startPromise}async _startWithStateTransitions(){if(this._connectionState!==Jt.Disconnected)return Promise.reject(new Error("Cannot start a HubConnection that is not in the 'Disconnected' state."));this._connectionState=Jt.Connecting,this._logger.log(bt.Debug,"Starting HubConnection.");try{await this._startInternal(),It.isBrowser&&window.document.addEventListener("freeze",this._freezeEventListener),this._connectionState=Jt.Connected,this._connectionStarted=!0,this._logger.log(bt.Debug,"HubConnection connected successfully.")}catch(e){return this._connectionState=Jt.Disconnected,this._logger.log(bt.Debug,`HubConnection failed to start successfully because of error '${e}'.`),Promise.reject(e)}}async _startInternal(){this._stopDuringStartError=void 0,this._receivedHandshakeResponse=!1;const e=new Promise(((e,t)=>{this._handshakeResolver=e,this._handshakeRejecter=t}));await this.connection.start(this._protocol.transferFormat);try{let t=this._protocol.version;this.connection.features.reconnect||(t=1);const n={protocol:this._protocol.name,version:t};if(this._logger.log(bt.Debug,"Sending handshake request."),await this._sendMessage(this._handshakeProtocol.writeHandshakeRequest(n)),this._logger.log(bt.Information,`Using HubProtocol '${this._protocol.name}'.`),this._cleanupTimeout(),this._resetTimeoutPeriod(),this._resetKeepAliveInterval(),await e,this._stopDuringStartError)throw this._stopDuringStartError;!!this.connection.features.reconnect&&(this._messageBuffer=new Vt(this._protocol,this.connection,this._statefulReconnectBufferSize),this.connection.features.disconnected=this._messageBuffer._disconnected.bind(this._messageBuffer),this.connection.features.resend=()=>{if(this._messageBuffer)return this._messageBuffer._resend()}),this.connection.features.inherentKeepAlive||await this._sendMessage(this._cachedPingMessage)}catch(e){throw this._logger.log(bt.Debug,`Hub handshake failed with error '${e}' during start(). Stopping HubConnection.`),this._cleanupTimeout(),this._cleanupPingTimer(),await this.connection.stop(e),e}}async stop(){const e=this._startPromise;this.connection.features.reconnect=!1,this._stopPromise=this._stopInternal(),await this._stopPromise;try{await e}catch(e){}}_stopInternal(e){if(this._connectionState===Jt.Disconnected)return this._logger.log(bt.Debug,`Call to HubConnection.stop(${e}) ignored because it is already in the disconnected state.`),Promise.resolve();if(this._connectionState===Jt.Disconnecting)return this._logger.log(bt.Debug,`Call to HttpConnection.stop(${e}) ignored because the connection is already in the disconnecting state.`),this._stopPromise;const t=this._connectionState;return this._connectionState=Jt.Disconnecting,this._logger.log(bt.Debug,"Stopping HubConnection."),this._reconnectDelayHandle?(this._logger.log(bt.Debug,"Connection stopped during reconnect delay. Done reconnecting."),clearTimeout(this._reconnectDelayHandle),this._reconnectDelayHandle=void 0,this._completeClose(),Promise.resolve()):(t===Jt.Connected&&this._sendCloseMessage(),this._cleanupTimeout(),this._cleanupPingTimer(),this._stopDuringStartError=e||new Ot("The connection was stopped before the hub handshake could complete."),this.connection.stop(e))}async _sendCloseMessage(){try{await this._sendWithProtocol(this._createCloseMessage())}catch{}}stream(e,...t){const[n,r]=this._replaceStreamingParams(t),o=this._createStreamInvocation(e,t,r);let s;const i=new Kt;return i.cancelCallback=()=>{const e=this._createCancelInvocation(o.invocationId);return delete this._callbacks[o.invocationId],s.then((()=>this._sendWithProtocol(e)))},this._callbacks[o.invocationId]=(e,t)=>{t?i.error(t):e&&(e.type===qt.Completion?e.error?i.error(new Error(e.error)):i.complete():i.next(e.item))},s=this._sendWithProtocol(o).catch((e=>{i.error(e),delete this._callbacks[o.invocationId]})),this._launchStreams(n,s),i}_sendMessage(e){return this._resetKeepAliveInterval(),this.connection.send(e)}_sendWithProtocol(e){return this._messageBuffer?this._messageBuffer._send(e):this._sendMessage(this._protocol.writeMessage(e))}send(e,...t){const[n,r]=this._replaceStreamingParams(t),o=this._sendWithProtocol(this._createInvocation(e,t,!0,r));return this._launchStreams(n,o),o}invoke(e,...t){const[n,r]=this._replaceStreamingParams(t),o=this._createInvocation(e,t,!1,r);return new Promise(((e,t)=>{this._callbacks[o.invocationId]=(n,r)=>{r?t(r):n&&(n.type===qt.Completion?n.error?t(new Error(n.error)):e(n.result):t(new Error(`Unexpected message type: ${n.type}`)))};const r=this._sendWithProtocol(o).catch((e=>{t(e),delete this._callbacks[o.invocationId]}));this._launchStreams(n,r)}))}on(e,t){e&&t&&(e=e.toLowerCase(),this._methods[e]||(this._methods[e]=[]),-1===this._methods[e].indexOf(t)&&this._methods[e].push(t))}off(e,t){if(!e)return;e=e.toLowerCase();const n=this._methods[e];if(n)if(t){const r=n.indexOf(t);-1!==r&&(n.splice(r,1),0===n.length&&delete this._methods[e])}else delete this._methods[e]}onclose(e){e&&this._closedCallbacks.push(e)}onreconnecting(e){e&&this._reconnectingCallbacks.push(e)}onreconnected(e){e&&this._reconnectedCallbacks.push(e)}_processIncomingData(e){if(this._cleanupTimeout(),this._receivedHandshakeResponse||(e=this._processHandshakeResponse(e),this._receivedHandshakeResponse=!0),e){const t=this._protocol.parseMessages(e,this._logger);for(const e of t)if(!this._messageBuffer||this._messageBuffer._shouldProcessMessage(e))switch(e.type){case qt.Invocation:this._invokeClientMethod(e);break;case qt.StreamItem:case qt.Completion:{const t=this._callbacks[e.invocationId];if(t){e.type===qt.Completion&&delete this._callbacks[e.invocationId];try{t(e)}catch(e){this._logger.log(bt.Error,`Stream callback threw error: ${Mt(e)}`)}}break}case qt.Ping:break;case qt.Close:{this._logger.log(bt.Information,"Close message received from server.");const t=e.error?new Error("Server returned an error on close: "+e.error):void 0;!0===e.allowReconnect?this.connection.stop(t):this._stopPromise=this._stopInternal(t);break}case qt.Ack:this._messageBuffer&&this._messageBuffer._ack(e);break;case qt.Sequence:this._messageBuffer&&this._messageBuffer._resetSequence(e);break;default:this._logger.log(bt.Warning,`Invalid message type: ${e.type}.`)}}this._resetTimeoutPeriod()}_processHandshakeResponse(e){let t,n;try{[n,t]=this._handshakeProtocol.parseHandshakeResponse(e)}catch(e){const t="Error parsing handshake response: "+e;this._logger.log(bt.Error,t);const n=new Error(t);throw this._handshakeRejecter(n),n}if(t.error){const e="Server returned handshake error: "+t.error;this._logger.log(bt.Error,e);const n=new Error(e);throw this._handshakeRejecter(n),n}return this._logger.log(bt.Debug,"Server handshake complete."),this._handshakeResolver(),n}_resetKeepAliveInterval(){this.connection.features.inherentKeepAlive||(this._nextKeepAlive=(new Date).getTime()+this.keepAliveIntervalInMilliseconds,this._cleanupPingTimer())}_resetTimeoutPeriod(){if(!(this.connection.features&&this.connection.features.inherentKeepAlive||(this._timeoutHandle=setTimeout((()=>this.serverTimeout()),this.serverTimeoutInMilliseconds),void 0!==this._pingServerHandle))){let e=this._nextKeepAlive-(new Date).getTime();e<0&&(e=0),this._pingServerHandle=setTimeout((async()=>{if(this._connectionState===Jt.Connected)try{await this._sendMessage(this._cachedPingMessage)}catch{this._cleanupPingTimer()}}),e)}}serverTimeout(){this.connection.stop(new Error("Server timeout elapsed without receiving a message from the server."))}async _invokeClientMethod(e){const t=e.target.toLowerCase(),n=this._methods[t];if(!n)return this._logger.log(bt.Warning,`No client method with the name '${t}' found.`),void(e.invocationId&&(this._logger.log(bt.Warning,`No result given for '${t}' method and invocation ID '${e.invocationId}'.`),await this._sendWithProtocol(this._createCompletionMessage(e.invocationId,"Client didn't provide a result.",null))));const r=n.slice(),o=!!e.invocationId;let s,i,a;for(const n of r)try{const r=s;s=await n.apply(this,e.arguments),o&&s&&r&&(this._logger.log(bt.Error,`Multiple results provided for '${t}'. Sending error to server.`),a=this._createCompletionMessage(e.invocationId,"Client provided multiple results.",null)),i=void 0}catch(e){i=e,this._logger.log(bt.Error,`A callback for the method '${t}' threw error '${e}'.`)}a?await this._sendWithProtocol(a):o?(i?a=this._createCompletionMessage(e.invocationId,`${i}`,null):void 0!==s?a=this._createCompletionMessage(e.invocationId,null,s):(this._logger.log(bt.Warning,`No result given for '${t}' method and invocation ID '${e.invocationId}'.`),a=this._createCompletionMessage(e.invocationId,"Client didn't provide a result.",null)),await this._sendWithProtocol(a)):s&&this._logger.log(bt.Error,`Result given for '${t}' method but server is not expecting a result.`)}_connectionClosed(e){this._logger.log(bt.Debug,`HubConnection.connectionClosed(${e}) called while in state ${this._connectionState}.`),this._stopDuringStartError=this._stopDuringStartError||e||new Ot("The underlying connection was closed before the hub handshake could complete."),this._handshakeResolver&&this._handshakeResolver(),this._cancelCallbacksWithError(e||new Error("Invocation canceled due to the underlying connection being closed.")),this._cleanupTimeout(),this._cleanupPingTimer(),this._connectionState===Jt.Disconnecting?this._completeClose(e):this._connectionState===Jt.Connected&&this._reconnectPolicy?this._reconnect(e):this._connectionState===Jt.Connected&&this._completeClose(e)}_completeClose(e){if(this._connectionStarted){this._connectionState=Jt.Disconnected,this._connectionStarted=!1,this._messageBuffer&&(this._messageBuffer._dispose(null!=e?e:new Error("Connection closed.")),this._messageBuffer=void 0),It.isBrowser&&window.document.removeEventListener("freeze",this._freezeEventListener);try{this._closedCallbacks.forEach((t=>t.apply(this,[e])))}catch(t){this._logger.log(bt.Error,`An onclose callback called with error '${e}' threw error '${t}'.`)}}}async _reconnect(e){const t=Date.now();let n=0,r=void 0!==e?e:new Error("Attempting to reconnect due to a unknown error."),o=this._getNextRetryDelay(n++,0,r);if(null===o)return this._logger.log(bt.Debug,"Connection not reconnecting because the IRetryPolicy returned null on the first reconnect attempt."),void this._completeClose(e);if(this._connectionState=Jt.Reconnecting,e?this._logger.log(bt.Information,`Connection reconnecting because of error '${e}'.`):this._logger.log(bt.Information,"Connection reconnecting."),0!==this._reconnectingCallbacks.length){try{this._reconnectingCallbacks.forEach((t=>t.apply(this,[e])))}catch(t){this._logger.log(bt.Error,`An onreconnecting callback called with error '${e}' threw error '${t}'.`)}if(this._connectionState!==Jt.Reconnecting)return void this._logger.log(bt.Debug,"Connection left the reconnecting state in onreconnecting callback. Done reconnecting.")}for(;null!==o;){if(this._logger.log(bt.Information,`Reconnect attempt number ${n} will start in ${o} ms.`),await new Promise((e=>{this._reconnectDelayHandle=setTimeout(e,o)})),this._reconnectDelayHandle=void 0,this._connectionState!==Jt.Reconnecting)return void this._logger.log(bt.Debug,"Connection left the reconnecting state during reconnect delay. Done reconnecting.");try{if(await this._startInternal(),this._connectionState=Jt.Connected,this._logger.log(bt.Information,"HubConnection reconnected successfully."),0!==this._reconnectedCallbacks.length)try{this._reconnectedCallbacks.forEach((e=>e.apply(this,[this.connection.connectionId])))}catch(e){this._logger.log(bt.Error,`An onreconnected callback called with connectionId '${this.connection.connectionId}; threw error '${e}'.`)}return}catch(e){if(this._logger.log(bt.Information,`Reconnect attempt failed because of error '${e}'.`),this._connectionState!==Jt.Reconnecting)return this._logger.log(bt.Debug,`Connection moved to the '${this._connectionState}' from the reconnecting state during reconnect attempt. Done reconnecting.`),void(this._connectionState===Jt.Disconnecting&&this._completeClose());r=e instanceof Error?e:new Error(e.toString()),o=this._getNextRetryDelay(n++,Date.now()-t,r)}}this._logger.log(bt.Information,`Reconnect retries have been exhausted after ${Date.now()-t} ms and ${n} failed attempts. Connection disconnecting.`),this._completeClose()}_getNextRetryDelay(e,t,n){try{return this._reconnectPolicy.nextRetryDelayInMilliseconds({elapsedMilliseconds:t,previousRetryCount:e,retryReason:n})}catch(n){return this._logger.log(bt.Error,`IRetryPolicy.nextRetryDelayInMilliseconds(${e}, ${t}) threw error '${n}'.`),null}}_cancelCallbacksWithError(e){const t=this._callbacks;this._callbacks={},Object.keys(t).forEach((n=>{const r=t[n];try{r(null,e)}catch(t){this._logger.log(bt.Error,`Stream 'error' callback called with '${e}' threw error: ${Mt(t)}`)}}))}_cleanupPingTimer(){this._pingServerHandle&&(clearTimeout(this._pingServerHandle),this._pingServerHandle=void 0)}_cleanupTimeout(){this._timeoutHandle&&clearTimeout(this._timeoutHandle)}_createInvocation(e,t,n,r){if(n)return 0!==r.length?{arguments:t,streamIds:r,target:e,type:qt.Invocation}:{arguments:t,target:e,type:qt.Invocation};{const n=this._invocationId;return this._invocationId++,0!==r.length?{arguments:t,invocationId:n.toString(),streamIds:r,target:e,type:qt.Invocation}:{arguments:t,invocationId:n.toString(),target:e,type:qt.Invocation}}}_launchStreams(e,t){if(0!==e.length){t||(t=Promise.resolve());for(const n in e)e[n].subscribe({complete:()=>{t=t.then((()=>this._sendWithProtocol(this._createCompletionMessage(n))))},error:e=>{let r;r=e instanceof Error?e.message:e&&e.toString?e.toString():"Unknown error",t=t.then((()=>this._sendWithProtocol(this._createCompletionMessage(n,r))))},next:e=>{t=t.then((()=>this._sendWithProtocol(this._createStreamItemMessage(n,e))))}})}}_replaceStreamingParams(e){const t=[],n=[];for(let r=0;r0)&&(t=!1,this._accessToken=await this._accessTokenFactory()),this._setAuthorizationHeader(e);const n=await this._innerClient.send(e);return t&&401===n.statusCode&&this._accessTokenFactory?(this._accessToken=await this._accessTokenFactory(),this._setAuthorizationHeader(e),await this._innerClient.send(e)):n}_setAuthorizationHeader(e){e.headers||(e.headers={}),this._accessToken?e.headers[Zt.Authorization]=`Bearer ${this._accessToken}`:this._accessTokenFactory&&e.headers[Zt.Authorization]&&delete e.headers[Zt.Authorization]}getCookieString(e){return this._innerClient.getCookieString(e)}}class rn extends tn{constructor(e){super(),this._logger=e;const t={_fetchType:void 0,_jar:void 0};var r;r=t,"undefined"==typeof fetch&&(r._jar=new(n(628).CookieJar),"undefined"==typeof fetch?r._fetchType=n(200):r._fetchType=fetch,r._fetchType=n(203)(r._fetchType,r._jar),1)?(this._fetchType=t._fetchType,this._jar=t._jar):this._fetchType=fetch.bind(function(){if("undefined"!=typeof globalThis)return globalThis;if("undefined"!=typeof self)return self;if("undefined"!=typeof window)return window;if(void 0!==n.g)return n.g;throw new Error("could not find global")}()),this._abortControllerType=AbortController;const o={_abortControllerType:this._abortControllerType};(function(e){return"undefined"==typeof AbortController&&(e._abortControllerType=n(778),!0)})(o)&&(this._abortControllerType=o._abortControllerType)}async send(e){if(e.abortSignal&&e.abortSignal.aborted)throw new Ot;if(!e.method)throw new Error("No method defined.");if(!e.url)throw new Error("No url defined.");const t=new this._abortControllerType;let n;e.abortSignal&&(e.abortSignal.onabort=()=>{t.abort(),n=new Ot});let r,o=null;if(e.timeout){const r=e.timeout;o=setTimeout((()=>{t.abort(),this._logger.log(bt.Warning,"Timeout from HTTP request."),n=new $t}),r)}""===e.content&&(e.content=void 0),e.content&&(e.headers=e.headers||{},Tt(e.content)?e.headers["Content-Type"]="application/octet-stream":e.headers["Content-Type"]="text/plain;charset=UTF-8");try{r=await this._fetchType(e.url,{body:e.content,cache:"no-cache",credentials:!0===e.withCredentials?"include":"same-origin",headers:{"X-Requested-With":"XMLHttpRequest",...e.headers},method:e.method,mode:"cors",redirect:"follow",signal:t.signal})}catch(e){if(n)throw n;throw this._logger.log(bt.Warning,`Error from HTTP request. ${e}.`),e}finally{o&&clearTimeout(o),e.abortSignal&&(e.abortSignal.onabort=null)}if(!r.ok){const e=await on(r,"text");throw new Lt(e||r.statusText,r.status)}const s=on(r,e.responseType),i=await s;return new en(r.status,r.statusText,i)}getCookieString(e){return""}}function on(e,t){let n;switch(t){case"arraybuffer":n=e.arrayBuffer();break;case"text":default:n=e.text();break;case"blob":case"document":case"json":throw new Error(`${t} is not supported.`)}return n}class sn extends tn{constructor(e){super(),this._logger=e}send(e){return e.abortSignal&&e.abortSignal.aborted?Promise.reject(new Ot):e.method?e.url?new Promise(((t,n)=>{const r=new XMLHttpRequest;r.open(e.method,e.url,!0),r.withCredentials=void 0===e.withCredentials||e.withCredentials,r.setRequestHeader("X-Requested-With","XMLHttpRequest"),""===e.content&&(e.content=void 0),e.content&&(Tt(e.content)?r.setRequestHeader("Content-Type","application/octet-stream"):r.setRequestHeader("Content-Type","text/plain;charset=UTF-8"));const o=e.headers;o&&Object.keys(o).forEach((e=>{r.setRequestHeader(e,o[e])})),e.responseType&&(r.responseType=e.responseType),e.abortSignal&&(e.abortSignal.onabort=()=>{r.abort(),n(new Ot)}),e.timeout&&(r.timeout=e.timeout),r.onload=()=>{e.abortSignal&&(e.abortSignal.onabort=null),r.status>=200&&r.status<300?t(new en(r.status,r.statusText,r.response||r.responseText)):n(new Lt(r.response||r.responseText||r.statusText,r.status))},r.onerror=()=>{this._logger.log(bt.Warning,`Error from HTTP request. ${r.status}: ${r.statusText}.`),n(new Lt(r.statusText,r.status))},r.ontimeout=()=>{this._logger.log(bt.Warning,"Timeout from HTTP request."),n(new $t)},r.send(e.content)})):Promise.reject(new Error("No url defined.")):Promise.reject(new Error("No method defined."))}}class an extends tn{constructor(e){if(super(),"undefined"!=typeof fetch)this._httpClient=new rn(e);else{if("undefined"==typeof XMLHttpRequest)throw new Error("No usable HttpClient found.");this._httpClient=new sn(e)}}send(e){return e.abortSignal&&e.abortSignal.aborted?Promise.reject(new Ot):e.method?e.url?this._httpClient.send(e):Promise.reject(new Error("No url defined.")):Promise.reject(new Error("No method defined."))}getCookieString(e){return this._httpClient.getCookieString(e)}}var cn,ln;!function(e){e[e.None=0]="None",e[e.WebSockets=1]="WebSockets",e[e.ServerSentEvents=2]="ServerSentEvents",e[e.LongPolling=4]="LongPolling"}(cn||(cn={})),function(e){e[e.Text=1]="Text",e[e.Binary=2]="Binary"}(ln||(ln={}));class hn{constructor(){this._isAborted=!1,this.onabort=null}abort(){this._isAborted||(this._isAborted=!0,this.onabort&&this.onabort())}get signal(){return this}get aborted(){return this._isAborted}}class dn{get pollAborted(){return this._pollAbort.aborted}constructor(e,t,n){this._httpClient=e,this._logger=t,this._pollAbort=new hn,this._options=n,this._running=!1,this.onreceive=null,this.onclose=null}async connect(e,t){if(Ct.isRequired(e,"url"),Ct.isRequired(t,"transferFormat"),Ct.isIn(t,ln,"transferFormat"),this._url=e,this._logger.log(bt.Trace,"(LongPolling transport) Connecting."),t===ln.Binary&&"undefined"!=typeof XMLHttpRequest&&"string"!=typeof(new XMLHttpRequest).responseType)throw new Error("Binary protocols over XmlHttpRequest not implementing advanced features are not supported.");const[n,r]=At(),o={[n]:r,...this._options.headers},s={abortSignal:this._pollAbort.signal,headers:o,timeout:1e5,withCredentials:this._options.withCredentials};t===ln.Binary&&(s.responseType="arraybuffer");const i=`${e}&_=${Date.now()}`;this._logger.log(bt.Trace,`(LongPolling transport) polling: ${i}.`);const a=await this._httpClient.get(i,s);200!==a.statusCode?(this._logger.log(bt.Error,`(LongPolling transport) Unexpected response code: ${a.statusCode}.`),this._closeError=new Lt(a.statusText||"",a.statusCode),this._running=!1):this._running=!0,this._receiving=this._poll(this._url,s)}async _poll(e,t){try{for(;this._running;)try{const n=`${e}&_=${Date.now()}`;this._logger.log(bt.Trace,`(LongPolling transport) polling: ${n}.`);const r=await this._httpClient.get(n,t);204===r.statusCode?(this._logger.log(bt.Information,"(LongPolling transport) Poll terminated by server."),this._running=!1):200!==r.statusCode?(this._logger.log(bt.Error,`(LongPolling transport) Unexpected response code: ${r.statusCode}.`),this._closeError=new Lt(r.statusText||"",r.statusCode),this._running=!1):r.content?(this._logger.log(bt.Trace,`(LongPolling transport) data received. ${kt(r.content,this._options.logMessageContent)}.`),this.onreceive&&this.onreceive(r.content)):this._logger.log(bt.Trace,"(LongPolling transport) Poll timed out, reissuing.")}catch(e){this._running?e instanceof $t?this._logger.log(bt.Trace,"(LongPolling transport) Poll timed out, reissuing."):(this._closeError=e,this._running=!1):this._logger.log(bt.Trace,`(LongPolling transport) Poll errored after shutdown: ${e.message}`)}}finally{this._logger.log(bt.Trace,"(LongPolling transport) Polling complete."),this.pollAborted||this._raiseOnClose()}}async send(e){return this._running?Dt(this._logger,"LongPolling",this._httpClient,this._url,e,this._options):Promise.reject(new Error("Cannot send until the transport is connected"))}async stop(){this._logger.log(bt.Trace,"(LongPolling transport) Stopping polling."),this._running=!1,this._pollAbort.abort();try{await this._receiving,this._logger.log(bt.Trace,`(LongPolling transport) sending DELETE request to ${this._url}.`);const e={},[t,n]=At();e[t]=n;const r={headers:{...e,...this._options.headers},timeout:this._options.timeout,withCredentials:this._options.withCredentials};let o;try{await this._httpClient.delete(this._url,r)}catch(e){o=e}o?o instanceof Lt&&(404===o.statusCode?this._logger.log(bt.Trace,"(LongPolling transport) A 404 response was returned from sending a DELETE request."):this._logger.log(bt.Trace,`(LongPolling transport) Error sending a DELETE request: ${o}`)):this._logger.log(bt.Trace,"(LongPolling transport) DELETE request accepted.")}finally{this._logger.log(bt.Trace,"(LongPolling transport) Stop finished."),this._raiseOnClose()}}_raiseOnClose(){if(this.onclose){let e="(LongPolling transport) Firing onclose event.";this._closeError&&(e+=" Error: "+this._closeError),this._logger.log(bt.Trace,e),this.onclose(this._closeError)}}}class un{constructor(e,t,n,r){this._httpClient=e,this._accessToken=t,this._logger=n,this._options=r,this.onreceive=null,this.onclose=null}async connect(e,t){return Ct.isRequired(e,"url"),Ct.isRequired(t,"transferFormat"),Ct.isIn(t,ln,"transferFormat"),this._logger.log(bt.Trace,"(SSE transport) Connecting."),this._url=e,this._accessToken&&(e+=(e.indexOf("?")<0?"?":"&")+`access_token=${encodeURIComponent(this._accessToken)}`),new Promise(((n,r)=>{let o,s=!1;if(t===ln.Text){if(It.isBrowser||It.isWebWorker)o=new this._options.EventSource(e,{withCredentials:this._options.withCredentials});else{const t=this._httpClient.getCookieString(e),n={};n.Cookie=t;const[r,s]=At();n[r]=s,o=new this._options.EventSource(e,{withCredentials:this._options.withCredentials,headers:{...n,...this._options.headers}})}try{o.onmessage=e=>{if(this.onreceive)try{this._logger.log(bt.Trace,`(SSE transport) data received. ${kt(e.data,this._options.logMessageContent)}.`),this.onreceive(e.data)}catch(e){return void this._close(e)}},o.onerror=e=>{s?this._close():r(new Error("EventSource failed to connect. The connection could not be found on the server, either the connection ID is not present on the server, or a proxy is refusing/buffering the connection. If you have multiple servers check that sticky sessions are enabled."))},o.onopen=()=>{this._logger.log(bt.Information,`SSE connected to ${this._url}`),this._eventSource=o,s=!0,n()}}catch(e){return void r(e)}}else r(new Error("The Server-Sent Events transport only supports the 'Text' transfer format"))}))}async send(e){return this._eventSource?Dt(this._logger,"SSE",this._httpClient,this._url,e,this._options):Promise.reject(new Error("Cannot send until the transport is connected"))}stop(){return this._close(),Promise.resolve()}_close(e){this._eventSource&&(this._eventSource.close(),this._eventSource=void 0,this.onclose&&this.onclose(e))}}class pn{constructor(e,t,n,r,o,s){this._logger=n,this._accessTokenFactory=t,this._logMessageContent=r,this._webSocketConstructor=o,this._httpClient=e,this.onreceive=null,this.onclose=null,this._headers=s}async connect(e,t){let n;return Ct.isRequired(e,"url"),Ct.isRequired(t,"transferFormat"),Ct.isIn(t,ln,"transferFormat"),this._logger.log(bt.Trace,"(WebSockets transport) Connecting."),this._accessTokenFactory&&(n=await this._accessTokenFactory()),new Promise(((r,o)=>{let s;e=e.replace(/^http/,"ws");const i=this._httpClient.getCookieString(e);let a=!1;if(It.isReactNative){const t={},[r,o]=At();t[r]=o,n&&(t[Zt.Authorization]=`Bearer ${n}`),i&&(t[Zt.Cookie]=i),s=new this._webSocketConstructor(e,void 0,{headers:{...t,...this._headers}})}else n&&(e+=(e.indexOf("?")<0?"?":"&")+`access_token=${encodeURIComponent(n)}`);s||(s=new this._webSocketConstructor(e)),t===ln.Binary&&(s.binaryType="arraybuffer"),s.onopen=t=>{this._logger.log(bt.Information,`WebSocket connected to ${e}.`),this._webSocket=s,a=!0,r()},s.onerror=e=>{let t=null;t="undefined"!=typeof ErrorEvent&&e instanceof ErrorEvent?e.error:"There was an error with the transport",this._logger.log(bt.Information,`(WebSockets transport) ${t}.`)},s.onmessage=e=>{if(this._logger.log(bt.Trace,`(WebSockets transport) data received. ${kt(e.data,this._logMessageContent)}.`),this.onreceive)try{this.onreceive(e.data)}catch(e){return void this._close(e)}},s.onclose=e=>{if(a)this._close(e);else{let t=null;t="undefined"!=typeof ErrorEvent&&e instanceof ErrorEvent?e.error:"WebSocket failed to connect. The connection could not be found on the server, either the endpoint may not be a SignalR endpoint, the connection ID is not present on the server, or there is a proxy blocking WebSockets. If you have multiple servers check that sticky sessions are enabled.",o(new Error(t))}}}))}send(e){return this._webSocket&&this._webSocket.readyState===this._webSocketConstructor.OPEN?(this._logger.log(bt.Trace,`(WebSockets transport) sending data. ${kt(e,this._logMessageContent)}.`),this._webSocket.send(e),Promise.resolve()):Promise.reject("WebSocket is not in the OPEN state")}stop(){return this._webSocket&&this._close(void 0),Promise.resolve()}_close(e){this._webSocket&&(this._webSocket.onclose=()=>{},this._webSocket.onmessage=()=>{},this._webSocket.onerror=()=>{},this._webSocket.close(),this._webSocket=void 0),this._logger.log(bt.Trace,"(WebSockets transport) socket closed."),this.onclose&&(!this._isCloseEvent(e)||!1!==e.wasClean&&1e3===e.code?e instanceof Error?this.onclose(e):this.onclose():this.onclose(new Error(`WebSocket closed with status code: ${e.code} (${e.reason||"no reason given"}).`)))}_isCloseEvent(e){return e&&"boolean"==typeof e.wasClean&&"number"==typeof e.code}}class fn{constructor(e,t={}){if(this._stopPromiseResolver=()=>{},this.features={},this._negotiateVersion=1,Ct.isRequired(e,"url"),this._logger=function(e){return void 0===e?new xt(bt.Information):null===e?St.instance:void 0!==e.log?e:new xt(e)}(t.logger),this.baseUrl=this._resolveUrl(e),(t=t||{}).logMessageContent=void 0!==t.logMessageContent&&t.logMessageContent,"boolean"!=typeof t.withCredentials&&void 0!==t.withCredentials)throw new Error("withCredentials option was not a 'boolean' or 'undefined' value");t.withCredentials=void 0===t.withCredentials||t.withCredentials,t.timeout=void 0===t.timeout?1e5:t.timeout,"undefined"==typeof WebSocket||t.WebSocket||(t.WebSocket=WebSocket),"undefined"==typeof EventSource||t.EventSource||(t.EventSource=EventSource),this._httpClient=new nn(t.httpClient||new an(this._logger),t.accessTokenFactory),this._connectionState="Disconnected",this._connectionStarted=!1,this._options=t,this.onreceive=null,this.onclose=null}async start(e){if(e=e||ln.Binary,Ct.isIn(e,ln,"transferFormat"),this._logger.log(bt.Debug,`Starting connection with transfer format '${ln[e]}'.`),"Disconnected"!==this._connectionState)return Promise.reject(new Error("Cannot start an HttpConnection that is not in the 'Disconnected' state."));if(this._connectionState="Connecting",this._startInternalPromise=this._startInternal(e),await this._startInternalPromise,"Disconnecting"===this._connectionState){const e="Failed to start the HttpConnection before stop() was called.";return this._logger.log(bt.Error,e),await this._stopPromise,Promise.reject(new Ot(e))}if("Connected"!==this._connectionState){const e="HttpConnection.startInternal completed gracefully but didn't enter the connection into the connected state!";return this._logger.log(bt.Error,e),Promise.reject(new Ot(e))}this._connectionStarted=!0}send(e){return"Connected"!==this._connectionState?Promise.reject(new Error("Cannot send data if the connection is not in the 'Connected' State.")):(this._sendQueue||(this._sendQueue=new gn(this.transport)),this._sendQueue.send(e))}async stop(e){return"Disconnected"===this._connectionState?(this._logger.log(bt.Debug,`Call to HttpConnection.stop(${e}) ignored because the connection is already in the disconnected state.`),Promise.resolve()):"Disconnecting"===this._connectionState?(this._logger.log(bt.Debug,`Call to HttpConnection.stop(${e}) ignored because the connection is already in the disconnecting state.`),this._stopPromise):(this._connectionState="Disconnecting",this._stopPromise=new Promise((e=>{this._stopPromiseResolver=e})),await this._stopInternal(e),void await this._stopPromise)}async _stopInternal(e){this._stopError=e;try{await this._startInternalPromise}catch(e){}if(this.transport){try{await this.transport.stop()}catch(e){this._logger.log(bt.Error,`HttpConnection.transport.stop() threw error '${e}'.`),this._stopConnection()}this.transport=void 0}else this._logger.log(bt.Debug,"HttpConnection.transport is undefined in HttpConnection.stop() because start() failed.")}async _startInternal(e){let t=this.baseUrl;this._accessTokenFactory=this._options.accessTokenFactory,this._httpClient._accessTokenFactory=this._accessTokenFactory;try{if(this._options.skipNegotiation){if(this._options.transport!==cn.WebSockets)throw new Error("Negotiation can only be skipped when using the WebSocket transport directly.");this.transport=this._constructTransport(cn.WebSockets),await this._startTransport(t,e)}else{let n=null,r=0;do{if(n=await this._getNegotiationResponse(t),"Disconnecting"===this._connectionState||"Disconnected"===this._connectionState)throw new Ot("The connection was stopped during negotiation.");if(n.error)throw new Error(n.error);if(n.ProtocolVersion)throw new Error("Detected a connection attempt to an ASP.NET SignalR Server. This client only supports connecting to an ASP.NET Core SignalR Server. See https://aka.ms/signalr-core-differences for details.");if(n.url&&(t=n.url),n.accessToken){const e=n.accessToken;this._accessTokenFactory=()=>e,this._httpClient._accessToken=e,this._httpClient._accessTokenFactory=void 0}r++}while(n.url&&r<100);if(100===r&&n.url)throw new Error("Negotiate redirection limit exceeded.");await this._createTransport(t,this._options.transport,n,e)}this.transport instanceof dn&&(this.features.inherentKeepAlive=!0),"Connecting"===this._connectionState&&(this._logger.log(bt.Debug,"The HttpConnection connected successfully."),this._connectionState="Connected")}catch(e){return this._logger.log(bt.Error,"Failed to start the connection: "+e),this._connectionState="Disconnected",this.transport=void 0,this._stopPromiseResolver(),Promise.reject(e)}}async _getNegotiationResponse(e){const t={},[n,r]=At();t[n]=r;const o=this._resolveNegotiateUrl(e);this._logger.log(bt.Debug,`Sending negotiation request: ${o}.`);try{const e=await this._httpClient.post(o,{content:"",headers:{...t,...this._options.headers},timeout:this._options.timeout,withCredentials:this._options.withCredentials});if(200!==e.statusCode)return Promise.reject(new Error(`Unexpected status code returned from negotiate '${e.statusCode}'`));const n=JSON.parse(e.content);return(!n.negotiateVersion||n.negotiateVersion<1)&&(n.connectionToken=n.connectionId),n.useStatefulReconnect&&!0!==this._options._useStatefulReconnect?Promise.reject(new Wt("Client didn't negotiate Stateful Reconnect but the server did.")):n}catch(e){let t="Failed to complete negotiation with the server: "+e;return e instanceof Lt&&404===e.statusCode&&(t+=" Either this is not a SignalR endpoint or there is a proxy blocking the connection."),this._logger.log(bt.Error,t),Promise.reject(new Wt(t))}}_createConnectUrl(e,t){return t?e+(-1===e.indexOf("?")?"?":"&")+`id=${t}`:e}async _createTransport(e,t,n,r){let o=this._createConnectUrl(e,n.connectionToken);if(this._isITransport(t))return this._logger.log(bt.Debug,"Connection was provided an instance of ITransport, using that directly."),this.transport=t,await this._startTransport(o,r),void(this.connectionId=n.connectionId);const s=[],i=n.availableTransports||[];let a=n;for(const n of i){const i=this._resolveTransportOrError(n,t,r,!0===(null==a?void 0:a.useStatefulReconnect));if(i instanceof Error)s.push(`${n.transport} failed:`),s.push(i);else if(this._isITransport(i)){if(this.transport=i,!a){try{a=await this._getNegotiationResponse(e)}catch(e){return Promise.reject(e)}o=this._createConnectUrl(e,a.connectionToken)}try{return await this._startTransport(o,r),void(this.connectionId=a.connectionId)}catch(e){if(this._logger.log(bt.Error,`Failed to start the transport '${n.transport}': ${e}`),a=void 0,s.push(new jt(`${n.transport} failed: ${e}`,cn[n.transport])),"Connecting"!==this._connectionState){const e="Failed to select transport before stop() was called.";return this._logger.log(bt.Debug,e),Promise.reject(new Ot(e))}}}}return s.length>0?Promise.reject(new zt(`Unable to connect to the server with any of the available transports. ${s.join(" ")}`,s)):Promise.reject(new Error("None of the transports supported by the client are supported by the server."))}_constructTransport(e){switch(e){case cn.WebSockets:if(!this._options.WebSocket)throw new Error("'WebSocket' is not supported in your environment.");return new pn(this._httpClient,this._accessTokenFactory,this._logger,this._options.logMessageContent,this._options.WebSocket,this._options.headers||{});case cn.ServerSentEvents:if(!this._options.EventSource)throw new Error("'EventSource' is not supported in your environment.");return new un(this._httpClient,this._httpClient._accessToken,this._logger,this._options);case cn.LongPolling:return new dn(this._httpClient,this._logger,this._options);default:throw new Error(`Unknown transport: ${e}.`)}}_startTransport(e,t){return this.transport.onreceive=this.onreceive,this.features.reconnect?this.transport.onclose=async n=>{let r=!1;if(this.features.reconnect){try{this.features.disconnected(),await this.transport.connect(e,t),await this.features.resend()}catch{r=!0}r&&this._stopConnection(n)}else this._stopConnection(n)}:this.transport.onclose=e=>this._stopConnection(e),this.transport.connect(e,t)}_resolveTransportOrError(e,t,n,r){const o=cn[e.transport];if(null==o)return this._logger.log(bt.Debug,`Skipping transport '${e.transport}' because it is not supported by this client.`),new Error(`Skipping transport '${e.transport}' because it is not supported by this client.`);if(!function(e,t){return!e||0!=(t&e)}(t,o))return this._logger.log(bt.Debug,`Skipping transport '${cn[o]}' because it was disabled by the client.`),new Ht(`'${cn[o]}' is disabled by the client.`,o);if(!(e.transferFormats.map((e=>ln[e])).indexOf(n)>=0))return this._logger.log(bt.Debug,`Skipping transport '${cn[o]}' because it does not support the requested transfer format '${ln[n]}'.`),new Error(`'${cn[o]}' does not support ${ln[n]}.`);if(o===cn.WebSockets&&!this._options.WebSocket||o===cn.ServerSentEvents&&!this._options.EventSource)return this._logger.log(bt.Debug,`Skipping transport '${cn[o]}' because it is not supported in your environment.'`),new Ft(`'${cn[o]}' is not supported in your environment.`,o);this._logger.log(bt.Debug,`Selecting transport '${cn[o]}'.`);try{return this.features.reconnect=o===cn.WebSockets?r:void 0,this._constructTransport(o)}catch(e){return e}}_isITransport(e){return e&&"object"==typeof e&&"connect"in e}_stopConnection(e){if(this._logger.log(bt.Debug,`HttpConnection.stopConnection(${e}) called while in state ${this._connectionState}.`),this.transport=void 0,e=this._stopError||e,this._stopError=void 0,"Disconnected"!==this._connectionState){if("Connecting"===this._connectionState)throw this._logger.log(bt.Warning,`Call to HttpConnection.stopConnection(${e}) was ignored because the connection is still in the connecting state.`),new Error(`HttpConnection.stopConnection(${e}) was called while the connection is still in the connecting state.`);if("Disconnecting"===this._connectionState&&this._stopPromiseResolver(),e?this._logger.log(bt.Error,`Connection disconnected with error '${e}'.`):this._logger.log(bt.Information,"Connection disconnected."),this._sendQueue&&(this._sendQueue.stop().catch((e=>{this._logger.log(bt.Error,`TransportSendQueue.stop() threw error '${e}'.`)})),this._sendQueue=void 0),this.connectionId=void 0,this._connectionState="Disconnected",this._connectionStarted){this._connectionStarted=!1;try{this.onclose&&this.onclose(e)}catch(t){this._logger.log(bt.Error,`HttpConnection.onclose(${e}) threw error '${t}'.`)}}}else this._logger.log(bt.Debug,`Call to HttpConnection.stopConnection(${e}) was ignored because the connection is already in the disconnected state.`)}_resolveUrl(e){if(0===e.lastIndexOf("https://",0)||0===e.lastIndexOf("http://",0))return e;if(!It.isBrowser)throw new Error(`Cannot resolve '${e}'.`);const t=window.document.createElement("a");return t.href=e,this._logger.log(bt.Information,`Normalizing '${e}' to '${t.href}'.`),t.href}_resolveNegotiateUrl(e){const t=new URL(e);t.pathname.endsWith("/")?t.pathname+="negotiate":t.pathname+="/negotiate";const n=new URLSearchParams(t.searchParams);return n.has("negotiateVersion")||n.append("negotiateVersion",this._negotiateVersion.toString()),n.has("useStatefulReconnect")?"true"===n.get("useStatefulReconnect")&&(this._options._useStatefulReconnect=!0):!0===this._options._useStatefulReconnect&&n.append("useStatefulReconnect","true"),t.search=n.toString(),t.toString()}}class gn{constructor(e){this._transport=e,this._buffer=[],this._executing=!0,this._sendBufferedData=new mn,this._transportResult=new mn,this._sendLoopPromise=this._sendLoop()}send(e){return this._bufferData(e),this._transportResult||(this._transportResult=new mn),this._transportResult.promise}stop(){return this._executing=!1,this._sendBufferedData.resolve(),this._sendLoopPromise}_bufferData(e){if(this._buffer.length&&typeof this._buffer[0]!=typeof e)throw new Error(`Expected data to be of type ${typeof this._buffer} but was of type ${typeof e}`);this._buffer.push(e),this._sendBufferedData.resolve()}async _sendLoop(){for(;;){if(await this._sendBufferedData.promise,!this._executing){this._transportResult&&this._transportResult.reject("Connection stopped.");break}this._sendBufferedData=new mn;const e=this._transportResult;this._transportResult=void 0;const t="string"==typeof this._buffer[0]?this._buffer.join(""):gn._concatBuffers(this._buffer);this._buffer.length=0;try{await this._transport.send(t),e.resolve()}catch(t){e.reject(t)}}}static _concatBuffers(e){const t=e.map((e=>e.byteLength)).reduce(((e,t)=>e+t)),n=new Uint8Array(t);let r=0;for(const t of e)n.set(new Uint8Array(t),r),r+=t.byteLength;return n.buffer}}class mn{constructor(){this.promise=new Promise(((e,t)=>[this._resolver,this._rejecter]=[e,t]))}resolve(){this._resolver()}reject(e){this._rejecter(e)}}class vn{constructor(){this.name="json",this.version=2,this.transferFormat=ln.Text}parseMessages(e,t){if("string"!=typeof e)throw new Error("Invalid input for JSON hub protocol. Expected a string.");if(!e)return[];null===t&&(t=St.instance);const n=_t.parse(e),r=[];for(const e of n){const n=JSON.parse(e);if("number"!=typeof n.type)throw new Error("Invalid payload.");switch(n.type){case qt.Invocation:this._isInvocationMessage(n);break;case qt.StreamItem:this._isStreamItemMessage(n);break;case qt.Completion:this._isCompletionMessage(n);break;case qt.Ping:case qt.Close:break;case qt.Ack:this._isAckMessage(n);break;case qt.Sequence:this._isSequenceMessage(n);break;default:t.log(bt.Information,"Unknown message type '"+n.type+"' ignored.");continue}r.push(n)}return r}writeMessage(e){return _t.write(JSON.stringify(e))}_isInvocationMessage(e){this._assertNotEmptyString(e.target,"Invalid payload for Invocation message."),void 0!==e.invocationId&&this._assertNotEmptyString(e.invocationId,"Invalid payload for Invocation message.")}_isStreamItemMessage(e){if(this._assertNotEmptyString(e.invocationId,"Invalid payload for StreamItem message."),void 0===e.item)throw new Error("Invalid payload for StreamItem message.")}_isCompletionMessage(e){if(e.result&&e.error)throw new Error("Invalid payload for Completion message.");!e.result&&e.error&&this._assertNotEmptyString(e.error,"Invalid payload for Completion message."),this._assertNotEmptyString(e.invocationId,"Invalid payload for Completion message.")}_isAckMessage(e){if("number"!=typeof e.sequenceId)throw new Error("Invalid SequenceId for Ack message.")}_isSequenceMessage(e){if("number"!=typeof e.sequenceId)throw new Error("Invalid SequenceId for Sequence message.")}_assertNotEmptyString(e,t){if("string"!=typeof e||""===e)throw new Error(t)}}const yn={trace:bt.Trace,debug:bt.Debug,info:bt.Information,information:bt.Information,warn:bt.Warning,warning:bt.Warning,error:bt.Error,critical:bt.Critical,none:bt.None};class wn{configureLogging(e){if(Ct.isRequired(e,"logging"),function(e){return void 0!==e.log}(e))this.logger=e;else if("string"==typeof e){const t=function(e){const t=yn[e.toLowerCase()];if(void 0!==t)return t;throw new Error(`Unknown log level: ${e}`)}(e);this.logger=new xt(t)}else this.logger=new xt(e);return this}withUrl(e,t){return Ct.isRequired(e,"url"),Ct.isNotEmpty(e,"url"),this.url=e,this.httpConnectionOptions="object"==typeof t?{...this.httpConnectionOptions,...t}:{...this.httpConnectionOptions,transport:t},this}withHubProtocol(e){return Ct.isRequired(e,"protocol"),this.protocol=e,this}withAutomaticReconnect(e){if(this.reconnectPolicy)throw new Error("A reconnectPolicy has already been set.");return e?Array.isArray(e)?this.reconnectPolicy=new Qt(e):this.reconnectPolicy=e:this.reconnectPolicy=new Qt,this}withServerTimeout(e){return Ct.isRequired(e,"milliseconds"),this._serverTimeoutInMilliseconds=e,this}withKeepAliveInterval(e){return Ct.isRequired(e,"milliseconds"),this._keepAliveIntervalInMilliseconds=e,this}withStatefulReconnect(e){return void 0===this.httpConnectionOptions&&(this.httpConnectionOptions={}),this.httpConnectionOptions._useStatefulReconnect=!0,this._statefulReconnectBufferSize=null==e?void 0:e.bufferSize,this}build(){const e=this.httpConnectionOptions||{};if(void 0===e.logger&&(e.logger=this.logger),!this.url)throw new Error("The 'HubConnectionBuilder.withUrl' method must be called before building the connection.");const t=new fn(this.url,e);return Yt.create(t,this.logger||St.instance,this.protocol||new vn,this.reconnectPolicy,this._serverTimeoutInMilliseconds,this._keepAliveIntervalInMilliseconds,this._statefulReconnectBufferSize)}}var _n;!function(e){e[e.Default=0]="Default",e[e.Server=1]="Server",e[e.WebAssembly=2]="WebAssembly",e[e.WebView=3]="WebView"}(_n||(_n={}));var bn,Sn,En,Cn=4294967295;function In(e,t,n){var r=Math.floor(n/4294967296),o=n;e.setUint32(t,r),e.setUint32(t+4,o)}function kn(e,t){return 4294967296*e.getInt32(t)+e.getUint32(t+4)}var Tn=("undefined"==typeof process||"never"!==(null===(bn=null===process||void 0===process?void 0:process.env)||void 0===bn?void 0:bn.TEXT_ENCODING))&&"undefined"!=typeof TextEncoder&&"undefined"!=typeof TextDecoder;function Dn(e){for(var t=e.length,n=0,r=0;r=55296&&o<=56319&&r65535&&(h-=65536,s.push(h>>>10&1023|55296),h=56320|1023&h),s.push(h)}else s.push(a);s.length>=4096&&(i+=String.fromCharCode.apply(String,s),s.length=0)}return s.length>0&&(i+=String.fromCharCode.apply(String,s)),i}var Nn,Un=Tn?new TextDecoder:null,Mn=Tn?"undefined"!=typeof process&&"force"!==(null===(En=null===process||void 0===process?void 0:process.env)||void 0===En?void 0:En.TEXT_DECODER)?200:0:Cn,Bn=function(e,t){this.type=e,this.data=t},Ln=(Nn=function(e,t){return Nn=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},Nn(e,t)},function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function n(){this.constructor=e}Nn(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}),$n=function(e){function t(n){var r=e.call(this,n)||this,o=Object.create(t.prototype);return Object.setPrototypeOf(r,o),Object.defineProperty(r,"name",{configurable:!0,enumerable:!1,value:t.name}),r}return Ln(t,e),t}(Error),On={type:-1,encode:function(e){var t,n,r,o;return e instanceof Date?function(e){var t,n=e.sec,r=e.nsec;if(n>=0&&r>=0&&n<=17179869183){if(0===r&&n<=4294967295){var o=new Uint8Array(4);return(t=new DataView(o.buffer)).setUint32(0,n),o}var s=n/4294967296,i=4294967295&n;return o=new Uint8Array(8),(t=new DataView(o.buffer)).setUint32(0,r<<2|3&s),t.setUint32(4,i),o}return o=new Uint8Array(12),(t=new DataView(o.buffer)).setUint32(0,r),In(t,4,n),o}((r=1e6*((t=e.getTime())-1e3*(n=Math.floor(t/1e3))),{sec:n+(o=Math.floor(r/1e9)),nsec:r-1e9*o})):null},decode:function(e){var t=function(e){var t=new DataView(e.buffer,e.byteOffset,e.byteLength);switch(e.byteLength){case 4:return{sec:t.getUint32(0),nsec:0};case 8:var n=t.getUint32(0);return{sec:4294967296*(3&n)+t.getUint32(4),nsec:n>>>2};case 12:return{sec:kn(t,4),nsec:t.getUint32(0)};default:throw new $n("Unrecognized data size for timestamp (expected 4, 8, or 12): ".concat(e.length))}}(e);return new Date(1e3*t.sec+t.nsec/1e6)}},Fn=function(){function e(){this.builtInEncoders=[],this.builtInDecoders=[],this.encoders=[],this.decoders=[],this.register(On)}return e.prototype.register=function(e){var t=e.type,n=e.encode,r=e.decode;if(t>=0)this.encoders[t]=n,this.decoders[t]=r;else{var o=1+t;this.builtInEncoders[o]=n,this.builtInDecoders[o]=r}},e.prototype.tryToEncode=function(e,t){for(var n=0;nthis.maxDepth)throw new Error("Too deep objects in depth ".concat(t));null==e?this.encodeNil():"boolean"==typeof e?this.encodeBoolean(e):"number"==typeof e?this.encodeNumber(e):"string"==typeof e?this.encodeString(e):this.encodeObject(e,t)},e.prototype.ensureBufferSizeToWrite=function(e){var t=this.pos+e;this.view.byteLength=0?e<128?this.writeU8(e):e<256?(this.writeU8(204),this.writeU8(e)):e<65536?(this.writeU8(205),this.writeU16(e)):e<4294967296?(this.writeU8(206),this.writeU32(e)):(this.writeU8(207),this.writeU64(e)):e>=-32?this.writeU8(224|e+32):e>=-128?(this.writeU8(208),this.writeI8(e)):e>=-32768?(this.writeU8(209),this.writeI16(e)):e>=-2147483648?(this.writeU8(210),this.writeI32(e)):(this.writeU8(211),this.writeI64(e)):this.forceFloat32?(this.writeU8(202),this.writeF32(e)):(this.writeU8(203),this.writeF64(e))},e.prototype.writeStringHeader=function(e){if(e<32)this.writeU8(160+e);else if(e<256)this.writeU8(217),this.writeU8(e);else if(e<65536)this.writeU8(218),this.writeU16(e);else{if(!(e<4294967296))throw new Error("Too long string: ".concat(e," bytes in UTF-8"));this.writeU8(219),this.writeU32(e)}},e.prototype.encodeString=function(e){if(e.length>xn){var t=Dn(e);this.ensureBufferSizeToWrite(5+t),this.writeStringHeader(t),An(e,this.bytes,this.pos),this.pos+=t}else t=Dn(e),this.ensureBufferSizeToWrite(5+t),this.writeStringHeader(t),function(e,t,n){for(var r=e.length,o=n,s=0;s>6&31|192;else{if(i>=55296&&i<=56319&&s>12&15|224,t[o++]=i>>6&63|128):(t[o++]=i>>18&7|240,t[o++]=i>>12&63|128,t[o++]=i>>6&63|128)}t[o++]=63&i|128}else t[o++]=i}}(e,this.bytes,this.pos),this.pos+=t},e.prototype.encodeObject=function(e,t){var n=this.extensionCodec.tryToEncode(e,this.context);if(null!=n)this.encodeExtension(n);else if(Array.isArray(e))this.encodeArray(e,t);else if(ArrayBuffer.isView(e))this.encodeBinary(e);else{if("object"!=typeof e)throw new Error("Unrecognized object: ".concat(Object.prototype.toString.apply(e)));this.encodeMap(e,t)}},e.prototype.encodeBinary=function(e){var t=e.byteLength;if(t<256)this.writeU8(196),this.writeU8(t);else if(t<65536)this.writeU8(197),this.writeU16(t);else{if(!(t<4294967296))throw new Error("Too large binary: ".concat(t));this.writeU8(198),this.writeU32(t)}var n=Hn(e);this.writeU8a(n)},e.prototype.encodeArray=function(e,t){var n=e.length;if(n<16)this.writeU8(144+n);else if(n<65536)this.writeU8(220),this.writeU16(n);else{if(!(n<4294967296))throw new Error("Too large array: ".concat(n));this.writeU8(221),this.writeU32(n)}for(var r=0,o=e;r0&&e<=this.maxKeyLength},e.prototype.find=function(e,t,n){e:for(var r=0,o=this.caches[n-1];r=this.maxLengthPerKey?n[Math.random()*n.length|0]=r:n.push(r)},e.prototype.decode=function(e,t,n){var r=this.find(e,t,n);if(null!=r)return this.hit++,r;this.miss++;var o=Pn(e,t,n),s=Uint8Array.prototype.slice.call(e,t,t+n);return this.store(s,o),o},e}(),qn=function(e,t){var n,r,o,s,i={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return s={next:a(0),throw:a(1),return:a(2)},"function"==typeof Symbol&&(s[Symbol.iterator]=function(){return this}),s;function a(s){return function(a){return function(s){if(n)throw new TypeError("Generator is already executing.");for(;i;)try{if(n=1,r&&(o=2&s[0]?r.return:s[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,s[1])).done)return o;switch(r=0,o&&(s=[2&s[0],o.value]),s[0]){case 0:case 1:o=s;break;case 4:return i.label++,{value:s[1],done:!1};case 5:i.label++,r=s[1],s=[0];continue;case 7:s=i.ops.pop(),i.trys.pop();continue;default:if(!((o=(o=i.trys).length>0&&o[o.length-1])||6!==s[0]&&2!==s[0])){i=0;continue}if(3===s[0]&&(!o||s[1]>o[0]&&s[1]=e},e.prototype.createExtraByteError=function(e){var t=this.view,n=this.pos;return new RangeError("Extra ".concat(t.byteLength-n," of ").concat(t.byteLength," byte(s) found at buffer[").concat(e,"]"))},e.prototype.decode=function(e){this.reinitializeState(),this.setBuffer(e);var t=this.doDecodeSync();if(this.hasRemaining(1))throw this.createExtraByteError(this.pos);return t},e.prototype.decodeMulti=function(e){return qn(this,(function(t){switch(t.label){case 0:this.reinitializeState(),this.setBuffer(e),t.label=1;case 1:return this.hasRemaining(1)?[4,this.doDecodeSync()]:[3,3];case 2:return t.sent(),[3,1];case 3:return[2]}}))},e.prototype.decodeAsync=function(e){var t,n,r,o,s,i,a;return s=this,void 0,a=function(){var s,i,a,c,l,h,d,u;return qn(this,(function(p){switch(p.label){case 0:s=!1,p.label=1;case 1:p.trys.push([1,6,7,12]),t=Jn(e),p.label=2;case 2:return[4,t.next()];case 3:if((n=p.sent()).done)return[3,5];if(a=n.value,s)throw this.createExtraByteError(this.totalPos);this.appendBuffer(a);try{i=this.doDecodeSync(),s=!0}catch(e){if(!(e instanceof Yn))throw e}this.totalPos+=this.pos,p.label=4;case 4:return[3,2];case 5:return[3,12];case 6:return c=p.sent(),r={error:c},[3,12];case 7:return p.trys.push([7,,10,11]),n&&!n.done&&(o=t.return)?[4,o.call(t)]:[3,9];case 8:p.sent(),p.label=9;case 9:return[3,11];case 10:if(r)throw r.error;return[7];case 11:return[7];case 12:if(s){if(this.hasRemaining(1))throw this.createExtraByteError(this.totalPos);return[2,i]}throw h=(l=this).headByte,d=l.pos,u=l.totalPos,new RangeError("Insufficient data in parsing ".concat(Wn(h)," at ").concat(u," (").concat(d," in the current buffer)"))}}))},new((i=void 0)||(i=Promise))((function(e,t){function n(e){try{o(a.next(e))}catch(e){t(e)}}function r(e){try{o(a.throw(e))}catch(e){t(e)}}function o(t){var o;t.done?e(t.value):(o=t.value,o instanceof i?o:new i((function(e){e(o)}))).then(n,r)}o((a=a.apply(s,[])).next())}))},e.prototype.decodeArrayStream=function(e){return this.decodeMultiAsync(e,!0)},e.prototype.decodeStream=function(e){return this.decodeMultiAsync(e,!1)},e.prototype.decodeMultiAsync=function(e,t){return function(n,r,o){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var s,i=function(){var n,r,o,s,i,a,c,l,h;return qn(this,(function(d){switch(d.label){case 0:n=t,r=-1,d.label=1;case 1:d.trys.push([1,13,14,19]),o=Jn(e),d.label=2;case 2:return[4,Kn(o.next())];case 3:if((s=d.sent()).done)return[3,12];if(i=s.value,t&&0===r)throw this.createExtraByteError(this.totalPos);this.appendBuffer(i),n&&(r=this.readArraySize(),n=!1,this.complete()),d.label=4;case 4:d.trys.push([4,9,,10]),d.label=5;case 5:return[4,Kn(this.doDecodeSync())];case 6:return[4,d.sent()];case 7:return d.sent(),0==--r?[3,8]:[3,5];case 8:return[3,10];case 9:if(!((a=d.sent())instanceof Yn))throw a;return[3,10];case 10:this.totalPos+=this.pos,d.label=11;case 11:return[3,2];case 12:return[3,19];case 13:return c=d.sent(),l={error:c},[3,19];case 14:return d.trys.push([14,,17,18]),s&&!s.done&&(h=o.return)?[4,Kn(h.call(o))]:[3,16];case 15:d.sent(),d.label=16;case 16:return[3,18];case 17:if(l)throw l.error;return[7];case 18:return[7];case 19:return[2]}}))}.apply(n,r||[]),a=[];return s={},c("next"),c("throw"),c("return"),s[Symbol.asyncIterator]=function(){return this},s;function c(e){i[e]&&(s[e]=function(t){return new Promise((function(n,r){a.push([e,t,n,r])>1||l(e,t)}))})}function l(e,t){try{(n=i[e](t)).value instanceof Kn?Promise.resolve(n.value.v).then(h,d):u(a[0][2],n)}catch(e){u(a[0][3],e)}var n}function h(e){l("next",e)}function d(e){l("throw",e)}function u(e,t){e(t),a.shift(),a.length&&l(a[0][0],a[0][1])}}(this,arguments)},e.prototype.doDecodeSync=function(){e:for(;;){var e=this.readHeadByte(),t=void 0;if(e>=224)t=e-256;else if(e<192)if(e<128)t=e;else if(e<144){if(0!=(r=e-128)){this.pushMapState(r),this.complete();continue e}t={}}else if(e<160){if(0!=(r=e-144)){this.pushArrayState(r),this.complete();continue e}t=[]}else{var n=e-160;t=this.decodeUtf8String(n,0)}else if(192===e)t=null;else if(194===e)t=!1;else if(195===e)t=!0;else if(202===e)t=this.readF32();else if(203===e)t=this.readF64();else if(204===e)t=this.readU8();else if(205===e)t=this.readU16();else if(206===e)t=this.readU32();else if(207===e)t=this.readU64();else if(208===e)t=this.readI8();else if(209===e)t=this.readI16();else if(210===e)t=this.readI32();else if(211===e)t=this.readI64();else if(217===e)n=this.lookU8(),t=this.decodeUtf8String(n,1);else if(218===e)n=this.lookU16(),t=this.decodeUtf8String(n,2);else if(219===e)n=this.lookU32(),t=this.decodeUtf8String(n,4);else if(220===e){if(0!==(r=this.readU16())){this.pushArrayState(r),this.complete();continue e}t=[]}else if(221===e){if(0!==(r=this.readU32())){this.pushArrayState(r),this.complete();continue e}t=[]}else if(222===e){if(0!==(r=this.readU16())){this.pushMapState(r),this.complete();continue e}t={}}else if(223===e){if(0!==(r=this.readU32())){this.pushMapState(r),this.complete();continue e}t={}}else if(196===e){var r=this.lookU8();t=this.decodeBinary(r,1)}else if(197===e)r=this.lookU16(),t=this.decodeBinary(r,2);else if(198===e)r=this.lookU32(),t=this.decodeBinary(r,4);else if(212===e)t=this.decodeExtension(1,0);else if(213===e)t=this.decodeExtension(2,0);else if(214===e)t=this.decodeExtension(4,0);else if(215===e)t=this.decodeExtension(8,0);else if(216===e)t=this.decodeExtension(16,0);else if(199===e)r=this.lookU8(),t=this.decodeExtension(r,1);else if(200===e)r=this.lookU16(),t=this.decodeExtension(r,2);else{if(201!==e)throw new $n("Unrecognized type byte: ".concat(Wn(e)));r=this.lookU32(),t=this.decodeExtension(r,4)}this.complete();for(var o=this.stack;o.length>0;){var s=o[o.length-1];if(0===s.type){if(s.array[s.position]=t,s.position++,s.position!==s.size)continue e;o.pop(),t=s.array}else{if(1===s.type){if("string"!=(i=typeof t)&&"number"!==i)throw new $n("The type of key must be string or number but "+typeof t);if("__proto__"===t)throw new $n("The key __proto__ is not allowed");s.key=t,s.type=2;continue e}if(s.map[s.key]=t,s.readCount++,s.readCount!==s.size){s.key=null,s.type=1;continue e}o.pop(),t=s.map}}return t}var i},e.prototype.readHeadByte=function(){return-1===this.headByte&&(this.headByte=this.readU8()),this.headByte},e.prototype.complete=function(){this.headByte=-1},e.prototype.readArraySize=function(){var e=this.readHeadByte();switch(e){case 220:return this.readU16();case 221:return this.readU32();default:if(e<160)return e-144;throw new $n("Unrecognized array type byte: ".concat(Wn(e)))}},e.prototype.pushMapState=function(e){if(e>this.maxMapLength)throw new $n("Max length exceeded: map length (".concat(e,") > maxMapLengthLength (").concat(this.maxMapLength,")"));this.stack.push({type:1,size:e,key:null,readCount:0,map:{}})},e.prototype.pushArrayState=function(e){if(e>this.maxArrayLength)throw new $n("Max length exceeded: array length (".concat(e,") > maxArrayLength (").concat(this.maxArrayLength,")"));this.stack.push({type:0,size:e,array:new Array(e),position:0})},e.prototype.decodeUtf8String=function(e,t){var n;if(e>this.maxStrLength)throw new $n("Max length exceeded: UTF-8 byte length (".concat(e,") > maxStrLength (").concat(this.maxStrLength,")"));if(this.bytes.byteLengthMn?function(e,t,n){var r=e.subarray(t,t+n);return Un.decode(r)}(this.bytes,o,e):Pn(this.bytes,o,e),this.pos+=t+e,r},e.prototype.stateIsMapKey=function(){return this.stack.length>0&&1===this.stack[this.stack.length-1].type},e.prototype.decodeBinary=function(e,t){if(e>this.maxBinLength)throw new $n("Max length exceeded: bin length (".concat(e,") > maxBinLength (").concat(this.maxBinLength,")"));if(!this.hasRemaining(e+t))throw Gn;var n=this.pos+t,r=this.bytes.subarray(n,n+e);return this.pos+=t+e,r},e.prototype.decodeExtension=function(e,t){if(e>this.maxExtLength)throw new $n("Max length exceeded: ext length (".concat(e,") > maxExtLength (").concat(this.maxExtLength,")"));var n=this.view.getInt8(this.pos+t),r=this.decodeBinary(e,t+1);return this.extensionCodec.decode(r,n,this.context)},e.prototype.lookU8=function(){return this.view.getUint8(this.pos)},e.prototype.lookU16=function(){return this.view.getUint16(this.pos)},e.prototype.lookU32=function(){return this.view.getUint32(this.pos)},e.prototype.readU8=function(){var e=this.view.getUint8(this.pos);return this.pos++,e},e.prototype.readI8=function(){var e=this.view.getInt8(this.pos);return this.pos++,e},e.prototype.readU16=function(){var e=this.view.getUint16(this.pos);return this.pos+=2,e},e.prototype.readI16=function(){var e=this.view.getInt16(this.pos);return this.pos+=2,e},e.prototype.readU32=function(){var e=this.view.getUint32(this.pos);return this.pos+=4,e},e.prototype.readI32=function(){var e=this.view.getInt32(this.pos);return this.pos+=4,e},e.prototype.readU64=function(){var e,t,n=(e=this.view,t=this.pos,4294967296*e.getUint32(t)+e.getUint32(t+4));return this.pos+=8,n},e.prototype.readI64=function(){var e=kn(this.view,this.pos);return this.pos+=8,e},e.prototype.readF32=function(){var e=this.view.getFloat32(this.pos);return this.pos+=4,e},e.prototype.readF64=function(){var e=this.view.getFloat64(this.pos);return this.pos+=8,e},e}();class er{static write(e){let t=e.byteLength||e.length;const n=[];do{let e=127&t;t>>=7,t>0&&(e|=128),n.push(e)}while(t>0);t=e.byteLength||e.length;const r=new Uint8Array(n.length+t);return r.set(n,0),r.set(e,n.length),r.buffer}static parse(e){const t=[],n=new Uint8Array(e),r=[0,7,14,21,28];for(let o=0;o7)throw new Error("Messages bigger than 2GB are not supported.");if(!(n.byteLength>=o+i+a))throw new Error("Incomplete message.");t.push(n.slice?n.slice(o+i,o+i+a):n.subarray(o+i,o+i+a)),o=o+i+a}return t}}const tr=new Uint8Array([145,qt.Ping]);class nr{constructor(e){this.name="messagepack",this.version=2,this.transferFormat=ln.Binary,this._errorResult=1,this._voidResult=2,this._nonVoidResult=3,e=e||{},this._encoder=new jn(e.extensionCodec,e.context,e.maxDepth,e.initialBufferSize,e.sortKeys,e.forceFloat32,e.ignoreUndefined,e.forceIntegerToFloat),this._decoder=new Zn(e.extensionCodec,e.context,e.maxStrLength,e.maxBinLength,e.maxArrayLength,e.maxMapLength,e.maxExtLength)}parseMessages(e,t){if(!(n=e)||"undefined"==typeof ArrayBuffer||!(n instanceof ArrayBuffer||n.constructor&&"ArrayBuffer"===n.constructor.name))throw new Error("Invalid input for MessagePack hub protocol. Expected an ArrayBuffer.");var n;null===t&&(t=St.instance);const r=er.parse(e),o=[];for(const e of r){const n=this._parseMessage(e,t);n&&o.push(n)}return o}writeMessage(e){switch(e.type){case qt.Invocation:return this._writeInvocation(e);case qt.StreamInvocation:return this._writeStreamInvocation(e);case qt.StreamItem:return this._writeStreamItem(e);case qt.Completion:return this._writeCompletion(e);case qt.Ping:return er.write(tr);case qt.CancelInvocation:return this._writeCancelInvocation(e);case qt.Close:return this._writeClose();case qt.Ack:return this._writeAck(e);case qt.Sequence:return this._writeSequence(e);default:throw new Error("Invalid message type.")}}_parseMessage(e,t){if(0===e.length)throw new Error("Invalid payload.");const n=this._decoder.decode(e);if(0===n.length||!(n instanceof Array))throw new Error("Invalid payload.");const r=n[0];switch(r){case qt.Invocation:return this._createInvocationMessage(this._readHeaders(n),n);case qt.StreamItem:return this._createStreamItemMessage(this._readHeaders(n),n);case qt.Completion:return this._createCompletionMessage(this._readHeaders(n),n);case qt.Ping:return this._createPingMessage(n);case qt.Close:return this._createCloseMessage(n);case qt.Ack:return this._createAckMessage(n);case qt.Sequence:return this._createSequenceMessage(n);default:return t.log(bt.Information,"Unknown message type '"+r+"' ignored."),null}}_createCloseMessage(e){if(e.length<2)throw new Error("Invalid payload for Close message.");return{allowReconnect:e.length>=3?e[2]:void 0,error:e[1],type:qt.Close}}_createPingMessage(e){if(e.length<1)throw new Error("Invalid payload for Ping message.");return{type:qt.Ping}}_createInvocationMessage(e,t){if(t.length<5)throw new Error("Invalid payload for Invocation message.");const n=t[2];return n?{arguments:t[4],headers:e,invocationId:n,streamIds:[],target:t[3],type:qt.Invocation}:{arguments:t[4],headers:e,streamIds:[],target:t[3],type:qt.Invocation}}_createStreamItemMessage(e,t){if(t.length<4)throw new Error("Invalid payload for StreamItem message.");return{headers:e,invocationId:t[2],item:t[3],type:qt.StreamItem}}_createCompletionMessage(e,t){if(t.length<4)throw new Error("Invalid payload for Completion message.");const n=t[3];if(n!==this._voidResult&&t.length<5)throw new Error("Invalid payload for Completion message.");let r,o;switch(n){case this._errorResult:r=t[4];break;case this._nonVoidResult:o=t[4]}return{error:r,headers:e,invocationId:t[2],result:o,type:qt.Completion}}_createAckMessage(e){if(e.length<1)throw new Error("Invalid payload for Ack message.");return{sequenceId:e[1],type:qt.Ack}}_createSequenceMessage(e){if(e.length<1)throw new Error("Invalid payload for Sequence message.");return{sequenceId:e[1],type:qt.Sequence}}_writeInvocation(e){let t;return t=e.streamIds?this._encoder.encode([qt.Invocation,e.headers||{},e.invocationId||null,e.target,e.arguments,e.streamIds]):this._encoder.encode([qt.Invocation,e.headers||{},e.invocationId||null,e.target,e.arguments]),er.write(t.slice())}_writeStreamInvocation(e){let t;return t=e.streamIds?this._encoder.encode([qt.StreamInvocation,e.headers||{},e.invocationId,e.target,e.arguments,e.streamIds]):this._encoder.encode([qt.StreamInvocation,e.headers||{},e.invocationId,e.target,e.arguments]),er.write(t.slice())}_writeStreamItem(e){const t=this._encoder.encode([qt.StreamItem,e.headers||{},e.invocationId,e.item]);return er.write(t.slice())}_writeCompletion(e){const t=e.error?this._errorResult:void 0!==e.result?this._nonVoidResult:this._voidResult;let n;switch(t){case this._errorResult:n=this._encoder.encode([qt.Completion,e.headers||{},e.invocationId,t,e.error]);break;case this._voidResult:n=this._encoder.encode([qt.Completion,e.headers||{},e.invocationId,t]);break;case this._nonVoidResult:n=this._encoder.encode([qt.Completion,e.headers||{},e.invocationId,t,e.result])}return er.write(n.slice())}_writeCancelInvocation(e){const t=this._encoder.encode([qt.CancelInvocation,e.headers||{},e.invocationId]);return er.write(t.slice())}_writeClose(){const e=this._encoder.encode([qt.Close,null]);return er.write(e.slice())}_writeAck(e){const t=this._encoder.encode([qt.Ack,e.sequenceId]);return er.write(t.slice())}_writeSequence(e){const t=this._encoder.encode([qt.Sequence,e.sequenceId]);return er.write(t.slice())}_readHeaders(e){const t=e[1];if("object"!=typeof t)throw new Error("Invalid headers.");return t}}const rr="function"==typeof TextDecoder?new TextDecoder("utf-8"):null,or=rr?rr.decode.bind(rr):function(e){let t=0;const n=e.length,r=[],o=[];for(;t65535&&(o-=65536,r.push(o>>>10&1023|55296),o=56320|1023&o),r.push(o)}r.length>1024&&(o.push(String.fromCharCode.apply(null,r)),r.length=0)}return o.push(String.fromCharCode.apply(null,r)),o.join("")},sr=Math.pow(2,32),ir=Math.pow(2,21)-1;function ar(e,t){return e[t]|e[t+1]<<8|e[t+2]<<16|e[t+3]<<24}function cr(e,t){return e[t]+(e[t+1]<<8)+(e[t+2]<<16)+(e[t+3]<<24>>>0)}function lr(e,t){const n=cr(e,t+4);if(n>ir)throw new Error(`Cannot read uint64 with high order part ${n}, because the result would exceed Number.MAX_SAFE_INTEGER.`);return n*sr+cr(e,t)}class hr{constructor(e){this.batchData=e;const t=new fr(e);this.arrayRangeReader=new gr(e),this.arrayBuilderSegmentReader=new mr(e),this.diffReader=new dr(e),this.editReader=new ur(e,t),this.frameReader=new pr(e,t)}updatedComponents(){return ar(this.batchData,this.batchData.length-20)}referenceFrames(){return ar(this.batchData,this.batchData.length-16)}disposedComponentIds(){return ar(this.batchData,this.batchData.length-12)}disposedEventHandlerIds(){return ar(this.batchData,this.batchData.length-8)}updatedComponentsEntry(e,t){const n=e+4*t;return ar(this.batchData,n)}referenceFramesEntry(e,t){return e+20*t}disposedComponentIdsEntry(e,t){const n=e+4*t;return ar(this.batchData,n)}disposedEventHandlerIdsEntry(e,t){const n=e+8*t;return lr(this.batchData,n)}}class dr{constructor(e){this.batchDataUint8=e}componentId(e){return ar(this.batchDataUint8,e)}edits(e){return e+4}editsEntry(e,t){return e+16*t}}class ur{constructor(e,t){this.batchDataUint8=e,this.stringReader=t}editType(e){return ar(this.batchDataUint8,e)}siblingIndex(e){return ar(this.batchDataUint8,e+4)}newTreeIndex(e){return ar(this.batchDataUint8,e+8)}moveToSiblingIndex(e){return ar(this.batchDataUint8,e+8)}removedAttributeName(e){const t=ar(this.batchDataUint8,e+12);return this.stringReader.readString(t)}}class pr{constructor(e,t){this.batchDataUint8=e,this.stringReader=t}frameType(e){return ar(this.batchDataUint8,e)}subtreeLength(e){return ar(this.batchDataUint8,e+4)}elementReferenceCaptureId(e){const t=ar(this.batchDataUint8,e+4);return this.stringReader.readString(t)}componentId(e){return ar(this.batchDataUint8,e+8)}elementName(e){const t=ar(this.batchDataUint8,e+8);return this.stringReader.readString(t)}textContent(e){const t=ar(this.batchDataUint8,e+4);return this.stringReader.readString(t)}markupContent(e){const t=ar(this.batchDataUint8,e+4);return this.stringReader.readString(t)}attributeName(e){const t=ar(this.batchDataUint8,e+4);return this.stringReader.readString(t)}attributeValue(e){const t=ar(this.batchDataUint8,e+8);return this.stringReader.readString(t)}attributeEventHandlerId(e){return lr(this.batchDataUint8,e+12)}}class fr{constructor(e){this.batchDataUint8=e,this.stringTableStartIndex=ar(e,e.length-4)}readString(e){if(-1===e)return null;{const n=ar(this.batchDataUint8,this.stringTableStartIndex+4*e),r=function(e,t){let n=0,r=0;for(let o=0;o<4;o++){const s=e[t+o];if(n|=(127&s)<this.nextBatchId)return this.fatalError?(this.logger.log(st.Debug,`Received a new batch ${e} but errored out on a previous batch ${this.nextBatchId-1}`),void await n.send("OnRenderCompleted",this.nextBatchId-1,this.fatalError.toString())):void this.logger.log(st.Debug,`Waiting for batch ${this.nextBatchId}. Batch ${e} not processed.`);try{this.nextBatchId++,this.logger.log(st.Debug,`Applying batch ${e}.`),function(e,t){const n=ge[e];if(!n)throw new Error(`There is no browser renderer with ID ${e}.`);const r=t.arrayRangeReader,o=t.updatedComponents(),s=r.values(o),i=r.count(o),a=t.referenceFrames(),c=r.values(a),l=t.diffReader;for(let e=0;e{e.onclick=function(e){location.reload(),e.preventDefault()}})),document.querySelectorAll("#blazor-error-ui .dismiss").forEach((e=>{e.onclick=function(e){const t=document.querySelector("#blazor-error-ui");t&&(t.style.display="none"),e.preventDefault()}})))}class kr{constructor(t,n,r,o){this._firstUpdate=!0,this._renderingFailed=!1,this._disposed=!1,this._circuitId=void 0,this._applicationState=n,this._componentManager=t,this._options=r,this._logger=o,this._renderQueue=new vr(this._logger),this._dispatcher=e.attachDispatcher(this)}start(){if(this.isDisposedOrDisposing())throw new Error("Cannot start a disposed circuit.");return this._startPromise||(this._startPromise=this.startCore()),this._startPromise}updateRootComponents(e){var t,n;return this._firstUpdate?(this._firstUpdate=!1,null===(t=this._connection)||void 0===t?void 0:t.send("UpdateRootComponents",e,this._applicationState)):null===(n=this._connection)||void 0===n?void 0:n.send("UpdateRootComponents",e,"")}async startCore(){if(this._connection=await this.startConnection(),this._connection.state!==Jt.Connected)return!1;const e=JSON.stringify(this._componentManager.initialComponents.map((e=>{return t=e,{...t,start:void 0,end:void 0};var t})));if(this._circuitId=await this._connection.invoke("StartCircuit",Ue.getBaseURI(),Ue.getLocationHref(),e,this._applicationState||""),!this._circuitId)return!1;for(const e of this._options.circuitHandlers)e.onCircuitOpened&&e.onCircuitOpened();return!0}async startConnection(){var e,t;const n=new nr;n.name="blazorpack";const r=(new wn).withUrl("_blazor").withHubProtocol(n);this._options.configureSignalR(r);const o=r.build();o.on("JS.AttachComponent",((e,t)=>function(e,t,n,r){let o=ge[e];o||(o=new de(e),ge[e]=o),o.attachRootComponentToLogicalElement(n,t,!1)}(_n.Server,this.resolveElement(t),e))),o.on("JS.BeginInvokeJS",this._dispatcher.beginInvokeJSFromDotNet.bind(this._dispatcher)),o.on("JS.EndInvokeDotNet",this._dispatcher.endInvokeDotNetFromJS.bind(this._dispatcher)),o.on("JS.ReceiveByteArray",this._dispatcher.receiveByteArray.bind(this._dispatcher)),o.on("JS.BeginTransmitStream",(e=>{const t=new ReadableStream({start:t=>{o.stream("SendDotNetStreamToJS",e).subscribe({next:e=>t.enqueue(e),complete:()=>t.close(),error:e=>t.error(e)})}});this._dispatcher.supplyDotNetStream(e,t)})),o.on("JS.RenderBatch",(async(e,t)=>{var n,r;this._logger.log(bt.Debug,`Received render batch with id ${e} and ${t.byteLength} bytes.`),await this._renderQueue.processBatch(e,t,this._connection),null===(r=(n=this._componentManager).onAfterRenderBatch)||void 0===r||r.call(n,_n.Server)})),o.on("JS.EndUpdateRootComponents",(e=>{var t,n;null===(n=(t=this._componentManager).onAfterUpdateRootComponents)||void 0===n||n.call(t,e)})),o.on("JS.EndLocationChanging",ot._internal.navigationManager.endLocationChanging),o.onclose((e=>{this._interopMethodsForReconnection=function(e){const t=S.get(e);if(!t)throw new Error(`Interop methods are not registered for renderer ${e}`);return S.delete(e),t}(_n.Server),this._disposed||this._renderingFailed||this._options.reconnectionHandler.onConnectionDown(this._options.reconnectionOptions,e)})),o.on("JS.Error",(e=>{this._renderingFailed=!0,this.unhandledError(e),Ir()}));try{await o.start()}catch(e){if(this.unhandledError(e),"FailedToNegotiateWithServerError"===e.errorType)throw e;Ir(),e.innerErrors&&(e.innerErrors.some((e=>"UnsupportedTransportError"===e.errorType&&e.transport===cn.WebSockets))?this._logger.log(bt.Error,"Unable to connect, please ensure you are using an updated browser that supports WebSockets."):e.innerErrors.some((e=>"FailedToStartTransportError"===e.errorType&&e.transport===cn.WebSockets))?this._logger.log(bt.Error,"Unable to connect, please ensure WebSockets are available. A VPN or proxy may be blocking the connection."):e.innerErrors.some((e=>"DisabledTransportError"===e.errorType&&e.transport===cn.LongPolling))&&this._logger.log(bt.Error,"Unable to initiate a SignalR connection to the server. This might be because the server is not configured to support WebSockets. For additional details, visit https://aka.ms/blazor-server-websockets-error."))}return(null===(t=null===(e=o.connection)||void 0===e?void 0:e.features)||void 0===t?void 0:t.inherentKeepAlive)&&this._logger.log(bt.Warning,"Failed to connect via WebSockets, using the Long Polling fallback transport. This may be due to a VPN or proxy blocking the connection. To troubleshoot this, visit https://aka.ms/blazor-server-using-fallback-long-polling."),o}async disconnect(){var e;await(null===(e=this._connection)||void 0===e?void 0:e.stop())}async reconnect(){if(!this._circuitId)throw new Error("Circuit host not initialized.");return this._connection.state===Jt.Connected||(this._connection=await this.startConnection(),this._interopMethodsForReconnection&&(I(_n.Server,this._interopMethodsForReconnection),this._interopMethodsForReconnection=void 0),!!await this._connection.invoke("ConnectCircuit",this._circuitId)&&(this._options.reconnectionHandler.onConnectionUp(),!0))}beginInvokeDotNetFromJS(e,t,n,r,o){this.throwIfDispatchingWhenDisposed(),this._connection.send("BeginInvokeDotNetFromJS",e?e.toString():null,t,n,r||0,o)}endInvokeJSFromDotNet(e,t,n){this.throwIfDispatchingWhenDisposed(),this._connection.send("EndInvokeJSFromDotNet",e,t,n)}sendByteArray(e,t){this.throwIfDispatchingWhenDisposed(),this._connection.send("ReceiveByteArray",e,t)}throwIfDispatchingWhenDisposed(){if(this._disposed)throw new Error("The circuit associated with this dispatcher is no longer available.")}sendLocationChanged(e,t,n){return this._connection.send("OnLocationChanged",e,t,n)}sendLocationChanging(e,t,n,r){return this._connection.send("OnLocationChanging",e,t,n,r)}sendJsDataStream(e,t,n){return function(e,t,n,r){setTimeout((async()=>{let o=5,s=(new Date).valueOf();try{const i=t instanceof Blob?t.size:t.byteLength;let a=0,c=0;for(;a1)await e.send("ReceiveJSDataChunk",n,c,h,null);else{if(!await e.invoke("ReceiveJSDataChunk",n,c,h,null))break;const t=(new Date).valueOf(),r=t-s;s=t,o=Math.max(1,Math.round(500/Math.max(1,r)))}a+=l,c++}}catch(t){await e.send("ReceiveJSDataChunk",n,-1,null,t.toString())}}),0)}(this._connection,e,t,n)}resolveElement(e){const t=function(e){const t=f.get(e);if(t)return f.delete(e),t}(e);if(t)return O(t,!0);const n=Number.parseInt(e);if(!Number.isNaN(n))return function(e){const{start:t,end:n}=e,r=t[$];if(r){if(r!==e)throw new Error("The start component comment was already associated with another component descriptor.");return t}const o=t.parentNode;if(!o)throw new Error(`Comment not connected to the DOM ${t.textContent}`);const s=O(o,!0),i=K(s);t[L]=s,t[$]=e;const a=O(t);if(n){const e=K(a),r=Array.prototype.indexOf.call(i,a)+1;let o=null;for(;o!==n;){const n=i.splice(r,1)[0];if(!n)throw new Error("Could not find the end component comment in the parent logical node list");n[L]=t,e.push(n),o=n}}return a}(this._componentManager.resolveRootComponent(n));throw new Error(`Invalid sequence number or identifier '${e}'.`)}getRootComponentManager(){return this._componentManager}unhandledError(e){this._logger.log(bt.Error,e),this.disconnect()}getDisconnectFormData(){const e=new FormData,t=this._circuitId;return e.append("circuitId",t),e}didRenderingFail(){return this._renderingFailed}isDisposedOrDisposing(){return void 0!==this._disposePromise}sendDisconnectBeacon(){if(this._disposed)return;const e=this.getDisconnectFormData();this._disposed=navigator.sendBeacon("_blazor/disconnect",e)}dispose(){return this._disposePromise||(this._disposePromise=this.disposeCore()),this._disposePromise}async disposeCore(){var e;if(!this._startPromise)return void(this._disposed=!0);await this._startPromise,this._disposed=!0,null===(e=this._connection)||void 0===e||e.stop();const t=this.getDisconnectFormData();fetch("http://github.com/_blazor/disconnect",{method:"POST",body:t});for(const e of this._options.circuitHandlers)e.onCircuitClosed&&e.onCircuitClosed()}}class Tr{constructor(e,t,n,r){this.maxRetries=t,this.document=n,this.logger=r,this.modal=this.document.createElement("div"),this.modal.id=e,this.maxRetries=t,this.modal.style.cssText=["position: fixed","top: 0","right: 0","bottom: 0","left: 0","z-index: 1050","display: none","overflow: hidden","background-color: #fff","opacity: 0.8","text-align: center","font-weight: bold","transition: visibility 0s linear 500ms"].join(";"),this.message=this.document.createElement("h5"),this.message.style.cssText="margin-top: 20px",this.button=this.document.createElement("button"),this.button.style.cssText="margin:5px auto 5px",this.button.textContent="Retry";const o=this.document.createElement("a");o.addEventListener("click",(()=>location.reload())),o.textContent="reload",this.reloadParagraph=this.document.createElement("p"),this.reloadParagraph.textContent="Alternatively, ",this.reloadParagraph.appendChild(o),this.modal.appendChild(this.message),this.modal.appendChild(this.button),this.modal.appendChild(this.reloadParagraph),this.loader=this.getLoader(),this.message.after(this.loader),this.button.addEventListener("click",(async()=>{this.show();try{await ot.reconnect()||this.rejected()}catch(e){this.logger.log(st.Error,e),this.failed()}}))}show(){this.document.contains(this.modal)||this.document.body.appendChild(this.modal),this.modal.style.display="block",this.loader.style.display="inline-block",this.button.style.display="none",this.reloadParagraph.style.display="none",this.message.textContent="Attempting to reconnect to the server...",this.modal.style.visibility="hidden",setTimeout((()=>{this.modal.style.visibility="visible"}),0)}update(e){this.message.textContent=`Attempting to reconnect to the server: ${e} of ${this.maxRetries}`}hide(){this.modal.style.display="none"}failed(){this.button.style.display="block",this.reloadParagraph.style.display="none",this.loader.style.display="none";const e=this.document.createTextNode("Reconnection failed. Try "),t=this.document.createElement("a");t.textContent="reloading",t.setAttribute("href",""),t.addEventListener("click",(()=>location.reload()));const n=this.document.createTextNode(" the page if you're unable to reconnect.");this.message.replaceChildren(e,t,n)}rejected(){this.button.style.display="none",this.reloadParagraph.style.display="none",this.loader.style.display="none";const e=this.document.createTextNode("Could not reconnect to the server. "),t=this.document.createElement("a");t.textContent="Reload",t.setAttribute("href",""),t.addEventListener("click",(()=>location.reload()));const n=this.document.createTextNode(" the page to restore functionality.");this.message.replaceChildren(e,t,n)}getLoader(){const e=this.document.createElement("div");return e.style.cssText=["border: 0.3em solid #f3f3f3","border-top: 0.3em solid #3498db","border-radius: 50%","width: 2em","height: 2em","display: inline-block"].join(";"),e.animate([{transform:"rotate(0deg)"},{transform:"rotate(360deg)"}],{duration:2e3,iterations:1/0}),e}}class Dr{constructor(e,t,n){this.dialog=e,this.maxRetries=t,this.document=n,this.document=n;const r=this.document.getElementById(Dr.MaxRetriesId);r&&(r.innerText=this.maxRetries.toString())}show(){this.removeClasses(),this.dialog.classList.add(Dr.ShowClassName)}update(e){const t=this.document.getElementById(Dr.CurrentAttemptId);t&&(t.innerText=e.toString())}hide(){this.removeClasses(),this.dialog.classList.add(Dr.HideClassName)}failed(){this.removeClasses(),this.dialog.classList.add(Dr.FailedClassName)}rejected(){this.removeClasses(),this.dialog.classList.add(Dr.RejectedClassName)}removeClasses(){this.dialog.classList.remove(Dr.ShowClassName,Dr.HideClassName,Dr.FailedClassName,Dr.RejectedClassName)}}Dr.ShowClassName="components-reconnect-show",Dr.HideClassName="components-reconnect-hide",Dr.FailedClassName="components-reconnect-failed",Dr.RejectedClassName="components-reconnect-rejected",Dr.MaxRetriesId="components-reconnect-max-retries",Dr.CurrentAttemptId="components-reconnect-current-attempt";class Rr{constructor(e,t,n){this._currentReconnectionProcess=null,this._logger=e,this._reconnectionDisplay=t,this._reconnectCallback=n||ot.reconnect}onConnectionDown(e,t){if(!this._reconnectionDisplay){const t=document.getElementById(e.dialogId);this._reconnectionDisplay=t?new Dr(t,e.maxRetries,document):new Tr(e.dialogId,e.maxRetries,document,this._logger)}this._currentReconnectionProcess||(this._currentReconnectionProcess=new xr(e,this._logger,this._reconnectCallback,this._reconnectionDisplay))}onConnectionUp(){this._currentReconnectionProcess&&(this._currentReconnectionProcess.dispose(),this._currentReconnectionProcess=null)}}class xr{constructor(e,t,n,r){this.logger=t,this.reconnectCallback=n,this.isDisposed=!1,this.reconnectDisplay=r,this.reconnectDisplay.show(),this.attemptPeriodicReconnection(e)}dispose(){this.isDisposed=!0,this.reconnectDisplay.hide()}async attemptPeriodicReconnection(e){for(let t=0;txr.MaximumFirstRetryInterval?xr.MaximumFirstRetryInterval:e.retryIntervalMilliseconds;if(await this.delay(n),this.isDisposed)break;try{return await this.reconnectCallback()?void 0:void this.reconnectDisplay.rejected()}catch(e){this.logger.log(st.Error,e)}}this.reconnectDisplay.failed()}delay(e){return new Promise((t=>setTimeout(t,e)))}}xr.MaximumFirstRetryInterval=3e3;class Ar{constructor(e=!0,t,n,r=0){this.singleRuntime=e,this.logger=t,this.webRendererId=r,this.afterStartedCallbacks=[],n&&this.afterStartedCallbacks.push(...n)}async importInitializersAsync(e,t){await Promise.all(e.map((e=>async function(e,n){const r=function(e){const t=document.baseURI;return t.endsWith("/")?`${t}${e}`:`${t}/${e}`}(n),o=await import(r);if(void 0!==o){if(e.singleRuntime){const{beforeStart:n,afterStarted:r,beforeWebAssemblyStart:i,afterWebAssemblyStarted:a,beforeServerStart:c,afterServerStarted:l}=o;let h=n;e.webRendererId===_n.Server&&c&&(h=c),e.webRendererId===_n.WebAssembly&&i&&(h=i);let d=r;return e.webRendererId===_n.Server&&l&&(d=l),e.webRendererId===_n.WebAssembly&&a&&(d=a),s(e,h,d,t)}return function(e,t,n){var o;const i=n[0],{beforeStart:a,afterStarted:c,beforeWebStart:l,afterWebStarted:h,beforeWebAssemblyStart:d,afterWebAssemblyStarted:u,beforeServerStart:p,afterServerStarted:f}=t,g=!(l||h||d||u||p||f||!a&&!c),m=g&&i.enableClassicInitializers;if(g&&!i.enableClassicInitializers)null===(o=e.logger)||void 0===o||o.log(st.Warning,`Initializer '${r}' will be ignored because multiple runtimes are available. use 'before(web|webAssembly|server)Start' and 'after(web|webAssembly|server)Started?' instead.)`);else if(m)return s(e,a,c,n);if(function(e){e.webAssembly?e.webAssembly.initializers||(e.webAssembly.initializers={beforeStart:[],afterStarted:[]}):e.webAssembly={initializers:{beforeStart:[],afterStarted:[]}},e.circuit?e.circuit.initializers||(e.circuit.initializers={beforeStart:[],afterStarted:[]}):e.circuit={initializers:{beforeStart:[],afterStarted:[]}}}(i),d&&i.webAssembly.initializers.beforeStart.push(d),u&&i.webAssembly.initializers.afterStarted.push(u),p&&i.circuit.initializers.beforeStart.push(p),f&&i.circuit.initializers.afterStarted.push(f),h&&e.afterStartedCallbacks.push(h),l)return l(i)}(e,o,t)}function s(e,t,n,r){if(n&&e.afterStartedCallbacks.push(n),t)return t(...r)}}(this,e))))}async invokeAfterStartedCallbacks(e){const t=function(e){var t;return null===(t=C.get(e))||void 0===t?void 0:t[1]}(this.webRendererId);t&&await t,await Promise.all(this.afterStartedCallbacks.map((t=>t(e))))}}function Pr(e){if(void 0!==Er)throw new Error("Blazor Server has already started.");return Er=new Promise(Nr.bind(null,e)),Er}async function Nr(e,t,n){await yr;const r=await async function(e){if(e.initializers)return await Promise.all(e.initializers.beforeStart.map((t=>t(e)))),new Ar(!1,void 0,e.initializers.afterStarted,_n.Server);const t=await fetch("http://github.com/_blazor/initializers",{method:"GET",credentials:"include",cache:"no-cache"}),n=await t.json(),r=new Ar(!0,void 0,void 0,_n.Server);return await r.importInitializersAsync(n,[e]),r}(br);var o;if(o=document,wr=dt(o,ht)||"",Sr=new lt(br.logLevel),_r=new kr(e,wr,br,Sr),Sr.log(st.Information,"Starting up Blazor server-side application."),ot.reconnect=async()=>!(_r.didRenderingFail()||!await _r.reconnect()&&(Sr.log(st.Information,"Reconnection attempt to the circuit was rejected by the server. This may indicate that the associated state is no longer available on the server."),1)),ot.defaultReconnectionHandler=new Rr(Sr),br.reconnectionHandler=br.reconnectionHandler||ot.defaultReconnectionHandler,ot._internal.navigationManager.listenForNavigationEvents(_n.Server,((e,t,n)=>_r.sendLocationChanged(e,t,n)),((e,t,n,r)=>_r.sendLocationChanging(e,t,n,r))),ot._internal.forceCloseConnection=()=>_r.disconnect(),ot._internal.sendJSDataStream=(e,t,n)=>_r.sendJsDataStream(e,t,n),!await _r.start())return Sr.log(st.Error,"Failed to start the circuit."),void t();const s=()=>{_r.sendDisconnectBeacon()};ot.disconnect=s,window.addEventListener("unload",s,{capture:!1,once:!0}),Sr.log(st.Information,"Blazor server-side application started."),r.invokeAfterStartedCallbacks(ot),t()}class Ur{constructor(e){this.initialComponents=e}resolveRootComponent(e){return this.initialComponents[e]}}class Mr{constructor(){this._eventListeners=new Map}static create(e){const t=new Mr;return e.addEventListener=t.addEventListener.bind(t),e.removeEventListener=t.removeEventListener.bind(t),t}addEventListener(e,t){let n=this._eventListeners.get(e);n||(n=new Set,this._eventListeners.set(e,n)),n.add(t)}removeEventListener(e,t){var n;null===(n=this._eventListeners.get(e))||void 0===n||n.delete(t)}dispatchEvent(e,t){const n=this._eventListeners.get(e);if(!n)return;const r={...t,type:e};for(const e of n)e(r)}}let Br=!1;function Lr(e){if(Br)throw new Error("Blazor has already started.");Br=!0;const t=it(e);!function(e){if(br)throw new Error("Circuit options have already been configured.");if(br)throw new Error("WebAssembly options have already been configured.");yr=async function(e){const t=await e;br=it(t)}(e)}(Promise.resolve(t||{})),Mr.create(ot);const n=function(e){return ut(e,"server").sort(((e,t)=>e.sequence-t.sequence))}(document);return Pr(new Ur(n))}ot.start=Lr,window.DotNet=e,document&&document.currentScript&&"false"!==document.currentScript.getAttribute("autostart")&&Lr()})()})(); \ No newline at end of file +(()=>{var e={778:()=>{},77:()=>{},203:()=>{},200:()=>{},628:()=>{},321:()=>{}},t={};function n(r){var o=t[r];if(void 0!==o)return o.exports;var s=t[r]={exports:{}};return e[r](s,s.exports,n),s.exports}n.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),(()=>{"use strict";var e,t,r;!function(e){const t=[],n="__jsObjectId",r="__dotNetObject",o="__byte[]",s="__dotNetStream",i="__jsStreamReferenceLength";let a,c;class l{constructor(e){this._jsObject=e,this._cachedFunctions=new Map}findFunction(e){const t=this._cachedFunctions.get(e);if(t)return t;let n,r=this._jsObject;if(e.split(".").forEach((t=>{if(!(t in r))throw new Error(`Could not find '${e}' ('${t}' was undefined).`);n=r,r=r[t]})),r instanceof Function)return r=r.bind(n),this._cachedFunctions.set(e,r),r;throw new Error(`The value '${e}' is not a function.`)}getWrappedObject(){return this._jsObject}}const h={0:new l(window)};h[0]._cachedFunctions.set("import",(e=>("string"==typeof e&&e.startsWith("./")&&(e=new URL(e.substr(2),document.baseURI).toString()),import(e))));let d,u=1;function p(e){t.push(e)}function f(e){if(e&&"object"==typeof e){h[u]=new l(e);const t={[n]:u};return u++,t}throw new Error(`Cannot create a JSObjectReference from the value '${e}'.`)}function g(e){let t=-1;if(e instanceof ArrayBuffer&&(e=new Uint8Array(e)),e instanceof Blob)t=e.size;else{if(!(e.buffer instanceof ArrayBuffer))throw new Error("Supplied value is not a typed array or blob.");if(void 0===e.byteLength)throw new Error(`Cannot create a JSStreamReference from the value '${e}' as it doesn't have a byteLength.`);t=e.byteLength}const r={[i]:t};try{const t=f(e);r[n]=t[n]}catch(t){throw new Error(`Cannot create a JSStreamReference from the value '${e}'.`)}return r}function m(e,n){c=e;const r=n?JSON.parse(n,((e,n)=>t.reduce(((t,n)=>n(e,t)),n))):null;return c=void 0,r}function v(){if(void 0===a)throw new Error("No call dispatcher has been set.");if(null===a)throw new Error("There are multiple .NET runtimes present, so a default dispatcher could not be resolved. Use DotNetObject to invoke .NET instance methods.");return a}e.attachDispatcher=function(e){const t=new y(e);return void 0===a?a=t:a&&(a=null),t},e.attachReviver=p,e.invokeMethod=function(e,t,...n){return v().invokeDotNetStaticMethod(e,t,...n)},e.invokeMethodAsync=function(e,t,...n){return v().invokeDotNetStaticMethodAsync(e,t,...n)},e.createJSObjectReference=f,e.createJSStreamReference=g,e.disposeJSObjectReference=function(e){const t=e&&e[n];"number"==typeof t&&b(t)},function(e){e[e.Default=0]="Default",e[e.JSObjectReference=1]="JSObjectReference",e[e.JSStreamReference=2]="JSStreamReference",e[e.JSVoidResult=3]="JSVoidResult"}(d=e.JSCallResultType||(e.JSCallResultType={}));class y{constructor(e){this._dotNetCallDispatcher=e,this._byteArraysToBeRevived=new Map,this._pendingDotNetToJSStreams=new Map,this._pendingAsyncCalls={},this._nextAsyncCallId=1}getDotNetCallDispatcher(){return this._dotNetCallDispatcher}invokeJSFromDotNet(e,t,n,r){const o=m(this,t),s=I(_(e,r)(...o||[]),n);return null==s?null:T(this,s)}beginInvokeJSFromDotNet(e,t,n,r,o){const s=new Promise((e=>{const r=m(this,n);e(_(t,o)(...r||[]))}));e&&s.then((t=>T(this,[e,!0,I(t,r)]))).then((t=>this._dotNetCallDispatcher.endInvokeJSFromDotNet(e,!0,t)),(t=>this._dotNetCallDispatcher.endInvokeJSFromDotNet(e,!1,JSON.stringify([e,!1,w(t)]))))}endInvokeDotNetFromJS(e,t,n){const r=t?m(this,n):new Error(n);this.completePendingCall(parseInt(e,10),t,r)}invokeDotNetStaticMethod(e,t,...n){return this.invokeDotNetMethod(e,t,null,n)}invokeDotNetStaticMethodAsync(e,t,...n){return this.invokeDotNetMethodAsync(e,t,null,n)}invokeDotNetMethod(e,t,n,r){if(this._dotNetCallDispatcher.invokeDotNetFromJS){const o=T(this,r),s=this._dotNetCallDispatcher.invokeDotNetFromJS(e,t,n,o);return s?m(this,s):null}throw new Error("The current dispatcher does not support synchronous calls from JS to .NET. Use invokeDotNetMethodAsync instead.")}invokeDotNetMethodAsync(e,t,n,r){if(e&&n)throw new Error(`For instance method calls, assemblyName should be null. Received '${e}'.`);const o=this._nextAsyncCallId++,s=new Promise(((e,t)=>{this._pendingAsyncCalls[o]={resolve:e,reject:t}}));try{const s=T(this,r);this._dotNetCallDispatcher.beginInvokeDotNetFromJS(o,e,t,n,s)}catch(e){this.completePendingCall(o,!1,e)}return s}receiveByteArray(e,t){this._byteArraysToBeRevived.set(e,t)}processByteArray(e){const t=this._byteArraysToBeRevived.get(e);return t?(this._byteArraysToBeRevived.delete(e),t):null}supplyDotNetStream(e,t){if(this._pendingDotNetToJSStreams.has(e)){const n=this._pendingDotNetToJSStreams.get(e);this._pendingDotNetToJSStreams.delete(e),n.resolve(t)}else{const n=new C;n.resolve(t),this._pendingDotNetToJSStreams.set(e,n)}}getDotNetStreamPromise(e){let t;if(this._pendingDotNetToJSStreams.has(e))t=this._pendingDotNetToJSStreams.get(e).streamPromise,this._pendingDotNetToJSStreams.delete(e);else{const n=new C;this._pendingDotNetToJSStreams.set(e,n),t=n.streamPromise}return t}completePendingCall(e,t,n){if(!this._pendingAsyncCalls.hasOwnProperty(e))throw new Error(`There is no pending async call with ID ${e}.`);const r=this._pendingAsyncCalls[e];delete this._pendingAsyncCalls[e],t?r.resolve(n):r.reject(n)}}function w(e){return e instanceof Error?`${e.message}\n${e.stack}`:e?e.toString():"null"}function _(e,t){const n=h[t];if(n)return n.findFunction(e);throw new Error(`JS object instance with ID ${t} does not exist (has it been disposed?).`)}function b(e){delete h[e]}e.findJSFunction=_,e.disposeJSObjectReferenceById=b;class S{constructor(e,t){this._id=e,this._callDispatcher=t}invokeMethod(e,...t){return this._callDispatcher.invokeDotNetMethod(null,e,this._id,t)}invokeMethodAsync(e,...t){return this._callDispatcher.invokeDotNetMethodAsync(null,e,this._id,t)}dispose(){this._callDispatcher.invokeDotNetMethodAsync(null,"__Dispose",this._id,null).catch((e=>console.error(e)))}serializeAsArg(){return{[r]:this._id}}}e.DotNetObject=S,p((function(e,t){if(t&&"object"==typeof t){if(t.hasOwnProperty(r))return new S(t[r],c);if(t.hasOwnProperty(n)){const e=t[n],r=h[e];if(r)return r.getWrappedObject();throw new Error(`JS object instance with Id '${e}' does not exist. It may have been disposed.`)}if(t.hasOwnProperty(o)){const e=t[o],n=c.processByteArray(e);if(void 0===n)throw new Error(`Byte array index '${e}' does not exist.`);return n}if(t.hasOwnProperty(s)){const e=t[s],n=c.getDotNetStreamPromise(e);return new E(n)}}return t}));class E{constructor(e){this._streamPromise=e}stream(){return this._streamPromise}async arrayBuffer(){return new Response(await this.stream()).arrayBuffer()}}class C{constructor(){this.streamPromise=new Promise(((e,t)=>{this.resolve=e,this.reject=t}))}}function I(e,t){switch(t){case d.Default:return e;case d.JSObjectReference:return f(e);case d.JSStreamReference:return g(e);case d.JSVoidResult:return null;default:throw new Error(`Invalid JS call result type '${t}'.`)}}let k=0;function T(e,t){k=0,c=e;const n=JSON.stringify(t,D);return c=void 0,n}function D(e,t){if(t instanceof S)return t.serializeAsArg();if(t instanceof Uint8Array){c.getDotNetCallDispatcher().sendByteArray(k,t);const e={[o]:k};return k++,e}return t}}(e||(e={})),function(e){e[e.prependFrame=1]="prependFrame",e[e.removeFrame=2]="removeFrame",e[e.setAttribute=3]="setAttribute",e[e.removeAttribute=4]="removeAttribute",e[e.updateText=5]="updateText",e[e.stepIn=6]="stepIn",e[e.stepOut=7]="stepOut",e[e.updateMarkup=8]="updateMarkup",e[e.permutationListEntry=9]="permutationListEntry",e[e.permutationListEnd=10]="permutationListEnd"}(t||(t={})),function(e){e[e.element=1]="element",e[e.text=2]="text",e[e.attribute=3]="attribute",e[e.component=4]="component",e[e.region=5]="region",e[e.elementReferenceCapture=6]="elementReferenceCapture",e[e.markup=8]="markup",e[e.namedEvent=10]="namedEvent"}(r||(r={}));class o{constructor(e,t){this.componentId=e,this.fieldValue=t}static fromEvent(e,t){const n=t.target;if(n instanceof Element){const t=function(e){return e instanceof HTMLInputElement?e.type&&"checkbox"===e.type.toLowerCase()?{value:e.checked}:{value:e.value}:e instanceof HTMLSelectElement||e instanceof HTMLTextAreaElement?{value:e.value}:null}(n);if(t)return new o(e,t.value)}return null}}const s=new Map,i=new Map,a=[];function c(e){return s.get(e)}function l(e){const t=s.get(e);return(null==t?void 0:t.browserEventName)||e}function h(e,t){e.forEach((e=>s.set(e,t)))}function d(e){const t=[];for(let n=0;ne.selected)).map((e=>e.value))}}{const e=function(e){return!!e&&"INPUT"===e.tagName&&"checkbox"===e.getAttribute("type")}(t);return{value:e?!!t.checked:t.value}}}}),h(["copy","cut","paste"],{createEventArgs:e=>({type:e.type})}),h(["drag","dragend","dragenter","dragleave","dragover","dragstart","drop"],{createEventArgs:e=>{return{...u(t=e),dataTransfer:t.dataTransfer?{dropEffect:t.dataTransfer.dropEffect,effectAllowed:t.dataTransfer.effectAllowed,files:Array.from(t.dataTransfer.files).map((e=>e.name)),items:Array.from(t.dataTransfer.items).map((e=>({kind:e.kind,type:e.type}))),types:t.dataTransfer.types}:null};var t}}),h(["focus","blur","focusin","focusout"],{createEventArgs:e=>({type:e.type})}),h(["keydown","keyup","keypress"],{createEventArgs:e=>{return{key:(t=e).key,code:t.code,location:t.location,repeat:t.repeat,ctrlKey:t.ctrlKey,shiftKey:t.shiftKey,altKey:t.altKey,metaKey:t.metaKey,type:t.type};var t}}),h(["contextmenu","click","mouseover","mouseout","mousemove","mousedown","mouseup","mouseleave","mouseenter","dblclick"],{createEventArgs:e=>u(e)}),h(["error"],{createEventArgs:e=>{return{message:(t=e).message,filename:t.filename,lineno:t.lineno,colno:t.colno,type:t.type};var t}}),h(["loadstart","timeout","abort","load","loadend","progress"],{createEventArgs:e=>{return{lengthComputable:(t=e).lengthComputable,loaded:t.loaded,total:t.total,type:t.type};var t}}),h(["touchcancel","touchend","touchmove","touchenter","touchleave","touchstart"],{createEventArgs:e=>{return{detail:(t=e).detail,touches:d(t.touches),targetTouches:d(t.targetTouches),changedTouches:d(t.changedTouches),ctrlKey:t.ctrlKey,shiftKey:t.shiftKey,altKey:t.altKey,metaKey:t.metaKey,type:t.type};var t}}),h(["gotpointercapture","lostpointercapture","pointercancel","pointerdown","pointerenter","pointerleave","pointermove","pointerout","pointerover","pointerup"],{createEventArgs:e=>{return{...u(t=e),pointerId:t.pointerId,width:t.width,height:t.height,pressure:t.pressure,tiltX:t.tiltX,tiltY:t.tiltY,pointerType:t.pointerType,isPrimary:t.isPrimary};var t}}),h(["wheel","mousewheel"],{createEventArgs:e=>{return{...u(t=e),deltaX:t.deltaX,deltaY:t.deltaY,deltaZ:t.deltaZ,deltaMode:t.deltaMode};var t}}),h(["cancel","close","toggle"],{createEventArgs:()=>({})});const p=["date","datetime-local","month","time","week"],f=new Map;let g,m,v=0;const y={async add(e,t,n){if(!n)throw new Error("initialParameters must be an object, even if empty.");const r="__bl-dynamic-root:"+(++v).toString();f.set(r,e);const o=await b().invokeMethodAsync("AddRootComponent",t,r),s=new _(o,m[t]);return await s.setParameters(n),s}};class w{invoke(e){return this._callback(e)}setCallback(t){this._selfJSObjectReference||(this._selfJSObjectReference=e.createJSObjectReference(this)),this._callback=t}getJSObjectReference(){return this._selfJSObjectReference}dispose(){this._selfJSObjectReference&&e.disposeJSObjectReference(this._selfJSObjectReference)}}class _{constructor(e,t){this._jsEventCallbackWrappers=new Map,this._componentId=e;for(const e of t)"eventcallback"===e.type&&this._jsEventCallbackWrappers.set(e.name.toLowerCase(),new w)}setParameters(e){const t={},n=Object.entries(e||{}),r=n.length;for(const[e,r]of n){const n=this._jsEventCallbackWrappers.get(e.toLowerCase());n&&r?(n.setCallback(r),t[e]=n.getJSObjectReference()):t[e]=r}return b().invokeMethodAsync("SetRootComponentParameters",this._componentId,r,t)}async dispose(){if(null!==this._componentId){await b().invokeMethodAsync("RemoveRootComponent",this._componentId),this._componentId=null;for(const e of this._jsEventCallbackWrappers.values())e.dispose()}}}function b(){if(!g)throw new Error("Dynamic root components have not been enabled in this application.");return g}const S=new Map,E=[],C=new Map;function I(t,n,r,o){var s,i;if(S.has(t))throw new Error(`Interop methods are already registered for renderer ${t}`);S.set(t,n),r&&o&&Object.keys(r).length>0&&function(t,n,r){if(g)throw new Error("Dynamic root components have already been enabled.");g=t,m=n;for(const[t,o]of Object.entries(r)){const r=e.findJSFunction(t,0);for(const e of o)r(e,n[e])}}(T(t),r,o),null===(i=null===(s=C.get(t))||void 0===s?void 0:s[0])||void 0===i||i.call(s),function(e){for(const t of E)t(e)}(t)}function k(e,t,n){return D(e,t.eventHandlerId,(()=>T(e).invokeMethodAsync("DispatchEventAsync",t,n)))}function T(e){const t=S.get(e);if(!t)throw new Error(`No interop methods are registered for renderer ${e}`);return t}let D=(e,t,n)=>n();const R=M(["abort","blur","cancel","canplay","canplaythrough","change","close","cuechange","durationchange","emptied","ended","error","focus","load","loadeddata","loadedmetadata","loadend","loadstart","mouseenter","mouseleave","pointerenter","pointerleave","pause","play","playing","progress","ratechange","reset","scroll","seeked","seeking","stalled","submit","suspend","timeupdate","toggle","unload","volumechange","waiting","DOMNodeInsertedIntoDocument","DOMNodeRemovedFromDocument"]),x={submit:!0},A=M(["click","dblclick","mousedown","mousemove","mouseup"]);class P{constructor(e){this.browserRendererId=e,this.afterClickCallbacks=[];const t=++P.nextEventDelegatorId;this.eventsCollectionKey=`_blazorEvents_${t}`,this.eventInfoStore=new U(this.onGlobalEvent.bind(this))}setListener(e,t,n,r){const o=this.getEventHandlerInfosForElement(e,!0),s=o.getHandler(t);if(s)this.eventInfoStore.update(s.eventHandlerId,n);else{const s={element:e,eventName:t,eventHandlerId:n,renderingComponentId:r};this.eventInfoStore.add(s),o.setHandler(t,s)}}getHandler(e){return this.eventInfoStore.get(e)}removeListener(e){const t=this.eventInfoStore.remove(e);if(t){const e=t.element,n=this.getEventHandlerInfosForElement(e,!1);n&&n.removeHandler(t.eventName)}}notifyAfterClick(e){this.afterClickCallbacks.push(e),this.eventInfoStore.addGlobalListener("click")}setStopPropagation(e,t,n){this.getEventHandlerInfosForElement(e,!0).stopPropagation(t,n)}setPreventDefault(e,t,n){this.getEventHandlerInfosForElement(e,!0).preventDefault(t,n)}onGlobalEvent(e){if(!(e.target instanceof Element))return;this.dispatchGlobalEventToAllElements(e.type,e);const t=(n=e.type,i.get(n));var n;t&&t.forEach((t=>this.dispatchGlobalEventToAllElements(t,e))),"click"===e.type&&this.afterClickCallbacks.forEach((t=>t(e)))}dispatchGlobalEventToAllElements(e,t){const n=t.composedPath();let r=n.shift(),s=null,i=!1;const a=Object.prototype.hasOwnProperty.call(R,e);let l=!1;for(;r;){const u=r,p=this.getEventHandlerInfosForElement(u,!1);if(p){const n=p.getHandler(e);if(n&&(h=u,d=t.type,!((h instanceof HTMLButtonElement||h instanceof HTMLInputElement||h instanceof HTMLTextAreaElement||h instanceof HTMLSelectElement)&&Object.prototype.hasOwnProperty.call(A,d)&&h.disabled))){if(!i){const n=c(e);s=(null==n?void 0:n.createEventArgs)?n.createEventArgs(t):{},i=!0}Object.prototype.hasOwnProperty.call(x,t.type)&&t.preventDefault(),k(this.browserRendererId,{eventHandlerId:n.eventHandlerId,eventName:e,eventFieldInfo:o.fromEvent(n.renderingComponentId,t)},s)}p.stopPropagation(e)&&(l=!0),p.preventDefault(e)&&t.preventDefault()}r=a||l?void 0:n.shift()}var h,d}getEventHandlerInfosForElement(e,t){return Object.prototype.hasOwnProperty.call(e,this.eventsCollectionKey)?e[this.eventsCollectionKey]:t?e[this.eventsCollectionKey]=new N:null}}P.nextEventDelegatorId=0;class U{constructor(e){this.globalListener=e,this.infosByEventHandlerId={},this.countByEventName={},a.push(this.handleEventNameAliasAdded.bind(this))}add(e){if(this.infosByEventHandlerId[e.eventHandlerId])throw new Error(`Event ${e.eventHandlerId} is already tracked`);this.infosByEventHandlerId[e.eventHandlerId]=e,this.addGlobalListener(e.eventName)}get(e){return this.infosByEventHandlerId[e]}addGlobalListener(e){if(e=l(e),Object.prototype.hasOwnProperty.call(this.countByEventName,e))this.countByEventName[e]++;else{this.countByEventName[e]=1;const t=Object.prototype.hasOwnProperty.call(R,e);document.addEventListener(e,this.globalListener,t)}}update(e,t){if(Object.prototype.hasOwnProperty.call(this.infosByEventHandlerId,t))throw new Error(`Event ${t} is already tracked`);const n=this.infosByEventHandlerId[e];delete this.infosByEventHandlerId[e],n.eventHandlerId=t,this.infosByEventHandlerId[t]=n}remove(e){const t=this.infosByEventHandlerId[e];if(t){delete this.infosByEventHandlerId[e];const n=l(t.eventName);0==--this.countByEventName[n]&&(delete this.countByEventName[n],document.removeEventListener(n,this.globalListener))}return t}handleEventNameAliasAdded(e,t){if(Object.prototype.hasOwnProperty.call(this.countByEventName,e)){const n=this.countByEventName[e];delete this.countByEventName[e],document.removeEventListener(e,this.globalListener),this.addGlobalListener(t),this.countByEventName[t]+=n-1}}}class N{constructor(){this.handlers={},this.preventDefaultFlags=null,this.stopPropagationFlags=null}getHandler(e){return Object.prototype.hasOwnProperty.call(this.handlers,e)?this.handlers[e]:null}setHandler(e,t){this.handlers[e]=t}removeHandler(e){delete this.handlers[e]}preventDefault(e,t){return void 0!==t&&(this.preventDefaultFlags=this.preventDefaultFlags||{},this.preventDefaultFlags[e]=t),!!this.preventDefaultFlags&&this.preventDefaultFlags[e]}stopPropagation(e,t){return void 0!==t&&(this.stopPropagationFlags=this.stopPropagationFlags||{},this.stopPropagationFlags[e]=t),!!this.stopPropagationFlags&&this.stopPropagationFlags[e]}}function M(e){const t={};return e.forEach((e=>{t[e]=!0})),t}const B=Symbol(),L=Symbol(),$=Symbol();function O(e,t){if(B in e)return e;const n=[];if(e.childNodes.length>0){if(!t)throw new Error("New logical elements must start empty, or allowExistingContents must be true");e.childNodes.forEach((t=>{const r=O(t,!0);r[L]=e,n.push(r)}))}return e[B]=n,e}function F(e){const t=K(e);for(;t.length;)W(e,0)}function H(e,t){const n=document.createComment("!");return j(n,e,t),n}function j(e,t,n){const r=e;let o=e;if(e instanceof Comment){const t=K(r);if((null==t?void 0:t.length)>0){const t=Q(r),n=new Range;n.setStartBefore(e),n.setEndAfter(t),o=n.extractContents()}}const s=z(r);if(s){const e=K(s),t=Array.prototype.indexOf.call(e,r);e.splice(t,1),delete r[L]}const i=K(t);if(n0;)W(n,0)}const r=n;r.parentNode.removeChild(r)}function z(e){return e[L]||null}function q(e,t){return K(e)[t]}function J(e){const t=Y(e);return"http://www.w3.org/2000/svg"===t.namespaceURI&&"foreignObject"!==t.tagName}function K(e){return e[B]}function V(e){const t=K(z(e));return t[Array.prototype.indexOf.call(t,e)+1]||null}function X(e,t){const n=K(e);t.forEach((e=>{e.moveRangeStart=n[e.fromSiblingIndex],e.moveRangeEnd=Q(e.moveRangeStart)})),t.forEach((t=>{const r=document.createComment("marker");t.moveToBeforeMarker=r;const o=n[t.toSiblingIndex+1];o?o.parentNode.insertBefore(r,o):G(r,e)})),t.forEach((e=>{const t=e.moveToBeforeMarker,n=t.parentNode,r=e.moveRangeStart,o=e.moveRangeEnd;let s=r;for(;s;){const e=s.nextSibling;if(n.insertBefore(s,t),s===o)break;s=e}n.removeChild(t)})),t.forEach((e=>{n[e.toSiblingIndex]=e.moveRangeStart}))}function Y(e){if(e instanceof Element||e instanceof DocumentFragment)return e;if(e instanceof Comment)return e.parentNode;throw new Error("Not a valid logical element")}function G(e,t){if(t instanceof Element||t instanceof DocumentFragment)t.appendChild(e);else{if(!(t instanceof Comment))throw new Error(`Cannot append node because the parent is not a valid logical element. Parent: ${t}`);{const n=V(t);n?n.parentNode.insertBefore(e,n):G(e,z(t))}}}function Q(e){if(e instanceof Element||e instanceof DocumentFragment)return e;const t=V(e);if(t)return t.previousSibling;{const t=z(e);return t instanceof Element||t instanceof DocumentFragment?t.lastChild:Q(t)}}function Z(e){return`_bl_${e}`}const ee="__internalId";e.attachReviver(((e,t)=>t&&"object"==typeof t&&Object.prototype.hasOwnProperty.call(t,ee)&&"string"==typeof t[ee]?function(e){const t=`[${Z(e)}]`;return document.querySelector(t)}(t[ee]):t));const te="_blazorDeferredValue";function ne(e){return"select-multiple"===e.type}function re(e,t){e.value=t||""}function oe(e,t){e instanceof HTMLSelectElement?ne(e)?function(e,t){t||(t=[]);for(let n=0;n{Ie()&&function(e,t){if(0!==e.button||function(e){return e.ctrlKey||e.shiftKey||e.altKey||e.metaKey}(e))return;if(e.defaultPrevented)return;const n=function(e){const t=e.composedPath&&e.composedPath();if(t)for(let e=0;e{const t=document.createElement("script");t.textContent=e.textContent,e.getAttributeNames().forEach((n=>{t.setAttribute(n,e.getAttribute(n))})),e.parentNode.replaceChild(t,e)})),ie.content));var i;let a=0;for(;s.firstChild;)j(s.firstChild,o,a++)}applyAttribute(e,t,n,r){const o=e.frameReader,s=o.attributeName(r),i=o.attributeEventHandlerId(r);if(i){const e=fe(s);return void this.eventDelegator.setListener(n,e,i,t)}const a=o.attributeValue(r);this.setOrRemoveAttributeOrProperty(n,s,a)}insertFrameRange(e,t,n,r,o,s,i){const a=r;for(let a=s;a{He(t,e)})},enableNavigationInterception:function(e){if(void 0!==me&&me!==e)throw new Error("Only one interactive runtime may enable navigation interception at a time.");me=e},setHasLocationChangingListeners:function(e,t){const n=xe.get(e);if(!n)throw new Error(`Renderer with ID '${e}' is not listening for navigation events`);n.hasLocationChangingEventListeners=t},endLocationChanging:function(e,t){Pe&&e===Re&&(Pe(t),Pe=null)},navigateTo:function(e,t){Me(e,t,!0)},refresh:function(e){!e&&Se()?Ee(location.href,!0):location.reload()},getBaseURI:()=>document.baseURI,getLocationHref:()=>location.href,scrollToElement:Ne};function Ne(e){const t=document.getElementById(e);return!!t&&(t.scrollIntoView(),!0)}function Me(e,t,n=!1){const r=Ce(e),o=ze();if(t.forceLoad||!be(r)||"serverside-fullpageload"===o)!function(e,t){if(location.href===e){const t=e+"?";history.replaceState(null,"",t),location.replace(e)}else t?location.replace(e):location.href=e}(e,t.replaceHistoryEntry);else if("clientside-router"===o)Be(r,!1,t.replaceHistoryEntry,t.historyEntryState,n);else{if("serverside-enhanced"!==o)throw new Error(`Unsupported page load mechanism: ${o}`);Ee(r,t.replaceHistoryEntry)}}async function Be(e,t,n,r=void 0,o=!1){if(Oe(),function(e){const t=e.indexOf("#");return t>-1&&location.href.replace(location.hash,"")===e.substring(0,t)}(e))return void function(e,t,n){Le(e,t,n);const r=e.indexOf("#");r!==e.length-1&&Ne(e.substring(r+1))}(e,n,r);const s=We();(o||!(null==s?void 0:s.hasLocationChangingEventListeners)||await Fe(e,r,t,s))&&(_e=!0,Le(e,n,r),await He(t))}function Le(e,t,n=void 0){t?history.replaceState({userState:n,_index:De},"",e):(De++,history.pushState({userState:n,_index:De},"",e))}function $e(e){return new Promise((t=>{const n=Ae;Ae=()=>{Ae=n,t()},history.go(e)}))}function Oe(){Pe&&(Pe(!1),Pe=null)}function Fe(e,t,n,r){return new Promise((o=>{Oe(),Re++,Pe=o,r.locationChanging(Re,e,t,n)}))}async function He(e,t){const n=null!=t?t:location.href;await Promise.all(Array.from(xe,(async([t,r])=>{var o,s;s=t,S.has(s)&&await r.locationChanged(n,null===(o=history.state)||void 0===o?void 0:o.userState,e)})))}async function je(e){var t,n;Ae&&"serverside-enhanced"!==ze()&&await Ae(e),De=null!==(n=null===(t=history.state)||void 0===t?void 0:t._index)&&void 0!==n?n:0}function We(){const e=ke();if(void 0!==e)return xe.get(e)}function ze(){return Ie()?"clientside-router":Se()?"serverside-enhanced":window.Blazor._internal.isBlazorWeb?"serverside-fullpageload":"clientside-router"}const qe={focus:function(e,t){if(e instanceof HTMLElement)e.focus({preventScroll:t});else{if(!(e instanceof SVGElement))throw new Error("Unable to focus an invalid element.");if(!e.hasAttribute("tabindex"))throw new Error("Unable to focus an SVG element that does not have a tabindex.");e.focus({preventScroll:t})}},focusBySelector:function(e,t){const n=document.querySelector(e);n&&(n.hasAttribute("tabindex")||(n.tabIndex=-1),n.focus({preventScroll:!0}))}},Je={init:function(e,t,n,r=50){const o=Ve(t);(o||document.documentElement).style.overflowAnchor="none";const s=document.createRange();u(n.parentElement)&&(t.style.display="table-row",n.style.display="table-row");const i=new IntersectionObserver((function(r){r.forEach((r=>{var o;if(!r.isIntersecting)return;s.setStartAfter(t),s.setEndBefore(n);const i=s.getBoundingClientRect().height,a=null===(o=r.rootBounds)||void 0===o?void 0:o.height;r.target===t?e.invokeMethodAsync("OnSpacerBeforeVisible",r.intersectionRect.top-r.boundingClientRect.top,i,a):r.target===n&&n.offsetHeight>0&&e.invokeMethodAsync("OnSpacerAfterVisible",r.boundingClientRect.bottom-r.intersectionRect.bottom,i,a)}))}),{root:o,rootMargin:`${r}px`});i.observe(t),i.observe(n);const a=d(t),c=d(n),{observersByDotNetObjectId:l,id:h}=Xe(e);function d(e){const t={attributes:!0},n=new MutationObserver(((n,r)=>{u(e.parentElement)&&(r.disconnect(),e.style.display="table-row",r.observe(e,t)),i.unobserve(e),i.observe(e)}));return n.observe(e,t),n}function u(e){return null!==e&&(e instanceof HTMLTableElement&&""===e.style.display||"table"===e.style.display||e instanceof HTMLTableSectionElement&&""===e.style.display||"table-row-group"===e.style.display)}l[h]={intersectionObserver:i,mutationObserverBefore:a,mutationObserverAfter:c}},dispose:function(e){const{observersByDotNetObjectId:t,id:n}=Xe(e),r=t[n];r&&(r.intersectionObserver.disconnect(),r.mutationObserverBefore.disconnect(),r.mutationObserverAfter.disconnect(),e.dispose(),delete t[n])}},Ke=Symbol();function Ve(e){return e&&e!==document.body&&e!==document.documentElement?"visible"!==getComputedStyle(e).overflowY?e:Ve(e.parentElement):null}function Xe(e){var t;const n=e._callDispatcher,r=e._id;return null!==(t=n[Ke])&&void 0!==t||(n[Ke]={}),{observersByDotNetObjectId:n[Ke],id:r}}const Ye={getAndRemoveExistingTitle:function(){var e;const t=document.head?document.head.getElementsByTagName("title"):[];if(0===t.length)return null;let n=null;for(let r=t.length-1;r>=0;r--){const o=t[r],s=o.previousSibling;s instanceof Comment&&null!==z(s)||(null===n&&(n=o.textContent),null===(e=o.parentNode)||void 0===e||e.removeChild(o))}return n}},Ge={init:function(e,t){t._blazorInputFileNextFileId=0,t.addEventListener("click",(function(){t.value=""})),t.addEventListener("change",(function(){t._blazorFilesById={};const n=Array.prototype.map.call(t.files,(function(e){const n={id:++t._blazorInputFileNextFileId,lastModified:new Date(e.lastModified).toISOString(),name:e.name,size:e.size,contentType:e.type,readPromise:void 0,arrayBuffer:void 0,blob:e};return t._blazorFilesById[n.id]=n,n}));e.invokeMethodAsync("NotifyChange",n)}))},toImageFile:async function(e,t,n,r,o){const s=Qe(e,t),i=await new Promise((function(e){const t=new Image;t.onload=function(){URL.revokeObjectURL(t.src),e(t)},t.onerror=function(){t.onerror=null,URL.revokeObjectURL(t.src)},t.src=URL.createObjectURL(s.blob)})),a=await new Promise((function(e){var t;const s=Math.min(1,r/i.width),a=Math.min(1,o/i.height),c=Math.min(s,a),l=document.createElement("canvas");l.width=Math.round(i.width*c),l.height=Math.round(i.height*c),null===(t=l.getContext("2d"))||void 0===t||t.drawImage(i,0,0,l.width,l.height),l.toBlob(e,n)})),c={id:++e._blazorInputFileNextFileId,lastModified:s.lastModified,name:s.name,size:(null==a?void 0:a.size)||0,contentType:n,blob:a||s.blob};return e._blazorFilesById[c.id]=c,c},readFileData:async function(e,t){return Qe(e,t).blob}};function Qe(e,t){const n=e._blazorFilesById[t];if(!n)throw new Error(`There is no file with ID ${t}. The file list may have changed. See https://aka.ms/aspnet/blazor-input-file-multiple-selections.`);return n}const Ze=new Set,et={enableNavigationPrompt:function(e){0===Ze.size&&window.addEventListener("beforeunload",tt),Ze.add(e)},disableNavigationPrompt:function(e){Ze.delete(e),0===Ze.size&&window.removeEventListener("beforeunload",tt)}};function tt(e){e.preventDefault(),e.returnValue=!0}async function nt(e,t,n){return e instanceof Blob?await async function(e,t,n){const r=e.slice(t,t+n),o=await r.arrayBuffer();return new Uint8Array(o)}(e,t,n):function(e,t,n){return new Uint8Array(e.buffer,e.byteOffset+t,n)}(e,t,n)}new Map;const rt={navigateTo:function(e,t,n=!1){Me(e,t instanceof Object?t:{forceLoad:t,replaceHistoryEntry:n})},registerCustomEventType:function(e,t){if(!t)throw new Error("The options parameter is required.");if(s.has(e))throw new Error(`The event '${e}' is already registered.`);if(t.browserEventName){const n=i.get(t.browserEventName);n?n.push(e):i.set(t.browserEventName,[e]),a.forEach((n=>n(e,t.browserEventName)))}s.set(e,t)},rootComponents:y,runtime:{},_internal:{navigationManager:Ue,domWrapper:qe,Virtualize:Je,PageTitle:Ye,InputFile:Ge,NavigationLock:et,getJSDataStreamChunk:nt,attachWebRendererInterop:I}};var ot;function st(e){const t={...it,...e};return e&&e.reconnectionOptions&&(t.reconnectionOptions={...it.reconnectionOptions,...e.reconnectionOptions}),t}window.Blazor=rt,function(e){e[e.Trace=0]="Trace",e[e.Debug=1]="Debug",e[e.Information=2]="Information",e[e.Warning=3]="Warning",e[e.Error=4]="Error",e[e.Critical=5]="Critical",e[e.None=6]="None"}(ot||(ot={}));const it={configureSignalR:e=>{},logLevel:ot.Warning,initializers:void 0,circuitHandlers:[],reconnectionOptions:{maxRetries:8,retryIntervalMilliseconds:2e4,dialogId:"components-reconnect-modal"}};class at{log(e,t){}}at.instance=new at;class ct{constructor(e){this.minLevel=e}log(e,t){if(e>=this.minLevel){const n=`[${(new Date).toISOString()}] ${ot[e]}: ${t}`;switch(e){case ot.Critical:case ot.Error:console.error(n);break;case ot.Warning:console.warn(n);break;case ot.Information:console.info(n);break;default:console.log(n)}}}}const lt=/^\s*Blazor-Server-Component-State:(?[a-zA-Z0-9+/=]+)$/;function ht(e,t,n="state"){var r;if(e.nodeType===Node.COMMENT_NODE){const o=e.textContent||"",s=t.exec(o),i=s&&s.groups&&s.groups[n];return i&&(null===(r=e.parentNode)||void 0===r||r.removeChild(e)),i}if(!e.hasChildNodes())return;const o=e.childNodes;for(let e=0;e.*)$/);function pt(e,t){const n=e.currentElement;var r,o,s;if(n&&n.nodeType===Node.COMMENT_NODE&&n.textContent){const i=ut.exec(n.textContent),a=i&&i.groups&&i.groups.descriptor;if(!a)return;!function(e){if(e.parentNode instanceof Document)throw new Error("Root components cannot be marked as interactive. The element must be rendered statically so that scripts are not evaluated multiple times.")}(n);try{const i=function(e){const t=JSON.parse(e),{type:n}=t;if("server"!==n&&"webassembly"!==n&&"auto"!==n)throw new Error(`Invalid component type '${n}'.`);return t}(a),c=function(e,t,n){const{prerenderId:r}=e;if(r){for(;n.next()&&n.currentElement;){const e=n.currentElement;if(e.nodeType!==Node.COMMENT_NODE)continue;if(!e.textContent)continue;const t=ut.exec(e.textContent),o=t&&t[1];if(o)return vt(o,r),e}throw new Error(`Could not find an end component comment for '${t}'.`)}}(i,n,e);if(t!==i.type)return;switch(i.type){case"webassembly":return o=n,s=c,mt(r=i),{...r,uniqueId:ft++,start:o,end:s};case"server":return function(e,t,n){return gt(e),{...e,uniqueId:ft++,start:t,end:n}}(i,n,c);case"auto":return function(e,t,n){return gt(e),mt(e),{...e,uniqueId:ft++,start:t,end:n}}(i,n,c)}}catch(e){throw new Error(`Found malformed component comment at ${n.textContent}`)}}}let ft=0;function gt(e){const{descriptor:t,sequence:n}=e;if(!t)throw new Error("descriptor must be defined when using a descriptor.");if(void 0===n)throw new Error("sequence must be defined when using a descriptor.");if(!Number.isInteger(n))throw new Error(`Error parsing the sequence '${n}' for component '${JSON.stringify(e)}'`)}function mt(e){const{assembly:t,typeName:n}=e;if(!t)throw new Error("assembly must be defined when using a descriptor.");if(!n)throw new Error("typeName must be defined when using a descriptor.");e.parameterDefinitions=e.parameterDefinitions&&atob(e.parameterDefinitions),e.parameterValues=e.parameterValues&&atob(e.parameterValues)}function vt(e,t){const n=JSON.parse(e);if(1!==Object.keys(n).length)throw new Error(`Invalid end of component comment: '${e}'`);const r=n.prerenderId;if(!r)throw new Error(`End of component comment must have a value for the prerendered property: '${e}'`);if(r!==t)throw new Error(`End of component comment prerendered property must match the start comment prerender id: '${t}', '${r}'`)}class yt{constructor(e){this.childNodes=e,this.currentIndex=-1,this.length=e.length}next(){return this.currentIndex++,this.currentIndex{n+=`0x${e<16?"0":""}${e.toString(16)} `})),n.substr(0,n.length-1)}(e)}'`)):"string"==typeof e&&(n=`String data of length ${e.length}`,t&&(n+=`. Content: '${e}'`)),n}function kt(e){return e&&"undefined"!=typeof ArrayBuffer&&(e instanceof ArrayBuffer||e.constructor&&"ArrayBuffer"===e.constructor.name)}async function Tt(e,t,n,r,o,s){const i={},[a,c]=xt();i[a]=c,e.log(_t.Trace,`(${t} transport) sending data. ${It(o,s.logMessageContent)}.`);const l=kt(o)?"arraybuffer":"text",h=await n.post(r,{content:o,headers:{...i,...s.headers},responseType:l,timeout:s.timeout,withCredentials:s.withCredentials});e.log(_t.Trace,`(${t} transport) request complete. Response status: ${h.statusCode}.`)}class Dt{constructor(e,t){this._subject=e,this._observer=t}dispose(){const e=this._subject.observers.indexOf(this._observer);e>-1&&this._subject.observers.splice(e,1),0===this._subject.observers.length&&this._subject.cancelCallback&&this._subject.cancelCallback().catch((e=>{}))}}class Rt{constructor(e){this._minLevel=e,this.out=console}log(e,t){if(e>=this._minLevel){const n=`[${(new Date).toISOString()}] ${_t[e]}: ${t}`;switch(e){case _t.Critical:case _t.Error:this.out.error(n);break;case _t.Warning:this.out.warn(n);break;case _t.Information:this.out.info(n);break;default:this.out.log(n)}}}}function xt(){let e="X-SignalR-User-Agent";return Ct.isNode&&(e="User-Agent"),[e,At(St,Pt(),Ct.isNode?"NodeJS":"Browser",Ut())]}function At(e,t,n,r){let o="Microsoft SignalR/";const s=e.split(".");return o+=`${s[0]}.${s[1]}`,o+=` (${e}; `,o+=t&&""!==t?`${t}; `:"Unknown OS; ",o+=`${n}`,o+=r?`; ${r}`:"; Unknown Runtime Version",o+=")",o}function Pt(){if(!Ct.isNode)return"";switch(process.platform){case"win32":return"Windows NT";case"darwin":return"macOS";case"linux":return"Linux";default:return process.platform}}function Ut(){if(Ct.isNode)return process.versions.node}function Nt(e){return e.stack?e.stack:e.message?e.message:`${e}`}class Mt{writeHandshakeRequest(e){return wt.write(JSON.stringify(e))}parseHandshakeResponse(e){let t,n;if(kt(e)){const r=new Uint8Array(e),o=r.indexOf(wt.RecordSeparatorCode);if(-1===o)throw new Error("Message is incomplete.");const s=o+1;t=String.fromCharCode.apply(null,Array.prototype.slice.call(r.slice(0,s))),n=r.byteLength>s?r.slice(s).buffer:null}else{const r=e,o=r.indexOf(wt.RecordSeparator);if(-1===o)throw new Error("Message is incomplete.");const s=o+1;t=r.substring(0,s),n=r.length>s?r.substring(s):null}const r=wt.parse(t),o=JSON.parse(r[0]);if(o.type)throw new Error("Expected a handshake response from the server.");return[n,o]}}class Bt extends Error{constructor(e,t){const n=new.target.prototype;super(`${e}: Status code '${t}'`),this.statusCode=t,this.__proto__=n}}class Lt extends Error{constructor(e="A timeout occurred."){const t=new.target.prototype;super(e),this.__proto__=t}}class $t extends Error{constructor(e="An abort occurred."){const t=new.target.prototype;super(e),this.__proto__=t}}class Ot extends Error{constructor(e,t){const n=new.target.prototype;super(e),this.transport=t,this.errorType="UnsupportedTransportError",this.__proto__=n}}class Ft extends Error{constructor(e,t){const n=new.target.prototype;super(e),this.transport=t,this.errorType="DisabledTransportError",this.__proto__=n}}class Ht extends Error{constructor(e,t){const n=new.target.prototype;super(e),this.transport=t,this.errorType="FailedToStartTransportError",this.__proto__=n}}class jt extends Error{constructor(e){const t=new.target.prototype;super(e),this.errorType="FailedToNegotiateWithServerError",this.__proto__=t}}class Wt extends Error{constructor(e,t){const n=new.target.prototype;super(e),this.innerErrors=t,this.__proto__=n}}var zt,qt;!function(e){e[e.Invocation=1]="Invocation",e[e.StreamItem=2]="StreamItem",e[e.Completion=3]="Completion",e[e.StreamInvocation=4]="StreamInvocation",e[e.CancelInvocation=5]="CancelInvocation",e[e.Ping=6]="Ping",e[e.Close=7]="Close",e[e.Ack=8]="Ack",e[e.Sequence=9]="Sequence"}(zt||(zt={}));class Jt{constructor(){this.observers=[]}next(e){for(const t of this.observers)t.next(e)}error(e){for(const t of this.observers)t.error&&t.error(e)}complete(){for(const e of this.observers)e.complete&&e.complete()}subscribe(e){return this.observers.push(e),new Dt(this,e)}}class Kt{constructor(e,t,n){this._bufferSize=1e5,this._messages=[],this._totalMessageCount=0,this._waitForSequenceMessage=!1,this._nextReceivingSequenceId=1,this._latestReceivedSequenceId=0,this._bufferedByteCount=0,this._reconnectInProgress=!1,this._protocol=e,this._connection=t,this._bufferSize=n}async _send(e){const t=this._protocol.writeMessage(e);let n=Promise.resolve();if(this._isInvocationMessage(e)){this._totalMessageCount++;let e=()=>{},r=()=>{};kt(t)?this._bufferedByteCount+=t.byteLength:this._bufferedByteCount+=t.length,this._bufferedByteCount>=this._bufferSize&&(n=new Promise(((t,n)=>{e=t,r=n}))),this._messages.push(new Vt(t,this._totalMessageCount,e,r))}try{this._reconnectInProgress||await this._connection.send(t)}catch{this._disconnected()}await n}_ack(e){let t=-1;for(let n=0;nthis._nextReceivingSequenceId?this._connection.stop(new Error("Sequence ID greater than amount of messages we've received.")):this._nextReceivingSequenceId=e.sequenceId}_disconnected(){this._reconnectInProgress=!0,this._waitForSequenceMessage=!0}async _resend(){const e=0!==this._messages.length?this._messages[0]._id:this._totalMessageCount+1;await this._connection.send(this._protocol.writeMessage({type:zt.Sequence,sequenceId:e}));const t=this._messages;for(const e of t)await this._connection.send(e._message);this._reconnectInProgress=!1}_dispose(e){null!=e||(e=new Error("Unable to reconnect to server."));for(const t of this._messages)t._rejector(e)}_isInvocationMessage(e){switch(e.type){case zt.Invocation:case zt.StreamItem:case zt.Completion:case zt.StreamInvocation:case zt.CancelInvocation:return!0;case zt.Close:case zt.Sequence:case zt.Ping:case zt.Ack:return!1}}_ackTimer(){void 0===this._ackTimerHandle&&(this._ackTimerHandle=setTimeout((async()=>{try{this._reconnectInProgress||await this._connection.send(this._protocol.writeMessage({type:zt.Ack,sequenceId:this._latestReceivedSequenceId}))}catch{}clearTimeout(this._ackTimerHandle),this._ackTimerHandle=void 0}),1e3))}}class Vt{constructor(e,t,n,r){this._message=e,this._id=t,this._resolver=n,this._rejector=r}}!function(e){e.Disconnected="Disconnected",e.Connecting="Connecting",e.Connected="Connected",e.Disconnecting="Disconnecting",e.Reconnecting="Reconnecting"}(qt||(qt={}));class Xt{static create(e,t,n,r,o,s,i){return new Xt(e,t,n,r,o,s,i)}constructor(e,t,n,r,o,s,i){this._nextKeepAlive=0,this._freezeEventListener=()=>{this._logger.log(_t.Warning,"The page is being frozen, this will likely lead to the connection being closed and messages being lost. For more information see the docs at https://learn.microsoft.com/aspnet/core/signalr/javascript-client#bsleep")},Et.isRequired(e,"connection"),Et.isRequired(t,"logger"),Et.isRequired(n,"protocol"),this.serverTimeoutInMilliseconds=null!=o?o:3e4,this.keepAliveIntervalInMilliseconds=null!=s?s:15e3,this._statefulReconnectBufferSize=null!=i?i:1e5,this._logger=t,this._protocol=n,this.connection=e,this._reconnectPolicy=r,this._handshakeProtocol=new Mt,this.connection.onreceive=e=>this._processIncomingData(e),this.connection.onclose=e=>this._connectionClosed(e),this._callbacks={},this._methods={},this._closedCallbacks=[],this._reconnectingCallbacks=[],this._reconnectedCallbacks=[],this._invocationId=0,this._receivedHandshakeResponse=!1,this._connectionState=qt.Disconnected,this._connectionStarted=!1,this._cachedPingMessage=this._protocol.writeMessage({type:zt.Ping})}get state(){return this._connectionState}get connectionId(){return this.connection&&this.connection.connectionId||null}get baseUrl(){return this.connection.baseUrl||""}set baseUrl(e){if(this._connectionState!==qt.Disconnected&&this._connectionState!==qt.Reconnecting)throw new Error("The HubConnection must be in the Disconnected or Reconnecting state to change the url.");if(!e)throw new Error("The HubConnection url must be a valid url.");this.connection.baseUrl=e}start(){return this._startPromise=this._startWithStateTransitions(),this._startPromise}async _startWithStateTransitions(){if(this._connectionState!==qt.Disconnected)return Promise.reject(new Error("Cannot start a HubConnection that is not in the 'Disconnected' state."));this._connectionState=qt.Connecting,this._logger.log(_t.Debug,"Starting HubConnection.");try{await this._startInternal(),Ct.isBrowser&&window.document.addEventListener("freeze",this._freezeEventListener),this._connectionState=qt.Connected,this._connectionStarted=!0,this._logger.log(_t.Debug,"HubConnection connected successfully.")}catch(e){return this._connectionState=qt.Disconnected,this._logger.log(_t.Debug,`HubConnection failed to start successfully because of error '${e}'.`),Promise.reject(e)}}async _startInternal(){this._stopDuringStartError=void 0,this._receivedHandshakeResponse=!1;const e=new Promise(((e,t)=>{this._handshakeResolver=e,this._handshakeRejecter=t}));await this.connection.start(this._protocol.transferFormat);try{let t=this._protocol.version;this.connection.features.reconnect||(t=1);const n={protocol:this._protocol.name,version:t};if(this._logger.log(_t.Debug,"Sending handshake request."),await this._sendMessage(this._handshakeProtocol.writeHandshakeRequest(n)),this._logger.log(_t.Information,`Using HubProtocol '${this._protocol.name}'.`),this._cleanupTimeout(),this._resetTimeoutPeriod(),this._resetKeepAliveInterval(),await e,this._stopDuringStartError)throw this._stopDuringStartError;!!this.connection.features.reconnect&&(this._messageBuffer=new Kt(this._protocol,this.connection,this._statefulReconnectBufferSize),this.connection.features.disconnected=this._messageBuffer._disconnected.bind(this._messageBuffer),this.connection.features.resend=()=>{if(this._messageBuffer)return this._messageBuffer._resend()}),this.connection.features.inherentKeepAlive||await this._sendMessage(this._cachedPingMessage)}catch(e){throw this._logger.log(_t.Debug,`Hub handshake failed with error '${e}' during start(). Stopping HubConnection.`),this._cleanupTimeout(),this._cleanupPingTimer(),await this.connection.stop(e),e}}async stop(){const e=this._startPromise;this.connection.features.reconnect=!1,this._stopPromise=this._stopInternal(),await this._stopPromise;try{await e}catch(e){}}_stopInternal(e){if(this._connectionState===qt.Disconnected)return this._logger.log(_t.Debug,`Call to HubConnection.stop(${e}) ignored because it is already in the disconnected state.`),Promise.resolve();if(this._connectionState===qt.Disconnecting)return this._logger.log(_t.Debug,`Call to HttpConnection.stop(${e}) ignored because the connection is already in the disconnecting state.`),this._stopPromise;const t=this._connectionState;return this._connectionState=qt.Disconnecting,this._logger.log(_t.Debug,"Stopping HubConnection."),this._reconnectDelayHandle?(this._logger.log(_t.Debug,"Connection stopped during reconnect delay. Done reconnecting."),clearTimeout(this._reconnectDelayHandle),this._reconnectDelayHandle=void 0,this._completeClose(),Promise.resolve()):(t===qt.Connected&&this._sendCloseMessage(),this._cleanupTimeout(),this._cleanupPingTimer(),this._stopDuringStartError=e||new $t("The connection was stopped before the hub handshake could complete."),this.connection.stop(e))}async _sendCloseMessage(){try{await this._sendWithProtocol(this._createCloseMessage())}catch{}}stream(e,...t){const[n,r]=this._replaceStreamingParams(t),o=this._createStreamInvocation(e,t,r);let s;const i=new Jt;return i.cancelCallback=()=>{const e=this._createCancelInvocation(o.invocationId);return delete this._callbacks[o.invocationId],s.then((()=>this._sendWithProtocol(e)))},this._callbacks[o.invocationId]=(e,t)=>{t?i.error(t):e&&(e.type===zt.Completion?e.error?i.error(new Error(e.error)):i.complete():i.next(e.item))},s=this._sendWithProtocol(o).catch((e=>{i.error(e),delete this._callbacks[o.invocationId]})),this._launchStreams(n,s),i}_sendMessage(e){return this._resetKeepAliveInterval(),this.connection.send(e)}_sendWithProtocol(e){return this._messageBuffer?this._messageBuffer._send(e):this._sendMessage(this._protocol.writeMessage(e))}send(e,...t){const[n,r]=this._replaceStreamingParams(t),o=this._sendWithProtocol(this._createInvocation(e,t,!0,r));return this._launchStreams(n,o),o}invoke(e,...t){const[n,r]=this._replaceStreamingParams(t),o=this._createInvocation(e,t,!1,r);return new Promise(((e,t)=>{this._callbacks[o.invocationId]=(n,r)=>{r?t(r):n&&(n.type===zt.Completion?n.error?t(new Error(n.error)):e(n.result):t(new Error(`Unexpected message type: ${n.type}`)))};const r=this._sendWithProtocol(o).catch((e=>{t(e),delete this._callbacks[o.invocationId]}));this._launchStreams(n,r)}))}on(e,t){e&&t&&(e=e.toLowerCase(),this._methods[e]||(this._methods[e]=[]),-1===this._methods[e].indexOf(t)&&this._methods[e].push(t))}off(e,t){if(!e)return;e=e.toLowerCase();const n=this._methods[e];if(n)if(t){const r=n.indexOf(t);-1!==r&&(n.splice(r,1),0===n.length&&delete this._methods[e])}else delete this._methods[e]}onclose(e){e&&this._closedCallbacks.push(e)}onreconnecting(e){e&&this._reconnectingCallbacks.push(e)}onreconnected(e){e&&this._reconnectedCallbacks.push(e)}_processIncomingData(e){if(this._cleanupTimeout(),this._receivedHandshakeResponse||(e=this._processHandshakeResponse(e),this._receivedHandshakeResponse=!0),e){const t=this._protocol.parseMessages(e,this._logger);for(const e of t)if(!this._messageBuffer||this._messageBuffer._shouldProcessMessage(e))switch(e.type){case zt.Invocation:this._invokeClientMethod(e);break;case zt.StreamItem:case zt.Completion:{const t=this._callbacks[e.invocationId];if(t){e.type===zt.Completion&&delete this._callbacks[e.invocationId];try{t(e)}catch(e){this._logger.log(_t.Error,`Stream callback threw error: ${Nt(e)}`)}}break}case zt.Ping:break;case zt.Close:{this._logger.log(_t.Information,"Close message received from server.");const t=e.error?new Error("Server returned an error on close: "+e.error):void 0;!0===e.allowReconnect?this.connection.stop(t):this._stopPromise=this._stopInternal(t);break}case zt.Ack:this._messageBuffer&&this._messageBuffer._ack(e);break;case zt.Sequence:this._messageBuffer&&this._messageBuffer._resetSequence(e);break;default:this._logger.log(_t.Warning,`Invalid message type: ${e.type}.`)}}this._resetTimeoutPeriod()}_processHandshakeResponse(e){let t,n;try{[n,t]=this._handshakeProtocol.parseHandshakeResponse(e)}catch(e){const t="Error parsing handshake response: "+e;this._logger.log(_t.Error,t);const n=new Error(t);throw this._handshakeRejecter(n),n}if(t.error){const e="Server returned handshake error: "+t.error;this._logger.log(_t.Error,e);const n=new Error(e);throw this._handshakeRejecter(n),n}return this._logger.log(_t.Debug,"Server handshake complete."),this._handshakeResolver(),n}_resetKeepAliveInterval(){this.connection.features.inherentKeepAlive||(this._nextKeepAlive=(new Date).getTime()+this.keepAliveIntervalInMilliseconds,this._cleanupPingTimer())}_resetTimeoutPeriod(){if(!(this.connection.features&&this.connection.features.inherentKeepAlive||(this._timeoutHandle=setTimeout((()=>this.serverTimeout()),this.serverTimeoutInMilliseconds),void 0!==this._pingServerHandle))){let e=this._nextKeepAlive-(new Date).getTime();e<0&&(e=0),this._pingServerHandle=setTimeout((async()=>{if(this._connectionState===qt.Connected)try{await this._sendMessage(this._cachedPingMessage)}catch{this._cleanupPingTimer()}}),e)}}serverTimeout(){this.connection.stop(new Error("Server timeout elapsed without receiving a message from the server."))}async _invokeClientMethod(e){const t=e.target.toLowerCase(),n=this._methods[t];if(!n)return this._logger.log(_t.Warning,`No client method with the name '${t}' found.`),void(e.invocationId&&(this._logger.log(_t.Warning,`No result given for '${t}' method and invocation ID '${e.invocationId}'.`),await this._sendWithProtocol(this._createCompletionMessage(e.invocationId,"Client didn't provide a result.",null))));const r=n.slice(),o=!!e.invocationId;let s,i,a;for(const n of r)try{const r=s;s=await n.apply(this,e.arguments),o&&s&&r&&(this._logger.log(_t.Error,`Multiple results provided for '${t}'. Sending error to server.`),a=this._createCompletionMessage(e.invocationId,"Client provided multiple results.",null)),i=void 0}catch(e){i=e,this._logger.log(_t.Error,`A callback for the method '${t}' threw error '${e}'.`)}a?await this._sendWithProtocol(a):o?(i?a=this._createCompletionMessage(e.invocationId,`${i}`,null):void 0!==s?a=this._createCompletionMessage(e.invocationId,null,s):(this._logger.log(_t.Warning,`No result given for '${t}' method and invocation ID '${e.invocationId}'.`),a=this._createCompletionMessage(e.invocationId,"Client didn't provide a result.",null)),await this._sendWithProtocol(a)):s&&this._logger.log(_t.Error,`Result given for '${t}' method but server is not expecting a result.`)}_connectionClosed(e){this._logger.log(_t.Debug,`HubConnection.connectionClosed(${e}) called while in state ${this._connectionState}.`),this._stopDuringStartError=this._stopDuringStartError||e||new $t("The underlying connection was closed before the hub handshake could complete."),this._handshakeResolver&&this._handshakeResolver(),this._cancelCallbacksWithError(e||new Error("Invocation canceled due to the underlying connection being closed.")),this._cleanupTimeout(),this._cleanupPingTimer(),this._connectionState===qt.Disconnecting?this._completeClose(e):this._connectionState===qt.Connected&&this._reconnectPolicy?this._reconnect(e):this._connectionState===qt.Connected&&this._completeClose(e)}_completeClose(e){if(this._connectionStarted){this._connectionState=qt.Disconnected,this._connectionStarted=!1,this._messageBuffer&&(this._messageBuffer._dispose(null!=e?e:new Error("Connection closed.")),this._messageBuffer=void 0),Ct.isBrowser&&window.document.removeEventListener("freeze",this._freezeEventListener);try{this._closedCallbacks.forEach((t=>t.apply(this,[e])))}catch(t){this._logger.log(_t.Error,`An onclose callback called with error '${e}' threw error '${t}'.`)}}}async _reconnect(e){const t=Date.now();let n=0,r=void 0!==e?e:new Error("Attempting to reconnect due to a unknown error."),o=this._getNextRetryDelay(n++,0,r);if(null===o)return this._logger.log(_t.Debug,"Connection not reconnecting because the IRetryPolicy returned null on the first reconnect attempt."),void this._completeClose(e);if(this._connectionState=qt.Reconnecting,e?this._logger.log(_t.Information,`Connection reconnecting because of error '${e}'.`):this._logger.log(_t.Information,"Connection reconnecting."),0!==this._reconnectingCallbacks.length){try{this._reconnectingCallbacks.forEach((t=>t.apply(this,[e])))}catch(t){this._logger.log(_t.Error,`An onreconnecting callback called with error '${e}' threw error '${t}'.`)}if(this._connectionState!==qt.Reconnecting)return void this._logger.log(_t.Debug,"Connection left the reconnecting state in onreconnecting callback. Done reconnecting.")}for(;null!==o;){if(this._logger.log(_t.Information,`Reconnect attempt number ${n} will start in ${o} ms.`),await new Promise((e=>{this._reconnectDelayHandle=setTimeout(e,o)})),this._reconnectDelayHandle=void 0,this._connectionState!==qt.Reconnecting)return void this._logger.log(_t.Debug,"Connection left the reconnecting state during reconnect delay. Done reconnecting.");try{if(await this._startInternal(),this._connectionState=qt.Connected,this._logger.log(_t.Information,"HubConnection reconnected successfully."),0!==this._reconnectedCallbacks.length)try{this._reconnectedCallbacks.forEach((e=>e.apply(this,[this.connection.connectionId])))}catch(e){this._logger.log(_t.Error,`An onreconnected callback called with connectionId '${this.connection.connectionId}; threw error '${e}'.`)}return}catch(e){if(this._logger.log(_t.Information,`Reconnect attempt failed because of error '${e}'.`),this._connectionState!==qt.Reconnecting)return this._logger.log(_t.Debug,`Connection moved to the '${this._connectionState}' from the reconnecting state during reconnect attempt. Done reconnecting.`),void(this._connectionState===qt.Disconnecting&&this._completeClose());r=e instanceof Error?e:new Error(e.toString()),o=this._getNextRetryDelay(n++,Date.now()-t,r)}}this._logger.log(_t.Information,`Reconnect retries have been exhausted after ${Date.now()-t} ms and ${n} failed attempts. Connection disconnecting.`),this._completeClose()}_getNextRetryDelay(e,t,n){try{return this._reconnectPolicy.nextRetryDelayInMilliseconds({elapsedMilliseconds:t,previousRetryCount:e,retryReason:n})}catch(n){return this._logger.log(_t.Error,`IRetryPolicy.nextRetryDelayInMilliseconds(${e}, ${t}) threw error '${n}'.`),null}}_cancelCallbacksWithError(e){const t=this._callbacks;this._callbacks={},Object.keys(t).forEach((n=>{const r=t[n];try{r(null,e)}catch(t){this._logger.log(_t.Error,`Stream 'error' callback called with '${e}' threw error: ${Nt(t)}`)}}))}_cleanupPingTimer(){this._pingServerHandle&&(clearTimeout(this._pingServerHandle),this._pingServerHandle=void 0)}_cleanupTimeout(){this._timeoutHandle&&clearTimeout(this._timeoutHandle)}_createInvocation(e,t,n,r){if(n)return 0!==r.length?{arguments:t,streamIds:r,target:e,type:zt.Invocation}:{arguments:t,target:e,type:zt.Invocation};{const n=this._invocationId;return this._invocationId++,0!==r.length?{arguments:t,invocationId:n.toString(),streamIds:r,target:e,type:zt.Invocation}:{arguments:t,invocationId:n.toString(),target:e,type:zt.Invocation}}}_launchStreams(e,t){if(0!==e.length){t||(t=Promise.resolve());for(const n in e)e[n].subscribe({complete:()=>{t=t.then((()=>this._sendWithProtocol(this._createCompletionMessage(n))))},error:e=>{let r;r=e instanceof Error?e.message:e&&e.toString?e.toString():"Unknown error",t=t.then((()=>this._sendWithProtocol(this._createCompletionMessage(n,r))))},next:e=>{t=t.then((()=>this._sendWithProtocol(this._createStreamItemMessage(n,e))))}})}}_replaceStreamingParams(e){const t=[],n=[];for(let r=0;r0)&&(t=!1,this._accessToken=await this._accessTokenFactory()),this._setAuthorizationHeader(e);const n=await this._innerClient.send(e);return t&&401===n.statusCode&&this._accessTokenFactory?(this._accessToken=await this._accessTokenFactory(),this._setAuthorizationHeader(e),await this._innerClient.send(e)):n}_setAuthorizationHeader(e){e.headers||(e.headers={}),this._accessToken?e.headers[Qt.Authorization]=`Bearer ${this._accessToken}`:this._accessTokenFactory&&e.headers[Qt.Authorization]&&delete e.headers[Qt.Authorization]}getCookieString(e){return this._innerClient.getCookieString(e)}}class nn extends en{constructor(e){super(),this._logger=e;const t={_fetchType:void 0,_jar:void 0};var r;r=t,"undefined"==typeof fetch&&(r._jar=new(n(628).CookieJar),"undefined"==typeof fetch?r._fetchType=n(200):r._fetchType=fetch,r._fetchType=n(203)(r._fetchType,r._jar),1)?(this._fetchType=t._fetchType,this._jar=t._jar):this._fetchType=fetch.bind(function(){if("undefined"!=typeof globalThis)return globalThis;if("undefined"!=typeof self)return self;if("undefined"!=typeof window)return window;if(void 0!==n.g)return n.g;throw new Error("could not find global")}()),this._abortControllerType=AbortController;const o={_abortControllerType:this._abortControllerType};(function(e){return"undefined"==typeof AbortController&&(e._abortControllerType=n(778),!0)})(o)&&(this._abortControllerType=o._abortControllerType)}async send(e){if(e.abortSignal&&e.abortSignal.aborted)throw new $t;if(!e.method)throw new Error("No method defined.");if(!e.url)throw new Error("No url defined.");const t=new this._abortControllerType;let n;e.abortSignal&&(e.abortSignal.onabort=()=>{t.abort(),n=new $t});let r,o=null;if(e.timeout){const r=e.timeout;o=setTimeout((()=>{t.abort(),this._logger.log(_t.Warning,"Timeout from HTTP request."),n=new Lt}),r)}""===e.content&&(e.content=void 0),e.content&&(e.headers=e.headers||{},kt(e.content)?e.headers["Content-Type"]="application/octet-stream":e.headers["Content-Type"]="text/plain;charset=UTF-8");try{r=await this._fetchType(e.url,{body:e.content,cache:"no-cache",credentials:!0===e.withCredentials?"include":"same-origin",headers:{"X-Requested-With":"XMLHttpRequest",...e.headers},method:e.method,mode:"cors",redirect:"follow",signal:t.signal})}catch(e){if(n)throw n;throw this._logger.log(_t.Warning,`Error from HTTP request. ${e}.`),e}finally{o&&clearTimeout(o),e.abortSignal&&(e.abortSignal.onabort=null)}if(!r.ok){const e=await rn(r,"text");throw new Bt(e||r.statusText,r.status)}const s=rn(r,e.responseType),i=await s;return new Zt(r.status,r.statusText,i)}getCookieString(e){return""}}function rn(e,t){let n;switch(t){case"arraybuffer":n=e.arrayBuffer();break;case"text":default:n=e.text();break;case"blob":case"document":case"json":throw new Error(`${t} is not supported.`)}return n}class on extends en{constructor(e){super(),this._logger=e}send(e){return e.abortSignal&&e.abortSignal.aborted?Promise.reject(new $t):e.method?e.url?new Promise(((t,n)=>{const r=new XMLHttpRequest;r.open(e.method,e.url,!0),r.withCredentials=void 0===e.withCredentials||e.withCredentials,r.setRequestHeader("X-Requested-With","XMLHttpRequest"),""===e.content&&(e.content=void 0),e.content&&(kt(e.content)?r.setRequestHeader("Content-Type","application/octet-stream"):r.setRequestHeader("Content-Type","text/plain;charset=UTF-8"));const o=e.headers;o&&Object.keys(o).forEach((e=>{r.setRequestHeader(e,o[e])})),e.responseType&&(r.responseType=e.responseType),e.abortSignal&&(e.abortSignal.onabort=()=>{r.abort(),n(new $t)}),e.timeout&&(r.timeout=e.timeout),r.onload=()=>{e.abortSignal&&(e.abortSignal.onabort=null),r.status>=200&&r.status<300?t(new Zt(r.status,r.statusText,r.response||r.responseText)):n(new Bt(r.response||r.responseText||r.statusText,r.status))},r.onerror=()=>{this._logger.log(_t.Warning,`Error from HTTP request. ${r.status}: ${r.statusText}.`),n(new Bt(r.statusText,r.status))},r.ontimeout=()=>{this._logger.log(_t.Warning,"Timeout from HTTP request."),n(new Lt)},r.send(e.content)})):Promise.reject(new Error("No url defined.")):Promise.reject(new Error("No method defined."))}}class sn extends en{constructor(e){if(super(),"undefined"!=typeof fetch)this._httpClient=new nn(e);else{if("undefined"==typeof XMLHttpRequest)throw new Error("No usable HttpClient found.");this._httpClient=new on(e)}}send(e){return e.abortSignal&&e.abortSignal.aborted?Promise.reject(new $t):e.method?e.url?this._httpClient.send(e):Promise.reject(new Error("No url defined.")):Promise.reject(new Error("No method defined."))}getCookieString(e){return this._httpClient.getCookieString(e)}}var an,cn;!function(e){e[e.None=0]="None",e[e.WebSockets=1]="WebSockets",e[e.ServerSentEvents=2]="ServerSentEvents",e[e.LongPolling=4]="LongPolling"}(an||(an={})),function(e){e[e.Text=1]="Text",e[e.Binary=2]="Binary"}(cn||(cn={}));class ln{constructor(){this._isAborted=!1,this.onabort=null}abort(){this._isAborted||(this._isAborted=!0,this.onabort&&this.onabort())}get signal(){return this}get aborted(){return this._isAborted}}class hn{get pollAborted(){return this._pollAbort.aborted}constructor(e,t,n){this._httpClient=e,this._logger=t,this._pollAbort=new ln,this._options=n,this._running=!1,this.onreceive=null,this.onclose=null}async connect(e,t){if(Et.isRequired(e,"url"),Et.isRequired(t,"transferFormat"),Et.isIn(t,cn,"transferFormat"),this._url=e,this._logger.log(_t.Trace,"(LongPolling transport) Connecting."),t===cn.Binary&&"undefined"!=typeof XMLHttpRequest&&"string"!=typeof(new XMLHttpRequest).responseType)throw new Error("Binary protocols over XmlHttpRequest not implementing advanced features are not supported.");const[n,r]=xt(),o={[n]:r,...this._options.headers},s={abortSignal:this._pollAbort.signal,headers:o,timeout:1e5,withCredentials:this._options.withCredentials};t===cn.Binary&&(s.responseType="arraybuffer");const i=`${e}&_=${Date.now()}`;this._logger.log(_t.Trace,`(LongPolling transport) polling: ${i}.`);const a=await this._httpClient.get(i,s);200!==a.statusCode?(this._logger.log(_t.Error,`(LongPolling transport) Unexpected response code: ${a.statusCode}.`),this._closeError=new Bt(a.statusText||"",a.statusCode),this._running=!1):this._running=!0,this._receiving=this._poll(this._url,s)}async _poll(e,t){try{for(;this._running;)try{const n=`${e}&_=${Date.now()}`;this._logger.log(_t.Trace,`(LongPolling transport) polling: ${n}.`);const r=await this._httpClient.get(n,t);204===r.statusCode?(this._logger.log(_t.Information,"(LongPolling transport) Poll terminated by server."),this._running=!1):200!==r.statusCode?(this._logger.log(_t.Error,`(LongPolling transport) Unexpected response code: ${r.statusCode}.`),this._closeError=new Bt(r.statusText||"",r.statusCode),this._running=!1):r.content?(this._logger.log(_t.Trace,`(LongPolling transport) data received. ${It(r.content,this._options.logMessageContent)}.`),this.onreceive&&this.onreceive(r.content)):this._logger.log(_t.Trace,"(LongPolling transport) Poll timed out, reissuing.")}catch(e){this._running?e instanceof Lt?this._logger.log(_t.Trace,"(LongPolling transport) Poll timed out, reissuing."):(this._closeError=e,this._running=!1):this._logger.log(_t.Trace,`(LongPolling transport) Poll errored after shutdown: ${e.message}`)}}finally{this._logger.log(_t.Trace,"(LongPolling transport) Polling complete."),this.pollAborted||this._raiseOnClose()}}async send(e){return this._running?Tt(this._logger,"LongPolling",this._httpClient,this._url,e,this._options):Promise.reject(new Error("Cannot send until the transport is connected"))}async stop(){this._logger.log(_t.Trace,"(LongPolling transport) Stopping polling."),this._running=!1,this._pollAbort.abort();try{await this._receiving,this._logger.log(_t.Trace,`(LongPolling transport) sending DELETE request to ${this._url}.`);const e={},[t,n]=xt();e[t]=n;const r={headers:{...e,...this._options.headers},timeout:this._options.timeout,withCredentials:this._options.withCredentials};let o;try{await this._httpClient.delete(this._url,r)}catch(e){o=e}o?o instanceof Bt&&(404===o.statusCode?this._logger.log(_t.Trace,"(LongPolling transport) A 404 response was returned from sending a DELETE request."):this._logger.log(_t.Trace,`(LongPolling transport) Error sending a DELETE request: ${o}`)):this._logger.log(_t.Trace,"(LongPolling transport) DELETE request accepted.")}finally{this._logger.log(_t.Trace,"(LongPolling transport) Stop finished."),this._raiseOnClose()}}_raiseOnClose(){if(this.onclose){let e="(LongPolling transport) Firing onclose event.";this._closeError&&(e+=" Error: "+this._closeError),this._logger.log(_t.Trace,e),this.onclose(this._closeError)}}}class dn{constructor(e,t,n,r){this._httpClient=e,this._accessToken=t,this._logger=n,this._options=r,this.onreceive=null,this.onclose=null}async connect(e,t){return Et.isRequired(e,"url"),Et.isRequired(t,"transferFormat"),Et.isIn(t,cn,"transferFormat"),this._logger.log(_t.Trace,"(SSE transport) Connecting."),this._url=e,this._accessToken&&(e+=(e.indexOf("?")<0?"?":"&")+`access_token=${encodeURIComponent(this._accessToken)}`),new Promise(((n,r)=>{let o,s=!1;if(t===cn.Text){if(Ct.isBrowser||Ct.isWebWorker)o=new this._options.EventSource(e,{withCredentials:this._options.withCredentials});else{const t=this._httpClient.getCookieString(e),n={};n.Cookie=t;const[r,s]=xt();n[r]=s,o=new this._options.EventSource(e,{withCredentials:this._options.withCredentials,headers:{...n,...this._options.headers}})}try{o.onmessage=e=>{if(this.onreceive)try{this._logger.log(_t.Trace,`(SSE transport) data received. ${It(e.data,this._options.logMessageContent)}.`),this.onreceive(e.data)}catch(e){return void this._close(e)}},o.onerror=e=>{s?this._close():r(new Error("EventSource failed to connect. The connection could not be found on the server, either the connection ID is not present on the server, or a proxy is refusing/buffering the connection. If you have multiple servers check that sticky sessions are enabled."))},o.onopen=()=>{this._logger.log(_t.Information,`SSE connected to ${this._url}`),this._eventSource=o,s=!0,n()}}catch(e){return void r(e)}}else r(new Error("The Server-Sent Events transport only supports the 'Text' transfer format"))}))}async send(e){return this._eventSource?Tt(this._logger,"SSE",this._httpClient,this._url,e,this._options):Promise.reject(new Error("Cannot send until the transport is connected"))}stop(){return this._close(),Promise.resolve()}_close(e){this._eventSource&&(this._eventSource.close(),this._eventSource=void 0,this.onclose&&this.onclose(e))}}class un{constructor(e,t,n,r,o,s){this._logger=n,this._accessTokenFactory=t,this._logMessageContent=r,this._webSocketConstructor=o,this._httpClient=e,this.onreceive=null,this.onclose=null,this._headers=s}async connect(e,t){let n;return Et.isRequired(e,"url"),Et.isRequired(t,"transferFormat"),Et.isIn(t,cn,"transferFormat"),this._logger.log(_t.Trace,"(WebSockets transport) Connecting."),this._accessTokenFactory&&(n=await this._accessTokenFactory()),new Promise(((r,o)=>{let s;e=e.replace(/^http/,"ws");const i=this._httpClient.getCookieString(e);let a=!1;if(Ct.isReactNative){const t={},[r,o]=xt();t[r]=o,n&&(t[Qt.Authorization]=`Bearer ${n}`),i&&(t[Qt.Cookie]=i),s=new this._webSocketConstructor(e,void 0,{headers:{...t,...this._headers}})}else n&&(e+=(e.indexOf("?")<0?"?":"&")+`access_token=${encodeURIComponent(n)}`);s||(s=new this._webSocketConstructor(e)),t===cn.Binary&&(s.binaryType="arraybuffer"),s.onopen=t=>{this._logger.log(_t.Information,`WebSocket connected to ${e}.`),this._webSocket=s,a=!0,r()},s.onerror=e=>{let t=null;t="undefined"!=typeof ErrorEvent&&e instanceof ErrorEvent?e.error:"There was an error with the transport",this._logger.log(_t.Information,`(WebSockets transport) ${t}.`)},s.onmessage=e=>{if(this._logger.log(_t.Trace,`(WebSockets transport) data received. ${It(e.data,this._logMessageContent)}.`),this.onreceive)try{this.onreceive(e.data)}catch(e){return void this._close(e)}},s.onclose=e=>{if(a)this._close(e);else{let t=null;t="undefined"!=typeof ErrorEvent&&e instanceof ErrorEvent?e.error:"WebSocket failed to connect. The connection could not be found on the server, either the endpoint may not be a SignalR endpoint, the connection ID is not present on the server, or there is a proxy blocking WebSockets. If you have multiple servers check that sticky sessions are enabled.",o(new Error(t))}}}))}send(e){return this._webSocket&&this._webSocket.readyState===this._webSocketConstructor.OPEN?(this._logger.log(_t.Trace,`(WebSockets transport) sending data. ${It(e,this._logMessageContent)}.`),this._webSocket.send(e),Promise.resolve()):Promise.reject("WebSocket is not in the OPEN state")}stop(){return this._webSocket&&this._close(void 0),Promise.resolve()}_close(e){this._webSocket&&(this._webSocket.onclose=()=>{},this._webSocket.onmessage=()=>{},this._webSocket.onerror=()=>{},this._webSocket.close(),this._webSocket=void 0),this._logger.log(_t.Trace,"(WebSockets transport) socket closed."),this.onclose&&(!this._isCloseEvent(e)||!1!==e.wasClean&&1e3===e.code?e instanceof Error?this.onclose(e):this.onclose():this.onclose(new Error(`WebSocket closed with status code: ${e.code} (${e.reason||"no reason given"}).`)))}_isCloseEvent(e){return e&&"boolean"==typeof e.wasClean&&"number"==typeof e.code}}class pn{constructor(e,t={}){if(this._stopPromiseResolver=()=>{},this.features={},this._negotiateVersion=1,Et.isRequired(e,"url"),this._logger=function(e){return void 0===e?new Rt(_t.Information):null===e?bt.instance:void 0!==e.log?e:new Rt(e)}(t.logger),this.baseUrl=this._resolveUrl(e),(t=t||{}).logMessageContent=void 0!==t.logMessageContent&&t.logMessageContent,"boolean"!=typeof t.withCredentials&&void 0!==t.withCredentials)throw new Error("withCredentials option was not a 'boolean' or 'undefined' value");t.withCredentials=void 0===t.withCredentials||t.withCredentials,t.timeout=void 0===t.timeout?1e5:t.timeout,"undefined"==typeof WebSocket||t.WebSocket||(t.WebSocket=WebSocket),"undefined"==typeof EventSource||t.EventSource||(t.EventSource=EventSource),this._httpClient=new tn(t.httpClient||new sn(this._logger),t.accessTokenFactory),this._connectionState="Disconnected",this._connectionStarted=!1,this._options=t,this.onreceive=null,this.onclose=null}async start(e){if(e=e||cn.Binary,Et.isIn(e,cn,"transferFormat"),this._logger.log(_t.Debug,`Starting connection with transfer format '${cn[e]}'.`),"Disconnected"!==this._connectionState)return Promise.reject(new Error("Cannot start an HttpConnection that is not in the 'Disconnected' state."));if(this._connectionState="Connecting",this._startInternalPromise=this._startInternal(e),await this._startInternalPromise,"Disconnecting"===this._connectionState){const e="Failed to start the HttpConnection before stop() was called.";return this._logger.log(_t.Error,e),await this._stopPromise,Promise.reject(new $t(e))}if("Connected"!==this._connectionState){const e="HttpConnection.startInternal completed gracefully but didn't enter the connection into the connected state!";return this._logger.log(_t.Error,e),Promise.reject(new $t(e))}this._connectionStarted=!0}send(e){return"Connected"!==this._connectionState?Promise.reject(new Error("Cannot send data if the connection is not in the 'Connected' State.")):(this._sendQueue||(this._sendQueue=new fn(this.transport)),this._sendQueue.send(e))}async stop(e){return"Disconnected"===this._connectionState?(this._logger.log(_t.Debug,`Call to HttpConnection.stop(${e}) ignored because the connection is already in the disconnected state.`),Promise.resolve()):"Disconnecting"===this._connectionState?(this._logger.log(_t.Debug,`Call to HttpConnection.stop(${e}) ignored because the connection is already in the disconnecting state.`),this._stopPromise):(this._connectionState="Disconnecting",this._stopPromise=new Promise((e=>{this._stopPromiseResolver=e})),await this._stopInternal(e),void await this._stopPromise)}async _stopInternal(e){this._stopError=e;try{await this._startInternalPromise}catch(e){}if(this.transport){try{await this.transport.stop()}catch(e){this._logger.log(_t.Error,`HttpConnection.transport.stop() threw error '${e}'.`),this._stopConnection()}this.transport=void 0}else this._logger.log(_t.Debug,"HttpConnection.transport is undefined in HttpConnection.stop() because start() failed.")}async _startInternal(e){let t=this.baseUrl;this._accessTokenFactory=this._options.accessTokenFactory,this._httpClient._accessTokenFactory=this._accessTokenFactory;try{if(this._options.skipNegotiation){if(this._options.transport!==an.WebSockets)throw new Error("Negotiation can only be skipped when using the WebSocket transport directly.");this.transport=this._constructTransport(an.WebSockets),await this._startTransport(t,e)}else{let n=null,r=0;do{if(n=await this._getNegotiationResponse(t),"Disconnecting"===this._connectionState||"Disconnected"===this._connectionState)throw new $t("The connection was stopped during negotiation.");if(n.error)throw new Error(n.error);if(n.ProtocolVersion)throw new Error("Detected a connection attempt to an ASP.NET SignalR Server. This client only supports connecting to an ASP.NET Core SignalR Server. See https://aka.ms/signalr-core-differences for details.");if(n.url&&(t=n.url),n.accessToken){const e=n.accessToken;this._accessTokenFactory=()=>e,this._httpClient._accessToken=e,this._httpClient._accessTokenFactory=void 0}r++}while(n.url&&r<100);if(100===r&&n.url)throw new Error("Negotiate redirection limit exceeded.");await this._createTransport(t,this._options.transport,n,e)}this.transport instanceof hn&&(this.features.inherentKeepAlive=!0),"Connecting"===this._connectionState&&(this._logger.log(_t.Debug,"The HttpConnection connected successfully."),this._connectionState="Connected")}catch(e){return this._logger.log(_t.Error,"Failed to start the connection: "+e),this._connectionState="Disconnected",this.transport=void 0,this._stopPromiseResolver(),Promise.reject(e)}}async _getNegotiationResponse(e){const t={},[n,r]=xt();t[n]=r;const o=this._resolveNegotiateUrl(e);this._logger.log(_t.Debug,`Sending negotiation request: ${o}.`);try{const e=await this._httpClient.post(o,{content:"",headers:{...t,...this._options.headers},timeout:this._options.timeout,withCredentials:this._options.withCredentials});if(200!==e.statusCode)return Promise.reject(new Error(`Unexpected status code returned from negotiate '${e.statusCode}'`));const n=JSON.parse(e.content);return(!n.negotiateVersion||n.negotiateVersion<1)&&(n.connectionToken=n.connectionId),n.useStatefulReconnect&&!0!==this._options._useStatefulReconnect?Promise.reject(new jt("Client didn't negotiate Stateful Reconnect but the server did.")):n}catch(e){let t="Failed to complete negotiation with the server: "+e;return e instanceof Bt&&404===e.statusCode&&(t+=" Either this is not a SignalR endpoint or there is a proxy blocking the connection."),this._logger.log(_t.Error,t),Promise.reject(new jt(t))}}_createConnectUrl(e,t){return t?e+(-1===e.indexOf("?")?"?":"&")+`id=${t}`:e}async _createTransport(e,t,n,r){let o=this._createConnectUrl(e,n.connectionToken);if(this._isITransport(t))return this._logger.log(_t.Debug,"Connection was provided an instance of ITransport, using that directly."),this.transport=t,await this._startTransport(o,r),void(this.connectionId=n.connectionId);const s=[],i=n.availableTransports||[];let a=n;for(const n of i){const i=this._resolveTransportOrError(n,t,r,!0===(null==a?void 0:a.useStatefulReconnect));if(i instanceof Error)s.push(`${n.transport} failed:`),s.push(i);else if(this._isITransport(i)){if(this.transport=i,!a){try{a=await this._getNegotiationResponse(e)}catch(e){return Promise.reject(e)}o=this._createConnectUrl(e,a.connectionToken)}try{return await this._startTransport(o,r),void(this.connectionId=a.connectionId)}catch(e){if(this._logger.log(_t.Error,`Failed to start the transport '${n.transport}': ${e}`),a=void 0,s.push(new Ht(`${n.transport} failed: ${e}`,an[n.transport])),"Connecting"!==this._connectionState){const e="Failed to select transport before stop() was called.";return this._logger.log(_t.Debug,e),Promise.reject(new $t(e))}}}}return s.length>0?Promise.reject(new Wt(`Unable to connect to the server with any of the available transports. ${s.join(" ")}`,s)):Promise.reject(new Error("None of the transports supported by the client are supported by the server."))}_constructTransport(e){switch(e){case an.WebSockets:if(!this._options.WebSocket)throw new Error("'WebSocket' is not supported in your environment.");return new un(this._httpClient,this._accessTokenFactory,this._logger,this._options.logMessageContent,this._options.WebSocket,this._options.headers||{});case an.ServerSentEvents:if(!this._options.EventSource)throw new Error("'EventSource' is not supported in your environment.");return new dn(this._httpClient,this._httpClient._accessToken,this._logger,this._options);case an.LongPolling:return new hn(this._httpClient,this._logger,this._options);default:throw new Error(`Unknown transport: ${e}.`)}}_startTransport(e,t){return this.transport.onreceive=this.onreceive,this.features.reconnect?this.transport.onclose=async n=>{let r=!1;if(this.features.reconnect){try{this.features.disconnected(),await this.transport.connect(e,t),await this.features.resend()}catch{r=!0}r&&this._stopConnection(n)}else this._stopConnection(n)}:this.transport.onclose=e=>this._stopConnection(e),this.transport.connect(e,t)}_resolveTransportOrError(e,t,n,r){const o=an[e.transport];if(null==o)return this._logger.log(_t.Debug,`Skipping transport '${e.transport}' because it is not supported by this client.`),new Error(`Skipping transport '${e.transport}' because it is not supported by this client.`);if(!function(e,t){return!e||0!=(t&e)}(t,o))return this._logger.log(_t.Debug,`Skipping transport '${an[o]}' because it was disabled by the client.`),new Ft(`'${an[o]}' is disabled by the client.`,o);if(!(e.transferFormats.map((e=>cn[e])).indexOf(n)>=0))return this._logger.log(_t.Debug,`Skipping transport '${an[o]}' because it does not support the requested transfer format '${cn[n]}'.`),new Error(`'${an[o]}' does not support ${cn[n]}.`);if(o===an.WebSockets&&!this._options.WebSocket||o===an.ServerSentEvents&&!this._options.EventSource)return this._logger.log(_t.Debug,`Skipping transport '${an[o]}' because it is not supported in your environment.'`),new Ot(`'${an[o]}' is not supported in your environment.`,o);this._logger.log(_t.Debug,`Selecting transport '${an[o]}'.`);try{return this.features.reconnect=o===an.WebSockets?r:void 0,this._constructTransport(o)}catch(e){return e}}_isITransport(e){return e&&"object"==typeof e&&"connect"in e}_stopConnection(e){if(this._logger.log(_t.Debug,`HttpConnection.stopConnection(${e}) called while in state ${this._connectionState}.`),this.transport=void 0,e=this._stopError||e,this._stopError=void 0,"Disconnected"!==this._connectionState){if("Connecting"===this._connectionState)throw this._logger.log(_t.Warning,`Call to HttpConnection.stopConnection(${e}) was ignored because the connection is still in the connecting state.`),new Error(`HttpConnection.stopConnection(${e}) was called while the connection is still in the connecting state.`);if("Disconnecting"===this._connectionState&&this._stopPromiseResolver(),e?this._logger.log(_t.Error,`Connection disconnected with error '${e}'.`):this._logger.log(_t.Information,"Connection disconnected."),this._sendQueue&&(this._sendQueue.stop().catch((e=>{this._logger.log(_t.Error,`TransportSendQueue.stop() threw error '${e}'.`)})),this._sendQueue=void 0),this.connectionId=void 0,this._connectionState="Disconnected",this._connectionStarted){this._connectionStarted=!1;try{this.onclose&&this.onclose(e)}catch(t){this._logger.log(_t.Error,`HttpConnection.onclose(${e}) threw error '${t}'.`)}}}else this._logger.log(_t.Debug,`Call to HttpConnection.stopConnection(${e}) was ignored because the connection is already in the disconnected state.`)}_resolveUrl(e){if(0===e.lastIndexOf("https://",0)||0===e.lastIndexOf("http://",0))return e;if(!Ct.isBrowser)throw new Error(`Cannot resolve '${e}'.`);const t=window.document.createElement("a");return t.href=e,this._logger.log(_t.Information,`Normalizing '${e}' to '${t.href}'.`),t.href}_resolveNegotiateUrl(e){const t=new URL(e);t.pathname.endsWith("/")?t.pathname+="negotiate":t.pathname+="/negotiate";const n=new URLSearchParams(t.searchParams);return n.has("negotiateVersion")||n.append("negotiateVersion",this._negotiateVersion.toString()),n.has("useStatefulReconnect")?"true"===n.get("useStatefulReconnect")&&(this._options._useStatefulReconnect=!0):!0===this._options._useStatefulReconnect&&n.append("useStatefulReconnect","true"),t.search=n.toString(),t.toString()}}class fn{constructor(e){this._transport=e,this._buffer=[],this._executing=!0,this._sendBufferedData=new gn,this._transportResult=new gn,this._sendLoopPromise=this._sendLoop()}send(e){return this._bufferData(e),this._transportResult||(this._transportResult=new gn),this._transportResult.promise}stop(){return this._executing=!1,this._sendBufferedData.resolve(),this._sendLoopPromise}_bufferData(e){if(this._buffer.length&&typeof this._buffer[0]!=typeof e)throw new Error(`Expected data to be of type ${typeof this._buffer} but was of type ${typeof e}`);this._buffer.push(e),this._sendBufferedData.resolve()}async _sendLoop(){for(;;){if(await this._sendBufferedData.promise,!this._executing){this._transportResult&&this._transportResult.reject("Connection stopped.");break}this._sendBufferedData=new gn;const e=this._transportResult;this._transportResult=void 0;const t="string"==typeof this._buffer[0]?this._buffer.join(""):fn._concatBuffers(this._buffer);this._buffer.length=0;try{await this._transport.send(t),e.resolve()}catch(t){e.reject(t)}}}static _concatBuffers(e){const t=e.map((e=>e.byteLength)).reduce(((e,t)=>e+t)),n=new Uint8Array(t);let r=0;for(const t of e)n.set(new Uint8Array(t),r),r+=t.byteLength;return n.buffer}}class gn{constructor(){this.promise=new Promise(((e,t)=>[this._resolver,this._rejecter]=[e,t]))}resolve(){this._resolver()}reject(e){this._rejecter(e)}}class mn{constructor(){this.name="json",this.version=2,this.transferFormat=cn.Text}parseMessages(e,t){if("string"!=typeof e)throw new Error("Invalid input for JSON hub protocol. Expected a string.");if(!e)return[];null===t&&(t=bt.instance);const n=wt.parse(e),r=[];for(const e of n){const n=JSON.parse(e);if("number"!=typeof n.type)throw new Error("Invalid payload.");switch(n.type){case zt.Invocation:this._isInvocationMessage(n);break;case zt.StreamItem:this._isStreamItemMessage(n);break;case zt.Completion:this._isCompletionMessage(n);break;case zt.Ping:case zt.Close:break;case zt.Ack:this._isAckMessage(n);break;case zt.Sequence:this._isSequenceMessage(n);break;default:t.log(_t.Information,"Unknown message type '"+n.type+"' ignored.");continue}r.push(n)}return r}writeMessage(e){return wt.write(JSON.stringify(e))}_isInvocationMessage(e){this._assertNotEmptyString(e.target,"Invalid payload for Invocation message."),void 0!==e.invocationId&&this._assertNotEmptyString(e.invocationId,"Invalid payload for Invocation message.")}_isStreamItemMessage(e){if(this._assertNotEmptyString(e.invocationId,"Invalid payload for StreamItem message."),void 0===e.item)throw new Error("Invalid payload for StreamItem message.")}_isCompletionMessage(e){if(e.result&&e.error)throw new Error("Invalid payload for Completion message.");!e.result&&e.error&&this._assertNotEmptyString(e.error,"Invalid payload for Completion message."),this._assertNotEmptyString(e.invocationId,"Invalid payload for Completion message.")}_isAckMessage(e){if("number"!=typeof e.sequenceId)throw new Error("Invalid SequenceId for Ack message.")}_isSequenceMessage(e){if("number"!=typeof e.sequenceId)throw new Error("Invalid SequenceId for Sequence message.")}_assertNotEmptyString(e,t){if("string"!=typeof e||""===e)throw new Error(t)}}const vn={trace:_t.Trace,debug:_t.Debug,info:_t.Information,information:_t.Information,warn:_t.Warning,warning:_t.Warning,error:_t.Error,critical:_t.Critical,none:_t.None};class yn{configureLogging(e){if(Et.isRequired(e,"logging"),function(e){return void 0!==e.log}(e))this.logger=e;else if("string"==typeof e){const t=function(e){const t=vn[e.toLowerCase()];if(void 0!==t)return t;throw new Error(`Unknown log level: ${e}`)}(e);this.logger=new Rt(t)}else this.logger=new Rt(e);return this}withUrl(e,t){return Et.isRequired(e,"url"),Et.isNotEmpty(e,"url"),this.url=e,this.httpConnectionOptions="object"==typeof t?{...this.httpConnectionOptions,...t}:{...this.httpConnectionOptions,transport:t},this}withHubProtocol(e){return Et.isRequired(e,"protocol"),this.protocol=e,this}withAutomaticReconnect(e){if(this.reconnectPolicy)throw new Error("A reconnectPolicy has already been set.");return e?Array.isArray(e)?this.reconnectPolicy=new Gt(e):this.reconnectPolicy=e:this.reconnectPolicy=new Gt,this}withServerTimeout(e){return Et.isRequired(e,"milliseconds"),this._serverTimeoutInMilliseconds=e,this}withKeepAliveInterval(e){return Et.isRequired(e,"milliseconds"),this._keepAliveIntervalInMilliseconds=e,this}withStatefulReconnect(e){return void 0===this.httpConnectionOptions&&(this.httpConnectionOptions={}),this.httpConnectionOptions._useStatefulReconnect=!0,this._statefulReconnectBufferSize=null==e?void 0:e.bufferSize,this}build(){const e=this.httpConnectionOptions||{};if(void 0===e.logger&&(e.logger=this.logger),!this.url)throw new Error("The 'HubConnectionBuilder.withUrl' method must be called before building the connection.");const t=new pn(this.url,e);return Xt.create(t,this.logger||bt.instance,this.protocol||new mn,this.reconnectPolicy,this._serverTimeoutInMilliseconds,this._keepAliveIntervalInMilliseconds,this._statefulReconnectBufferSize)}}var wn;!function(e){e[e.Default=0]="Default",e[e.Server=1]="Server",e[e.WebAssembly=2]="WebAssembly",e[e.WebView=3]="WebView"}(wn||(wn={}));var _n,bn,Sn,En=4294967295;function Cn(e,t,n){var r=Math.floor(n/4294967296),o=n;e.setUint32(t,r),e.setUint32(t+4,o)}function In(e,t){return 4294967296*e.getInt32(t)+e.getUint32(t+4)}var kn=("undefined"==typeof process||"never"!==(null===(_n=null===process||void 0===process?void 0:process.env)||void 0===_n?void 0:_n.TEXT_ENCODING))&&"undefined"!=typeof TextEncoder&&"undefined"!=typeof TextDecoder;function Tn(e){for(var t=e.length,n=0,r=0;r=55296&&o<=56319&&r65535&&(h-=65536,s.push(h>>>10&1023|55296),h=56320|1023&h),s.push(h)}else s.push(a);s.length>=4096&&(i+=String.fromCharCode.apply(String,s),s.length=0)}return s.length>0&&(i+=String.fromCharCode.apply(String,s)),i}var Pn,Un=kn?new TextDecoder:null,Nn=kn?"undefined"!=typeof process&&"force"!==(null===(Sn=null===process||void 0===process?void 0:process.env)||void 0===Sn?void 0:Sn.TEXT_DECODER)?200:0:En,Mn=function(e,t){this.type=e,this.data=t},Bn=(Pn=function(e,t){return Pn=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},Pn(e,t)},function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function n(){this.constructor=e}Pn(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}),Ln=function(e){function t(n){var r=e.call(this,n)||this,o=Object.create(t.prototype);return Object.setPrototypeOf(r,o),Object.defineProperty(r,"name",{configurable:!0,enumerable:!1,value:t.name}),r}return Bn(t,e),t}(Error),$n={type:-1,encode:function(e){var t,n,r,o;return e instanceof Date?function(e){var t,n=e.sec,r=e.nsec;if(n>=0&&r>=0&&n<=17179869183){if(0===r&&n<=4294967295){var o=new Uint8Array(4);return(t=new DataView(o.buffer)).setUint32(0,n),o}var s=n/4294967296,i=4294967295&n;return o=new Uint8Array(8),(t=new DataView(o.buffer)).setUint32(0,r<<2|3&s),t.setUint32(4,i),o}return o=new Uint8Array(12),(t=new DataView(o.buffer)).setUint32(0,r),Cn(t,4,n),o}((r=1e6*((t=e.getTime())-1e3*(n=Math.floor(t/1e3))),{sec:n+(o=Math.floor(r/1e9)),nsec:r-1e9*o})):null},decode:function(e){var t=function(e){var t=new DataView(e.buffer,e.byteOffset,e.byteLength);switch(e.byteLength){case 4:return{sec:t.getUint32(0),nsec:0};case 8:var n=t.getUint32(0);return{sec:4294967296*(3&n)+t.getUint32(4),nsec:n>>>2};case 12:return{sec:In(t,4),nsec:t.getUint32(0)};default:throw new Ln("Unrecognized data size for timestamp (expected 4, 8, or 12): ".concat(e.length))}}(e);return new Date(1e3*t.sec+t.nsec/1e6)}},On=function(){function e(){this.builtInEncoders=[],this.builtInDecoders=[],this.encoders=[],this.decoders=[],this.register($n)}return e.prototype.register=function(e){var t=e.type,n=e.encode,r=e.decode;if(t>=0)this.encoders[t]=n,this.decoders[t]=r;else{var o=1+t;this.builtInEncoders[o]=n,this.builtInDecoders[o]=r}},e.prototype.tryToEncode=function(e,t){for(var n=0;nthis.maxDepth)throw new Error("Too deep objects in depth ".concat(t));null==e?this.encodeNil():"boolean"==typeof e?this.encodeBoolean(e):"number"==typeof e?this.encodeNumber(e):"string"==typeof e?this.encodeString(e):this.encodeObject(e,t)},e.prototype.ensureBufferSizeToWrite=function(e){var t=this.pos+e;this.view.byteLength=0?e<128?this.writeU8(e):e<256?(this.writeU8(204),this.writeU8(e)):e<65536?(this.writeU8(205),this.writeU16(e)):e<4294967296?(this.writeU8(206),this.writeU32(e)):(this.writeU8(207),this.writeU64(e)):e>=-32?this.writeU8(224|e+32):e>=-128?(this.writeU8(208),this.writeI8(e)):e>=-32768?(this.writeU8(209),this.writeI16(e)):e>=-2147483648?(this.writeU8(210),this.writeI32(e)):(this.writeU8(211),this.writeI64(e)):this.forceFloat32?(this.writeU8(202),this.writeF32(e)):(this.writeU8(203),this.writeF64(e))},e.prototype.writeStringHeader=function(e){if(e<32)this.writeU8(160+e);else if(e<256)this.writeU8(217),this.writeU8(e);else if(e<65536)this.writeU8(218),this.writeU16(e);else{if(!(e<4294967296))throw new Error("Too long string: ".concat(e," bytes in UTF-8"));this.writeU8(219),this.writeU32(e)}},e.prototype.encodeString=function(e){if(e.length>Rn){var t=Tn(e);this.ensureBufferSizeToWrite(5+t),this.writeStringHeader(t),xn(e,this.bytes,this.pos),this.pos+=t}else t=Tn(e),this.ensureBufferSizeToWrite(5+t),this.writeStringHeader(t),function(e,t,n){for(var r=e.length,o=n,s=0;s>6&31|192;else{if(i>=55296&&i<=56319&&s>12&15|224,t[o++]=i>>6&63|128):(t[o++]=i>>18&7|240,t[o++]=i>>12&63|128,t[o++]=i>>6&63|128)}t[o++]=63&i|128}else t[o++]=i}}(e,this.bytes,this.pos),this.pos+=t},e.prototype.encodeObject=function(e,t){var n=this.extensionCodec.tryToEncode(e,this.context);if(null!=n)this.encodeExtension(n);else if(Array.isArray(e))this.encodeArray(e,t);else if(ArrayBuffer.isView(e))this.encodeBinary(e);else{if("object"!=typeof e)throw new Error("Unrecognized object: ".concat(Object.prototype.toString.apply(e)));this.encodeMap(e,t)}},e.prototype.encodeBinary=function(e){var t=e.byteLength;if(t<256)this.writeU8(196),this.writeU8(t);else if(t<65536)this.writeU8(197),this.writeU16(t);else{if(!(t<4294967296))throw new Error("Too large binary: ".concat(t));this.writeU8(198),this.writeU32(t)}var n=Fn(e);this.writeU8a(n)},e.prototype.encodeArray=function(e,t){var n=e.length;if(n<16)this.writeU8(144+n);else if(n<65536)this.writeU8(220),this.writeU16(n);else{if(!(n<4294967296))throw new Error("Too large array: ".concat(n));this.writeU8(221),this.writeU32(n)}for(var r=0,o=e;r0&&e<=this.maxKeyLength},e.prototype.find=function(e,t,n){e:for(var r=0,o=this.caches[n-1];r=this.maxLengthPerKey?n[Math.random()*n.length|0]=r:n.push(r)},e.prototype.decode=function(e,t,n){var r=this.find(e,t,n);if(null!=r)return this.hit++,r;this.miss++;var o=An(e,t,n),s=Uint8Array.prototype.slice.call(e,t,t+n);return this.store(s,o),o},e}(),zn=function(e,t){var n,r,o,s,i={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return s={next:a(0),throw:a(1),return:a(2)},"function"==typeof Symbol&&(s[Symbol.iterator]=function(){return this}),s;function a(s){return function(a){return function(s){if(n)throw new TypeError("Generator is already executing.");for(;i;)try{if(n=1,r&&(o=2&s[0]?r.return:s[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,s[1])).done)return o;switch(r=0,o&&(s=[2&s[0],o.value]),s[0]){case 0:case 1:o=s;break;case 4:return i.label++,{value:s[1],done:!1};case 5:i.label++,r=s[1],s=[0];continue;case 7:s=i.ops.pop(),i.trys.pop();continue;default:if(!((o=(o=i.trys).length>0&&o[o.length-1])||6!==s[0]&&2!==s[0])){i=0;continue}if(3===s[0]&&(!o||s[1]>o[0]&&s[1]=e},e.prototype.createExtraByteError=function(e){var t=this.view,n=this.pos;return new RangeError("Extra ".concat(t.byteLength-n," of ").concat(t.byteLength," byte(s) found at buffer[").concat(e,"]"))},e.prototype.decode=function(e){this.reinitializeState(),this.setBuffer(e);var t=this.doDecodeSync();if(this.hasRemaining(1))throw this.createExtraByteError(this.pos);return t},e.prototype.decodeMulti=function(e){return zn(this,(function(t){switch(t.label){case 0:this.reinitializeState(),this.setBuffer(e),t.label=1;case 1:return this.hasRemaining(1)?[4,this.doDecodeSync()]:[3,3];case 2:return t.sent(),[3,1];case 3:return[2]}}))},e.prototype.decodeAsync=function(e){var t,n,r,o,s,i,a;return s=this,void 0,a=function(){var s,i,a,c,l,h,d,u;return zn(this,(function(p){switch(p.label){case 0:s=!1,p.label=1;case 1:p.trys.push([1,6,7,12]),t=qn(e),p.label=2;case 2:return[4,t.next()];case 3:if((n=p.sent()).done)return[3,5];if(a=n.value,s)throw this.createExtraByteError(this.totalPos);this.appendBuffer(a);try{i=this.doDecodeSync(),s=!0}catch(e){if(!(e instanceof Xn))throw e}this.totalPos+=this.pos,p.label=4;case 4:return[3,2];case 5:return[3,12];case 6:return c=p.sent(),r={error:c},[3,12];case 7:return p.trys.push([7,,10,11]),n&&!n.done&&(o=t.return)?[4,o.call(t)]:[3,9];case 8:p.sent(),p.label=9;case 9:return[3,11];case 10:if(r)throw r.error;return[7];case 11:return[7];case 12:if(s){if(this.hasRemaining(1))throw this.createExtraByteError(this.totalPos);return[2,i]}throw h=(l=this).headByte,d=l.pos,u=l.totalPos,new RangeError("Insufficient data in parsing ".concat(jn(h)," at ").concat(u," (").concat(d," in the current buffer)"))}}))},new((i=void 0)||(i=Promise))((function(e,t){function n(e){try{o(a.next(e))}catch(e){t(e)}}function r(e){try{o(a.throw(e))}catch(e){t(e)}}function o(t){var o;t.done?e(t.value):(o=t.value,o instanceof i?o:new i((function(e){e(o)}))).then(n,r)}o((a=a.apply(s,[])).next())}))},e.prototype.decodeArrayStream=function(e){return this.decodeMultiAsync(e,!0)},e.prototype.decodeStream=function(e){return this.decodeMultiAsync(e,!1)},e.prototype.decodeMultiAsync=function(e,t){return function(n,r,o){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var s,i=function(){var n,r,o,s,i,a,c,l,h;return zn(this,(function(d){switch(d.label){case 0:n=t,r=-1,d.label=1;case 1:d.trys.push([1,13,14,19]),o=qn(e),d.label=2;case 2:return[4,Jn(o.next())];case 3:if((s=d.sent()).done)return[3,12];if(i=s.value,t&&0===r)throw this.createExtraByteError(this.totalPos);this.appendBuffer(i),n&&(r=this.readArraySize(),n=!1,this.complete()),d.label=4;case 4:d.trys.push([4,9,,10]),d.label=5;case 5:return[4,Jn(this.doDecodeSync())];case 6:return[4,d.sent()];case 7:return d.sent(),0==--r?[3,8]:[3,5];case 8:return[3,10];case 9:if(!((a=d.sent())instanceof Xn))throw a;return[3,10];case 10:this.totalPos+=this.pos,d.label=11;case 11:return[3,2];case 12:return[3,19];case 13:return c=d.sent(),l={error:c},[3,19];case 14:return d.trys.push([14,,17,18]),s&&!s.done&&(h=o.return)?[4,Jn(h.call(o))]:[3,16];case 15:d.sent(),d.label=16;case 16:return[3,18];case 17:if(l)throw l.error;return[7];case 18:return[7];case 19:return[2]}}))}.apply(n,r||[]),a=[];return s={},c("next"),c("throw"),c("return"),s[Symbol.asyncIterator]=function(){return this},s;function c(e){i[e]&&(s[e]=function(t){return new Promise((function(n,r){a.push([e,t,n,r])>1||l(e,t)}))})}function l(e,t){try{(n=i[e](t)).value instanceof Jn?Promise.resolve(n.value.v).then(h,d):u(a[0][2],n)}catch(e){u(a[0][3],e)}var n}function h(e){l("next",e)}function d(e){l("throw",e)}function u(e,t){e(t),a.shift(),a.length&&l(a[0][0],a[0][1])}}(this,arguments)},e.prototype.doDecodeSync=function(){e:for(;;){var e=this.readHeadByte(),t=void 0;if(e>=224)t=e-256;else if(e<192)if(e<128)t=e;else if(e<144){if(0!=(r=e-128)){this.pushMapState(r),this.complete();continue e}t={}}else if(e<160){if(0!=(r=e-144)){this.pushArrayState(r),this.complete();continue e}t=[]}else{var n=e-160;t=this.decodeUtf8String(n,0)}else if(192===e)t=null;else if(194===e)t=!1;else if(195===e)t=!0;else if(202===e)t=this.readF32();else if(203===e)t=this.readF64();else if(204===e)t=this.readU8();else if(205===e)t=this.readU16();else if(206===e)t=this.readU32();else if(207===e)t=this.readU64();else if(208===e)t=this.readI8();else if(209===e)t=this.readI16();else if(210===e)t=this.readI32();else if(211===e)t=this.readI64();else if(217===e)n=this.lookU8(),t=this.decodeUtf8String(n,1);else if(218===e)n=this.lookU16(),t=this.decodeUtf8String(n,2);else if(219===e)n=this.lookU32(),t=this.decodeUtf8String(n,4);else if(220===e){if(0!==(r=this.readU16())){this.pushArrayState(r),this.complete();continue e}t=[]}else if(221===e){if(0!==(r=this.readU32())){this.pushArrayState(r),this.complete();continue e}t=[]}else if(222===e){if(0!==(r=this.readU16())){this.pushMapState(r),this.complete();continue e}t={}}else if(223===e){if(0!==(r=this.readU32())){this.pushMapState(r),this.complete();continue e}t={}}else if(196===e){var r=this.lookU8();t=this.decodeBinary(r,1)}else if(197===e)r=this.lookU16(),t=this.decodeBinary(r,2);else if(198===e)r=this.lookU32(),t=this.decodeBinary(r,4);else if(212===e)t=this.decodeExtension(1,0);else if(213===e)t=this.decodeExtension(2,0);else if(214===e)t=this.decodeExtension(4,0);else if(215===e)t=this.decodeExtension(8,0);else if(216===e)t=this.decodeExtension(16,0);else if(199===e)r=this.lookU8(),t=this.decodeExtension(r,1);else if(200===e)r=this.lookU16(),t=this.decodeExtension(r,2);else{if(201!==e)throw new Ln("Unrecognized type byte: ".concat(jn(e)));r=this.lookU32(),t=this.decodeExtension(r,4)}this.complete();for(var o=this.stack;o.length>0;){var s=o[o.length-1];if(0===s.type){if(s.array[s.position]=t,s.position++,s.position!==s.size)continue e;o.pop(),t=s.array}else{if(1===s.type){if("string"!=(i=typeof t)&&"number"!==i)throw new Ln("The type of key must be string or number but "+typeof t);if("__proto__"===t)throw new Ln("The key __proto__ is not allowed");s.key=t,s.type=2;continue e}if(s.map[s.key]=t,s.readCount++,s.readCount!==s.size){s.key=null,s.type=1;continue e}o.pop(),t=s.map}}return t}var i},e.prototype.readHeadByte=function(){return-1===this.headByte&&(this.headByte=this.readU8()),this.headByte},e.prototype.complete=function(){this.headByte=-1},e.prototype.readArraySize=function(){var e=this.readHeadByte();switch(e){case 220:return this.readU16();case 221:return this.readU32();default:if(e<160)return e-144;throw new Ln("Unrecognized array type byte: ".concat(jn(e)))}},e.prototype.pushMapState=function(e){if(e>this.maxMapLength)throw new Ln("Max length exceeded: map length (".concat(e,") > maxMapLengthLength (").concat(this.maxMapLength,")"));this.stack.push({type:1,size:e,key:null,readCount:0,map:{}})},e.prototype.pushArrayState=function(e){if(e>this.maxArrayLength)throw new Ln("Max length exceeded: array length (".concat(e,") > maxArrayLength (").concat(this.maxArrayLength,")"));this.stack.push({type:0,size:e,array:new Array(e),position:0})},e.prototype.decodeUtf8String=function(e,t){var n;if(e>this.maxStrLength)throw new Ln("Max length exceeded: UTF-8 byte length (".concat(e,") > maxStrLength (").concat(this.maxStrLength,")"));if(this.bytes.byteLengthNn?function(e,t,n){var r=e.subarray(t,t+n);return Un.decode(r)}(this.bytes,o,e):An(this.bytes,o,e),this.pos+=t+e,r},e.prototype.stateIsMapKey=function(){return this.stack.length>0&&1===this.stack[this.stack.length-1].type},e.prototype.decodeBinary=function(e,t){if(e>this.maxBinLength)throw new Ln("Max length exceeded: bin length (".concat(e,") > maxBinLength (").concat(this.maxBinLength,")"));if(!this.hasRemaining(e+t))throw Yn;var n=this.pos+t,r=this.bytes.subarray(n,n+e);return this.pos+=t+e,r},e.prototype.decodeExtension=function(e,t){if(e>this.maxExtLength)throw new Ln("Max length exceeded: ext length (".concat(e,") > maxExtLength (").concat(this.maxExtLength,")"));var n=this.view.getInt8(this.pos+t),r=this.decodeBinary(e,t+1);return this.extensionCodec.decode(r,n,this.context)},e.prototype.lookU8=function(){return this.view.getUint8(this.pos)},e.prototype.lookU16=function(){return this.view.getUint16(this.pos)},e.prototype.lookU32=function(){return this.view.getUint32(this.pos)},e.prototype.readU8=function(){var e=this.view.getUint8(this.pos);return this.pos++,e},e.prototype.readI8=function(){var e=this.view.getInt8(this.pos);return this.pos++,e},e.prototype.readU16=function(){var e=this.view.getUint16(this.pos);return this.pos+=2,e},e.prototype.readI16=function(){var e=this.view.getInt16(this.pos);return this.pos+=2,e},e.prototype.readU32=function(){var e=this.view.getUint32(this.pos);return this.pos+=4,e},e.prototype.readI32=function(){var e=this.view.getInt32(this.pos);return this.pos+=4,e},e.prototype.readU64=function(){var e,t,n=(e=this.view,t=this.pos,4294967296*e.getUint32(t)+e.getUint32(t+4));return this.pos+=8,n},e.prototype.readI64=function(){var e=In(this.view,this.pos);return this.pos+=8,e},e.prototype.readF32=function(){var e=this.view.getFloat32(this.pos);return this.pos+=4,e},e.prototype.readF64=function(){var e=this.view.getFloat64(this.pos);return this.pos+=8,e},e}();class Zn{static write(e){let t=e.byteLength||e.length;const n=[];do{let e=127&t;t>>=7,t>0&&(e|=128),n.push(e)}while(t>0);t=e.byteLength||e.length;const r=new Uint8Array(n.length+t);return r.set(n,0),r.set(e,n.length),r.buffer}static parse(e){const t=[],n=new Uint8Array(e),r=[0,7,14,21,28];for(let o=0;o7)throw new Error("Messages bigger than 2GB are not supported.");if(!(n.byteLength>=o+i+a))throw new Error("Incomplete message.");t.push(n.slice?n.slice(o+i,o+i+a):n.subarray(o+i,o+i+a)),o=o+i+a}return t}}const er=new Uint8Array([145,zt.Ping]);class tr{constructor(e){this.name="messagepack",this.version=2,this.transferFormat=cn.Binary,this._errorResult=1,this._voidResult=2,this._nonVoidResult=3,e=e||{},this._encoder=new Hn(e.extensionCodec,e.context,e.maxDepth,e.initialBufferSize,e.sortKeys,e.forceFloat32,e.ignoreUndefined,e.forceIntegerToFloat),this._decoder=new Qn(e.extensionCodec,e.context,e.maxStrLength,e.maxBinLength,e.maxArrayLength,e.maxMapLength,e.maxExtLength)}parseMessages(e,t){if(!(n=e)||"undefined"==typeof ArrayBuffer||!(n instanceof ArrayBuffer||n.constructor&&"ArrayBuffer"===n.constructor.name))throw new Error("Invalid input for MessagePack hub protocol. Expected an ArrayBuffer.");var n;null===t&&(t=bt.instance);const r=Zn.parse(e),o=[];for(const e of r){const n=this._parseMessage(e,t);n&&o.push(n)}return o}writeMessage(e){switch(e.type){case zt.Invocation:return this._writeInvocation(e);case zt.StreamInvocation:return this._writeStreamInvocation(e);case zt.StreamItem:return this._writeStreamItem(e);case zt.Completion:return this._writeCompletion(e);case zt.Ping:return Zn.write(er);case zt.CancelInvocation:return this._writeCancelInvocation(e);case zt.Close:return this._writeClose();case zt.Ack:return this._writeAck(e);case zt.Sequence:return this._writeSequence(e);default:throw new Error("Invalid message type.")}}_parseMessage(e,t){if(0===e.length)throw new Error("Invalid payload.");const n=this._decoder.decode(e);if(0===n.length||!(n instanceof Array))throw new Error("Invalid payload.");const r=n[0];switch(r){case zt.Invocation:return this._createInvocationMessage(this._readHeaders(n),n);case zt.StreamItem:return this._createStreamItemMessage(this._readHeaders(n),n);case zt.Completion:return this._createCompletionMessage(this._readHeaders(n),n);case zt.Ping:return this._createPingMessage(n);case zt.Close:return this._createCloseMessage(n);case zt.Ack:return this._createAckMessage(n);case zt.Sequence:return this._createSequenceMessage(n);default:return t.log(_t.Information,"Unknown message type '"+r+"' ignored."),null}}_createCloseMessage(e){if(e.length<2)throw new Error("Invalid payload for Close message.");return{allowReconnect:e.length>=3?e[2]:void 0,error:e[1],type:zt.Close}}_createPingMessage(e){if(e.length<1)throw new Error("Invalid payload for Ping message.");return{type:zt.Ping}}_createInvocationMessage(e,t){if(t.length<5)throw new Error("Invalid payload for Invocation message.");const n=t[2];return n?{arguments:t[4],headers:e,invocationId:n,streamIds:[],target:t[3],type:zt.Invocation}:{arguments:t[4],headers:e,streamIds:[],target:t[3],type:zt.Invocation}}_createStreamItemMessage(e,t){if(t.length<4)throw new Error("Invalid payload for StreamItem message.");return{headers:e,invocationId:t[2],item:t[3],type:zt.StreamItem}}_createCompletionMessage(e,t){if(t.length<4)throw new Error("Invalid payload for Completion message.");const n=t[3];if(n!==this._voidResult&&t.length<5)throw new Error("Invalid payload for Completion message.");let r,o;switch(n){case this._errorResult:r=t[4];break;case this._nonVoidResult:o=t[4]}return{error:r,headers:e,invocationId:t[2],result:o,type:zt.Completion}}_createAckMessage(e){if(e.length<1)throw new Error("Invalid payload for Ack message.");return{sequenceId:e[1],type:zt.Ack}}_createSequenceMessage(e){if(e.length<1)throw new Error("Invalid payload for Sequence message.");return{sequenceId:e[1],type:zt.Sequence}}_writeInvocation(e){let t;return t=e.streamIds?this._encoder.encode([zt.Invocation,e.headers||{},e.invocationId||null,e.target,e.arguments,e.streamIds]):this._encoder.encode([zt.Invocation,e.headers||{},e.invocationId||null,e.target,e.arguments]),Zn.write(t.slice())}_writeStreamInvocation(e){let t;return t=e.streamIds?this._encoder.encode([zt.StreamInvocation,e.headers||{},e.invocationId,e.target,e.arguments,e.streamIds]):this._encoder.encode([zt.StreamInvocation,e.headers||{},e.invocationId,e.target,e.arguments]),Zn.write(t.slice())}_writeStreamItem(e){const t=this._encoder.encode([zt.StreamItem,e.headers||{},e.invocationId,e.item]);return Zn.write(t.slice())}_writeCompletion(e){const t=e.error?this._errorResult:void 0!==e.result?this._nonVoidResult:this._voidResult;let n;switch(t){case this._errorResult:n=this._encoder.encode([zt.Completion,e.headers||{},e.invocationId,t,e.error]);break;case this._voidResult:n=this._encoder.encode([zt.Completion,e.headers||{},e.invocationId,t]);break;case this._nonVoidResult:n=this._encoder.encode([zt.Completion,e.headers||{},e.invocationId,t,e.result])}return Zn.write(n.slice())}_writeCancelInvocation(e){const t=this._encoder.encode([zt.CancelInvocation,e.headers||{},e.invocationId]);return Zn.write(t.slice())}_writeClose(){const e=this._encoder.encode([zt.Close,null]);return Zn.write(e.slice())}_writeAck(e){const t=this._encoder.encode([zt.Ack,e.sequenceId]);return Zn.write(t.slice())}_writeSequence(e){const t=this._encoder.encode([zt.Sequence,e.sequenceId]);return Zn.write(t.slice())}_readHeaders(e){const t=e[1];if("object"!=typeof t)throw new Error("Invalid headers.");return t}}const nr="function"==typeof TextDecoder?new TextDecoder("utf-8"):null,rr=nr?nr.decode.bind(nr):function(e){let t=0;const n=e.length,r=[],o=[];for(;t65535&&(o-=65536,r.push(o>>>10&1023|55296),o=56320|1023&o),r.push(o)}r.length>1024&&(o.push(String.fromCharCode.apply(null,r)),r.length=0)}return o.push(String.fromCharCode.apply(null,r)),o.join("")},or=Math.pow(2,32),sr=Math.pow(2,21)-1;function ir(e,t){return e[t]|e[t+1]<<8|e[t+2]<<16|e[t+3]<<24}function ar(e,t){return e[t]+(e[t+1]<<8)+(e[t+2]<<16)+(e[t+3]<<24>>>0)}function cr(e,t){const n=ar(e,t+4);if(n>sr)throw new Error(`Cannot read uint64 with high order part ${n}, because the result would exceed Number.MAX_SAFE_INTEGER.`);return n*or+ar(e,t)}class lr{constructor(e){this.batchData=e;const t=new pr(e);this.arrayRangeReader=new fr(e),this.arrayBuilderSegmentReader=new gr(e),this.diffReader=new hr(e),this.editReader=new dr(e,t),this.frameReader=new ur(e,t)}updatedComponents(){return ir(this.batchData,this.batchData.length-20)}referenceFrames(){return ir(this.batchData,this.batchData.length-16)}disposedComponentIds(){return ir(this.batchData,this.batchData.length-12)}disposedEventHandlerIds(){return ir(this.batchData,this.batchData.length-8)}updatedComponentsEntry(e,t){const n=e+4*t;return ir(this.batchData,n)}referenceFramesEntry(e,t){return e+20*t}disposedComponentIdsEntry(e,t){const n=e+4*t;return ir(this.batchData,n)}disposedEventHandlerIdsEntry(e,t){const n=e+8*t;return cr(this.batchData,n)}}class hr{constructor(e){this.batchDataUint8=e}componentId(e){return ir(this.batchDataUint8,e)}edits(e){return e+4}editsEntry(e,t){return e+16*t}}class dr{constructor(e,t){this.batchDataUint8=e,this.stringReader=t}editType(e){return ir(this.batchDataUint8,e)}siblingIndex(e){return ir(this.batchDataUint8,e+4)}newTreeIndex(e){return ir(this.batchDataUint8,e+8)}moveToSiblingIndex(e){return ir(this.batchDataUint8,e+8)}removedAttributeName(e){const t=ir(this.batchDataUint8,e+12);return this.stringReader.readString(t)}}class ur{constructor(e,t){this.batchDataUint8=e,this.stringReader=t}frameType(e){return ir(this.batchDataUint8,e)}subtreeLength(e){return ir(this.batchDataUint8,e+4)}elementReferenceCaptureId(e){const t=ir(this.batchDataUint8,e+4);return this.stringReader.readString(t)}componentId(e){return ir(this.batchDataUint8,e+8)}elementName(e){const t=ir(this.batchDataUint8,e+8);return this.stringReader.readString(t)}textContent(e){const t=ir(this.batchDataUint8,e+4);return this.stringReader.readString(t)}markupContent(e){const t=ir(this.batchDataUint8,e+4);return this.stringReader.readString(t)}attributeName(e){const t=ir(this.batchDataUint8,e+4);return this.stringReader.readString(t)}attributeValue(e){const t=ir(this.batchDataUint8,e+8);return this.stringReader.readString(t)}attributeEventHandlerId(e){return cr(this.batchDataUint8,e+12)}}class pr{constructor(e){this.batchDataUint8=e,this.stringTableStartIndex=ir(e,e.length-4)}readString(e){if(-1===e)return null;{const n=ir(this.batchDataUint8,this.stringTableStartIndex+4*e),r=function(e,t){let n=0,r=0;for(let o=0;o<4;o++){const s=e[t+o];if(n|=(127&s)<this.nextBatchId)return this.fatalError?(this.logger.log(ot.Debug,`Received a new batch ${e} but errored out on a previous batch ${this.nextBatchId-1}`),void await n.send("OnRenderCompleted",this.nextBatchId-1,this.fatalError.toString())):void this.logger.log(ot.Debug,`Waiting for batch ${this.nextBatchId}. Batch ${e} not processed.`);try{this.nextBatchId++,this.logger.log(ot.Debug,`Applying batch ${e}.`),function(e,t){const n=ge[e];if(!n)throw new Error(`There is no browser renderer with ID ${e}.`);const r=t.arrayRangeReader,o=t.updatedComponents(),s=r.values(o),i=r.count(o),a=t.referenceFrames(),c=r.values(a),l=t.diffReader;for(let e=0;e{e.onclick=function(e){location.reload(),e.preventDefault()}})),document.querySelectorAll("#blazor-error-ui .dismiss").forEach((e=>{e.onclick=function(e){const t=document.querySelector("#blazor-error-ui");t&&(t.style.display="none"),e.preventDefault()}})))}class Ir{constructor(t,n,r,o){this._firstUpdate=!0,this._renderingFailed=!1,this._disposed=!1,this._circuitId=void 0,this._applicationState=n,this._componentManager=t,this._options=r,this._logger=o,this._renderQueue=new mr(this._logger),this._dispatcher=e.attachDispatcher(this)}start(){if(this.isDisposedOrDisposing())throw new Error("Cannot start a disposed circuit.");return this._startPromise||(this._startPromise=this.startCore()),this._startPromise}updateRootComponents(e){var t,n;return this._firstUpdate?(this._firstUpdate=!1,null===(t=this._connection)||void 0===t?void 0:t.send("UpdateRootComponents",e,this._applicationState)):null===(n=this._connection)||void 0===n?void 0:n.send("UpdateRootComponents",e,"")}async startCore(){if(this._connection=await this.startConnection(),this._connection.state!==qt.Connected)return!1;const e=JSON.stringify(this._componentManager.initialComponents.map((e=>{return t=e,{...t,start:void 0,end:void 0};var t})));if(this._circuitId=await this._connection.invoke("StartCircuit",Ue.getBaseURI(),Ue.getLocationHref(),e,this._applicationState||""),!this._circuitId)return!1;for(const e of this._options.circuitHandlers)e.onCircuitOpened&&e.onCircuitOpened();return!0}async startConnection(){var e,t;const n=new tr;n.name="blazorpack";const r=(new yn).withUrl("_blazor").withHubProtocol(n);this._options.configureSignalR(r);const o=r.build();o.on("JS.AttachComponent",((e,t)=>function(e,t,n,r){let o=ge[e];o||(o=new de(e),ge[e]=o),o.attachRootComponentToLogicalElement(n,t,!1)}(wn.Server,this.resolveElement(t),e))),o.on("JS.BeginInvokeJS",this._dispatcher.beginInvokeJSFromDotNet.bind(this._dispatcher)),o.on("JS.EndInvokeDotNet",this._dispatcher.endInvokeDotNetFromJS.bind(this._dispatcher)),o.on("JS.ReceiveByteArray",this._dispatcher.receiveByteArray.bind(this._dispatcher)),o.on("JS.BeginTransmitStream",(e=>{const t=new ReadableStream({start:t=>{o.stream("SendDotNetStreamToJS",e).subscribe({next:e=>t.enqueue(e),complete:()=>t.close(),error:e=>t.error(e)})}});this._dispatcher.supplyDotNetStream(e,t)})),o.on("JS.RenderBatch",(async(e,t)=>{var n,r;this._logger.log(_t.Debug,`Received render batch with id ${e} and ${t.byteLength} bytes.`),await this._renderQueue.processBatch(e,t,this._connection),null===(r=(n=this._componentManager).onAfterRenderBatch)||void 0===r||r.call(n,wn.Server)})),o.on("JS.EndUpdateRootComponents",(e=>{var t,n;null===(n=(t=this._componentManager).onAfterUpdateRootComponents)||void 0===n||n.call(t,e)})),o.on("JS.EndLocationChanging",rt._internal.navigationManager.endLocationChanging),o.onclose((e=>{this._interopMethodsForReconnection=function(e){const t=S.get(e);if(!t)throw new Error(`Interop methods are not registered for renderer ${e}`);return S.delete(e),t}(wn.Server),this._disposed||this._renderingFailed||this._options.reconnectionHandler.onConnectionDown(this._options.reconnectionOptions,e)})),o.on("JS.Error",(e=>{this._renderingFailed=!0,this.unhandledError(e),Cr()}));try{await o.start()}catch(e){if(this.unhandledError(e),"FailedToNegotiateWithServerError"===e.errorType)throw e;Cr(),e.innerErrors&&(e.innerErrors.some((e=>"UnsupportedTransportError"===e.errorType&&e.transport===an.WebSockets))?this._logger.log(_t.Error,"Unable to connect, please ensure you are using an updated browser that supports WebSockets."):e.innerErrors.some((e=>"FailedToStartTransportError"===e.errorType&&e.transport===an.WebSockets))?this._logger.log(_t.Error,"Unable to connect, please ensure WebSockets are available. A VPN or proxy may be blocking the connection."):e.innerErrors.some((e=>"DisabledTransportError"===e.errorType&&e.transport===an.LongPolling))&&this._logger.log(_t.Error,"Unable to initiate a SignalR connection to the server. This might be because the server is not configured to support WebSockets. For additional details, visit https://aka.ms/blazor-server-websockets-error."))}return(null===(t=null===(e=o.connection)||void 0===e?void 0:e.features)||void 0===t?void 0:t.inherentKeepAlive)&&this._logger.log(_t.Warning,"Failed to connect via WebSockets, using the Long Polling fallback transport. This may be due to a VPN or proxy blocking the connection. To troubleshoot this, visit https://aka.ms/blazor-server-using-fallback-long-polling."),o}async disconnect(){var e;await(null===(e=this._connection)||void 0===e?void 0:e.stop())}async reconnect(){if(!this._circuitId)throw new Error("Circuit host not initialized.");return this._connection.state===qt.Connected||(this._connection=await this.startConnection(),this._interopMethodsForReconnection&&(I(wn.Server,this._interopMethodsForReconnection),this._interopMethodsForReconnection=void 0),!!await this._connection.invoke("ConnectCircuit",this._circuitId)&&(this._options.reconnectionHandler.onConnectionUp(),!0))}beginInvokeDotNetFromJS(e,t,n,r,o){this.throwIfDispatchingWhenDisposed(),this._connection.send("BeginInvokeDotNetFromJS",e?e.toString():null,t,n,r||0,o)}endInvokeJSFromDotNet(e,t,n){this.throwIfDispatchingWhenDisposed(),this._connection.send("EndInvokeJSFromDotNet",e,t,n)}sendByteArray(e,t){this.throwIfDispatchingWhenDisposed(),this._connection.send("ReceiveByteArray",e,t)}throwIfDispatchingWhenDisposed(){if(this._disposed)throw new Error("The circuit associated with this dispatcher is no longer available.")}sendLocationChanged(e,t,n){return this._connection.send("OnLocationChanged",e,t,n)}sendLocationChanging(e,t,n,r){return this._connection.send("OnLocationChanging",e,t,n,r)}sendJsDataStream(e,t,n){return function(e,t,n,r){setTimeout((async()=>{let o=5,s=(new Date).valueOf();try{const i=t instanceof Blob?t.size:t.byteLength;let a=0,c=0;for(;a1)await e.send("ReceiveJSDataChunk",n,c,h,null);else{if(!await e.invoke("ReceiveJSDataChunk",n,c,h,null))break;const t=(new Date).valueOf(),r=t-s;s=t,o=Math.max(1,Math.round(500/Math.max(1,r)))}a+=l,c++}}catch(t){await e.send("ReceiveJSDataChunk",n,-1,null,t.toString())}}),0)}(this._connection,e,t,n)}resolveElement(e){const t=function(e){const t=f.get(e);if(t)return f.delete(e),t}(e);if(t)return O(t,!0);const n=Number.parseInt(e);if(!Number.isNaN(n))return function(e){const{start:t,end:n}=e,r=t[$];if(r){if(r!==e)throw new Error("The start component comment was already associated with another component descriptor.");return t}const o=t.parentNode;if(!o)throw new Error(`Comment not connected to the DOM ${t.textContent}`);const s=O(o,!0),i=K(s);t[L]=s,t[$]=e;const a=O(t);if(n){const e=K(a),r=Array.prototype.indexOf.call(i,a)+1;let o=null;for(;o!==n;){const n=i.splice(r,1)[0];if(!n)throw new Error("Could not find the end component comment in the parent logical node list");n[L]=t,e.push(n),o=n}}return a}(this._componentManager.resolveRootComponent(n));throw new Error(`Invalid sequence number or identifier '${e}'.`)}getRootComponentManager(){return this._componentManager}unhandledError(e){this._logger.log(_t.Error,e),this.disconnect()}getDisconnectFormData(){const e=new FormData,t=this._circuitId;return e.append("circuitId",t),e}didRenderingFail(){return this._renderingFailed}isDisposedOrDisposing(){return void 0!==this._disposePromise}sendDisconnectBeacon(){if(this._disposed)return;const e=this.getDisconnectFormData();this._disposed=navigator.sendBeacon("_blazor/disconnect",e)}dispose(){return this._disposePromise||(this._disposePromise=this.disposeCore()),this._disposePromise}async disposeCore(){var e;if(!this._startPromise)return void(this._disposed=!0);await this._startPromise,this._disposed=!0,null===(e=this._connection)||void 0===e||e.stop();const t=this.getDisconnectFormData();fetch("http://github.com/_blazor/disconnect",{method:"POST",body:t});for(const e of this._options.circuitHandlers)e.onCircuitClosed&&e.onCircuitClosed()}}class kr{constructor(e,t,n,r){this.maxRetries=t,this.document=n,this.logger=r,this.modal=this.document.createElement("div"),this.modal.id=e,this.maxRetries=t,this.modal.style.cssText=["position: fixed","top: 0","right: 0","bottom: 0","left: 0","z-index: 1050","display: none","overflow: hidden","background-color: #fff","opacity: 0.8","text-align: center","font-weight: bold","transition: visibility 0s linear 500ms"].join(";"),this.message=this.document.createElement("h5"),this.message.style.cssText="margin-top: 20px",this.button=this.document.createElement("button"),this.button.style.cssText="margin:5px auto 5px",this.button.textContent="Retry";const o=this.document.createElement("a");o.addEventListener("click",(()=>location.reload())),o.textContent="reload",this.reloadParagraph=this.document.createElement("p"),this.reloadParagraph.textContent="Alternatively, ",this.reloadParagraph.appendChild(o),this.modal.appendChild(this.message),this.modal.appendChild(this.button),this.modal.appendChild(this.reloadParagraph),this.loader=this.getLoader(),this.message.after(this.loader),this.button.addEventListener("click",(async()=>{this.show();try{await rt.reconnect()||this.rejected()}catch(e){this.logger.log(ot.Error,e),this.failed()}}))}show(){this.document.contains(this.modal)||this.document.body.appendChild(this.modal),this.modal.style.display="block",this.loader.style.display="inline-block",this.button.style.display="none",this.reloadParagraph.style.display="none",this.message.textContent="Attempting to reconnect to the server...",this.modal.style.visibility="hidden",setTimeout((()=>{this.modal.style.visibility="visible"}),0)}update(e){this.message.textContent=`Attempting to reconnect to the server: ${e} of ${this.maxRetries}`}hide(){this.modal.style.display="none"}failed(){this.button.style.display="block",this.reloadParagraph.style.display="none",this.loader.style.display="none";const e=this.document.createTextNode("Reconnection failed. Try "),t=this.document.createElement("a");t.textContent="reloading",t.setAttribute("href",""),t.addEventListener("click",(()=>location.reload()));const n=this.document.createTextNode(" the page if you're unable to reconnect.");this.message.replaceChildren(e,t,n)}rejected(){this.button.style.display="none",this.reloadParagraph.style.display="none",this.loader.style.display="none";const e=this.document.createTextNode("Could not reconnect to the server. "),t=this.document.createElement("a");t.textContent="Reload",t.setAttribute("href",""),t.addEventListener("click",(()=>location.reload()));const n=this.document.createTextNode(" the page to restore functionality.");this.message.replaceChildren(e,t,n)}getLoader(){const e=this.document.createElement("div");return e.style.cssText=["border: 0.3em solid #f3f3f3","border-top: 0.3em solid #3498db","border-radius: 50%","width: 2em","height: 2em","display: inline-block"].join(";"),e.animate([{transform:"rotate(0deg)"},{transform:"rotate(360deg)"}],{duration:2e3,iterations:1/0}),e}}class Tr{constructor(e,t,n){this.dialog=e,this.maxRetries=t,this.document=n,this.document=n;const r=this.document.getElementById(Tr.MaxRetriesId);r&&(r.innerText=this.maxRetries.toString())}show(){this.removeClasses(),this.dialog.classList.add(Tr.ShowClassName)}update(e){const t=this.document.getElementById(Tr.CurrentAttemptId);t&&(t.innerText=e.toString())}hide(){this.removeClasses(),this.dialog.classList.add(Tr.HideClassName)}failed(){this.removeClasses(),this.dialog.classList.add(Tr.FailedClassName)}rejected(){this.removeClasses(),this.dialog.classList.add(Tr.RejectedClassName)}removeClasses(){this.dialog.classList.remove(Tr.ShowClassName,Tr.HideClassName,Tr.FailedClassName,Tr.RejectedClassName)}}Tr.ShowClassName="components-reconnect-show",Tr.HideClassName="components-reconnect-hide",Tr.FailedClassName="components-reconnect-failed",Tr.RejectedClassName="components-reconnect-rejected",Tr.MaxRetriesId="components-reconnect-max-retries",Tr.CurrentAttemptId="components-reconnect-current-attempt";class Dr{constructor(e,t,n){this._currentReconnectionProcess=null,this._logger=e,this._reconnectionDisplay=t,this._reconnectCallback=n||rt.reconnect}onConnectionDown(e,t){if(!this._reconnectionDisplay){const t=document.getElementById(e.dialogId);this._reconnectionDisplay=t?new Tr(t,e.maxRetries,document):new kr(e.dialogId,e.maxRetries,document,this._logger)}this._currentReconnectionProcess||(this._currentReconnectionProcess=new Rr(e,this._logger,this._reconnectCallback,this._reconnectionDisplay))}onConnectionUp(){this._currentReconnectionProcess&&(this._currentReconnectionProcess.dispose(),this._currentReconnectionProcess=null)}}class Rr{constructor(e,t,n,r){this.logger=t,this.reconnectCallback=n,this.isDisposed=!1,this.reconnectDisplay=r,this.reconnectDisplay.show(),this.attemptPeriodicReconnection(e)}dispose(){this.isDisposed=!0,this.reconnectDisplay.hide()}async attemptPeriodicReconnection(e){for(let t=0;tRr.MaximumFirstRetryInterval?Rr.MaximumFirstRetryInterval:e.retryIntervalMilliseconds;if(await this.delay(n),this.isDisposed)break;try{return await this.reconnectCallback()?void 0:void this.reconnectDisplay.rejected()}catch(e){this.logger.log(ot.Error,e)}}this.reconnectDisplay.failed()}delay(e){return new Promise((t=>setTimeout(t,e)))}}Rr.MaximumFirstRetryInterval=3e3;class xr{constructor(e=!0,t,n,r=0){this.singleRuntime=e,this.logger=t,this.webRendererId=r,this.afterStartedCallbacks=[],n&&this.afterStartedCallbacks.push(...n)}async importInitializersAsync(e,t){await Promise.all(e.map((e=>async function(e,n){const r=function(e){const t=document.baseURI;return t.endsWith("/")?`${t}${e}`:`${t}/${e}`}(n),o=await import(r);if(void 0!==o){if(e.singleRuntime){const{beforeStart:n,afterStarted:r,beforeWebAssemblyStart:i,afterWebAssemblyStarted:a,beforeServerStart:c,afterServerStarted:l}=o;let h=n;e.webRendererId===wn.Server&&c&&(h=c),e.webRendererId===wn.WebAssembly&&i&&(h=i);let d=r;return e.webRendererId===wn.Server&&l&&(d=l),e.webRendererId===wn.WebAssembly&&a&&(d=a),s(e,h,d,t)}return function(e,t,n){var o;const i=n[0],{beforeStart:a,afterStarted:c,beforeWebStart:l,afterWebStarted:h,beforeWebAssemblyStart:d,afterWebAssemblyStarted:u,beforeServerStart:p,afterServerStarted:f}=t,g=!(l||h||d||u||p||f||!a&&!c),m=g&&i.enableClassicInitializers;if(g&&!i.enableClassicInitializers)null===(o=e.logger)||void 0===o||o.log(ot.Warning,`Initializer '${r}' will be ignored because multiple runtimes are available. use 'before(web|webAssembly|server)Start' and 'after(web|webAssembly|server)Started?' instead.)`);else if(m)return s(e,a,c,n);if(function(e){e.webAssembly?e.webAssembly.initializers||(e.webAssembly.initializers={beforeStart:[],afterStarted:[]}):e.webAssembly={initializers:{beforeStart:[],afterStarted:[]}},e.circuit?e.circuit.initializers||(e.circuit.initializers={beforeStart:[],afterStarted:[]}):e.circuit={initializers:{beforeStart:[],afterStarted:[]}}}(i),d&&i.webAssembly.initializers.beforeStart.push(d),u&&i.webAssembly.initializers.afterStarted.push(u),p&&i.circuit.initializers.beforeStart.push(p),f&&i.circuit.initializers.afterStarted.push(f),h&&e.afterStartedCallbacks.push(h),l)return l(i)}(e,o,t)}function s(e,t,n,r){if(n&&e.afterStartedCallbacks.push(n),t)return t(...r)}}(this,e))))}async invokeAfterStartedCallbacks(e){const t=function(e){var t;return null===(t=C.get(e))||void 0===t?void 0:t[1]}(this.webRendererId);t&&await t,await Promise.all(this.afterStartedCallbacks.map((t=>t(e))))}}function Ar(e){if(void 0!==Sr)throw new Error("Blazor Server has already started.");return Sr=new Promise(Pr.bind(null,e)),Sr}async function Pr(e,t,n){await vr;const r=await async function(e){if(e.initializers)return await Promise.all(e.initializers.beforeStart.map((t=>t(e)))),new xr(!1,void 0,e.initializers.afterStarted,wn.Server);const t=await fetch("http://github.com/_blazor/initializers",{method:"GET",credentials:"include",cache:"no-cache"}),n=await t.json(),r=new xr(!0,void 0,void 0,wn.Server);return await r.importInitializersAsync(n,[e]),r}(_r);var o;if(o=document,yr=ht(o,lt)||"",br=new ct(_r.logLevel),wr=new Ir(e,yr,_r,br),br.log(ot.Information,"Starting up Blazor server-side application."),rt.reconnect=async()=>!(wr.didRenderingFail()||!await wr.reconnect()&&(br.log(ot.Information,"Reconnection attempt to the circuit was rejected by the server. This may indicate that the associated state is no longer available on the server."),1)),rt.defaultReconnectionHandler=new Dr(br),_r.reconnectionHandler=_r.reconnectionHandler||rt.defaultReconnectionHandler,rt._internal.navigationManager.listenForNavigationEvents(wn.Server,((e,t,n)=>wr.sendLocationChanged(e,t,n)),((e,t,n,r)=>wr.sendLocationChanging(e,t,n,r))),rt._internal.forceCloseConnection=()=>wr.disconnect(),rt._internal.sendJSDataStream=(e,t,n)=>wr.sendJsDataStream(e,t,n),!await wr.start())return br.log(ot.Error,"Failed to start the circuit."),void t();const s=()=>{wr.sendDisconnectBeacon()};rt.disconnect=s,window.addEventListener("unload",s,{capture:!1,once:!0}),br.log(ot.Information,"Blazor server-side application started."),r.invokeAfterStartedCallbacks(rt),t()}class Ur{constructor(e){this.initialComponents=e}resolveRootComponent(e){return this.initialComponents[e]}}class Nr{constructor(){this._eventListeners=new Map}static create(e){const t=new Nr;return e.addEventListener=t.addEventListener.bind(t),e.removeEventListener=t.removeEventListener.bind(t),t}addEventListener(e,t){let n=this._eventListeners.get(e);n||(n=new Set,this._eventListeners.set(e,n)),n.add(t)}removeEventListener(e,t){var n;null===(n=this._eventListeners.get(e))||void 0===n||n.delete(t)}dispatchEvent(e,t){const n=this._eventListeners.get(e);if(!n)return;const r={...t,type:e};for(const e of n)e(r)}}let Mr=!1;function Br(e){if(Mr)throw new Error("Blazor has already started.");Mr=!0;const t=st(e);!function(e){if(_r)throw new Error("Circuit options have already been configured.");if(_r)throw new Error("WebAssembly options have already been configured.");vr=async function(e){const t=await e;_r=st(t)}(e)}(Promise.resolve(t||{})),Nr.create(rt);const n=function(e){return dt(e,"server").sort(((e,t)=>e.sequence-t.sequence))}(document);return Ar(new Ur(n))}rt.start=Br,window.DotNet=e,document&&document.currentScript&&"false"!==document.currentScript.getAttribute("autostart")&&Br()})()})(); \ No newline at end of file diff --git a/src/Components/Web.JS/dist/Release/blazor.web.js b/src/Components/Web.JS/dist/Release/blazor.web.js index 5a638ce83025..f61bd122dfe8 100644 --- a/src/Components/Web.JS/dist/Release/blazor.web.js +++ b/src/Components/Web.JS/dist/Release/blazor.web.js @@ -1 +1 @@ -(()=>{var e={778:()=>{},77:()=>{},203:()=>{},200:()=>{},628:()=>{},321:()=>{}},t={};function n(o){var r=t[o];if(void 0!==r)return r.exports;var i=t[o]={exports:{}};return e[o](i,i.exports,n),i.exports}n.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),(()=>{"use strict";var e,t,o;!function(e){const t=[],n="__jsObjectId",o="__dotNetObject",r="__byte[]",i="__dotNetStream",s="__jsStreamReferenceLength";let a,c;class l{constructor(e){this._jsObject=e,this._cachedFunctions=new Map}findFunction(e){const t=this._cachedFunctions.get(e);if(t)return t;let n,o=this._jsObject;if(e.split(".").forEach((t=>{if(!(t in o))throw new Error(`Could not find '${e}' ('${t}' was undefined).`);n=o,o=o[t]})),o instanceof Function)return o=o.bind(n),this._cachedFunctions.set(e,o),o;throw new Error(`The value '${e}' is not a function.`)}getWrappedObject(){return this._jsObject}}const h={0:new l(window)};h[0]._cachedFunctions.set("import",(e=>("string"==typeof e&&e.startsWith("./")&&(e=new URL(e.substr(2),document.baseURI).toString()),import(e))));let d,u=1;function p(e){t.push(e)}function f(e){if(e&&"object"==typeof e){h[u]=new l(e);const t={[n]:u};return u++,t}throw new Error(`Cannot create a JSObjectReference from the value '${e}'.`)}function g(e){let t=-1;if(e instanceof ArrayBuffer&&(e=new Uint8Array(e)),e instanceof Blob)t=e.size;else{if(!(e.buffer instanceof ArrayBuffer))throw new Error("Supplied value is not a typed array or blob.");if(void 0===e.byteLength)throw new Error(`Cannot create a JSStreamReference from the value '${e}' as it doesn't have a byteLength.`);t=e.byteLength}const o={[s]:t};try{const t=f(e);o[n]=t[n]}catch(t){throw new Error(`Cannot create a JSStreamReference from the value '${e}'.`)}return o}function m(e,n){c=e;const o=n?JSON.parse(n,((e,n)=>t.reduce(((t,n)=>n(e,t)),n))):null;return c=void 0,o}function v(){if(void 0===a)throw new Error("No call dispatcher has been set.");if(null===a)throw new Error("There are multiple .NET runtimes present, so a default dispatcher could not be resolved. Use DotNetObject to invoke .NET instance methods.");return a}e.attachDispatcher=function(e){const t=new y(e);return void 0===a?a=t:a&&(a=null),t},e.attachReviver=p,e.invokeMethod=function(e,t,...n){return v().invokeDotNetStaticMethod(e,t,...n)},e.invokeMethodAsync=function(e,t,...n){return v().invokeDotNetStaticMethodAsync(e,t,...n)},e.createJSObjectReference=f,e.createJSStreamReference=g,e.disposeJSObjectReference=function(e){const t=e&&e[n];"number"==typeof t&&_(t)},function(e){e[e.Default=0]="Default",e[e.JSObjectReference=1]="JSObjectReference",e[e.JSStreamReference=2]="JSStreamReference",e[e.JSVoidResult=3]="JSVoidResult"}(d=e.JSCallResultType||(e.JSCallResultType={}));class y{constructor(e){this._dotNetCallDispatcher=e,this._byteArraysToBeRevived=new Map,this._pendingDotNetToJSStreams=new Map,this._pendingAsyncCalls={},this._nextAsyncCallId=1}getDotNetCallDispatcher(){return this._dotNetCallDispatcher}invokeJSFromDotNet(e,t,n,o){const r=m(this,t),i=I(b(e,o)(...r||[]),n);return null==i?null:T(this,i)}beginInvokeJSFromDotNet(e,t,n,o,r){const i=new Promise((e=>{const o=m(this,n);e(b(t,r)(...o||[]))}));e&&i.then((t=>T(this,[e,!0,I(t,o)]))).then((t=>this._dotNetCallDispatcher.endInvokeJSFromDotNet(e,!0,t)),(t=>this._dotNetCallDispatcher.endInvokeJSFromDotNet(e,!1,JSON.stringify([e,!1,w(t)]))))}endInvokeDotNetFromJS(e,t,n){const o=t?m(this,n):new Error(n);this.completePendingCall(parseInt(e,10),t,o)}invokeDotNetStaticMethod(e,t,...n){return this.invokeDotNetMethod(e,t,null,n)}invokeDotNetStaticMethodAsync(e,t,...n){return this.invokeDotNetMethodAsync(e,t,null,n)}invokeDotNetMethod(e,t,n,o){if(this._dotNetCallDispatcher.invokeDotNetFromJS){const r=T(this,o),i=this._dotNetCallDispatcher.invokeDotNetFromJS(e,t,n,r);return i?m(this,i):null}throw new Error("The current dispatcher does not support synchronous calls from JS to .NET. Use invokeDotNetMethodAsync instead.")}invokeDotNetMethodAsync(e,t,n,o){if(e&&n)throw new Error(`For instance method calls, assemblyName should be null. Received '${e}'.`);const r=this._nextAsyncCallId++,i=new Promise(((e,t)=>{this._pendingAsyncCalls[r]={resolve:e,reject:t}}));try{const i=T(this,o);this._dotNetCallDispatcher.beginInvokeDotNetFromJS(r,e,t,n,i)}catch(e){this.completePendingCall(r,!1,e)}return i}receiveByteArray(e,t){this._byteArraysToBeRevived.set(e,t)}processByteArray(e){const t=this._byteArraysToBeRevived.get(e);return t?(this._byteArraysToBeRevived.delete(e),t):null}supplyDotNetStream(e,t){if(this._pendingDotNetToJSStreams.has(e)){const n=this._pendingDotNetToJSStreams.get(e);this._pendingDotNetToJSStreams.delete(e),n.resolve(t)}else{const n=new E;n.resolve(t),this._pendingDotNetToJSStreams.set(e,n)}}getDotNetStreamPromise(e){let t;if(this._pendingDotNetToJSStreams.has(e))t=this._pendingDotNetToJSStreams.get(e).streamPromise,this._pendingDotNetToJSStreams.delete(e);else{const n=new E;this._pendingDotNetToJSStreams.set(e,n),t=n.streamPromise}return t}completePendingCall(e,t,n){if(!this._pendingAsyncCalls.hasOwnProperty(e))throw new Error(`There is no pending async call with ID ${e}.`);const o=this._pendingAsyncCalls[e];delete this._pendingAsyncCalls[e],t?o.resolve(n):o.reject(n)}}function w(e){return e instanceof Error?`${e.message}\n${e.stack}`:e?e.toString():"null"}function b(e,t){const n=h[t];if(n)return n.findFunction(e);throw new Error(`JS object instance with ID ${t} does not exist (has it been disposed?).`)}function _(e){delete h[e]}e.findJSFunction=b,e.disposeJSObjectReferenceById=_;class S{constructor(e,t){this._id=e,this._callDispatcher=t}invokeMethod(e,...t){return this._callDispatcher.invokeDotNetMethod(null,e,this._id,t)}invokeMethodAsync(e,...t){return this._callDispatcher.invokeDotNetMethodAsync(null,e,this._id,t)}dispose(){this._callDispatcher.invokeDotNetMethodAsync(null,"__Dispose",this._id,null).catch((e=>console.error(e)))}serializeAsArg(){return{[o]:this._id}}}e.DotNetObject=S,p((function(e,t){if(t&&"object"==typeof t){if(t.hasOwnProperty(o))return new S(t[o],c);if(t.hasOwnProperty(n)){const e=t[n],o=h[e];if(o)return o.getWrappedObject();throw new Error(`JS object instance with Id '${e}' does not exist. It may have been disposed.`)}if(t.hasOwnProperty(r)){const e=t[r],n=c.processByteArray(e);if(void 0===n)throw new Error(`Byte array index '${e}' does not exist.`);return n}if(t.hasOwnProperty(i)){const e=t[i],n=c.getDotNetStreamPromise(e);return new C(n)}}return t}));class C{constructor(e){this._streamPromise=e}stream(){return this._streamPromise}async arrayBuffer(){return new Response(await this.stream()).arrayBuffer()}}class E{constructor(){this.streamPromise=new Promise(((e,t)=>{this.resolve=e,this.reject=t}))}}function I(e,t){switch(t){case d.Default:return e;case d.JSObjectReference:return f(e);case d.JSStreamReference:return g(e);case d.JSVoidResult:return null;default:throw new Error(`Invalid JS call result type '${t}'.`)}}let k=0;function T(e,t){k=0,c=e;const n=JSON.stringify(t,R);return c=void 0,n}function R(e,t){if(t instanceof S)return t.serializeAsArg();if(t instanceof Uint8Array){c.getDotNetCallDispatcher().sendByteArray(k,t);const e={[r]:k};return k++,e}return t}}(e||(e={})),function(e){e[e.prependFrame=1]="prependFrame",e[e.removeFrame=2]="removeFrame",e[e.setAttribute=3]="setAttribute",e[e.removeAttribute=4]="removeAttribute",e[e.updateText=5]="updateText",e[e.stepIn=6]="stepIn",e[e.stepOut=7]="stepOut",e[e.updateMarkup=8]="updateMarkup",e[e.permutationListEntry=9]="permutationListEntry",e[e.permutationListEnd=10]="permutationListEnd"}(t||(t={})),function(e){e[e.element=1]="element",e[e.text=2]="text",e[e.attribute=3]="attribute",e[e.component=4]="component",e[e.region=5]="region",e[e.elementReferenceCapture=6]="elementReferenceCapture",e[e.markup=8]="markup",e[e.namedEvent=10]="namedEvent"}(o||(o={}));class r{constructor(e,t){this.componentId=e,this.fieldValue=t}static fromEvent(e,t){const n=t.target;if(n instanceof Element){const t=function(e){return e instanceof HTMLInputElement?e.type&&"checkbox"===e.type.toLowerCase()?{value:e.checked}:{value:e.value}:e instanceof HTMLSelectElement||e instanceof HTMLTextAreaElement?{value:e.value}:null}(n);if(t)return new r(e,t.value)}return null}}const i=new Map,s=new Map,a=[];function c(e){return i.get(e)}function l(e){const t=i.get(e);return(null==t?void 0:t.browserEventName)||e}function h(e,t){e.forEach((e=>i.set(e,t)))}function d(e){const t=[];for(let n=0;ne.selected)).map((e=>e.value))}}{const e=function(e){return!!e&&"INPUT"===e.tagName&&"checkbox"===e.getAttribute("type")}(t);return{value:e?!!t.checked:t.value}}}}),h(["copy","cut","paste"],{createEventArgs:e=>({type:e.type})}),h(["drag","dragend","dragenter","dragleave","dragover","dragstart","drop"],{createEventArgs:e=>{return{...u(t=e),dataTransfer:t.dataTransfer?{dropEffect:t.dataTransfer.dropEffect,effectAllowed:t.dataTransfer.effectAllowed,files:Array.from(t.dataTransfer.files).map((e=>e.name)),items:Array.from(t.dataTransfer.items).map((e=>({kind:e.kind,type:e.type}))),types:t.dataTransfer.types}:null};var t}}),h(["focus","blur","focusin","focusout"],{createEventArgs:e=>({type:e.type})}),h(["keydown","keyup","keypress"],{createEventArgs:e=>{return{key:(t=e).key,code:t.code,location:t.location,repeat:t.repeat,ctrlKey:t.ctrlKey,shiftKey:t.shiftKey,altKey:t.altKey,metaKey:t.metaKey,type:t.type};var t}}),h(["contextmenu","click","mouseover","mouseout","mousemove","mousedown","mouseup","mouseleave","mouseenter","dblclick"],{createEventArgs:e=>u(e)}),h(["error"],{createEventArgs:e=>{return{message:(t=e).message,filename:t.filename,lineno:t.lineno,colno:t.colno,type:t.type};var t}}),h(["loadstart","timeout","abort","load","loadend","progress"],{createEventArgs:e=>{return{lengthComputable:(t=e).lengthComputable,loaded:t.loaded,total:t.total,type:t.type};var t}}),h(["touchcancel","touchend","touchmove","touchenter","touchleave","touchstart"],{createEventArgs:e=>{return{detail:(t=e).detail,touches:d(t.touches),targetTouches:d(t.targetTouches),changedTouches:d(t.changedTouches),ctrlKey:t.ctrlKey,shiftKey:t.shiftKey,altKey:t.altKey,metaKey:t.metaKey,type:t.type};var t}}),h(["gotpointercapture","lostpointercapture","pointercancel","pointerdown","pointerenter","pointerleave","pointermove","pointerout","pointerover","pointerup"],{createEventArgs:e=>{return{...u(t=e),pointerId:t.pointerId,width:t.width,height:t.height,pressure:t.pressure,tiltX:t.tiltX,tiltY:t.tiltY,pointerType:t.pointerType,isPrimary:t.isPrimary};var t}}),h(["wheel","mousewheel"],{createEventArgs:e=>{return{...u(t=e),deltaX:t.deltaX,deltaY:t.deltaY,deltaZ:t.deltaZ,deltaMode:t.deltaMode};var t}}),h(["cancel","close","toggle"],{createEventArgs:()=>({})});const p=["date","datetime-local","month","time","week"],f=new Map;let g,m,v=0;const y={async add(e,t,n){if(!n)throw new Error("initialParameters must be an object, even if empty.");const o="__bl-dynamic-root:"+(++v).toString();f.set(o,e);const r=await S().invokeMethodAsync("AddRootComponent",t,o),i=new _(r,m[t]);return await i.setParameters(n),i}};function w(e){const t=f.get(e);if(t)return f.delete(e),t}class b{invoke(e){return this._callback(e)}setCallback(t){this._selfJSObjectReference||(this._selfJSObjectReference=e.createJSObjectReference(this)),this._callback=t}getJSObjectReference(){return this._selfJSObjectReference}dispose(){this._selfJSObjectReference&&e.disposeJSObjectReference(this._selfJSObjectReference)}}class _{constructor(e,t){this._jsEventCallbackWrappers=new Map,this._componentId=e;for(const e of t)"eventcallback"===e.type&&this._jsEventCallbackWrappers.set(e.name.toLowerCase(),new b)}setParameters(e){const t={},n=Object.entries(e||{}),o=n.length;for(const[e,o]of n){const n=this._jsEventCallbackWrappers.get(e.toLowerCase());n&&o?(n.setCallback(o),t[e]=n.getJSObjectReference()):t[e]=o}return S().invokeMethodAsync("SetRootComponentParameters",this._componentId,o,t)}async dispose(){if(null!==this._componentId){await S().invokeMethodAsync("RemoveRootComponent",this._componentId),this._componentId=null;for(const e of this._jsEventCallbackWrappers.values())e.dispose()}}}function S(){if(!g)throw new Error("Dynamic root components have not been enabled in this application.");return g}const C=new Map,E=[],I=new Map;function k(t,n,o,r){var i,s;if(C.has(t))throw new Error(`Interop methods are already registered for renderer ${t}`);C.set(t,n),o&&r&&Object.keys(o).length>0&&function(t,n,o){if(g)throw new Error("Dynamic root components have already been enabled.");g=t,m=n;for(const[t,r]of Object.entries(o)){const o=e.findJSFunction(t,0);for(const e of r)o(e,n[e])}}(A(t),o,r),null===(s=null===(i=I.get(t))||void 0===i?void 0:i[0])||void 0===s||s.call(i),function(e){for(const t of E)t(e)}(t)}function T(e){return C.has(e)}function R(e,t,n){return D(e,t.eventHandlerId,(()=>A(e).invokeMethodAsync("DispatchEventAsync",t,n)))}function A(e){const t=C.get(e);if(!t)throw new Error(`No interop methods are registered for renderer ${e}`);return t}let D=(e,t,n)=>n();const x=B(["abort","blur","cancel","canplay","canplaythrough","change","close","cuechange","durationchange","emptied","ended","error","focus","load","loadeddata","loadedmetadata","loadend","loadstart","mouseenter","mouseleave","pointerenter","pointerleave","pause","play","playing","progress","ratechange","reset","scroll","seeked","seeking","stalled","submit","suspend","timeupdate","toggle","unload","volumechange","waiting","DOMNodeInsertedIntoDocument","DOMNodeRemovedFromDocument"]),N={submit:!0},P=B(["click","dblclick","mousedown","mousemove","mouseup"]);class M{constructor(e){this.browserRendererId=e,this.afterClickCallbacks=[];const t=++M.nextEventDelegatorId;this.eventsCollectionKey=`_blazorEvents_${t}`,this.eventInfoStore=new U(this.onGlobalEvent.bind(this))}setListener(e,t,n,o){const r=this.getEventHandlerInfosForElement(e,!0),i=r.getHandler(t);if(i)this.eventInfoStore.update(i.eventHandlerId,n);else{const i={element:e,eventName:t,eventHandlerId:n,renderingComponentId:o};this.eventInfoStore.add(i),r.setHandler(t,i)}}getHandler(e){return this.eventInfoStore.get(e)}removeListener(e){const t=this.eventInfoStore.remove(e);if(t){const e=t.element,n=this.getEventHandlerInfosForElement(e,!1);n&&n.removeHandler(t.eventName)}}notifyAfterClick(e){this.afterClickCallbacks.push(e),this.eventInfoStore.addGlobalListener("click")}setStopPropagation(e,t,n){this.getEventHandlerInfosForElement(e,!0).stopPropagation(t,n)}setPreventDefault(e,t,n){this.getEventHandlerInfosForElement(e,!0).preventDefault(t,n)}onGlobalEvent(e){if(!(e.target instanceof Element))return;this.dispatchGlobalEventToAllElements(e.type,e);const t=(n=e.type,s.get(n));var n;t&&t.forEach((t=>this.dispatchGlobalEventToAllElements(t,e))),"click"===e.type&&this.afterClickCallbacks.forEach((t=>t(e)))}dispatchGlobalEventToAllElements(e,t){const n=t.composedPath();let o=n.shift(),i=null,s=!1;const a=Object.prototype.hasOwnProperty.call(x,e);let l=!1;for(;o;){const u=o,p=this.getEventHandlerInfosForElement(u,!1);if(p){const n=p.getHandler(e);if(n&&(h=u,d=t.type,!((h instanceof HTMLButtonElement||h instanceof HTMLInputElement||h instanceof HTMLTextAreaElement||h instanceof HTMLSelectElement)&&Object.prototype.hasOwnProperty.call(P,d)&&h.disabled))){if(!s){const n=c(e);i=(null==n?void 0:n.createEventArgs)?n.createEventArgs(t):{},s=!0}Object.prototype.hasOwnProperty.call(N,t.type)&&t.preventDefault(),R(this.browserRendererId,{eventHandlerId:n.eventHandlerId,eventName:e,eventFieldInfo:r.fromEvent(n.renderingComponentId,t)},i)}p.stopPropagation(e)&&(l=!0),p.preventDefault(e)&&t.preventDefault()}o=a||l?void 0:n.shift()}var h,d}getEventHandlerInfosForElement(e,t){return Object.prototype.hasOwnProperty.call(e,this.eventsCollectionKey)?e[this.eventsCollectionKey]:t?e[this.eventsCollectionKey]=new L:null}}M.nextEventDelegatorId=0;class U{constructor(e){this.globalListener=e,this.infosByEventHandlerId={},this.countByEventName={},a.push(this.handleEventNameAliasAdded.bind(this))}add(e){if(this.infosByEventHandlerId[e.eventHandlerId])throw new Error(`Event ${e.eventHandlerId} is already tracked`);this.infosByEventHandlerId[e.eventHandlerId]=e,this.addGlobalListener(e.eventName)}get(e){return this.infosByEventHandlerId[e]}addGlobalListener(e){if(e=l(e),Object.prototype.hasOwnProperty.call(this.countByEventName,e))this.countByEventName[e]++;else{this.countByEventName[e]=1;const t=Object.prototype.hasOwnProperty.call(x,e);document.addEventListener(e,this.globalListener,t)}}update(e,t){if(Object.prototype.hasOwnProperty.call(this.infosByEventHandlerId,t))throw new Error(`Event ${t} is already tracked`);const n=this.infosByEventHandlerId[e];delete this.infosByEventHandlerId[e],n.eventHandlerId=t,this.infosByEventHandlerId[t]=n}remove(e){const t=this.infosByEventHandlerId[e];if(t){delete this.infosByEventHandlerId[e];const n=l(t.eventName);0==--this.countByEventName[n]&&(delete this.countByEventName[n],document.removeEventListener(n,this.globalListener))}return t}handleEventNameAliasAdded(e,t){if(Object.prototype.hasOwnProperty.call(this.countByEventName,e)){const n=this.countByEventName[e];delete this.countByEventName[e],document.removeEventListener(e,this.globalListener),this.addGlobalListener(t),this.countByEventName[t]+=n-1}}}class L{constructor(){this.handlers={},this.preventDefaultFlags=null,this.stopPropagationFlags=null}getHandler(e){return Object.prototype.hasOwnProperty.call(this.handlers,e)?this.handlers[e]:null}setHandler(e,t){this.handlers[e]=t}removeHandler(e){delete this.handlers[e]}preventDefault(e,t){return void 0!==t&&(this.preventDefaultFlags=this.preventDefaultFlags||{},this.preventDefaultFlags[e]=t),!!this.preventDefaultFlags&&this.preventDefaultFlags[e]}stopPropagation(e,t){return void 0!==t&&(this.stopPropagationFlags=this.stopPropagationFlags||{},this.stopPropagationFlags[e]=t),!!this.stopPropagationFlags&&this.stopPropagationFlags[e]}}function B(e){const t={};return e.forEach((e=>{t[e]=!0})),t}const O=Symbol(),F=Symbol(),$=Symbol();function H(e){const{start:t,end:n}=e,o=t[$];if(o){if(o!==e)throw new Error("The start component comment was already associated with another component descriptor.");return t}const r=t.parentNode;if(!r)throw new Error(`Comment not connected to the DOM ${t.textContent}`);const i=W(r,!0),s=Y(i);t[F]=i,t[$]=e;const a=W(t);if(n){const e=Y(a),o=Array.prototype.indexOf.call(s,a)+1;let r=null;for(;r!==n;){const n=s.splice(o,1)[0];if(!n)throw new Error("Could not find the end component comment in the parent logical node list");n[F]=t,e.push(n),r=n}}return a}function W(e,t){if(O in e)return e;const n=[];if(e.childNodes.length>0){if(!t)throw new Error("New logical elements must start empty, or allowExistingContents must be true");e.childNodes.forEach((t=>{const o=W(t,!0);o[F]=e,n.push(o)}))}return e[O]=n,e}function j(e){const t=Y(e);for(;t.length;)J(e,0)}function z(e,t){const n=document.createComment("!");return q(n,e,t),n}function q(e,t,n){const o=e;let r=e;if(e instanceof Comment){const t=Y(o);if((null==t?void 0:t.length)>0){const t=oe(o),n=new Range;n.setStartBefore(e),n.setEndAfter(t),r=n.extractContents()}}const i=K(o);if(i){const e=Y(i),t=Array.prototype.indexOf.call(e,o);e.splice(t,1),delete o[F]}const s=Y(t);if(n0;)J(n,0)}const o=n;o.parentNode.removeChild(o)}function K(e){return e[F]||null}function V(e,t){return Y(e)[t]}function X(e){return e[$]||null}function G(e){const t=te(e);return"http://www.w3.org/2000/svg"===t.namespaceURI&&"foreignObject"!==t.tagName}function Y(e){return e[O]}function Q(e){const t=Y(K(e));return t[Array.prototype.indexOf.call(t,e)+1]||null}function Z(e){return O in e}function ee(e,t){const n=Y(e);t.forEach((e=>{e.moveRangeStart=n[e.fromSiblingIndex],e.moveRangeEnd=oe(e.moveRangeStart)})),t.forEach((t=>{const o=document.createComment("marker");t.moveToBeforeMarker=o;const r=n[t.toSiblingIndex+1];r?r.parentNode.insertBefore(o,r):ne(o,e)})),t.forEach((e=>{const t=e.moveToBeforeMarker,n=t.parentNode,o=e.moveRangeStart,r=e.moveRangeEnd;let i=o;for(;i;){const e=i.nextSibling;if(n.insertBefore(i,t),i===r)break;i=e}n.removeChild(t)})),t.forEach((e=>{n[e.toSiblingIndex]=e.moveRangeStart}))}function te(e){if(e instanceof Element||e instanceof DocumentFragment)return e;if(e instanceof Comment)return e.parentNode;throw new Error("Not a valid logical element")}function ne(e,t){if(t instanceof Element||t instanceof DocumentFragment)t.appendChild(e);else{if(!(t instanceof Comment))throw new Error(`Cannot append node because the parent is not a valid logical element. Parent: ${t}`);{const n=Q(t);n?n.parentNode.insertBefore(e,n):ne(e,K(t))}}}function oe(e){if(e instanceof Element||e instanceof DocumentFragment)return e;const t=Q(e);if(t)return t.previousSibling;{const t=K(e);return t instanceof Element||t instanceof DocumentFragment?t.lastChild:oe(t)}}function re(e){return`_bl_${e}`}const ie="__internalId";e.attachReviver(((e,t)=>t&&"object"==typeof t&&Object.prototype.hasOwnProperty.call(t,ie)&&"string"==typeof t[ie]?function(e){const t=`[${re(e)}]`;return document.querySelector(t)}(t[ie]):t));const se="_blazorDeferredValue";function ae(e){e instanceof HTMLOptionElement?de(e):se in e&&he(e,e[se])}function ce(e){return"select-multiple"===e.type}function le(e,t){e.value=t||""}function he(e,t){e instanceof HTMLSelectElement?ce(e)?function(e,t){t||(t=[]);for(let n=0;n{Oe()&&Ne(e,(e=>{Xe(e,!0,!1)}))}))}getRootComponentCount(){return this.rootComponentIds.size}attachRootComponentToLogicalElement(e,t,n){if(we(t))throw new Error(`Root component '${e}' could not be attached because its target element is already associated with a root component`);n&&(t=z(t,Y(t).length)),ye(t,!0),this.attachComponentToElement(e,t),this.rootComponentIds.add(e),fe.add(t)}updateComponent(e,t,n,o){var r;const i=this.childComponentLocations[t];if(!i)throw new Error(`No element is currently associated with component ${t}`);fe.delete(i)&&(j(i),i instanceof Comment&&(i.textContent="!"));const s=null===(r=te(i))||void 0===r?void 0:r.getRootNode(),a=s&&s.activeElement;this.applyEdits(e,t,i,0,n,o),a instanceof HTMLElement&&s&&s.activeElement!==a&&a.focus()}disposeComponent(e){if(this.rootComponentIds.delete(e)){const t=this.childComponentLocations[e];ye(t,!1),!0===t[me]?fe.add(t):j(t)}delete this.childComponentLocations[e]}disposeEventHandler(e){this.eventDelegator.removeListener(e)}attachComponentToElement(e,t){this.childComponentLocations[e]=t}applyEdits(e,n,o,r,i,s){let a,c=0,l=r;const h=e.arrayBuilderSegmentReader,d=e.editReader,u=e.frameReader,p=h.values(i),f=h.offset(i),g=f+h.count(i);for(let i=f;i{const t=document.createElement("script");t.textContent=e.textContent,e.getAttributeNames().forEach((n=>{t.setAttribute(n,e.getAttribute(n))})),e.parentNode.replaceChild(t,e)})),ue.content));var s;let a=0;for(;i.firstChild;)q(i.firstChild,r,a++)}applyAttribute(e,t,n,o){const r=e.frameReader,i=r.attributeName(o),s=r.attributeEventHandlerId(o);if(s){const e=Se(i);return void this.eventDelegator.setListener(n,e,s,t)}const a=r.attributeValue(o);this.setOrRemoveAttributeOrProperty(n,i,a)}insertFrameRange(e,t,n,o,r,i,s){const a=o;for(let a=i;a{et(t,e)})},enableNavigationInterception:function(e){if(void 0!==Ee&&Ee!==e)throw new Error("Only one interactive runtime may enable navigation interception at a time.");Ee=e},setHasLocationChangingListeners:function(e,t){const n=je.get(e);if(!n)throw new Error(`Renderer with ID '${e}' is not listening for navigation events`);n.hasLocationChangingEventListeners=t},endLocationChanging:function(e,t){qe&&e===We&&(qe(t),qe=null)},navigateTo:function(e,t){Ve(e,t,!0)},refresh:function(e){!e&&Me()?Ue(location.href,!0):location.reload()},getBaseURI:()=>document.baseURI,getLocationHref:()=>location.href,scrollToElement:Ke};function Ke(e){const t=document.getElementById(e);return!!t&&(t.scrollIntoView(),!0)}function Ve(e,t,n=!1){const o=Le(e),r=ot();if(t.forceLoad||!Pe(o)||"serverside-fullpageload"===r)!function(e,t){if(location.href===e){const t=e+"?";history.replaceState(null,"",t),location.replace(e)}else t?location.replace(e):location.href=e}(e,t.replaceHistoryEntry);else if("clientside-router"===r)Xe(o,!1,t.replaceHistoryEntry,t.historyEntryState,n);else{if("serverside-enhanced"!==r)throw new Error(`Unsupported page load mechanism: ${r}`);Ue(o,t.replaceHistoryEntry)}}async function Xe(e,t,n,o=void 0,r=!1){if(Qe(),function(e){const t=e.indexOf("#");return t>-1&&location.href.replace(location.hash,"")===e.substring(0,t)}(e))return void function(e,t,n){Ge(e,t,n);const o=e.indexOf("#");o!==e.length-1&&Ke(e.substring(o+1))}(e,n,o);const i=nt();(r||!(null==i?void 0:i.hasLocationChangingEventListeners)||await Ze(e,o,t,i))&&(Re=!0,Ge(e,n,o),await et(t))}function Ge(e,t,n=void 0){t?history.replaceState({userState:n,_index:He},"",e):(He++,history.pushState({userState:n,_index:He},"",e))}function Ye(e){return new Promise((t=>{const n=ze;ze=()=>{ze=n,t()},history.go(e)}))}function Qe(){qe&&(qe(!1),qe=null)}function Ze(e,t,n,o){return new Promise((r=>{Qe(),We++,qe=r,o.locationChanging(We,e,t,n)}))}async function et(e,t){const n=null!=t?t:location.href;await Promise.all(Array.from(je,(async([t,o])=>{var r;T(t)&&await o.locationChanged(n,null===(r=history.state)||void 0===r?void 0:r.userState,e)})))}async function tt(e){var t,n;ze&&"serverside-enhanced"!==ot()&&await ze(e),He=null!==(n=null===(t=history.state)||void 0===t?void 0:t._index)&&void 0!==n?n:0}function nt(){const e=Fe();if(void 0!==e)return je.get(e)}function ot(){return Oe()?"clientside-router":Me()?"serverside-enhanced":window.Blazor._internal.isBlazorWeb?"serverside-fullpageload":"clientside-router"}const rt={focus:function(e,t){if(e instanceof HTMLElement)e.focus({preventScroll:t});else{if(!(e instanceof SVGElement))throw new Error("Unable to focus an invalid element.");if(!e.hasAttribute("tabindex"))throw new Error("Unable to focus an SVG element that does not have a tabindex.");e.focus({preventScroll:t})}},focusBySelector:function(e,t){const n=document.querySelector(e);n&&(n.hasAttribute("tabindex")||(n.tabIndex=-1),n.focus({preventScroll:!0}))}},it={init:function(e,t,n,o=50){const r=at(t);(r||document.documentElement).style.overflowAnchor="none";const i=document.createRange();u(n.parentElement)&&(t.style.display="table-row",n.style.display="table-row");const s=new IntersectionObserver((function(o){o.forEach((o=>{var r;if(!o.isIntersecting)return;i.setStartAfter(t),i.setEndBefore(n);const s=i.getBoundingClientRect().height,a=null===(r=o.rootBounds)||void 0===r?void 0:r.height;o.target===t?e.invokeMethodAsync("OnSpacerBeforeVisible",o.intersectionRect.top-o.boundingClientRect.top,s,a):o.target===n&&n.offsetHeight>0&&e.invokeMethodAsync("OnSpacerAfterVisible",o.boundingClientRect.bottom-o.intersectionRect.bottom,s,a)}))}),{root:r,rootMargin:`${o}px`});s.observe(t),s.observe(n);const a=d(t),c=d(n),{observersByDotNetObjectId:l,id:h}=ct(e);function d(e){const t={attributes:!0},n=new MutationObserver(((n,o)=>{u(e.parentElement)&&(o.disconnect(),e.style.display="table-row",o.observe(e,t)),s.unobserve(e),s.observe(e)}));return n.observe(e,t),n}function u(e){return null!==e&&(e instanceof HTMLTableElement&&""===e.style.display||"table"===e.style.display||e instanceof HTMLTableSectionElement&&""===e.style.display||"table-row-group"===e.style.display)}l[h]={intersectionObserver:s,mutationObserverBefore:a,mutationObserverAfter:c}},dispose:function(e){const{observersByDotNetObjectId:t,id:n}=ct(e),o=t[n];o&&(o.intersectionObserver.disconnect(),o.mutationObserverBefore.disconnect(),o.mutationObserverAfter.disconnect(),e.dispose(),delete t[n])}},st=Symbol();function at(e){return e&&e!==document.body&&e!==document.documentElement?"visible"!==getComputedStyle(e).overflowY?e:at(e.parentElement):null}function ct(e){var t;const n=e._callDispatcher,o=e._id;return null!==(t=n[st])&&void 0!==t||(n[st]={}),{observersByDotNetObjectId:n[st],id:o}}const lt={getAndRemoveExistingTitle:function(){var e;const t=document.head?document.head.getElementsByTagName("title"):[];if(0===t.length)return null;let n=null;for(let o=t.length-1;o>=0;o--){const r=t[o],i=r.previousSibling;i instanceof Comment&&null!==K(i)||(null===n&&(n=r.textContent),null===(e=r.parentNode)||void 0===e||e.removeChild(r))}return n}},ht={init:function(e,t){t._blazorInputFileNextFileId=0,t.addEventListener("click",(function(){t.value=""})),t.addEventListener("change",(function(){t._blazorFilesById={};const n=Array.prototype.map.call(t.files,(function(e){const n={id:++t._blazorInputFileNextFileId,lastModified:new Date(e.lastModified).toISOString(),name:e.name,size:e.size,contentType:e.type,readPromise:void 0,arrayBuffer:void 0,blob:e};return t._blazorFilesById[n.id]=n,n}));e.invokeMethodAsync("NotifyChange",n)}))},toImageFile:async function(e,t,n,o,r){const i=dt(e,t),s=await new Promise((function(e){const t=new Image;t.onload=function(){URL.revokeObjectURL(t.src),e(t)},t.onerror=function(){t.onerror=null,URL.revokeObjectURL(t.src)},t.src=URL.createObjectURL(i.blob)})),a=await new Promise((function(e){var t;const i=Math.min(1,o/s.width),a=Math.min(1,r/s.height),c=Math.min(i,a),l=document.createElement("canvas");l.width=Math.round(s.width*c),l.height=Math.round(s.height*c),null===(t=l.getContext("2d"))||void 0===t||t.drawImage(s,0,0,l.width,l.height),l.toBlob(e,n)})),c={id:++e._blazorInputFileNextFileId,lastModified:i.lastModified,name:i.name,size:(null==a?void 0:a.size)||0,contentType:n,blob:a||i.blob};return e._blazorFilesById[c.id]=c,c},readFileData:async function(e,t){return dt(e,t).blob}};function dt(e,t){const n=e._blazorFilesById[t];if(!n)throw new Error(`There is no file with ID ${t}. The file list may have changed. See https://aka.ms/aspnet/blazor-input-file-multiple-selections.`);return n}const ut=new Set,pt={enableNavigationPrompt:function(e){0===ut.size&&window.addEventListener("beforeunload",ft),ut.add(e)},disableNavigationPrompt:function(e){ut.delete(e),0===ut.size&&window.removeEventListener("beforeunload",ft)}};function ft(e){e.preventDefault(),e.returnValue=!0}async function gt(e,t,n){return e instanceof Blob?await async function(e,t,n){const o=e.slice(t,t+n),r=await o.arrayBuffer();return new Uint8Array(r)}(e,t,n):function(e,t,n){return new Uint8Array(e.buffer,e.byteOffset+t,n)}(e,t,n)}const mt=new Map,vt={navigateTo:function(e,t,n=!1){Ve(e,t instanceof Object?t:{forceLoad:t,replaceHistoryEntry:n})},registerCustomEventType:function(e,t){if(!t)throw new Error("The options parameter is required.");if(i.has(e))throw new Error(`The event '${e}' is already registered.`);if(t.browserEventName){const n=s.get(t.browserEventName);n?n.push(e):s.set(t.browserEventName,[e]),a.forEach((n=>n(e,t.browserEventName)))}i.set(e,t)},rootComponents:y,runtime:{},_internal:{navigationManager:Je,domWrapper:rt,Virtualize:it,PageTitle:lt,InputFile:ht,NavigationLock:pt,getJSDataStreamChunk:gt,attachWebRendererInterop:k}};var yt;window.Blazor=vt,function(e){e[e.Trace=0]="Trace",e[e.Debug=1]="Debug",e[e.Information=2]="Information",e[e.Warning=3]="Warning",e[e.Error=4]="Error",e[e.Critical=5]="Critical",e[e.None=6]="None"}(yt||(yt={}));class wt{log(e,t){}}wt.instance=new wt;class bt{constructor(e){this.minLevel=e}log(e,t){if(e>=this.minLevel){const n=`[${(new Date).toISOString()}] ${yt[e]}: ${t}`;switch(e){case yt.Critical:case yt.Error:console.error(n);break;case yt.Warning:console.warn(n);break;case yt.Information:console.info(n);break;default:console.log(n)}}}}function _t(e,t){switch(t){case"webassembly":return Tt(e,"webassembly");case"server":return function(e){return Tt(e,"server").sort(((e,t)=>e.sequence-t.sequence))}(e);case"auto":return Tt(e,"auto")}}const St=/^\s*Blazor-Server-Component-State:(?[a-zA-Z0-9+/=]+)$/,Ct=/^\s*Blazor-WebAssembly-Component-State:(?[a-zA-Z0-9+/=]+)$/,Et=/^\s*Blazor-Web-Initializers:(?[a-zA-Z0-9+/=]+)$/;function It(e){return kt(e,St)}function kt(e,t,n="state"){var o;if(e.nodeType===Node.COMMENT_NODE){const r=e.textContent||"",i=t.exec(r),s=i&&i.groups&&i.groups[n];return s&&(null===(o=e.parentNode)||void 0===o||o.removeChild(e)),s}if(!e.hasChildNodes())return;const r=e.childNodes;for(let e=0;e.*)$/);function At(e,t){const n=e.currentElement;var o,r,i;if(n&&n.nodeType===Node.COMMENT_NODE&&n.textContent){const s=Rt.exec(n.textContent),a=s&&s.groups&&s.groups.descriptor;if(!a)return;!function(e){if(e.parentNode instanceof Document)throw new Error("Root components cannot be marked as interactive. The element must be rendered statically so that scripts are not evaluated multiple times.")}(n);try{const s=function(e){const t=JSON.parse(e),{type:n}=t;if("server"!==n&&"webassembly"!==n&&"auto"!==n)throw new Error(`Invalid component type '${n}'.`);return t}(a),c=function(e,t,n){const{prerenderId:o}=e;if(o){for(;n.next()&&n.currentElement;){const e=n.currentElement;if(e.nodeType!==Node.COMMENT_NODE)continue;if(!e.textContent)continue;const t=Rt.exec(e.textContent),r=t&&t[1];if(r)return Pt(r,o),e}throw new Error(`Could not find an end component comment for '${t}'.`)}}(s,n,e);if(t!==s.type)return;switch(s.type){case"webassembly":return r=n,i=c,Nt(o=s),{...o,uniqueId:Dt++,start:r,end:i};case"server":return function(e,t,n){return xt(e),{...e,uniqueId:Dt++,start:t,end:n}}(s,n,c);case"auto":return function(e,t,n){return xt(e),Nt(e),{...e,uniqueId:Dt++,start:t,end:n}}(s,n,c)}}catch(e){throw new Error(`Found malformed component comment at ${n.textContent}`)}}}let Dt=0;function xt(e){const{descriptor:t,sequence:n}=e;if(!t)throw new Error("descriptor must be defined when using a descriptor.");if(void 0===n)throw new Error("sequence must be defined when using a descriptor.");if(!Number.isInteger(n))throw new Error(`Error parsing the sequence '${n}' for component '${JSON.stringify(e)}'`)}function Nt(e){const{assembly:t,typeName:n}=e;if(!t)throw new Error("assembly must be defined when using a descriptor.");if(!n)throw new Error("typeName must be defined when using a descriptor.");e.parameterDefinitions=e.parameterDefinitions&&atob(e.parameterDefinitions),e.parameterValues=e.parameterValues&&atob(e.parameterValues)}function Pt(e,t){const n=JSON.parse(e);if(1!==Object.keys(n).length)throw new Error(`Invalid end of component comment: '${e}'`);const o=n.prerenderId;if(!o)throw new Error(`End of component comment must have a value for the prerendered property: '${e}'`);if(o!==t)throw new Error(`End of component comment prerendered property must match the start comment prerender id: '${t}', '${o}'`)}class Mt{constructor(e){this.childNodes=e,this.currentIndex=-1,this.length=e.length}next(){return this.currentIndex++,this.currentIndex{n+=`0x${e<16?"0":""}${e.toString(16)} `})),n.substr(0,n.length-1)}(e)}'`)):"string"==typeof e&&(n=`String data of length ${e.length}`,t&&(n+=`. Content: '${e}'`)),n}function zt(e){return e&&"undefined"!=typeof ArrayBuffer&&(e instanceof ArrayBuffer||e.constructor&&"ArrayBuffer"===e.constructor.name)}async function qt(e,t,n,o,r,i){const s={},[a,c]=Vt();s[a]=c,e.log(Ot.Trace,`(${t} transport) sending data. ${jt(r,i.logMessageContent)}.`);const l=zt(r)?"arraybuffer":"text",h=await n.post(o,{content:r,headers:{...s,...i.headers},responseType:l,timeout:i.timeout,withCredentials:i.withCredentials});e.log(Ot.Trace,`(${t} transport) request complete. Response status: ${h.statusCode}.`)}class Jt{constructor(e,t){this._subject=e,this._observer=t}dispose(){const e=this._subject.observers.indexOf(this._observer);e>-1&&this._subject.observers.splice(e,1),0===this._subject.observers.length&&this._subject.cancelCallback&&this._subject.cancelCallback().catch((e=>{}))}}class Kt{constructor(e){this._minLevel=e,this.out=console}log(e,t){if(e>=this._minLevel){const n=`[${(new Date).toISOString()}] ${Ot[e]}: ${t}`;switch(e){case Ot.Critical:case Ot.Error:this.out.error(n);break;case Ot.Warning:this.out.warn(n);break;case Ot.Information:this.out.info(n);break;default:this.out.log(n)}}}}function Vt(){let e="X-SignalR-User-Agent";return Wt.isNode&&(e="User-Agent"),[e,Xt($t,Gt(),Wt.isNode?"NodeJS":"Browser",Yt())]}function Xt(e,t,n,o){let r="Microsoft SignalR/";const i=e.split(".");return r+=`${i[0]}.${i[1]}`,r+=` (${e}; `,r+=t&&""!==t?`${t}; `:"Unknown OS; ",r+=`${n}`,r+=o?`; ${o}`:"; Unknown Runtime Version",r+=")",r}function Gt(){if(!Wt.isNode)return"";switch(process.platform){case"win32":return"Windows NT";case"darwin":return"macOS";case"linux":return"Linux";default:return process.platform}}function Yt(){if(Wt.isNode)return process.versions.node}function Qt(e){return e.stack?e.stack:e.message?e.message:`${e}`}class Zt{writeHandshakeRequest(e){return Bt.write(JSON.stringify(e))}parseHandshakeResponse(e){let t,n;if(zt(e)){const o=new Uint8Array(e),r=o.indexOf(Bt.RecordSeparatorCode);if(-1===r)throw new Error("Message is incomplete.");const i=r+1;t=String.fromCharCode.apply(null,Array.prototype.slice.call(o.slice(0,i))),n=o.byteLength>i?o.slice(i).buffer:null}else{const o=e,r=o.indexOf(Bt.RecordSeparator);if(-1===r)throw new Error("Message is incomplete.");const i=r+1;t=o.substring(0,i),n=o.length>i?o.substring(i):null}const o=Bt.parse(t),r=JSON.parse(o[0]);if(r.type)throw new Error("Expected a handshake response from the server.");return[n,r]}}class en extends Error{constructor(e,t){const n=new.target.prototype;super(`${e}: Status code '${t}'`),this.statusCode=t,this.__proto__=n}}class tn extends Error{constructor(e="A timeout occurred."){const t=new.target.prototype;super(e),this.__proto__=t}}class nn extends Error{constructor(e="An abort occurred."){const t=new.target.prototype;super(e),this.__proto__=t}}class on extends Error{constructor(e,t){const n=new.target.prototype;super(e),this.transport=t,this.errorType="UnsupportedTransportError",this.__proto__=n}}class rn extends Error{constructor(e,t){const n=new.target.prototype;super(e),this.transport=t,this.errorType="DisabledTransportError",this.__proto__=n}}class sn extends Error{constructor(e,t){const n=new.target.prototype;super(e),this.transport=t,this.errorType="FailedToStartTransportError",this.__proto__=n}}class an extends Error{constructor(e){const t=new.target.prototype;super(e),this.errorType="FailedToNegotiateWithServerError",this.__proto__=t}}class cn extends Error{constructor(e,t){const n=new.target.prototype;super(e),this.innerErrors=t,this.__proto__=n}}var ln,hn;!function(e){e[e.Invocation=1]="Invocation",e[e.StreamItem=2]="StreamItem",e[e.Completion=3]="Completion",e[e.StreamInvocation=4]="StreamInvocation",e[e.CancelInvocation=5]="CancelInvocation",e[e.Ping=6]="Ping",e[e.Close=7]="Close",e[e.Ack=8]="Ack",e[e.Sequence=9]="Sequence"}(ln||(ln={}));class dn{constructor(){this.observers=[]}next(e){for(const t of this.observers)t.next(e)}error(e){for(const t of this.observers)t.error&&t.error(e)}complete(){for(const e of this.observers)e.complete&&e.complete()}subscribe(e){return this.observers.push(e),new Jt(this,e)}}class un{constructor(e,t,n){this._bufferSize=1e5,this._messages=[],this._totalMessageCount=0,this._waitForSequenceMessage=!1,this._nextReceivingSequenceId=1,this._latestReceivedSequenceId=0,this._bufferedByteCount=0,this._reconnectInProgress=!1,this._protocol=e,this._connection=t,this._bufferSize=n}async _send(e){const t=this._protocol.writeMessage(e);let n=Promise.resolve();if(this._isInvocationMessage(e)){this._totalMessageCount++;let e=()=>{},o=()=>{};zt(t)?this._bufferedByteCount+=t.byteLength:this._bufferedByteCount+=t.length,this._bufferedByteCount>=this._bufferSize&&(n=new Promise(((t,n)=>{e=t,o=n}))),this._messages.push(new pn(t,this._totalMessageCount,e,o))}try{this._reconnectInProgress||await this._connection.send(t)}catch{this._disconnected()}await n}_ack(e){let t=-1;for(let n=0;nthis._nextReceivingSequenceId?this._connection.stop(new Error("Sequence ID greater than amount of messages we've received.")):this._nextReceivingSequenceId=e.sequenceId}_disconnected(){this._reconnectInProgress=!0,this._waitForSequenceMessage=!0}async _resend(){const e=0!==this._messages.length?this._messages[0]._id:this._totalMessageCount+1;await this._connection.send(this._protocol.writeMessage({type:ln.Sequence,sequenceId:e}));const t=this._messages;for(const e of t)await this._connection.send(e._message);this._reconnectInProgress=!1}_dispose(e){null!=e||(e=new Error("Unable to reconnect to server."));for(const t of this._messages)t._rejector(e)}_isInvocationMessage(e){switch(e.type){case ln.Invocation:case ln.StreamItem:case ln.Completion:case ln.StreamInvocation:case ln.CancelInvocation:return!0;case ln.Close:case ln.Sequence:case ln.Ping:case ln.Ack:return!1}}_ackTimer(){void 0===this._ackTimerHandle&&(this._ackTimerHandle=setTimeout((async()=>{try{this._reconnectInProgress||await this._connection.send(this._protocol.writeMessage({type:ln.Ack,sequenceId:this._latestReceivedSequenceId}))}catch{}clearTimeout(this._ackTimerHandle),this._ackTimerHandle=void 0}),1e3))}}class pn{constructor(e,t,n,o){this._message=e,this._id=t,this._resolver=n,this._rejector=o}}!function(e){e.Disconnected="Disconnected",e.Connecting="Connecting",e.Connected="Connected",e.Disconnecting="Disconnecting",e.Reconnecting="Reconnecting"}(hn||(hn={}));class fn{static create(e,t,n,o,r,i,s){return new fn(e,t,n,o,r,i,s)}constructor(e,t,n,o,r,i,s){this._nextKeepAlive=0,this._freezeEventListener=()=>{this._logger.log(Ot.Warning,"The page is being frozen, this will likely lead to the connection being closed and messages being lost. For more information see the docs at https://learn.microsoft.com/aspnet/core/signalr/javascript-client#bsleep")},Ht.isRequired(e,"connection"),Ht.isRequired(t,"logger"),Ht.isRequired(n,"protocol"),this.serverTimeoutInMilliseconds=null!=r?r:3e4,this.keepAliveIntervalInMilliseconds=null!=i?i:15e3,this._statefulReconnectBufferSize=null!=s?s:1e5,this._logger=t,this._protocol=n,this.connection=e,this._reconnectPolicy=o,this._handshakeProtocol=new Zt,this.connection.onreceive=e=>this._processIncomingData(e),this.connection.onclose=e=>this._connectionClosed(e),this._callbacks={},this._methods={},this._closedCallbacks=[],this._reconnectingCallbacks=[],this._reconnectedCallbacks=[],this._invocationId=0,this._receivedHandshakeResponse=!1,this._connectionState=hn.Disconnected,this._connectionStarted=!1,this._cachedPingMessage=this._protocol.writeMessage({type:ln.Ping})}get state(){return this._connectionState}get connectionId(){return this.connection&&this.connection.connectionId||null}get baseUrl(){return this.connection.baseUrl||""}set baseUrl(e){if(this._connectionState!==hn.Disconnected&&this._connectionState!==hn.Reconnecting)throw new Error("The HubConnection must be in the Disconnected or Reconnecting state to change the url.");if(!e)throw new Error("The HubConnection url must be a valid url.");this.connection.baseUrl=e}start(){return this._startPromise=this._startWithStateTransitions(),this._startPromise}async _startWithStateTransitions(){if(this._connectionState!==hn.Disconnected)return Promise.reject(new Error("Cannot start a HubConnection that is not in the 'Disconnected' state."));this._connectionState=hn.Connecting,this._logger.log(Ot.Debug,"Starting HubConnection.");try{await this._startInternal(),Wt.isBrowser&&window.document.addEventListener("freeze",this._freezeEventListener),this._connectionState=hn.Connected,this._connectionStarted=!0,this._logger.log(Ot.Debug,"HubConnection connected successfully.")}catch(e){return this._connectionState=hn.Disconnected,this._logger.log(Ot.Debug,`HubConnection failed to start successfully because of error '${e}'.`),Promise.reject(e)}}async _startInternal(){this._stopDuringStartError=void 0,this._receivedHandshakeResponse=!1;const e=new Promise(((e,t)=>{this._handshakeResolver=e,this._handshakeRejecter=t}));await this.connection.start(this._protocol.transferFormat);try{let t=this._protocol.version;this.connection.features.reconnect||(t=1);const n={protocol:this._protocol.name,version:t};if(this._logger.log(Ot.Debug,"Sending handshake request."),await this._sendMessage(this._handshakeProtocol.writeHandshakeRequest(n)),this._logger.log(Ot.Information,`Using HubProtocol '${this._protocol.name}'.`),this._cleanupTimeout(),this._resetTimeoutPeriod(),this._resetKeepAliveInterval(),await e,this._stopDuringStartError)throw this._stopDuringStartError;!!this.connection.features.reconnect&&(this._messageBuffer=new un(this._protocol,this.connection,this._statefulReconnectBufferSize),this.connection.features.disconnected=this._messageBuffer._disconnected.bind(this._messageBuffer),this.connection.features.resend=()=>{if(this._messageBuffer)return this._messageBuffer._resend()}),this.connection.features.inherentKeepAlive||await this._sendMessage(this._cachedPingMessage)}catch(e){throw this._logger.log(Ot.Debug,`Hub handshake failed with error '${e}' during start(). Stopping HubConnection.`),this._cleanupTimeout(),this._cleanupPingTimer(),await this.connection.stop(e),e}}async stop(){const e=this._startPromise;this.connection.features.reconnect=!1,this._stopPromise=this._stopInternal(),await this._stopPromise;try{await e}catch(e){}}_stopInternal(e){if(this._connectionState===hn.Disconnected)return this._logger.log(Ot.Debug,`Call to HubConnection.stop(${e}) ignored because it is already in the disconnected state.`),Promise.resolve();if(this._connectionState===hn.Disconnecting)return this._logger.log(Ot.Debug,`Call to HttpConnection.stop(${e}) ignored because the connection is already in the disconnecting state.`),this._stopPromise;const t=this._connectionState;return this._connectionState=hn.Disconnecting,this._logger.log(Ot.Debug,"Stopping HubConnection."),this._reconnectDelayHandle?(this._logger.log(Ot.Debug,"Connection stopped during reconnect delay. Done reconnecting."),clearTimeout(this._reconnectDelayHandle),this._reconnectDelayHandle=void 0,this._completeClose(),Promise.resolve()):(t===hn.Connected&&this._sendCloseMessage(),this._cleanupTimeout(),this._cleanupPingTimer(),this._stopDuringStartError=e||new nn("The connection was stopped before the hub handshake could complete."),this.connection.stop(e))}async _sendCloseMessage(){try{await this._sendWithProtocol(this._createCloseMessage())}catch{}}stream(e,...t){const[n,o]=this._replaceStreamingParams(t),r=this._createStreamInvocation(e,t,o);let i;const s=new dn;return s.cancelCallback=()=>{const e=this._createCancelInvocation(r.invocationId);return delete this._callbacks[r.invocationId],i.then((()=>this._sendWithProtocol(e)))},this._callbacks[r.invocationId]=(e,t)=>{t?s.error(t):e&&(e.type===ln.Completion?e.error?s.error(new Error(e.error)):s.complete():s.next(e.item))},i=this._sendWithProtocol(r).catch((e=>{s.error(e),delete this._callbacks[r.invocationId]})),this._launchStreams(n,i),s}_sendMessage(e){return this._resetKeepAliveInterval(),this.connection.send(e)}_sendWithProtocol(e){return this._messageBuffer?this._messageBuffer._send(e):this._sendMessage(this._protocol.writeMessage(e))}send(e,...t){const[n,o]=this._replaceStreamingParams(t),r=this._sendWithProtocol(this._createInvocation(e,t,!0,o));return this._launchStreams(n,r),r}invoke(e,...t){const[n,o]=this._replaceStreamingParams(t),r=this._createInvocation(e,t,!1,o);return new Promise(((e,t)=>{this._callbacks[r.invocationId]=(n,o)=>{o?t(o):n&&(n.type===ln.Completion?n.error?t(new Error(n.error)):e(n.result):t(new Error(`Unexpected message type: ${n.type}`)))};const o=this._sendWithProtocol(r).catch((e=>{t(e),delete this._callbacks[r.invocationId]}));this._launchStreams(n,o)}))}on(e,t){e&&t&&(e=e.toLowerCase(),this._methods[e]||(this._methods[e]=[]),-1===this._methods[e].indexOf(t)&&this._methods[e].push(t))}off(e,t){if(!e)return;e=e.toLowerCase();const n=this._methods[e];if(n)if(t){const o=n.indexOf(t);-1!==o&&(n.splice(o,1),0===n.length&&delete this._methods[e])}else delete this._methods[e]}onclose(e){e&&this._closedCallbacks.push(e)}onreconnecting(e){e&&this._reconnectingCallbacks.push(e)}onreconnected(e){e&&this._reconnectedCallbacks.push(e)}_processIncomingData(e){if(this._cleanupTimeout(),this._receivedHandshakeResponse||(e=this._processHandshakeResponse(e),this._receivedHandshakeResponse=!0),e){const t=this._protocol.parseMessages(e,this._logger);for(const e of t)if(!this._messageBuffer||this._messageBuffer._shouldProcessMessage(e))switch(e.type){case ln.Invocation:this._invokeClientMethod(e);break;case ln.StreamItem:case ln.Completion:{const t=this._callbacks[e.invocationId];if(t){e.type===ln.Completion&&delete this._callbacks[e.invocationId];try{t(e)}catch(e){this._logger.log(Ot.Error,`Stream callback threw error: ${Qt(e)}`)}}break}case ln.Ping:break;case ln.Close:{this._logger.log(Ot.Information,"Close message received from server.");const t=e.error?new Error("Server returned an error on close: "+e.error):void 0;!0===e.allowReconnect?this.connection.stop(t):this._stopPromise=this._stopInternal(t);break}case ln.Ack:this._messageBuffer&&this._messageBuffer._ack(e);break;case ln.Sequence:this._messageBuffer&&this._messageBuffer._resetSequence(e);break;default:this._logger.log(Ot.Warning,`Invalid message type: ${e.type}.`)}}this._resetTimeoutPeriod()}_processHandshakeResponse(e){let t,n;try{[n,t]=this._handshakeProtocol.parseHandshakeResponse(e)}catch(e){const t="Error parsing handshake response: "+e;this._logger.log(Ot.Error,t);const n=new Error(t);throw this._handshakeRejecter(n),n}if(t.error){const e="Server returned handshake error: "+t.error;this._logger.log(Ot.Error,e);const n=new Error(e);throw this._handshakeRejecter(n),n}return this._logger.log(Ot.Debug,"Server handshake complete."),this._handshakeResolver(),n}_resetKeepAliveInterval(){this.connection.features.inherentKeepAlive||(this._nextKeepAlive=(new Date).getTime()+this.keepAliveIntervalInMilliseconds,this._cleanupPingTimer())}_resetTimeoutPeriod(){if(!(this.connection.features&&this.connection.features.inherentKeepAlive||(this._timeoutHandle=setTimeout((()=>this.serverTimeout()),this.serverTimeoutInMilliseconds),void 0!==this._pingServerHandle))){let e=this._nextKeepAlive-(new Date).getTime();e<0&&(e=0),this._pingServerHandle=setTimeout((async()=>{if(this._connectionState===hn.Connected)try{await this._sendMessage(this._cachedPingMessage)}catch{this._cleanupPingTimer()}}),e)}}serverTimeout(){this.connection.stop(new Error("Server timeout elapsed without receiving a message from the server."))}async _invokeClientMethod(e){const t=e.target.toLowerCase(),n=this._methods[t];if(!n)return this._logger.log(Ot.Warning,`No client method with the name '${t}' found.`),void(e.invocationId&&(this._logger.log(Ot.Warning,`No result given for '${t}' method and invocation ID '${e.invocationId}'.`),await this._sendWithProtocol(this._createCompletionMessage(e.invocationId,"Client didn't provide a result.",null))));const o=n.slice(),r=!!e.invocationId;let i,s,a;for(const n of o)try{const o=i;i=await n.apply(this,e.arguments),r&&i&&o&&(this._logger.log(Ot.Error,`Multiple results provided for '${t}'. Sending error to server.`),a=this._createCompletionMessage(e.invocationId,"Client provided multiple results.",null)),s=void 0}catch(e){s=e,this._logger.log(Ot.Error,`A callback for the method '${t}' threw error '${e}'.`)}a?await this._sendWithProtocol(a):r?(s?a=this._createCompletionMessage(e.invocationId,`${s}`,null):void 0!==i?a=this._createCompletionMessage(e.invocationId,null,i):(this._logger.log(Ot.Warning,`No result given for '${t}' method and invocation ID '${e.invocationId}'.`),a=this._createCompletionMessage(e.invocationId,"Client didn't provide a result.",null)),await this._sendWithProtocol(a)):i&&this._logger.log(Ot.Error,`Result given for '${t}' method but server is not expecting a result.`)}_connectionClosed(e){this._logger.log(Ot.Debug,`HubConnection.connectionClosed(${e}) called while in state ${this._connectionState}.`),this._stopDuringStartError=this._stopDuringStartError||e||new nn("The underlying connection was closed before the hub handshake could complete."),this._handshakeResolver&&this._handshakeResolver(),this._cancelCallbacksWithError(e||new Error("Invocation canceled due to the underlying connection being closed.")),this._cleanupTimeout(),this._cleanupPingTimer(),this._connectionState===hn.Disconnecting?this._completeClose(e):this._connectionState===hn.Connected&&this._reconnectPolicy?this._reconnect(e):this._connectionState===hn.Connected&&this._completeClose(e)}_completeClose(e){if(this._connectionStarted){this._connectionState=hn.Disconnected,this._connectionStarted=!1,this._messageBuffer&&(this._messageBuffer._dispose(null!=e?e:new Error("Connection closed.")),this._messageBuffer=void 0),Wt.isBrowser&&window.document.removeEventListener("freeze",this._freezeEventListener);try{this._closedCallbacks.forEach((t=>t.apply(this,[e])))}catch(t){this._logger.log(Ot.Error,`An onclose callback called with error '${e}' threw error '${t}'.`)}}}async _reconnect(e){const t=Date.now();let n=0,o=void 0!==e?e:new Error("Attempting to reconnect due to a unknown error."),r=this._getNextRetryDelay(n++,0,o);if(null===r)return this._logger.log(Ot.Debug,"Connection not reconnecting because the IRetryPolicy returned null on the first reconnect attempt."),void this._completeClose(e);if(this._connectionState=hn.Reconnecting,e?this._logger.log(Ot.Information,`Connection reconnecting because of error '${e}'.`):this._logger.log(Ot.Information,"Connection reconnecting."),0!==this._reconnectingCallbacks.length){try{this._reconnectingCallbacks.forEach((t=>t.apply(this,[e])))}catch(t){this._logger.log(Ot.Error,`An onreconnecting callback called with error '${e}' threw error '${t}'.`)}if(this._connectionState!==hn.Reconnecting)return void this._logger.log(Ot.Debug,"Connection left the reconnecting state in onreconnecting callback. Done reconnecting.")}for(;null!==r;){if(this._logger.log(Ot.Information,`Reconnect attempt number ${n} will start in ${r} ms.`),await new Promise((e=>{this._reconnectDelayHandle=setTimeout(e,r)})),this._reconnectDelayHandle=void 0,this._connectionState!==hn.Reconnecting)return void this._logger.log(Ot.Debug,"Connection left the reconnecting state during reconnect delay. Done reconnecting.");try{if(await this._startInternal(),this._connectionState=hn.Connected,this._logger.log(Ot.Information,"HubConnection reconnected successfully."),0!==this._reconnectedCallbacks.length)try{this._reconnectedCallbacks.forEach((e=>e.apply(this,[this.connection.connectionId])))}catch(e){this._logger.log(Ot.Error,`An onreconnected callback called with connectionId '${this.connection.connectionId}; threw error '${e}'.`)}return}catch(e){if(this._logger.log(Ot.Information,`Reconnect attempt failed because of error '${e}'.`),this._connectionState!==hn.Reconnecting)return this._logger.log(Ot.Debug,`Connection moved to the '${this._connectionState}' from the reconnecting state during reconnect attempt. Done reconnecting.`),void(this._connectionState===hn.Disconnecting&&this._completeClose());o=e instanceof Error?e:new Error(e.toString()),r=this._getNextRetryDelay(n++,Date.now()-t,o)}}this._logger.log(Ot.Information,`Reconnect retries have been exhausted after ${Date.now()-t} ms and ${n} failed attempts. Connection disconnecting.`),this._completeClose()}_getNextRetryDelay(e,t,n){try{return this._reconnectPolicy.nextRetryDelayInMilliseconds({elapsedMilliseconds:t,previousRetryCount:e,retryReason:n})}catch(n){return this._logger.log(Ot.Error,`IRetryPolicy.nextRetryDelayInMilliseconds(${e}, ${t}) threw error '${n}'.`),null}}_cancelCallbacksWithError(e){const t=this._callbacks;this._callbacks={},Object.keys(t).forEach((n=>{const o=t[n];try{o(null,e)}catch(t){this._logger.log(Ot.Error,`Stream 'error' callback called with '${e}' threw error: ${Qt(t)}`)}}))}_cleanupPingTimer(){this._pingServerHandle&&(clearTimeout(this._pingServerHandle),this._pingServerHandle=void 0)}_cleanupTimeout(){this._timeoutHandle&&clearTimeout(this._timeoutHandle)}_createInvocation(e,t,n,o){if(n)return 0!==o.length?{arguments:t,streamIds:o,target:e,type:ln.Invocation}:{arguments:t,target:e,type:ln.Invocation};{const n=this._invocationId;return this._invocationId++,0!==o.length?{arguments:t,invocationId:n.toString(),streamIds:o,target:e,type:ln.Invocation}:{arguments:t,invocationId:n.toString(),target:e,type:ln.Invocation}}}_launchStreams(e,t){if(0!==e.length){t||(t=Promise.resolve());for(const n in e)e[n].subscribe({complete:()=>{t=t.then((()=>this._sendWithProtocol(this._createCompletionMessage(n))))},error:e=>{let o;o=e instanceof Error?e.message:e&&e.toString?e.toString():"Unknown error",t=t.then((()=>this._sendWithProtocol(this._createCompletionMessage(n,o))))},next:e=>{t=t.then((()=>this._sendWithProtocol(this._createStreamItemMessage(n,e))))}})}}_replaceStreamingParams(e){const t=[],n=[];for(let o=0;o0)&&(t=!1,this._accessToken=await this._accessTokenFactory()),this._setAuthorizationHeader(e);const n=await this._innerClient.send(e);return t&&401===n.statusCode&&this._accessTokenFactory?(this._accessToken=await this._accessTokenFactory(),this._setAuthorizationHeader(e),await this._innerClient.send(e)):n}_setAuthorizationHeader(e){e.headers||(e.headers={}),this._accessToken?e.headers[vn.Authorization]=`Bearer ${this._accessToken}`:this._accessTokenFactory&&e.headers[vn.Authorization]&&delete e.headers[vn.Authorization]}getCookieString(e){return this._innerClient.getCookieString(e)}}class _n extends wn{constructor(e){super(),this._logger=e;const t={_fetchType:void 0,_jar:void 0};var o;o=t,"undefined"==typeof fetch&&(o._jar=new(n(628).CookieJar),"undefined"==typeof fetch?o._fetchType=n(200):o._fetchType=fetch,o._fetchType=n(203)(o._fetchType,o._jar),1)?(this._fetchType=t._fetchType,this._jar=t._jar):this._fetchType=fetch.bind(function(){if("undefined"!=typeof globalThis)return globalThis;if("undefined"!=typeof self)return self;if("undefined"!=typeof window)return window;if(void 0!==n.g)return n.g;throw new Error("could not find global")}()),this._abortControllerType=AbortController;const r={_abortControllerType:this._abortControllerType};(function(e){return"undefined"==typeof AbortController&&(e._abortControllerType=n(778),!0)})(r)&&(this._abortControllerType=r._abortControllerType)}async send(e){if(e.abortSignal&&e.abortSignal.aborted)throw new nn;if(!e.method)throw new Error("No method defined.");if(!e.url)throw new Error("No url defined.");const t=new this._abortControllerType;let n;e.abortSignal&&(e.abortSignal.onabort=()=>{t.abort(),n=new nn});let o,r=null;if(e.timeout){const o=e.timeout;r=setTimeout((()=>{t.abort(),this._logger.log(Ot.Warning,"Timeout from HTTP request."),n=new tn}),o)}""===e.content&&(e.content=void 0),e.content&&(e.headers=e.headers||{},zt(e.content)?e.headers["Content-Type"]="application/octet-stream":e.headers["Content-Type"]="text/plain;charset=UTF-8");try{o=await this._fetchType(e.url,{body:e.content,cache:"no-cache",credentials:!0===e.withCredentials?"include":"same-origin",headers:{"X-Requested-With":"XMLHttpRequest",...e.headers},method:e.method,mode:"cors",redirect:"follow",signal:t.signal})}catch(e){if(n)throw n;throw this._logger.log(Ot.Warning,`Error from HTTP request. ${e}.`),e}finally{r&&clearTimeout(r),e.abortSignal&&(e.abortSignal.onabort=null)}if(!o.ok){const e=await Sn(o,"text");throw new en(e||o.statusText,o.status)}const i=Sn(o,e.responseType),s=await i;return new yn(o.status,o.statusText,s)}getCookieString(e){return""}}function Sn(e,t){let n;switch(t){case"arraybuffer":n=e.arrayBuffer();break;case"text":default:n=e.text();break;case"blob":case"document":case"json":throw new Error(`${t} is not supported.`)}return n}class Cn extends wn{constructor(e){super(),this._logger=e}send(e){return e.abortSignal&&e.abortSignal.aborted?Promise.reject(new nn):e.method?e.url?new Promise(((t,n)=>{const o=new XMLHttpRequest;o.open(e.method,e.url,!0),o.withCredentials=void 0===e.withCredentials||e.withCredentials,o.setRequestHeader("X-Requested-With","XMLHttpRequest"),""===e.content&&(e.content=void 0),e.content&&(zt(e.content)?o.setRequestHeader("Content-Type","application/octet-stream"):o.setRequestHeader("Content-Type","text/plain;charset=UTF-8"));const r=e.headers;r&&Object.keys(r).forEach((e=>{o.setRequestHeader(e,r[e])})),e.responseType&&(o.responseType=e.responseType),e.abortSignal&&(e.abortSignal.onabort=()=>{o.abort(),n(new nn)}),e.timeout&&(o.timeout=e.timeout),o.onload=()=>{e.abortSignal&&(e.abortSignal.onabort=null),o.status>=200&&o.status<300?t(new yn(o.status,o.statusText,o.response||o.responseText)):n(new en(o.response||o.responseText||o.statusText,o.status))},o.onerror=()=>{this._logger.log(Ot.Warning,`Error from HTTP request. ${o.status}: ${o.statusText}.`),n(new en(o.statusText,o.status))},o.ontimeout=()=>{this._logger.log(Ot.Warning,"Timeout from HTTP request."),n(new tn)},o.send(e.content)})):Promise.reject(new Error("No url defined.")):Promise.reject(new Error("No method defined."))}}class En extends wn{constructor(e){if(super(),"undefined"!=typeof fetch)this._httpClient=new _n(e);else{if("undefined"==typeof XMLHttpRequest)throw new Error("No usable HttpClient found.");this._httpClient=new Cn(e)}}send(e){return e.abortSignal&&e.abortSignal.aborted?Promise.reject(new nn):e.method?e.url?this._httpClient.send(e):Promise.reject(new Error("No url defined.")):Promise.reject(new Error("No method defined."))}getCookieString(e){return this._httpClient.getCookieString(e)}}var In,kn;!function(e){e[e.None=0]="None",e[e.WebSockets=1]="WebSockets",e[e.ServerSentEvents=2]="ServerSentEvents",e[e.LongPolling=4]="LongPolling"}(In||(In={})),function(e){e[e.Text=1]="Text",e[e.Binary=2]="Binary"}(kn||(kn={}));class Tn{constructor(){this._isAborted=!1,this.onabort=null}abort(){this._isAborted||(this._isAborted=!0,this.onabort&&this.onabort())}get signal(){return this}get aborted(){return this._isAborted}}class Rn{get pollAborted(){return this._pollAbort.aborted}constructor(e,t,n){this._httpClient=e,this._logger=t,this._pollAbort=new Tn,this._options=n,this._running=!1,this.onreceive=null,this.onclose=null}async connect(e,t){if(Ht.isRequired(e,"url"),Ht.isRequired(t,"transferFormat"),Ht.isIn(t,kn,"transferFormat"),this._url=e,this._logger.log(Ot.Trace,"(LongPolling transport) Connecting."),t===kn.Binary&&"undefined"!=typeof XMLHttpRequest&&"string"!=typeof(new XMLHttpRequest).responseType)throw new Error("Binary protocols over XmlHttpRequest not implementing advanced features are not supported.");const[n,o]=Vt(),r={[n]:o,...this._options.headers},i={abortSignal:this._pollAbort.signal,headers:r,timeout:1e5,withCredentials:this._options.withCredentials};t===kn.Binary&&(i.responseType="arraybuffer");const s=`${e}&_=${Date.now()}`;this._logger.log(Ot.Trace,`(LongPolling transport) polling: ${s}.`);const a=await this._httpClient.get(s,i);200!==a.statusCode?(this._logger.log(Ot.Error,`(LongPolling transport) Unexpected response code: ${a.statusCode}.`),this._closeError=new en(a.statusText||"",a.statusCode),this._running=!1):this._running=!0,this._receiving=this._poll(this._url,i)}async _poll(e,t){try{for(;this._running;)try{const n=`${e}&_=${Date.now()}`;this._logger.log(Ot.Trace,`(LongPolling transport) polling: ${n}.`);const o=await this._httpClient.get(n,t);204===o.statusCode?(this._logger.log(Ot.Information,"(LongPolling transport) Poll terminated by server."),this._running=!1):200!==o.statusCode?(this._logger.log(Ot.Error,`(LongPolling transport) Unexpected response code: ${o.statusCode}.`),this._closeError=new en(o.statusText||"",o.statusCode),this._running=!1):o.content?(this._logger.log(Ot.Trace,`(LongPolling transport) data received. ${jt(o.content,this._options.logMessageContent)}.`),this.onreceive&&this.onreceive(o.content)):this._logger.log(Ot.Trace,"(LongPolling transport) Poll timed out, reissuing.")}catch(e){this._running?e instanceof tn?this._logger.log(Ot.Trace,"(LongPolling transport) Poll timed out, reissuing."):(this._closeError=e,this._running=!1):this._logger.log(Ot.Trace,`(LongPolling transport) Poll errored after shutdown: ${e.message}`)}}finally{this._logger.log(Ot.Trace,"(LongPolling transport) Polling complete."),this.pollAborted||this._raiseOnClose()}}async send(e){return this._running?qt(this._logger,"LongPolling",this._httpClient,this._url,e,this._options):Promise.reject(new Error("Cannot send until the transport is connected"))}async stop(){this._logger.log(Ot.Trace,"(LongPolling transport) Stopping polling."),this._running=!1,this._pollAbort.abort();try{await this._receiving,this._logger.log(Ot.Trace,`(LongPolling transport) sending DELETE request to ${this._url}.`);const e={},[t,n]=Vt();e[t]=n;const o={headers:{...e,...this._options.headers},timeout:this._options.timeout,withCredentials:this._options.withCredentials};let r;try{await this._httpClient.delete(this._url,o)}catch(e){r=e}r?r instanceof en&&(404===r.statusCode?this._logger.log(Ot.Trace,"(LongPolling transport) A 404 response was returned from sending a DELETE request."):this._logger.log(Ot.Trace,`(LongPolling transport) Error sending a DELETE request: ${r}`)):this._logger.log(Ot.Trace,"(LongPolling transport) DELETE request accepted.")}finally{this._logger.log(Ot.Trace,"(LongPolling transport) Stop finished."),this._raiseOnClose()}}_raiseOnClose(){if(this.onclose){let e="(LongPolling transport) Firing onclose event.";this._closeError&&(e+=" Error: "+this._closeError),this._logger.log(Ot.Trace,e),this.onclose(this._closeError)}}}class An{constructor(e,t,n,o){this._httpClient=e,this._accessToken=t,this._logger=n,this._options=o,this.onreceive=null,this.onclose=null}async connect(e,t){return Ht.isRequired(e,"url"),Ht.isRequired(t,"transferFormat"),Ht.isIn(t,kn,"transferFormat"),this._logger.log(Ot.Trace,"(SSE transport) Connecting."),this._url=e,this._accessToken&&(e+=(e.indexOf("?")<0?"?":"&")+`access_token=${encodeURIComponent(this._accessToken)}`),new Promise(((n,o)=>{let r,i=!1;if(t===kn.Text){if(Wt.isBrowser||Wt.isWebWorker)r=new this._options.EventSource(e,{withCredentials:this._options.withCredentials});else{const t=this._httpClient.getCookieString(e),n={};n.Cookie=t;const[o,i]=Vt();n[o]=i,r=new this._options.EventSource(e,{withCredentials:this._options.withCredentials,headers:{...n,...this._options.headers}})}try{r.onmessage=e=>{if(this.onreceive)try{this._logger.log(Ot.Trace,`(SSE transport) data received. ${jt(e.data,this._options.logMessageContent)}.`),this.onreceive(e.data)}catch(e){return void this._close(e)}},r.onerror=e=>{i?this._close():o(new Error("EventSource failed to connect. The connection could not be found on the server, either the connection ID is not present on the server, or a proxy is refusing/buffering the connection. If you have multiple servers check that sticky sessions are enabled."))},r.onopen=()=>{this._logger.log(Ot.Information,`SSE connected to ${this._url}`),this._eventSource=r,i=!0,n()}}catch(e){return void o(e)}}else o(new Error("The Server-Sent Events transport only supports the 'Text' transfer format"))}))}async send(e){return this._eventSource?qt(this._logger,"SSE",this._httpClient,this._url,e,this._options):Promise.reject(new Error("Cannot send until the transport is connected"))}stop(){return this._close(),Promise.resolve()}_close(e){this._eventSource&&(this._eventSource.close(),this._eventSource=void 0,this.onclose&&this.onclose(e))}}class Dn{constructor(e,t,n,o,r,i){this._logger=n,this._accessTokenFactory=t,this._logMessageContent=o,this._webSocketConstructor=r,this._httpClient=e,this.onreceive=null,this.onclose=null,this._headers=i}async connect(e,t){let n;return Ht.isRequired(e,"url"),Ht.isRequired(t,"transferFormat"),Ht.isIn(t,kn,"transferFormat"),this._logger.log(Ot.Trace,"(WebSockets transport) Connecting."),this._accessTokenFactory&&(n=await this._accessTokenFactory()),new Promise(((o,r)=>{let i;e=e.replace(/^http/,"ws");const s=this._httpClient.getCookieString(e);let a=!1;if(Wt.isReactNative){const t={},[o,r]=Vt();t[o]=r,n&&(t[vn.Authorization]=`Bearer ${n}`),s&&(t[vn.Cookie]=s),i=new this._webSocketConstructor(e,void 0,{headers:{...t,...this._headers}})}else n&&(e+=(e.indexOf("?")<0?"?":"&")+`access_token=${encodeURIComponent(n)}`);i||(i=new this._webSocketConstructor(e)),t===kn.Binary&&(i.binaryType="arraybuffer"),i.onopen=t=>{this._logger.log(Ot.Information,`WebSocket connected to ${e}.`),this._webSocket=i,a=!0,o()},i.onerror=e=>{let t=null;t="undefined"!=typeof ErrorEvent&&e instanceof ErrorEvent?e.error:"There was an error with the transport",this._logger.log(Ot.Information,`(WebSockets transport) ${t}.`)},i.onmessage=e=>{if(this._logger.log(Ot.Trace,`(WebSockets transport) data received. ${jt(e.data,this._logMessageContent)}.`),this.onreceive)try{this.onreceive(e.data)}catch(e){return void this._close(e)}},i.onclose=e=>{if(a)this._close(e);else{let t=null;t="undefined"!=typeof ErrorEvent&&e instanceof ErrorEvent?e.error:"WebSocket failed to connect. The connection could not be found on the server, either the endpoint may not be a SignalR endpoint, the connection ID is not present on the server, or there is a proxy blocking WebSockets. If you have multiple servers check that sticky sessions are enabled.",r(new Error(t))}}}))}send(e){return this._webSocket&&this._webSocket.readyState===this._webSocketConstructor.OPEN?(this._logger.log(Ot.Trace,`(WebSockets transport) sending data. ${jt(e,this._logMessageContent)}.`),this._webSocket.send(e),Promise.resolve()):Promise.reject("WebSocket is not in the OPEN state")}stop(){return this._webSocket&&this._close(void 0),Promise.resolve()}_close(e){this._webSocket&&(this._webSocket.onclose=()=>{},this._webSocket.onmessage=()=>{},this._webSocket.onerror=()=>{},this._webSocket.close(),this._webSocket=void 0),this._logger.log(Ot.Trace,"(WebSockets transport) socket closed."),this.onclose&&(!this._isCloseEvent(e)||!1!==e.wasClean&&1e3===e.code?e instanceof Error?this.onclose(e):this.onclose():this.onclose(new Error(`WebSocket closed with status code: ${e.code} (${e.reason||"no reason given"}).`)))}_isCloseEvent(e){return e&&"boolean"==typeof e.wasClean&&"number"==typeof e.code}}class xn{constructor(e,t={}){if(this._stopPromiseResolver=()=>{},this.features={},this._negotiateVersion=1,Ht.isRequired(e,"url"),this._logger=function(e){return void 0===e?new Kt(Ot.Information):null===e?Ft.instance:void 0!==e.log?e:new Kt(e)}(t.logger),this.baseUrl=this._resolveUrl(e),(t=t||{}).logMessageContent=void 0!==t.logMessageContent&&t.logMessageContent,"boolean"!=typeof t.withCredentials&&void 0!==t.withCredentials)throw new Error("withCredentials option was not a 'boolean' or 'undefined' value");t.withCredentials=void 0===t.withCredentials||t.withCredentials,t.timeout=void 0===t.timeout?1e5:t.timeout,"undefined"==typeof WebSocket||t.WebSocket||(t.WebSocket=WebSocket),"undefined"==typeof EventSource||t.EventSource||(t.EventSource=EventSource),this._httpClient=new bn(t.httpClient||new En(this._logger),t.accessTokenFactory),this._connectionState="Disconnected",this._connectionStarted=!1,this._options=t,this.onreceive=null,this.onclose=null}async start(e){if(e=e||kn.Binary,Ht.isIn(e,kn,"transferFormat"),this._logger.log(Ot.Debug,`Starting connection with transfer format '${kn[e]}'.`),"Disconnected"!==this._connectionState)return Promise.reject(new Error("Cannot start an HttpConnection that is not in the 'Disconnected' state."));if(this._connectionState="Connecting",this._startInternalPromise=this._startInternal(e),await this._startInternalPromise,"Disconnecting"===this._connectionState){const e="Failed to start the HttpConnection before stop() was called.";return this._logger.log(Ot.Error,e),await this._stopPromise,Promise.reject(new nn(e))}if("Connected"!==this._connectionState){const e="HttpConnection.startInternal completed gracefully but didn't enter the connection into the connected state!";return this._logger.log(Ot.Error,e),Promise.reject(new nn(e))}this._connectionStarted=!0}send(e){return"Connected"!==this._connectionState?Promise.reject(new Error("Cannot send data if the connection is not in the 'Connected' State.")):(this._sendQueue||(this._sendQueue=new Nn(this.transport)),this._sendQueue.send(e))}async stop(e){return"Disconnected"===this._connectionState?(this._logger.log(Ot.Debug,`Call to HttpConnection.stop(${e}) ignored because the connection is already in the disconnected state.`),Promise.resolve()):"Disconnecting"===this._connectionState?(this._logger.log(Ot.Debug,`Call to HttpConnection.stop(${e}) ignored because the connection is already in the disconnecting state.`),this._stopPromise):(this._connectionState="Disconnecting",this._stopPromise=new Promise((e=>{this._stopPromiseResolver=e})),await this._stopInternal(e),void await this._stopPromise)}async _stopInternal(e){this._stopError=e;try{await this._startInternalPromise}catch(e){}if(this.transport){try{await this.transport.stop()}catch(e){this._logger.log(Ot.Error,`HttpConnection.transport.stop() threw error '${e}'.`),this._stopConnection()}this.transport=void 0}else this._logger.log(Ot.Debug,"HttpConnection.transport is undefined in HttpConnection.stop() because start() failed.")}async _startInternal(e){let t=this.baseUrl;this._accessTokenFactory=this._options.accessTokenFactory,this._httpClient._accessTokenFactory=this._accessTokenFactory;try{if(this._options.skipNegotiation){if(this._options.transport!==In.WebSockets)throw new Error("Negotiation can only be skipped when using the WebSocket transport directly.");this.transport=this._constructTransport(In.WebSockets),await this._startTransport(t,e)}else{let n=null,o=0;do{if(n=await this._getNegotiationResponse(t),"Disconnecting"===this._connectionState||"Disconnected"===this._connectionState)throw new nn("The connection was stopped during negotiation.");if(n.error)throw new Error(n.error);if(n.ProtocolVersion)throw new Error("Detected a connection attempt to an ASP.NET SignalR Server. This client only supports connecting to an ASP.NET Core SignalR Server. See https://aka.ms/signalr-core-differences for details.");if(n.url&&(t=n.url),n.accessToken){const e=n.accessToken;this._accessTokenFactory=()=>e,this._httpClient._accessToken=e,this._httpClient._accessTokenFactory=void 0}o++}while(n.url&&o<100);if(100===o&&n.url)throw new Error("Negotiate redirection limit exceeded.");await this._createTransport(t,this._options.transport,n,e)}this.transport instanceof Rn&&(this.features.inherentKeepAlive=!0),"Connecting"===this._connectionState&&(this._logger.log(Ot.Debug,"The HttpConnection connected successfully."),this._connectionState="Connected")}catch(e){return this._logger.log(Ot.Error,"Failed to start the connection: "+e),this._connectionState="Disconnected",this.transport=void 0,this._stopPromiseResolver(),Promise.reject(e)}}async _getNegotiationResponse(e){const t={},[n,o]=Vt();t[n]=o;const r=this._resolveNegotiateUrl(e);this._logger.log(Ot.Debug,`Sending negotiation request: ${r}.`);try{const e=await this._httpClient.post(r,{content:"",headers:{...t,...this._options.headers},timeout:this._options.timeout,withCredentials:this._options.withCredentials});if(200!==e.statusCode)return Promise.reject(new Error(`Unexpected status code returned from negotiate '${e.statusCode}'`));const n=JSON.parse(e.content);return(!n.negotiateVersion||n.negotiateVersion<1)&&(n.connectionToken=n.connectionId),n.useStatefulReconnect&&!0!==this._options._useStatefulReconnect?Promise.reject(new an("Client didn't negotiate Stateful Reconnect but the server did.")):n}catch(e){let t="Failed to complete negotiation with the server: "+e;return e instanceof en&&404===e.statusCode&&(t+=" Either this is not a SignalR endpoint or there is a proxy blocking the connection."),this._logger.log(Ot.Error,t),Promise.reject(new an(t))}}_createConnectUrl(e,t){return t?e+(-1===e.indexOf("?")?"?":"&")+`id=${t}`:e}async _createTransport(e,t,n,o){let r=this._createConnectUrl(e,n.connectionToken);if(this._isITransport(t))return this._logger.log(Ot.Debug,"Connection was provided an instance of ITransport, using that directly."),this.transport=t,await this._startTransport(r,o),void(this.connectionId=n.connectionId);const i=[],s=n.availableTransports||[];let a=n;for(const n of s){const s=this._resolveTransportOrError(n,t,o,!0===(null==a?void 0:a.useStatefulReconnect));if(s instanceof Error)i.push(`${n.transport} failed:`),i.push(s);else if(this._isITransport(s)){if(this.transport=s,!a){try{a=await this._getNegotiationResponse(e)}catch(e){return Promise.reject(e)}r=this._createConnectUrl(e,a.connectionToken)}try{return await this._startTransport(r,o),void(this.connectionId=a.connectionId)}catch(e){if(this._logger.log(Ot.Error,`Failed to start the transport '${n.transport}': ${e}`),a=void 0,i.push(new sn(`${n.transport} failed: ${e}`,In[n.transport])),"Connecting"!==this._connectionState){const e="Failed to select transport before stop() was called.";return this._logger.log(Ot.Debug,e),Promise.reject(new nn(e))}}}}return i.length>0?Promise.reject(new cn(`Unable to connect to the server with any of the available transports. ${i.join(" ")}`,i)):Promise.reject(new Error("None of the transports supported by the client are supported by the server."))}_constructTransport(e){switch(e){case In.WebSockets:if(!this._options.WebSocket)throw new Error("'WebSocket' is not supported in your environment.");return new Dn(this._httpClient,this._accessTokenFactory,this._logger,this._options.logMessageContent,this._options.WebSocket,this._options.headers||{});case In.ServerSentEvents:if(!this._options.EventSource)throw new Error("'EventSource' is not supported in your environment.");return new An(this._httpClient,this._httpClient._accessToken,this._logger,this._options);case In.LongPolling:return new Rn(this._httpClient,this._logger,this._options);default:throw new Error(`Unknown transport: ${e}.`)}}_startTransport(e,t){return this.transport.onreceive=this.onreceive,this.features.reconnect?this.transport.onclose=async n=>{let o=!1;if(this.features.reconnect){try{this.features.disconnected(),await this.transport.connect(e,t),await this.features.resend()}catch{o=!0}o&&this._stopConnection(n)}else this._stopConnection(n)}:this.transport.onclose=e=>this._stopConnection(e),this.transport.connect(e,t)}_resolveTransportOrError(e,t,n,o){const r=In[e.transport];if(null==r)return this._logger.log(Ot.Debug,`Skipping transport '${e.transport}' because it is not supported by this client.`),new Error(`Skipping transport '${e.transport}' because it is not supported by this client.`);if(!function(e,t){return!e||0!=(t&e)}(t,r))return this._logger.log(Ot.Debug,`Skipping transport '${In[r]}' because it was disabled by the client.`),new rn(`'${In[r]}' is disabled by the client.`,r);if(!(e.transferFormats.map((e=>kn[e])).indexOf(n)>=0))return this._logger.log(Ot.Debug,`Skipping transport '${In[r]}' because it does not support the requested transfer format '${kn[n]}'.`),new Error(`'${In[r]}' does not support ${kn[n]}.`);if(r===In.WebSockets&&!this._options.WebSocket||r===In.ServerSentEvents&&!this._options.EventSource)return this._logger.log(Ot.Debug,`Skipping transport '${In[r]}' because it is not supported in your environment.'`),new on(`'${In[r]}' is not supported in your environment.`,r);this._logger.log(Ot.Debug,`Selecting transport '${In[r]}'.`);try{return this.features.reconnect=r===In.WebSockets?o:void 0,this._constructTransport(r)}catch(e){return e}}_isITransport(e){return e&&"object"==typeof e&&"connect"in e}_stopConnection(e){if(this._logger.log(Ot.Debug,`HttpConnection.stopConnection(${e}) called while in state ${this._connectionState}.`),this.transport=void 0,e=this._stopError||e,this._stopError=void 0,"Disconnected"!==this._connectionState){if("Connecting"===this._connectionState)throw this._logger.log(Ot.Warning,`Call to HttpConnection.stopConnection(${e}) was ignored because the connection is still in the connecting state.`),new Error(`HttpConnection.stopConnection(${e}) was called while the connection is still in the connecting state.`);if("Disconnecting"===this._connectionState&&this._stopPromiseResolver(),e?this._logger.log(Ot.Error,`Connection disconnected with error '${e}'.`):this._logger.log(Ot.Information,"Connection disconnected."),this._sendQueue&&(this._sendQueue.stop().catch((e=>{this._logger.log(Ot.Error,`TransportSendQueue.stop() threw error '${e}'.`)})),this._sendQueue=void 0),this.connectionId=void 0,this._connectionState="Disconnected",this._connectionStarted){this._connectionStarted=!1;try{this.onclose&&this.onclose(e)}catch(t){this._logger.log(Ot.Error,`HttpConnection.onclose(${e}) threw error '${t}'.`)}}}else this._logger.log(Ot.Debug,`Call to HttpConnection.stopConnection(${e}) was ignored because the connection is already in the disconnected state.`)}_resolveUrl(e){if(0===e.lastIndexOf("https://",0)||0===e.lastIndexOf("http://",0))return e;if(!Wt.isBrowser)throw new Error(`Cannot resolve '${e}'.`);const t=window.document.createElement("a");return t.href=e,this._logger.log(Ot.Information,`Normalizing '${e}' to '${t.href}'.`),t.href}_resolveNegotiateUrl(e){const t=new URL(e);t.pathname.endsWith("/")?t.pathname+="negotiate":t.pathname+="/negotiate";const n=new URLSearchParams(t.searchParams);return n.has("negotiateVersion")||n.append("negotiateVersion",this._negotiateVersion.toString()),n.has("useStatefulReconnect")?"true"===n.get("useStatefulReconnect")&&(this._options._useStatefulReconnect=!0):!0===this._options._useStatefulReconnect&&n.append("useStatefulReconnect","true"),t.search=n.toString(),t.toString()}}class Nn{constructor(e){this._transport=e,this._buffer=[],this._executing=!0,this._sendBufferedData=new Pn,this._transportResult=new Pn,this._sendLoopPromise=this._sendLoop()}send(e){return this._bufferData(e),this._transportResult||(this._transportResult=new Pn),this._transportResult.promise}stop(){return this._executing=!1,this._sendBufferedData.resolve(),this._sendLoopPromise}_bufferData(e){if(this._buffer.length&&typeof this._buffer[0]!=typeof e)throw new Error(`Expected data to be of type ${typeof this._buffer} but was of type ${typeof e}`);this._buffer.push(e),this._sendBufferedData.resolve()}async _sendLoop(){for(;;){if(await this._sendBufferedData.promise,!this._executing){this._transportResult&&this._transportResult.reject("Connection stopped.");break}this._sendBufferedData=new Pn;const e=this._transportResult;this._transportResult=void 0;const t="string"==typeof this._buffer[0]?this._buffer.join(""):Nn._concatBuffers(this._buffer);this._buffer.length=0;try{await this._transport.send(t),e.resolve()}catch(t){e.reject(t)}}}static _concatBuffers(e){const t=e.map((e=>e.byteLength)).reduce(((e,t)=>e+t)),n=new Uint8Array(t);let o=0;for(const t of e)n.set(new Uint8Array(t),o),o+=t.byteLength;return n.buffer}}class Pn{constructor(){this.promise=new Promise(((e,t)=>[this._resolver,this._rejecter]=[e,t]))}resolve(){this._resolver()}reject(e){this._rejecter(e)}}class Mn{constructor(){this.name="json",this.version=2,this.transferFormat=kn.Text}parseMessages(e,t){if("string"!=typeof e)throw new Error("Invalid input for JSON hub protocol. Expected a string.");if(!e)return[];null===t&&(t=Ft.instance);const n=Bt.parse(e),o=[];for(const e of n){const n=JSON.parse(e);if("number"!=typeof n.type)throw new Error("Invalid payload.");switch(n.type){case ln.Invocation:this._isInvocationMessage(n);break;case ln.StreamItem:this._isStreamItemMessage(n);break;case ln.Completion:this._isCompletionMessage(n);break;case ln.Ping:case ln.Close:break;case ln.Ack:this._isAckMessage(n);break;case ln.Sequence:this._isSequenceMessage(n);break;default:t.log(Ot.Information,"Unknown message type '"+n.type+"' ignored.");continue}o.push(n)}return o}writeMessage(e){return Bt.write(JSON.stringify(e))}_isInvocationMessage(e){this._assertNotEmptyString(e.target,"Invalid payload for Invocation message."),void 0!==e.invocationId&&this._assertNotEmptyString(e.invocationId,"Invalid payload for Invocation message.")}_isStreamItemMessage(e){if(this._assertNotEmptyString(e.invocationId,"Invalid payload for StreamItem message."),void 0===e.item)throw new Error("Invalid payload for StreamItem message.")}_isCompletionMessage(e){if(e.result&&e.error)throw new Error("Invalid payload for Completion message.");!e.result&&e.error&&this._assertNotEmptyString(e.error,"Invalid payload for Completion message."),this._assertNotEmptyString(e.invocationId,"Invalid payload for Completion message.")}_isAckMessage(e){if("number"!=typeof e.sequenceId)throw new Error("Invalid SequenceId for Ack message.")}_isSequenceMessage(e){if("number"!=typeof e.sequenceId)throw new Error("Invalid SequenceId for Sequence message.")}_assertNotEmptyString(e,t){if("string"!=typeof e||""===e)throw new Error(t)}}const Un={trace:Ot.Trace,debug:Ot.Debug,info:Ot.Information,information:Ot.Information,warn:Ot.Warning,warning:Ot.Warning,error:Ot.Error,critical:Ot.Critical,none:Ot.None};class Ln{configureLogging(e){if(Ht.isRequired(e,"logging"),function(e){return void 0!==e.log}(e))this.logger=e;else if("string"==typeof e){const t=function(e){const t=Un[e.toLowerCase()];if(void 0!==t)return t;throw new Error(`Unknown log level: ${e}`)}(e);this.logger=new Kt(t)}else this.logger=new Kt(e);return this}withUrl(e,t){return Ht.isRequired(e,"url"),Ht.isNotEmpty(e,"url"),this.url=e,this.httpConnectionOptions="object"==typeof t?{...this.httpConnectionOptions,...t}:{...this.httpConnectionOptions,transport:t},this}withHubProtocol(e){return Ht.isRequired(e,"protocol"),this.protocol=e,this}withAutomaticReconnect(e){if(this.reconnectPolicy)throw new Error("A reconnectPolicy has already been set.");return e?Array.isArray(e)?this.reconnectPolicy=new mn(e):this.reconnectPolicy=e:this.reconnectPolicy=new mn,this}withServerTimeout(e){return Ht.isRequired(e,"milliseconds"),this._serverTimeoutInMilliseconds=e,this}withKeepAliveInterval(e){return Ht.isRequired(e,"milliseconds"),this._keepAliveIntervalInMilliseconds=e,this}withStatefulReconnect(e){return void 0===this.httpConnectionOptions&&(this.httpConnectionOptions={}),this.httpConnectionOptions._useStatefulReconnect=!0,this._statefulReconnectBufferSize=null==e?void 0:e.bufferSize,this}build(){const e=this.httpConnectionOptions||{};if(void 0===e.logger&&(e.logger=this.logger),!this.url)throw new Error("The 'HubConnectionBuilder.withUrl' method must be called before building the connection.");const t=new xn(this.url,e);return fn.create(t,this.logger||Ft.instance,this.protocol||new Mn,this.reconnectPolicy,this._serverTimeoutInMilliseconds,this._keepAliveIntervalInMilliseconds,this._statefulReconnectBufferSize)}}var Bn;!function(e){e[e.Default=0]="Default",e[e.Server=1]="Server",e[e.WebAssembly=2]="WebAssembly",e[e.WebView=3]="WebView"}(Bn||(Bn={}));var On,Fn,$n,Hn=4294967295;function Wn(e,t,n){var o=Math.floor(n/4294967296),r=n;e.setUint32(t,o),e.setUint32(t+4,r)}function jn(e,t){return 4294967296*e.getInt32(t)+e.getUint32(t+4)}var zn=("undefined"==typeof process||"never"!==(null===(On=null===process||void 0===process?void 0:process.env)||void 0===On?void 0:On.TEXT_ENCODING))&&"undefined"!=typeof TextEncoder&&"undefined"!=typeof TextDecoder;function qn(e){for(var t=e.length,n=0,o=0;o=55296&&r<=56319&&o65535&&(h-=65536,i.push(h>>>10&1023|55296),h=56320|1023&h),i.push(h)}else i.push(a);i.length>=4096&&(s+=String.fromCharCode.apply(String,i),i.length=0)}return i.length>0&&(s+=String.fromCharCode.apply(String,i)),s}var Gn,Yn=zn?new TextDecoder:null,Qn=zn?"undefined"!=typeof process&&"force"!==(null===($n=null===process||void 0===process?void 0:process.env)||void 0===$n?void 0:$n.TEXT_DECODER)?200:0:Hn,Zn=function(e,t){this.type=e,this.data=t},eo=(Gn=function(e,t){return Gn=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},Gn(e,t)},function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function n(){this.constructor=e}Gn(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}),to=function(e){function t(n){var o=e.call(this,n)||this,r=Object.create(t.prototype);return Object.setPrototypeOf(o,r),Object.defineProperty(o,"name",{configurable:!0,enumerable:!1,value:t.name}),o}return eo(t,e),t}(Error),no={type:-1,encode:function(e){var t,n,o,r;return e instanceof Date?function(e){var t,n=e.sec,o=e.nsec;if(n>=0&&o>=0&&n<=17179869183){if(0===o&&n<=4294967295){var r=new Uint8Array(4);return(t=new DataView(r.buffer)).setUint32(0,n),r}var i=n/4294967296,s=4294967295&n;return r=new Uint8Array(8),(t=new DataView(r.buffer)).setUint32(0,o<<2|3&i),t.setUint32(4,s),r}return r=new Uint8Array(12),(t=new DataView(r.buffer)).setUint32(0,o),Wn(t,4,n),r}((o=1e6*((t=e.getTime())-1e3*(n=Math.floor(t/1e3))),{sec:n+(r=Math.floor(o/1e9)),nsec:o-1e9*r})):null},decode:function(e){var t=function(e){var t=new DataView(e.buffer,e.byteOffset,e.byteLength);switch(e.byteLength){case 4:return{sec:t.getUint32(0),nsec:0};case 8:var n=t.getUint32(0);return{sec:4294967296*(3&n)+t.getUint32(4),nsec:n>>>2};case 12:return{sec:jn(t,4),nsec:t.getUint32(0)};default:throw new to("Unrecognized data size for timestamp (expected 4, 8, or 12): ".concat(e.length))}}(e);return new Date(1e3*t.sec+t.nsec/1e6)}},oo=function(){function e(){this.builtInEncoders=[],this.builtInDecoders=[],this.encoders=[],this.decoders=[],this.register(no)}return e.prototype.register=function(e){var t=e.type,n=e.encode,o=e.decode;if(t>=0)this.encoders[t]=n,this.decoders[t]=o;else{var r=1+t;this.builtInEncoders[r]=n,this.builtInDecoders[r]=o}},e.prototype.tryToEncode=function(e,t){for(var n=0;nthis.maxDepth)throw new Error("Too deep objects in depth ".concat(t));null==e?this.encodeNil():"boolean"==typeof e?this.encodeBoolean(e):"number"==typeof e?this.encodeNumber(e):"string"==typeof e?this.encodeString(e):this.encodeObject(e,t)},e.prototype.ensureBufferSizeToWrite=function(e){var t=this.pos+e;this.view.byteLength=0?e<128?this.writeU8(e):e<256?(this.writeU8(204),this.writeU8(e)):e<65536?(this.writeU8(205),this.writeU16(e)):e<4294967296?(this.writeU8(206),this.writeU32(e)):(this.writeU8(207),this.writeU64(e)):e>=-32?this.writeU8(224|e+32):e>=-128?(this.writeU8(208),this.writeI8(e)):e>=-32768?(this.writeU8(209),this.writeI16(e)):e>=-2147483648?(this.writeU8(210),this.writeI32(e)):(this.writeU8(211),this.writeI64(e)):this.forceFloat32?(this.writeU8(202),this.writeF32(e)):(this.writeU8(203),this.writeF64(e))},e.prototype.writeStringHeader=function(e){if(e<32)this.writeU8(160+e);else if(e<256)this.writeU8(217),this.writeU8(e);else if(e<65536)this.writeU8(218),this.writeU16(e);else{if(!(e<4294967296))throw new Error("Too long string: ".concat(e," bytes in UTF-8"));this.writeU8(219),this.writeU32(e)}},e.prototype.encodeString=function(e){if(e.length>Kn){var t=qn(e);this.ensureBufferSizeToWrite(5+t),this.writeStringHeader(t),Vn(e,this.bytes,this.pos),this.pos+=t}else t=qn(e),this.ensureBufferSizeToWrite(5+t),this.writeStringHeader(t),function(e,t,n){for(var o=e.length,r=n,i=0;i>6&31|192;else{if(s>=55296&&s<=56319&&i>12&15|224,t[r++]=s>>6&63|128):(t[r++]=s>>18&7|240,t[r++]=s>>12&63|128,t[r++]=s>>6&63|128)}t[r++]=63&s|128}else t[r++]=s}}(e,this.bytes,this.pos),this.pos+=t},e.prototype.encodeObject=function(e,t){var n=this.extensionCodec.tryToEncode(e,this.context);if(null!=n)this.encodeExtension(n);else if(Array.isArray(e))this.encodeArray(e,t);else if(ArrayBuffer.isView(e))this.encodeBinary(e);else{if("object"!=typeof e)throw new Error("Unrecognized object: ".concat(Object.prototype.toString.apply(e)));this.encodeMap(e,t)}},e.prototype.encodeBinary=function(e){var t=e.byteLength;if(t<256)this.writeU8(196),this.writeU8(t);else if(t<65536)this.writeU8(197),this.writeU16(t);else{if(!(t<4294967296))throw new Error("Too large binary: ".concat(t));this.writeU8(198),this.writeU32(t)}var n=ro(e);this.writeU8a(n)},e.prototype.encodeArray=function(e,t){var n=e.length;if(n<16)this.writeU8(144+n);else if(n<65536)this.writeU8(220),this.writeU16(n);else{if(!(n<4294967296))throw new Error("Too large array: ".concat(n));this.writeU8(221),this.writeU32(n)}for(var o=0,r=e;o0&&e<=this.maxKeyLength},e.prototype.find=function(e,t,n){e:for(var o=0,r=this.caches[n-1];o=this.maxLengthPerKey?n[Math.random()*n.length|0]=o:n.push(o)},e.prototype.decode=function(e,t,n){var o=this.find(e,t,n);if(null!=o)return this.hit++,o;this.miss++;var r=Xn(e,t,n),i=Uint8Array.prototype.slice.call(e,t,t+n);return this.store(i,r),r},e}(),co=function(e,t){var n,o,r,i,s={label:0,sent:function(){if(1&r[0])throw r[1];return r[1]},trys:[],ops:[]};return i={next:a(0),throw:a(1),return:a(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function a(i){return function(a){return function(i){if(n)throw new TypeError("Generator is already executing.");for(;s;)try{if(n=1,o&&(r=2&i[0]?o.return:i[0]?o.throw||((r=o.return)&&r.call(o),0):o.next)&&!(r=r.call(o,i[1])).done)return r;switch(o=0,r&&(i=[2&i[0],r.value]),i[0]){case 0:case 1:r=i;break;case 4:return s.label++,{value:i[1],done:!1};case 5:s.label++,o=i[1],i=[0];continue;case 7:i=s.ops.pop(),s.trys.pop();continue;default:if(!((r=(r=s.trys).length>0&&r[r.length-1])||6!==i[0]&&2!==i[0])){s=0;continue}if(3===i[0]&&(!r||i[1]>r[0]&&i[1]=e},e.prototype.createExtraByteError=function(e){var t=this.view,n=this.pos;return new RangeError("Extra ".concat(t.byteLength-n," of ").concat(t.byteLength," byte(s) found at buffer[").concat(e,"]"))},e.prototype.decode=function(e){this.reinitializeState(),this.setBuffer(e);var t=this.doDecodeSync();if(this.hasRemaining(1))throw this.createExtraByteError(this.pos);return t},e.prototype.decodeMulti=function(e){return co(this,(function(t){switch(t.label){case 0:this.reinitializeState(),this.setBuffer(e),t.label=1;case 1:return this.hasRemaining(1)?[4,this.doDecodeSync()]:[3,3];case 2:return t.sent(),[3,1];case 3:return[2]}}))},e.prototype.decodeAsync=function(e){var t,n,o,r,i,s,a;return i=this,void 0,a=function(){var i,s,a,c,l,h,d,u;return co(this,(function(p){switch(p.label){case 0:i=!1,p.label=1;case 1:p.trys.push([1,6,7,12]),t=lo(e),p.label=2;case 2:return[4,t.next()];case 3:if((n=p.sent()).done)return[3,5];if(a=n.value,i)throw this.createExtraByteError(this.totalPos);this.appendBuffer(a);try{s=this.doDecodeSync(),i=!0}catch(e){if(!(e instanceof fo))throw e}this.totalPos+=this.pos,p.label=4;case 4:return[3,2];case 5:return[3,12];case 6:return c=p.sent(),o={error:c},[3,12];case 7:return p.trys.push([7,,10,11]),n&&!n.done&&(r=t.return)?[4,r.call(t)]:[3,9];case 8:p.sent(),p.label=9;case 9:return[3,11];case 10:if(o)throw o.error;return[7];case 11:return[7];case 12:if(i){if(this.hasRemaining(1))throw this.createExtraByteError(this.totalPos);return[2,s]}throw h=(l=this).headByte,d=l.pos,u=l.totalPos,new RangeError("Insufficient data in parsing ".concat(so(h)," at ").concat(u," (").concat(d," in the current buffer)"))}}))},new((s=void 0)||(s=Promise))((function(e,t){function n(e){try{r(a.next(e))}catch(e){t(e)}}function o(e){try{r(a.throw(e))}catch(e){t(e)}}function r(t){var r;t.done?e(t.value):(r=t.value,r instanceof s?r:new s((function(e){e(r)}))).then(n,o)}r((a=a.apply(i,[])).next())}))},e.prototype.decodeArrayStream=function(e){return this.decodeMultiAsync(e,!0)},e.prototype.decodeStream=function(e){return this.decodeMultiAsync(e,!1)},e.prototype.decodeMultiAsync=function(e,t){return function(n,o,r){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var i,s=function(){var n,o,r,i,s,a,c,l,h;return co(this,(function(d){switch(d.label){case 0:n=t,o=-1,d.label=1;case 1:d.trys.push([1,13,14,19]),r=lo(e),d.label=2;case 2:return[4,ho(r.next())];case 3:if((i=d.sent()).done)return[3,12];if(s=i.value,t&&0===o)throw this.createExtraByteError(this.totalPos);this.appendBuffer(s),n&&(o=this.readArraySize(),n=!1,this.complete()),d.label=4;case 4:d.trys.push([4,9,,10]),d.label=5;case 5:return[4,ho(this.doDecodeSync())];case 6:return[4,d.sent()];case 7:return d.sent(),0==--o?[3,8]:[3,5];case 8:return[3,10];case 9:if(!((a=d.sent())instanceof fo))throw a;return[3,10];case 10:this.totalPos+=this.pos,d.label=11;case 11:return[3,2];case 12:return[3,19];case 13:return c=d.sent(),l={error:c},[3,19];case 14:return d.trys.push([14,,17,18]),i&&!i.done&&(h=r.return)?[4,ho(h.call(r))]:[3,16];case 15:d.sent(),d.label=16;case 16:return[3,18];case 17:if(l)throw l.error;return[7];case 18:return[7];case 19:return[2]}}))}.apply(n,o||[]),a=[];return i={},c("next"),c("throw"),c("return"),i[Symbol.asyncIterator]=function(){return this},i;function c(e){s[e]&&(i[e]=function(t){return new Promise((function(n,o){a.push([e,t,n,o])>1||l(e,t)}))})}function l(e,t){try{(n=s[e](t)).value instanceof ho?Promise.resolve(n.value.v).then(h,d):u(a[0][2],n)}catch(e){u(a[0][3],e)}var n}function h(e){l("next",e)}function d(e){l("throw",e)}function u(e,t){e(t),a.shift(),a.length&&l(a[0][0],a[0][1])}}(this,arguments)},e.prototype.doDecodeSync=function(){e:for(;;){var e=this.readHeadByte(),t=void 0;if(e>=224)t=e-256;else if(e<192)if(e<128)t=e;else if(e<144){if(0!=(o=e-128)){this.pushMapState(o),this.complete();continue e}t={}}else if(e<160){if(0!=(o=e-144)){this.pushArrayState(o),this.complete();continue e}t=[]}else{var n=e-160;t=this.decodeUtf8String(n,0)}else if(192===e)t=null;else if(194===e)t=!1;else if(195===e)t=!0;else if(202===e)t=this.readF32();else if(203===e)t=this.readF64();else if(204===e)t=this.readU8();else if(205===e)t=this.readU16();else if(206===e)t=this.readU32();else if(207===e)t=this.readU64();else if(208===e)t=this.readI8();else if(209===e)t=this.readI16();else if(210===e)t=this.readI32();else if(211===e)t=this.readI64();else if(217===e)n=this.lookU8(),t=this.decodeUtf8String(n,1);else if(218===e)n=this.lookU16(),t=this.decodeUtf8String(n,2);else if(219===e)n=this.lookU32(),t=this.decodeUtf8String(n,4);else if(220===e){if(0!==(o=this.readU16())){this.pushArrayState(o),this.complete();continue e}t=[]}else if(221===e){if(0!==(o=this.readU32())){this.pushArrayState(o),this.complete();continue e}t=[]}else if(222===e){if(0!==(o=this.readU16())){this.pushMapState(o),this.complete();continue e}t={}}else if(223===e){if(0!==(o=this.readU32())){this.pushMapState(o),this.complete();continue e}t={}}else if(196===e){var o=this.lookU8();t=this.decodeBinary(o,1)}else if(197===e)o=this.lookU16(),t=this.decodeBinary(o,2);else if(198===e)o=this.lookU32(),t=this.decodeBinary(o,4);else if(212===e)t=this.decodeExtension(1,0);else if(213===e)t=this.decodeExtension(2,0);else if(214===e)t=this.decodeExtension(4,0);else if(215===e)t=this.decodeExtension(8,0);else if(216===e)t=this.decodeExtension(16,0);else if(199===e)o=this.lookU8(),t=this.decodeExtension(o,1);else if(200===e)o=this.lookU16(),t=this.decodeExtension(o,2);else{if(201!==e)throw new to("Unrecognized type byte: ".concat(so(e)));o=this.lookU32(),t=this.decodeExtension(o,4)}this.complete();for(var r=this.stack;r.length>0;){var i=r[r.length-1];if(0===i.type){if(i.array[i.position]=t,i.position++,i.position!==i.size)continue e;r.pop(),t=i.array}else{if(1===i.type){if("string"!=(s=typeof t)&&"number"!==s)throw new to("The type of key must be string or number but "+typeof t);if("__proto__"===t)throw new to("The key __proto__ is not allowed");i.key=t,i.type=2;continue e}if(i.map[i.key]=t,i.readCount++,i.readCount!==i.size){i.key=null,i.type=1;continue e}r.pop(),t=i.map}}return t}var s},e.prototype.readHeadByte=function(){return-1===this.headByte&&(this.headByte=this.readU8()),this.headByte},e.prototype.complete=function(){this.headByte=-1},e.prototype.readArraySize=function(){var e=this.readHeadByte();switch(e){case 220:return this.readU16();case 221:return this.readU32();default:if(e<160)return e-144;throw new to("Unrecognized array type byte: ".concat(so(e)))}},e.prototype.pushMapState=function(e){if(e>this.maxMapLength)throw new to("Max length exceeded: map length (".concat(e,") > maxMapLengthLength (").concat(this.maxMapLength,")"));this.stack.push({type:1,size:e,key:null,readCount:0,map:{}})},e.prototype.pushArrayState=function(e){if(e>this.maxArrayLength)throw new to("Max length exceeded: array length (".concat(e,") > maxArrayLength (").concat(this.maxArrayLength,")"));this.stack.push({type:0,size:e,array:new Array(e),position:0})},e.prototype.decodeUtf8String=function(e,t){var n;if(e>this.maxStrLength)throw new to("Max length exceeded: UTF-8 byte length (".concat(e,") > maxStrLength (").concat(this.maxStrLength,")"));if(this.bytes.byteLengthQn?function(e,t,n){var o=e.subarray(t,t+n);return Yn.decode(o)}(this.bytes,r,e):Xn(this.bytes,r,e),this.pos+=t+e,o},e.prototype.stateIsMapKey=function(){return this.stack.length>0&&1===this.stack[this.stack.length-1].type},e.prototype.decodeBinary=function(e,t){if(e>this.maxBinLength)throw new to("Max length exceeded: bin length (".concat(e,") > maxBinLength (").concat(this.maxBinLength,")"));if(!this.hasRemaining(e+t))throw go;var n=this.pos+t,o=this.bytes.subarray(n,n+e);return this.pos+=t+e,o},e.prototype.decodeExtension=function(e,t){if(e>this.maxExtLength)throw new to("Max length exceeded: ext length (".concat(e,") > maxExtLength (").concat(this.maxExtLength,")"));var n=this.view.getInt8(this.pos+t),o=this.decodeBinary(e,t+1);return this.extensionCodec.decode(o,n,this.context)},e.prototype.lookU8=function(){return this.view.getUint8(this.pos)},e.prototype.lookU16=function(){return this.view.getUint16(this.pos)},e.prototype.lookU32=function(){return this.view.getUint32(this.pos)},e.prototype.readU8=function(){var e=this.view.getUint8(this.pos);return this.pos++,e},e.prototype.readI8=function(){var e=this.view.getInt8(this.pos);return this.pos++,e},e.prototype.readU16=function(){var e=this.view.getUint16(this.pos);return this.pos+=2,e},e.prototype.readI16=function(){var e=this.view.getInt16(this.pos);return this.pos+=2,e},e.prototype.readU32=function(){var e=this.view.getUint32(this.pos);return this.pos+=4,e},e.prototype.readI32=function(){var e=this.view.getInt32(this.pos);return this.pos+=4,e},e.prototype.readU64=function(){var e,t,n=(e=this.view,t=this.pos,4294967296*e.getUint32(t)+e.getUint32(t+4));return this.pos+=8,n},e.prototype.readI64=function(){var e=jn(this.view,this.pos);return this.pos+=8,e},e.prototype.readF32=function(){var e=this.view.getFloat32(this.pos);return this.pos+=4,e},e.prototype.readF64=function(){var e=this.view.getFloat64(this.pos);return this.pos+=8,e},e}();class yo{static write(e){let t=e.byteLength||e.length;const n=[];do{let e=127&t;t>>=7,t>0&&(e|=128),n.push(e)}while(t>0);t=e.byteLength||e.length;const o=new Uint8Array(n.length+t);return o.set(n,0),o.set(e,n.length),o.buffer}static parse(e){const t=[],n=new Uint8Array(e),o=[0,7,14,21,28];for(let r=0;r7)throw new Error("Messages bigger than 2GB are not supported.");if(!(n.byteLength>=r+s+a))throw new Error("Incomplete message.");t.push(n.slice?n.slice(r+s,r+s+a):n.subarray(r+s,r+s+a)),r=r+s+a}return t}}const wo=new Uint8Array([145,ln.Ping]);class bo{constructor(e){this.name="messagepack",this.version=2,this.transferFormat=kn.Binary,this._errorResult=1,this._voidResult=2,this._nonVoidResult=3,e=e||{},this._encoder=new io(e.extensionCodec,e.context,e.maxDepth,e.initialBufferSize,e.sortKeys,e.forceFloat32,e.ignoreUndefined,e.forceIntegerToFloat),this._decoder=new vo(e.extensionCodec,e.context,e.maxStrLength,e.maxBinLength,e.maxArrayLength,e.maxMapLength,e.maxExtLength)}parseMessages(e,t){if(!(n=e)||"undefined"==typeof ArrayBuffer||!(n instanceof ArrayBuffer||n.constructor&&"ArrayBuffer"===n.constructor.name))throw new Error("Invalid input for MessagePack hub protocol. Expected an ArrayBuffer.");var n;null===t&&(t=Ft.instance);const o=yo.parse(e),r=[];for(const e of o){const n=this._parseMessage(e,t);n&&r.push(n)}return r}writeMessage(e){switch(e.type){case ln.Invocation:return this._writeInvocation(e);case ln.StreamInvocation:return this._writeStreamInvocation(e);case ln.StreamItem:return this._writeStreamItem(e);case ln.Completion:return this._writeCompletion(e);case ln.Ping:return yo.write(wo);case ln.CancelInvocation:return this._writeCancelInvocation(e);case ln.Close:return this._writeClose();case ln.Ack:return this._writeAck(e);case ln.Sequence:return this._writeSequence(e);default:throw new Error("Invalid message type.")}}_parseMessage(e,t){if(0===e.length)throw new Error("Invalid payload.");const n=this._decoder.decode(e);if(0===n.length||!(n instanceof Array))throw new Error("Invalid payload.");const o=n[0];switch(o){case ln.Invocation:return this._createInvocationMessage(this._readHeaders(n),n);case ln.StreamItem:return this._createStreamItemMessage(this._readHeaders(n),n);case ln.Completion:return this._createCompletionMessage(this._readHeaders(n),n);case ln.Ping:return this._createPingMessage(n);case ln.Close:return this._createCloseMessage(n);case ln.Ack:return this._createAckMessage(n);case ln.Sequence:return this._createSequenceMessage(n);default:return t.log(Ot.Information,"Unknown message type '"+o+"' ignored."),null}}_createCloseMessage(e){if(e.length<2)throw new Error("Invalid payload for Close message.");return{allowReconnect:e.length>=3?e[2]:void 0,error:e[1],type:ln.Close}}_createPingMessage(e){if(e.length<1)throw new Error("Invalid payload for Ping message.");return{type:ln.Ping}}_createInvocationMessage(e,t){if(t.length<5)throw new Error("Invalid payload for Invocation message.");const n=t[2];return n?{arguments:t[4],headers:e,invocationId:n,streamIds:[],target:t[3],type:ln.Invocation}:{arguments:t[4],headers:e,streamIds:[],target:t[3],type:ln.Invocation}}_createStreamItemMessage(e,t){if(t.length<4)throw new Error("Invalid payload for StreamItem message.");return{headers:e,invocationId:t[2],item:t[3],type:ln.StreamItem}}_createCompletionMessage(e,t){if(t.length<4)throw new Error("Invalid payload for Completion message.");const n=t[3];if(n!==this._voidResult&&t.length<5)throw new Error("Invalid payload for Completion message.");let o,r;switch(n){case this._errorResult:o=t[4];break;case this._nonVoidResult:r=t[4]}return{error:o,headers:e,invocationId:t[2],result:r,type:ln.Completion}}_createAckMessage(e){if(e.length<1)throw new Error("Invalid payload for Ack message.");return{sequenceId:e[1],type:ln.Ack}}_createSequenceMessage(e){if(e.length<1)throw new Error("Invalid payload for Sequence message.");return{sequenceId:e[1],type:ln.Sequence}}_writeInvocation(e){let t;return t=e.streamIds?this._encoder.encode([ln.Invocation,e.headers||{},e.invocationId||null,e.target,e.arguments,e.streamIds]):this._encoder.encode([ln.Invocation,e.headers||{},e.invocationId||null,e.target,e.arguments]),yo.write(t.slice())}_writeStreamInvocation(e){let t;return t=e.streamIds?this._encoder.encode([ln.StreamInvocation,e.headers||{},e.invocationId,e.target,e.arguments,e.streamIds]):this._encoder.encode([ln.StreamInvocation,e.headers||{},e.invocationId,e.target,e.arguments]),yo.write(t.slice())}_writeStreamItem(e){const t=this._encoder.encode([ln.StreamItem,e.headers||{},e.invocationId,e.item]);return yo.write(t.slice())}_writeCompletion(e){const t=e.error?this._errorResult:void 0!==e.result?this._nonVoidResult:this._voidResult;let n;switch(t){case this._errorResult:n=this._encoder.encode([ln.Completion,e.headers||{},e.invocationId,t,e.error]);break;case this._voidResult:n=this._encoder.encode([ln.Completion,e.headers||{},e.invocationId,t]);break;case this._nonVoidResult:n=this._encoder.encode([ln.Completion,e.headers||{},e.invocationId,t,e.result])}return yo.write(n.slice())}_writeCancelInvocation(e){const t=this._encoder.encode([ln.CancelInvocation,e.headers||{},e.invocationId]);return yo.write(t.slice())}_writeClose(){const e=this._encoder.encode([ln.Close,null]);return yo.write(e.slice())}_writeAck(e){const t=this._encoder.encode([ln.Ack,e.sequenceId]);return yo.write(t.slice())}_writeSequence(e){const t=this._encoder.encode([ln.Sequence,e.sequenceId]);return yo.write(t.slice())}_readHeaders(e){const t=e[1];if("object"!=typeof t)throw new Error("Invalid headers.");return t}}const _o="function"==typeof TextDecoder?new TextDecoder("utf-8"):null,So=_o?_o.decode.bind(_o):function(e){let t=0;const n=e.length,o=[],r=[];for(;t65535&&(r-=65536,o.push(r>>>10&1023|55296),r=56320|1023&r),o.push(r)}o.length>1024&&(r.push(String.fromCharCode.apply(null,o)),o.length=0)}return r.push(String.fromCharCode.apply(null,o)),r.join("")},Co=Math.pow(2,32),Eo=Math.pow(2,21)-1;function Io(e,t){return e[t]|e[t+1]<<8|e[t+2]<<16|e[t+3]<<24}function ko(e,t){return e[t]+(e[t+1]<<8)+(e[t+2]<<16)+(e[t+3]<<24>>>0)}function To(e,t){const n=ko(e,t+4);if(n>Eo)throw new Error(`Cannot read uint64 with high order part ${n}, because the result would exceed Number.MAX_SAFE_INTEGER.`);return n*Co+ko(e,t)}class Ro{constructor(e){this.batchData=e;const t=new No(e);this.arrayRangeReader=new Po(e),this.arrayBuilderSegmentReader=new Mo(e),this.diffReader=new Ao(e),this.editReader=new Do(e,t),this.frameReader=new xo(e,t)}updatedComponents(){return Io(this.batchData,this.batchData.length-20)}referenceFrames(){return Io(this.batchData,this.batchData.length-16)}disposedComponentIds(){return Io(this.batchData,this.batchData.length-12)}disposedEventHandlerIds(){return Io(this.batchData,this.batchData.length-8)}updatedComponentsEntry(e,t){const n=e+4*t;return Io(this.batchData,n)}referenceFramesEntry(e,t){return e+20*t}disposedComponentIdsEntry(e,t){const n=e+4*t;return Io(this.batchData,n)}disposedEventHandlerIdsEntry(e,t){const n=e+8*t;return To(this.batchData,n)}}class Ao{constructor(e){this.batchDataUint8=e}componentId(e){return Io(this.batchDataUint8,e)}edits(e){return e+4}editsEntry(e,t){return e+16*t}}class Do{constructor(e,t){this.batchDataUint8=e,this.stringReader=t}editType(e){return Io(this.batchDataUint8,e)}siblingIndex(e){return Io(this.batchDataUint8,e+4)}newTreeIndex(e){return Io(this.batchDataUint8,e+8)}moveToSiblingIndex(e){return Io(this.batchDataUint8,e+8)}removedAttributeName(e){const t=Io(this.batchDataUint8,e+12);return this.stringReader.readString(t)}}class xo{constructor(e,t){this.batchDataUint8=e,this.stringReader=t}frameType(e){return Io(this.batchDataUint8,e)}subtreeLength(e){return Io(this.batchDataUint8,e+4)}elementReferenceCaptureId(e){const t=Io(this.batchDataUint8,e+4);return this.stringReader.readString(t)}componentId(e){return Io(this.batchDataUint8,e+8)}elementName(e){const t=Io(this.batchDataUint8,e+8);return this.stringReader.readString(t)}textContent(e){const t=Io(this.batchDataUint8,e+4);return this.stringReader.readString(t)}markupContent(e){const t=Io(this.batchDataUint8,e+4);return this.stringReader.readString(t)}attributeName(e){const t=Io(this.batchDataUint8,e+4);return this.stringReader.readString(t)}attributeValue(e){const t=Io(this.batchDataUint8,e+8);return this.stringReader.readString(t)}attributeEventHandlerId(e){return To(this.batchDataUint8,e+12)}}class No{constructor(e){this.batchDataUint8=e,this.stringTableStartIndex=Io(e,e.length-4)}readString(e){if(-1===e)return null;{const n=Io(this.batchDataUint8,this.stringTableStartIndex+4*e),o=function(e,t){let n=0,o=0;for(let r=0;r<4;r++){const i=e[t+r];if(n|=(127&i)<this.nextBatchId)return this.fatalError?(this.logger.log(yt.Debug,`Received a new batch ${e} but errored out on a previous batch ${this.nextBatchId-1}`),void await n.send("OnRenderCompleted",this.nextBatchId-1,this.fatalError.toString())):void this.logger.log(yt.Debug,`Waiting for batch ${this.nextBatchId}. Batch ${e} not processed.`);try{this.nextBatchId++,this.logger.log(yt.Debug,`Applying batch ${e}.`),xe(Bn.Server,new Ro(t)),await this.completeBatch(n,e)}catch(t){throw this.fatalError=t.toString(),this.logger.log(yt.Error,`There was an error applying batch ${e}.`),n.send("OnRenderCompleted",e,t.toString()),t}}getLastBatchid(){return this.nextBatchId-1}async completeBatch(e,t){try{await e.send("OnRenderCompleted",t,null)}catch{this.logger.log(yt.Warning,`Failed to deliver completion notification for render '${t}'.`)}}}let Lo=!1;function Bo(){const e=document.querySelector("#blazor-error-ui");e&&(e.style.display="block"),Lo||(Lo=!0,document.querySelectorAll("#blazor-error-ui .reload").forEach((e=>{e.onclick=function(e){location.reload(),e.preventDefault()}})),document.querySelectorAll("#blazor-error-ui .dismiss").forEach((e=>{e.onclick=function(e){const t=document.querySelector("#blazor-error-ui");t&&(t.style.display="none"),e.preventDefault()}})))}class Oo{constructor(t,n,o,r){this._firstUpdate=!0,this._renderingFailed=!1,this._disposed=!1,this._circuitId=void 0,this._applicationState=n,this._componentManager=t,this._options=o,this._logger=r,this._renderQueue=new Uo(this._logger),this._dispatcher=e.attachDispatcher(this)}start(){if(this.isDisposedOrDisposing())throw new Error("Cannot start a disposed circuit.");return this._startPromise||(this._startPromise=this.startCore()),this._startPromise}updateRootComponents(e){var t,n;return this._firstUpdate?(this._firstUpdate=!1,null===(t=this._connection)||void 0===t?void 0:t.send("UpdateRootComponents",e,this._applicationState)):null===(n=this._connection)||void 0===n?void 0:n.send("UpdateRootComponents",e,"")}async startCore(){if(this._connection=await this.startConnection(),this._connection.state!==hn.Connected)return!1;const e=JSON.stringify(this._componentManager.initialComponents.map((e=>Ut(e))));if(this._circuitId=await this._connection.invoke("StartCircuit",Je.getBaseURI(),Je.getLocationHref(),e,this._applicationState||""),!this._circuitId)return!1;for(const e of this._options.circuitHandlers)e.onCircuitOpened&&e.onCircuitOpened();return!0}async startConnection(){var e,t;const n=new bo;n.name="blazorpack";const o=(new Ln).withUrl("_blazor").withHubProtocol(n);this._options.configureSignalR(o);const r=o.build();r.on("JS.AttachComponent",((e,t)=>Ae(Bn.Server,this.resolveElement(t),e,!1))),r.on("JS.BeginInvokeJS",this._dispatcher.beginInvokeJSFromDotNet.bind(this._dispatcher)),r.on("JS.EndInvokeDotNet",this._dispatcher.endInvokeDotNetFromJS.bind(this._dispatcher)),r.on("JS.ReceiveByteArray",this._dispatcher.receiveByteArray.bind(this._dispatcher)),r.on("JS.BeginTransmitStream",(e=>{const t=new ReadableStream({start:t=>{r.stream("SendDotNetStreamToJS",e).subscribe({next:e=>t.enqueue(e),complete:()=>t.close(),error:e=>t.error(e)})}});this._dispatcher.supplyDotNetStream(e,t)})),r.on("JS.RenderBatch",(async(e,t)=>{var n,o;this._logger.log(Ot.Debug,`Received render batch with id ${e} and ${t.byteLength} bytes.`),await this._renderQueue.processBatch(e,t,this._connection),null===(o=(n=this._componentManager).onAfterRenderBatch)||void 0===o||o.call(n,Bn.Server)})),r.on("JS.EndUpdateRootComponents",(e=>{var t,n;null===(n=(t=this._componentManager).onAfterUpdateRootComponents)||void 0===n||n.call(t,e)})),r.on("JS.EndLocationChanging",vt._internal.navigationManager.endLocationChanging),r.onclose((e=>{this._interopMethodsForReconnection=function(e){const t=C.get(e);if(!t)throw new Error(`Interop methods are not registered for renderer ${e}`);return C.delete(e),t}(Bn.Server),this._disposed||this._renderingFailed||this._options.reconnectionHandler.onConnectionDown(this._options.reconnectionOptions,e)})),r.on("JS.Error",(e=>{this._renderingFailed=!0,this.unhandledError(e),Bo()}));try{await r.start()}catch(e){if(this.unhandledError(e),"FailedToNegotiateWithServerError"===e.errorType)throw e;Bo(),e.innerErrors&&(e.innerErrors.some((e=>"UnsupportedTransportError"===e.errorType&&e.transport===In.WebSockets))?this._logger.log(Ot.Error,"Unable to connect, please ensure you are using an updated browser that supports WebSockets."):e.innerErrors.some((e=>"FailedToStartTransportError"===e.errorType&&e.transport===In.WebSockets))?this._logger.log(Ot.Error,"Unable to connect, please ensure WebSockets are available. A VPN or proxy may be blocking the connection."):e.innerErrors.some((e=>"DisabledTransportError"===e.errorType&&e.transport===In.LongPolling))&&this._logger.log(Ot.Error,"Unable to initiate a SignalR connection to the server. This might be because the server is not configured to support WebSockets. For additional details, visit https://aka.ms/blazor-server-websockets-error."))}return(null===(t=null===(e=r.connection)||void 0===e?void 0:e.features)||void 0===t?void 0:t.inherentKeepAlive)&&this._logger.log(Ot.Warning,"Failed to connect via WebSockets, using the Long Polling fallback transport. This may be due to a VPN or proxy blocking the connection. To troubleshoot this, visit https://aka.ms/blazor-server-using-fallback-long-polling."),r}async disconnect(){var e;await(null===(e=this._connection)||void 0===e?void 0:e.stop())}async reconnect(){if(!this._circuitId)throw new Error("Circuit host not initialized.");return this._connection.state===hn.Connected||(this._connection=await this.startConnection(),this._interopMethodsForReconnection&&(k(Bn.Server,this._interopMethodsForReconnection),this._interopMethodsForReconnection=void 0),!!await this._connection.invoke("ConnectCircuit",this._circuitId)&&(this._options.reconnectionHandler.onConnectionUp(),!0))}beginInvokeDotNetFromJS(e,t,n,o,r){this.throwIfDispatchingWhenDisposed(),this._connection.send("BeginInvokeDotNetFromJS",e?e.toString():null,t,n,o||0,r)}endInvokeJSFromDotNet(e,t,n){this.throwIfDispatchingWhenDisposed(),this._connection.send("EndInvokeJSFromDotNet",e,t,n)}sendByteArray(e,t){this.throwIfDispatchingWhenDisposed(),this._connection.send("ReceiveByteArray",e,t)}throwIfDispatchingWhenDisposed(){if(this._disposed)throw new Error("The circuit associated with this dispatcher is no longer available.")}sendLocationChanged(e,t,n){return this._connection.send("OnLocationChanged",e,t,n)}sendLocationChanging(e,t,n,o){return this._connection.send("OnLocationChanging",e,t,n,o)}sendJsDataStream(e,t,n){return function(e,t,n,o){setTimeout((async()=>{let r=5,i=(new Date).valueOf();try{const s=t instanceof Blob?t.size:t.byteLength;let a=0,c=0;for(;a1)await e.send("ReceiveJSDataChunk",n,c,h,null);else{if(!await e.invoke("ReceiveJSDataChunk",n,c,h,null))break;const t=(new Date).valueOf(),o=t-i;i=t,r=Math.max(1,Math.round(500/Math.max(1,o)))}a+=l,c++}}catch(t){await e.send("ReceiveJSDataChunk",n,-1,null,t.toString())}}),0)}(this._connection,e,t,n)}resolveElement(e){const t=w(e);if(t)return W(t,!0);const n=Number.parseInt(e);if(!Number.isNaN(n))return H(this._componentManager.resolveRootComponent(n));throw new Error(`Invalid sequence number or identifier '${e}'.`)}getRootComponentManager(){return this._componentManager}unhandledError(e){this._logger.log(Ot.Error,e),this.disconnect()}getDisconnectFormData(){const e=new FormData,t=this._circuitId;return e.append("circuitId",t),e}didRenderingFail(){return this._renderingFailed}isDisposedOrDisposing(){return void 0!==this._disposePromise}sendDisconnectBeacon(){if(this._disposed)return;const e=this.getDisconnectFormData();this._disposed=navigator.sendBeacon("_blazor/disconnect",e)}dispose(){return this._disposePromise||(this._disposePromise=this.disposeCore()),this._disposePromise}async disposeCore(){var e;if(!this._startPromise)return void(this._disposed=!0);await this._startPromise,this._disposed=!0,null===(e=this._connection)||void 0===e||e.stop();const t=this.getDisconnectFormData();fetch("http://github.com/_blazor/disconnect",{method:"POST",body:t});for(const e of this._options.circuitHandlers)e.onCircuitClosed&&e.onCircuitClosed()}}function Fo(e){const t={...$o,...e};return e&&e.reconnectionOptions&&(t.reconnectionOptions={...$o.reconnectionOptions,...e.reconnectionOptions}),t}const $o={configureSignalR:e=>{},logLevel:yt.Warning,initializers:void 0,circuitHandlers:[],reconnectionOptions:{maxRetries:8,retryIntervalMilliseconds:2e4,dialogId:"components-reconnect-modal"}};class Ho{constructor(e,t,n,o){this.maxRetries=t,this.document=n,this.logger=o,this.modal=this.document.createElement("div"),this.modal.id=e,this.maxRetries=t,this.modal.style.cssText=["position: fixed","top: 0","right: 0","bottom: 0","left: 0","z-index: 1050","display: none","overflow: hidden","background-color: #fff","opacity: 0.8","text-align: center","font-weight: bold","transition: visibility 0s linear 500ms"].join(";"),this.message=this.document.createElement("h5"),this.message.style.cssText="margin-top: 20px",this.button=this.document.createElement("button"),this.button.style.cssText="margin:5px auto 5px",this.button.textContent="Retry";const r=this.document.createElement("a");r.addEventListener("click",(()=>location.reload())),r.textContent="reload",this.reloadParagraph=this.document.createElement("p"),this.reloadParagraph.textContent="Alternatively, ",this.reloadParagraph.appendChild(r),this.modal.appendChild(this.message),this.modal.appendChild(this.button),this.modal.appendChild(this.reloadParagraph),this.loader=this.getLoader(),this.message.after(this.loader),this.button.addEventListener("click",(async()=>{this.show();try{await vt.reconnect()||this.rejected()}catch(e){this.logger.log(yt.Error,e),this.failed()}}))}show(){this.document.contains(this.modal)||this.document.body.appendChild(this.modal),this.modal.style.display="block",this.loader.style.display="inline-block",this.button.style.display="none",this.reloadParagraph.style.display="none",this.message.textContent="Attempting to reconnect to the server...",this.modal.style.visibility="hidden",setTimeout((()=>{this.modal.style.visibility="visible"}),0)}update(e){this.message.textContent=`Attempting to reconnect to the server: ${e} of ${this.maxRetries}`}hide(){this.modal.style.display="none"}failed(){this.button.style.display="block",this.reloadParagraph.style.display="none",this.loader.style.display="none";const e=this.document.createTextNode("Reconnection failed. Try "),t=this.document.createElement("a");t.textContent="reloading",t.setAttribute("href",""),t.addEventListener("click",(()=>location.reload()));const n=this.document.createTextNode(" the page if you're unable to reconnect.");this.message.replaceChildren(e,t,n)}rejected(){this.button.style.display="none",this.reloadParagraph.style.display="none",this.loader.style.display="none";const e=this.document.createTextNode("Could not reconnect to the server. "),t=this.document.createElement("a");t.textContent="Reload",t.setAttribute("href",""),t.addEventListener("click",(()=>location.reload()));const n=this.document.createTextNode(" the page to restore functionality.");this.message.replaceChildren(e,t,n)}getLoader(){const e=this.document.createElement("div");return e.style.cssText=["border: 0.3em solid #f3f3f3","border-top: 0.3em solid #3498db","border-radius: 50%","width: 2em","height: 2em","display: inline-block"].join(";"),e.animate([{transform:"rotate(0deg)"},{transform:"rotate(360deg)"}],{duration:2e3,iterations:1/0}),e}}class Wo{constructor(e,t,n){this.dialog=e,this.maxRetries=t,this.document=n,this.document=n;const o=this.document.getElementById(Wo.MaxRetriesId);o&&(o.innerText=this.maxRetries.toString())}show(){this.removeClasses(),this.dialog.classList.add(Wo.ShowClassName)}update(e){const t=this.document.getElementById(Wo.CurrentAttemptId);t&&(t.innerText=e.toString())}hide(){this.removeClasses(),this.dialog.classList.add(Wo.HideClassName)}failed(){this.removeClasses(),this.dialog.classList.add(Wo.FailedClassName)}rejected(){this.removeClasses(),this.dialog.classList.add(Wo.RejectedClassName)}removeClasses(){this.dialog.classList.remove(Wo.ShowClassName,Wo.HideClassName,Wo.FailedClassName,Wo.RejectedClassName)}}Wo.ShowClassName="components-reconnect-show",Wo.HideClassName="components-reconnect-hide",Wo.FailedClassName="components-reconnect-failed",Wo.RejectedClassName="components-reconnect-rejected",Wo.MaxRetriesId="components-reconnect-max-retries",Wo.CurrentAttemptId="components-reconnect-current-attempt";class jo{constructor(e,t,n){this._currentReconnectionProcess=null,this._logger=e,this._reconnectionDisplay=t,this._reconnectCallback=n||vt.reconnect}onConnectionDown(e,t){if(!this._reconnectionDisplay){const t=document.getElementById(e.dialogId);this._reconnectionDisplay=t?new Wo(t,e.maxRetries,document):new Ho(e.dialogId,e.maxRetries,document,this._logger)}this._currentReconnectionProcess||(this._currentReconnectionProcess=new zo(e,this._logger,this._reconnectCallback,this._reconnectionDisplay))}onConnectionUp(){this._currentReconnectionProcess&&(this._currentReconnectionProcess.dispose(),this._currentReconnectionProcess=null)}}class zo{constructor(e,t,n,o){this.logger=t,this.reconnectCallback=n,this.isDisposed=!1,this.reconnectDisplay=o,this.reconnectDisplay.show(),this.attemptPeriodicReconnection(e)}dispose(){this.isDisposed=!0,this.reconnectDisplay.hide()}async attemptPeriodicReconnection(e){for(let t=0;tzo.MaximumFirstRetryInterval?zo.MaximumFirstRetryInterval:e.retryIntervalMilliseconds;if(await this.delay(n),this.isDisposed)break;try{return await this.reconnectCallback()?void 0:void this.reconnectDisplay.rejected()}catch(e){this.logger.log(yt.Error,e)}}this.reconnectDisplay.failed()}delay(e){return new Promise((t=>setTimeout(t,e)))}}zo.MaximumFirstRetryInterval=3e3;class qo{constructor(e=!0,t,n,o=0){this.singleRuntime=e,this.logger=t,this.webRendererId=o,this.afterStartedCallbacks=[],n&&this.afterStartedCallbacks.push(...n)}async importInitializersAsync(e,t){await Promise.all(e.map((e=>async function(e,n){const o=function(e){const t=document.baseURI;return t.endsWith("/")?`${t}${e}`:`${t}/${e}`}(n),r=await import(o);if(void 0!==r){if(e.singleRuntime){const{beforeStart:n,afterStarted:o,beforeWebAssemblyStart:s,afterWebAssemblyStarted:a,beforeServerStart:c,afterServerStarted:l}=r;let h=n;e.webRendererId===Bn.Server&&c&&(h=c),e.webRendererId===Bn.WebAssembly&&s&&(h=s);let d=o;return e.webRendererId===Bn.Server&&l&&(d=l),e.webRendererId===Bn.WebAssembly&&a&&(d=a),i(e,h,d,t)}return function(e,t,n){var r;const s=n[0],{beforeStart:a,afterStarted:c,beforeWebStart:l,afterWebStarted:h,beforeWebAssemblyStart:d,afterWebAssemblyStarted:u,beforeServerStart:p,afterServerStarted:f}=t,g=!(l||h||d||u||p||f||!a&&!c),m=g&&s.enableClassicInitializers;if(g&&!s.enableClassicInitializers)null===(r=e.logger)||void 0===r||r.log(yt.Warning,`Initializer '${o}' will be ignored because multiple runtimes are available. use 'before(web|webAssembly|server)Start' and 'after(web|webAssembly|server)Started?' instead.)`);else if(m)return i(e,a,c,n);if(function(e){e.webAssembly?e.webAssembly.initializers||(e.webAssembly.initializers={beforeStart:[],afterStarted:[]}):e.webAssembly={initializers:{beforeStart:[],afterStarted:[]}},e.circuit?e.circuit.initializers||(e.circuit.initializers={beforeStart:[],afterStarted:[]}):e.circuit={initializers:{beforeStart:[],afterStarted:[]}}}(s),d&&s.webAssembly.initializers.beforeStart.push(d),u&&s.webAssembly.initializers.afterStarted.push(u),p&&s.circuit.initializers.beforeStart.push(p),f&&s.circuit.initializers.afterStarted.push(f),h&&e.afterStartedCallbacks.push(h),l)return l(s)}(e,r,t)}function i(e,t,n,o){if(n&&e.afterStartedCallbacks.push(n),t)return t(...o)}}(this,e))))}async invokeAfterStartedCallbacks(e){const t=function(e){var t;return null===(t=I.get(e))||void 0===t?void 0:t[1]}(this.webRendererId);t&&await t,await Promise.all(this.afterStartedCallbacks.map((t=>t(e))))}}let Jo,Ko,Vo,Xo,Go,Yo,Qo,Zo;function er(e){if(Xo)throw new Error("Circuit options have already been configured.");if(Xo)throw new Error("WebAssembly options have already been configured.");Jo=async function(e){const t=await e;Xo=Fo(t)}(e)}function tr(e){if(void 0!==Yo)throw new Error("Blazor Server has already started.");return Yo=new Promise(nr.bind(null,e)),Yo}async function nr(e,t,n){await Jo;const o=await async function(e){if(e.initializers)return await Promise.all(e.initializers.beforeStart.map((t=>t(e)))),new qo(!1,void 0,e.initializers.afterStarted,Bn.Server);const t=await fetch("http://github.com/_blazor/initializers",{method:"GET",credentials:"include",cache:"no-cache"}),n=await t.json(),o=new qo(!0,void 0,void 0,Bn.Server);return await o.importInitializersAsync(n,[e]),o}(Xo);if(Ko=It(document)||"",Go=new bt(Xo.logLevel),Vo=new Oo(e,Ko,Xo,Go),Go.log(yt.Information,"Starting up Blazor server-side application."),vt.reconnect=async()=>!(Vo.didRenderingFail()||!await Vo.reconnect()&&(Go.log(yt.Information,"Reconnection attempt to the circuit was rejected by the server. This may indicate that the associated state is no longer available on the server."),1)),vt.defaultReconnectionHandler=new jo(Go),Xo.reconnectionHandler=Xo.reconnectionHandler||vt.defaultReconnectionHandler,vt._internal.navigationManager.listenForNavigationEvents(Bn.Server,((e,t,n)=>Vo.sendLocationChanged(e,t,n)),((e,t,n,o)=>Vo.sendLocationChanging(e,t,n,o))),vt._internal.forceCloseConnection=()=>Vo.disconnect(),vt._internal.sendJSDataStream=(e,t,n)=>Vo.sendJsDataStream(e,t,n),!await Vo.start())return Go.log(yt.Error,"Failed to start the circuit."),void t();const r=()=>{Vo.sendDisconnectBeacon()};vt.disconnect=r,window.addEventListener("unload",r,{capture:!1,once:!0}),Go.log(yt.Information,"Blazor server-side application started."),o.invokeAfterStartedCallbacks(vt),t()}async function or(){if(!Yo)throw new Error("Cannot start the circuit until Blazor Server has started.");return!(!Vo||Vo.isDisposedOrDisposing())||(Qo?await Qo:(await Yo,(!Vo||!Vo.didRenderingFail())&&(Vo&&Vo.isDisposedOrDisposing()&&(Ko=It(document)||"",Vo=new Oo(Vo.getRootComponentManager(),Ko,Xo,Go)),Qo=Vo.start(),async function(e){await e,Qo===e&&(Qo=void 0)}(Qo),Qo)))}function rr(e){if(Vo&&!Vo.isDisposedOrDisposing())return Vo.updateRootComponents(e);!async function(e){await Yo,await or()&&Vo.updateRootComponents(e)}(e)}function ir(e){return Zo=e,Zo}var sr,ar;const cr=navigator,lr=cr.userAgentData&&cr.userAgentData.brands,hr=lr&&lr.length>0?lr.some((e=>"Google Chrome"===e.brand||"Microsoft Edge"===e.brand||"Chromium"===e.brand)):window.chrome,dr=null!==(ar=null===(sr=cr.userAgentData)||void 0===sr?void 0:sr.platform)&&void 0!==ar?ar:navigator.platform;function ur(e){return 0!==e.debugLevel&&(hr||navigator.userAgent.includes("Firefox"))}let pr,fr,gr,mr,vr,yr,wr;const br=Math.pow(2,32),_r=Math.pow(2,21)-1;let Sr=null;function Cr(e){return fr.getI32(e)}const Er={load:function(e,t){return async function(e,t){const{dotnet:n}=await async function(e){if("undefined"==typeof WebAssembly||!WebAssembly.validate)throw new Error("This browser does not support WebAssembly.");let t="_framework/dotnet.js";if(e.loadBootResource){const n="dotnetjs",o=e.loadBootResource(n,"dotnet.js",t,"","js-module-dotnet");if("string"==typeof o)t=o;else if(o)throw new Error(`For a ${n} resource, custom loaders must supply a URI string.`)}const n=new URL(t,document.baseURI).toString();return await import(n)}(e),o=function(e,t){const n={maxParallelDownloads:1e6,enableDownloadRetry:!1,applicationEnvironment:e.environment},o={...window.Module||{},onConfigLoaded:async n=>{n.environmentVariables||(n.environmentVariables={}),"sharded"===n.globalizationMode&&(n.environmentVariables.__BLAZOR_SHARDED_ICU="1"),vt._internal.getApplicationEnvironment=()=>n.applicationEnvironment,null==t||t(n),wr=await async function(e,t){var n,o,r;if(e.initializers)return await Promise.all(e.initializers.beforeStart.map((t=>t(e)))),new qo(!1,void 0,e.initializers.afterStarted,Bn.WebAssembly);{const i=[e,null!==(o=null===(n=t.resources)||void 0===n?void 0:n.extensions)&&void 0!==o?o:{}],s=new qo(!0,void 0,void 0,Bn.WebAssembly),a=Object.keys((null===(r=null==t?void 0:t.resources)||void 0===r?void 0:r.libraryInitializers)||{});return await s.importInitializersAsync(a,i),s}}(e,n)},onDownloadResourceProgress:Ir,config:n,disableDotnet6Compatibility:!1,out:Tr,err:Rr};return o}(e,t);e.applicationCulture&&n.withApplicationCulture(e.applicationCulture),e.environment&&n.withApplicationEnvironment(e.environment),e.loadBootResource&&n.withResourceLoader(e.loadBootResource),n.withModuleConfig(o),e.configureRuntime&&e.configureRuntime(n),yr=await n.create()}(e,t)},start:function(){return async function(){if(!yr)throw new Error("The runtime must be loaded it gets configured.");const{MONO:t,BINDING:n,Module:o,setModuleImports:r,INTERNAL:i,getConfig:s,invokeLibraryInitializers:a}=yr;gr=o,pr=n,fr=t,vr=i,function(e){const t=dr.match(/^Mac/i)?"Cmd":"Alt";ur(e)&&console.info(`Debugging hotkey: Shift+${t}+D (when application has focus)`),document.addEventListener("keydown",(t=>{t.shiftKey&&(t.metaKey||t.altKey)&&"KeyD"===t.code&&(ur(e)?navigator.userAgent.includes("Firefox")?async function(){const e=await fetch(`_framework/debug?url=${encodeURIComponent(location.href)}&isFirefox=true`);200!==e.status&&console.warn(await e.text())}():hr?function(){const e=document.createElement("a");e.href=`_framework/debug?url=${encodeURIComponent(location.href)}`,e.target="_blank",e.rel="noopener noreferrer",e.click()}():console.error("Currently, only Microsoft Edge (80+), Google Chrome, or Chromium, are supported for debugging."):console.error("Cannot start debugging, because the application was not compiled with debugging enabled."))}))}(s()),vt.runtime=yr,vt._internal.dotNetCriticalError=Rr,r("blazor-internal",{Blazor:{_internal:vt._internal}});const c=await yr.getAssemblyExports("Microsoft.AspNetCore.Components.WebAssembly");return Object.assign(vt._internal,{dotNetExports:{...c.Microsoft.AspNetCore.Components.WebAssembly.Services.DefaultWebAssemblyJSRuntime}}),mr=e.attachDispatcher({beginInvokeDotNetFromJS:(e,t,n,o,r)=>{if(Dr(),!o&&!t)throw new Error("Either assemblyName or dotNetObjectId must have a non null value.");const i=o?o.toString():t;vt._internal.dotNetExports.BeginInvokeDotNet(e?e.toString():null,i,n,r)},endInvokeJSFromDotNet:(e,t,n)=>{vt._internal.dotNetExports.EndInvokeJS(n)},sendByteArray:(e,t)=>{vt._internal.dotNetExports.ReceiveByteArrayFromJS(e,t)},invokeDotNetFromJS:(e,t,n,o)=>(Dr(),vt._internal.dotNetExports.InvokeDotNet(e||null,t,null!=n?n:0,o))}),{invokeLibraryInitializers:a}}()},callEntryPoint:async function(){try{await yr.runMain(yr.getConfig().mainAssemblyName,[])}catch(e){console.error(e),Bo()}},toUint8Array:function(e){const t=Ar(e),n=Cr(t),o=new Uint8Array(n);return o.set(gr.HEAPU8.subarray(t+4,t+4+n)),o},getArrayLength:function(e){return Cr(Ar(e))},getArrayEntryPtr:function(e,t,n){return Ar(e)+4+t*n},getObjectFieldsBaseAddress:function(e){return e+8},readInt16Field:function(e,t){return n=e+(t||0),fr.getI16(n);var n},readInt32Field:function(e,t){return Cr(e+(t||0))},readUint64Field:function(e,t){return function(e){const t=e>>2,n=gr.HEAPU32[t+1];if(n>_r)throw new Error(`Cannot read uint64 with high order part ${n}, because the result would exceed Number.MAX_SAFE_INTEGER.`);return n*br+gr.HEAPU32[t]}(e+(t||0))},readFloatField:function(e,t){return n=e+(t||0),fr.getF32(n);var n},readObjectField:function(e,t){return Cr(e+(t||0))},readStringField:function(e,t,n){const o=Cr(e+(t||0));if(0===o)return null;if(n){const e=pr.unbox_mono_obj(o);return"boolean"==typeof e?e?"":null:e}return pr.conv_string(o)},readStructField:function(e,t){return e+(t||0)},beginHeapLock:function(){return Dr(),Sr=xr.create(),Sr},invokeWhenHeapUnlocked:function(e){Sr?Sr.enqueuePostReleaseAction(e):e()}};function Ir(e,t){const n=e/t*100;document.documentElement.style.setProperty("--blazor-load-percentage",`${n}%`),document.documentElement.style.setProperty("--blazor-load-percentage-text",`"${Math.floor(n)}%"`)}const kr=["DEBUGGING ENABLED"],Tr=e=>kr.indexOf(e)<0&&console.log(e),Rr=e=>{console.error(e||"(null)"),Bo()};function Ar(e){return e+12}function Dr(){if(Sr)throw new Error("Assertion failed - heap is currently locked")}class xr{enqueuePostReleaseAction(e){this.postReleaseActions||(this.postReleaseActions=[]),this.postReleaseActions.push(e)}release(){var e;if(Sr!==this)throw new Error("Trying to release a lock which isn't current");for(vr.mono_wasm_gc_unlock(),Sr=null;null===(e=this.postReleaseActions)||void 0===e?void 0:e.length;)this.postReleaseActions.shift()(),Dr()}static create(){return vr.mono_wasm_gc_lock(),new xr}}class Nr{constructor(e){this.batchAddress=e,this.arrayRangeReader=Pr,this.arrayBuilderSegmentReader=Mr,this.diffReader=Ur,this.editReader=Lr,this.frameReader=Br}updatedComponents(){return Zo.readStructField(this.batchAddress,0)}referenceFrames(){return Zo.readStructField(this.batchAddress,Pr.structLength)}disposedComponentIds(){return Zo.readStructField(this.batchAddress,2*Pr.structLength)}disposedEventHandlerIds(){return Zo.readStructField(this.batchAddress,3*Pr.structLength)}updatedComponentsEntry(e,t){return Or(e,t,Ur.structLength)}referenceFramesEntry(e,t){return Or(e,t,Br.structLength)}disposedComponentIdsEntry(e,t){const n=Or(e,t,4);return Zo.readInt32Field(n)}disposedEventHandlerIdsEntry(e,t){const n=Or(e,t,8);return Zo.readUint64Field(n)}}const Pr={structLength:8,values:e=>Zo.readObjectField(e,0),count:e=>Zo.readInt32Field(e,4)},Mr={structLength:12,values:e=>{const t=Zo.readObjectField(e,0),n=Zo.getObjectFieldsBaseAddress(t);return Zo.readObjectField(n,0)},offset:e=>Zo.readInt32Field(e,4),count:e=>Zo.readInt32Field(e,8)},Ur={structLength:4+Mr.structLength,componentId:e=>Zo.readInt32Field(e,0),edits:e=>Zo.readStructField(e,4),editsEntry:(e,t)=>Or(e,t,Lr.structLength)},Lr={structLength:20,editType:e=>Zo.readInt32Field(e,0),siblingIndex:e=>Zo.readInt32Field(e,4),newTreeIndex:e=>Zo.readInt32Field(e,8),moveToSiblingIndex:e=>Zo.readInt32Field(e,8),removedAttributeName:e=>Zo.readStringField(e,16)},Br={structLength:36,frameType:e=>Zo.readInt16Field(e,4),subtreeLength:e=>Zo.readInt32Field(e,8),elementReferenceCaptureId:e=>Zo.readStringField(e,16),componentId:e=>Zo.readInt32Field(e,12),elementName:e=>Zo.readStringField(e,16),textContent:e=>Zo.readStringField(e,16),markupContent:e=>Zo.readStringField(e,16),attributeName:e=>Zo.readStringField(e,16),attributeValue:e=>Zo.readStringField(e,24,!0),attributeEventHandlerId:e=>Zo.readUint64Field(e,8)};function Or(e,t,n){return Zo.getArrayEntryPtr(e,t,n)}class Fr{constructor(e){this.componentManager=e}resolveRegisteredElement(e){const t=Number.parseInt(e);if(!Number.isNaN(t))return H(this.componentManager.resolveRootComponent(t))}getParameterValues(e){return this.componentManager.initialComponents[e].parameterValues}getParameterDefinitions(e){return this.componentManager.initialComponents[e].parameterDefinitions}getTypeName(e){return this.componentManager.initialComponents[e].typeName}getAssembly(e){return this.componentManager.initialComponents[e].assembly}getCount(){return this.componentManager.initialComponents.length}}let $r,Hr,Wr,jr,zr,qr=!1,Jr=!1,Kr=!0,Vr=!1;const Xr=new Promise((e=>{zr=e}));let Gr;const Yr=new Promise((e=>{Gr=e}));let Qr;function Zr(e){if(void 0!==jr)throw new Error("Blazor WebAssembly has already started.");return jr=new Promise(ei.bind(null,e)),jr}async function ei(e,t,n){(function(){if(window.parent!==window&&!window.opener&&window.frameElement){const e=window.sessionStorage&&window.sessionStorage["Microsoft.AspNetCore.Components.WebAssembly.Authentication.CachedAuthSettings"],t=e&&JSON.parse(e);return t&&t.redirect_uri&&location.href.startsWith(t.redirect_uri)}return!1})()&&await new Promise((()=>{}));const o=ti();!function(e){const t=D;D=(e,n,o)=>{((e,t,n)=>{const o=De(e);(null==o?void 0:o.eventDelegator.getHandler(t))&&Er.invokeWhenHeapUnlocked(n)})(e,n,(()=>t(e,n,o)))}}(),vt._internal.applyHotReload=(e,t,n,o)=>{mr.invokeDotNetStaticMethod("Microsoft.AspNetCore.Components.WebAssembly","ApplyHotReloadDelta",e,t,n,o)},vt._internal.getApplyUpdateCapabilities=()=>mr.invokeDotNetStaticMethod("Microsoft.AspNetCore.Components.WebAssembly","GetApplyUpdateCapabilities"),vt._internal.invokeJSFromDotNet=oi,vt._internal.invokeJSJson=ri,vt._internal.endInvokeDotNetFromJS=ii,vt._internal.receiveWebAssemblyDotNetDataStream=si,vt._internal.receiveByteArray=ai;const r=ir(Er);vt.platform=r,vt._internal.renderBatch=(e,t)=>{const n=Er.beginHeapLock();try{xe(e,new Nr(t))}finally{n.release()}},vt._internal.navigationManager.listenForNavigationEvents(Bn.WebAssembly,(async(e,t,n)=>{await mr.invokeDotNetStaticMethodAsync("Microsoft.AspNetCore.Components.WebAssembly","NotifyLocationChanged",e,t,n)}),(async(e,t,n,o)=>{const r=await mr.invokeDotNetStaticMethodAsync("Microsoft.AspNetCore.Components.WebAssembly","NotifyLocationChangingAsync",t,n,o);vt._internal.navigationManager.endLocationChanging(e,r)}));const i=new Fr(e);let s;vt._internal.registeredComponents={getRegisteredComponentsCount:()=>i.getCount(),getAssembly:e=>i.getAssembly(e),getTypeName:e=>i.getTypeName(e),getParameterDefinitions:e=>i.getParameterDefinitions(e)||"",getParameterValues:e=>i.getParameterValues(e)||""},vt._internal.getPersistedState=()=>kt(document,Ct)||"",vt._internal.getInitialComponentsUpdate=()=>Yr,vt._internal.updateRootComponents=e=>{var t;return null===(t=vt._internal.dotNetExports)||void 0===t?void 0:t.UpdateRootComponentsCore(e)},vt._internal.endUpdateRootComponents=t=>{var n;return null===(n=e.onAfterUpdateRootComponents)||void 0===n?void 0:n.call(e,t)},vt._internal.attachRootComponentToElement=(e,t,n)=>{const o=i.resolveRegisteredElement(e);o?Ae(n,o,t,!1):function(e,t,n){const o="::before";let r=!1;if(e.endsWith("::after"))e=e.slice(0,-7),r=!0;else if(e.endsWith(o))throw new Error(`The '${o}' selector is not supported.`);const i=w(e)||document.querySelector(e);if(!i)throw new Error(`Could not find any element matching selector '${e}'.`);Ae(n,W(i,!0),t,r)}(e,t,n)};try{await o,s=await r.start()}catch(e){throw new Error(`Failed to start platform. Reason: ${e}`)}r.callEntryPoint(),wr.invokeAfterStartedCallbacks(vt),Jr=!0,t()}function ti(){return null!=Wr||(Wr=(async()=>{await Hr;const e=null!=$r?$r:{},t=null==$r?void 0:$r.configureRuntime;e.configureRuntime=e=>{null==t||t(e),Vr&&e.withEnvironmentVariable("__BLAZOR_WEBASSEMBLY_WAIT_FOR_ROOT_COMPONENTS","true")},await Er.load(e,zr),qr=!0})()),Wr}function ni(){return qr}function oi(t,n,o,r){const i=Er.readStringField(t,0),s=Er.readInt32Field(t,4),a=Er.readStringField(t,8),c=Er.readUint64Field(t,20);if(null!==a){const e=Er.readUint64Field(t,12);if(0!==e)return mr.beginInvokeJSFromDotNet(e,i,a,s,c),0;{const e=mr.invokeJSFromDotNet(i,a,s,c);return null===e?0:pr.js_string_to_mono_string(e)}}{const t=e.findJSFunction(i,c).call(null,n,o,r);switch(s){case e.JSCallResultType.Default:return t;case e.JSCallResultType.JSObjectReference:return e.createJSObjectReference(t).__jsObjectId;case e.JSCallResultType.JSStreamReference:{const n=e.createJSStreamReference(t),o=JSON.stringify(n);return pr.js_string_to_mono_string(o)}case e.JSCallResultType.JSVoidResult:return null;default:throw new Error(`Invalid JS call result type '${s}'.`)}}}function ri(e,t,n,o,r){return 0!==r?(mr.beginInvokeJSFromDotNet(r,e,o,n,t),null):mr.invokeJSFromDotNet(e,o,n,t)}function ii(e,t,n){mr.endInvokeDotNetFromJS(e,t,n)}function si(e,t,n,o){!function(e,t,n,o,r){let i=mt.get(t);if(!i){const n=new ReadableStream({start(e){mt.set(t,e),i=e}});e.supplyDotNetStream(t,n)}r?(i.error(r),mt.delete(t)):0===o?(i.close(),mt.delete(t)):i.enqueue(n.length===o?n:n.subarray(0,o))}(mr,e,t,n,o)}function ai(e,t){mr.receiveByteArray(e,t)}function ci(e,t){t.namespaceURI?e.setAttributeNS(t.namespaceURI,t.name,t.value):e.setAttribute(t.name,t.value)}Hr=new Promise((e=>{Qr=e}));const li="data-permanent";var hi,di;!function(e){e[e.None=0]="None",e[e.Some=1]="Some",e[e.Infinite=2]="Infinite"}(hi||(hi={})),function(e){e.Keep="keep",e.Update="update",e.Insert="insert",e.Delete="delete"}(di||(di={}));class ui{static create(e,t,n){return 0===t&&n===e.length?e:new ui(e,t,n)}constructor(e,t,n){this.source=e,this.startIndex=t,this.length=n}item(e){return this.source.item(e+this.startIndex)}forEach(e,t){for(let t=0;t=n&&s>=o&&r(e.item(i),t.item(s))===hi.None;)i--,s--,a++;return a}(e,t,o,o,n),i=function(e){var t;const n=[];let o=e.length-1,r=(null===(t=e[o])||void 0===t?void 0:t.length)-1;for(;o>0||r>0;){const t=0===o?di.Insert:0===r?di.Delete:e[o][r];switch(n.unshift(t),t){case di.Keep:case di.Update:o--,r--;break;case di.Insert:r--;break;case di.Delete:o--}}return n}(function(e,t,n){const o=[],r=[],i=e.length,s=t.length;if(0===i&&0===s)return[];for(let e=0;e<=i;e++)(o[e]=Array(s+1))[0]=e,r[e]=Array(s+1);const a=o[0];for(let e=1;e<=s;e++)a[e]=e;for(let a=1;a<=i;a++)for(let i=1;i<=s;i++){const s=n(e.item(a-1),t.item(i-1)),c=o[a-1][i]+1,l=o[a][i-1]+1;let h;switch(s){case hi.None:h=o[a-1][i-1];break;case hi.Some:h=o[a-1][i-1]+1;break;case hi.Infinite:h=Number.MAX_VALUE}h{history.pushState(null,"",e),Ui(e,!0)}))}function Pi(e){Oe()||Ui(location.href,!1)}function Mi(e){var t,n,o,r,i;if(Oe()||e.defaultPrevented)return;const s=e.target;if(s instanceof HTMLFormElement){if(!function(e){const t=e.getAttribute("data-enhance");return"string"==typeof t&&""===t||"true"===(null==t?void 0:t.toLowerCase())}(s))return;const a=(null===(t=e.submitter)||void 0===t?void 0:t.getAttribute("formmethod"))||s.method;if("dialog"===a)return void console.warn('A form cannot be enhanced when its method is "dialog".');const c=(null===(n=e.submitter)||void 0===n?void 0:n.getAttribute("formtarget"))||s.target;if(""!==c&&"_self"!==c)return void console.warn('A form cannot be enhanced when its target is different from the default value "_self".');e.preventDefault();const l=new URL((null===(o=e.submitter)||void 0===o?void 0:o.getAttribute("formaction"))||s.action,document.baseURI),h={method:a},d=new FormData(s),u=null===(r=e.submitter)||void 0===r?void 0:r.getAttribute("name"),p=e.submitter.getAttribute("value");u&&p&&d.append(u,p);const f=new URLSearchParams(d).toString();if("get"===h.method)l.search=f,history.pushState(null,"",l.toString());else{const t=(null===(i=e.submitter)||void 0===i?void 0:i.getAttribute("formenctype"))||s.enctype;"multipart/form-data"===t?h.body=d:(h.body=f,h.headers={"content-type":t,accept:Ii})}Ui(l.toString(),!1,h)}}async function Ui(e,t,n,o){Ri=!0,null==ki||ki.abort(),function(e,t){null==ke||ke(e,t)}(e,t),ki=new AbortController;const r=ki.signal,i=fetch(e,Object.assign({signal:r,mode:"no-cors",headers:{accept:Ii}},n));let s=null;if(await async function(e,t,n,o){let r;try{if(r=await e,!r.body)return void n(r,"");const t=r.headers.get("ssr-framing");if(!t){const e=await r.text();return void n(r,e)}let o=!0;await r.body.pipeThrough(new TextDecoderStream).pipeThrough(function(e){let t="";return new TransformStream({transform(n,o){if(t+=n,t.indexOf(e,t.length-n.length-e.length)>=0){const n=t.split(e);n.slice(0,-1).forEach((e=>o.enqueue(e))),t=n[n.length-1]}},flush(e){e.enqueue(t)}})}(`\x3c!--${t}--\x3e`)).pipeTo(new WritableStream({write(e){o?(o=!1,n(r,e)):(e=>{const t=document.createRange().createContextualFragment(e);for(;t.firstChild;)document.body.appendChild(t.firstChild)})(e)}}))}catch(e){if("AbortError"===e.name&&t.aborted)return;throw e}}(i,r,((t,r)=>{const i=!(null==n?void 0:n.method)||"get"===n.method,a=t.status>=200&&t.status<300;if("opaque"===t.type){if(i)return void Bi(e);throw new Error("Enhanced navigation does not support making a non-GET request to an endpoint that redirects to an external origin. Avoid enabling enhanced navigation for form posts that may perform external redirections.")}if(a&&"allow"!==t.headers.get("blazor-enhanced-nav")){if(i)return void Bi(e);throw new Error("Enhanced navigation does not support making a non-GET request to a non-Blazor endpoint. Avoid enabling enhanced navigation for forms that post to a non-Blazor endpoint.")}(t.redirected||o)&&((o?"get"===o:i)?history.replaceState(null,"",t.url):t.url!==location.href&&history.pushState(null,"",t.url),e=t.url);const c=t.headers.get("blazor-enhanced-nav-redirect-location");if(c)return void location.replace(c);t.redirected||i||!a||(function(e){const t=new URL(e.url),n=new URL(Ai);return t.protocol===n.protocol&&t.host===n.host&&t.port===n.port&&t.pathname===n.pathname}(t)?location.href!==Ai&&history.pushState(null,"",Ai):s=`Cannot perform enhanced form submission that changes the URL (except via a redirection), because then back/forward would not work. Either remove this form's 'action' attribute, or change its method to 'get', or do not mark it as enhanced.\nOld URL: ${location.href}\nNew URL: ${t.url}`),Ai=t.url;const l=t.headers.get("content-type");if((null==l?void 0:l.startsWith("text/html"))&&r){const e=(new DOMParser).parseFromString(r,"text/html");fi(document,e),Ti.documentUpdated()}else(null==l?void 0:l.startsWith("text/"))&&r?Li(r):a||r?i?Bi(e):Li(`Error: ${n.method} request to ${e} returned non-HTML content of type ${l||"unspecified"}.`):Li(`Error: ${t.status} ${t.statusText}`)})),!r.aborted){const t=e.indexOf("#");if(t>=0){const n=e.substring(t+1),o=document.getElementById(n);null==o||o.scrollIntoView()}if(Ri=!1,Ti.enhancedNavigationCompleted(),s)throw new Error(s)}}function Li(e){document.documentElement.textContent=e;const t=document.documentElement.style;t.fontFamily="consolas, monospace",t.whiteSpace="pre-wrap",t.padding="1rem"}function Bi(e){history.replaceState(null,"",e+"?"),location.replace(e)}let Oi,Fi=!0;class $i extends HTMLElement{connectedCallback(){var e;const t=this.parentNode;null===(e=t.parentNode)||void 0===e||e.removeChild(t),t.childNodes.forEach((e=>{if(e instanceof HTMLTemplateElement){const t=e.getAttribute("blazor-component-id");if(t)"true"!==e.getAttribute("enhanced-nav")&&ki||function(e,t){const n=function(e){const t=`bl:${e}`,n=document.createNodeIterator(document,NodeFilter.SHOW_COMMENT);let o=null;for(;(o=n.nextNode())&&o.textContent!==t;);if(!o)return null;const r=`/bl:${e}`;let i=null;for(;(i=n.nextNode())&&i.textContent!==r;);return i?{startMarker:o,endMarker:i}:null}(e);if(n){const{startMarker:e,endMarker:o}=n;if(Fi)fi({startExclusive:e,endExclusive:o},t);else{const n=o.parentNode,r=new Range;for(r.setStart(e,e.textContent.length),r.setEnd(o,0),r.deleteContents();t.childNodes[0];)n.insertBefore(t.childNodes[0],o)}Oi.documentUpdated()}}(t,e.content);else switch(e.getAttribute("type")){case"redirection":const t=Le(e.content.textContent),n="form-post"===e.getAttribute("from");"true"===e.getAttribute("enhanced")&&Pe(t)?Ui(t,!1,void 0,n?"post":"get"):n?t!==location.href&&location.assign(t):location.replace(t);break;case"error":Li(e.content.textContent||"Error")}}}))}}class Hi{constructor(e){var t;this._circuitInactivityTimeoutMs=e,this._rootComponentsBySsrComponentId=new Map,this._seenDescriptors=new Set,this._pendingOperationBatches={},this._nextOperationBatchId=1,this._nextSsrComponentId=1,this._didWebAssemblyFailToLoadQuickly=!1,this._isComponentRefreshPending=!1,this.initialComponents=[],t=()=>{this.rootComponentsMayRequireRefresh()},E.push(t)}onAfterRenderBatch(e){e===Bn.Server&&this.circuitMayHaveNoRootComponents()}onDocumentUpdated(){this.rootComponentsMayRequireRefresh()}onEnhancedNavigationCompleted(){this.rootComponentsMayRequireRefresh()}registerComponent(e){if(this._seenDescriptors.has(e))return;"auto"!==e.type&&"webassembly"!==e.type||this.startLoadingWebAssemblyIfNotStarted();const t=this._nextSsrComponentId++;this._seenDescriptors.add(e),this._rootComponentsBySsrComponentId.set(t,{descriptor:e,ssrComponentId:t})}unregisterComponent(e){this._seenDescriptors.delete(e.descriptor),this._rootComponentsBySsrComponentId.delete(e.ssrComponentId),this.circuitMayHaveNoRootComponents()}async startLoadingWebAssemblyIfNotStarted(){if(void 0!==Wr)return;Vr=!0;const e=ti();setTimeout((()=>{ni()||this.onWebAssemblyFailedToLoadQuickly()}),vt._internal.loadWebAssemblyQuicklyTimeout);const t=await Xr;(function(e){if(!e.cacheBootResources)return!1;const t=Wi(e);if(!t)return!1;const n=window.localStorage.getItem(t.key);return t.value===n})(t)||this.onWebAssemblyFailedToLoadQuickly(),await e,function(e){const t=Wi(e);t&&window.localStorage.setItem(t.key,t.value)}(t),this.rootComponentsMayRequireRefresh()}onWebAssemblyFailedToLoadQuickly(){this._didWebAssemblyFailToLoadQuickly||(this._didWebAssemblyFailToLoadQuickly=!0,this.rootComponentsMayRequireRefresh())}startCircutIfNotStarted(){return void 0===Yo?tr(this):!Vo||Vo.isDisposedOrDisposing()?or():void 0}async startWebAssemblyIfNotStarted(){this.startLoadingWebAssemblyIfNotStarted(),void 0===jr&&await Zr(this)}rootComponentsMayRequireRefresh(){this._isComponentRefreshPending||(this._isComponentRefreshPending=!0,setTimeout((()=>{this._isComponentRefreshPending=!1,this.refreshRootComponents(this._rootComponentsBySsrComponentId.values())}),0))}circuitMayHaveNoRootComponents(){if(this.rendererHasExistingOrPendingComponents(Bn.Server,"server","auto"))return clearTimeout(this._circuitInactivityTimeoutId),void(this._circuitInactivityTimeoutId=void 0);void 0===this._circuitInactivityTimeoutId&&(this._circuitInactivityTimeoutId=setTimeout((()=>{this.rendererHasExistingOrPendingComponents(Bn.Server,"server","auto")||(async function(){await(null==Vo?void 0:Vo.dispose())}(),this._circuitInactivityTimeoutId=void 0)}),this._circuitInactivityTimeoutMs))}rendererHasComponents(e){const t=De(e);return void 0!==t&&t.getRootComponentCount()>0}rendererHasExistingOrPendingComponents(e,...t){if(this.rendererHasComponents(e))return!0;for(const{descriptor:{type:n},assignedRendererId:o}of this._rootComponentsBySsrComponentId.values()){if(o===e)return!0;if(void 0===o&&-1!==t.indexOf(n))return!0}return!1}refreshRootComponents(e){const t=new Map;for(const n of e){const e=this.determinePendingOperation(n);if(!e)continue;const o=n.assignedRendererId;if(!o)throw new Error("Descriptors must be assigned a renderer ID before getting used as root components");let r=t.get(o);r||(r=[],t.set(o,r)),r.push(e)}for(const[e,n]of t){const t={batchId:this._nextOperationBatchId++,operations:n};this._pendingOperationBatches[t.batchId]=t;const o=JSON.stringify(t);e===Bn.Server?rr(o):this.updateWebAssemblyRootComponents(o)}}updateWebAssemblyRootComponents(e){Kr?(Gr(e),Kr=!1):function(e){if(!jr)throw new Error("Blazor WebAssembly has not started.");if(!vt._internal.updateRootComponents)throw new Error("Blazor WebAssembly has not initialized.");Jr?vt._internal.updateRootComponents(e):async function(e){if(await jr,!vt._internal.updateRootComponents)throw new Error("Blazor WebAssembly has not initialized.");vt._internal.updateRootComponents(e)}(e)}(e)}resolveRendererIdForDescriptor(e){switch("auto"===e.type?this.getAutoRenderMode():e.type){case"server":return this.startCircutIfNotStarted(),Bn.Server;case"webassembly":return this.startWebAssemblyIfNotStarted(),Bn.WebAssembly;case null:return null}}getAutoRenderMode(){return this.rendererHasExistingOrPendingComponents(Bn.WebAssembly,"webassembly")?"webassembly":this.rendererHasExistingOrPendingComponents(Bn.Server,"server")?"server":ni()?"webassembly":this._didWebAssemblyFailToLoadQuickly?"server":null}determinePendingOperation(e){if(t=e.descriptor,document.contains(t.start)){if(void 0===e.assignedRendererId){if(Ri||"loading"===document.readyState)return null;const t=this.resolveRendererIdForDescriptor(e.descriptor);return null===t?null:T(t)?(be(e.descriptor.start,!0),e.assignedRendererId=t,e.uniqueIdAtLastUpdate=e.descriptor.uniqueId,{type:"add",ssrComponentId:e.ssrComponentId,marker:Ut(e.descriptor)}):null}return T(e.assignedRendererId)?e.uniqueIdAtLastUpdate===e.descriptor.uniqueId?null:(e.uniqueIdAtLastUpdate=e.descriptor.uniqueId,{type:"update",ssrComponentId:e.ssrComponentId,marker:Ut(e.descriptor)}):null}return e.hasPendingRemoveOperation?null:void 0===e.assignedRendererId?(this.unregisterComponent(e),null):T(e.assignedRendererId)?(be(e.descriptor.start,!1),e.hasPendingRemoveOperation=!0,{type:"remove",ssrComponentId:e.ssrComponentId}):null;var t}resolveRootComponent(e){const t=this._rootComponentsBySsrComponentId.get(e);if(!t)throw new Error(`Could not resolve a root component with SSR component ID '${e}'.`);return t.descriptor}onAfterUpdateRootComponents(e){const t=this._pendingOperationBatches[e];delete this._pendingOperationBatches[e];for(const e of t.operations)switch(e.type){case"remove":{const t=this._rootComponentsBySsrComponentId.get(e.ssrComponentId);t&&this.unregisterComponent(t);break}}}}function Wi(e){var t;const n=null===(t=e.resources)||void 0===t?void 0:t.hash,o=e.mainAssemblyName;return n&&o?{key:`blazor-resource-hash:${o}`,value:n}:null}class ji{constructor(){this._eventListeners=new Map}static create(e){const t=new ji;return e.addEventListener=t.addEventListener.bind(t),e.removeEventListener=t.removeEventListener.bind(t),t}addEventListener(e,t){let n=this._eventListeners.get(e);n||(n=new Set,this._eventListeners.set(e,n)),n.add(t)}removeEventListener(e,t){var n;null===(n=this._eventListeners.get(e))||void 0===n||n.delete(t)}dispatchEvent(e,t){const n=this._eventListeners.get(e);if(!n)return;const o={...t,type:e};for(const e of n)e(o)}}let zi,qi=!1;function Ji(e){var t,n,o,r;if(qi)throw new Error("Blazor has already started.");qi=!0,null!==(t=(e=e||{}).logLevel)&&void 0!==t||(e.logLevel=yt.Error),vt._internal.loadWebAssemblyQuicklyTimeout=3e3,vt._internal.isBlazorWeb=!0,vt._internal.hotReloadApplied=()=>{Me()&&Ue(location.href,!0)},zi=new Hi(null!==(o=null===(n=null==e?void 0:e.ssr)||void 0===n?void 0:n.circuitInactivityTimeoutMs)&&void 0!==o?o:2e3);const i=ji.create(vt),s={documentUpdated:()=>{zi.onDocumentUpdated(),i.dispatchEvent("enhancedload",{})},enhancedNavigationCompleted(){zi.onEnhancedNavigationCompleted()}};return pi=zi,function(e,t){Oi=t,(null==e?void 0:e.disableDomPreservation)&&(Fi=!1),customElements.define("blazor-ssr-end",$i)}(null==e?void 0:e.ssr,s),(null===(r=null==e?void 0:e.ssr)||void 0===r?void 0:r.disableDomPreservation)||Di(s),"loading"===document.readyState?document.addEventListener("DOMContentLoaded",Ki.bind(null,e)):Ki(e),Promise.resolve()}function Ki(e){const t=Fo((null==e?void 0:e.circuit)||{});e.circuit=t;const n=async function(e,t){var n;const o=kt(document,Et,"initializers");if(!o)return new qo(!1,t);const r=null!==(n=JSON.parse(atob(o)))&&void 0!==n?n:[],i=new qo(!1,t);return await i.importInitializersAsync(r,[e]),i}(e,new bt(t.logLevel));er(Vi(n,t)),function(e){if($r)throw new Error("WebAssembly options have already been configured.");!async function(e){const t=await e;$r=t,Qr()}(e)}(Vi(n,(null==e?void 0:e.webAssembly)||{})),function(e){const t=bi(document);for(const e of t)null==pi||pi.registerComponent(e)}(),zi.onDocumentUpdated(),async function(e){const t=await e;await t.invokeAfterStartedCallbacks(vt)}(n)}async function Vi(e,t){return await e,t}vt.start=Ji,window.DotNet=e,document&&document.currentScript&&"false"!==document.currentScript.getAttribute("autostart")&&Ji()})()})(); \ No newline at end of file +(()=>{var e={778:()=>{},77:()=>{},203:()=>{},200:()=>{},628:()=>{},321:()=>{}},t={};function n(o){var r=t[o];if(void 0!==r)return r.exports;var i=t[o]={exports:{}};return e[o](i,i.exports,n),i.exports}n.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),(()=>{"use strict";var e,t,o;!function(e){const t=[],n="__jsObjectId",o="__dotNetObject",r="__byte[]",i="__dotNetStream",s="__jsStreamReferenceLength";let a,c;class l{constructor(e){this._jsObject=e,this._cachedFunctions=new Map}findFunction(e){const t=this._cachedFunctions.get(e);if(t)return t;let n,o=this._jsObject;if(e.split(".").forEach((t=>{if(!(t in o))throw new Error(`Could not find '${e}' ('${t}' was undefined).`);n=o,o=o[t]})),o instanceof Function)return o=o.bind(n),this._cachedFunctions.set(e,o),o;throw new Error(`The value '${e}' is not a function.`)}getWrappedObject(){return this._jsObject}}const h={0:new l(window)};h[0]._cachedFunctions.set("import",(e=>("string"==typeof e&&e.startsWith("./")&&(e=new URL(e.substr(2),document.baseURI).toString()),import(e))));let d,u=1;function p(e){t.push(e)}function f(e){if(e&&"object"==typeof e){h[u]=new l(e);const t={[n]:u};return u++,t}throw new Error(`Cannot create a JSObjectReference from the value '${e}'.`)}function g(e){let t=-1;if(e instanceof ArrayBuffer&&(e=new Uint8Array(e)),e instanceof Blob)t=e.size;else{if(!(e.buffer instanceof ArrayBuffer))throw new Error("Supplied value is not a typed array or blob.");if(void 0===e.byteLength)throw new Error(`Cannot create a JSStreamReference from the value '${e}' as it doesn't have a byteLength.`);t=e.byteLength}const o={[s]:t};try{const t=f(e);o[n]=t[n]}catch(t){throw new Error(`Cannot create a JSStreamReference from the value '${e}'.`)}return o}function m(e,n){c=e;const o=n?JSON.parse(n,((e,n)=>t.reduce(((t,n)=>n(e,t)),n))):null;return c=void 0,o}function v(){if(void 0===a)throw new Error("No call dispatcher has been set.");if(null===a)throw new Error("There are multiple .NET runtimes present, so a default dispatcher could not be resolved. Use DotNetObject to invoke .NET instance methods.");return a}e.attachDispatcher=function(e){const t=new y(e);return void 0===a?a=t:a&&(a=null),t},e.attachReviver=p,e.invokeMethod=function(e,t,...n){return v().invokeDotNetStaticMethod(e,t,...n)},e.invokeMethodAsync=function(e,t,...n){return v().invokeDotNetStaticMethodAsync(e,t,...n)},e.createJSObjectReference=f,e.createJSStreamReference=g,e.disposeJSObjectReference=function(e){const t=e&&e[n];"number"==typeof t&&_(t)},function(e){e[e.Default=0]="Default",e[e.JSObjectReference=1]="JSObjectReference",e[e.JSStreamReference=2]="JSStreamReference",e[e.JSVoidResult=3]="JSVoidResult"}(d=e.JSCallResultType||(e.JSCallResultType={}));class y{constructor(e){this._dotNetCallDispatcher=e,this._byteArraysToBeRevived=new Map,this._pendingDotNetToJSStreams=new Map,this._pendingAsyncCalls={},this._nextAsyncCallId=1}getDotNetCallDispatcher(){return this._dotNetCallDispatcher}invokeJSFromDotNet(e,t,n,o){const r=m(this,t),i=I(b(e,o)(...r||[]),n);return null==i?null:T(this,i)}beginInvokeJSFromDotNet(e,t,n,o,r){const i=new Promise((e=>{const o=m(this,n);e(b(t,r)(...o||[]))}));e&&i.then((t=>T(this,[e,!0,I(t,o)]))).then((t=>this._dotNetCallDispatcher.endInvokeJSFromDotNet(e,!0,t)),(t=>this._dotNetCallDispatcher.endInvokeJSFromDotNet(e,!1,JSON.stringify([e,!1,w(t)]))))}endInvokeDotNetFromJS(e,t,n){const o=t?m(this,n):new Error(n);this.completePendingCall(parseInt(e,10),t,o)}invokeDotNetStaticMethod(e,t,...n){return this.invokeDotNetMethod(e,t,null,n)}invokeDotNetStaticMethodAsync(e,t,...n){return this.invokeDotNetMethodAsync(e,t,null,n)}invokeDotNetMethod(e,t,n,o){if(this._dotNetCallDispatcher.invokeDotNetFromJS){const r=T(this,o),i=this._dotNetCallDispatcher.invokeDotNetFromJS(e,t,n,r);return i?m(this,i):null}throw new Error("The current dispatcher does not support synchronous calls from JS to .NET. Use invokeDotNetMethodAsync instead.")}invokeDotNetMethodAsync(e,t,n,o){if(e&&n)throw new Error(`For instance method calls, assemblyName should be null. Received '${e}'.`);const r=this._nextAsyncCallId++,i=new Promise(((e,t)=>{this._pendingAsyncCalls[r]={resolve:e,reject:t}}));try{const i=T(this,o);this._dotNetCallDispatcher.beginInvokeDotNetFromJS(r,e,t,n,i)}catch(e){this.completePendingCall(r,!1,e)}return i}receiveByteArray(e,t){this._byteArraysToBeRevived.set(e,t)}processByteArray(e){const t=this._byteArraysToBeRevived.get(e);return t?(this._byteArraysToBeRevived.delete(e),t):null}supplyDotNetStream(e,t){if(this._pendingDotNetToJSStreams.has(e)){const n=this._pendingDotNetToJSStreams.get(e);this._pendingDotNetToJSStreams.delete(e),n.resolve(t)}else{const n=new E;n.resolve(t),this._pendingDotNetToJSStreams.set(e,n)}}getDotNetStreamPromise(e){let t;if(this._pendingDotNetToJSStreams.has(e))t=this._pendingDotNetToJSStreams.get(e).streamPromise,this._pendingDotNetToJSStreams.delete(e);else{const n=new E;this._pendingDotNetToJSStreams.set(e,n),t=n.streamPromise}return t}completePendingCall(e,t,n){if(!this._pendingAsyncCalls.hasOwnProperty(e))throw new Error(`There is no pending async call with ID ${e}.`);const o=this._pendingAsyncCalls[e];delete this._pendingAsyncCalls[e],t?o.resolve(n):o.reject(n)}}function w(e){return e instanceof Error?`${e.message}\n${e.stack}`:e?e.toString():"null"}function b(e,t){const n=h[t];if(n)return n.findFunction(e);throw new Error(`JS object instance with ID ${t} does not exist (has it been disposed?).`)}function _(e){delete h[e]}e.findJSFunction=b,e.disposeJSObjectReferenceById=_;class S{constructor(e,t){this._id=e,this._callDispatcher=t}invokeMethod(e,...t){return this._callDispatcher.invokeDotNetMethod(null,e,this._id,t)}invokeMethodAsync(e,...t){return this._callDispatcher.invokeDotNetMethodAsync(null,e,this._id,t)}dispose(){this._callDispatcher.invokeDotNetMethodAsync(null,"__Dispose",this._id,null).catch((e=>console.error(e)))}serializeAsArg(){return{[o]:this._id}}}e.DotNetObject=S,p((function(e,t){if(t&&"object"==typeof t){if(t.hasOwnProperty(o))return new S(t[o],c);if(t.hasOwnProperty(n)){const e=t[n],o=h[e];if(o)return o.getWrappedObject();throw new Error(`JS object instance with Id '${e}' does not exist. It may have been disposed.`)}if(t.hasOwnProperty(r)){const e=t[r],n=c.processByteArray(e);if(void 0===n)throw new Error(`Byte array index '${e}' does not exist.`);return n}if(t.hasOwnProperty(i)){const e=t[i],n=c.getDotNetStreamPromise(e);return new C(n)}}return t}));class C{constructor(e){this._streamPromise=e}stream(){return this._streamPromise}async arrayBuffer(){return new Response(await this.stream()).arrayBuffer()}}class E{constructor(){this.streamPromise=new Promise(((e,t)=>{this.resolve=e,this.reject=t}))}}function I(e,t){switch(t){case d.Default:return e;case d.JSObjectReference:return f(e);case d.JSStreamReference:return g(e);case d.JSVoidResult:return null;default:throw new Error(`Invalid JS call result type '${t}'.`)}}let k=0;function T(e,t){k=0,c=e;const n=JSON.stringify(t,R);return c=void 0,n}function R(e,t){if(t instanceof S)return t.serializeAsArg();if(t instanceof Uint8Array){c.getDotNetCallDispatcher().sendByteArray(k,t);const e={[r]:k};return k++,e}return t}}(e||(e={})),function(e){e[e.prependFrame=1]="prependFrame",e[e.removeFrame=2]="removeFrame",e[e.setAttribute=3]="setAttribute",e[e.removeAttribute=4]="removeAttribute",e[e.updateText=5]="updateText",e[e.stepIn=6]="stepIn",e[e.stepOut=7]="stepOut",e[e.updateMarkup=8]="updateMarkup",e[e.permutationListEntry=9]="permutationListEntry",e[e.permutationListEnd=10]="permutationListEnd"}(t||(t={})),function(e){e[e.element=1]="element",e[e.text=2]="text",e[e.attribute=3]="attribute",e[e.component=4]="component",e[e.region=5]="region",e[e.elementReferenceCapture=6]="elementReferenceCapture",e[e.markup=8]="markup",e[e.namedEvent=10]="namedEvent"}(o||(o={}));class r{constructor(e,t){this.componentId=e,this.fieldValue=t}static fromEvent(e,t){const n=t.target;if(n instanceof Element){const t=function(e){return e instanceof HTMLInputElement?e.type&&"checkbox"===e.type.toLowerCase()?{value:e.checked}:{value:e.value}:e instanceof HTMLSelectElement||e instanceof HTMLTextAreaElement?{value:e.value}:null}(n);if(t)return new r(e,t.value)}return null}}const i=new Map,s=new Map,a=[];function c(e){return i.get(e)}function l(e){const t=i.get(e);return(null==t?void 0:t.browserEventName)||e}function h(e,t){e.forEach((e=>i.set(e,t)))}function d(e){const t=[];for(let n=0;ne.selected)).map((e=>e.value))}}{const e=function(e){return!!e&&"INPUT"===e.tagName&&"checkbox"===e.getAttribute("type")}(t);return{value:e?!!t.checked:t.value}}}}),h(["copy","cut","paste"],{createEventArgs:e=>({type:e.type})}),h(["drag","dragend","dragenter","dragleave","dragover","dragstart","drop"],{createEventArgs:e=>{return{...u(t=e),dataTransfer:t.dataTransfer?{dropEffect:t.dataTransfer.dropEffect,effectAllowed:t.dataTransfer.effectAllowed,files:Array.from(t.dataTransfer.files).map((e=>e.name)),items:Array.from(t.dataTransfer.items).map((e=>({kind:e.kind,type:e.type}))),types:t.dataTransfer.types}:null};var t}}),h(["focus","blur","focusin","focusout"],{createEventArgs:e=>({type:e.type})}),h(["keydown","keyup","keypress"],{createEventArgs:e=>{return{key:(t=e).key,code:t.code,location:t.location,repeat:t.repeat,ctrlKey:t.ctrlKey,shiftKey:t.shiftKey,altKey:t.altKey,metaKey:t.metaKey,type:t.type};var t}}),h(["contextmenu","click","mouseover","mouseout","mousemove","mousedown","mouseup","mouseleave","mouseenter","dblclick"],{createEventArgs:e=>u(e)}),h(["error"],{createEventArgs:e=>{return{message:(t=e).message,filename:t.filename,lineno:t.lineno,colno:t.colno,type:t.type};var t}}),h(["loadstart","timeout","abort","load","loadend","progress"],{createEventArgs:e=>{return{lengthComputable:(t=e).lengthComputable,loaded:t.loaded,total:t.total,type:t.type};var t}}),h(["touchcancel","touchend","touchmove","touchenter","touchleave","touchstart"],{createEventArgs:e=>{return{detail:(t=e).detail,touches:d(t.touches),targetTouches:d(t.targetTouches),changedTouches:d(t.changedTouches),ctrlKey:t.ctrlKey,shiftKey:t.shiftKey,altKey:t.altKey,metaKey:t.metaKey,type:t.type};var t}}),h(["gotpointercapture","lostpointercapture","pointercancel","pointerdown","pointerenter","pointerleave","pointermove","pointerout","pointerover","pointerup"],{createEventArgs:e=>{return{...u(t=e),pointerId:t.pointerId,width:t.width,height:t.height,pressure:t.pressure,tiltX:t.tiltX,tiltY:t.tiltY,pointerType:t.pointerType,isPrimary:t.isPrimary};var t}}),h(["wheel","mousewheel"],{createEventArgs:e=>{return{...u(t=e),deltaX:t.deltaX,deltaY:t.deltaY,deltaZ:t.deltaZ,deltaMode:t.deltaMode};var t}}),h(["cancel","close","toggle"],{createEventArgs:()=>({})});const p=["date","datetime-local","month","time","week"],f=new Map;let g,m,v=0;const y={async add(e,t,n){if(!n)throw new Error("initialParameters must be an object, even if empty.");const o="__bl-dynamic-root:"+(++v).toString();f.set(o,e);const r=await S().invokeMethodAsync("AddRootComponent",t,o),i=new _(r,m[t]);return await i.setParameters(n),i}};function w(e){const t=f.get(e);if(t)return f.delete(e),t}class b{invoke(e){return this._callback(e)}setCallback(t){this._selfJSObjectReference||(this._selfJSObjectReference=e.createJSObjectReference(this)),this._callback=t}getJSObjectReference(){return this._selfJSObjectReference}dispose(){this._selfJSObjectReference&&e.disposeJSObjectReference(this._selfJSObjectReference)}}class _{constructor(e,t){this._jsEventCallbackWrappers=new Map,this._componentId=e;for(const e of t)"eventcallback"===e.type&&this._jsEventCallbackWrappers.set(e.name.toLowerCase(),new b)}setParameters(e){const t={},n=Object.entries(e||{}),o=n.length;for(const[e,o]of n){const n=this._jsEventCallbackWrappers.get(e.toLowerCase());n&&o?(n.setCallback(o),t[e]=n.getJSObjectReference()):t[e]=o}return S().invokeMethodAsync("SetRootComponentParameters",this._componentId,o,t)}async dispose(){if(null!==this._componentId){await S().invokeMethodAsync("RemoveRootComponent",this._componentId),this._componentId=null;for(const e of this._jsEventCallbackWrappers.values())e.dispose()}}}function S(){if(!g)throw new Error("Dynamic root components have not been enabled in this application.");return g}const C=new Map,E=[],I=new Map;function k(t,n,o,r){var i,s;if(C.has(t))throw new Error(`Interop methods are already registered for renderer ${t}`);C.set(t,n),o&&r&&Object.keys(o).length>0&&function(t,n,o){if(g)throw new Error("Dynamic root components have already been enabled.");g=t,m=n;for(const[t,r]of Object.entries(o)){const o=e.findJSFunction(t,0);for(const e of r)o(e,n[e])}}(A(t),o,r),null===(s=null===(i=I.get(t))||void 0===i?void 0:i[0])||void 0===s||s.call(i),function(e){for(const t of E)t(e)}(t)}function T(e){return C.has(e)}function R(e,t,n){return D(e,t.eventHandlerId,(()=>A(e).invokeMethodAsync("DispatchEventAsync",t,n)))}function A(e){const t=C.get(e);if(!t)throw new Error(`No interop methods are registered for renderer ${e}`);return t}let D=(e,t,n)=>n();const x=B(["abort","blur","cancel","canplay","canplaythrough","change","close","cuechange","durationchange","emptied","ended","error","focus","load","loadeddata","loadedmetadata","loadend","loadstart","mouseenter","mouseleave","pointerenter","pointerleave","pause","play","playing","progress","ratechange","reset","scroll","seeked","seeking","stalled","submit","suspend","timeupdate","toggle","unload","volumechange","waiting","DOMNodeInsertedIntoDocument","DOMNodeRemovedFromDocument"]),N={submit:!0},M=B(["click","dblclick","mousedown","mousemove","mouseup"]);class P{constructor(e){this.browserRendererId=e,this.afterClickCallbacks=[];const t=++P.nextEventDelegatorId;this.eventsCollectionKey=`_blazorEvents_${t}`,this.eventInfoStore=new U(this.onGlobalEvent.bind(this))}setListener(e,t,n,o){const r=this.getEventHandlerInfosForElement(e,!0),i=r.getHandler(t);if(i)this.eventInfoStore.update(i.eventHandlerId,n);else{const i={element:e,eventName:t,eventHandlerId:n,renderingComponentId:o};this.eventInfoStore.add(i),r.setHandler(t,i)}}getHandler(e){return this.eventInfoStore.get(e)}removeListener(e){const t=this.eventInfoStore.remove(e);if(t){const e=t.element,n=this.getEventHandlerInfosForElement(e,!1);n&&n.removeHandler(t.eventName)}}notifyAfterClick(e){this.afterClickCallbacks.push(e),this.eventInfoStore.addGlobalListener("click")}setStopPropagation(e,t,n){this.getEventHandlerInfosForElement(e,!0).stopPropagation(t,n)}setPreventDefault(e,t,n){this.getEventHandlerInfosForElement(e,!0).preventDefault(t,n)}onGlobalEvent(e){if(!(e.target instanceof Element))return;this.dispatchGlobalEventToAllElements(e.type,e);const t=(n=e.type,s.get(n));var n;t&&t.forEach((t=>this.dispatchGlobalEventToAllElements(t,e))),"click"===e.type&&this.afterClickCallbacks.forEach((t=>t(e)))}dispatchGlobalEventToAllElements(e,t){const n=t.composedPath();let o=n.shift(),i=null,s=!1;const a=Object.prototype.hasOwnProperty.call(x,e);let l=!1;for(;o;){const u=o,p=this.getEventHandlerInfosForElement(u,!1);if(p){const n=p.getHandler(e);if(n&&(h=u,d=t.type,!((h instanceof HTMLButtonElement||h instanceof HTMLInputElement||h instanceof HTMLTextAreaElement||h instanceof HTMLSelectElement)&&Object.prototype.hasOwnProperty.call(M,d)&&h.disabled))){if(!s){const n=c(e);i=(null==n?void 0:n.createEventArgs)?n.createEventArgs(t):{},s=!0}Object.prototype.hasOwnProperty.call(N,t.type)&&t.preventDefault(),R(this.browserRendererId,{eventHandlerId:n.eventHandlerId,eventName:e,eventFieldInfo:r.fromEvent(n.renderingComponentId,t)},i)}p.stopPropagation(e)&&(l=!0),p.preventDefault(e)&&t.preventDefault()}o=a||l?void 0:n.shift()}var h,d}getEventHandlerInfosForElement(e,t){return Object.prototype.hasOwnProperty.call(e,this.eventsCollectionKey)?e[this.eventsCollectionKey]:t?e[this.eventsCollectionKey]=new L:null}}P.nextEventDelegatorId=0;class U{constructor(e){this.globalListener=e,this.infosByEventHandlerId={},this.countByEventName={},a.push(this.handleEventNameAliasAdded.bind(this))}add(e){if(this.infosByEventHandlerId[e.eventHandlerId])throw new Error(`Event ${e.eventHandlerId} is already tracked`);this.infosByEventHandlerId[e.eventHandlerId]=e,this.addGlobalListener(e.eventName)}get(e){return this.infosByEventHandlerId[e]}addGlobalListener(e){if(e=l(e),Object.prototype.hasOwnProperty.call(this.countByEventName,e))this.countByEventName[e]++;else{this.countByEventName[e]=1;const t=Object.prototype.hasOwnProperty.call(x,e);document.addEventListener(e,this.globalListener,t)}}update(e,t){if(Object.prototype.hasOwnProperty.call(this.infosByEventHandlerId,t))throw new Error(`Event ${t} is already tracked`);const n=this.infosByEventHandlerId[e];delete this.infosByEventHandlerId[e],n.eventHandlerId=t,this.infosByEventHandlerId[t]=n}remove(e){const t=this.infosByEventHandlerId[e];if(t){delete this.infosByEventHandlerId[e];const n=l(t.eventName);0==--this.countByEventName[n]&&(delete this.countByEventName[n],document.removeEventListener(n,this.globalListener))}return t}handleEventNameAliasAdded(e,t){if(Object.prototype.hasOwnProperty.call(this.countByEventName,e)){const n=this.countByEventName[e];delete this.countByEventName[e],document.removeEventListener(e,this.globalListener),this.addGlobalListener(t),this.countByEventName[t]+=n-1}}}class L{constructor(){this.handlers={},this.preventDefaultFlags=null,this.stopPropagationFlags=null}getHandler(e){return Object.prototype.hasOwnProperty.call(this.handlers,e)?this.handlers[e]:null}setHandler(e,t){this.handlers[e]=t}removeHandler(e){delete this.handlers[e]}preventDefault(e,t){return void 0!==t&&(this.preventDefaultFlags=this.preventDefaultFlags||{},this.preventDefaultFlags[e]=t),!!this.preventDefaultFlags&&this.preventDefaultFlags[e]}stopPropagation(e,t){return void 0!==t&&(this.stopPropagationFlags=this.stopPropagationFlags||{},this.stopPropagationFlags[e]=t),!!this.stopPropagationFlags&&this.stopPropagationFlags[e]}}function B(e){const t={};return e.forEach((e=>{t[e]=!0})),t}const O=Symbol(),F=Symbol(),$=Symbol();function H(e){const{start:t,end:n}=e,o=t[$];if(o){if(o!==e)throw new Error("The start component comment was already associated with another component descriptor.");return t}const r=t.parentNode;if(!r)throw new Error(`Comment not connected to the DOM ${t.textContent}`);const i=W(r,!0),s=Y(i);t[F]=i,t[$]=e;const a=W(t);if(n){const e=Y(a),o=Array.prototype.indexOf.call(s,a)+1;let r=null;for(;r!==n;){const n=s.splice(o,1)[0];if(!n)throw new Error("Could not find the end component comment in the parent logical node list");n[F]=t,e.push(n),r=n}}return a}function W(e,t){if(O in e)return e;const n=[];if(e.childNodes.length>0){if(!t)throw new Error("New logical elements must start empty, or allowExistingContents must be true");e.childNodes.forEach((t=>{const o=W(t,!0);o[F]=e,n.push(o)}))}return e[O]=n,e}function j(e){const t=Y(e);for(;t.length;)J(e,0)}function z(e,t){const n=document.createComment("!");return q(n,e,t),n}function q(e,t,n){const o=e;let r=e;if(e instanceof Comment){const t=Y(o);if((null==t?void 0:t.length)>0){const t=oe(o),n=new Range;n.setStartBefore(e),n.setEndAfter(t),r=n.extractContents()}}const i=K(o);if(i){const e=Y(i),t=Array.prototype.indexOf.call(e,o);e.splice(t,1),delete o[F]}const s=Y(t);if(n0;)J(n,0)}const o=n;o.parentNode.removeChild(o)}function K(e){return e[F]||null}function V(e,t){return Y(e)[t]}function X(e){return e[$]||null}function G(e){const t=te(e);return"http://www.w3.org/2000/svg"===t.namespaceURI&&"foreignObject"!==t.tagName}function Y(e){return e[O]}function Q(e){const t=Y(K(e));return t[Array.prototype.indexOf.call(t,e)+1]||null}function Z(e){return O in e}function ee(e,t){const n=Y(e);t.forEach((e=>{e.moveRangeStart=n[e.fromSiblingIndex],e.moveRangeEnd=oe(e.moveRangeStart)})),t.forEach((t=>{const o=document.createComment("marker");t.moveToBeforeMarker=o;const r=n[t.toSiblingIndex+1];r?r.parentNode.insertBefore(o,r):ne(o,e)})),t.forEach((e=>{const t=e.moveToBeforeMarker,n=t.parentNode,o=e.moveRangeStart,r=e.moveRangeEnd;let i=o;for(;i;){const e=i.nextSibling;if(n.insertBefore(i,t),i===r)break;i=e}n.removeChild(t)})),t.forEach((e=>{n[e.toSiblingIndex]=e.moveRangeStart}))}function te(e){if(e instanceof Element||e instanceof DocumentFragment)return e;if(e instanceof Comment)return e.parentNode;throw new Error("Not a valid logical element")}function ne(e,t){if(t instanceof Element||t instanceof DocumentFragment)t.appendChild(e);else{if(!(t instanceof Comment))throw new Error(`Cannot append node because the parent is not a valid logical element. Parent: ${t}`);{const n=Q(t);n?n.parentNode.insertBefore(e,n):ne(e,K(t))}}}function oe(e){if(e instanceof Element||e instanceof DocumentFragment)return e;const t=Q(e);if(t)return t.previousSibling;{const t=K(e);return t instanceof Element||t instanceof DocumentFragment?t.lastChild:oe(t)}}function re(e){return`_bl_${e}`}const ie="__internalId";e.attachReviver(((e,t)=>t&&"object"==typeof t&&Object.prototype.hasOwnProperty.call(t,ie)&&"string"==typeof t[ie]?function(e){const t=`[${re(e)}]`;return document.querySelector(t)}(t[ie]):t));const se="_blazorDeferredValue";function ae(e){e instanceof HTMLOptionElement?de(e):se in e&&he(e,e[se])}function ce(e){return"select-multiple"===e.type}function le(e,t){e.value=t||""}function he(e,t){e instanceof HTMLSelectElement?ce(e)?function(e,t){t||(t=[]);for(let n=0;n{Be()&&Ne(e,(e=>{Ve(e,!0,!1)}))}))}getRootComponentCount(){return this.rootComponentIds.size}attachRootComponentToLogicalElement(e,t,n){if(we(t))throw new Error(`Root component '${e}' could not be attached because its target element is already associated with a root component`);n&&(t=z(t,Y(t).length)),ye(t,!0),this.attachComponentToElement(e,t),this.rootComponentIds.add(e),fe.add(t)}updateComponent(e,t,n,o){var r;const i=this.childComponentLocations[t];if(!i)throw new Error(`No element is currently associated with component ${t}`);fe.delete(i)&&(j(i),i instanceof Comment&&(i.textContent="!"));const s=null===(r=te(i))||void 0===r?void 0:r.getRootNode(),a=s&&s.activeElement;this.applyEdits(e,t,i,0,n,o),a instanceof HTMLElement&&s&&s.activeElement!==a&&a.focus()}disposeComponent(e){if(this.rootComponentIds.delete(e)){const t=this.childComponentLocations[e];ye(t,!1),!0===t[me]?fe.add(t):j(t)}delete this.childComponentLocations[e]}disposeEventHandler(e){this.eventDelegator.removeListener(e)}attachComponentToElement(e,t){this.childComponentLocations[e]=t}applyEdits(e,n,o,r,i,s){let a,c=0,l=r;const h=e.arrayBuilderSegmentReader,d=e.editReader,u=e.frameReader,p=h.values(i),f=h.offset(i),g=f+h.count(i);for(let i=f;i{const t=document.createElement("script");t.textContent=e.textContent,e.getAttributeNames().forEach((n=>{t.setAttribute(n,e.getAttribute(n))})),e.parentNode.replaceChild(t,e)})),ue.content));var s;let a=0;for(;i.firstChild;)q(i.firstChild,r,a++)}applyAttribute(e,t,n,o){const r=e.frameReader,i=r.attributeName(o),s=r.attributeEventHandlerId(o);if(s){const e=Se(i);return void this.eventDelegator.setListener(n,e,s,t)}const a=r.attributeValue(o);this.setOrRemoveAttributeOrProperty(n,i,a)}insertFrameRange(e,t,n,o,r,i,s){const a=o;for(let a=i;a{Ze(t,e)})},enableNavigationInterception:function(e){if(void 0!==Ee&&Ee!==e)throw new Error("Only one interactive runtime may enable navigation interception at a time.");Ee=e},setHasLocationChangingListeners:function(e,t){const n=We.get(e);if(!n)throw new Error(`Renderer with ID '${e}' is not listening for navigation events`);n.hasLocationChangingEventListeners=t},endLocationChanging:function(e,t){ze&&e===He&&(ze(t),ze=null)},navigateTo:function(e,t){Ke(e,t,!0)},refresh:function(e){!e&&Pe()?Ue(location.href,!0):location.reload()},getBaseURI:()=>document.baseURI,getLocationHref:()=>location.href,scrollToElement:Je};function Je(e){const t=document.getElementById(e);return!!t&&(t.scrollIntoView(),!0)}function Ke(e,t,n=!1){const o=Le(e),r=nt();if(t.forceLoad||!Me(o)||"serverside-fullpageload"===r)!function(e,t){if(location.href===e){const t=e+"?";history.replaceState(null,"",t),location.replace(e)}else t?location.replace(e):location.href=e}(e,t.replaceHistoryEntry);else if("clientside-router"===r)Ve(o,!1,t.replaceHistoryEntry,t.historyEntryState,n);else{if("serverside-enhanced"!==r)throw new Error(`Unsupported page load mechanism: ${r}`);Ue(o,t.replaceHistoryEntry)}}async function Ve(e,t,n,o=void 0,r=!1){if(Ye(),function(e){const t=e.indexOf("#");return t>-1&&location.href.replace(location.hash,"")===e.substring(0,t)}(e))return void function(e,t,n){Xe(e,t,n);const o=e.indexOf("#");o!==e.length-1&&Je(e.substring(o+1))}(e,n,o);const i=tt();(r||!(null==i?void 0:i.hasLocationChangingEventListeners)||await Qe(e,o,t,i))&&(Re=!0,Xe(e,n,o),await Ze(t))}function Xe(e,t,n=void 0){t?history.replaceState({userState:n,_index:$e},"",e):($e++,history.pushState({userState:n,_index:$e},"",e))}function Ge(e){return new Promise((t=>{const n=je;je=()=>{je=n,t()},history.go(e)}))}function Ye(){ze&&(ze(!1),ze=null)}function Qe(e,t,n,o){return new Promise((r=>{Ye(),He++,ze=r,o.locationChanging(He,e,t,n)}))}async function Ze(e,t){const n=null!=t?t:location.href;await Promise.all(Array.from(We,(async([t,o])=>{var r;T(t)&&await o.locationChanged(n,null===(r=history.state)||void 0===r?void 0:r.userState,e)})))}async function et(e){var t,n;je&&"serverside-enhanced"!==nt()&&await je(e),$e=null!==(n=null===(t=history.state)||void 0===t?void 0:t._index)&&void 0!==n?n:0}function tt(){const e=Oe();if(void 0!==e)return We.get(e)}function nt(){return Be()?"clientside-router":Pe()?"serverside-enhanced":window.Blazor._internal.isBlazorWeb?"serverside-fullpageload":"clientside-router"}const ot={focus:function(e,t){if(e instanceof HTMLElement)e.focus({preventScroll:t});else{if(!(e instanceof SVGElement))throw new Error("Unable to focus an invalid element.");if(!e.hasAttribute("tabindex"))throw new Error("Unable to focus an SVG element that does not have a tabindex.");e.focus({preventScroll:t})}},focusBySelector:function(e,t){const n=document.querySelector(e);n&&(n.hasAttribute("tabindex")||(n.tabIndex=-1),n.focus({preventScroll:!0}))}},rt={init:function(e,t,n,o=50){const r=st(t);(r||document.documentElement).style.overflowAnchor="none";const i=document.createRange();u(n.parentElement)&&(t.style.display="table-row",n.style.display="table-row");const s=new IntersectionObserver((function(o){o.forEach((o=>{var r;if(!o.isIntersecting)return;i.setStartAfter(t),i.setEndBefore(n);const s=i.getBoundingClientRect().height,a=null===(r=o.rootBounds)||void 0===r?void 0:r.height;o.target===t?e.invokeMethodAsync("OnSpacerBeforeVisible",o.intersectionRect.top-o.boundingClientRect.top,s,a):o.target===n&&n.offsetHeight>0&&e.invokeMethodAsync("OnSpacerAfterVisible",o.boundingClientRect.bottom-o.intersectionRect.bottom,s,a)}))}),{root:r,rootMargin:`${o}px`});s.observe(t),s.observe(n);const a=d(t),c=d(n),{observersByDotNetObjectId:l,id:h}=at(e);function d(e){const t={attributes:!0},n=new MutationObserver(((n,o)=>{u(e.parentElement)&&(o.disconnect(),e.style.display="table-row",o.observe(e,t)),s.unobserve(e),s.observe(e)}));return n.observe(e,t),n}function u(e){return null!==e&&(e instanceof HTMLTableElement&&""===e.style.display||"table"===e.style.display||e instanceof HTMLTableSectionElement&&""===e.style.display||"table-row-group"===e.style.display)}l[h]={intersectionObserver:s,mutationObserverBefore:a,mutationObserverAfter:c}},dispose:function(e){const{observersByDotNetObjectId:t,id:n}=at(e),o=t[n];o&&(o.intersectionObserver.disconnect(),o.mutationObserverBefore.disconnect(),o.mutationObserverAfter.disconnect(),e.dispose(),delete t[n])}},it=Symbol();function st(e){return e&&e!==document.body&&e!==document.documentElement?"visible"!==getComputedStyle(e).overflowY?e:st(e.parentElement):null}function at(e){var t;const n=e._callDispatcher,o=e._id;return null!==(t=n[it])&&void 0!==t||(n[it]={}),{observersByDotNetObjectId:n[it],id:o}}const ct={getAndRemoveExistingTitle:function(){var e;const t=document.head?document.head.getElementsByTagName("title"):[];if(0===t.length)return null;let n=null;for(let o=t.length-1;o>=0;o--){const r=t[o],i=r.previousSibling;i instanceof Comment&&null!==K(i)||(null===n&&(n=r.textContent),null===(e=r.parentNode)||void 0===e||e.removeChild(r))}return n}},lt={init:function(e,t){t._blazorInputFileNextFileId=0,t.addEventListener("click",(function(){t.value=""})),t.addEventListener("change",(function(){t._blazorFilesById={};const n=Array.prototype.map.call(t.files,(function(e){const n={id:++t._blazorInputFileNextFileId,lastModified:new Date(e.lastModified).toISOString(),name:e.name,size:e.size,contentType:e.type,readPromise:void 0,arrayBuffer:void 0,blob:e};return t._blazorFilesById[n.id]=n,n}));e.invokeMethodAsync("NotifyChange",n)}))},toImageFile:async function(e,t,n,o,r){const i=ht(e,t),s=await new Promise((function(e){const t=new Image;t.onload=function(){URL.revokeObjectURL(t.src),e(t)},t.onerror=function(){t.onerror=null,URL.revokeObjectURL(t.src)},t.src=URL.createObjectURL(i.blob)})),a=await new Promise((function(e){var t;const i=Math.min(1,o/s.width),a=Math.min(1,r/s.height),c=Math.min(i,a),l=document.createElement("canvas");l.width=Math.round(s.width*c),l.height=Math.round(s.height*c),null===(t=l.getContext("2d"))||void 0===t||t.drawImage(s,0,0,l.width,l.height),l.toBlob(e,n)})),c={id:++e._blazorInputFileNextFileId,lastModified:i.lastModified,name:i.name,size:(null==a?void 0:a.size)||0,contentType:n,blob:a||i.blob};return e._blazorFilesById[c.id]=c,c},readFileData:async function(e,t){return ht(e,t).blob}};function ht(e,t){const n=e._blazorFilesById[t];if(!n)throw new Error(`There is no file with ID ${t}. The file list may have changed. See https://aka.ms/aspnet/blazor-input-file-multiple-selections.`);return n}const dt=new Set,ut={enableNavigationPrompt:function(e){0===dt.size&&window.addEventListener("beforeunload",pt),dt.add(e)},disableNavigationPrompt:function(e){dt.delete(e),0===dt.size&&window.removeEventListener("beforeunload",pt)}};function pt(e){e.preventDefault(),e.returnValue=!0}async function ft(e,t,n){return e instanceof Blob?await async function(e,t,n){const o=e.slice(t,t+n),r=await o.arrayBuffer();return new Uint8Array(r)}(e,t,n):function(e,t,n){return new Uint8Array(e.buffer,e.byteOffset+t,n)}(e,t,n)}const gt=new Map,mt={navigateTo:function(e,t,n=!1){Ke(e,t instanceof Object?t:{forceLoad:t,replaceHistoryEntry:n})},registerCustomEventType:function(e,t){if(!t)throw new Error("The options parameter is required.");if(i.has(e))throw new Error(`The event '${e}' is already registered.`);if(t.browserEventName){const n=s.get(t.browserEventName);n?n.push(e):s.set(t.browserEventName,[e]),a.forEach((n=>n(e,t.browserEventName)))}i.set(e,t)},rootComponents:y,runtime:{},_internal:{navigationManager:qe,domWrapper:ot,Virtualize:rt,PageTitle:ct,InputFile:lt,NavigationLock:ut,getJSDataStreamChunk:ft,attachWebRendererInterop:k}};var vt;window.Blazor=mt,function(e){e[e.Trace=0]="Trace",e[e.Debug=1]="Debug",e[e.Information=2]="Information",e[e.Warning=3]="Warning",e[e.Error=4]="Error",e[e.Critical=5]="Critical",e[e.None=6]="None"}(vt||(vt={}));class yt{log(e,t){}}yt.instance=new yt;class wt{constructor(e){this.minLevel=e}log(e,t){if(e>=this.minLevel){const n=`[${(new Date).toISOString()}] ${vt[e]}: ${t}`;switch(e){case vt.Critical:case vt.Error:console.error(n);break;case vt.Warning:console.warn(n);break;case vt.Information:console.info(n);break;default:console.log(n)}}}}function bt(e,t){switch(t){case"webassembly":return kt(e,"webassembly");case"server":return function(e){return kt(e,"server").sort(((e,t)=>e.sequence-t.sequence))}(e);case"auto":return kt(e,"auto")}}const _t=/^\s*Blazor-Server-Component-State:(?[a-zA-Z0-9+/=]+)$/,St=/^\s*Blazor-WebAssembly-Component-State:(?[a-zA-Z0-9+/=]+)$/,Ct=/^\s*Blazor-Web-Initializers:(?[a-zA-Z0-9+/=]+)$/;function Et(e){return It(e,_t)}function It(e,t,n="state"){var o;if(e.nodeType===Node.COMMENT_NODE){const r=e.textContent||"",i=t.exec(r),s=i&&i.groups&&i.groups[n];return s&&(null===(o=e.parentNode)||void 0===o||o.removeChild(e)),s}if(!e.hasChildNodes())return;const r=e.childNodes;for(let e=0;e.*)$/);function Rt(e,t){const n=e.currentElement;var o,r,i;if(n&&n.nodeType===Node.COMMENT_NODE&&n.textContent){const s=Tt.exec(n.textContent),a=s&&s.groups&&s.groups.descriptor;if(!a)return;!function(e){if(e.parentNode instanceof Document)throw new Error("Root components cannot be marked as interactive. The element must be rendered statically so that scripts are not evaluated multiple times.")}(n);try{const s=function(e){const t=JSON.parse(e),{type:n}=t;if("server"!==n&&"webassembly"!==n&&"auto"!==n)throw new Error(`Invalid component type '${n}'.`);return t}(a),c=function(e,t,n){const{prerenderId:o}=e;if(o){for(;n.next()&&n.currentElement;){const e=n.currentElement;if(e.nodeType!==Node.COMMENT_NODE)continue;if(!e.textContent)continue;const t=Tt.exec(e.textContent),r=t&&t[1];if(r)return Nt(r,o),e}throw new Error(`Could not find an end component comment for '${t}'.`)}}(s,n,e);if(t!==s.type)return;switch(s.type){case"webassembly":return r=n,i=c,xt(o=s),{...o,uniqueId:At++,start:r,end:i};case"server":return function(e,t,n){return Dt(e),{...e,uniqueId:At++,start:t,end:n}}(s,n,c);case"auto":return function(e,t,n){return Dt(e),xt(e),{...e,uniqueId:At++,start:t,end:n}}(s,n,c)}}catch(e){throw new Error(`Found malformed component comment at ${n.textContent}`)}}}let At=0;function Dt(e){const{descriptor:t,sequence:n}=e;if(!t)throw new Error("descriptor must be defined when using a descriptor.");if(void 0===n)throw new Error("sequence must be defined when using a descriptor.");if(!Number.isInteger(n))throw new Error(`Error parsing the sequence '${n}' for component '${JSON.stringify(e)}'`)}function xt(e){const{assembly:t,typeName:n}=e;if(!t)throw new Error("assembly must be defined when using a descriptor.");if(!n)throw new Error("typeName must be defined when using a descriptor.");e.parameterDefinitions=e.parameterDefinitions&&atob(e.parameterDefinitions),e.parameterValues=e.parameterValues&&atob(e.parameterValues)}function Nt(e,t){const n=JSON.parse(e);if(1!==Object.keys(n).length)throw new Error(`Invalid end of component comment: '${e}'`);const o=n.prerenderId;if(!o)throw new Error(`End of component comment must have a value for the prerendered property: '${e}'`);if(o!==t)throw new Error(`End of component comment prerendered property must match the start comment prerender id: '${t}', '${o}'`)}class Mt{constructor(e){this.childNodes=e,this.currentIndex=-1,this.length=e.length}next(){return this.currentIndex++,this.currentIndex{n+=`0x${e<16?"0":""}${e.toString(16)} `})),n.substr(0,n.length-1)}(e)}'`)):"string"==typeof e&&(n=`String data of length ${e.length}`,t&&(n+=`. Content: '${e}'`)),n}function jt(e){return e&&"undefined"!=typeof ArrayBuffer&&(e instanceof ArrayBuffer||e.constructor&&"ArrayBuffer"===e.constructor.name)}async function zt(e,t,n,o,r,i){const s={},[a,c]=Kt();s[a]=c,e.log(Bt.Trace,`(${t} transport) sending data. ${Wt(r,i.logMessageContent)}.`);const l=jt(r)?"arraybuffer":"text",h=await n.post(o,{content:r,headers:{...s,...i.headers},responseType:l,timeout:i.timeout,withCredentials:i.withCredentials});e.log(Bt.Trace,`(${t} transport) request complete. Response status: ${h.statusCode}.`)}class qt{constructor(e,t){this._subject=e,this._observer=t}dispose(){const e=this._subject.observers.indexOf(this._observer);e>-1&&this._subject.observers.splice(e,1),0===this._subject.observers.length&&this._subject.cancelCallback&&this._subject.cancelCallback().catch((e=>{}))}}class Jt{constructor(e){this._minLevel=e,this.out=console}log(e,t){if(e>=this._minLevel){const n=`[${(new Date).toISOString()}] ${Bt[e]}: ${t}`;switch(e){case Bt.Critical:case Bt.Error:this.out.error(n);break;case Bt.Warning:this.out.warn(n);break;case Bt.Information:this.out.info(n);break;default:this.out.log(n)}}}}function Kt(){let e="X-SignalR-User-Agent";return Ht.isNode&&(e="User-Agent"),[e,Vt(Ft,Xt(),Ht.isNode?"NodeJS":"Browser",Gt())]}function Vt(e,t,n,o){let r="Microsoft SignalR/";const i=e.split(".");return r+=`${i[0]}.${i[1]}`,r+=` (${e}; `,r+=t&&""!==t?`${t}; `:"Unknown OS; ",r+=`${n}`,r+=o?`; ${o}`:"; Unknown Runtime Version",r+=")",r}function Xt(){if(!Ht.isNode)return"";switch(process.platform){case"win32":return"Windows NT";case"darwin":return"macOS";case"linux":return"Linux";default:return process.platform}}function Gt(){if(Ht.isNode)return process.versions.node}function Yt(e){return e.stack?e.stack:e.message?e.message:`${e}`}class Qt{writeHandshakeRequest(e){return Lt.write(JSON.stringify(e))}parseHandshakeResponse(e){let t,n;if(jt(e)){const o=new Uint8Array(e),r=o.indexOf(Lt.RecordSeparatorCode);if(-1===r)throw new Error("Message is incomplete.");const i=r+1;t=String.fromCharCode.apply(null,Array.prototype.slice.call(o.slice(0,i))),n=o.byteLength>i?o.slice(i).buffer:null}else{const o=e,r=o.indexOf(Lt.RecordSeparator);if(-1===r)throw new Error("Message is incomplete.");const i=r+1;t=o.substring(0,i),n=o.length>i?o.substring(i):null}const o=Lt.parse(t),r=JSON.parse(o[0]);if(r.type)throw new Error("Expected a handshake response from the server.");return[n,r]}}class Zt extends Error{constructor(e,t){const n=new.target.prototype;super(`${e}: Status code '${t}'`),this.statusCode=t,this.__proto__=n}}class en extends Error{constructor(e="A timeout occurred."){const t=new.target.prototype;super(e),this.__proto__=t}}class tn extends Error{constructor(e="An abort occurred."){const t=new.target.prototype;super(e),this.__proto__=t}}class nn extends Error{constructor(e,t){const n=new.target.prototype;super(e),this.transport=t,this.errorType="UnsupportedTransportError",this.__proto__=n}}class on extends Error{constructor(e,t){const n=new.target.prototype;super(e),this.transport=t,this.errorType="DisabledTransportError",this.__proto__=n}}class rn extends Error{constructor(e,t){const n=new.target.prototype;super(e),this.transport=t,this.errorType="FailedToStartTransportError",this.__proto__=n}}class sn extends Error{constructor(e){const t=new.target.prototype;super(e),this.errorType="FailedToNegotiateWithServerError",this.__proto__=t}}class an extends Error{constructor(e,t){const n=new.target.prototype;super(e),this.innerErrors=t,this.__proto__=n}}var cn,ln;!function(e){e[e.Invocation=1]="Invocation",e[e.StreamItem=2]="StreamItem",e[e.Completion=3]="Completion",e[e.StreamInvocation=4]="StreamInvocation",e[e.CancelInvocation=5]="CancelInvocation",e[e.Ping=6]="Ping",e[e.Close=7]="Close",e[e.Ack=8]="Ack",e[e.Sequence=9]="Sequence"}(cn||(cn={}));class hn{constructor(){this.observers=[]}next(e){for(const t of this.observers)t.next(e)}error(e){for(const t of this.observers)t.error&&t.error(e)}complete(){for(const e of this.observers)e.complete&&e.complete()}subscribe(e){return this.observers.push(e),new qt(this,e)}}class dn{constructor(e,t,n){this._bufferSize=1e5,this._messages=[],this._totalMessageCount=0,this._waitForSequenceMessage=!1,this._nextReceivingSequenceId=1,this._latestReceivedSequenceId=0,this._bufferedByteCount=0,this._reconnectInProgress=!1,this._protocol=e,this._connection=t,this._bufferSize=n}async _send(e){const t=this._protocol.writeMessage(e);let n=Promise.resolve();if(this._isInvocationMessage(e)){this._totalMessageCount++;let e=()=>{},o=()=>{};jt(t)?this._bufferedByteCount+=t.byteLength:this._bufferedByteCount+=t.length,this._bufferedByteCount>=this._bufferSize&&(n=new Promise(((t,n)=>{e=t,o=n}))),this._messages.push(new un(t,this._totalMessageCount,e,o))}try{this._reconnectInProgress||await this._connection.send(t)}catch{this._disconnected()}await n}_ack(e){let t=-1;for(let n=0;nthis._nextReceivingSequenceId?this._connection.stop(new Error("Sequence ID greater than amount of messages we've received.")):this._nextReceivingSequenceId=e.sequenceId}_disconnected(){this._reconnectInProgress=!0,this._waitForSequenceMessage=!0}async _resend(){const e=0!==this._messages.length?this._messages[0]._id:this._totalMessageCount+1;await this._connection.send(this._protocol.writeMessage({type:cn.Sequence,sequenceId:e}));const t=this._messages;for(const e of t)await this._connection.send(e._message);this._reconnectInProgress=!1}_dispose(e){null!=e||(e=new Error("Unable to reconnect to server."));for(const t of this._messages)t._rejector(e)}_isInvocationMessage(e){switch(e.type){case cn.Invocation:case cn.StreamItem:case cn.Completion:case cn.StreamInvocation:case cn.CancelInvocation:return!0;case cn.Close:case cn.Sequence:case cn.Ping:case cn.Ack:return!1}}_ackTimer(){void 0===this._ackTimerHandle&&(this._ackTimerHandle=setTimeout((async()=>{try{this._reconnectInProgress||await this._connection.send(this._protocol.writeMessage({type:cn.Ack,sequenceId:this._latestReceivedSequenceId}))}catch{}clearTimeout(this._ackTimerHandle),this._ackTimerHandle=void 0}),1e3))}}class un{constructor(e,t,n,o){this._message=e,this._id=t,this._resolver=n,this._rejector=o}}!function(e){e.Disconnected="Disconnected",e.Connecting="Connecting",e.Connected="Connected",e.Disconnecting="Disconnecting",e.Reconnecting="Reconnecting"}(ln||(ln={}));class pn{static create(e,t,n,o,r,i,s){return new pn(e,t,n,o,r,i,s)}constructor(e,t,n,o,r,i,s){this._nextKeepAlive=0,this._freezeEventListener=()=>{this._logger.log(Bt.Warning,"The page is being frozen, this will likely lead to the connection being closed and messages being lost. For more information see the docs at https://learn.microsoft.com/aspnet/core/signalr/javascript-client#bsleep")},$t.isRequired(e,"connection"),$t.isRequired(t,"logger"),$t.isRequired(n,"protocol"),this.serverTimeoutInMilliseconds=null!=r?r:3e4,this.keepAliveIntervalInMilliseconds=null!=i?i:15e3,this._statefulReconnectBufferSize=null!=s?s:1e5,this._logger=t,this._protocol=n,this.connection=e,this._reconnectPolicy=o,this._handshakeProtocol=new Qt,this.connection.onreceive=e=>this._processIncomingData(e),this.connection.onclose=e=>this._connectionClosed(e),this._callbacks={},this._methods={},this._closedCallbacks=[],this._reconnectingCallbacks=[],this._reconnectedCallbacks=[],this._invocationId=0,this._receivedHandshakeResponse=!1,this._connectionState=ln.Disconnected,this._connectionStarted=!1,this._cachedPingMessage=this._protocol.writeMessage({type:cn.Ping})}get state(){return this._connectionState}get connectionId(){return this.connection&&this.connection.connectionId||null}get baseUrl(){return this.connection.baseUrl||""}set baseUrl(e){if(this._connectionState!==ln.Disconnected&&this._connectionState!==ln.Reconnecting)throw new Error("The HubConnection must be in the Disconnected or Reconnecting state to change the url.");if(!e)throw new Error("The HubConnection url must be a valid url.");this.connection.baseUrl=e}start(){return this._startPromise=this._startWithStateTransitions(),this._startPromise}async _startWithStateTransitions(){if(this._connectionState!==ln.Disconnected)return Promise.reject(new Error("Cannot start a HubConnection that is not in the 'Disconnected' state."));this._connectionState=ln.Connecting,this._logger.log(Bt.Debug,"Starting HubConnection.");try{await this._startInternal(),Ht.isBrowser&&window.document.addEventListener("freeze",this._freezeEventListener),this._connectionState=ln.Connected,this._connectionStarted=!0,this._logger.log(Bt.Debug,"HubConnection connected successfully.")}catch(e){return this._connectionState=ln.Disconnected,this._logger.log(Bt.Debug,`HubConnection failed to start successfully because of error '${e}'.`),Promise.reject(e)}}async _startInternal(){this._stopDuringStartError=void 0,this._receivedHandshakeResponse=!1;const e=new Promise(((e,t)=>{this._handshakeResolver=e,this._handshakeRejecter=t}));await this.connection.start(this._protocol.transferFormat);try{let t=this._protocol.version;this.connection.features.reconnect||(t=1);const n={protocol:this._protocol.name,version:t};if(this._logger.log(Bt.Debug,"Sending handshake request."),await this._sendMessage(this._handshakeProtocol.writeHandshakeRequest(n)),this._logger.log(Bt.Information,`Using HubProtocol '${this._protocol.name}'.`),this._cleanupTimeout(),this._resetTimeoutPeriod(),this._resetKeepAliveInterval(),await e,this._stopDuringStartError)throw this._stopDuringStartError;!!this.connection.features.reconnect&&(this._messageBuffer=new dn(this._protocol,this.connection,this._statefulReconnectBufferSize),this.connection.features.disconnected=this._messageBuffer._disconnected.bind(this._messageBuffer),this.connection.features.resend=()=>{if(this._messageBuffer)return this._messageBuffer._resend()}),this.connection.features.inherentKeepAlive||await this._sendMessage(this._cachedPingMessage)}catch(e){throw this._logger.log(Bt.Debug,`Hub handshake failed with error '${e}' during start(). Stopping HubConnection.`),this._cleanupTimeout(),this._cleanupPingTimer(),await this.connection.stop(e),e}}async stop(){const e=this._startPromise;this.connection.features.reconnect=!1,this._stopPromise=this._stopInternal(),await this._stopPromise;try{await e}catch(e){}}_stopInternal(e){if(this._connectionState===ln.Disconnected)return this._logger.log(Bt.Debug,`Call to HubConnection.stop(${e}) ignored because it is already in the disconnected state.`),Promise.resolve();if(this._connectionState===ln.Disconnecting)return this._logger.log(Bt.Debug,`Call to HttpConnection.stop(${e}) ignored because the connection is already in the disconnecting state.`),this._stopPromise;const t=this._connectionState;return this._connectionState=ln.Disconnecting,this._logger.log(Bt.Debug,"Stopping HubConnection."),this._reconnectDelayHandle?(this._logger.log(Bt.Debug,"Connection stopped during reconnect delay. Done reconnecting."),clearTimeout(this._reconnectDelayHandle),this._reconnectDelayHandle=void 0,this._completeClose(),Promise.resolve()):(t===ln.Connected&&this._sendCloseMessage(),this._cleanupTimeout(),this._cleanupPingTimer(),this._stopDuringStartError=e||new tn("The connection was stopped before the hub handshake could complete."),this.connection.stop(e))}async _sendCloseMessage(){try{await this._sendWithProtocol(this._createCloseMessage())}catch{}}stream(e,...t){const[n,o]=this._replaceStreamingParams(t),r=this._createStreamInvocation(e,t,o);let i;const s=new hn;return s.cancelCallback=()=>{const e=this._createCancelInvocation(r.invocationId);return delete this._callbacks[r.invocationId],i.then((()=>this._sendWithProtocol(e)))},this._callbacks[r.invocationId]=(e,t)=>{t?s.error(t):e&&(e.type===cn.Completion?e.error?s.error(new Error(e.error)):s.complete():s.next(e.item))},i=this._sendWithProtocol(r).catch((e=>{s.error(e),delete this._callbacks[r.invocationId]})),this._launchStreams(n,i),s}_sendMessage(e){return this._resetKeepAliveInterval(),this.connection.send(e)}_sendWithProtocol(e){return this._messageBuffer?this._messageBuffer._send(e):this._sendMessage(this._protocol.writeMessage(e))}send(e,...t){const[n,o]=this._replaceStreamingParams(t),r=this._sendWithProtocol(this._createInvocation(e,t,!0,o));return this._launchStreams(n,r),r}invoke(e,...t){const[n,o]=this._replaceStreamingParams(t),r=this._createInvocation(e,t,!1,o);return new Promise(((e,t)=>{this._callbacks[r.invocationId]=(n,o)=>{o?t(o):n&&(n.type===cn.Completion?n.error?t(new Error(n.error)):e(n.result):t(new Error(`Unexpected message type: ${n.type}`)))};const o=this._sendWithProtocol(r).catch((e=>{t(e),delete this._callbacks[r.invocationId]}));this._launchStreams(n,o)}))}on(e,t){e&&t&&(e=e.toLowerCase(),this._methods[e]||(this._methods[e]=[]),-1===this._methods[e].indexOf(t)&&this._methods[e].push(t))}off(e,t){if(!e)return;e=e.toLowerCase();const n=this._methods[e];if(n)if(t){const o=n.indexOf(t);-1!==o&&(n.splice(o,1),0===n.length&&delete this._methods[e])}else delete this._methods[e]}onclose(e){e&&this._closedCallbacks.push(e)}onreconnecting(e){e&&this._reconnectingCallbacks.push(e)}onreconnected(e){e&&this._reconnectedCallbacks.push(e)}_processIncomingData(e){if(this._cleanupTimeout(),this._receivedHandshakeResponse||(e=this._processHandshakeResponse(e),this._receivedHandshakeResponse=!0),e){const t=this._protocol.parseMessages(e,this._logger);for(const e of t)if(!this._messageBuffer||this._messageBuffer._shouldProcessMessage(e))switch(e.type){case cn.Invocation:this._invokeClientMethod(e);break;case cn.StreamItem:case cn.Completion:{const t=this._callbacks[e.invocationId];if(t){e.type===cn.Completion&&delete this._callbacks[e.invocationId];try{t(e)}catch(e){this._logger.log(Bt.Error,`Stream callback threw error: ${Yt(e)}`)}}break}case cn.Ping:break;case cn.Close:{this._logger.log(Bt.Information,"Close message received from server.");const t=e.error?new Error("Server returned an error on close: "+e.error):void 0;!0===e.allowReconnect?this.connection.stop(t):this._stopPromise=this._stopInternal(t);break}case cn.Ack:this._messageBuffer&&this._messageBuffer._ack(e);break;case cn.Sequence:this._messageBuffer&&this._messageBuffer._resetSequence(e);break;default:this._logger.log(Bt.Warning,`Invalid message type: ${e.type}.`)}}this._resetTimeoutPeriod()}_processHandshakeResponse(e){let t,n;try{[n,t]=this._handshakeProtocol.parseHandshakeResponse(e)}catch(e){const t="Error parsing handshake response: "+e;this._logger.log(Bt.Error,t);const n=new Error(t);throw this._handshakeRejecter(n),n}if(t.error){const e="Server returned handshake error: "+t.error;this._logger.log(Bt.Error,e);const n=new Error(e);throw this._handshakeRejecter(n),n}return this._logger.log(Bt.Debug,"Server handshake complete."),this._handshakeResolver(),n}_resetKeepAliveInterval(){this.connection.features.inherentKeepAlive||(this._nextKeepAlive=(new Date).getTime()+this.keepAliveIntervalInMilliseconds,this._cleanupPingTimer())}_resetTimeoutPeriod(){if(!(this.connection.features&&this.connection.features.inherentKeepAlive||(this._timeoutHandle=setTimeout((()=>this.serverTimeout()),this.serverTimeoutInMilliseconds),void 0!==this._pingServerHandle))){let e=this._nextKeepAlive-(new Date).getTime();e<0&&(e=0),this._pingServerHandle=setTimeout((async()=>{if(this._connectionState===ln.Connected)try{await this._sendMessage(this._cachedPingMessage)}catch{this._cleanupPingTimer()}}),e)}}serverTimeout(){this.connection.stop(new Error("Server timeout elapsed without receiving a message from the server."))}async _invokeClientMethod(e){const t=e.target.toLowerCase(),n=this._methods[t];if(!n)return this._logger.log(Bt.Warning,`No client method with the name '${t}' found.`),void(e.invocationId&&(this._logger.log(Bt.Warning,`No result given for '${t}' method and invocation ID '${e.invocationId}'.`),await this._sendWithProtocol(this._createCompletionMessage(e.invocationId,"Client didn't provide a result.",null))));const o=n.slice(),r=!!e.invocationId;let i,s,a;for(const n of o)try{const o=i;i=await n.apply(this,e.arguments),r&&i&&o&&(this._logger.log(Bt.Error,`Multiple results provided for '${t}'. Sending error to server.`),a=this._createCompletionMessage(e.invocationId,"Client provided multiple results.",null)),s=void 0}catch(e){s=e,this._logger.log(Bt.Error,`A callback for the method '${t}' threw error '${e}'.`)}a?await this._sendWithProtocol(a):r?(s?a=this._createCompletionMessage(e.invocationId,`${s}`,null):void 0!==i?a=this._createCompletionMessage(e.invocationId,null,i):(this._logger.log(Bt.Warning,`No result given for '${t}' method and invocation ID '${e.invocationId}'.`),a=this._createCompletionMessage(e.invocationId,"Client didn't provide a result.",null)),await this._sendWithProtocol(a)):i&&this._logger.log(Bt.Error,`Result given for '${t}' method but server is not expecting a result.`)}_connectionClosed(e){this._logger.log(Bt.Debug,`HubConnection.connectionClosed(${e}) called while in state ${this._connectionState}.`),this._stopDuringStartError=this._stopDuringStartError||e||new tn("The underlying connection was closed before the hub handshake could complete."),this._handshakeResolver&&this._handshakeResolver(),this._cancelCallbacksWithError(e||new Error("Invocation canceled due to the underlying connection being closed.")),this._cleanupTimeout(),this._cleanupPingTimer(),this._connectionState===ln.Disconnecting?this._completeClose(e):this._connectionState===ln.Connected&&this._reconnectPolicy?this._reconnect(e):this._connectionState===ln.Connected&&this._completeClose(e)}_completeClose(e){if(this._connectionStarted){this._connectionState=ln.Disconnected,this._connectionStarted=!1,this._messageBuffer&&(this._messageBuffer._dispose(null!=e?e:new Error("Connection closed.")),this._messageBuffer=void 0),Ht.isBrowser&&window.document.removeEventListener("freeze",this._freezeEventListener);try{this._closedCallbacks.forEach((t=>t.apply(this,[e])))}catch(t){this._logger.log(Bt.Error,`An onclose callback called with error '${e}' threw error '${t}'.`)}}}async _reconnect(e){const t=Date.now();let n=0,o=void 0!==e?e:new Error("Attempting to reconnect due to a unknown error."),r=this._getNextRetryDelay(n++,0,o);if(null===r)return this._logger.log(Bt.Debug,"Connection not reconnecting because the IRetryPolicy returned null on the first reconnect attempt."),void this._completeClose(e);if(this._connectionState=ln.Reconnecting,e?this._logger.log(Bt.Information,`Connection reconnecting because of error '${e}'.`):this._logger.log(Bt.Information,"Connection reconnecting."),0!==this._reconnectingCallbacks.length){try{this._reconnectingCallbacks.forEach((t=>t.apply(this,[e])))}catch(t){this._logger.log(Bt.Error,`An onreconnecting callback called with error '${e}' threw error '${t}'.`)}if(this._connectionState!==ln.Reconnecting)return void this._logger.log(Bt.Debug,"Connection left the reconnecting state in onreconnecting callback. Done reconnecting.")}for(;null!==r;){if(this._logger.log(Bt.Information,`Reconnect attempt number ${n} will start in ${r} ms.`),await new Promise((e=>{this._reconnectDelayHandle=setTimeout(e,r)})),this._reconnectDelayHandle=void 0,this._connectionState!==ln.Reconnecting)return void this._logger.log(Bt.Debug,"Connection left the reconnecting state during reconnect delay. Done reconnecting.");try{if(await this._startInternal(),this._connectionState=ln.Connected,this._logger.log(Bt.Information,"HubConnection reconnected successfully."),0!==this._reconnectedCallbacks.length)try{this._reconnectedCallbacks.forEach((e=>e.apply(this,[this.connection.connectionId])))}catch(e){this._logger.log(Bt.Error,`An onreconnected callback called with connectionId '${this.connection.connectionId}; threw error '${e}'.`)}return}catch(e){if(this._logger.log(Bt.Information,`Reconnect attempt failed because of error '${e}'.`),this._connectionState!==ln.Reconnecting)return this._logger.log(Bt.Debug,`Connection moved to the '${this._connectionState}' from the reconnecting state during reconnect attempt. Done reconnecting.`),void(this._connectionState===ln.Disconnecting&&this._completeClose());o=e instanceof Error?e:new Error(e.toString()),r=this._getNextRetryDelay(n++,Date.now()-t,o)}}this._logger.log(Bt.Information,`Reconnect retries have been exhausted after ${Date.now()-t} ms and ${n} failed attempts. Connection disconnecting.`),this._completeClose()}_getNextRetryDelay(e,t,n){try{return this._reconnectPolicy.nextRetryDelayInMilliseconds({elapsedMilliseconds:t,previousRetryCount:e,retryReason:n})}catch(n){return this._logger.log(Bt.Error,`IRetryPolicy.nextRetryDelayInMilliseconds(${e}, ${t}) threw error '${n}'.`),null}}_cancelCallbacksWithError(e){const t=this._callbacks;this._callbacks={},Object.keys(t).forEach((n=>{const o=t[n];try{o(null,e)}catch(t){this._logger.log(Bt.Error,`Stream 'error' callback called with '${e}' threw error: ${Yt(t)}`)}}))}_cleanupPingTimer(){this._pingServerHandle&&(clearTimeout(this._pingServerHandle),this._pingServerHandle=void 0)}_cleanupTimeout(){this._timeoutHandle&&clearTimeout(this._timeoutHandle)}_createInvocation(e,t,n,o){if(n)return 0!==o.length?{arguments:t,streamIds:o,target:e,type:cn.Invocation}:{arguments:t,target:e,type:cn.Invocation};{const n=this._invocationId;return this._invocationId++,0!==o.length?{arguments:t,invocationId:n.toString(),streamIds:o,target:e,type:cn.Invocation}:{arguments:t,invocationId:n.toString(),target:e,type:cn.Invocation}}}_launchStreams(e,t){if(0!==e.length){t||(t=Promise.resolve());for(const n in e)e[n].subscribe({complete:()=>{t=t.then((()=>this._sendWithProtocol(this._createCompletionMessage(n))))},error:e=>{let o;o=e instanceof Error?e.message:e&&e.toString?e.toString():"Unknown error",t=t.then((()=>this._sendWithProtocol(this._createCompletionMessage(n,o))))},next:e=>{t=t.then((()=>this._sendWithProtocol(this._createStreamItemMessage(n,e))))}})}}_replaceStreamingParams(e){const t=[],n=[];for(let o=0;o0)&&(t=!1,this._accessToken=await this._accessTokenFactory()),this._setAuthorizationHeader(e);const n=await this._innerClient.send(e);return t&&401===n.statusCode&&this._accessTokenFactory?(this._accessToken=await this._accessTokenFactory(),this._setAuthorizationHeader(e),await this._innerClient.send(e)):n}_setAuthorizationHeader(e){e.headers||(e.headers={}),this._accessToken?e.headers[mn.Authorization]=`Bearer ${this._accessToken}`:this._accessTokenFactory&&e.headers[mn.Authorization]&&delete e.headers[mn.Authorization]}getCookieString(e){return this._innerClient.getCookieString(e)}}class bn extends yn{constructor(e){super(),this._logger=e;const t={_fetchType:void 0,_jar:void 0};var o;o=t,"undefined"==typeof fetch&&(o._jar=new(n(628).CookieJar),"undefined"==typeof fetch?o._fetchType=n(200):o._fetchType=fetch,o._fetchType=n(203)(o._fetchType,o._jar),1)?(this._fetchType=t._fetchType,this._jar=t._jar):this._fetchType=fetch.bind(function(){if("undefined"!=typeof globalThis)return globalThis;if("undefined"!=typeof self)return self;if("undefined"!=typeof window)return window;if(void 0!==n.g)return n.g;throw new Error("could not find global")}()),this._abortControllerType=AbortController;const r={_abortControllerType:this._abortControllerType};(function(e){return"undefined"==typeof AbortController&&(e._abortControllerType=n(778),!0)})(r)&&(this._abortControllerType=r._abortControllerType)}async send(e){if(e.abortSignal&&e.abortSignal.aborted)throw new tn;if(!e.method)throw new Error("No method defined.");if(!e.url)throw new Error("No url defined.");const t=new this._abortControllerType;let n;e.abortSignal&&(e.abortSignal.onabort=()=>{t.abort(),n=new tn});let o,r=null;if(e.timeout){const o=e.timeout;r=setTimeout((()=>{t.abort(),this._logger.log(Bt.Warning,"Timeout from HTTP request."),n=new en}),o)}""===e.content&&(e.content=void 0),e.content&&(e.headers=e.headers||{},jt(e.content)?e.headers["Content-Type"]="application/octet-stream":e.headers["Content-Type"]="text/plain;charset=UTF-8");try{o=await this._fetchType(e.url,{body:e.content,cache:"no-cache",credentials:!0===e.withCredentials?"include":"same-origin",headers:{"X-Requested-With":"XMLHttpRequest",...e.headers},method:e.method,mode:"cors",redirect:"follow",signal:t.signal})}catch(e){if(n)throw n;throw this._logger.log(Bt.Warning,`Error from HTTP request. ${e}.`),e}finally{r&&clearTimeout(r),e.abortSignal&&(e.abortSignal.onabort=null)}if(!o.ok){const e=await _n(o,"text");throw new Zt(e||o.statusText,o.status)}const i=_n(o,e.responseType),s=await i;return new vn(o.status,o.statusText,s)}getCookieString(e){return""}}function _n(e,t){let n;switch(t){case"arraybuffer":n=e.arrayBuffer();break;case"text":default:n=e.text();break;case"blob":case"document":case"json":throw new Error(`${t} is not supported.`)}return n}class Sn extends yn{constructor(e){super(),this._logger=e}send(e){return e.abortSignal&&e.abortSignal.aborted?Promise.reject(new tn):e.method?e.url?new Promise(((t,n)=>{const o=new XMLHttpRequest;o.open(e.method,e.url,!0),o.withCredentials=void 0===e.withCredentials||e.withCredentials,o.setRequestHeader("X-Requested-With","XMLHttpRequest"),""===e.content&&(e.content=void 0),e.content&&(jt(e.content)?o.setRequestHeader("Content-Type","application/octet-stream"):o.setRequestHeader("Content-Type","text/plain;charset=UTF-8"));const r=e.headers;r&&Object.keys(r).forEach((e=>{o.setRequestHeader(e,r[e])})),e.responseType&&(o.responseType=e.responseType),e.abortSignal&&(e.abortSignal.onabort=()=>{o.abort(),n(new tn)}),e.timeout&&(o.timeout=e.timeout),o.onload=()=>{e.abortSignal&&(e.abortSignal.onabort=null),o.status>=200&&o.status<300?t(new vn(o.status,o.statusText,o.response||o.responseText)):n(new Zt(o.response||o.responseText||o.statusText,o.status))},o.onerror=()=>{this._logger.log(Bt.Warning,`Error from HTTP request. ${o.status}: ${o.statusText}.`),n(new Zt(o.statusText,o.status))},o.ontimeout=()=>{this._logger.log(Bt.Warning,"Timeout from HTTP request."),n(new en)},o.send(e.content)})):Promise.reject(new Error("No url defined.")):Promise.reject(new Error("No method defined."))}}class Cn extends yn{constructor(e){if(super(),"undefined"!=typeof fetch)this._httpClient=new bn(e);else{if("undefined"==typeof XMLHttpRequest)throw new Error("No usable HttpClient found.");this._httpClient=new Sn(e)}}send(e){return e.abortSignal&&e.abortSignal.aborted?Promise.reject(new tn):e.method?e.url?this._httpClient.send(e):Promise.reject(new Error("No url defined.")):Promise.reject(new Error("No method defined."))}getCookieString(e){return this._httpClient.getCookieString(e)}}var En,In;!function(e){e[e.None=0]="None",e[e.WebSockets=1]="WebSockets",e[e.ServerSentEvents=2]="ServerSentEvents",e[e.LongPolling=4]="LongPolling"}(En||(En={})),function(e){e[e.Text=1]="Text",e[e.Binary=2]="Binary"}(In||(In={}));class kn{constructor(){this._isAborted=!1,this.onabort=null}abort(){this._isAborted||(this._isAborted=!0,this.onabort&&this.onabort())}get signal(){return this}get aborted(){return this._isAborted}}class Tn{get pollAborted(){return this._pollAbort.aborted}constructor(e,t,n){this._httpClient=e,this._logger=t,this._pollAbort=new kn,this._options=n,this._running=!1,this.onreceive=null,this.onclose=null}async connect(e,t){if($t.isRequired(e,"url"),$t.isRequired(t,"transferFormat"),$t.isIn(t,In,"transferFormat"),this._url=e,this._logger.log(Bt.Trace,"(LongPolling transport) Connecting."),t===In.Binary&&"undefined"!=typeof XMLHttpRequest&&"string"!=typeof(new XMLHttpRequest).responseType)throw new Error("Binary protocols over XmlHttpRequest not implementing advanced features are not supported.");const[n,o]=Kt(),r={[n]:o,...this._options.headers},i={abortSignal:this._pollAbort.signal,headers:r,timeout:1e5,withCredentials:this._options.withCredentials};t===In.Binary&&(i.responseType="arraybuffer");const s=`${e}&_=${Date.now()}`;this._logger.log(Bt.Trace,`(LongPolling transport) polling: ${s}.`);const a=await this._httpClient.get(s,i);200!==a.statusCode?(this._logger.log(Bt.Error,`(LongPolling transport) Unexpected response code: ${a.statusCode}.`),this._closeError=new Zt(a.statusText||"",a.statusCode),this._running=!1):this._running=!0,this._receiving=this._poll(this._url,i)}async _poll(e,t){try{for(;this._running;)try{const n=`${e}&_=${Date.now()}`;this._logger.log(Bt.Trace,`(LongPolling transport) polling: ${n}.`);const o=await this._httpClient.get(n,t);204===o.statusCode?(this._logger.log(Bt.Information,"(LongPolling transport) Poll terminated by server."),this._running=!1):200!==o.statusCode?(this._logger.log(Bt.Error,`(LongPolling transport) Unexpected response code: ${o.statusCode}.`),this._closeError=new Zt(o.statusText||"",o.statusCode),this._running=!1):o.content?(this._logger.log(Bt.Trace,`(LongPolling transport) data received. ${Wt(o.content,this._options.logMessageContent)}.`),this.onreceive&&this.onreceive(o.content)):this._logger.log(Bt.Trace,"(LongPolling transport) Poll timed out, reissuing.")}catch(e){this._running?e instanceof en?this._logger.log(Bt.Trace,"(LongPolling transport) Poll timed out, reissuing."):(this._closeError=e,this._running=!1):this._logger.log(Bt.Trace,`(LongPolling transport) Poll errored after shutdown: ${e.message}`)}}finally{this._logger.log(Bt.Trace,"(LongPolling transport) Polling complete."),this.pollAborted||this._raiseOnClose()}}async send(e){return this._running?zt(this._logger,"LongPolling",this._httpClient,this._url,e,this._options):Promise.reject(new Error("Cannot send until the transport is connected"))}async stop(){this._logger.log(Bt.Trace,"(LongPolling transport) Stopping polling."),this._running=!1,this._pollAbort.abort();try{await this._receiving,this._logger.log(Bt.Trace,`(LongPolling transport) sending DELETE request to ${this._url}.`);const e={},[t,n]=Kt();e[t]=n;const o={headers:{...e,...this._options.headers},timeout:this._options.timeout,withCredentials:this._options.withCredentials};let r;try{await this._httpClient.delete(this._url,o)}catch(e){r=e}r?r instanceof Zt&&(404===r.statusCode?this._logger.log(Bt.Trace,"(LongPolling transport) A 404 response was returned from sending a DELETE request."):this._logger.log(Bt.Trace,`(LongPolling transport) Error sending a DELETE request: ${r}`)):this._logger.log(Bt.Trace,"(LongPolling transport) DELETE request accepted.")}finally{this._logger.log(Bt.Trace,"(LongPolling transport) Stop finished."),this._raiseOnClose()}}_raiseOnClose(){if(this.onclose){let e="(LongPolling transport) Firing onclose event.";this._closeError&&(e+=" Error: "+this._closeError),this._logger.log(Bt.Trace,e),this.onclose(this._closeError)}}}class Rn{constructor(e,t,n,o){this._httpClient=e,this._accessToken=t,this._logger=n,this._options=o,this.onreceive=null,this.onclose=null}async connect(e,t){return $t.isRequired(e,"url"),$t.isRequired(t,"transferFormat"),$t.isIn(t,In,"transferFormat"),this._logger.log(Bt.Trace,"(SSE transport) Connecting."),this._url=e,this._accessToken&&(e+=(e.indexOf("?")<0?"?":"&")+`access_token=${encodeURIComponent(this._accessToken)}`),new Promise(((n,o)=>{let r,i=!1;if(t===In.Text){if(Ht.isBrowser||Ht.isWebWorker)r=new this._options.EventSource(e,{withCredentials:this._options.withCredentials});else{const t=this._httpClient.getCookieString(e),n={};n.Cookie=t;const[o,i]=Kt();n[o]=i,r=new this._options.EventSource(e,{withCredentials:this._options.withCredentials,headers:{...n,...this._options.headers}})}try{r.onmessage=e=>{if(this.onreceive)try{this._logger.log(Bt.Trace,`(SSE transport) data received. ${Wt(e.data,this._options.logMessageContent)}.`),this.onreceive(e.data)}catch(e){return void this._close(e)}},r.onerror=e=>{i?this._close():o(new Error("EventSource failed to connect. The connection could not be found on the server, either the connection ID is not present on the server, or a proxy is refusing/buffering the connection. If you have multiple servers check that sticky sessions are enabled."))},r.onopen=()=>{this._logger.log(Bt.Information,`SSE connected to ${this._url}`),this._eventSource=r,i=!0,n()}}catch(e){return void o(e)}}else o(new Error("The Server-Sent Events transport only supports the 'Text' transfer format"))}))}async send(e){return this._eventSource?zt(this._logger,"SSE",this._httpClient,this._url,e,this._options):Promise.reject(new Error("Cannot send until the transport is connected"))}stop(){return this._close(),Promise.resolve()}_close(e){this._eventSource&&(this._eventSource.close(),this._eventSource=void 0,this.onclose&&this.onclose(e))}}class An{constructor(e,t,n,o,r,i){this._logger=n,this._accessTokenFactory=t,this._logMessageContent=o,this._webSocketConstructor=r,this._httpClient=e,this.onreceive=null,this.onclose=null,this._headers=i}async connect(e,t){let n;return $t.isRequired(e,"url"),$t.isRequired(t,"transferFormat"),$t.isIn(t,In,"transferFormat"),this._logger.log(Bt.Trace,"(WebSockets transport) Connecting."),this._accessTokenFactory&&(n=await this._accessTokenFactory()),new Promise(((o,r)=>{let i;e=e.replace(/^http/,"ws");const s=this._httpClient.getCookieString(e);let a=!1;if(Ht.isReactNative){const t={},[o,r]=Kt();t[o]=r,n&&(t[mn.Authorization]=`Bearer ${n}`),s&&(t[mn.Cookie]=s),i=new this._webSocketConstructor(e,void 0,{headers:{...t,...this._headers}})}else n&&(e+=(e.indexOf("?")<0?"?":"&")+`access_token=${encodeURIComponent(n)}`);i||(i=new this._webSocketConstructor(e)),t===In.Binary&&(i.binaryType="arraybuffer"),i.onopen=t=>{this._logger.log(Bt.Information,`WebSocket connected to ${e}.`),this._webSocket=i,a=!0,o()},i.onerror=e=>{let t=null;t="undefined"!=typeof ErrorEvent&&e instanceof ErrorEvent?e.error:"There was an error with the transport",this._logger.log(Bt.Information,`(WebSockets transport) ${t}.`)},i.onmessage=e=>{if(this._logger.log(Bt.Trace,`(WebSockets transport) data received. ${Wt(e.data,this._logMessageContent)}.`),this.onreceive)try{this.onreceive(e.data)}catch(e){return void this._close(e)}},i.onclose=e=>{if(a)this._close(e);else{let t=null;t="undefined"!=typeof ErrorEvent&&e instanceof ErrorEvent?e.error:"WebSocket failed to connect. The connection could not be found on the server, either the endpoint may not be a SignalR endpoint, the connection ID is not present on the server, or there is a proxy blocking WebSockets. If you have multiple servers check that sticky sessions are enabled.",r(new Error(t))}}}))}send(e){return this._webSocket&&this._webSocket.readyState===this._webSocketConstructor.OPEN?(this._logger.log(Bt.Trace,`(WebSockets transport) sending data. ${Wt(e,this._logMessageContent)}.`),this._webSocket.send(e),Promise.resolve()):Promise.reject("WebSocket is not in the OPEN state")}stop(){return this._webSocket&&this._close(void 0),Promise.resolve()}_close(e){this._webSocket&&(this._webSocket.onclose=()=>{},this._webSocket.onmessage=()=>{},this._webSocket.onerror=()=>{},this._webSocket.close(),this._webSocket=void 0),this._logger.log(Bt.Trace,"(WebSockets transport) socket closed."),this.onclose&&(!this._isCloseEvent(e)||!1!==e.wasClean&&1e3===e.code?e instanceof Error?this.onclose(e):this.onclose():this.onclose(new Error(`WebSocket closed with status code: ${e.code} (${e.reason||"no reason given"}).`)))}_isCloseEvent(e){return e&&"boolean"==typeof e.wasClean&&"number"==typeof e.code}}class Dn{constructor(e,t={}){if(this._stopPromiseResolver=()=>{},this.features={},this._negotiateVersion=1,$t.isRequired(e,"url"),this._logger=function(e){return void 0===e?new Jt(Bt.Information):null===e?Ot.instance:void 0!==e.log?e:new Jt(e)}(t.logger),this.baseUrl=this._resolveUrl(e),(t=t||{}).logMessageContent=void 0!==t.logMessageContent&&t.logMessageContent,"boolean"!=typeof t.withCredentials&&void 0!==t.withCredentials)throw new Error("withCredentials option was not a 'boolean' or 'undefined' value");t.withCredentials=void 0===t.withCredentials||t.withCredentials,t.timeout=void 0===t.timeout?1e5:t.timeout,"undefined"==typeof WebSocket||t.WebSocket||(t.WebSocket=WebSocket),"undefined"==typeof EventSource||t.EventSource||(t.EventSource=EventSource),this._httpClient=new wn(t.httpClient||new Cn(this._logger),t.accessTokenFactory),this._connectionState="Disconnected",this._connectionStarted=!1,this._options=t,this.onreceive=null,this.onclose=null}async start(e){if(e=e||In.Binary,$t.isIn(e,In,"transferFormat"),this._logger.log(Bt.Debug,`Starting connection with transfer format '${In[e]}'.`),"Disconnected"!==this._connectionState)return Promise.reject(new Error("Cannot start an HttpConnection that is not in the 'Disconnected' state."));if(this._connectionState="Connecting",this._startInternalPromise=this._startInternal(e),await this._startInternalPromise,"Disconnecting"===this._connectionState){const e="Failed to start the HttpConnection before stop() was called.";return this._logger.log(Bt.Error,e),await this._stopPromise,Promise.reject(new tn(e))}if("Connected"!==this._connectionState){const e="HttpConnection.startInternal completed gracefully but didn't enter the connection into the connected state!";return this._logger.log(Bt.Error,e),Promise.reject(new tn(e))}this._connectionStarted=!0}send(e){return"Connected"!==this._connectionState?Promise.reject(new Error("Cannot send data if the connection is not in the 'Connected' State.")):(this._sendQueue||(this._sendQueue=new xn(this.transport)),this._sendQueue.send(e))}async stop(e){return"Disconnected"===this._connectionState?(this._logger.log(Bt.Debug,`Call to HttpConnection.stop(${e}) ignored because the connection is already in the disconnected state.`),Promise.resolve()):"Disconnecting"===this._connectionState?(this._logger.log(Bt.Debug,`Call to HttpConnection.stop(${e}) ignored because the connection is already in the disconnecting state.`),this._stopPromise):(this._connectionState="Disconnecting",this._stopPromise=new Promise((e=>{this._stopPromiseResolver=e})),await this._stopInternal(e),void await this._stopPromise)}async _stopInternal(e){this._stopError=e;try{await this._startInternalPromise}catch(e){}if(this.transport){try{await this.transport.stop()}catch(e){this._logger.log(Bt.Error,`HttpConnection.transport.stop() threw error '${e}'.`),this._stopConnection()}this.transport=void 0}else this._logger.log(Bt.Debug,"HttpConnection.transport is undefined in HttpConnection.stop() because start() failed.")}async _startInternal(e){let t=this.baseUrl;this._accessTokenFactory=this._options.accessTokenFactory,this._httpClient._accessTokenFactory=this._accessTokenFactory;try{if(this._options.skipNegotiation){if(this._options.transport!==En.WebSockets)throw new Error("Negotiation can only be skipped when using the WebSocket transport directly.");this.transport=this._constructTransport(En.WebSockets),await this._startTransport(t,e)}else{let n=null,o=0;do{if(n=await this._getNegotiationResponse(t),"Disconnecting"===this._connectionState||"Disconnected"===this._connectionState)throw new tn("The connection was stopped during negotiation.");if(n.error)throw new Error(n.error);if(n.ProtocolVersion)throw new Error("Detected a connection attempt to an ASP.NET SignalR Server. This client only supports connecting to an ASP.NET Core SignalR Server. See https://aka.ms/signalr-core-differences for details.");if(n.url&&(t=n.url),n.accessToken){const e=n.accessToken;this._accessTokenFactory=()=>e,this._httpClient._accessToken=e,this._httpClient._accessTokenFactory=void 0}o++}while(n.url&&o<100);if(100===o&&n.url)throw new Error("Negotiate redirection limit exceeded.");await this._createTransport(t,this._options.transport,n,e)}this.transport instanceof Tn&&(this.features.inherentKeepAlive=!0),"Connecting"===this._connectionState&&(this._logger.log(Bt.Debug,"The HttpConnection connected successfully."),this._connectionState="Connected")}catch(e){return this._logger.log(Bt.Error,"Failed to start the connection: "+e),this._connectionState="Disconnected",this.transport=void 0,this._stopPromiseResolver(),Promise.reject(e)}}async _getNegotiationResponse(e){const t={},[n,o]=Kt();t[n]=o;const r=this._resolveNegotiateUrl(e);this._logger.log(Bt.Debug,`Sending negotiation request: ${r}.`);try{const e=await this._httpClient.post(r,{content:"",headers:{...t,...this._options.headers},timeout:this._options.timeout,withCredentials:this._options.withCredentials});if(200!==e.statusCode)return Promise.reject(new Error(`Unexpected status code returned from negotiate '${e.statusCode}'`));const n=JSON.parse(e.content);return(!n.negotiateVersion||n.negotiateVersion<1)&&(n.connectionToken=n.connectionId),n.useStatefulReconnect&&!0!==this._options._useStatefulReconnect?Promise.reject(new sn("Client didn't negotiate Stateful Reconnect but the server did.")):n}catch(e){let t="Failed to complete negotiation with the server: "+e;return e instanceof Zt&&404===e.statusCode&&(t+=" Either this is not a SignalR endpoint or there is a proxy blocking the connection."),this._logger.log(Bt.Error,t),Promise.reject(new sn(t))}}_createConnectUrl(e,t){return t?e+(-1===e.indexOf("?")?"?":"&")+`id=${t}`:e}async _createTransport(e,t,n,o){let r=this._createConnectUrl(e,n.connectionToken);if(this._isITransport(t))return this._logger.log(Bt.Debug,"Connection was provided an instance of ITransport, using that directly."),this.transport=t,await this._startTransport(r,o),void(this.connectionId=n.connectionId);const i=[],s=n.availableTransports||[];let a=n;for(const n of s){const s=this._resolveTransportOrError(n,t,o,!0===(null==a?void 0:a.useStatefulReconnect));if(s instanceof Error)i.push(`${n.transport} failed:`),i.push(s);else if(this._isITransport(s)){if(this.transport=s,!a){try{a=await this._getNegotiationResponse(e)}catch(e){return Promise.reject(e)}r=this._createConnectUrl(e,a.connectionToken)}try{return await this._startTransport(r,o),void(this.connectionId=a.connectionId)}catch(e){if(this._logger.log(Bt.Error,`Failed to start the transport '${n.transport}': ${e}`),a=void 0,i.push(new rn(`${n.transport} failed: ${e}`,En[n.transport])),"Connecting"!==this._connectionState){const e="Failed to select transport before stop() was called.";return this._logger.log(Bt.Debug,e),Promise.reject(new tn(e))}}}}return i.length>0?Promise.reject(new an(`Unable to connect to the server with any of the available transports. ${i.join(" ")}`,i)):Promise.reject(new Error("None of the transports supported by the client are supported by the server."))}_constructTransport(e){switch(e){case En.WebSockets:if(!this._options.WebSocket)throw new Error("'WebSocket' is not supported in your environment.");return new An(this._httpClient,this._accessTokenFactory,this._logger,this._options.logMessageContent,this._options.WebSocket,this._options.headers||{});case En.ServerSentEvents:if(!this._options.EventSource)throw new Error("'EventSource' is not supported in your environment.");return new Rn(this._httpClient,this._httpClient._accessToken,this._logger,this._options);case En.LongPolling:return new Tn(this._httpClient,this._logger,this._options);default:throw new Error(`Unknown transport: ${e}.`)}}_startTransport(e,t){return this.transport.onreceive=this.onreceive,this.features.reconnect?this.transport.onclose=async n=>{let o=!1;if(this.features.reconnect){try{this.features.disconnected(),await this.transport.connect(e,t),await this.features.resend()}catch{o=!0}o&&this._stopConnection(n)}else this._stopConnection(n)}:this.transport.onclose=e=>this._stopConnection(e),this.transport.connect(e,t)}_resolveTransportOrError(e,t,n,o){const r=En[e.transport];if(null==r)return this._logger.log(Bt.Debug,`Skipping transport '${e.transport}' because it is not supported by this client.`),new Error(`Skipping transport '${e.transport}' because it is not supported by this client.`);if(!function(e,t){return!e||0!=(t&e)}(t,r))return this._logger.log(Bt.Debug,`Skipping transport '${En[r]}' because it was disabled by the client.`),new on(`'${En[r]}' is disabled by the client.`,r);if(!(e.transferFormats.map((e=>In[e])).indexOf(n)>=0))return this._logger.log(Bt.Debug,`Skipping transport '${En[r]}' because it does not support the requested transfer format '${In[n]}'.`),new Error(`'${En[r]}' does not support ${In[n]}.`);if(r===En.WebSockets&&!this._options.WebSocket||r===En.ServerSentEvents&&!this._options.EventSource)return this._logger.log(Bt.Debug,`Skipping transport '${En[r]}' because it is not supported in your environment.'`),new nn(`'${En[r]}' is not supported in your environment.`,r);this._logger.log(Bt.Debug,`Selecting transport '${En[r]}'.`);try{return this.features.reconnect=r===En.WebSockets?o:void 0,this._constructTransport(r)}catch(e){return e}}_isITransport(e){return e&&"object"==typeof e&&"connect"in e}_stopConnection(e){if(this._logger.log(Bt.Debug,`HttpConnection.stopConnection(${e}) called while in state ${this._connectionState}.`),this.transport=void 0,e=this._stopError||e,this._stopError=void 0,"Disconnected"!==this._connectionState){if("Connecting"===this._connectionState)throw this._logger.log(Bt.Warning,`Call to HttpConnection.stopConnection(${e}) was ignored because the connection is still in the connecting state.`),new Error(`HttpConnection.stopConnection(${e}) was called while the connection is still in the connecting state.`);if("Disconnecting"===this._connectionState&&this._stopPromiseResolver(),e?this._logger.log(Bt.Error,`Connection disconnected with error '${e}'.`):this._logger.log(Bt.Information,"Connection disconnected."),this._sendQueue&&(this._sendQueue.stop().catch((e=>{this._logger.log(Bt.Error,`TransportSendQueue.stop() threw error '${e}'.`)})),this._sendQueue=void 0),this.connectionId=void 0,this._connectionState="Disconnected",this._connectionStarted){this._connectionStarted=!1;try{this.onclose&&this.onclose(e)}catch(t){this._logger.log(Bt.Error,`HttpConnection.onclose(${e}) threw error '${t}'.`)}}}else this._logger.log(Bt.Debug,`Call to HttpConnection.stopConnection(${e}) was ignored because the connection is already in the disconnected state.`)}_resolveUrl(e){if(0===e.lastIndexOf("https://",0)||0===e.lastIndexOf("http://",0))return e;if(!Ht.isBrowser)throw new Error(`Cannot resolve '${e}'.`);const t=window.document.createElement("a");return t.href=e,this._logger.log(Bt.Information,`Normalizing '${e}' to '${t.href}'.`),t.href}_resolveNegotiateUrl(e){const t=new URL(e);t.pathname.endsWith("/")?t.pathname+="negotiate":t.pathname+="/negotiate";const n=new URLSearchParams(t.searchParams);return n.has("negotiateVersion")||n.append("negotiateVersion",this._negotiateVersion.toString()),n.has("useStatefulReconnect")?"true"===n.get("useStatefulReconnect")&&(this._options._useStatefulReconnect=!0):!0===this._options._useStatefulReconnect&&n.append("useStatefulReconnect","true"),t.search=n.toString(),t.toString()}}class xn{constructor(e){this._transport=e,this._buffer=[],this._executing=!0,this._sendBufferedData=new Nn,this._transportResult=new Nn,this._sendLoopPromise=this._sendLoop()}send(e){return this._bufferData(e),this._transportResult||(this._transportResult=new Nn),this._transportResult.promise}stop(){return this._executing=!1,this._sendBufferedData.resolve(),this._sendLoopPromise}_bufferData(e){if(this._buffer.length&&typeof this._buffer[0]!=typeof e)throw new Error(`Expected data to be of type ${typeof this._buffer} but was of type ${typeof e}`);this._buffer.push(e),this._sendBufferedData.resolve()}async _sendLoop(){for(;;){if(await this._sendBufferedData.promise,!this._executing){this._transportResult&&this._transportResult.reject("Connection stopped.");break}this._sendBufferedData=new Nn;const e=this._transportResult;this._transportResult=void 0;const t="string"==typeof this._buffer[0]?this._buffer.join(""):xn._concatBuffers(this._buffer);this._buffer.length=0;try{await this._transport.send(t),e.resolve()}catch(t){e.reject(t)}}}static _concatBuffers(e){const t=e.map((e=>e.byteLength)).reduce(((e,t)=>e+t)),n=new Uint8Array(t);let o=0;for(const t of e)n.set(new Uint8Array(t),o),o+=t.byteLength;return n.buffer}}class Nn{constructor(){this.promise=new Promise(((e,t)=>[this._resolver,this._rejecter]=[e,t]))}resolve(){this._resolver()}reject(e){this._rejecter(e)}}class Mn{constructor(){this.name="json",this.version=2,this.transferFormat=In.Text}parseMessages(e,t){if("string"!=typeof e)throw new Error("Invalid input for JSON hub protocol. Expected a string.");if(!e)return[];null===t&&(t=Ot.instance);const n=Lt.parse(e),o=[];for(const e of n){const n=JSON.parse(e);if("number"!=typeof n.type)throw new Error("Invalid payload.");switch(n.type){case cn.Invocation:this._isInvocationMessage(n);break;case cn.StreamItem:this._isStreamItemMessage(n);break;case cn.Completion:this._isCompletionMessage(n);break;case cn.Ping:case cn.Close:break;case cn.Ack:this._isAckMessage(n);break;case cn.Sequence:this._isSequenceMessage(n);break;default:t.log(Bt.Information,"Unknown message type '"+n.type+"' ignored.");continue}o.push(n)}return o}writeMessage(e){return Lt.write(JSON.stringify(e))}_isInvocationMessage(e){this._assertNotEmptyString(e.target,"Invalid payload for Invocation message."),void 0!==e.invocationId&&this._assertNotEmptyString(e.invocationId,"Invalid payload for Invocation message.")}_isStreamItemMessage(e){if(this._assertNotEmptyString(e.invocationId,"Invalid payload for StreamItem message."),void 0===e.item)throw new Error("Invalid payload for StreamItem message.")}_isCompletionMessage(e){if(e.result&&e.error)throw new Error("Invalid payload for Completion message.");!e.result&&e.error&&this._assertNotEmptyString(e.error,"Invalid payload for Completion message."),this._assertNotEmptyString(e.invocationId,"Invalid payload for Completion message.")}_isAckMessage(e){if("number"!=typeof e.sequenceId)throw new Error("Invalid SequenceId for Ack message.")}_isSequenceMessage(e){if("number"!=typeof e.sequenceId)throw new Error("Invalid SequenceId for Sequence message.")}_assertNotEmptyString(e,t){if("string"!=typeof e||""===e)throw new Error(t)}}const Pn={trace:Bt.Trace,debug:Bt.Debug,info:Bt.Information,information:Bt.Information,warn:Bt.Warning,warning:Bt.Warning,error:Bt.Error,critical:Bt.Critical,none:Bt.None};class Un{configureLogging(e){if($t.isRequired(e,"logging"),function(e){return void 0!==e.log}(e))this.logger=e;else if("string"==typeof e){const t=function(e){const t=Pn[e.toLowerCase()];if(void 0!==t)return t;throw new Error(`Unknown log level: ${e}`)}(e);this.logger=new Jt(t)}else this.logger=new Jt(e);return this}withUrl(e,t){return $t.isRequired(e,"url"),$t.isNotEmpty(e,"url"),this.url=e,this.httpConnectionOptions="object"==typeof t?{...this.httpConnectionOptions,...t}:{...this.httpConnectionOptions,transport:t},this}withHubProtocol(e){return $t.isRequired(e,"protocol"),this.protocol=e,this}withAutomaticReconnect(e){if(this.reconnectPolicy)throw new Error("A reconnectPolicy has already been set.");return e?Array.isArray(e)?this.reconnectPolicy=new gn(e):this.reconnectPolicy=e:this.reconnectPolicy=new gn,this}withServerTimeout(e){return $t.isRequired(e,"milliseconds"),this._serverTimeoutInMilliseconds=e,this}withKeepAliveInterval(e){return $t.isRequired(e,"milliseconds"),this._keepAliveIntervalInMilliseconds=e,this}withStatefulReconnect(e){return void 0===this.httpConnectionOptions&&(this.httpConnectionOptions={}),this.httpConnectionOptions._useStatefulReconnect=!0,this._statefulReconnectBufferSize=null==e?void 0:e.bufferSize,this}build(){const e=this.httpConnectionOptions||{};if(void 0===e.logger&&(e.logger=this.logger),!this.url)throw new Error("The 'HubConnectionBuilder.withUrl' method must be called before building the connection.");const t=new Dn(this.url,e);return pn.create(t,this.logger||Ot.instance,this.protocol||new Mn,this.reconnectPolicy,this._serverTimeoutInMilliseconds,this._keepAliveIntervalInMilliseconds,this._statefulReconnectBufferSize)}}var Ln;!function(e){e[e.Default=0]="Default",e[e.Server=1]="Server",e[e.WebAssembly=2]="WebAssembly",e[e.WebView=3]="WebView"}(Ln||(Ln={}));var Bn,On,Fn,$n=4294967295;function Hn(e,t,n){var o=Math.floor(n/4294967296),r=n;e.setUint32(t,o),e.setUint32(t+4,r)}function Wn(e,t){return 4294967296*e.getInt32(t)+e.getUint32(t+4)}var jn=("undefined"==typeof process||"never"!==(null===(Bn=null===process||void 0===process?void 0:process.env)||void 0===Bn?void 0:Bn.TEXT_ENCODING))&&"undefined"!=typeof TextEncoder&&"undefined"!=typeof TextDecoder;function zn(e){for(var t=e.length,n=0,o=0;o=55296&&r<=56319&&o65535&&(h-=65536,i.push(h>>>10&1023|55296),h=56320|1023&h),i.push(h)}else i.push(a);i.length>=4096&&(s+=String.fromCharCode.apply(String,i),i.length=0)}return i.length>0&&(s+=String.fromCharCode.apply(String,i)),s}var Xn,Gn=jn?new TextDecoder:null,Yn=jn?"undefined"!=typeof process&&"force"!==(null===(Fn=null===process||void 0===process?void 0:process.env)||void 0===Fn?void 0:Fn.TEXT_DECODER)?200:0:$n,Qn=function(e,t){this.type=e,this.data=t},Zn=(Xn=function(e,t){return Xn=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},Xn(e,t)},function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function n(){this.constructor=e}Xn(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}),eo=function(e){function t(n){var o=e.call(this,n)||this,r=Object.create(t.prototype);return Object.setPrototypeOf(o,r),Object.defineProperty(o,"name",{configurable:!0,enumerable:!1,value:t.name}),o}return Zn(t,e),t}(Error),to={type:-1,encode:function(e){var t,n,o,r;return e instanceof Date?function(e){var t,n=e.sec,o=e.nsec;if(n>=0&&o>=0&&n<=17179869183){if(0===o&&n<=4294967295){var r=new Uint8Array(4);return(t=new DataView(r.buffer)).setUint32(0,n),r}var i=n/4294967296,s=4294967295&n;return r=new Uint8Array(8),(t=new DataView(r.buffer)).setUint32(0,o<<2|3&i),t.setUint32(4,s),r}return r=new Uint8Array(12),(t=new DataView(r.buffer)).setUint32(0,o),Hn(t,4,n),r}((o=1e6*((t=e.getTime())-1e3*(n=Math.floor(t/1e3))),{sec:n+(r=Math.floor(o/1e9)),nsec:o-1e9*r})):null},decode:function(e){var t=function(e){var t=new DataView(e.buffer,e.byteOffset,e.byteLength);switch(e.byteLength){case 4:return{sec:t.getUint32(0),nsec:0};case 8:var n=t.getUint32(0);return{sec:4294967296*(3&n)+t.getUint32(4),nsec:n>>>2};case 12:return{sec:Wn(t,4),nsec:t.getUint32(0)};default:throw new eo("Unrecognized data size for timestamp (expected 4, 8, or 12): ".concat(e.length))}}(e);return new Date(1e3*t.sec+t.nsec/1e6)}},no=function(){function e(){this.builtInEncoders=[],this.builtInDecoders=[],this.encoders=[],this.decoders=[],this.register(to)}return e.prototype.register=function(e){var t=e.type,n=e.encode,o=e.decode;if(t>=0)this.encoders[t]=n,this.decoders[t]=o;else{var r=1+t;this.builtInEncoders[r]=n,this.builtInDecoders[r]=o}},e.prototype.tryToEncode=function(e,t){for(var n=0;nthis.maxDepth)throw new Error("Too deep objects in depth ".concat(t));null==e?this.encodeNil():"boolean"==typeof e?this.encodeBoolean(e):"number"==typeof e?this.encodeNumber(e):"string"==typeof e?this.encodeString(e):this.encodeObject(e,t)},e.prototype.ensureBufferSizeToWrite=function(e){var t=this.pos+e;this.view.byteLength=0?e<128?this.writeU8(e):e<256?(this.writeU8(204),this.writeU8(e)):e<65536?(this.writeU8(205),this.writeU16(e)):e<4294967296?(this.writeU8(206),this.writeU32(e)):(this.writeU8(207),this.writeU64(e)):e>=-32?this.writeU8(224|e+32):e>=-128?(this.writeU8(208),this.writeI8(e)):e>=-32768?(this.writeU8(209),this.writeI16(e)):e>=-2147483648?(this.writeU8(210),this.writeI32(e)):(this.writeU8(211),this.writeI64(e)):this.forceFloat32?(this.writeU8(202),this.writeF32(e)):(this.writeU8(203),this.writeF64(e))},e.prototype.writeStringHeader=function(e){if(e<32)this.writeU8(160+e);else if(e<256)this.writeU8(217),this.writeU8(e);else if(e<65536)this.writeU8(218),this.writeU16(e);else{if(!(e<4294967296))throw new Error("Too long string: ".concat(e," bytes in UTF-8"));this.writeU8(219),this.writeU32(e)}},e.prototype.encodeString=function(e){if(e.length>Jn){var t=zn(e);this.ensureBufferSizeToWrite(5+t),this.writeStringHeader(t),Kn(e,this.bytes,this.pos),this.pos+=t}else t=zn(e),this.ensureBufferSizeToWrite(5+t),this.writeStringHeader(t),function(e,t,n){for(var o=e.length,r=n,i=0;i>6&31|192;else{if(s>=55296&&s<=56319&&i>12&15|224,t[r++]=s>>6&63|128):(t[r++]=s>>18&7|240,t[r++]=s>>12&63|128,t[r++]=s>>6&63|128)}t[r++]=63&s|128}else t[r++]=s}}(e,this.bytes,this.pos),this.pos+=t},e.prototype.encodeObject=function(e,t){var n=this.extensionCodec.tryToEncode(e,this.context);if(null!=n)this.encodeExtension(n);else if(Array.isArray(e))this.encodeArray(e,t);else if(ArrayBuffer.isView(e))this.encodeBinary(e);else{if("object"!=typeof e)throw new Error("Unrecognized object: ".concat(Object.prototype.toString.apply(e)));this.encodeMap(e,t)}},e.prototype.encodeBinary=function(e){var t=e.byteLength;if(t<256)this.writeU8(196),this.writeU8(t);else if(t<65536)this.writeU8(197),this.writeU16(t);else{if(!(t<4294967296))throw new Error("Too large binary: ".concat(t));this.writeU8(198),this.writeU32(t)}var n=oo(e);this.writeU8a(n)},e.prototype.encodeArray=function(e,t){var n=e.length;if(n<16)this.writeU8(144+n);else if(n<65536)this.writeU8(220),this.writeU16(n);else{if(!(n<4294967296))throw new Error("Too large array: ".concat(n));this.writeU8(221),this.writeU32(n)}for(var o=0,r=e;o0&&e<=this.maxKeyLength},e.prototype.find=function(e,t,n){e:for(var o=0,r=this.caches[n-1];o=this.maxLengthPerKey?n[Math.random()*n.length|0]=o:n.push(o)},e.prototype.decode=function(e,t,n){var o=this.find(e,t,n);if(null!=o)return this.hit++,o;this.miss++;var r=Vn(e,t,n),i=Uint8Array.prototype.slice.call(e,t,t+n);return this.store(i,r),r},e}(),ao=function(e,t){var n,o,r,i,s={label:0,sent:function(){if(1&r[0])throw r[1];return r[1]},trys:[],ops:[]};return i={next:a(0),throw:a(1),return:a(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function a(i){return function(a){return function(i){if(n)throw new TypeError("Generator is already executing.");for(;s;)try{if(n=1,o&&(r=2&i[0]?o.return:i[0]?o.throw||((r=o.return)&&r.call(o),0):o.next)&&!(r=r.call(o,i[1])).done)return r;switch(o=0,r&&(i=[2&i[0],r.value]),i[0]){case 0:case 1:r=i;break;case 4:return s.label++,{value:i[1],done:!1};case 5:s.label++,o=i[1],i=[0];continue;case 7:i=s.ops.pop(),s.trys.pop();continue;default:if(!((r=(r=s.trys).length>0&&r[r.length-1])||6!==i[0]&&2!==i[0])){s=0;continue}if(3===i[0]&&(!r||i[1]>r[0]&&i[1]=e},e.prototype.createExtraByteError=function(e){var t=this.view,n=this.pos;return new RangeError("Extra ".concat(t.byteLength-n," of ").concat(t.byteLength," byte(s) found at buffer[").concat(e,"]"))},e.prototype.decode=function(e){this.reinitializeState(),this.setBuffer(e);var t=this.doDecodeSync();if(this.hasRemaining(1))throw this.createExtraByteError(this.pos);return t},e.prototype.decodeMulti=function(e){return ao(this,(function(t){switch(t.label){case 0:this.reinitializeState(),this.setBuffer(e),t.label=1;case 1:return this.hasRemaining(1)?[4,this.doDecodeSync()]:[3,3];case 2:return t.sent(),[3,1];case 3:return[2]}}))},e.prototype.decodeAsync=function(e){var t,n,o,r,i,s,a;return i=this,void 0,a=function(){var i,s,a,c,l,h,d,u;return ao(this,(function(p){switch(p.label){case 0:i=!1,p.label=1;case 1:p.trys.push([1,6,7,12]),t=co(e),p.label=2;case 2:return[4,t.next()];case 3:if((n=p.sent()).done)return[3,5];if(a=n.value,i)throw this.createExtraByteError(this.totalPos);this.appendBuffer(a);try{s=this.doDecodeSync(),i=!0}catch(e){if(!(e instanceof po))throw e}this.totalPos+=this.pos,p.label=4;case 4:return[3,2];case 5:return[3,12];case 6:return c=p.sent(),o={error:c},[3,12];case 7:return p.trys.push([7,,10,11]),n&&!n.done&&(r=t.return)?[4,r.call(t)]:[3,9];case 8:p.sent(),p.label=9;case 9:return[3,11];case 10:if(o)throw o.error;return[7];case 11:return[7];case 12:if(i){if(this.hasRemaining(1))throw this.createExtraByteError(this.totalPos);return[2,s]}throw h=(l=this).headByte,d=l.pos,u=l.totalPos,new RangeError("Insufficient data in parsing ".concat(io(h)," at ").concat(u," (").concat(d," in the current buffer)"))}}))},new((s=void 0)||(s=Promise))((function(e,t){function n(e){try{r(a.next(e))}catch(e){t(e)}}function o(e){try{r(a.throw(e))}catch(e){t(e)}}function r(t){var r;t.done?e(t.value):(r=t.value,r instanceof s?r:new s((function(e){e(r)}))).then(n,o)}r((a=a.apply(i,[])).next())}))},e.prototype.decodeArrayStream=function(e){return this.decodeMultiAsync(e,!0)},e.prototype.decodeStream=function(e){return this.decodeMultiAsync(e,!1)},e.prototype.decodeMultiAsync=function(e,t){return function(n,o,r){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var i,s=function(){var n,o,r,i,s,a,c,l,h;return ao(this,(function(d){switch(d.label){case 0:n=t,o=-1,d.label=1;case 1:d.trys.push([1,13,14,19]),r=co(e),d.label=2;case 2:return[4,lo(r.next())];case 3:if((i=d.sent()).done)return[3,12];if(s=i.value,t&&0===o)throw this.createExtraByteError(this.totalPos);this.appendBuffer(s),n&&(o=this.readArraySize(),n=!1,this.complete()),d.label=4;case 4:d.trys.push([4,9,,10]),d.label=5;case 5:return[4,lo(this.doDecodeSync())];case 6:return[4,d.sent()];case 7:return d.sent(),0==--o?[3,8]:[3,5];case 8:return[3,10];case 9:if(!((a=d.sent())instanceof po))throw a;return[3,10];case 10:this.totalPos+=this.pos,d.label=11;case 11:return[3,2];case 12:return[3,19];case 13:return c=d.sent(),l={error:c},[3,19];case 14:return d.trys.push([14,,17,18]),i&&!i.done&&(h=r.return)?[4,lo(h.call(r))]:[3,16];case 15:d.sent(),d.label=16;case 16:return[3,18];case 17:if(l)throw l.error;return[7];case 18:return[7];case 19:return[2]}}))}.apply(n,o||[]),a=[];return i={},c("next"),c("throw"),c("return"),i[Symbol.asyncIterator]=function(){return this},i;function c(e){s[e]&&(i[e]=function(t){return new Promise((function(n,o){a.push([e,t,n,o])>1||l(e,t)}))})}function l(e,t){try{(n=s[e](t)).value instanceof lo?Promise.resolve(n.value.v).then(h,d):u(a[0][2],n)}catch(e){u(a[0][3],e)}var n}function h(e){l("next",e)}function d(e){l("throw",e)}function u(e,t){e(t),a.shift(),a.length&&l(a[0][0],a[0][1])}}(this,arguments)},e.prototype.doDecodeSync=function(){e:for(;;){var e=this.readHeadByte(),t=void 0;if(e>=224)t=e-256;else if(e<192)if(e<128)t=e;else if(e<144){if(0!=(o=e-128)){this.pushMapState(o),this.complete();continue e}t={}}else if(e<160){if(0!=(o=e-144)){this.pushArrayState(o),this.complete();continue e}t=[]}else{var n=e-160;t=this.decodeUtf8String(n,0)}else if(192===e)t=null;else if(194===e)t=!1;else if(195===e)t=!0;else if(202===e)t=this.readF32();else if(203===e)t=this.readF64();else if(204===e)t=this.readU8();else if(205===e)t=this.readU16();else if(206===e)t=this.readU32();else if(207===e)t=this.readU64();else if(208===e)t=this.readI8();else if(209===e)t=this.readI16();else if(210===e)t=this.readI32();else if(211===e)t=this.readI64();else if(217===e)n=this.lookU8(),t=this.decodeUtf8String(n,1);else if(218===e)n=this.lookU16(),t=this.decodeUtf8String(n,2);else if(219===e)n=this.lookU32(),t=this.decodeUtf8String(n,4);else if(220===e){if(0!==(o=this.readU16())){this.pushArrayState(o),this.complete();continue e}t=[]}else if(221===e){if(0!==(o=this.readU32())){this.pushArrayState(o),this.complete();continue e}t=[]}else if(222===e){if(0!==(o=this.readU16())){this.pushMapState(o),this.complete();continue e}t={}}else if(223===e){if(0!==(o=this.readU32())){this.pushMapState(o),this.complete();continue e}t={}}else if(196===e){var o=this.lookU8();t=this.decodeBinary(o,1)}else if(197===e)o=this.lookU16(),t=this.decodeBinary(o,2);else if(198===e)o=this.lookU32(),t=this.decodeBinary(o,4);else if(212===e)t=this.decodeExtension(1,0);else if(213===e)t=this.decodeExtension(2,0);else if(214===e)t=this.decodeExtension(4,0);else if(215===e)t=this.decodeExtension(8,0);else if(216===e)t=this.decodeExtension(16,0);else if(199===e)o=this.lookU8(),t=this.decodeExtension(o,1);else if(200===e)o=this.lookU16(),t=this.decodeExtension(o,2);else{if(201!==e)throw new eo("Unrecognized type byte: ".concat(io(e)));o=this.lookU32(),t=this.decodeExtension(o,4)}this.complete();for(var r=this.stack;r.length>0;){var i=r[r.length-1];if(0===i.type){if(i.array[i.position]=t,i.position++,i.position!==i.size)continue e;r.pop(),t=i.array}else{if(1===i.type){if("string"!=(s=typeof t)&&"number"!==s)throw new eo("The type of key must be string or number but "+typeof t);if("__proto__"===t)throw new eo("The key __proto__ is not allowed");i.key=t,i.type=2;continue e}if(i.map[i.key]=t,i.readCount++,i.readCount!==i.size){i.key=null,i.type=1;continue e}r.pop(),t=i.map}}return t}var s},e.prototype.readHeadByte=function(){return-1===this.headByte&&(this.headByte=this.readU8()),this.headByte},e.prototype.complete=function(){this.headByte=-1},e.prototype.readArraySize=function(){var e=this.readHeadByte();switch(e){case 220:return this.readU16();case 221:return this.readU32();default:if(e<160)return e-144;throw new eo("Unrecognized array type byte: ".concat(io(e)))}},e.prototype.pushMapState=function(e){if(e>this.maxMapLength)throw new eo("Max length exceeded: map length (".concat(e,") > maxMapLengthLength (").concat(this.maxMapLength,")"));this.stack.push({type:1,size:e,key:null,readCount:0,map:{}})},e.prototype.pushArrayState=function(e){if(e>this.maxArrayLength)throw new eo("Max length exceeded: array length (".concat(e,") > maxArrayLength (").concat(this.maxArrayLength,")"));this.stack.push({type:0,size:e,array:new Array(e),position:0})},e.prototype.decodeUtf8String=function(e,t){var n;if(e>this.maxStrLength)throw new eo("Max length exceeded: UTF-8 byte length (".concat(e,") > maxStrLength (").concat(this.maxStrLength,")"));if(this.bytes.byteLengthYn?function(e,t,n){var o=e.subarray(t,t+n);return Gn.decode(o)}(this.bytes,r,e):Vn(this.bytes,r,e),this.pos+=t+e,o},e.prototype.stateIsMapKey=function(){return this.stack.length>0&&1===this.stack[this.stack.length-1].type},e.prototype.decodeBinary=function(e,t){if(e>this.maxBinLength)throw new eo("Max length exceeded: bin length (".concat(e,") > maxBinLength (").concat(this.maxBinLength,")"));if(!this.hasRemaining(e+t))throw fo;var n=this.pos+t,o=this.bytes.subarray(n,n+e);return this.pos+=t+e,o},e.prototype.decodeExtension=function(e,t){if(e>this.maxExtLength)throw new eo("Max length exceeded: ext length (".concat(e,") > maxExtLength (").concat(this.maxExtLength,")"));var n=this.view.getInt8(this.pos+t),o=this.decodeBinary(e,t+1);return this.extensionCodec.decode(o,n,this.context)},e.prototype.lookU8=function(){return this.view.getUint8(this.pos)},e.prototype.lookU16=function(){return this.view.getUint16(this.pos)},e.prototype.lookU32=function(){return this.view.getUint32(this.pos)},e.prototype.readU8=function(){var e=this.view.getUint8(this.pos);return this.pos++,e},e.prototype.readI8=function(){var e=this.view.getInt8(this.pos);return this.pos++,e},e.prototype.readU16=function(){var e=this.view.getUint16(this.pos);return this.pos+=2,e},e.prototype.readI16=function(){var e=this.view.getInt16(this.pos);return this.pos+=2,e},e.prototype.readU32=function(){var e=this.view.getUint32(this.pos);return this.pos+=4,e},e.prototype.readI32=function(){var e=this.view.getInt32(this.pos);return this.pos+=4,e},e.prototype.readU64=function(){var e,t,n=(e=this.view,t=this.pos,4294967296*e.getUint32(t)+e.getUint32(t+4));return this.pos+=8,n},e.prototype.readI64=function(){var e=Wn(this.view,this.pos);return this.pos+=8,e},e.prototype.readF32=function(){var e=this.view.getFloat32(this.pos);return this.pos+=4,e},e.prototype.readF64=function(){var e=this.view.getFloat64(this.pos);return this.pos+=8,e},e}();class vo{static write(e){let t=e.byteLength||e.length;const n=[];do{let e=127&t;t>>=7,t>0&&(e|=128),n.push(e)}while(t>0);t=e.byteLength||e.length;const o=new Uint8Array(n.length+t);return o.set(n,0),o.set(e,n.length),o.buffer}static parse(e){const t=[],n=new Uint8Array(e),o=[0,7,14,21,28];for(let r=0;r7)throw new Error("Messages bigger than 2GB are not supported.");if(!(n.byteLength>=r+s+a))throw new Error("Incomplete message.");t.push(n.slice?n.slice(r+s,r+s+a):n.subarray(r+s,r+s+a)),r=r+s+a}return t}}const yo=new Uint8Array([145,cn.Ping]);class wo{constructor(e){this.name="messagepack",this.version=2,this.transferFormat=In.Binary,this._errorResult=1,this._voidResult=2,this._nonVoidResult=3,e=e||{},this._encoder=new ro(e.extensionCodec,e.context,e.maxDepth,e.initialBufferSize,e.sortKeys,e.forceFloat32,e.ignoreUndefined,e.forceIntegerToFloat),this._decoder=new mo(e.extensionCodec,e.context,e.maxStrLength,e.maxBinLength,e.maxArrayLength,e.maxMapLength,e.maxExtLength)}parseMessages(e,t){if(!(n=e)||"undefined"==typeof ArrayBuffer||!(n instanceof ArrayBuffer||n.constructor&&"ArrayBuffer"===n.constructor.name))throw new Error("Invalid input for MessagePack hub protocol. Expected an ArrayBuffer.");var n;null===t&&(t=Ot.instance);const o=vo.parse(e),r=[];for(const e of o){const n=this._parseMessage(e,t);n&&r.push(n)}return r}writeMessage(e){switch(e.type){case cn.Invocation:return this._writeInvocation(e);case cn.StreamInvocation:return this._writeStreamInvocation(e);case cn.StreamItem:return this._writeStreamItem(e);case cn.Completion:return this._writeCompletion(e);case cn.Ping:return vo.write(yo);case cn.CancelInvocation:return this._writeCancelInvocation(e);case cn.Close:return this._writeClose();case cn.Ack:return this._writeAck(e);case cn.Sequence:return this._writeSequence(e);default:throw new Error("Invalid message type.")}}_parseMessage(e,t){if(0===e.length)throw new Error("Invalid payload.");const n=this._decoder.decode(e);if(0===n.length||!(n instanceof Array))throw new Error("Invalid payload.");const o=n[0];switch(o){case cn.Invocation:return this._createInvocationMessage(this._readHeaders(n),n);case cn.StreamItem:return this._createStreamItemMessage(this._readHeaders(n),n);case cn.Completion:return this._createCompletionMessage(this._readHeaders(n),n);case cn.Ping:return this._createPingMessage(n);case cn.Close:return this._createCloseMessage(n);case cn.Ack:return this._createAckMessage(n);case cn.Sequence:return this._createSequenceMessage(n);default:return t.log(Bt.Information,"Unknown message type '"+o+"' ignored."),null}}_createCloseMessage(e){if(e.length<2)throw new Error("Invalid payload for Close message.");return{allowReconnect:e.length>=3?e[2]:void 0,error:e[1],type:cn.Close}}_createPingMessage(e){if(e.length<1)throw new Error("Invalid payload for Ping message.");return{type:cn.Ping}}_createInvocationMessage(e,t){if(t.length<5)throw new Error("Invalid payload for Invocation message.");const n=t[2];return n?{arguments:t[4],headers:e,invocationId:n,streamIds:[],target:t[3],type:cn.Invocation}:{arguments:t[4],headers:e,streamIds:[],target:t[3],type:cn.Invocation}}_createStreamItemMessage(e,t){if(t.length<4)throw new Error("Invalid payload for StreamItem message.");return{headers:e,invocationId:t[2],item:t[3],type:cn.StreamItem}}_createCompletionMessage(e,t){if(t.length<4)throw new Error("Invalid payload for Completion message.");const n=t[3];if(n!==this._voidResult&&t.length<5)throw new Error("Invalid payload for Completion message.");let o,r;switch(n){case this._errorResult:o=t[4];break;case this._nonVoidResult:r=t[4]}return{error:o,headers:e,invocationId:t[2],result:r,type:cn.Completion}}_createAckMessage(e){if(e.length<1)throw new Error("Invalid payload for Ack message.");return{sequenceId:e[1],type:cn.Ack}}_createSequenceMessage(e){if(e.length<1)throw new Error("Invalid payload for Sequence message.");return{sequenceId:e[1],type:cn.Sequence}}_writeInvocation(e){let t;return t=e.streamIds?this._encoder.encode([cn.Invocation,e.headers||{},e.invocationId||null,e.target,e.arguments,e.streamIds]):this._encoder.encode([cn.Invocation,e.headers||{},e.invocationId||null,e.target,e.arguments]),vo.write(t.slice())}_writeStreamInvocation(e){let t;return t=e.streamIds?this._encoder.encode([cn.StreamInvocation,e.headers||{},e.invocationId,e.target,e.arguments,e.streamIds]):this._encoder.encode([cn.StreamInvocation,e.headers||{},e.invocationId,e.target,e.arguments]),vo.write(t.slice())}_writeStreamItem(e){const t=this._encoder.encode([cn.StreamItem,e.headers||{},e.invocationId,e.item]);return vo.write(t.slice())}_writeCompletion(e){const t=e.error?this._errorResult:void 0!==e.result?this._nonVoidResult:this._voidResult;let n;switch(t){case this._errorResult:n=this._encoder.encode([cn.Completion,e.headers||{},e.invocationId,t,e.error]);break;case this._voidResult:n=this._encoder.encode([cn.Completion,e.headers||{},e.invocationId,t]);break;case this._nonVoidResult:n=this._encoder.encode([cn.Completion,e.headers||{},e.invocationId,t,e.result])}return vo.write(n.slice())}_writeCancelInvocation(e){const t=this._encoder.encode([cn.CancelInvocation,e.headers||{},e.invocationId]);return vo.write(t.slice())}_writeClose(){const e=this._encoder.encode([cn.Close,null]);return vo.write(e.slice())}_writeAck(e){const t=this._encoder.encode([cn.Ack,e.sequenceId]);return vo.write(t.slice())}_writeSequence(e){const t=this._encoder.encode([cn.Sequence,e.sequenceId]);return vo.write(t.slice())}_readHeaders(e){const t=e[1];if("object"!=typeof t)throw new Error("Invalid headers.");return t}}const bo="function"==typeof TextDecoder?new TextDecoder("utf-8"):null,_o=bo?bo.decode.bind(bo):function(e){let t=0;const n=e.length,o=[],r=[];for(;t65535&&(r-=65536,o.push(r>>>10&1023|55296),r=56320|1023&r),o.push(r)}o.length>1024&&(r.push(String.fromCharCode.apply(null,o)),o.length=0)}return r.push(String.fromCharCode.apply(null,o)),r.join("")},So=Math.pow(2,32),Co=Math.pow(2,21)-1;function Eo(e,t){return e[t]|e[t+1]<<8|e[t+2]<<16|e[t+3]<<24}function Io(e,t){return e[t]+(e[t+1]<<8)+(e[t+2]<<16)+(e[t+3]<<24>>>0)}function ko(e,t){const n=Io(e,t+4);if(n>Co)throw new Error(`Cannot read uint64 with high order part ${n}, because the result would exceed Number.MAX_SAFE_INTEGER.`);return n*So+Io(e,t)}class To{constructor(e){this.batchData=e;const t=new xo(e);this.arrayRangeReader=new No(e),this.arrayBuilderSegmentReader=new Mo(e),this.diffReader=new Ro(e),this.editReader=new Ao(e,t),this.frameReader=new Do(e,t)}updatedComponents(){return Eo(this.batchData,this.batchData.length-20)}referenceFrames(){return Eo(this.batchData,this.batchData.length-16)}disposedComponentIds(){return Eo(this.batchData,this.batchData.length-12)}disposedEventHandlerIds(){return Eo(this.batchData,this.batchData.length-8)}updatedComponentsEntry(e,t){const n=e+4*t;return Eo(this.batchData,n)}referenceFramesEntry(e,t){return e+20*t}disposedComponentIdsEntry(e,t){const n=e+4*t;return Eo(this.batchData,n)}disposedEventHandlerIdsEntry(e,t){const n=e+8*t;return ko(this.batchData,n)}}class Ro{constructor(e){this.batchDataUint8=e}componentId(e){return Eo(this.batchDataUint8,e)}edits(e){return e+4}editsEntry(e,t){return e+16*t}}class Ao{constructor(e,t){this.batchDataUint8=e,this.stringReader=t}editType(e){return Eo(this.batchDataUint8,e)}siblingIndex(e){return Eo(this.batchDataUint8,e+4)}newTreeIndex(e){return Eo(this.batchDataUint8,e+8)}moveToSiblingIndex(e){return Eo(this.batchDataUint8,e+8)}removedAttributeName(e){const t=Eo(this.batchDataUint8,e+12);return this.stringReader.readString(t)}}class Do{constructor(e,t){this.batchDataUint8=e,this.stringReader=t}frameType(e){return Eo(this.batchDataUint8,e)}subtreeLength(e){return Eo(this.batchDataUint8,e+4)}elementReferenceCaptureId(e){const t=Eo(this.batchDataUint8,e+4);return this.stringReader.readString(t)}componentId(e){return Eo(this.batchDataUint8,e+8)}elementName(e){const t=Eo(this.batchDataUint8,e+8);return this.stringReader.readString(t)}textContent(e){const t=Eo(this.batchDataUint8,e+4);return this.stringReader.readString(t)}markupContent(e){const t=Eo(this.batchDataUint8,e+4);return this.stringReader.readString(t)}attributeName(e){const t=Eo(this.batchDataUint8,e+4);return this.stringReader.readString(t)}attributeValue(e){const t=Eo(this.batchDataUint8,e+8);return this.stringReader.readString(t)}attributeEventHandlerId(e){return ko(this.batchDataUint8,e+12)}}class xo{constructor(e){this.batchDataUint8=e,this.stringTableStartIndex=Eo(e,e.length-4)}readString(e){if(-1===e)return null;{const n=Eo(this.batchDataUint8,this.stringTableStartIndex+4*e),o=function(e,t){let n=0,o=0;for(let r=0;r<4;r++){const i=e[t+r];if(n|=(127&i)<this.nextBatchId)return this.fatalError?(this.logger.log(vt.Debug,`Received a new batch ${e} but errored out on a previous batch ${this.nextBatchId-1}`),void await n.send("OnRenderCompleted",this.nextBatchId-1,this.fatalError.toString())):void this.logger.log(vt.Debug,`Waiting for batch ${this.nextBatchId}. Batch ${e} not processed.`);try{this.nextBatchId++,this.logger.log(vt.Debug,`Applying batch ${e}.`),xe(Ln.Server,new To(t)),await this.completeBatch(n,e)}catch(t){throw this.fatalError=t.toString(),this.logger.log(vt.Error,`There was an error applying batch ${e}.`),n.send("OnRenderCompleted",e,t.toString()),t}}getLastBatchid(){return this.nextBatchId-1}async completeBatch(e,t){try{await e.send("OnRenderCompleted",t,null)}catch{this.logger.log(vt.Warning,`Failed to deliver completion notification for render '${t}'.`)}}}let Uo=!1;function Lo(){const e=document.querySelector("#blazor-error-ui");e&&(e.style.display="block"),Uo||(Uo=!0,document.querySelectorAll("#blazor-error-ui .reload").forEach((e=>{e.onclick=function(e){location.reload(),e.preventDefault()}})),document.querySelectorAll("#blazor-error-ui .dismiss").forEach((e=>{e.onclick=function(e){const t=document.querySelector("#blazor-error-ui");t&&(t.style.display="none"),e.preventDefault()}})))}class Bo{constructor(t,n,o,r){this._firstUpdate=!0,this._renderingFailed=!1,this._disposed=!1,this._circuitId=void 0,this._applicationState=n,this._componentManager=t,this._options=o,this._logger=r,this._renderQueue=new Po(this._logger),this._dispatcher=e.attachDispatcher(this)}start(){if(this.isDisposedOrDisposing())throw new Error("Cannot start a disposed circuit.");return this._startPromise||(this._startPromise=this.startCore()),this._startPromise}updateRootComponents(e){var t,n;return this._firstUpdate?(this._firstUpdate=!1,null===(t=this._connection)||void 0===t?void 0:t.send("UpdateRootComponents",e,this._applicationState)):null===(n=this._connection)||void 0===n?void 0:n.send("UpdateRootComponents",e,"")}async startCore(){if(this._connection=await this.startConnection(),this._connection.state!==ln.Connected)return!1;const e=JSON.stringify(this._componentManager.initialComponents.map((e=>Pt(e))));if(this._circuitId=await this._connection.invoke("StartCircuit",qe.getBaseURI(),qe.getLocationHref(),e,this._applicationState||""),!this._circuitId)return!1;for(const e of this._options.circuitHandlers)e.onCircuitOpened&&e.onCircuitOpened();return!0}async startConnection(){var e,t;const n=new wo;n.name="blazorpack";const o=(new Un).withUrl("_blazor").withHubProtocol(n);this._options.configureSignalR(o);const r=o.build();r.on("JS.AttachComponent",((e,t)=>Ae(Ln.Server,this.resolveElement(t),e,!1))),r.on("JS.BeginInvokeJS",this._dispatcher.beginInvokeJSFromDotNet.bind(this._dispatcher)),r.on("JS.EndInvokeDotNet",this._dispatcher.endInvokeDotNetFromJS.bind(this._dispatcher)),r.on("JS.ReceiveByteArray",this._dispatcher.receiveByteArray.bind(this._dispatcher)),r.on("JS.BeginTransmitStream",(e=>{const t=new ReadableStream({start:t=>{r.stream("SendDotNetStreamToJS",e).subscribe({next:e=>t.enqueue(e),complete:()=>t.close(),error:e=>t.error(e)})}});this._dispatcher.supplyDotNetStream(e,t)})),r.on("JS.RenderBatch",(async(e,t)=>{var n,o;this._logger.log(Bt.Debug,`Received render batch with id ${e} and ${t.byteLength} bytes.`),await this._renderQueue.processBatch(e,t,this._connection),null===(o=(n=this._componentManager).onAfterRenderBatch)||void 0===o||o.call(n,Ln.Server)})),r.on("JS.EndUpdateRootComponents",(e=>{var t,n;null===(n=(t=this._componentManager).onAfterUpdateRootComponents)||void 0===n||n.call(t,e)})),r.on("JS.EndLocationChanging",mt._internal.navigationManager.endLocationChanging),r.onclose((e=>{this._interopMethodsForReconnection=function(e){const t=C.get(e);if(!t)throw new Error(`Interop methods are not registered for renderer ${e}`);return C.delete(e),t}(Ln.Server),this._disposed||this._renderingFailed||this._options.reconnectionHandler.onConnectionDown(this._options.reconnectionOptions,e)})),r.on("JS.Error",(e=>{this._renderingFailed=!0,this.unhandledError(e),Lo()}));try{await r.start()}catch(e){if(this.unhandledError(e),"FailedToNegotiateWithServerError"===e.errorType)throw e;Lo(),e.innerErrors&&(e.innerErrors.some((e=>"UnsupportedTransportError"===e.errorType&&e.transport===En.WebSockets))?this._logger.log(Bt.Error,"Unable to connect, please ensure you are using an updated browser that supports WebSockets."):e.innerErrors.some((e=>"FailedToStartTransportError"===e.errorType&&e.transport===En.WebSockets))?this._logger.log(Bt.Error,"Unable to connect, please ensure WebSockets are available. A VPN or proxy may be blocking the connection."):e.innerErrors.some((e=>"DisabledTransportError"===e.errorType&&e.transport===En.LongPolling))&&this._logger.log(Bt.Error,"Unable to initiate a SignalR connection to the server. This might be because the server is not configured to support WebSockets. For additional details, visit https://aka.ms/blazor-server-websockets-error."))}return(null===(t=null===(e=r.connection)||void 0===e?void 0:e.features)||void 0===t?void 0:t.inherentKeepAlive)&&this._logger.log(Bt.Warning,"Failed to connect via WebSockets, using the Long Polling fallback transport. This may be due to a VPN or proxy blocking the connection. To troubleshoot this, visit https://aka.ms/blazor-server-using-fallback-long-polling."),r}async disconnect(){var e;await(null===(e=this._connection)||void 0===e?void 0:e.stop())}async reconnect(){if(!this._circuitId)throw new Error("Circuit host not initialized.");return this._connection.state===ln.Connected||(this._connection=await this.startConnection(),this._interopMethodsForReconnection&&(k(Ln.Server,this._interopMethodsForReconnection),this._interopMethodsForReconnection=void 0),!!await this._connection.invoke("ConnectCircuit",this._circuitId)&&(this._options.reconnectionHandler.onConnectionUp(),!0))}beginInvokeDotNetFromJS(e,t,n,o,r){this.throwIfDispatchingWhenDisposed(),this._connection.send("BeginInvokeDotNetFromJS",e?e.toString():null,t,n,o||0,r)}endInvokeJSFromDotNet(e,t,n){this.throwIfDispatchingWhenDisposed(),this._connection.send("EndInvokeJSFromDotNet",e,t,n)}sendByteArray(e,t){this.throwIfDispatchingWhenDisposed(),this._connection.send("ReceiveByteArray",e,t)}throwIfDispatchingWhenDisposed(){if(this._disposed)throw new Error("The circuit associated with this dispatcher is no longer available.")}sendLocationChanged(e,t,n){return this._connection.send("OnLocationChanged",e,t,n)}sendLocationChanging(e,t,n,o){return this._connection.send("OnLocationChanging",e,t,n,o)}sendJsDataStream(e,t,n){return function(e,t,n,o){setTimeout((async()=>{let r=5,i=(new Date).valueOf();try{const s=t instanceof Blob?t.size:t.byteLength;let a=0,c=0;for(;a1)await e.send("ReceiveJSDataChunk",n,c,h,null);else{if(!await e.invoke("ReceiveJSDataChunk",n,c,h,null))break;const t=(new Date).valueOf(),o=t-i;i=t,r=Math.max(1,Math.round(500/Math.max(1,o)))}a+=l,c++}}catch(t){await e.send("ReceiveJSDataChunk",n,-1,null,t.toString())}}),0)}(this._connection,e,t,n)}resolveElement(e){const t=w(e);if(t)return W(t,!0);const n=Number.parseInt(e);if(!Number.isNaN(n))return H(this._componentManager.resolveRootComponent(n));throw new Error(`Invalid sequence number or identifier '${e}'.`)}getRootComponentManager(){return this._componentManager}unhandledError(e){this._logger.log(Bt.Error,e),this.disconnect()}getDisconnectFormData(){const e=new FormData,t=this._circuitId;return e.append("circuitId",t),e}didRenderingFail(){return this._renderingFailed}isDisposedOrDisposing(){return void 0!==this._disposePromise}sendDisconnectBeacon(){if(this._disposed)return;const e=this.getDisconnectFormData();this._disposed=navigator.sendBeacon("_blazor/disconnect",e)}dispose(){return this._disposePromise||(this._disposePromise=this.disposeCore()),this._disposePromise}async disposeCore(){var e;if(!this._startPromise)return void(this._disposed=!0);await this._startPromise,this._disposed=!0,null===(e=this._connection)||void 0===e||e.stop();const t=this.getDisconnectFormData();fetch("http://github.com/_blazor/disconnect",{method:"POST",body:t});for(const e of this._options.circuitHandlers)e.onCircuitClosed&&e.onCircuitClosed()}}function Oo(e){const t={...Fo,...e};return e&&e.reconnectionOptions&&(t.reconnectionOptions={...Fo.reconnectionOptions,...e.reconnectionOptions}),t}const Fo={configureSignalR:e=>{},logLevel:vt.Warning,initializers:void 0,circuitHandlers:[],reconnectionOptions:{maxRetries:8,retryIntervalMilliseconds:2e4,dialogId:"components-reconnect-modal"}};class $o{constructor(e,t,n,o){this.maxRetries=t,this.document=n,this.logger=o,this.modal=this.document.createElement("div"),this.modal.id=e,this.maxRetries=t,this.modal.style.cssText=["position: fixed","top: 0","right: 0","bottom: 0","left: 0","z-index: 1050","display: none","overflow: hidden","background-color: #fff","opacity: 0.8","text-align: center","font-weight: bold","transition: visibility 0s linear 500ms"].join(";"),this.message=this.document.createElement("h5"),this.message.style.cssText="margin-top: 20px",this.button=this.document.createElement("button"),this.button.style.cssText="margin:5px auto 5px",this.button.textContent="Retry";const r=this.document.createElement("a");r.addEventListener("click",(()=>location.reload())),r.textContent="reload",this.reloadParagraph=this.document.createElement("p"),this.reloadParagraph.textContent="Alternatively, ",this.reloadParagraph.appendChild(r),this.modal.appendChild(this.message),this.modal.appendChild(this.button),this.modal.appendChild(this.reloadParagraph),this.loader=this.getLoader(),this.message.after(this.loader),this.button.addEventListener("click",(async()=>{this.show();try{await mt.reconnect()||this.rejected()}catch(e){this.logger.log(vt.Error,e),this.failed()}}))}show(){this.document.contains(this.modal)||this.document.body.appendChild(this.modal),this.modal.style.display="block",this.loader.style.display="inline-block",this.button.style.display="none",this.reloadParagraph.style.display="none",this.message.textContent="Attempting to reconnect to the server...",this.modal.style.visibility="hidden",setTimeout((()=>{this.modal.style.visibility="visible"}),0)}update(e){this.message.textContent=`Attempting to reconnect to the server: ${e} of ${this.maxRetries}`}hide(){this.modal.style.display="none"}failed(){this.button.style.display="block",this.reloadParagraph.style.display="none",this.loader.style.display="none";const e=this.document.createTextNode("Reconnection failed. Try "),t=this.document.createElement("a");t.textContent="reloading",t.setAttribute("href",""),t.addEventListener("click",(()=>location.reload()));const n=this.document.createTextNode(" the page if you're unable to reconnect.");this.message.replaceChildren(e,t,n)}rejected(){this.button.style.display="none",this.reloadParagraph.style.display="none",this.loader.style.display="none";const e=this.document.createTextNode("Could not reconnect to the server. "),t=this.document.createElement("a");t.textContent="Reload",t.setAttribute("href",""),t.addEventListener("click",(()=>location.reload()));const n=this.document.createTextNode(" the page to restore functionality.");this.message.replaceChildren(e,t,n)}getLoader(){const e=this.document.createElement("div");return e.style.cssText=["border: 0.3em solid #f3f3f3","border-top: 0.3em solid #3498db","border-radius: 50%","width: 2em","height: 2em","display: inline-block"].join(";"),e.animate([{transform:"rotate(0deg)"},{transform:"rotate(360deg)"}],{duration:2e3,iterations:1/0}),e}}class Ho{constructor(e,t,n){this.dialog=e,this.maxRetries=t,this.document=n,this.document=n;const o=this.document.getElementById(Ho.MaxRetriesId);o&&(o.innerText=this.maxRetries.toString())}show(){this.removeClasses(),this.dialog.classList.add(Ho.ShowClassName)}update(e){const t=this.document.getElementById(Ho.CurrentAttemptId);t&&(t.innerText=e.toString())}hide(){this.removeClasses(),this.dialog.classList.add(Ho.HideClassName)}failed(){this.removeClasses(),this.dialog.classList.add(Ho.FailedClassName)}rejected(){this.removeClasses(),this.dialog.classList.add(Ho.RejectedClassName)}removeClasses(){this.dialog.classList.remove(Ho.ShowClassName,Ho.HideClassName,Ho.FailedClassName,Ho.RejectedClassName)}}Ho.ShowClassName="components-reconnect-show",Ho.HideClassName="components-reconnect-hide",Ho.FailedClassName="components-reconnect-failed",Ho.RejectedClassName="components-reconnect-rejected",Ho.MaxRetriesId="components-reconnect-max-retries",Ho.CurrentAttemptId="components-reconnect-current-attempt";class Wo{constructor(e,t,n){this._currentReconnectionProcess=null,this._logger=e,this._reconnectionDisplay=t,this._reconnectCallback=n||mt.reconnect}onConnectionDown(e,t){if(!this._reconnectionDisplay){const t=document.getElementById(e.dialogId);this._reconnectionDisplay=t?new Ho(t,e.maxRetries,document):new $o(e.dialogId,e.maxRetries,document,this._logger)}this._currentReconnectionProcess||(this._currentReconnectionProcess=new jo(e,this._logger,this._reconnectCallback,this._reconnectionDisplay))}onConnectionUp(){this._currentReconnectionProcess&&(this._currentReconnectionProcess.dispose(),this._currentReconnectionProcess=null)}}class jo{constructor(e,t,n,o){this.logger=t,this.reconnectCallback=n,this.isDisposed=!1,this.reconnectDisplay=o,this.reconnectDisplay.show(),this.attemptPeriodicReconnection(e)}dispose(){this.isDisposed=!0,this.reconnectDisplay.hide()}async attemptPeriodicReconnection(e){for(let t=0;tjo.MaximumFirstRetryInterval?jo.MaximumFirstRetryInterval:e.retryIntervalMilliseconds;if(await this.delay(n),this.isDisposed)break;try{return await this.reconnectCallback()?void 0:void this.reconnectDisplay.rejected()}catch(e){this.logger.log(vt.Error,e)}}this.reconnectDisplay.failed()}delay(e){return new Promise((t=>setTimeout(t,e)))}}jo.MaximumFirstRetryInterval=3e3;class zo{constructor(e=!0,t,n,o=0){this.singleRuntime=e,this.logger=t,this.webRendererId=o,this.afterStartedCallbacks=[],n&&this.afterStartedCallbacks.push(...n)}async importInitializersAsync(e,t){await Promise.all(e.map((e=>async function(e,n){const o=function(e){const t=document.baseURI;return t.endsWith("/")?`${t}${e}`:`${t}/${e}`}(n),r=await import(o);if(void 0!==r){if(e.singleRuntime){const{beforeStart:n,afterStarted:o,beforeWebAssemblyStart:s,afterWebAssemblyStarted:a,beforeServerStart:c,afterServerStarted:l}=r;let h=n;e.webRendererId===Ln.Server&&c&&(h=c),e.webRendererId===Ln.WebAssembly&&s&&(h=s);let d=o;return e.webRendererId===Ln.Server&&l&&(d=l),e.webRendererId===Ln.WebAssembly&&a&&(d=a),i(e,h,d,t)}return function(e,t,n){var r;const s=n[0],{beforeStart:a,afterStarted:c,beforeWebStart:l,afterWebStarted:h,beforeWebAssemblyStart:d,afterWebAssemblyStarted:u,beforeServerStart:p,afterServerStarted:f}=t,g=!(l||h||d||u||p||f||!a&&!c),m=g&&s.enableClassicInitializers;if(g&&!s.enableClassicInitializers)null===(r=e.logger)||void 0===r||r.log(vt.Warning,`Initializer '${o}' will be ignored because multiple runtimes are available. use 'before(web|webAssembly|server)Start' and 'after(web|webAssembly|server)Started?' instead.)`);else if(m)return i(e,a,c,n);if(function(e){e.webAssembly?e.webAssembly.initializers||(e.webAssembly.initializers={beforeStart:[],afterStarted:[]}):e.webAssembly={initializers:{beforeStart:[],afterStarted:[]}},e.circuit?e.circuit.initializers||(e.circuit.initializers={beforeStart:[],afterStarted:[]}):e.circuit={initializers:{beforeStart:[],afterStarted:[]}}}(s),d&&s.webAssembly.initializers.beforeStart.push(d),u&&s.webAssembly.initializers.afterStarted.push(u),p&&s.circuit.initializers.beforeStart.push(p),f&&s.circuit.initializers.afterStarted.push(f),h&&e.afterStartedCallbacks.push(h),l)return l(s)}(e,r,t)}function i(e,t,n,o){if(n&&e.afterStartedCallbacks.push(n),t)return t(...o)}}(this,e))))}async invokeAfterStartedCallbacks(e){const t=function(e){var t;return null===(t=I.get(e))||void 0===t?void 0:t[1]}(this.webRendererId);t&&await t,await Promise.all(this.afterStartedCallbacks.map((t=>t(e))))}}let qo,Jo,Ko,Vo,Xo,Go,Yo,Qo;function Zo(e){if(Vo)throw new Error("Circuit options have already been configured.");if(Vo)throw new Error("WebAssembly options have already been configured.");qo=async function(e){const t=await e;Vo=Oo(t)}(e)}function er(e){if(void 0!==Go)throw new Error("Blazor Server has already started.");return Go=new Promise(tr.bind(null,e)),Go}async function tr(e,t,n){await qo;const o=await async function(e){if(e.initializers)return await Promise.all(e.initializers.beforeStart.map((t=>t(e)))),new zo(!1,void 0,e.initializers.afterStarted,Ln.Server);const t=await fetch("http://github.com/_blazor/initializers",{method:"GET",credentials:"include",cache:"no-cache"}),n=await t.json(),o=new zo(!0,void 0,void 0,Ln.Server);return await o.importInitializersAsync(n,[e]),o}(Vo);if(Jo=Et(document)||"",Xo=new wt(Vo.logLevel),Ko=new Bo(e,Jo,Vo,Xo),Xo.log(vt.Information,"Starting up Blazor server-side application."),mt.reconnect=async()=>!(Ko.didRenderingFail()||!await Ko.reconnect()&&(Xo.log(vt.Information,"Reconnection attempt to the circuit was rejected by the server. This may indicate that the associated state is no longer available on the server."),1)),mt.defaultReconnectionHandler=new Wo(Xo),Vo.reconnectionHandler=Vo.reconnectionHandler||mt.defaultReconnectionHandler,mt._internal.navigationManager.listenForNavigationEvents(Ln.Server,((e,t,n)=>Ko.sendLocationChanged(e,t,n)),((e,t,n,o)=>Ko.sendLocationChanging(e,t,n,o))),mt._internal.forceCloseConnection=()=>Ko.disconnect(),mt._internal.sendJSDataStream=(e,t,n)=>Ko.sendJsDataStream(e,t,n),!await Ko.start())return Xo.log(vt.Error,"Failed to start the circuit."),void t();const r=()=>{Ko.sendDisconnectBeacon()};mt.disconnect=r,window.addEventListener("unload",r,{capture:!1,once:!0}),Xo.log(vt.Information,"Blazor server-side application started."),o.invokeAfterStartedCallbacks(mt),t()}async function nr(){if(!Go)throw new Error("Cannot start the circuit until Blazor Server has started.");return!(!Ko||Ko.isDisposedOrDisposing())||(Yo?await Yo:(await Go,(!Ko||!Ko.didRenderingFail())&&(Ko&&Ko.isDisposedOrDisposing()&&(Jo=Et(document)||"",Ko=new Bo(Ko.getRootComponentManager(),Jo,Vo,Xo)),Yo=Ko.start(),async function(e){await e,Yo===e&&(Yo=void 0)}(Yo),Yo)))}function or(e){if(Ko&&!Ko.isDisposedOrDisposing())return Ko.updateRootComponents(e);!async function(e){await Go,await nr()&&Ko.updateRootComponents(e)}(e)}function rr(e){return Qo=e,Qo}var ir,sr;const ar=navigator,cr=ar.userAgentData&&ar.userAgentData.brands,lr=cr&&cr.length>0?cr.some((e=>"Google Chrome"===e.brand||"Microsoft Edge"===e.brand||"Chromium"===e.brand)):window.chrome,hr=null!==(sr=null===(ir=ar.userAgentData)||void 0===ir?void 0:ir.platform)&&void 0!==sr?sr:navigator.platform;function dr(e){return 0!==e.debugLevel&&(lr||navigator.userAgent.includes("Firefox"))}let ur,pr,fr,gr,mr,vr,yr;const wr=Math.pow(2,32),br=Math.pow(2,21)-1;let _r=null;function Sr(e){return pr.getI32(e)}const Cr={load:function(e,t){return async function(e,t){const{dotnet:n}=await async function(e){if("undefined"==typeof WebAssembly||!WebAssembly.validate)throw new Error("This browser does not support WebAssembly.");let t="_framework/dotnet.js";if(e.loadBootResource){const n="dotnetjs",o=e.loadBootResource(n,"dotnet.js",t,"","js-module-dotnet");if("string"==typeof o)t=o;else if(o)throw new Error(`For a ${n} resource, custom loaders must supply a URI string.`)}const n=new URL(t,document.baseURI).toString();return await import(n)}(e),o=function(e,t){const n={maxParallelDownloads:1e6,enableDownloadRetry:!1,applicationEnvironment:e.environment},o={...window.Module||{},onConfigLoaded:async n=>{n.environmentVariables||(n.environmentVariables={}),"sharded"===n.globalizationMode&&(n.environmentVariables.__BLAZOR_SHARDED_ICU="1"),mt._internal.getApplicationEnvironment=()=>n.applicationEnvironment,null==t||t(n),yr=await async function(e,t){var n,o,r;if(e.initializers)return await Promise.all(e.initializers.beforeStart.map((t=>t(e)))),new zo(!1,void 0,e.initializers.afterStarted,Ln.WebAssembly);{const i=[e,null!==(o=null===(n=t.resources)||void 0===n?void 0:n.extensions)&&void 0!==o?o:{}],s=new zo(!0,void 0,void 0,Ln.WebAssembly),a=Object.keys((null===(r=null==t?void 0:t.resources)||void 0===r?void 0:r.libraryInitializers)||{});return await s.importInitializersAsync(a,i),s}}(e,n)},onDownloadResourceProgress:Er,config:n,disableDotnet6Compatibility:!1,out:kr,err:Tr};return o}(e,t);e.applicationCulture&&n.withApplicationCulture(e.applicationCulture),e.environment&&n.withApplicationEnvironment(e.environment),e.loadBootResource&&n.withResourceLoader(e.loadBootResource),n.withModuleConfig(o),e.configureRuntime&&e.configureRuntime(n),vr=await n.create()}(e,t)},start:function(){return async function(){if(!vr)throw new Error("The runtime must be loaded it gets configured.");const{MONO:t,BINDING:n,Module:o,setModuleImports:r,INTERNAL:i,getConfig:s,invokeLibraryInitializers:a}=vr;fr=o,ur=n,pr=t,mr=i,function(e){const t=hr.match(/^Mac/i)?"Cmd":"Alt";dr(e)&&console.info(`Debugging hotkey: Shift+${t}+D (when application has focus)`),document.addEventListener("keydown",(t=>{t.shiftKey&&(t.metaKey||t.altKey)&&"KeyD"===t.code&&(dr(e)?navigator.userAgent.includes("Firefox")?async function(){const e=await fetch(`_framework/debug?url=${encodeURIComponent(location.href)}&isFirefox=true`);200!==e.status&&console.warn(await e.text())}():lr?function(){const e=document.createElement("a");e.href=`_framework/debug?url=${encodeURIComponent(location.href)}`,e.target="_blank",e.rel="noopener noreferrer",e.click()}():console.error("Currently, only Microsoft Edge (80+), Google Chrome, or Chromium, are supported for debugging."):console.error("Cannot start debugging, because the application was not compiled with debugging enabled."))}))}(s()),mt.runtime=vr,mt._internal.dotNetCriticalError=Tr,r("blazor-internal",{Blazor:{_internal:mt._internal}});const c=await vr.getAssemblyExports("Microsoft.AspNetCore.Components.WebAssembly");return Object.assign(mt._internal,{dotNetExports:{...c.Microsoft.AspNetCore.Components.WebAssembly.Services.DefaultWebAssemblyJSRuntime}}),gr=e.attachDispatcher({beginInvokeDotNetFromJS:(e,t,n,o,r)=>{if(Ar(),!o&&!t)throw new Error("Either assemblyName or dotNetObjectId must have a non null value.");const i=o?o.toString():t;mt._internal.dotNetExports.BeginInvokeDotNet(e?e.toString():null,i,n,r)},endInvokeJSFromDotNet:(e,t,n)=>{mt._internal.dotNetExports.EndInvokeJS(n)},sendByteArray:(e,t)=>{mt._internal.dotNetExports.ReceiveByteArrayFromJS(e,t)},invokeDotNetFromJS:(e,t,n,o)=>(Ar(),mt._internal.dotNetExports.InvokeDotNet(e||null,t,null!=n?n:0,o))}),{invokeLibraryInitializers:a}}()},callEntryPoint:async function(){try{await vr.runMain(vr.getConfig().mainAssemblyName,[])}catch(e){console.error(e),Lo()}},toUint8Array:function(e){const t=Rr(e),n=Sr(t),o=new Uint8Array(n);return o.set(fr.HEAPU8.subarray(t+4,t+4+n)),o},getArrayLength:function(e){return Sr(Rr(e))},getArrayEntryPtr:function(e,t,n){return Rr(e)+4+t*n},getObjectFieldsBaseAddress:function(e){return e+8},readInt16Field:function(e,t){return n=e+(t||0),pr.getI16(n);var n},readInt32Field:function(e,t){return Sr(e+(t||0))},readUint64Field:function(e,t){return function(e){const t=e>>2,n=fr.HEAPU32[t+1];if(n>br)throw new Error(`Cannot read uint64 with high order part ${n}, because the result would exceed Number.MAX_SAFE_INTEGER.`);return n*wr+fr.HEAPU32[t]}(e+(t||0))},readFloatField:function(e,t){return n=e+(t||0),pr.getF32(n);var n},readObjectField:function(e,t){return Sr(e+(t||0))},readStringField:function(e,t,n){const o=Sr(e+(t||0));if(0===o)return null;if(n){const e=ur.unbox_mono_obj(o);return"boolean"==typeof e?e?"":null:e}return ur.conv_string(o)},readStructField:function(e,t){return e+(t||0)},beginHeapLock:function(){return Ar(),_r=Dr.create(),_r},invokeWhenHeapUnlocked:function(e){_r?_r.enqueuePostReleaseAction(e):e()}};function Er(e,t){const n=e/t*100;document.documentElement.style.setProperty("--blazor-load-percentage",`${n}%`),document.documentElement.style.setProperty("--blazor-load-percentage-text",`"${Math.floor(n)}%"`)}const Ir=["DEBUGGING ENABLED"],kr=e=>Ir.indexOf(e)<0&&console.log(e),Tr=e=>{console.error(e||"(null)"),Lo()};function Rr(e){return e+12}function Ar(){if(_r)throw new Error("Assertion failed - heap is currently locked")}class Dr{enqueuePostReleaseAction(e){this.postReleaseActions||(this.postReleaseActions=[]),this.postReleaseActions.push(e)}release(){var e;if(_r!==this)throw new Error("Trying to release a lock which isn't current");for(mr.mono_wasm_gc_unlock(),_r=null;null===(e=this.postReleaseActions)||void 0===e?void 0:e.length;)this.postReleaseActions.shift()(),Ar()}static create(){return mr.mono_wasm_gc_lock(),new Dr}}class xr{constructor(e){this.batchAddress=e,this.arrayRangeReader=Nr,this.arrayBuilderSegmentReader=Mr,this.diffReader=Pr,this.editReader=Ur,this.frameReader=Lr}updatedComponents(){return Qo.readStructField(this.batchAddress,0)}referenceFrames(){return Qo.readStructField(this.batchAddress,Nr.structLength)}disposedComponentIds(){return Qo.readStructField(this.batchAddress,2*Nr.structLength)}disposedEventHandlerIds(){return Qo.readStructField(this.batchAddress,3*Nr.structLength)}updatedComponentsEntry(e,t){return Br(e,t,Pr.structLength)}referenceFramesEntry(e,t){return Br(e,t,Lr.structLength)}disposedComponentIdsEntry(e,t){const n=Br(e,t,4);return Qo.readInt32Field(n)}disposedEventHandlerIdsEntry(e,t){const n=Br(e,t,8);return Qo.readUint64Field(n)}}const Nr={structLength:8,values:e=>Qo.readObjectField(e,0),count:e=>Qo.readInt32Field(e,4)},Mr={structLength:12,values:e=>{const t=Qo.readObjectField(e,0),n=Qo.getObjectFieldsBaseAddress(t);return Qo.readObjectField(n,0)},offset:e=>Qo.readInt32Field(e,4),count:e=>Qo.readInt32Field(e,8)},Pr={structLength:4+Mr.structLength,componentId:e=>Qo.readInt32Field(e,0),edits:e=>Qo.readStructField(e,4),editsEntry:(e,t)=>Br(e,t,Ur.structLength)},Ur={structLength:20,editType:e=>Qo.readInt32Field(e,0),siblingIndex:e=>Qo.readInt32Field(e,4),newTreeIndex:e=>Qo.readInt32Field(e,8),moveToSiblingIndex:e=>Qo.readInt32Field(e,8),removedAttributeName:e=>Qo.readStringField(e,16)},Lr={structLength:36,frameType:e=>Qo.readInt16Field(e,4),subtreeLength:e=>Qo.readInt32Field(e,8),elementReferenceCaptureId:e=>Qo.readStringField(e,16),componentId:e=>Qo.readInt32Field(e,12),elementName:e=>Qo.readStringField(e,16),textContent:e=>Qo.readStringField(e,16),markupContent:e=>Qo.readStringField(e,16),attributeName:e=>Qo.readStringField(e,16),attributeValue:e=>Qo.readStringField(e,24,!0),attributeEventHandlerId:e=>Qo.readUint64Field(e,8)};function Br(e,t,n){return Qo.getArrayEntryPtr(e,t,n)}class Or{constructor(e){this.componentManager=e}resolveRegisteredElement(e){const t=Number.parseInt(e);if(!Number.isNaN(t))return H(this.componentManager.resolveRootComponent(t))}getParameterValues(e){return this.componentManager.initialComponents[e].parameterValues}getParameterDefinitions(e){return this.componentManager.initialComponents[e].parameterDefinitions}getTypeName(e){return this.componentManager.initialComponents[e].typeName}getAssembly(e){return this.componentManager.initialComponents[e].assembly}getCount(){return this.componentManager.initialComponents.length}}let Fr,$r,Hr,Wr,jr,zr=!1,qr=!1,Jr=!0,Kr=!1;const Vr=new Promise((e=>{jr=e}));let Xr;const Gr=new Promise((e=>{Xr=e}));let Yr;function Qr(e){if(void 0!==Wr)throw new Error("Blazor WebAssembly has already started.");return Wr=new Promise(Zr.bind(null,e)),Wr}async function Zr(e,t,n){(function(){if(window.parent!==window&&!window.opener&&window.frameElement){const e=window.sessionStorage&&window.sessionStorage["Microsoft.AspNetCore.Components.WebAssembly.Authentication.CachedAuthSettings"],t=e&&JSON.parse(e);return t&&t.redirect_uri&&location.href.startsWith(t.redirect_uri)}return!1})()&&await new Promise((()=>{}));const o=ei();!function(e){const t=D;D=(e,n,o)=>{((e,t,n)=>{const o=De(e);(null==o?void 0:o.eventDelegator.getHandler(t))&&Cr.invokeWhenHeapUnlocked(n)})(e,n,(()=>t(e,n,o)))}}(),mt._internal.applyHotReload=(e,t,n,o)=>{gr.invokeDotNetStaticMethod("Microsoft.AspNetCore.Components.WebAssembly","ApplyHotReloadDelta",e,t,n,o)},mt._internal.getApplyUpdateCapabilities=()=>gr.invokeDotNetStaticMethod("Microsoft.AspNetCore.Components.WebAssembly","GetApplyUpdateCapabilities"),mt._internal.invokeJSFromDotNet=ni,mt._internal.invokeJSJson=oi,mt._internal.endInvokeDotNetFromJS=ri,mt._internal.receiveWebAssemblyDotNetDataStream=ii,mt._internal.receiveByteArray=si;const r=rr(Cr);mt.platform=r,mt._internal.renderBatch=(e,t)=>{const n=Cr.beginHeapLock();try{xe(e,new xr(t))}finally{n.release()}},mt._internal.navigationManager.listenForNavigationEvents(Ln.WebAssembly,(async(e,t,n)=>{await gr.invokeDotNetStaticMethodAsync("Microsoft.AspNetCore.Components.WebAssembly","NotifyLocationChanged",e,t,n)}),(async(e,t,n,o)=>{const r=await gr.invokeDotNetStaticMethodAsync("Microsoft.AspNetCore.Components.WebAssembly","NotifyLocationChangingAsync",t,n,o);mt._internal.navigationManager.endLocationChanging(e,r)}));const i=new Or(e);let s;mt._internal.registeredComponents={getRegisteredComponentsCount:()=>i.getCount(),getAssembly:e=>i.getAssembly(e),getTypeName:e=>i.getTypeName(e),getParameterDefinitions:e=>i.getParameterDefinitions(e)||"",getParameterValues:e=>i.getParameterValues(e)||""},mt._internal.getPersistedState=()=>It(document,St)||"",mt._internal.getInitialComponentsUpdate=()=>Gr,mt._internal.updateRootComponents=e=>{var t;return null===(t=mt._internal.dotNetExports)||void 0===t?void 0:t.UpdateRootComponentsCore(e)},mt._internal.endUpdateRootComponents=t=>{var n;return null===(n=e.onAfterUpdateRootComponents)||void 0===n?void 0:n.call(e,t)},mt._internal.attachRootComponentToElement=(e,t,n)=>{const o=i.resolveRegisteredElement(e);o?Ae(n,o,t,!1):function(e,t,n){const o="::before";let r=!1;if(e.endsWith("::after"))e=e.slice(0,-7),r=!0;else if(e.endsWith(o))throw new Error(`The '${o}' selector is not supported.`);const i=w(e)||document.querySelector(e);if(!i)throw new Error(`Could not find any element matching selector '${e}'.`);Ae(n,W(i,!0),t,r)}(e,t,n)};try{await o,s=await r.start()}catch(e){throw new Error(`Failed to start platform. Reason: ${e}`)}r.callEntryPoint(),yr.invokeAfterStartedCallbacks(mt),qr=!0,t()}function ei(){return null!=Hr||(Hr=(async()=>{await $r;const e=null!=Fr?Fr:{},t=null==Fr?void 0:Fr.configureRuntime;e.configureRuntime=e=>{null==t||t(e),Kr&&e.withEnvironmentVariable("__BLAZOR_WEBASSEMBLY_WAIT_FOR_ROOT_COMPONENTS","true")},await Cr.load(e,jr),zr=!0})()),Hr}function ti(){return zr}function ni(t,n,o,r){const i=Cr.readStringField(t,0),s=Cr.readInt32Field(t,4),a=Cr.readStringField(t,8),c=Cr.readUint64Field(t,20);if(null!==a){const e=Cr.readUint64Field(t,12);if(0!==e)return gr.beginInvokeJSFromDotNet(e,i,a,s,c),0;{const e=gr.invokeJSFromDotNet(i,a,s,c);return null===e?0:ur.js_string_to_mono_string(e)}}{const t=e.findJSFunction(i,c).call(null,n,o,r);switch(s){case e.JSCallResultType.Default:return t;case e.JSCallResultType.JSObjectReference:return e.createJSObjectReference(t).__jsObjectId;case e.JSCallResultType.JSStreamReference:{const n=e.createJSStreamReference(t),o=JSON.stringify(n);return ur.js_string_to_mono_string(o)}case e.JSCallResultType.JSVoidResult:return null;default:throw new Error(`Invalid JS call result type '${s}'.`)}}}function oi(e,t,n,o,r){return 0!==r?(gr.beginInvokeJSFromDotNet(r,e,o,n,t),null):gr.invokeJSFromDotNet(e,o,n,t)}function ri(e,t,n){gr.endInvokeDotNetFromJS(e,t,n)}function ii(e,t,n,o){!function(e,t,n,o,r){let i=gt.get(t);if(!i){const n=new ReadableStream({start(e){gt.set(t,e),i=e}});e.supplyDotNetStream(t,n)}r?(i.error(r),gt.delete(t)):0===o?(i.close(),gt.delete(t)):i.enqueue(n.length===o?n:n.subarray(0,o))}(gr,e,t,n,o)}function si(e,t){gr.receiveByteArray(e,t)}function ai(e,t){t.namespaceURI?e.setAttributeNS(t.namespaceURI,t.name,t.value):e.setAttribute(t.name,t.value)}$r=new Promise((e=>{Yr=e}));const ci="data-permanent";var li,hi;!function(e){e[e.None=0]="None",e[e.Some=1]="Some",e[e.Infinite=2]="Infinite"}(li||(li={})),function(e){e.Keep="keep",e.Update="update",e.Insert="insert",e.Delete="delete"}(hi||(hi={}));class di{static create(e,t,n){return 0===t&&n===e.length?e:new di(e,t,n)}constructor(e,t,n){this.source=e,this.startIndex=t,this.length=n}item(e){return this.source.item(e+this.startIndex)}forEach(e,t){for(let t=0;t=n&&s>=o&&r(e.item(i),t.item(s))===li.None;)i--,s--,a++;return a}(e,t,o,o,n),i=function(e){var t;const n=[];let o=e.length-1,r=(null===(t=e[o])||void 0===t?void 0:t.length)-1;for(;o>0||r>0;){const t=0===o?hi.Insert:0===r?hi.Delete:e[o][r];switch(n.unshift(t),t){case hi.Keep:case hi.Update:o--,r--;break;case hi.Insert:r--;break;case hi.Delete:o--}}return n}(function(e,t,n){const o=[],r=[],i=e.length,s=t.length;if(0===i&&0===s)return[];for(let e=0;e<=i;e++)(o[e]=Array(s+1))[0]=e,r[e]=Array(s+1);const a=o[0];for(let e=1;e<=s;e++)a[e]=e;for(let a=1;a<=i;a++)for(let i=1;i<=s;i++){const s=n(e.item(a-1),t.item(i-1)),c=o[a-1][i]+1,l=o[a][i-1]+1;let h;switch(s){case li.None:h=o[a-1][i-1];break;case li.Some:h=o[a-1][i-1]+1;break;case li.Infinite:h=Number.MAX_VALUE}h{history.pushState(null,"",e),Pi(e,!0)}))}function Ni(e){Be()||Pi(location.href,!1)}function Mi(e){var t,n,o,r,i;if(Be()||e.defaultPrevented)return;const s=e.target;if(s instanceof HTMLFormElement){if(!function(e){const t=e.getAttribute("data-enhance");return"string"==typeof t&&""===t||"true"===(null==t?void 0:t.toLowerCase())}(s))return;const a=(null===(t=e.submitter)||void 0===t?void 0:t.getAttribute("formmethod"))||s.method;if("dialog"===a)return void console.warn('A form cannot be enhanced when its method is "dialog".');const c=(null===(n=e.submitter)||void 0===n?void 0:n.getAttribute("formtarget"))||s.target;if(""!==c&&"_self"!==c)return void console.warn('A form cannot be enhanced when its target is different from the default value "_self".');e.preventDefault();const l=new URL((null===(o=e.submitter)||void 0===o?void 0:o.getAttribute("formaction"))||s.action,document.baseURI),h={method:a},d=new FormData(s),u=null===(r=e.submitter)||void 0===r?void 0:r.getAttribute("name"),p=e.submitter.getAttribute("value");u&&p&&d.append(u,p);const f=new URLSearchParams(d).toString();if("get"===h.method)l.search=f,history.pushState(null,"",l.toString());else{const t=(null===(i=e.submitter)||void 0===i?void 0:i.getAttribute("formenctype"))||s.enctype;"multipart/form-data"===t?h.body=d:(h.body=f,h.headers={"content-type":t,accept:Ei})}Pi(l.toString(),!1,h)}}async function Pi(e,t,n,o){Ti=!0,null==Ii||Ii.abort(),function(e,t){null==ke||ke(e,t)}(e,t),Ii=new AbortController;const r=Ii.signal,i=fetch(e,Object.assign({signal:r,mode:"no-cors",headers:{accept:Ei}},n));let s=null;if(await async function(e,t,n,o){let r;try{if(r=await e,!r.body)return void n(r,"");const t=r.headers.get("ssr-framing");if(!t){const e=await r.text();return void n(r,e)}let o=!0;await r.body.pipeThrough(new TextDecoderStream).pipeThrough(function(e){let t="";return new TransformStream({transform(n,o){if(t+=n,t.indexOf(e,t.length-n.length-e.length)>=0){const n=t.split(e);n.slice(0,-1).forEach((e=>o.enqueue(e))),t=n[n.length-1]}},flush(e){e.enqueue(t)}})}(`\x3c!--${t}--\x3e`)).pipeTo(new WritableStream({write(e){o?(o=!1,n(r,e)):(e=>{const t=document.createRange().createContextualFragment(e);for(;t.firstChild;)document.body.appendChild(t.firstChild)})(e)}}))}catch(e){if("AbortError"===e.name&&t.aborted)return;throw e}}(i,r,((t,r)=>{const i=!(null==n?void 0:n.method)||"get"===n.method,a=t.status>=200&&t.status<300;if("opaque"===t.type){if(i)return void Li(e);throw new Error("Enhanced navigation does not support making a non-GET request to an endpoint that redirects to an external origin. Avoid enabling enhanced navigation for form posts that may perform external redirections.")}if(a&&"allow"!==t.headers.get("blazor-enhanced-nav")){if(i)return void Li(e);throw new Error("Enhanced navigation does not support making a non-GET request to a non-Blazor endpoint. Avoid enabling enhanced navigation for forms that post to a non-Blazor endpoint.")}(t.redirected||o)&&((o?"get"===o:i)?history.replaceState(null,"",t.url):t.url!==location.href&&history.pushState(null,"",t.url),e=t.url);const c=t.headers.get("blazor-enhanced-nav-redirect-location");if(c)return void location.replace(c);t.redirected||i||!a||(function(e){const t=new URL(e.url),n=new URL(Ri);return t.protocol===n.protocol&&t.host===n.host&&t.port===n.port&&t.pathname===n.pathname}(t)?location.href!==Ri&&history.pushState(null,"",Ri):s=`Cannot perform enhanced form submission that changes the URL (except via a redirection), because then back/forward would not work. Either remove this form's 'action' attribute, or change its method to 'get', or do not mark it as enhanced.\nOld URL: ${location.href}\nNew URL: ${t.url}`),Ri=t.url;const l=t.headers.get("content-type");if((null==l?void 0:l.startsWith("text/html"))&&r){const e=(new DOMParser).parseFromString(r,"text/html");pi(document,e),ki.documentUpdated()}else(null==l?void 0:l.startsWith("text/"))&&r?Ui(r):a||r?i?Li(e):Ui(`Error: ${n.method} request to ${e} returned non-HTML content of type ${l||"unspecified"}.`):Ui(`Error: ${t.status} ${t.statusText}`)})),!r.aborted){const t=e.indexOf("#");if(t>=0){const n=e.substring(t+1),o=document.getElementById(n);null==o||o.scrollIntoView()}if(Ti=!1,ki.enhancedNavigationCompleted(),s)throw new Error(s)}}function Ui(e){document.documentElement.textContent=e;const t=document.documentElement.style;t.fontFamily="consolas, monospace",t.whiteSpace="pre-wrap",t.padding="1rem"}function Li(e){history.replaceState(null,"",e+"?"),location.replace(e)}let Bi,Oi=!0;class Fi extends HTMLElement{connectedCallback(){var e;const t=this.parentNode;null===(e=t.parentNode)||void 0===e||e.removeChild(t),t.childNodes.forEach((e=>{if(e instanceof HTMLTemplateElement){const t=e.getAttribute("blazor-component-id");if(t)"true"!==e.getAttribute("enhanced-nav")&&Ii||function(e,t){const n=function(e){const t=`bl:${e}`,n=document.createNodeIterator(document,NodeFilter.SHOW_COMMENT);let o=null;for(;(o=n.nextNode())&&o.textContent!==t;);if(!o)return null;const r=`/bl:${e}`;let i=null;for(;(i=n.nextNode())&&i.textContent!==r;);return i?{startMarker:o,endMarker:i}:null}(e);if(n){const{startMarker:e,endMarker:o}=n;if(Oi)pi({startExclusive:e,endExclusive:o},t);else{const n=o.parentNode,r=new Range;for(r.setStart(e,e.textContent.length),r.setEnd(o,0),r.deleteContents();t.childNodes[0];)n.insertBefore(t.childNodes[0],o)}Bi.documentUpdated()}}(t,e.content);else switch(e.getAttribute("type")){case"redirection":const t=Le(e.content.textContent),n="form-post"===e.getAttribute("from");"true"===e.getAttribute("enhanced")&&Me(t)?Pi(t,!1,void 0,n?"post":"get"):n?t!==location.href&&location.assign(t):location.replace(t);break;case"error":Ui(e.content.textContent||"Error")}}}))}}class $i{constructor(e){var t;this._circuitInactivityTimeoutMs=e,this._rootComponentsBySsrComponentId=new Map,this._seenDescriptors=new Set,this._pendingOperationBatches={},this._nextOperationBatchId=1,this._nextSsrComponentId=1,this._didWebAssemblyFailToLoadQuickly=!1,this._isComponentRefreshPending=!1,this.initialComponents=[],t=()=>{this.rootComponentsMayRequireRefresh()},E.push(t)}onAfterRenderBatch(e){e===Ln.Server&&this.circuitMayHaveNoRootComponents()}onDocumentUpdated(){this.rootComponentsMayRequireRefresh()}onEnhancedNavigationCompleted(){this.rootComponentsMayRequireRefresh()}registerComponent(e){if(this._seenDescriptors.has(e))return;"auto"!==e.type&&"webassembly"!==e.type||this.startLoadingWebAssemblyIfNotStarted();const t=this._nextSsrComponentId++;this._seenDescriptors.add(e),this._rootComponentsBySsrComponentId.set(t,{descriptor:e,ssrComponentId:t})}unregisterComponent(e){this._seenDescriptors.delete(e.descriptor),this._rootComponentsBySsrComponentId.delete(e.ssrComponentId),this.circuitMayHaveNoRootComponents()}async startLoadingWebAssemblyIfNotStarted(){if(void 0!==Hr)return;Kr=!0;const e=ei();setTimeout((()=>{ti()||this.onWebAssemblyFailedToLoadQuickly()}),mt._internal.loadWebAssemblyQuicklyTimeout);const t=await Vr;(function(e){if(!e.cacheBootResources)return!1;const t=Hi(e);if(!t)return!1;const n=window.localStorage.getItem(t.key);return t.value===n})(t)||this.onWebAssemblyFailedToLoadQuickly(),await e,function(e){const t=Hi(e);t&&window.localStorage.setItem(t.key,t.value)}(t),this.rootComponentsMayRequireRefresh()}onWebAssemblyFailedToLoadQuickly(){this._didWebAssemblyFailToLoadQuickly||(this._didWebAssemblyFailToLoadQuickly=!0,this.rootComponentsMayRequireRefresh())}startCircutIfNotStarted(){return void 0===Go?er(this):!Ko||Ko.isDisposedOrDisposing()?nr():void 0}async startWebAssemblyIfNotStarted(){this.startLoadingWebAssemblyIfNotStarted(),void 0===Wr&&await Qr(this)}rootComponentsMayRequireRefresh(){this._isComponentRefreshPending||(this._isComponentRefreshPending=!0,setTimeout((()=>{this._isComponentRefreshPending=!1,this.refreshRootComponents(this._rootComponentsBySsrComponentId.values())}),0))}circuitMayHaveNoRootComponents(){if(this.rendererHasExistingOrPendingComponents(Ln.Server,"server","auto"))return clearTimeout(this._circuitInactivityTimeoutId),void(this._circuitInactivityTimeoutId=void 0);void 0===this._circuitInactivityTimeoutId&&(this._circuitInactivityTimeoutId=setTimeout((()=>{this.rendererHasExistingOrPendingComponents(Ln.Server,"server","auto")||(async function(){await(null==Ko?void 0:Ko.dispose())}(),this._circuitInactivityTimeoutId=void 0)}),this._circuitInactivityTimeoutMs))}rendererHasComponents(e){const t=De(e);return void 0!==t&&t.getRootComponentCount()>0}rendererHasExistingOrPendingComponents(e,...t){if(this.rendererHasComponents(e))return!0;for(const{descriptor:{type:n},assignedRendererId:o}of this._rootComponentsBySsrComponentId.values()){if(o===e)return!0;if(void 0===o&&-1!==t.indexOf(n))return!0}return!1}refreshRootComponents(e){const t=new Map;for(const n of e){const e=this.determinePendingOperation(n);if(!e)continue;const o=n.assignedRendererId;if(!o)throw new Error("Descriptors must be assigned a renderer ID before getting used as root components");let r=t.get(o);r||(r=[],t.set(o,r)),r.push(e)}for(const[e,n]of t){const t={batchId:this._nextOperationBatchId++,operations:n};this._pendingOperationBatches[t.batchId]=t;const o=JSON.stringify(t);e===Ln.Server?or(o):this.updateWebAssemblyRootComponents(o)}}updateWebAssemblyRootComponents(e){Jr?(Xr(e),Jr=!1):function(e){if(!Wr)throw new Error("Blazor WebAssembly has not started.");if(!mt._internal.updateRootComponents)throw new Error("Blazor WebAssembly has not initialized.");qr?mt._internal.updateRootComponents(e):async function(e){if(await Wr,!mt._internal.updateRootComponents)throw new Error("Blazor WebAssembly has not initialized.");mt._internal.updateRootComponents(e)}(e)}(e)}resolveRendererIdForDescriptor(e){switch("auto"===e.type?this.getAutoRenderMode():e.type){case"server":return this.startCircutIfNotStarted(),Ln.Server;case"webassembly":return this.startWebAssemblyIfNotStarted(),Ln.WebAssembly;case null:return null}}getAutoRenderMode(){return this.rendererHasExistingOrPendingComponents(Ln.WebAssembly,"webassembly")?"webassembly":this.rendererHasExistingOrPendingComponents(Ln.Server,"server")?"server":ti()?"webassembly":this._didWebAssemblyFailToLoadQuickly?"server":null}determinePendingOperation(e){if(t=e.descriptor,document.contains(t.start)){if(void 0===e.assignedRendererId){if(Ti||"loading"===document.readyState)return null;const t=this.resolveRendererIdForDescriptor(e.descriptor);return null===t?null:T(t)?(be(e.descriptor.start,!0),e.assignedRendererId=t,e.uniqueIdAtLastUpdate=e.descriptor.uniqueId,{type:"add",ssrComponentId:e.ssrComponentId,marker:Pt(e.descriptor)}):null}return T(e.assignedRendererId)?e.uniqueIdAtLastUpdate===e.descriptor.uniqueId?null:(e.uniqueIdAtLastUpdate=e.descriptor.uniqueId,{type:"update",ssrComponentId:e.ssrComponentId,marker:Pt(e.descriptor)}):null}return e.hasPendingRemoveOperation?null:void 0===e.assignedRendererId?(this.unregisterComponent(e),null):T(e.assignedRendererId)?(be(e.descriptor.start,!1),e.hasPendingRemoveOperation=!0,{type:"remove",ssrComponentId:e.ssrComponentId}):null;var t}resolveRootComponent(e){const t=this._rootComponentsBySsrComponentId.get(e);if(!t)throw new Error(`Could not resolve a root component with SSR component ID '${e}'.`);return t.descriptor}onAfterUpdateRootComponents(e){const t=this._pendingOperationBatches[e];delete this._pendingOperationBatches[e];for(const e of t.operations)switch(e.type){case"remove":{const t=this._rootComponentsBySsrComponentId.get(e.ssrComponentId);t&&this.unregisterComponent(t);break}}}}function Hi(e){var t;const n=null===(t=e.resources)||void 0===t?void 0:t.hash,o=e.mainAssemblyName;return n&&o?{key:`blazor-resource-hash:${o}`,value:n}:null}class Wi{constructor(){this._eventListeners=new Map}static create(e){const t=new Wi;return e.addEventListener=t.addEventListener.bind(t),e.removeEventListener=t.removeEventListener.bind(t),t}addEventListener(e,t){let n=this._eventListeners.get(e);n||(n=new Set,this._eventListeners.set(e,n)),n.add(t)}removeEventListener(e,t){var n;null===(n=this._eventListeners.get(e))||void 0===n||n.delete(t)}dispatchEvent(e,t){const n=this._eventListeners.get(e);if(!n)return;const o={...t,type:e};for(const e of n)e(o)}}let ji,zi=!1;function qi(e){var t,n,o,r;if(zi)throw new Error("Blazor has already started.");zi=!0,null!==(t=(e=e||{}).logLevel)&&void 0!==t||(e.logLevel=vt.Error),mt._internal.loadWebAssemblyQuicklyTimeout=3e3,mt._internal.isBlazorWeb=!0,mt._internal.hotReloadApplied=()=>{Pe()&&Ue(location.href,!0)},ji=new $i(null!==(o=null===(n=null==e?void 0:e.ssr)||void 0===n?void 0:n.circuitInactivityTimeoutMs)&&void 0!==o?o:2e3);const i=Wi.create(mt),s={documentUpdated:()=>{ji.onDocumentUpdated(),i.dispatchEvent("enhancedload",{})},enhancedNavigationCompleted(){ji.onEnhancedNavigationCompleted()}};return ui=ji,function(e,t){Bi=t,(null==e?void 0:e.disableDomPreservation)&&(Oi=!1),customElements.define("blazor-ssr-end",Fi)}(null==e?void 0:e.ssr,s),(null===(r=null==e?void 0:e.ssr)||void 0===r?void 0:r.disableDomPreservation)||Ai(s),"loading"===document.readyState?document.addEventListener("DOMContentLoaded",Ji.bind(null,e)):Ji(e),Promise.resolve()}function Ji(e){const t=Oo((null==e?void 0:e.circuit)||{});e.circuit=t;const n=async function(e,t){var n;const o=It(document,Ct,"initializers");if(!o)return new zo(!1,t);const r=null!==(n=JSON.parse(atob(o)))&&void 0!==n?n:[],i=new zo(!1,t);return await i.importInitializersAsync(r,[e]),i}(e,new wt(t.logLevel));Zo(Ki(n,t)),function(e){if(Fr)throw new Error("WebAssembly options have already been configured.");!async function(e){const t=await e;Fr=t,Yr()}(e)}(Ki(n,(null==e?void 0:e.webAssembly)||{})),function(e){const t=wi(document);for(const e of t)null==ui||ui.registerComponent(e)}(),ji.onDocumentUpdated(),async function(e){const t=await e;await t.invokeAfterStartedCallbacks(mt)}(n)}async function Ki(e,t){return await e,t}mt.start=qi,window.DotNet=e,document&&document.currentScript&&"false"!==document.currentScript.getAttribute("autostart")&&qi()})()})(); \ No newline at end of file diff --git a/src/Components/Web.JS/dist/Release/blazor.webview.js b/src/Components/Web.JS/dist/Release/blazor.webview.js index dc5b70f9e1f4..cf7436dfd197 100644 --- a/src/Components/Web.JS/dist/Release/blazor.webview.js +++ b/src/Components/Web.JS/dist/Release/blazor.webview.js @@ -1 +1 @@ -(()=>{"use strict";var e,t,n,r={d:(e,t)=>{for(var n in t)r.o(t,n)&&!r.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t)};r.d({},{e:()=>Ot}),function(e){const t=[],n="__jsObjectId",r="__dotNetObject",o="__byte[]",a="__dotNetStream",i="__jsStreamReferenceLength";let s,c;class l{constructor(e){this._jsObject=e,this._cachedFunctions=new Map}findFunction(e){const t=this._cachedFunctions.get(e);if(t)return t;let n,r=this._jsObject;if(e.split(".").forEach((t=>{if(!(t in r))throw new Error(`Could not find '${e}' ('${t}' was undefined).`);n=r,r=r[t]})),r instanceof Function)return r=r.bind(n),this._cachedFunctions.set(e,r),r;throw new Error(`The value '${e}' is not a function.`)}getWrappedObject(){return this._jsObject}}const u={0:new l(window)};u[0]._cachedFunctions.set("import",(e=>("string"==typeof e&&e.startsWith("./")&&(e=new URL(e.substr(2),document.baseURI).toString()),import(e))));let d,h=1;function f(e){t.push(e)}function m(e){if(e&&"object"==typeof e){u[h]=new l(e);const t={[n]:h};return h++,t}throw new Error(`Cannot create a JSObjectReference from the value '${e}'.`)}function p(e){let t=-1;if(e instanceof ArrayBuffer&&(e=new Uint8Array(e)),e instanceof Blob)t=e.size;else{if(!(e.buffer instanceof ArrayBuffer))throw new Error("Supplied value is not a typed array or blob.");if(void 0===e.byteLength)throw new Error(`Cannot create a JSStreamReference from the value '${e}' as it doesn't have a byteLength.`);t=e.byteLength}const r={[i]:t};try{const t=m(e);r[n]=t[n]}catch(t){throw new Error(`Cannot create a JSStreamReference from the value '${e}'.`)}return r}function b(e,n){c=e;const r=n?JSON.parse(n,((e,n)=>t.reduce(((t,n)=>n(e,t)),n))):null;return c=void 0,r}function v(){if(void 0===s)throw new Error("No call dispatcher has been set.");if(null===s)throw new Error("There are multiple .NET runtimes present, so a default dispatcher could not be resolved. Use DotNetObject to invoke .NET instance methods.");return s}e.attachDispatcher=function(e){const t=new g(e);return void 0===s?s=t:s&&(s=null),t},e.attachReviver=f,e.invokeMethod=function(e,t,...n){return v().invokeDotNetStaticMethod(e,t,...n)},e.invokeMethodAsync=function(e,t,...n){return v().invokeDotNetStaticMethodAsync(e,t,...n)},e.createJSObjectReference=m,e.createJSStreamReference=p,e.disposeJSObjectReference=function(e){const t=e&&e[n];"number"==typeof t&&E(t)},function(e){e[e.Default=0]="Default",e[e.JSObjectReference=1]="JSObjectReference",e[e.JSStreamReference=2]="JSStreamReference",e[e.JSVoidResult=3]="JSVoidResult"}(d=e.JSCallResultType||(e.JSCallResultType={}));class g{constructor(e){this._dotNetCallDispatcher=e,this._byteArraysToBeRevived=new Map,this._pendingDotNetToJSStreams=new Map,this._pendingAsyncCalls={},this._nextAsyncCallId=1}getDotNetCallDispatcher(){return this._dotNetCallDispatcher}invokeJSFromDotNet(e,t,n,r){const o=b(this,t),a=D(w(e,r)(...o||[]),n);return null==a?null:N(this,a)}beginInvokeJSFromDotNet(e,t,n,r,o){const a=new Promise((e=>{const r=b(this,n);e(w(t,o)(...r||[]))}));e&&a.then((t=>N(this,[e,!0,D(t,r)]))).then((t=>this._dotNetCallDispatcher.endInvokeJSFromDotNet(e,!0,t)),(t=>this._dotNetCallDispatcher.endInvokeJSFromDotNet(e,!1,JSON.stringify([e,!1,y(t)]))))}endInvokeDotNetFromJS(e,t,n){const r=t?b(this,n):new Error(n);this.completePendingCall(parseInt(e,10),t,r)}invokeDotNetStaticMethod(e,t,...n){return this.invokeDotNetMethod(e,t,null,n)}invokeDotNetStaticMethodAsync(e,t,...n){return this.invokeDotNetMethodAsync(e,t,null,n)}invokeDotNetMethod(e,t,n,r){if(this._dotNetCallDispatcher.invokeDotNetFromJS){const o=N(this,r),a=this._dotNetCallDispatcher.invokeDotNetFromJS(e,t,n,o);return a?b(this,a):null}throw new Error("The current dispatcher does not support synchronous calls from JS to .NET. Use invokeDotNetMethodAsync instead.")}invokeDotNetMethodAsync(e,t,n,r){if(e&&n)throw new Error(`For instance method calls, assemblyName should be null. Received '${e}'.`);const o=this._nextAsyncCallId++,a=new Promise(((e,t)=>{this._pendingAsyncCalls[o]={resolve:e,reject:t}}));try{const a=N(this,r);this._dotNetCallDispatcher.beginInvokeDotNetFromJS(o,e,t,n,a)}catch(e){this.completePendingCall(o,!1,e)}return a}receiveByteArray(e,t){this._byteArraysToBeRevived.set(e,t)}processByteArray(e){const t=this._byteArraysToBeRevived.get(e);return t?(this._byteArraysToBeRevived.delete(e),t):null}supplyDotNetStream(e,t){if(this._pendingDotNetToJSStreams.has(e)){const n=this._pendingDotNetToJSStreams.get(e);this._pendingDotNetToJSStreams.delete(e),n.resolve(t)}else{const n=new C;n.resolve(t),this._pendingDotNetToJSStreams.set(e,n)}}getDotNetStreamPromise(e){let t;if(this._pendingDotNetToJSStreams.has(e))t=this._pendingDotNetToJSStreams.get(e).streamPromise,this._pendingDotNetToJSStreams.delete(e);else{const n=new C;this._pendingDotNetToJSStreams.set(e,n),t=n.streamPromise}return t}completePendingCall(e,t,n){if(!this._pendingAsyncCalls.hasOwnProperty(e))throw new Error(`There is no pending async call with ID ${e}.`);const r=this._pendingAsyncCalls[e];delete this._pendingAsyncCalls[e],t?r.resolve(n):r.reject(n)}}function y(e){return e instanceof Error?`${e.message}\n${e.stack}`:e?e.toString():"null"}function w(e,t){const n=u[t];if(n)return n.findFunction(e);throw new Error(`JS object instance with ID ${t} does not exist (has it been disposed?).`)}function E(e){delete u[e]}e.findJSFunction=w,e.disposeJSObjectReferenceById=E;class S{constructor(e,t){this._id=e,this._callDispatcher=t}invokeMethod(e,...t){return this._callDispatcher.invokeDotNetMethod(null,e,this._id,t)}invokeMethodAsync(e,...t){return this._callDispatcher.invokeDotNetMethodAsync(null,e,this._id,t)}dispose(){this._callDispatcher.invokeDotNetMethodAsync(null,"__Dispose",this._id,null).catch((e=>console.error(e)))}serializeAsArg(){return{[r]:this._id}}}e.DotNetObject=S,f((function(e,t){if(t&&"object"==typeof t){if(t.hasOwnProperty(r))return new S(t[r],c);if(t.hasOwnProperty(n)){const e=t[n],r=u[e];if(r)return r.getWrappedObject();throw new Error(`JS object instance with Id '${e}' does not exist. It may have been disposed.`)}if(t.hasOwnProperty(o)){const e=t[o],n=c.processByteArray(e);if(void 0===n)throw new Error(`Byte array index '${e}' does not exist.`);return n}if(t.hasOwnProperty(a)){const e=t[a],n=c.getDotNetStreamPromise(e);return new I(n)}}return t}));class I{constructor(e){this._streamPromise=e}stream(){return this._streamPromise}async arrayBuffer(){return new Response(await this.stream()).arrayBuffer()}}class C{constructor(){this.streamPromise=new Promise(((e,t)=>{this.resolve=e,this.reject=t}))}}function D(e,t){switch(t){case d.Default:return e;case d.JSObjectReference:return m(e);case d.JSStreamReference:return p(e);case d.JSVoidResult:return null;default:throw new Error(`Invalid JS call result type '${t}'.`)}}let A=0;function N(e,t){A=0,c=e;const n=JSON.stringify(t,k);return c=void 0,n}function k(e,t){if(t instanceof S)return t.serializeAsArg();if(t instanceof Uint8Array){c.getDotNetCallDispatcher().sendByteArray(A,t);const e={[o]:A};return A++,e}return t}}(e||(e={})),function(e){e[e.prependFrame=1]="prependFrame",e[e.removeFrame=2]="removeFrame",e[e.setAttribute=3]="setAttribute",e[e.removeAttribute=4]="removeAttribute",e[e.updateText=5]="updateText",e[e.stepIn=6]="stepIn",e[e.stepOut=7]="stepOut",e[e.updateMarkup=8]="updateMarkup",e[e.permutationListEntry=9]="permutationListEntry",e[e.permutationListEnd=10]="permutationListEnd"}(t||(t={})),function(e){e[e.element=1]="element",e[e.text=2]="text",e[e.attribute=3]="attribute",e[e.component=4]="component",e[e.region=5]="region",e[e.elementReferenceCapture=6]="elementReferenceCapture",e[e.markup=8]="markup",e[e.namedEvent=10]="namedEvent"}(n||(n={}));class o{constructor(e,t){this.componentId=e,this.fieldValue=t}static fromEvent(e,t){const n=t.target;if(n instanceof Element){const t=function(e){return e instanceof HTMLInputElement?e.type&&"checkbox"===e.type.toLowerCase()?{value:e.checked}:{value:e.value}:e instanceof HTMLSelectElement||e instanceof HTMLTextAreaElement?{value:e.value}:null}(n);if(t)return new o(e,t.value)}return null}}const a=new Map,i=new Map,s=[];function c(e){return a.get(e)}function l(e){const t=a.get(e);return(null==t?void 0:t.browserEventName)||e}function u(e,t){e.forEach((e=>a.set(e,t)))}function d(e){const t=[];for(let n=0;ne.selected)).map((e=>e.value))}}{const e=function(e){return!!e&&"INPUT"===e.tagName&&"checkbox"===e.getAttribute("type")}(t);return{value:e?!!t.checked:t.value}}}}),u(["copy","cut","paste"],{createEventArgs:e=>({type:e.type})}),u(["drag","dragend","dragenter","dragleave","dragover","dragstart","drop"],{createEventArgs:e=>{return{...h(t=e),dataTransfer:t.dataTransfer?{dropEffect:t.dataTransfer.dropEffect,effectAllowed:t.dataTransfer.effectAllowed,files:Array.from(t.dataTransfer.files).map((e=>e.name)),items:Array.from(t.dataTransfer.items).map((e=>({kind:e.kind,type:e.type}))),types:t.dataTransfer.types}:null};var t}}),u(["focus","blur","focusin","focusout"],{createEventArgs:e=>({type:e.type})}),u(["keydown","keyup","keypress"],{createEventArgs:e=>{return{key:(t=e).key,code:t.code,location:t.location,repeat:t.repeat,ctrlKey:t.ctrlKey,shiftKey:t.shiftKey,altKey:t.altKey,metaKey:t.metaKey,type:t.type};var t}}),u(["contextmenu","click","mouseover","mouseout","mousemove","mousedown","mouseup","mouseleave","mouseenter","dblclick"],{createEventArgs:e=>h(e)}),u(["error"],{createEventArgs:e=>{return{message:(t=e).message,filename:t.filename,lineno:t.lineno,colno:t.colno,type:t.type};var t}}),u(["loadstart","timeout","abort","load","loadend","progress"],{createEventArgs:e=>{return{lengthComputable:(t=e).lengthComputable,loaded:t.loaded,total:t.total,type:t.type};var t}}),u(["touchcancel","touchend","touchmove","touchenter","touchleave","touchstart"],{createEventArgs:e=>{return{detail:(t=e).detail,touches:d(t.touches),targetTouches:d(t.targetTouches),changedTouches:d(t.changedTouches),ctrlKey:t.ctrlKey,shiftKey:t.shiftKey,altKey:t.altKey,metaKey:t.metaKey,type:t.type};var t}}),u(["gotpointercapture","lostpointercapture","pointercancel","pointerdown","pointerenter","pointerleave","pointermove","pointerout","pointerover","pointerup"],{createEventArgs:e=>{return{...h(t=e),pointerId:t.pointerId,width:t.width,height:t.height,pressure:t.pressure,tiltX:t.tiltX,tiltY:t.tiltY,pointerType:t.pointerType,isPrimary:t.isPrimary};var t}}),u(["wheel","mousewheel"],{createEventArgs:e=>{return{...h(t=e),deltaX:t.deltaX,deltaY:t.deltaY,deltaZ:t.deltaZ,deltaMode:t.deltaMode};var t}}),u(["cancel","close","toggle"],{createEventArgs:()=>({})});const f=["date","datetime-local","month","time","week"],m=new Map;let p,b,v=0;const g={async add(e,t,n){if(!n)throw new Error("initialParameters must be an object, even if empty.");const r="__bl-dynamic-root:"+(++v).toString();m.set(r,e);const o=await E().invokeMethodAsync("AddRootComponent",t,r),a=new w(o,b[t]);return await a.setParameters(n),a}};class y{invoke(e){return this._callback(e)}setCallback(t){this._selfJSObjectReference||(this._selfJSObjectReference=e.createJSObjectReference(this)),this._callback=t}getJSObjectReference(){return this._selfJSObjectReference}dispose(){this._selfJSObjectReference&&e.disposeJSObjectReference(this._selfJSObjectReference)}}class w{constructor(e,t){this._jsEventCallbackWrappers=new Map,this._componentId=e;for(const e of t)"eventcallback"===e.type&&this._jsEventCallbackWrappers.set(e.name.toLowerCase(),new y)}setParameters(e){const t={},n=Object.entries(e||{}),r=n.length;for(const[e,r]of n){const n=this._jsEventCallbackWrappers.get(e.toLowerCase());n&&r?(n.setCallback(r),t[e]=n.getJSObjectReference()):t[e]=r}return E().invokeMethodAsync("SetRootComponentParameters",this._componentId,r,t)}async dispose(){if(null!==this._componentId){await E().invokeMethodAsync("RemoveRootComponent",this._componentId),this._componentId=null;for(const e of this._jsEventCallbackWrappers.values())e.dispose()}}}function E(){if(!p)throw new Error("Dynamic root components have not been enabled in this application.");return p}const S=new Map,I=[],C=new Map;function D(e,t,n){return N(e,t.eventHandlerId,(()=>A(e).invokeMethodAsync("DispatchEventAsync",t,n)))}function A(e){const t=S.get(e);if(!t)throw new Error(`No interop methods are registered for renderer ${e}`);return t}let N=(e,t,n)=>n();const k=x(["abort","blur","cancel","canplay","canplaythrough","change","close","cuechange","durationchange","emptied","ended","error","focus","load","loadeddata","loadedmetadata","loadend","loadstart","mouseenter","mouseleave","pointerenter","pointerleave","pause","play","playing","progress","ratechange","reset","scroll","seeked","seeking","stalled","submit","suspend","timeupdate","toggle","unload","volumechange","waiting","DOMNodeInsertedIntoDocument","DOMNodeRemovedFromDocument"]),R={submit:!0},T=x(["click","dblclick","mousedown","mousemove","mouseup"]);class _{constructor(e){this.browserRendererId=e,this.afterClickCallbacks=[];const t=++_.nextEventDelegatorId;this.eventsCollectionKey=`_blazorEvents_${t}`,this.eventInfoStore=new O(this.onGlobalEvent.bind(this))}setListener(e,t,n,r){const o=this.getEventHandlerInfosForElement(e,!0),a=o.getHandler(t);if(a)this.eventInfoStore.update(a.eventHandlerId,n);else{const a={element:e,eventName:t,eventHandlerId:n,renderingComponentId:r};this.eventInfoStore.add(a),o.setHandler(t,a)}}getHandler(e){return this.eventInfoStore.get(e)}removeListener(e){const t=this.eventInfoStore.remove(e);if(t){const e=t.element,n=this.getEventHandlerInfosForElement(e,!1);n&&n.removeHandler(t.eventName)}}notifyAfterClick(e){this.afterClickCallbacks.push(e),this.eventInfoStore.addGlobalListener("click")}setStopPropagation(e,t,n){this.getEventHandlerInfosForElement(e,!0).stopPropagation(t,n)}setPreventDefault(e,t,n){this.getEventHandlerInfosForElement(e,!0).preventDefault(t,n)}onGlobalEvent(e){if(!(e.target instanceof Element))return;this.dispatchGlobalEventToAllElements(e.type,e);const t=(n=e.type,i.get(n));var n;t&&t.forEach((t=>this.dispatchGlobalEventToAllElements(t,e))),"click"===e.type&&this.afterClickCallbacks.forEach((t=>t(e)))}dispatchGlobalEventToAllElements(e,t){const n=t.composedPath();let r=n.shift(),a=null,i=!1;const s=Object.prototype.hasOwnProperty.call(k,e);let l=!1;for(;r;){const h=r,f=this.getEventHandlerInfosForElement(h,!1);if(f){const n=f.getHandler(e);if(n&&(u=h,d=t.type,!((u instanceof HTMLButtonElement||u instanceof HTMLInputElement||u instanceof HTMLTextAreaElement||u instanceof HTMLSelectElement)&&Object.prototype.hasOwnProperty.call(T,d)&&u.disabled))){if(!i){const n=c(e);a=(null==n?void 0:n.createEventArgs)?n.createEventArgs(t):{},i=!0}Object.prototype.hasOwnProperty.call(R,t.type)&&t.preventDefault(),D(this.browserRendererId,{eventHandlerId:n.eventHandlerId,eventName:e,eventFieldInfo:o.fromEvent(n.renderingComponentId,t)},a)}f.stopPropagation(e)&&(l=!0),f.preventDefault(e)&&t.preventDefault()}r=s||l?void 0:n.shift()}var u,d}getEventHandlerInfosForElement(e,t){return Object.prototype.hasOwnProperty.call(e,this.eventsCollectionKey)?e[this.eventsCollectionKey]:t?e[this.eventsCollectionKey]=new L:null}}_.nextEventDelegatorId=0;class O{constructor(e){this.globalListener=e,this.infosByEventHandlerId={},this.countByEventName={},s.push(this.handleEventNameAliasAdded.bind(this))}add(e){if(this.infosByEventHandlerId[e.eventHandlerId])throw new Error(`Event ${e.eventHandlerId} is already tracked`);this.infosByEventHandlerId[e.eventHandlerId]=e,this.addGlobalListener(e.eventName)}get(e){return this.infosByEventHandlerId[e]}addGlobalListener(e){if(e=l(e),Object.prototype.hasOwnProperty.call(this.countByEventName,e))this.countByEventName[e]++;else{this.countByEventName[e]=1;const t=Object.prototype.hasOwnProperty.call(k,e);document.addEventListener(e,this.globalListener,t)}}update(e,t){if(Object.prototype.hasOwnProperty.call(this.infosByEventHandlerId,t))throw new Error(`Event ${t} is already tracked`);const n=this.infosByEventHandlerId[e];delete this.infosByEventHandlerId[e],n.eventHandlerId=t,this.infosByEventHandlerId[t]=n}remove(e){const t=this.infosByEventHandlerId[e];if(t){delete this.infosByEventHandlerId[e];const n=l(t.eventName);0==--this.countByEventName[n]&&(delete this.countByEventName[n],document.removeEventListener(n,this.globalListener))}return t}handleEventNameAliasAdded(e,t){if(Object.prototype.hasOwnProperty.call(this.countByEventName,e)){const n=this.countByEventName[e];delete this.countByEventName[e],document.removeEventListener(e,this.globalListener),this.addGlobalListener(t),this.countByEventName[t]+=n-1}}}class L{constructor(){this.handlers={},this.preventDefaultFlags=null,this.stopPropagationFlags=null}getHandler(e){return Object.prototype.hasOwnProperty.call(this.handlers,e)?this.handlers[e]:null}setHandler(e,t){this.handlers[e]=t}removeHandler(e){delete this.handlers[e]}preventDefault(e,t){return void 0!==t&&(this.preventDefaultFlags=this.preventDefaultFlags||{},this.preventDefaultFlags[e]=t),!!this.preventDefaultFlags&&this.preventDefaultFlags[e]}stopPropagation(e,t){return void 0!==t&&(this.stopPropagationFlags=this.stopPropagationFlags||{},this.stopPropagationFlags[e]=t),!!this.stopPropagationFlags&&this.stopPropagationFlags[e]}}function x(e){const t={};return e.forEach((e=>{t[e]=!0})),t}const F=Symbol(),M=Symbol();function P(e,t){if(F in e)return e;const n=[];if(e.childNodes.length>0){if(!t)throw new Error("New logical elements must start empty, or allowExistingContents must be true");e.childNodes.forEach((t=>{const r=P(t,!0);r[M]=e,n.push(r)}))}return e[F]=n,e}function B(e){const t=W(e);for(;t.length;)J(e,0)}function j(e,t){const n=document.createComment("!");return H(n,e,t),n}function H(e,t,n){const r=e;let o=e;if(e instanceof Comment){const t=W(r);if((null==t?void 0:t.length)>0){const t=G(r),n=new Range;n.setStartBefore(e),n.setEndAfter(t),o=n.extractContents()}}const a=U(r);if(a){const e=W(a),t=Array.prototype.indexOf.call(e,r);e.splice(t,1),delete r[M]}const i=W(t);if(n0;)J(n,0)}const r=n;r.parentNode.removeChild(r)}function U(e){return e[M]||null}function z(e,t){return W(e)[t]}function $(e){const t=X(e);return"http://www.w3.org/2000/svg"===t.namespaceURI&&"foreignObject"!==t.tagName}function W(e){return e[F]}function K(e){const t=W(U(e));return t[Array.prototype.indexOf.call(t,e)+1]||null}function V(e,t){const n=W(e);t.forEach((e=>{e.moveRangeStart=n[e.fromSiblingIndex],e.moveRangeEnd=G(e.moveRangeStart)})),t.forEach((t=>{const r=document.createComment("marker");t.moveToBeforeMarker=r;const o=n[t.toSiblingIndex+1];o?o.parentNode.insertBefore(r,o):Y(r,e)})),t.forEach((e=>{const t=e.moveToBeforeMarker,n=t.parentNode,r=e.moveRangeStart,o=e.moveRangeEnd;let a=r;for(;a;){const e=a.nextSibling;if(n.insertBefore(a,t),a===o)break;a=e}n.removeChild(t)})),t.forEach((e=>{n[e.toSiblingIndex]=e.moveRangeStart}))}function X(e){if(e instanceof Element||e instanceof DocumentFragment)return e;if(e instanceof Comment)return e.parentNode;throw new Error("Not a valid logical element")}function Y(e,t){if(t instanceof Element||t instanceof DocumentFragment)t.appendChild(e);else{if(!(t instanceof Comment))throw new Error(`Cannot append node because the parent is not a valid logical element. Parent: ${t}`);{const n=K(t);n?n.parentNode.insertBefore(e,n):Y(e,U(t))}}}function G(e){if(e instanceof Element||e instanceof DocumentFragment)return e;const t=K(e);if(t)return t.previousSibling;{const t=U(e);return t instanceof Element||t instanceof DocumentFragment?t.lastChild:G(t)}}function q(e){return`_bl_${e}`}Symbol();const Z="__internalId";e.attachReviver(((e,t)=>t&&"object"==typeof t&&Object.prototype.hasOwnProperty.call(t,Z)&&"string"==typeof t[Z]?function(e){const t=`[${q(e)}]`;return document.querySelector(t)}(t[Z]):t));const Q="_blazorDeferredValue";function ee(e){return"select-multiple"===e.type}function te(e,t){e.value=t||""}function ne(e,t){e instanceof HTMLSelectElement?ee(e)?function(e,t){t||(t=[]);for(let n=0;n{Ce()&&function(e,t){if(0!==e.button||function(e){return e.ctrlKey||e.shiftKey||e.altKey||e.metaKey}(e))return;if(e.defaultPrevented)return;const n=function(e){const t=!window._blazorDisableComposedPath&&e.composedPath&&e.composedPath();if(t){for(let e=0;e{const t=document.createElement("script");t.textContent=e.textContent,e.getAttributeNames().forEach((n=>{t.setAttribute(n,e.getAttribute(n))})),e.parentNode.replaceChild(t,e)})),oe.content));var i;let s=0;for(;a.firstChild;)H(a.firstChild,o,s++)}applyAttribute(e,t,n,r){const o=e.frameReader,a=o.attributeName(r),i=o.attributeEventHandlerId(r);if(i){const e=he(a);return void this.eventDelegator.setListener(n,e,i,t)}const s=o.attributeValue(r);this.setOrRemoveAttributeOrProperty(n,a,s)}insertFrameRange(e,t,n,r,o,a,i){const s=r;for(let s=a;s{He(t,e)})},enableNavigationInterception:function(e){if(void 0!==me&&me!==e)throw new Error("Only one interactive runtime may enable navigation interception at a time.");me=e},setHasLocationChangingListeners:function(e,t){const n=Re.get(e);if(!n)throw new Error(`Renderer with ID '${e}' is not listening for navigation events`);n.hasLocationChangingEventListeners=t},endLocationChanging:function(e,t){_e&&e===ke&&(_e(t),_e=null)},navigateTo:function(e,t){xe(e,t,!0)},refresh:function(e){!e&&we()?Ee(location.href,!0):location.reload()},getBaseURI:()=>document.baseURI,getLocationHref:()=>location.href,scrollToElement:Le};function Le(e){const t=document.getElementById(e);return!!t&&(t.scrollIntoView(),!0)}function xe(e,t,n=!1){const r=Se(e),o=ze();if(t.forceLoad||!ye(r)||"serverside-fullpageload"===o)!function(e,t){if(location.href===e){const t=e+"?";history.replaceState(null,"",t),location.replace(e)}else t?location.replace(e):location.href=e}(e,t.replaceHistoryEntry);else if("clientside-router"===o)Fe(r,!1,t.replaceHistoryEntry,t.historyEntryState,n);else{if("serverside-enhanced"!==o)throw new Error(`Unsupported page load mechanism: ${o}`);Ee(r,t.replaceHistoryEntry)}}async function Fe(e,t,n,r=void 0,o=!1){if(Be(),function(e){const t=e.indexOf("#");return t>-1&&location.href.replace(location.hash,"")===e.substring(0,t)}(e))return void function(e,t,n){Me(e,t,n);const r=e.indexOf("#");r!==e.length-1&&Le(e.substring(r+1))}(e,n,r);const a=Ue();(o||!(null==a?void 0:a.hasLocationChangingEventListeners)||await je(e,r,t,a))&&(ge=!0,Me(e,n,r),await He(t))}function Me(e,t,n=void 0){t?history.replaceState({userState:n,_index:Ne},"",e):(Ne++,history.pushState({userState:n,_index:Ne},"",e))}function Pe(e){return new Promise((t=>{const n=Te;Te=()=>{Te=n,t()},history.go(e)}))}function Be(){_e&&(_e(!1),_e=null)}function je(e,t,n,r){return new Promise((o=>{Be(),ke++,_e=o,r.locationChanging(ke,e,t,n)}))}async function He(e,t){const n=null!=t?t:location.href;await Promise.all(Array.from(Re,(async([t,r])=>{var o,a;a=t,S.has(a)&&await r.locationChanged(n,null===(o=history.state)||void 0===o?void 0:o.userState,e)})))}async function Je(e){var t,n;Te&&"serverside-enhanced"!==ze()&&await Te(e),Ne=null!==(n=null===(t=history.state)||void 0===t?void 0:t._index)&&void 0!==n?n:0}function Ue(){const e=De();if(void 0!==e)return Re.get(e)}function ze(){return Ce()?"clientside-router":we()?"serverside-enhanced":window.Blazor._internal.isBlazorWeb?"serverside-fullpageload":"clientside-router"}const $e={focus:function(e,t){if(e instanceof HTMLElement)e.focus({preventScroll:t});else{if(!(e instanceof SVGElement))throw new Error("Unable to focus an invalid element.");if(!e.hasAttribute("tabindex"))throw new Error("Unable to focus an SVG element that does not have a tabindex.");e.focus({preventScroll:t})}},focusBySelector:function(e,t){const n=document.querySelector(e);n&&(n.hasAttribute("tabindex")||(n.tabIndex=-1),n.focus({preventScroll:!0}))}},We={init:function(e,t,n,r=50){const o=Ve(t);(o||document.documentElement).style.overflowAnchor="none";const a=document.createRange();h(n.parentElement)&&(t.style.display="table-row",n.style.display="table-row");const i=new IntersectionObserver((function(r){r.forEach((r=>{var o;if(!r.isIntersecting)return;a.setStartAfter(t),a.setEndBefore(n);const i=a.getBoundingClientRect().height,s=null===(o=r.rootBounds)||void 0===o?void 0:o.height;r.target===t?e.invokeMethodAsync("OnSpacerBeforeVisible",r.intersectionRect.top-r.boundingClientRect.top,i,s):r.target===n&&n.offsetHeight>0&&e.invokeMethodAsync("OnSpacerAfterVisible",r.boundingClientRect.bottom-r.intersectionRect.bottom,i,s)}))}),{root:o,rootMargin:`${r}px`});i.observe(t),i.observe(n);const s=d(t),c=d(n),{observersByDotNetObjectId:l,id:u}=Xe(e);function d(e){const t={attributes:!0},n=new MutationObserver(((n,r)=>{h(e.parentElement)&&(r.disconnect(),e.style.display="table-row",r.observe(e,t)),i.unobserve(e),i.observe(e)}));return n.observe(e,t),n}function h(e){return null!==e&&(e instanceof HTMLTableElement&&""===e.style.display||"table"===e.style.display||e instanceof HTMLTableSectionElement&&""===e.style.display||"table-row-group"===e.style.display)}l[u]={intersectionObserver:i,mutationObserverBefore:s,mutationObserverAfter:c}},dispose:function(e){const{observersByDotNetObjectId:t,id:n}=Xe(e),r=t[n];r&&(r.intersectionObserver.disconnect(),r.mutationObserverBefore.disconnect(),r.mutationObserverAfter.disconnect(),e.dispose(),delete t[n])}},Ke=Symbol();function Ve(e){return e&&e!==document.body&&e!==document.documentElement?"visible"!==getComputedStyle(e).overflowY?e:Ve(e.parentElement):null}function Xe(e){var t;const n=e._callDispatcher,r=e._id;return null!==(t=n[Ke])&&void 0!==t||(n[Ke]={}),{observersByDotNetObjectId:n[Ke],id:r}}const Ye={getAndRemoveExistingTitle:function(){var e;const t=document.head?document.head.getElementsByTagName("title"):[];if(0===t.length)return null;let n=null;for(let r=t.length-1;r>=0;r--){const o=t[r],a=o.previousSibling;a instanceof Comment&&null!==U(a)||(null===n&&(n=o.textContent),null===(e=o.parentNode)||void 0===e||e.removeChild(o))}return n}},Ge={init:function(e,t){t._blazorInputFileNextFileId=0,t.addEventListener("click",(function(){t.value=""})),t.addEventListener("change",(function(){t._blazorFilesById={};const n=Array.prototype.map.call(t.files,(function(e){const n={id:++t._blazorInputFileNextFileId,lastModified:new Date(e.lastModified).toISOString(),name:e.name,size:e.size,contentType:e.type,readPromise:void 0,arrayBuffer:void 0,blob:e};return t._blazorFilesById[n.id]=n,n}));e.invokeMethodAsync("NotifyChange",n)}))},toImageFile:async function(e,t,n,r,o){const a=qe(e,t),i=await new Promise((function(e){const t=new Image;t.onload=function(){URL.revokeObjectURL(t.src),e(t)},t.onerror=function(){t.onerror=null,URL.revokeObjectURL(t.src)},t.src=URL.createObjectURL(a.blob)})),s=await new Promise((function(e){var t;const a=Math.min(1,r/i.width),s=Math.min(1,o/i.height),c=Math.min(a,s),l=document.createElement("canvas");l.width=Math.round(i.width*c),l.height=Math.round(i.height*c),null===(t=l.getContext("2d"))||void 0===t||t.drawImage(i,0,0,l.width,l.height),l.toBlob(e,n)})),c={id:++e._blazorInputFileNextFileId,lastModified:a.lastModified,name:a.name,size:(null==s?void 0:s.size)||0,contentType:n,blob:s||a.blob};return e._blazorFilesById[c.id]=c,c},readFileData:async function(e,t){return qe(e,t).blob}};function qe(e,t){const n=e._blazorFilesById[t];if(!n)throw new Error(`There is no file with ID ${t}. The file list may have changed. See https://aka.ms/aspnet/blazor-input-file-multiple-selections.`);return n}const Ze=new Set,Qe={enableNavigationPrompt:function(e){0===Ze.size&&window.addEventListener("beforeunload",et),Ze.add(e)},disableNavigationPrompt:function(e){Ze.delete(e),0===Ze.size&&window.removeEventListener("beforeunload",et)}};function et(e){e.preventDefault(),e.returnValue=!0}const tt=new Map,nt={navigateTo:function(e,t,n=!1){xe(e,t instanceof Object?t:{forceLoad:t,replaceHistoryEntry:n})},registerCustomEventType:function(e,t){if(!t)throw new Error("The options parameter is required.");if(a.has(e))throw new Error(`The event '${e}' is already registered.`);if(t.browserEventName){const n=i.get(t.browserEventName);n?n.push(e):i.set(t.browserEventName,[e]),s.forEach((n=>n(e,t.browserEventName)))}a.set(e,t)},rootComponents:g,runtime:{},_internal:{navigationManager:Oe,domWrapper:$e,Virtualize:We,PageTitle:Ye,InputFile:Ge,NavigationLock:Qe,getJSDataStreamChunk:async function(e,t,n){return e instanceof Blob?await async function(e,t,n){const r=e.slice(t,t+n),o=await r.arrayBuffer();return new Uint8Array(o)}(e,t,n):function(e,t,n){return new Uint8Array(e.buffer,e.byteOffset+t,n)}(e,t,n)},attachWebRendererInterop:function(t,n,r,o){var a,i;if(S.has(t))throw new Error(`Interop methods are already registered for renderer ${t}`);S.set(t,n),r&&o&&Object.keys(r).length>0&&function(t,n,r){if(p)throw new Error("Dynamic root components have already been enabled.");p=t,b=n;for(const[t,o]of Object.entries(r)){const r=e.findJSFunction(t,0);for(const e of o)r(e,n[e])}}(A(t),r,o),null===(i=null===(a=C.get(t))||void 0===a?void 0:a[0])||void 0===i||i.call(a),function(e){for(const t of I)t(e)}(t)}}};window.Blazor=nt;let rt=!1;const ot="function"==typeof TextDecoder?new TextDecoder("utf-8"):null,at=ot?ot.decode.bind(ot):function(e){let t=0;const n=e.length,r=[],o=[];for(;t65535&&(o-=65536,r.push(o>>>10&1023|55296),o=56320|1023&o),r.push(o)}r.length>1024&&(o.push(String.fromCharCode.apply(null,r)),r.length=0)}return o.push(String.fromCharCode.apply(null,r)),o.join("")},it=Math.pow(2,32),st=Math.pow(2,21)-1;function ct(e,t){return e[t]|e[t+1]<<8|e[t+2]<<16|e[t+3]<<24}function lt(e,t){return e[t]+(e[t+1]<<8)+(e[t+2]<<16)+(e[t+3]<<24>>>0)}function ut(e,t){const n=lt(e,t+4);if(n>st)throw new Error(`Cannot read uint64 with high order part ${n}, because the result would exceed Number.MAX_SAFE_INTEGER.`);return n*it+lt(e,t)}class dt{constructor(e){this.batchData=e;const t=new pt(e);this.arrayRangeReader=new bt(e),this.arrayBuilderSegmentReader=new vt(e),this.diffReader=new ht(e),this.editReader=new ft(e,t),this.frameReader=new mt(e,t)}updatedComponents(){return ct(this.batchData,this.batchData.length-20)}referenceFrames(){return ct(this.batchData,this.batchData.length-16)}disposedComponentIds(){return ct(this.batchData,this.batchData.length-12)}disposedEventHandlerIds(){return ct(this.batchData,this.batchData.length-8)}updatedComponentsEntry(e,t){const n=e+4*t;return ct(this.batchData,n)}referenceFramesEntry(e,t){return e+20*t}disposedComponentIdsEntry(e,t){const n=e+4*t;return ct(this.batchData,n)}disposedEventHandlerIdsEntry(e,t){const n=e+8*t;return ut(this.batchData,n)}}class ht{constructor(e){this.batchDataUint8=e}componentId(e){return ct(this.batchDataUint8,e)}edits(e){return e+4}editsEntry(e,t){return e+16*t}}class ft{constructor(e,t){this.batchDataUint8=e,this.stringReader=t}editType(e){return ct(this.batchDataUint8,e)}siblingIndex(e){return ct(this.batchDataUint8,e+4)}newTreeIndex(e){return ct(this.batchDataUint8,e+8)}moveToSiblingIndex(e){return ct(this.batchDataUint8,e+8)}removedAttributeName(e){const t=ct(this.batchDataUint8,e+12);return this.stringReader.readString(t)}}class mt{constructor(e,t){this.batchDataUint8=e,this.stringReader=t}frameType(e){return ct(this.batchDataUint8,e)}subtreeLength(e){return ct(this.batchDataUint8,e+4)}elementReferenceCaptureId(e){const t=ct(this.batchDataUint8,e+4);return this.stringReader.readString(t)}componentId(e){return ct(this.batchDataUint8,e+8)}elementName(e){const t=ct(this.batchDataUint8,e+8);return this.stringReader.readString(t)}textContent(e){const t=ct(this.batchDataUint8,e+4);return this.stringReader.readString(t)}markupContent(e){const t=ct(this.batchDataUint8,e+4);return this.stringReader.readString(t)}attributeName(e){const t=ct(this.batchDataUint8,e+4);return this.stringReader.readString(t)}attributeValue(e){const t=ct(this.batchDataUint8,e+8);return this.stringReader.readString(t)}attributeEventHandlerId(e){return ut(this.batchDataUint8,e+12)}}class pt{constructor(e){this.batchDataUint8=e,this.stringTableStartIndex=ct(e,e.length-4)}readString(e){if(-1===e)return null;{const n=ct(this.batchDataUint8,this.stringTableStartIndex+4*e),r=function(e,t){let n=0,r=0;for(let o=0;o<4;o++){const a=e[t+o];if(n|=(127&a)<async function(e,n){const r=function(e){const t=document.baseURI;return t.endsWith("/")?`${t}${e}`:`${t}/${e}`}(n),o=await import(r);if(void 0!==o){if(e.singleRuntime){const{beforeStart:n,afterStarted:r,beforeWebAssemblyStart:i,afterWebAssemblyStarted:s,beforeServerStart:c,afterServerStarted:l}=o;let u=n;e.webRendererId===Nt.Server&&c&&(u=c),e.webRendererId===Nt.WebAssembly&&i&&(u=i);let d=r;return e.webRendererId===Nt.Server&&l&&(d=l),e.webRendererId===Nt.WebAssembly&&s&&(d=s),a(e,u,d,t)}return function(e,t,n){var o;const i=n[0],{beforeStart:s,afterStarted:c,beforeWebStart:l,afterWebStarted:u,beforeWebAssemblyStart:d,afterWebAssemblyStarted:h,beforeServerStart:f,afterServerStarted:m}=t,p=!(l||u||d||h||f||m||!s&&!c),b=p&&i.enableClassicInitializers;if(p&&!i.enableClassicInitializers)null===(o=e.logger)||void 0===o||o.log(kt.Warning,`Initializer '${r}' will be ignored because multiple runtimes are available. use 'before(web|webAssembly|server)Start' and 'after(web|webAssembly|server)Started?' instead.)`);else if(b)return a(e,s,c,n);if(function(e){e.webAssembly?e.webAssembly.initializers||(e.webAssembly.initializers={beforeStart:[],afterStarted:[]}):e.webAssembly={initializers:{beforeStart:[],afterStarted:[]}},e.circuit?e.circuit.initializers||(e.circuit.initializers={beforeStart:[],afterStarted:[]}):e.circuit={initializers:{beforeStart:[],afterStarted:[]}}}(i),d&&i.webAssembly.initializers.beforeStart.push(d),h&&i.webAssembly.initializers.afterStarted.push(h),f&&i.circuit.initializers.beforeStart.push(f),m&&i.circuit.initializers.afterStarted.push(m),u&&e.afterStartedCallbacks.push(u),l)return l(i)}(e,o,t)}function a(e,t,n,r){if(n&&e.afterStartedCallbacks.push(n),t)return t(...r)}}(this,e))))}async invokeAfterStartedCallbacks(e){const t=(n=this.webRendererId,null===(r=C.get(n))||void 0===r?void 0:r[1]);var n,r;t&&await t,await Promise.all(this.afterStartedCallbacks.map((t=>t(e))))}}let Ot,Lt=!1;async function xt(){if(Lt)throw new Error("Blazor has already started.");Lt=!0,Ot=e.attachDispatcher({beginInvokeDotNetFromJS:Et,endInvokeJSFromDotNet:St,sendByteArray:It});const t=await async function(){const e=await fetch("http://github.com/_framework/blazor.modules.json",{method:"GET",credentials:"include",cache:"no-cache"}),t=await e.json(),n=new _t;return await n.importInitializersAsync(t,[]),n}();(function(){const e={AttachToDocument:(e,t)=>{!function(e,t,n){const r="::before";let o=!1;if(e.endsWith("::after"))e=e.slice(0,-7),o=!0;else if(e.endsWith(r))throw new Error(`The '${r}' selector is not supported.`);const a=function(e){const t=m.get(e);if(t)return m.delete(e),t}(e)||document.querySelector(e);if(!a)throw new Error(`Could not find any element matching selector '${e}'.`);!function(e,t,n,r){let o=fe[e];o||(o=new le(e),fe[e]=o),o.attachRootComponentToLogicalElement(n,t,r)}(n,P(a,!0),t,o)}(t,e,Nt.WebView)},RenderBatch:(e,t)=>{try{const n=Tt(t);(function(e,t){const n=fe[e];if(!n)throw new Error(`There is no browser renderer with ID ${e}.`);const r=t.arrayRangeReader,o=t.updatedComponents(),a=r.values(o),i=r.count(o),s=t.referenceFrames(),c=r.values(s),l=t.diffReader;for(let e=0;e{yt=!0,console.error(`${e}\n${t}`),function(){const e=document.querySelector("#blazor-error-ui");e&&(e.style.display="block"),rt||(rt=!0,document.querySelectorAll("#blazor-error-ui .reload").forEach((e=>{e.onclick=function(e){location.reload(),e.preventDefault()}})),document.querySelectorAll("#blazor-error-ui .dismiss").forEach((e=>{e.onclick=function(e){const t=document.querySelector("#blazor-error-ui");t&&(t.style.display="none"),e.preventDefault()}})))}()},BeginInvokeJS:Ot.beginInvokeJSFromDotNet.bind(Ot),EndInvokeDotNet:Ot.endInvokeDotNetFromJS.bind(Ot),SendByteArrayToJS:Rt,Navigate:Oe.navigateTo,Refresh:Oe.refresh,SetHasLocationChangingListeners:e=>{Oe.setHasLocationChangingListeners(Nt.WebView,e)},EndLocationChanging:Oe.endLocationChanging};window.external.receiveMessage((t=>{const n=function(e){if(yt||!e||!e.startsWith(gt))return null;const t=e.substring(gt.length),[n,...r]=JSON.parse(t);return{messageType:n,args:r}}(t);if(n){if(!Object.prototype.hasOwnProperty.call(e,n.messageType))throw new Error(`Unsupported IPC message type '${n.messageType}'`);e[n.messageType].apply(null,n.args)}}))})(),nt._internal.receiveWebViewDotNetDataStream=Ft,Oe.enableNavigationInterception(Nt.WebView),Oe.listenForNavigationEvents(Nt.WebView,Ct,Dt),At("AttachPage",Oe.getBaseURI(),Oe.getLocationHref()),await t.invokeAfterStartedCallbacks(nt)}function Ft(e,t,n,r){!function(e,t,n,r,o){let a=tt.get(t);if(!a){const n=new ReadableStream({start(e){tt.set(t,e),a=e}});e.supplyDotNetStream(t,n)}o?(a.error(o),tt.delete(t)):0===r?(a.close(),tt.delete(t)):a.enqueue(n.length===r?n:n.subarray(0,r))}(Ot,e,t,n,r)}nt.start=xt,window.DotNet=e,document&&document.currentScript&&"false"!==document.currentScript.getAttribute("autostart")&&xt()})(); \ No newline at end of file +(()=>{"use strict";var e,t,n,r={d:(e,t)=>{for(var n in t)r.o(t,n)&&!r.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t)};r.d({},{e:()=>_t}),function(e){const t=[],n="__jsObjectId",r="__dotNetObject",o="__byte[]",a="__dotNetStream",i="__jsStreamReferenceLength";let s,c;class l{constructor(e){this._jsObject=e,this._cachedFunctions=new Map}findFunction(e){const t=this._cachedFunctions.get(e);if(t)return t;let n,r=this._jsObject;if(e.split(".").forEach((t=>{if(!(t in r))throw new Error(`Could not find '${e}' ('${t}' was undefined).`);n=r,r=r[t]})),r instanceof Function)return r=r.bind(n),this._cachedFunctions.set(e,r),r;throw new Error(`The value '${e}' is not a function.`)}getWrappedObject(){return this._jsObject}}const u={0:new l(window)};u[0]._cachedFunctions.set("import",(e=>("string"==typeof e&&e.startsWith("./")&&(e=new URL(e.substr(2),document.baseURI).toString()),import(e))));let d,h=1;function f(e){t.push(e)}function m(e){if(e&&"object"==typeof e){u[h]=new l(e);const t={[n]:h};return h++,t}throw new Error(`Cannot create a JSObjectReference from the value '${e}'.`)}function p(e){let t=-1;if(e instanceof ArrayBuffer&&(e=new Uint8Array(e)),e instanceof Blob)t=e.size;else{if(!(e.buffer instanceof ArrayBuffer))throw new Error("Supplied value is not a typed array or blob.");if(void 0===e.byteLength)throw new Error(`Cannot create a JSStreamReference from the value '${e}' as it doesn't have a byteLength.`);t=e.byteLength}const r={[i]:t};try{const t=m(e);r[n]=t[n]}catch(t){throw new Error(`Cannot create a JSStreamReference from the value '${e}'.`)}return r}function b(e,n){c=e;const r=n?JSON.parse(n,((e,n)=>t.reduce(((t,n)=>n(e,t)),n))):null;return c=void 0,r}function v(){if(void 0===s)throw new Error("No call dispatcher has been set.");if(null===s)throw new Error("There are multiple .NET runtimes present, so a default dispatcher could not be resolved. Use DotNetObject to invoke .NET instance methods.");return s}e.attachDispatcher=function(e){const t=new g(e);return void 0===s?s=t:s&&(s=null),t},e.attachReviver=f,e.invokeMethod=function(e,t,...n){return v().invokeDotNetStaticMethod(e,t,...n)},e.invokeMethodAsync=function(e,t,...n){return v().invokeDotNetStaticMethodAsync(e,t,...n)},e.createJSObjectReference=m,e.createJSStreamReference=p,e.disposeJSObjectReference=function(e){const t=e&&e[n];"number"==typeof t&&E(t)},function(e){e[e.Default=0]="Default",e[e.JSObjectReference=1]="JSObjectReference",e[e.JSStreamReference=2]="JSStreamReference",e[e.JSVoidResult=3]="JSVoidResult"}(d=e.JSCallResultType||(e.JSCallResultType={}));class g{constructor(e){this._dotNetCallDispatcher=e,this._byteArraysToBeRevived=new Map,this._pendingDotNetToJSStreams=new Map,this._pendingAsyncCalls={},this._nextAsyncCallId=1}getDotNetCallDispatcher(){return this._dotNetCallDispatcher}invokeJSFromDotNet(e,t,n,r){const o=b(this,t),a=D(w(e,r)(...o||[]),n);return null==a?null:N(this,a)}beginInvokeJSFromDotNet(e,t,n,r,o){const a=new Promise((e=>{const r=b(this,n);e(w(t,o)(...r||[]))}));e&&a.then((t=>N(this,[e,!0,D(t,r)]))).then((t=>this._dotNetCallDispatcher.endInvokeJSFromDotNet(e,!0,t)),(t=>this._dotNetCallDispatcher.endInvokeJSFromDotNet(e,!1,JSON.stringify([e,!1,y(t)]))))}endInvokeDotNetFromJS(e,t,n){const r=t?b(this,n):new Error(n);this.completePendingCall(parseInt(e,10),t,r)}invokeDotNetStaticMethod(e,t,...n){return this.invokeDotNetMethod(e,t,null,n)}invokeDotNetStaticMethodAsync(e,t,...n){return this.invokeDotNetMethodAsync(e,t,null,n)}invokeDotNetMethod(e,t,n,r){if(this._dotNetCallDispatcher.invokeDotNetFromJS){const o=N(this,r),a=this._dotNetCallDispatcher.invokeDotNetFromJS(e,t,n,o);return a?b(this,a):null}throw new Error("The current dispatcher does not support synchronous calls from JS to .NET. Use invokeDotNetMethodAsync instead.")}invokeDotNetMethodAsync(e,t,n,r){if(e&&n)throw new Error(`For instance method calls, assemblyName should be null. Received '${e}'.`);const o=this._nextAsyncCallId++,a=new Promise(((e,t)=>{this._pendingAsyncCalls[o]={resolve:e,reject:t}}));try{const a=N(this,r);this._dotNetCallDispatcher.beginInvokeDotNetFromJS(o,e,t,n,a)}catch(e){this.completePendingCall(o,!1,e)}return a}receiveByteArray(e,t){this._byteArraysToBeRevived.set(e,t)}processByteArray(e){const t=this._byteArraysToBeRevived.get(e);return t?(this._byteArraysToBeRevived.delete(e),t):null}supplyDotNetStream(e,t){if(this._pendingDotNetToJSStreams.has(e)){const n=this._pendingDotNetToJSStreams.get(e);this._pendingDotNetToJSStreams.delete(e),n.resolve(t)}else{const n=new C;n.resolve(t),this._pendingDotNetToJSStreams.set(e,n)}}getDotNetStreamPromise(e){let t;if(this._pendingDotNetToJSStreams.has(e))t=this._pendingDotNetToJSStreams.get(e).streamPromise,this._pendingDotNetToJSStreams.delete(e);else{const n=new C;this._pendingDotNetToJSStreams.set(e,n),t=n.streamPromise}return t}completePendingCall(e,t,n){if(!this._pendingAsyncCalls.hasOwnProperty(e))throw new Error(`There is no pending async call with ID ${e}.`);const r=this._pendingAsyncCalls[e];delete this._pendingAsyncCalls[e],t?r.resolve(n):r.reject(n)}}function y(e){return e instanceof Error?`${e.message}\n${e.stack}`:e?e.toString():"null"}function w(e,t){const n=u[t];if(n)return n.findFunction(e);throw new Error(`JS object instance with ID ${t} does not exist (has it been disposed?).`)}function E(e){delete u[e]}e.findJSFunction=w,e.disposeJSObjectReferenceById=E;class S{constructor(e,t){this._id=e,this._callDispatcher=t}invokeMethod(e,...t){return this._callDispatcher.invokeDotNetMethod(null,e,this._id,t)}invokeMethodAsync(e,...t){return this._callDispatcher.invokeDotNetMethodAsync(null,e,this._id,t)}dispose(){this._callDispatcher.invokeDotNetMethodAsync(null,"__Dispose",this._id,null).catch((e=>console.error(e)))}serializeAsArg(){return{[r]:this._id}}}e.DotNetObject=S,f((function(e,t){if(t&&"object"==typeof t){if(t.hasOwnProperty(r))return new S(t[r],c);if(t.hasOwnProperty(n)){const e=t[n],r=u[e];if(r)return r.getWrappedObject();throw new Error(`JS object instance with Id '${e}' does not exist. It may have been disposed.`)}if(t.hasOwnProperty(o)){const e=t[o],n=c.processByteArray(e);if(void 0===n)throw new Error(`Byte array index '${e}' does not exist.`);return n}if(t.hasOwnProperty(a)){const e=t[a],n=c.getDotNetStreamPromise(e);return new I(n)}}return t}));class I{constructor(e){this._streamPromise=e}stream(){return this._streamPromise}async arrayBuffer(){return new Response(await this.stream()).arrayBuffer()}}class C{constructor(){this.streamPromise=new Promise(((e,t)=>{this.resolve=e,this.reject=t}))}}function D(e,t){switch(t){case d.Default:return e;case d.JSObjectReference:return m(e);case d.JSStreamReference:return p(e);case d.JSVoidResult:return null;default:throw new Error(`Invalid JS call result type '${t}'.`)}}let A=0;function N(e,t){A=0,c=e;const n=JSON.stringify(t,k);return c=void 0,n}function k(e,t){if(t instanceof S)return t.serializeAsArg();if(t instanceof Uint8Array){c.getDotNetCallDispatcher().sendByteArray(A,t);const e={[o]:A};return A++,e}return t}}(e||(e={})),function(e){e[e.prependFrame=1]="prependFrame",e[e.removeFrame=2]="removeFrame",e[e.setAttribute=3]="setAttribute",e[e.removeAttribute=4]="removeAttribute",e[e.updateText=5]="updateText",e[e.stepIn=6]="stepIn",e[e.stepOut=7]="stepOut",e[e.updateMarkup=8]="updateMarkup",e[e.permutationListEntry=9]="permutationListEntry",e[e.permutationListEnd=10]="permutationListEnd"}(t||(t={})),function(e){e[e.element=1]="element",e[e.text=2]="text",e[e.attribute=3]="attribute",e[e.component=4]="component",e[e.region=5]="region",e[e.elementReferenceCapture=6]="elementReferenceCapture",e[e.markup=8]="markup",e[e.namedEvent=10]="namedEvent"}(n||(n={}));class o{constructor(e,t){this.componentId=e,this.fieldValue=t}static fromEvent(e,t){const n=t.target;if(n instanceof Element){const t=function(e){return e instanceof HTMLInputElement?e.type&&"checkbox"===e.type.toLowerCase()?{value:e.checked}:{value:e.value}:e instanceof HTMLSelectElement||e instanceof HTMLTextAreaElement?{value:e.value}:null}(n);if(t)return new o(e,t.value)}return null}}const a=new Map,i=new Map,s=[];function c(e){return a.get(e)}function l(e){const t=a.get(e);return(null==t?void 0:t.browserEventName)||e}function u(e,t){e.forEach((e=>a.set(e,t)))}function d(e){const t=[];for(let n=0;ne.selected)).map((e=>e.value))}}{const e=function(e){return!!e&&"INPUT"===e.tagName&&"checkbox"===e.getAttribute("type")}(t);return{value:e?!!t.checked:t.value}}}}),u(["copy","cut","paste"],{createEventArgs:e=>({type:e.type})}),u(["drag","dragend","dragenter","dragleave","dragover","dragstart","drop"],{createEventArgs:e=>{return{...h(t=e),dataTransfer:t.dataTransfer?{dropEffect:t.dataTransfer.dropEffect,effectAllowed:t.dataTransfer.effectAllowed,files:Array.from(t.dataTransfer.files).map((e=>e.name)),items:Array.from(t.dataTransfer.items).map((e=>({kind:e.kind,type:e.type}))),types:t.dataTransfer.types}:null};var t}}),u(["focus","blur","focusin","focusout"],{createEventArgs:e=>({type:e.type})}),u(["keydown","keyup","keypress"],{createEventArgs:e=>{return{key:(t=e).key,code:t.code,location:t.location,repeat:t.repeat,ctrlKey:t.ctrlKey,shiftKey:t.shiftKey,altKey:t.altKey,metaKey:t.metaKey,type:t.type};var t}}),u(["contextmenu","click","mouseover","mouseout","mousemove","mousedown","mouseup","mouseleave","mouseenter","dblclick"],{createEventArgs:e=>h(e)}),u(["error"],{createEventArgs:e=>{return{message:(t=e).message,filename:t.filename,lineno:t.lineno,colno:t.colno,type:t.type};var t}}),u(["loadstart","timeout","abort","load","loadend","progress"],{createEventArgs:e=>{return{lengthComputable:(t=e).lengthComputable,loaded:t.loaded,total:t.total,type:t.type};var t}}),u(["touchcancel","touchend","touchmove","touchenter","touchleave","touchstart"],{createEventArgs:e=>{return{detail:(t=e).detail,touches:d(t.touches),targetTouches:d(t.targetTouches),changedTouches:d(t.changedTouches),ctrlKey:t.ctrlKey,shiftKey:t.shiftKey,altKey:t.altKey,metaKey:t.metaKey,type:t.type};var t}}),u(["gotpointercapture","lostpointercapture","pointercancel","pointerdown","pointerenter","pointerleave","pointermove","pointerout","pointerover","pointerup"],{createEventArgs:e=>{return{...h(t=e),pointerId:t.pointerId,width:t.width,height:t.height,pressure:t.pressure,tiltX:t.tiltX,tiltY:t.tiltY,pointerType:t.pointerType,isPrimary:t.isPrimary};var t}}),u(["wheel","mousewheel"],{createEventArgs:e=>{return{...h(t=e),deltaX:t.deltaX,deltaY:t.deltaY,deltaZ:t.deltaZ,deltaMode:t.deltaMode};var t}}),u(["cancel","close","toggle"],{createEventArgs:()=>({})});const f=["date","datetime-local","month","time","week"],m=new Map;let p,b,v=0;const g={async add(e,t,n){if(!n)throw new Error("initialParameters must be an object, even if empty.");const r="__bl-dynamic-root:"+(++v).toString();m.set(r,e);const o=await E().invokeMethodAsync("AddRootComponent",t,r),a=new w(o,b[t]);return await a.setParameters(n),a}};class y{invoke(e){return this._callback(e)}setCallback(t){this._selfJSObjectReference||(this._selfJSObjectReference=e.createJSObjectReference(this)),this._callback=t}getJSObjectReference(){return this._selfJSObjectReference}dispose(){this._selfJSObjectReference&&e.disposeJSObjectReference(this._selfJSObjectReference)}}class w{constructor(e,t){this._jsEventCallbackWrappers=new Map,this._componentId=e;for(const e of t)"eventcallback"===e.type&&this._jsEventCallbackWrappers.set(e.name.toLowerCase(),new y)}setParameters(e){const t={},n=Object.entries(e||{}),r=n.length;for(const[e,r]of n){const n=this._jsEventCallbackWrappers.get(e.toLowerCase());n&&r?(n.setCallback(r),t[e]=n.getJSObjectReference()):t[e]=r}return E().invokeMethodAsync("SetRootComponentParameters",this._componentId,r,t)}async dispose(){if(null!==this._componentId){await E().invokeMethodAsync("RemoveRootComponent",this._componentId),this._componentId=null;for(const e of this._jsEventCallbackWrappers.values())e.dispose()}}}function E(){if(!p)throw new Error("Dynamic root components have not been enabled in this application.");return p}const S=new Map,I=[],C=new Map;function D(e,t,n){return N(e,t.eventHandlerId,(()=>A(e).invokeMethodAsync("DispatchEventAsync",t,n)))}function A(e){const t=S.get(e);if(!t)throw new Error(`No interop methods are registered for renderer ${e}`);return t}let N=(e,t,n)=>n();const k=x(["abort","blur","cancel","canplay","canplaythrough","change","close","cuechange","durationchange","emptied","ended","error","focus","load","loadeddata","loadedmetadata","loadend","loadstart","mouseenter","mouseleave","pointerenter","pointerleave","pause","play","playing","progress","ratechange","reset","scroll","seeked","seeking","stalled","submit","suspend","timeupdate","toggle","unload","volumechange","waiting","DOMNodeInsertedIntoDocument","DOMNodeRemovedFromDocument"]),R={submit:!0},T=x(["click","dblclick","mousedown","mousemove","mouseup"]);class _{constructor(e){this.browserRendererId=e,this.afterClickCallbacks=[];const t=++_.nextEventDelegatorId;this.eventsCollectionKey=`_blazorEvents_${t}`,this.eventInfoStore=new O(this.onGlobalEvent.bind(this))}setListener(e,t,n,r){const o=this.getEventHandlerInfosForElement(e,!0),a=o.getHandler(t);if(a)this.eventInfoStore.update(a.eventHandlerId,n);else{const a={element:e,eventName:t,eventHandlerId:n,renderingComponentId:r};this.eventInfoStore.add(a),o.setHandler(t,a)}}getHandler(e){return this.eventInfoStore.get(e)}removeListener(e){const t=this.eventInfoStore.remove(e);if(t){const e=t.element,n=this.getEventHandlerInfosForElement(e,!1);n&&n.removeHandler(t.eventName)}}notifyAfterClick(e){this.afterClickCallbacks.push(e),this.eventInfoStore.addGlobalListener("click")}setStopPropagation(e,t,n){this.getEventHandlerInfosForElement(e,!0).stopPropagation(t,n)}setPreventDefault(e,t,n){this.getEventHandlerInfosForElement(e,!0).preventDefault(t,n)}onGlobalEvent(e){if(!(e.target instanceof Element))return;this.dispatchGlobalEventToAllElements(e.type,e);const t=(n=e.type,i.get(n));var n;t&&t.forEach((t=>this.dispatchGlobalEventToAllElements(t,e))),"click"===e.type&&this.afterClickCallbacks.forEach((t=>t(e)))}dispatchGlobalEventToAllElements(e,t){const n=t.composedPath();let r=n.shift(),a=null,i=!1;const s=Object.prototype.hasOwnProperty.call(k,e);let l=!1;for(;r;){const h=r,f=this.getEventHandlerInfosForElement(h,!1);if(f){const n=f.getHandler(e);if(n&&(u=h,d=t.type,!((u instanceof HTMLButtonElement||u instanceof HTMLInputElement||u instanceof HTMLTextAreaElement||u instanceof HTMLSelectElement)&&Object.prototype.hasOwnProperty.call(T,d)&&u.disabled))){if(!i){const n=c(e);a=(null==n?void 0:n.createEventArgs)?n.createEventArgs(t):{},i=!0}Object.prototype.hasOwnProperty.call(R,t.type)&&t.preventDefault(),D(this.browserRendererId,{eventHandlerId:n.eventHandlerId,eventName:e,eventFieldInfo:o.fromEvent(n.renderingComponentId,t)},a)}f.stopPropagation(e)&&(l=!0),f.preventDefault(e)&&t.preventDefault()}r=s||l?void 0:n.shift()}var u,d}getEventHandlerInfosForElement(e,t){return Object.prototype.hasOwnProperty.call(e,this.eventsCollectionKey)?e[this.eventsCollectionKey]:t?e[this.eventsCollectionKey]=new L:null}}_.nextEventDelegatorId=0;class O{constructor(e){this.globalListener=e,this.infosByEventHandlerId={},this.countByEventName={},s.push(this.handleEventNameAliasAdded.bind(this))}add(e){if(this.infosByEventHandlerId[e.eventHandlerId])throw new Error(`Event ${e.eventHandlerId} is already tracked`);this.infosByEventHandlerId[e.eventHandlerId]=e,this.addGlobalListener(e.eventName)}get(e){return this.infosByEventHandlerId[e]}addGlobalListener(e){if(e=l(e),Object.prototype.hasOwnProperty.call(this.countByEventName,e))this.countByEventName[e]++;else{this.countByEventName[e]=1;const t=Object.prototype.hasOwnProperty.call(k,e);document.addEventListener(e,this.globalListener,t)}}update(e,t){if(Object.prototype.hasOwnProperty.call(this.infosByEventHandlerId,t))throw new Error(`Event ${t} is already tracked`);const n=this.infosByEventHandlerId[e];delete this.infosByEventHandlerId[e],n.eventHandlerId=t,this.infosByEventHandlerId[t]=n}remove(e){const t=this.infosByEventHandlerId[e];if(t){delete this.infosByEventHandlerId[e];const n=l(t.eventName);0==--this.countByEventName[n]&&(delete this.countByEventName[n],document.removeEventListener(n,this.globalListener))}return t}handleEventNameAliasAdded(e,t){if(Object.prototype.hasOwnProperty.call(this.countByEventName,e)){const n=this.countByEventName[e];delete this.countByEventName[e],document.removeEventListener(e,this.globalListener),this.addGlobalListener(t),this.countByEventName[t]+=n-1}}}class L{constructor(){this.handlers={},this.preventDefaultFlags=null,this.stopPropagationFlags=null}getHandler(e){return Object.prototype.hasOwnProperty.call(this.handlers,e)?this.handlers[e]:null}setHandler(e,t){this.handlers[e]=t}removeHandler(e){delete this.handlers[e]}preventDefault(e,t){return void 0!==t&&(this.preventDefaultFlags=this.preventDefaultFlags||{},this.preventDefaultFlags[e]=t),!!this.preventDefaultFlags&&this.preventDefaultFlags[e]}stopPropagation(e,t){return void 0!==t&&(this.stopPropagationFlags=this.stopPropagationFlags||{},this.stopPropagationFlags[e]=t),!!this.stopPropagationFlags&&this.stopPropagationFlags[e]}}function x(e){const t={};return e.forEach((e=>{t[e]=!0})),t}const F=Symbol(),M=Symbol();function P(e,t){if(F in e)return e;const n=[];if(e.childNodes.length>0){if(!t)throw new Error("New logical elements must start empty, or allowExistingContents must be true");e.childNodes.forEach((t=>{const r=P(t,!0);r[M]=e,n.push(r)}))}return e[F]=n,e}function B(e){const t=W(e);for(;t.length;)J(e,0)}function j(e,t){const n=document.createComment("!");return H(n,e,t),n}function H(e,t,n){const r=e;let o=e;if(e instanceof Comment){const t=W(r);if((null==t?void 0:t.length)>0){const t=G(r),n=new Range;n.setStartBefore(e),n.setEndAfter(t),o=n.extractContents()}}const a=U(r);if(a){const e=W(a),t=Array.prototype.indexOf.call(e,r);e.splice(t,1),delete r[M]}const i=W(t);if(n0;)J(n,0)}const r=n;r.parentNode.removeChild(r)}function U(e){return e[M]||null}function z(e,t){return W(e)[t]}function $(e){const t=X(e);return"http://www.w3.org/2000/svg"===t.namespaceURI&&"foreignObject"!==t.tagName}function W(e){return e[F]}function K(e){const t=W(U(e));return t[Array.prototype.indexOf.call(t,e)+1]||null}function V(e,t){const n=W(e);t.forEach((e=>{e.moveRangeStart=n[e.fromSiblingIndex],e.moveRangeEnd=G(e.moveRangeStart)})),t.forEach((t=>{const r=document.createComment("marker");t.moveToBeforeMarker=r;const o=n[t.toSiblingIndex+1];o?o.parentNode.insertBefore(r,o):Y(r,e)})),t.forEach((e=>{const t=e.moveToBeforeMarker,n=t.parentNode,r=e.moveRangeStart,o=e.moveRangeEnd;let a=r;for(;a;){const e=a.nextSibling;if(n.insertBefore(a,t),a===o)break;a=e}n.removeChild(t)})),t.forEach((e=>{n[e.toSiblingIndex]=e.moveRangeStart}))}function X(e){if(e instanceof Element||e instanceof DocumentFragment)return e;if(e instanceof Comment)return e.parentNode;throw new Error("Not a valid logical element")}function Y(e,t){if(t instanceof Element||t instanceof DocumentFragment)t.appendChild(e);else{if(!(t instanceof Comment))throw new Error(`Cannot append node because the parent is not a valid logical element. Parent: ${t}`);{const n=K(t);n?n.parentNode.insertBefore(e,n):Y(e,U(t))}}}function G(e){if(e instanceof Element||e instanceof DocumentFragment)return e;const t=K(e);if(t)return t.previousSibling;{const t=U(e);return t instanceof Element||t instanceof DocumentFragment?t.lastChild:G(t)}}function q(e){return`_bl_${e}`}Symbol();const Z="__internalId";e.attachReviver(((e,t)=>t&&"object"==typeof t&&Object.prototype.hasOwnProperty.call(t,Z)&&"string"==typeof t[Z]?function(e){const t=`[${q(e)}]`;return document.querySelector(t)}(t[Z]):t));const Q="_blazorDeferredValue";function ee(e){return"select-multiple"===e.type}function te(e,t){e.value=t||""}function ne(e,t){e instanceof HTMLSelectElement?ee(e)?function(e,t){t||(t=[]);for(let n=0;n{Ie()&&function(e,t){if(0!==e.button||function(e){return e.ctrlKey||e.shiftKey||e.altKey||e.metaKey}(e))return;if(e.defaultPrevented)return;const n=function(e){const t=e.composedPath&&e.composedPath();if(t)for(let e=0;e{const t=document.createElement("script");t.textContent=e.textContent,e.getAttributeNames().forEach((n=>{t.setAttribute(n,e.getAttribute(n))})),e.parentNode.replaceChild(t,e)})),oe.content));var i;let s=0;for(;a.firstChild;)H(a.firstChild,o,s++)}applyAttribute(e,t,n,r){const o=e.frameReader,a=o.attributeName(r),i=o.attributeEventHandlerId(r);if(i){const e=he(a);return void this.eventDelegator.setListener(n,e,i,t)}const s=o.attributeValue(r);this.setOrRemoveAttributeOrProperty(n,a,s)}insertFrameRange(e,t,n,r,o,a,i){const s=r;for(let s=a;s{je(t,e)})},enableNavigationInterception:function(e){if(void 0!==me&&me!==e)throw new Error("Only one interactive runtime may enable navigation interception at a time.");me=e},setHasLocationChangingListeners:function(e,t){const n=ke.get(e);if(!n)throw new Error(`Renderer with ID '${e}' is not listening for navigation events`);n.hasLocationChangingEventListeners=t},endLocationChanging:function(e,t){Te&&e===Ne&&(Te(t),Te=null)},navigateTo:function(e,t){Le(e,t,!0)},refresh:function(e){!e&&we()?Ee(location.href,!0):location.reload()},getBaseURI:()=>document.baseURI,getLocationHref:()=>location.href,scrollToElement:Oe};function Oe(e){const t=document.getElementById(e);return!!t&&(t.scrollIntoView(),!0)}function Le(e,t,n=!1){const r=Se(e),o=Ue();if(t.forceLoad||!ye(r)||"serverside-fullpageload"===o)!function(e,t){if(location.href===e){const t=e+"?";history.replaceState(null,"",t),location.replace(e)}else t?location.replace(e):location.href=e}(e,t.replaceHistoryEntry);else if("clientside-router"===o)xe(r,!1,t.replaceHistoryEntry,t.historyEntryState,n);else{if("serverside-enhanced"!==o)throw new Error(`Unsupported page load mechanism: ${o}`);Ee(r,t.replaceHistoryEntry)}}async function xe(e,t,n,r=void 0,o=!1){if(Pe(),function(e){const t=e.indexOf("#");return t>-1&&location.href.replace(location.hash,"")===e.substring(0,t)}(e))return void function(e,t,n){Fe(e,t,n);const r=e.indexOf("#");r!==e.length-1&&Oe(e.substring(r+1))}(e,n,r);const a=Je();(o||!(null==a?void 0:a.hasLocationChangingEventListeners)||await Be(e,r,t,a))&&(ge=!0,Fe(e,n,r),await je(t))}function Fe(e,t,n=void 0){t?history.replaceState({userState:n,_index:Ae},"",e):(Ae++,history.pushState({userState:n,_index:Ae},"",e))}function Me(e){return new Promise((t=>{const n=Re;Re=()=>{Re=n,t()},history.go(e)}))}function Pe(){Te&&(Te(!1),Te=null)}function Be(e,t,n,r){return new Promise((o=>{Pe(),Ne++,Te=o,r.locationChanging(Ne,e,t,n)}))}async function je(e,t){const n=null!=t?t:location.href;await Promise.all(Array.from(ke,(async([t,r])=>{var o,a;a=t,S.has(a)&&await r.locationChanged(n,null===(o=history.state)||void 0===o?void 0:o.userState,e)})))}async function He(e){var t,n;Re&&"serverside-enhanced"!==Ue()&&await Re(e),Ae=null!==(n=null===(t=history.state)||void 0===t?void 0:t._index)&&void 0!==n?n:0}function Je(){const e=Ce();if(void 0!==e)return ke.get(e)}function Ue(){return Ie()?"clientside-router":we()?"serverside-enhanced":window.Blazor._internal.isBlazorWeb?"serverside-fullpageload":"clientside-router"}const ze={focus:function(e,t){if(e instanceof HTMLElement)e.focus({preventScroll:t});else{if(!(e instanceof SVGElement))throw new Error("Unable to focus an invalid element.");if(!e.hasAttribute("tabindex"))throw new Error("Unable to focus an SVG element that does not have a tabindex.");e.focus({preventScroll:t})}},focusBySelector:function(e,t){const n=document.querySelector(e);n&&(n.hasAttribute("tabindex")||(n.tabIndex=-1),n.focus({preventScroll:!0}))}},$e={init:function(e,t,n,r=50){const o=Ke(t);(o||document.documentElement).style.overflowAnchor="none";const a=document.createRange();h(n.parentElement)&&(t.style.display="table-row",n.style.display="table-row");const i=new IntersectionObserver((function(r){r.forEach((r=>{var o;if(!r.isIntersecting)return;a.setStartAfter(t),a.setEndBefore(n);const i=a.getBoundingClientRect().height,s=null===(o=r.rootBounds)||void 0===o?void 0:o.height;r.target===t?e.invokeMethodAsync("OnSpacerBeforeVisible",r.intersectionRect.top-r.boundingClientRect.top,i,s):r.target===n&&n.offsetHeight>0&&e.invokeMethodAsync("OnSpacerAfterVisible",r.boundingClientRect.bottom-r.intersectionRect.bottom,i,s)}))}),{root:o,rootMargin:`${r}px`});i.observe(t),i.observe(n);const s=d(t),c=d(n),{observersByDotNetObjectId:l,id:u}=Ve(e);function d(e){const t={attributes:!0},n=new MutationObserver(((n,r)=>{h(e.parentElement)&&(r.disconnect(),e.style.display="table-row",r.observe(e,t)),i.unobserve(e),i.observe(e)}));return n.observe(e,t),n}function h(e){return null!==e&&(e instanceof HTMLTableElement&&""===e.style.display||"table"===e.style.display||e instanceof HTMLTableSectionElement&&""===e.style.display||"table-row-group"===e.style.display)}l[u]={intersectionObserver:i,mutationObserverBefore:s,mutationObserverAfter:c}},dispose:function(e){const{observersByDotNetObjectId:t,id:n}=Ve(e),r=t[n];r&&(r.intersectionObserver.disconnect(),r.mutationObserverBefore.disconnect(),r.mutationObserverAfter.disconnect(),e.dispose(),delete t[n])}},We=Symbol();function Ke(e){return e&&e!==document.body&&e!==document.documentElement?"visible"!==getComputedStyle(e).overflowY?e:Ke(e.parentElement):null}function Ve(e){var t;const n=e._callDispatcher,r=e._id;return null!==(t=n[We])&&void 0!==t||(n[We]={}),{observersByDotNetObjectId:n[We],id:r}}const Xe={getAndRemoveExistingTitle:function(){var e;const t=document.head?document.head.getElementsByTagName("title"):[];if(0===t.length)return null;let n=null;for(let r=t.length-1;r>=0;r--){const o=t[r],a=o.previousSibling;a instanceof Comment&&null!==U(a)||(null===n&&(n=o.textContent),null===(e=o.parentNode)||void 0===e||e.removeChild(o))}return n}},Ye={init:function(e,t){t._blazorInputFileNextFileId=0,t.addEventListener("click",(function(){t.value=""})),t.addEventListener("change",(function(){t._blazorFilesById={};const n=Array.prototype.map.call(t.files,(function(e){const n={id:++t._blazorInputFileNextFileId,lastModified:new Date(e.lastModified).toISOString(),name:e.name,size:e.size,contentType:e.type,readPromise:void 0,arrayBuffer:void 0,blob:e};return t._blazorFilesById[n.id]=n,n}));e.invokeMethodAsync("NotifyChange",n)}))},toImageFile:async function(e,t,n,r,o){const a=Ge(e,t),i=await new Promise((function(e){const t=new Image;t.onload=function(){URL.revokeObjectURL(t.src),e(t)},t.onerror=function(){t.onerror=null,URL.revokeObjectURL(t.src)},t.src=URL.createObjectURL(a.blob)})),s=await new Promise((function(e){var t;const a=Math.min(1,r/i.width),s=Math.min(1,o/i.height),c=Math.min(a,s),l=document.createElement("canvas");l.width=Math.round(i.width*c),l.height=Math.round(i.height*c),null===(t=l.getContext("2d"))||void 0===t||t.drawImage(i,0,0,l.width,l.height),l.toBlob(e,n)})),c={id:++e._blazorInputFileNextFileId,lastModified:a.lastModified,name:a.name,size:(null==s?void 0:s.size)||0,contentType:n,blob:s||a.blob};return e._blazorFilesById[c.id]=c,c},readFileData:async function(e,t){return Ge(e,t).blob}};function Ge(e,t){const n=e._blazorFilesById[t];if(!n)throw new Error(`There is no file with ID ${t}. The file list may have changed. See https://aka.ms/aspnet/blazor-input-file-multiple-selections.`);return n}const qe=new Set,Ze={enableNavigationPrompt:function(e){0===qe.size&&window.addEventListener("beforeunload",Qe),qe.add(e)},disableNavigationPrompt:function(e){qe.delete(e),0===qe.size&&window.removeEventListener("beforeunload",Qe)}};function Qe(e){e.preventDefault(),e.returnValue=!0}const et=new Map,tt={navigateTo:function(e,t,n=!1){Le(e,t instanceof Object?t:{forceLoad:t,replaceHistoryEntry:n})},registerCustomEventType:function(e,t){if(!t)throw new Error("The options parameter is required.");if(a.has(e))throw new Error(`The event '${e}' is already registered.`);if(t.browserEventName){const n=i.get(t.browserEventName);n?n.push(e):i.set(t.browserEventName,[e]),s.forEach((n=>n(e,t.browserEventName)))}a.set(e,t)},rootComponents:g,runtime:{},_internal:{navigationManager:_e,domWrapper:ze,Virtualize:$e,PageTitle:Xe,InputFile:Ye,NavigationLock:Ze,getJSDataStreamChunk:async function(e,t,n){return e instanceof Blob?await async function(e,t,n){const r=e.slice(t,t+n),o=await r.arrayBuffer();return new Uint8Array(o)}(e,t,n):function(e,t,n){return new Uint8Array(e.buffer,e.byteOffset+t,n)}(e,t,n)},attachWebRendererInterop:function(t,n,r,o){var a,i;if(S.has(t))throw new Error(`Interop methods are already registered for renderer ${t}`);S.set(t,n),r&&o&&Object.keys(r).length>0&&function(t,n,r){if(p)throw new Error("Dynamic root components have already been enabled.");p=t,b=n;for(const[t,o]of Object.entries(r)){const r=e.findJSFunction(t,0);for(const e of o)r(e,n[e])}}(A(t),r,o),null===(i=null===(a=C.get(t))||void 0===a?void 0:a[0])||void 0===i||i.call(a),function(e){for(const t of I)t(e)}(t)}}};window.Blazor=tt;let nt=!1;const rt="function"==typeof TextDecoder?new TextDecoder("utf-8"):null,ot=rt?rt.decode.bind(rt):function(e){let t=0;const n=e.length,r=[],o=[];for(;t65535&&(o-=65536,r.push(o>>>10&1023|55296),o=56320|1023&o),r.push(o)}r.length>1024&&(o.push(String.fromCharCode.apply(null,r)),r.length=0)}return o.push(String.fromCharCode.apply(null,r)),o.join("")},at=Math.pow(2,32),it=Math.pow(2,21)-1;function st(e,t){return e[t]|e[t+1]<<8|e[t+2]<<16|e[t+3]<<24}function ct(e,t){return e[t]+(e[t+1]<<8)+(e[t+2]<<16)+(e[t+3]<<24>>>0)}function lt(e,t){const n=ct(e,t+4);if(n>it)throw new Error(`Cannot read uint64 with high order part ${n}, because the result would exceed Number.MAX_SAFE_INTEGER.`);return n*at+ct(e,t)}class ut{constructor(e){this.batchData=e;const t=new mt(e);this.arrayRangeReader=new pt(e),this.arrayBuilderSegmentReader=new bt(e),this.diffReader=new dt(e),this.editReader=new ht(e,t),this.frameReader=new ft(e,t)}updatedComponents(){return st(this.batchData,this.batchData.length-20)}referenceFrames(){return st(this.batchData,this.batchData.length-16)}disposedComponentIds(){return st(this.batchData,this.batchData.length-12)}disposedEventHandlerIds(){return st(this.batchData,this.batchData.length-8)}updatedComponentsEntry(e,t){const n=e+4*t;return st(this.batchData,n)}referenceFramesEntry(e,t){return e+20*t}disposedComponentIdsEntry(e,t){const n=e+4*t;return st(this.batchData,n)}disposedEventHandlerIdsEntry(e,t){const n=e+8*t;return lt(this.batchData,n)}}class dt{constructor(e){this.batchDataUint8=e}componentId(e){return st(this.batchDataUint8,e)}edits(e){return e+4}editsEntry(e,t){return e+16*t}}class ht{constructor(e,t){this.batchDataUint8=e,this.stringReader=t}editType(e){return st(this.batchDataUint8,e)}siblingIndex(e){return st(this.batchDataUint8,e+4)}newTreeIndex(e){return st(this.batchDataUint8,e+8)}moveToSiblingIndex(e){return st(this.batchDataUint8,e+8)}removedAttributeName(e){const t=st(this.batchDataUint8,e+12);return this.stringReader.readString(t)}}class ft{constructor(e,t){this.batchDataUint8=e,this.stringReader=t}frameType(e){return st(this.batchDataUint8,e)}subtreeLength(e){return st(this.batchDataUint8,e+4)}elementReferenceCaptureId(e){const t=st(this.batchDataUint8,e+4);return this.stringReader.readString(t)}componentId(e){return st(this.batchDataUint8,e+8)}elementName(e){const t=st(this.batchDataUint8,e+8);return this.stringReader.readString(t)}textContent(e){const t=st(this.batchDataUint8,e+4);return this.stringReader.readString(t)}markupContent(e){const t=st(this.batchDataUint8,e+4);return this.stringReader.readString(t)}attributeName(e){const t=st(this.batchDataUint8,e+4);return this.stringReader.readString(t)}attributeValue(e){const t=st(this.batchDataUint8,e+8);return this.stringReader.readString(t)}attributeEventHandlerId(e){return lt(this.batchDataUint8,e+12)}}class mt{constructor(e){this.batchDataUint8=e,this.stringTableStartIndex=st(e,e.length-4)}readString(e){if(-1===e)return null;{const n=st(this.batchDataUint8,this.stringTableStartIndex+4*e),r=function(e,t){let n=0,r=0;for(let o=0;o<4;o++){const a=e[t+o];if(n|=(127&a)<async function(e,n){const r=function(e){const t=document.baseURI;return t.endsWith("/")?`${t}${e}`:`${t}/${e}`}(n),o=await import(r);if(void 0!==o){if(e.singleRuntime){const{beforeStart:n,afterStarted:r,beforeWebAssemblyStart:i,afterWebAssemblyStarted:s,beforeServerStart:c,afterServerStarted:l}=o;let u=n;e.webRendererId===At.Server&&c&&(u=c),e.webRendererId===At.WebAssembly&&i&&(u=i);let d=r;return e.webRendererId===At.Server&&l&&(d=l),e.webRendererId===At.WebAssembly&&s&&(d=s),a(e,u,d,t)}return function(e,t,n){var o;const i=n[0],{beforeStart:s,afterStarted:c,beforeWebStart:l,afterWebStarted:u,beforeWebAssemblyStart:d,afterWebAssemblyStarted:h,beforeServerStart:f,afterServerStarted:m}=t,p=!(l||u||d||h||f||m||!s&&!c),b=p&&i.enableClassicInitializers;if(p&&!i.enableClassicInitializers)null===(o=e.logger)||void 0===o||o.log(Nt.Warning,`Initializer '${r}' will be ignored because multiple runtimes are available. use 'before(web|webAssembly|server)Start' and 'after(web|webAssembly|server)Started?' instead.)`);else if(b)return a(e,s,c,n);if(function(e){e.webAssembly?e.webAssembly.initializers||(e.webAssembly.initializers={beforeStart:[],afterStarted:[]}):e.webAssembly={initializers:{beforeStart:[],afterStarted:[]}},e.circuit?e.circuit.initializers||(e.circuit.initializers={beforeStart:[],afterStarted:[]}):e.circuit={initializers:{beforeStart:[],afterStarted:[]}}}(i),d&&i.webAssembly.initializers.beforeStart.push(d),h&&i.webAssembly.initializers.afterStarted.push(h),f&&i.circuit.initializers.beforeStart.push(f),m&&i.circuit.initializers.afterStarted.push(m),u&&e.afterStartedCallbacks.push(u),l)return l(i)}(e,o,t)}function a(e,t,n,r){if(n&&e.afterStartedCallbacks.push(n),t)return t(...r)}}(this,e))))}async invokeAfterStartedCallbacks(e){const t=(n=this.webRendererId,null===(r=C.get(n))||void 0===r?void 0:r[1]);var n,r;t&&await t,await Promise.all(this.afterStartedCallbacks.map((t=>t(e))))}}let _t,Ot=!1;async function Lt(){if(Ot)throw new Error("Blazor has already started.");Ot=!0,_t=e.attachDispatcher({beginInvokeDotNetFromJS:wt,endInvokeJSFromDotNet:Et,sendByteArray:St});const t=await async function(){const e=await fetch("http://github.com/_framework/blazor.modules.json",{method:"GET",credentials:"include",cache:"no-cache"}),t=await e.json(),n=new Tt;return await n.importInitializersAsync(t,[]),n}();(function(){const e={AttachToDocument:(e,t)=>{!function(e,t,n){const r="::before";let o=!1;if(e.endsWith("::after"))e=e.slice(0,-7),o=!0;else if(e.endsWith(r))throw new Error(`The '${r}' selector is not supported.`);const a=function(e){const t=m.get(e);if(t)return m.delete(e),t}(e)||document.querySelector(e);if(!a)throw new Error(`Could not find any element matching selector '${e}'.`);!function(e,t,n,r){let o=fe[e];o||(o=new le(e),fe[e]=o),o.attachRootComponentToLogicalElement(n,t,r)}(n,P(a,!0),t,o)}(t,e,At.WebView)},RenderBatch:(e,t)=>{try{const n=Rt(t);(function(e,t){const n=fe[e];if(!n)throw new Error(`There is no browser renderer with ID ${e}.`);const r=t.arrayRangeReader,o=t.updatedComponents(),a=r.values(o),i=r.count(o),s=t.referenceFrames(),c=r.values(s),l=t.diffReader;for(let e=0;e{gt=!0,console.error(`${e}\n${t}`),function(){const e=document.querySelector("#blazor-error-ui");e&&(e.style.display="block"),nt||(nt=!0,document.querySelectorAll("#blazor-error-ui .reload").forEach((e=>{e.onclick=function(e){location.reload(),e.preventDefault()}})),document.querySelectorAll("#blazor-error-ui .dismiss").forEach((e=>{e.onclick=function(e){const t=document.querySelector("#blazor-error-ui");t&&(t.style.display="none"),e.preventDefault()}})))}()},BeginInvokeJS:_t.beginInvokeJSFromDotNet.bind(_t),EndInvokeDotNet:_t.endInvokeDotNetFromJS.bind(_t),SendByteArrayToJS:kt,Navigate:_e.navigateTo,Refresh:_e.refresh,SetHasLocationChangingListeners:e=>{_e.setHasLocationChangingListeners(At.WebView,e)},EndLocationChanging:_e.endLocationChanging};window.external.receiveMessage((t=>{const n=function(e){if(gt||!e||!e.startsWith(vt))return null;const t=e.substring(vt.length),[n,...r]=JSON.parse(t);return{messageType:n,args:r}}(t);if(n){if(!Object.prototype.hasOwnProperty.call(e,n.messageType))throw new Error(`Unsupported IPC message type '${n.messageType}'`);e[n.messageType].apply(null,n.args)}}))})(),tt._internal.receiveWebViewDotNetDataStream=xt,_e.enableNavigationInterception(At.WebView),_e.listenForNavigationEvents(At.WebView,It,Ct),Dt("AttachPage",_e.getBaseURI(),_e.getLocationHref()),await t.invokeAfterStartedCallbacks(tt)}function xt(e,t,n,r){!function(e,t,n,r,o){let a=et.get(t);if(!a){const n=new ReadableStream({start(e){et.set(t,e),a=e}});e.supplyDotNetStream(t,n)}o?(a.error(o),et.delete(t)):0===r?(a.close(),et.delete(t)):a.enqueue(n.length===r?n:n.subarray(0,r))}(_t,e,t,n,r)}tt.start=Lt,window.DotNet=e,document&&document.currentScript&&"false"!==document.currentScript.getAttribute("autostart")&&Lt()})(); \ No newline at end of file diff --git a/src/Components/Web.JS/src/Services/NavigationEnhancement.ts b/src/Components/Web.JS/src/Services/NavigationEnhancement.ts index 4b9bedac1672..5fc4a19eeb83 100644 --- a/src/Components/Web.JS/src/Services/NavigationEnhancement.ts +++ b/src/Components/Web.JS/src/Services/NavigationEnhancement.ts @@ -84,7 +84,7 @@ function onDocumentClick(event: MouseEvent) { return; } - if (event.target instanceof HTMLElement && !enhancedNavigationIsEnabledForElement(event.target)) { + if (event.target instanceof Element && !enhancedNavigationIsEnabledForElement(event.target)) { return; } @@ -421,7 +421,7 @@ function splitStream(frameBoundaryMarker: string) { }); } -function enhancedNavigationIsEnabledForElement(element: HTMLElement): boolean { +function enhancedNavigationIsEnabledForElement(element: Element): boolean { // For links, they default to being enhanced, but you can override at any ancestor level (both positively and negatively) const closestOverride = element.closest('[data-enhance-nav]'); if (closestOverride) { diff --git a/src/Components/Web.JS/src/Services/NavigationUtils.ts b/src/Components/Web.JS/src/Services/NavigationUtils.ts index a278ac541407..334a1920d065 100644 --- a/src/Components/Web.JS/src/Services/NavigationUtils.ts +++ b/src/Components/Web.JS/src/Services/NavigationUtils.ts @@ -86,42 +86,26 @@ function eventHasSpecialKey(event: MouseEvent) { return event.ctrlKey || event.shiftKey || event.altKey || event.metaKey; } -function canProcessAnchor(anchorTarget: HTMLAnchorElement) { +function canProcessAnchor(anchorTarget: HTMLAnchorElement | SVGAElement) { const targetAttributeValue = anchorTarget.getAttribute('target'); const opensInSameFrame = !targetAttributeValue || targetAttributeValue === '_self'; return opensInSameFrame && anchorTarget.hasAttribute('href') && !anchorTarget.hasAttribute('download'); } -function findAnchorTarget(event: MouseEvent): HTMLAnchorElement | null { - // _blazorDisableComposedPath is a temporary escape hatch in case any problems are discovered - // in this logic. It can be removed in a later release, and should not be considered supported API. - const path = !window['_blazorDisableComposedPath'] && event.composedPath && event.composedPath(); +function findAnchorTarget(event: MouseEvent): HTMLAnchorElement | SVGAElement | null { + const path = event.composedPath && event.composedPath(); if (path) { // This logic works with events that target elements within a shadow root, // as long as the shadow mode is 'open'. For closed shadows, we can't possibly // know what internal element was clicked. for (let i = 0; i < path.length; i++) { const candidate = path[i]; - if (candidate instanceof Element && candidate.tagName === 'A') { - return candidate as HTMLAnchorElement; + if (candidate instanceof HTMLAnchorElement || candidate instanceof SVGAElement) { + return candidate; } - } - return null; - } else { - // Since we're adding use of composedPath in a patch, retain compatibility with any - // legacy browsers that don't support it by falling back on the older logic, even - // though it won't work properly with ShadowDOM. This can be removed in the next - // major release. - return findClosestAnchorAncestorLegacy(event.target as Element | null, 'A'); - } -} - -function findClosestAnchorAncestorLegacy(element: Element | null, tagName: string) { - return !element - ? null - : element.tagName === tagName - ? element - : findClosestAnchorAncestorLegacy(element.parentElement, tagName); + } + } + return null; } export function hasInteractiveRouter(): boolean { diff --git a/src/Components/test/E2ETest/ServerRenderingTests/EnhancedNavigationTest.cs b/src/Components/test/E2ETest/ServerRenderingTests/EnhancedNavigationTest.cs index 7ed178425cfc..0c65602c0275 100644 --- a/src/Components/test/E2ETest/ServerRenderingTests/EnhancedNavigationTest.cs +++ b/src/Components/test/E2ETest/ServerRenderingTests/EnhancedNavigationTest.cs @@ -98,7 +98,6 @@ public void EnhancedNavCanBeDisabledHierarchically() // Check we got there, but we did *not* retain the

element Browser.Equal("Other", () => Browser.Exists(By.TagName("h1")).Text); Assert.Throws(() => originalH1Elem.Text); - } [Fact] @@ -114,7 +113,51 @@ public void EnhancedNavCanBeReenabledHierarchically() // Check we got there, and it did retain the

element Browser.Equal("Other", () => Browser.Exists(By.TagName("h1")).Text); Assert.Equal("Other", originalH1Elem.Text); + } + + [Fact] + public void EnhancedNavWorksInsideSVGElement() + { + Navigate($"{ServerPathBase}/nav"); + + var originalH1Elem = Browser.Exists(By.TagName("h1")); + Browser.Equal("Hello", () => originalH1Elem.Text); + + Browser.Exists(By.TagName("nav")).FindElement(By.Id("svg-nav-link")).Click(); + + // Check we got there, and it did retain the

element + Browser.Equal("Other", () => Browser.Exists(By.TagName("h1")).Text); + Assert.Equal("Other", originalH1Elem.Text); + } + [Fact] + public void EnhancedNavCanBeDisabledInSVGElementContainingAnchor() + { + Navigate($"{ServerPathBase}/nav"); + + var originalH1Elem = Browser.Exists(By.TagName("h1")); + Browser.Equal("Hello", () => originalH1Elem.Text); + + Browser.Exists(By.TagName("nav")).FindElement(By.Id("svg-not-enhanced-nav-link")).Click(); + + // Check we got there, but we did *not* retain the

element + Browser.Equal("Other", () => Browser.Exists(By.TagName("h1")).Text); + Assert.Throws(() => originalH1Elem.Text); + } + + [Fact] + public void EnhancedNavCanBeDisabledInSVGElementInsideAnchor() + { + Navigate($"{ServerPathBase}/nav"); + + var originalH1Elem = Browser.Exists(By.TagName("h1")); + Browser.Equal("Hello", () => originalH1Elem.Text); + + Browser.Exists(By.TagName("nav")).FindElement(By.Id("svg-in-anchor-not-enhanced-nav-link")).Click(); + + // Check we got there, but we did *not* retain the

element + Browser.Equal("Other", () => Browser.Exists(By.TagName("h1")).Text); + Assert.Throws(() => originalH1Elem.Text); } [Fact] diff --git a/src/Components/test/E2ETest/Tests/RoutingTest.cs b/src/Components/test/E2ETest/Tests/RoutingTest.cs index fe1c544f0ee7..7ce953bc5423 100644 --- a/src/Components/test/E2ETest/Tests/RoutingTest.cs +++ b/src/Components/test/E2ETest/Tests/RoutingTest.cs @@ -1784,4 +1784,19 @@ private void AssertHighlightedLinks(params string[] linkTexts) .FindElements(By.CssSelector("a.active")) .Select(x => x.Text)); } + + [Fact] + public void ClickOnAnchorInsideSVGElementGetsIntercepted() + { + SetUrlViaPushState("/"); + var app = Browser.MountTestComponent(); + app.FindElement(By.LinkText("Anchor inside SVG Element")).Click(); + + Browser.Equal("0", () => Browser.Exists(By.Id("location-changed-count")).Text); + + Browser.FindElement(By.Id("svg-link")).Click(); + + // If the click was intercepted then LocationChanged works + Browser.Equal("1", () => Browser.Exists(By.Id("location-changed-count")).Text); + } } diff --git a/src/Components/test/testassets/BasicTestApp/RouterTest/AnchorInsideSVGElement.razor b/src/Components/test/testassets/BasicTestApp/RouterTest/AnchorInsideSVGElement.razor new file mode 100644 index 000000000000..a16dfc042ce5 --- /dev/null +++ b/src/Components/test/testassets/BasicTestApp/RouterTest/AnchorInsideSVGElement.razor @@ -0,0 +1,28 @@ +@page "/SVGNavigation" +@inject NavigationManager NavigationManager +@using Microsoft.AspNetCore.Components.Routing + + + + SVG data-enhance-nav + + + +
+ +

LocationChanged: @_locationChangedCount

+ +@code { + private int _locationChangedCount = 0; + + protected override void OnInitialized() + { + NavigationManager.LocationChanged += OnLocationChanged; + } + + private void OnLocationChanged(object sender, LocationChangedEventArgs args) + { + _locationChangedCount++; + StateHasChanged(); + } +} diff --git a/src/Components/test/testassets/BasicTestApp/RouterTest/Links.razor b/src/Components/test/testassets/BasicTestApp/RouterTest/Links.razor index c917267c5783..f5af45c13ded 100644 --- a/src/Components/test/testassets/BasicTestApp/RouterTest/Links.razor +++ b/src/Components/test/testassets/BasicTestApp/RouterTest/Links.razor @@ -38,6 +38,7 @@
  • Null href never matches
  • Long page with hash
  • +
  • Anchor inside SVG Element
  • [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] [JsonPropertyOrder(-5)] + [JsonPropertyName("type")] public string? Type { get; set; } /// @@ -27,6 +28,7 @@ public class ProblemDetails /// [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] [JsonPropertyOrder(-4)] + [JsonPropertyName("title")] public string? Title { get; set; } /// @@ -34,6 +36,7 @@ public class ProblemDetails /// [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] [JsonPropertyOrder(-3)] + [JsonPropertyName("status")] public int? Status { get; set; } /// @@ -41,6 +44,7 @@ public class ProblemDetails /// [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] [JsonPropertyOrder(-2)] + [JsonPropertyName("detail")] public string? Detail { get; set; } /// @@ -48,6 +52,7 @@ public class ProblemDetails /// [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] [JsonPropertyOrder(-1)] + [JsonPropertyName("instance")] public string? Instance { get; set; } /// diff --git a/src/Http/Http.Extensions/test/ProblemDetailsDefaultWriterTest.cs b/src/Http/Http.Extensions/test/ProblemDetailsDefaultWriterTest.cs index 5bd053f13f7d..8df91d099930 100644 --- a/src/Http/Http.Extensions/test/ProblemDetailsDefaultWriterTest.cs +++ b/src/Http/Http.Extensions/test/ProblemDetailsDefaultWriterTest.cs @@ -54,6 +54,68 @@ public async Task WriteAsync_Works() Assert.Equal(expectedProblem.Instance, problemDetails.Instance); } + [Fact] + public async Task WriteAsync_Works_ProperCasing() + { + // Arrange + var writer = GetWriter(); + var stream = new MemoryStream(); + var context = CreateContext(stream); + var expectedProblem = new ProblemDetails() + { + Detail = "Custom Bad Request", + Instance = "Custom Bad Request", + Status = StatusCodes.Status400BadRequest, + Type = "https://tools.ietf.org/html/rfc9110#section-15.5.1-custom", + Title = "Custom Bad Request", + Extensions = new Dictionary() { { "extensionKey", 1 } } + }; + var problemDetailsContext = new ProblemDetailsContext() + { + HttpContext = context, + ProblemDetails = expectedProblem + }; + + //Act + await writer.WriteAsync(problemDetailsContext); + + //Assert + stream.Position = 0; + var result = await JsonSerializer.DeserializeAsync>(stream, JsonSerializerOptions.Default); + Assert.Equal(result.Keys, new(new() { { "type", 0 }, { "title", 1 }, { "status", 2 }, { "detail", 3 }, { "instance", 4 }, { "extensionKey", 5 } })); + } + + [Fact] + public async Task WriteAsync_Works_ProperCasing_ValidationProblemDetails() + { + // Arrange + var writer = GetWriter(); + var stream = new MemoryStream(); + var context = CreateContext(stream); + var expectedProblem = new ValidationProblemDetails() + { + Detail = "Custom Bad Request", + Instance = "Custom Bad Request", + Status = StatusCodes.Status400BadRequest, + Type = "https://tools.ietf.org/html/rfc9110#section-15.5.1-custom", + Title = "Custom Bad Request", + Errors = new Dictionary() { { "name", ["Name is invalid."] } } + }; + var problemDetailsContext = new ProblemDetailsContext() + { + HttpContext = context, + ProblemDetails = expectedProblem + }; + + //Act + await writer.WriteAsync(problemDetailsContext); + + //Assert + stream.Position = 0; + var result = await JsonSerializer.DeserializeAsync>(stream, JsonSerializerOptions.Default); + Assert.Equal(result.Keys, new(new() { { "type", 0 }, { "title", 1 }, { "status", 2 }, { "detail", 3 }, { "instance", 4 }, { "errors", 5 } })); + } + [Fact] public async Task WriteAsync_Works_WhenReplacingProblemDetailsUsingSetter() { diff --git a/src/Mvc/Mvc.Core/src/ValidationProblemDetails.cs b/src/Mvc/Mvc.Core/src/ValidationProblemDetails.cs index 0701521ebb3e..d3ce4af1a8ce 100644 --- a/src/Mvc/Mvc.Core/src/ValidationProblemDetails.cs +++ b/src/Mvc/Mvc.Core/src/ValidationProblemDetails.cs @@ -1,6 +1,7 @@ // Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. +using System.Text.Json.Serialization; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc.Core; using Microsoft.AspNetCore.Mvc.ModelBinding; @@ -81,5 +82,6 @@ public ValidationProblemDetails(IDictionary errors) /// /// Gets the validation errors associated with this instance of . /// + [JsonPropertyName("errors")] public new IDictionary Errors { get { return base.Errors; } set { base.Errors = value; } } } From 6c424862b38dd21ed28caee7c0213b3486013eef Mon Sep 17 00:00:00 2001 From: William Godbe Date: Wed, 7 Feb 2024 14:59:19 -0800 Subject: [PATCH 124/391] [release/8.0] Update Yarn.msbuild (#53849) * Update Yarn.msbuild * Update Tools.props * Update global.json * Update Tools.props --- eng/Tools.props | 2 +- global.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/eng/Tools.props b/eng/Tools.props index a38257f7704f..b52f10ed643d 100644 --- a/eng/Tools.props +++ b/eng/Tools.props @@ -7,7 +7,7 @@ Since this project is evaluated before .npmproj files are loaded, this should cause the package to end up in the NuGet cache ahead of time. This is not needed in source build. --> - + diff --git a/global.json b/global.json index eb4b2917f6e4..77c4f3a4f6dc 100644 --- a/global.json +++ b/global.json @@ -26,7 +26,7 @@ "xcopy-msbuild": "17.1.0" }, "msbuild-sdks": { - "Yarn.MSBuild": "1.22.10", + "Yarn.MSBuild": "1.22.19", "Microsoft.DotNet.Arcade.Sdk": "8.0.0-beta.24059.4", "Microsoft.DotNet.Helix.Sdk": "8.0.0-beta.24059.4" } From 414f0d41336012d16c21c6e64ab98142d0d9ab7c Mon Sep 17 00:00:00 2001 From: Mackinnon Buck Date: Mon, 12 Feb 2024 13:19:44 -0800 Subject: [PATCH 125/391] [release/8.0] [Blazor] Fix hot reload memory leak (#53928) * Resolve change token leak in Blazor hot reload (#53750) Fix of razor hotreload change token leak. This disposes the old change tokens after the ClearCache event or before overwriting. If something goes wrong and this isn't cleared before the next invocation of UpdateEndpoints on the razor data source, clear it and dispose of it then. * Add unit test to confirm change token is disposed during (#53827) * Add unit test to confirm change token is disposed during razer hot reload. * Per Makinnon's feedback, switch to a callback model to create the wrapped disposable for this unit test. * Update src/Components/Endpoints/test/HotReloadServiceTests.cs --------- Co-authored-by: Mackinnon Buck --------- Co-authored-by: jacdavis --- .../RazorComponentEndpointDataSource.cs | 17 ++++++- .../DependencyInjection/HotReloadService.cs | 7 +++ .../Endpoints/test/HotReloadServiceTests.cs | 46 +++++++++++++++++++ 3 files changed, 69 insertions(+), 1 deletion(-) diff --git a/src/Components/Endpoints/src/Builder/RazorComponentEndpointDataSource.cs b/src/Components/Endpoints/src/Builder/RazorComponentEndpointDataSource.cs index 58a7ac8d656f..06d3113f36e3 100644 --- a/src/Components/Endpoints/src/Builder/RazorComponentEndpointDataSource.cs +++ b/src/Components/Endpoints/src/Builder/RazorComponentEndpointDataSource.cs @@ -28,6 +28,9 @@ internal class RazorComponentEndpointDataSource<[DynamicallyAccessedMembers(Comp private List? _endpoints; private CancellationTokenSource _cancellationTokenSource; private IChangeToken _changeToken; + private IDisposable? _disposableChangeToken; // THREADING: protected by _lock + + public Func SetDisposableChangeTokenAction = disposableChangeToken => disposableChangeToken; // Internal for testing. internal ComponentApplicationBuilder Builder => _builder; @@ -45,6 +48,7 @@ public RazorComponentEndpointDataSource( _renderModeEndpointProviders = renderModeEndpointProviders.ToArray(); _factory = factory; _hotReloadService = hotReloadService; + HotReloadService.ClearCacheEvent += OnHotReloadClearCache; DefaultBuilder = new RazorComponentsEndpointConventionBuilder( _lock, builder, @@ -139,12 +143,23 @@ private void UpdateEndpoints() _cancellationTokenSource = new CancellationTokenSource(); _changeToken = new CancellationChangeToken(_cancellationTokenSource.Token); oldCancellationTokenSource?.Cancel(); + oldCancellationTokenSource?.Dispose(); if (_hotReloadService is { MetadataUpdateSupported : true }) { - ChangeToken.OnChange(_hotReloadService.GetChangeToken, UpdateEndpoints); + _disposableChangeToken?.Dispose(); + _disposableChangeToken = SetDisposableChangeTokenAction(ChangeToken.OnChange(_hotReloadService.GetChangeToken, UpdateEndpoints)); } } } + + public void OnHotReloadClearCache(Type[]? types) + { + lock (_lock) + { + _disposableChangeToken?.Dispose(); + _disposableChangeToken = null; + } + } public override IChangeToken GetChangeToken() { diff --git a/src/Components/Endpoints/src/DependencyInjection/HotReloadService.cs b/src/Components/Endpoints/src/DependencyInjection/HotReloadService.cs index 51680ca61034..ad3c985b564f 100644 --- a/src/Components/Endpoints/src/DependencyInjection/HotReloadService.cs +++ b/src/Components/Endpoints/src/DependencyInjection/HotReloadService.cs @@ -18,6 +18,7 @@ public HotReloadService() private CancellationTokenSource _tokenSource = new(); private static event Action? UpdateApplicationEvent; + internal static event Action? ClearCacheEvent; public bool MetadataUpdateSupported { get; internal set; } @@ -27,11 +28,17 @@ public static void UpdateApplication(Type[]? changedTypes) { UpdateApplicationEvent?.Invoke(changedTypes); } + + public static void ClearCache(Type[]? types) + { + ClearCacheEvent?.Invoke(types); + } private void NotifyUpdateApplication(Type[]? changedTypes) { var current = Interlocked.Exchange(ref _tokenSource, new CancellationTokenSource()); current.Cancel(); + current.Dispose(); } public void Dispose() diff --git a/src/Components/Endpoints/test/HotReloadServiceTests.cs b/src/Components/Endpoints/test/HotReloadServiceTests.cs index a85697e9ec4d..a492c36e39b0 100644 --- a/src/Components/Endpoints/test/HotReloadServiceTests.cs +++ b/src/Components/Endpoints/test/HotReloadServiceTests.cs @@ -137,6 +137,52 @@ public void NotifiesCompositeEndpointDataSource() Assert.Empty(compositeEndpointDataSource.Endpoints); } + private sealed class WrappedChangeTokenDisposable : IDisposable + { + public bool IsDisposed { get; private set; } + private readonly IDisposable _innerDisposable; + + public WrappedChangeTokenDisposable(IDisposable innerDisposable) + { + _innerDisposable = innerDisposable; + } + + public void Dispose() + { + IsDisposed = true; + _innerDisposable.Dispose(); + } + } + + [Fact] + public void ConfirmChangeTokenDisposedHotReload() + { + // Arrange + var builder = CreateBuilder(typeof(ServerComponent)); + var services = CreateServices(typeof(MockEndpointProvider)); + var endpointDataSource = CreateDataSource(builder, services); + + WrappedChangeTokenDisposable wrappedChangeTokenDisposable = null; + + endpointDataSource.SetDisposableChangeTokenAction = (IDisposable disposableChangeToken) => { + wrappedChangeTokenDisposable = new WrappedChangeTokenDisposable(disposableChangeToken); + return wrappedChangeTokenDisposable; + }; + + var endpoint = Assert.IsType(Assert.Single(endpointDataSource.Endpoints)); + Assert.Equal("/server", endpoint.RoutePattern.RawText); + Assert.DoesNotContain(endpoint.Metadata, (element) => element is TestMetadata); + + // Make a modification and then perform a hot reload. + endpointDataSource.Conventions.Add(builder => + builder.Metadata.Add(new TestMetadata())); + HotReloadService.UpdateApplication(null); + HotReloadService.ClearCache(null); + + // Confirm the change token is disposed after ClearCache + Assert.True(wrappedChangeTokenDisposable.IsDisposed); + } + private class TestMetadata { } private ComponentApplicationBuilder CreateBuilder(params Type[] types) From f73495474e5bc5e9f5ca62747af1e68836e01f56 Mon Sep 17 00:00:00 2001 From: Mackinnon Buck Date: Mon, 12 Feb 2024 13:19:56 -0800 Subject: [PATCH 126/391] Hide `NavigationException` from error boundaries (#53826) (#53968) --- .../Components/src/RenderTree/Renderer.cs | 9 +++++++++ .../ServerRenderingTests/RedirectionTest.cs | 16 ++++++++++++++++ .../Redirections/RedirectErrorBoundaryGet.razor | 14 ++++++++++++++ .../Pages/Redirections/RedirectHome.razor | 5 +++++ 4 files changed, 44 insertions(+) create mode 100644 src/Components/test/testassets/Components.TestServer/RazorComponents/Pages/Redirections/RedirectErrorBoundaryGet.razor diff --git a/src/Components/Components/src/RenderTree/Renderer.cs b/src/Components/Components/src/RenderTree/Renderer.cs index 23ca5499e6fb..eaa20e1eb433 100644 --- a/src/Components/Components/src/RenderTree/Renderer.cs +++ b/src/Components/Components/src/RenderTree/Renderer.cs @@ -1065,6 +1065,15 @@ private void HandleExceptionViaErrorBoundary(Exception error, ComponentState? er // already on the sync context (and if not, we have a bug we want to know about). Dispatcher.AssertAccess(); + // We don't allow NavigationException instances to be caught by error boundaries. + // These are special exceptions whose purpose is to be as invisible as possible to + // user code and bubble all the way up to get handled by the framework as a redirect. + if (error is NavigationException) + { + HandleException(error); + return; + } + // Find the closest error boundary, if any var candidate = errorSourceOrNull; while (candidate is not null) diff --git a/src/Components/test/E2ETest/ServerRenderingTests/RedirectionTest.cs b/src/Components/test/E2ETest/ServerRenderingTests/RedirectionTest.cs index 87edff6d80b2..f3b70bc87509 100644 --- a/src/Components/test/E2ETest/ServerRenderingTests/RedirectionTest.cs +++ b/src/Components/test/E2ETest/ServerRenderingTests/RedirectionTest.cs @@ -205,6 +205,22 @@ public void RedirectEnhancedNonBlazorPostToInternal() // response to something like a 200 that the 'fetch' is allowed to read (embedding the // destination URL). + [Fact] + public void RedirectEnhancedGetToInternalWithErrorBoundary() + { + // This test verifies that redirection works even if an ErrorBoundary wraps + // a component throwing a NavigationException. + + Browser.Exists(By.LinkText("Enhanced GET with redirect inside error boundary")).Click(); + Browser.Equal("Scroll to hash", () => _originalH1Element.Text); + Assert.EndsWith("/subdir/nav/scroll-to-hash?foo=%F0%9F%99%82", Browser.Url); + + // See that 'back' takes you to the place from before the redirection + Browser.Navigate().Back(); + Browser.Equal("Redirections", () => _originalH1Element.Text); + Assert.EndsWith("/subdir/redirect", Browser.Url); + } + private void AssertElementRemoved(IWebElement element) { Browser.True(() => diff --git a/src/Components/test/testassets/Components.TestServer/RazorComponents/Pages/Redirections/RedirectErrorBoundaryGet.razor b/src/Components/test/testassets/Components.TestServer/RazorComponents/Pages/Redirections/RedirectErrorBoundaryGet.razor new file mode 100644 index 000000000000..406068e17180 --- /dev/null +++ b/src/Components/test/testassets/Components.TestServer/RazorComponents/Pages/Redirections/RedirectErrorBoundaryGet.razor @@ -0,0 +1,14 @@ +@page "/redirect/error-boundary/get" + +

    Redirect in error boundary GET

    + + + + + + +

    + Error caught by error boundary: @context.Message +

    +
    +
    diff --git a/src/Components/test/testassets/Components.TestServer/RazorComponents/Pages/Redirections/RedirectHome.razor b/src/Components/test/testassets/Components.TestServer/RazorComponents/Pages/Redirections/RedirectHome.razor index 00d018926901..fc57ae3e3c72 100644 --- a/src/Components/test/testassets/Components.TestServer/RazorComponents/Pages/Redirections/RedirectHome.razor +++ b/src/Components/test/testassets/Components.TestServer/RazorComponents/Pages/Redirections/RedirectHome.razor @@ -90,3 +90,8 @@ + +

    Redirect inside error boundary

    + From aad6550e58a3bef2c760610066b6d0f4eb5fa9b7 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 12 Feb 2024 13:20:22 -0800 Subject: [PATCH 127/391] [release/8.0] [Blazor] Pass the member info directly (#53892) * Pass the member info directly * Add additional test to cover non-ascii characters --------- Co-authored-by: jacalvar --- src/Components/Forms/src/FieldIdentifier.cs | 12 +-- .../Forms/test/FieldIdentifierTest.cs | 73 ++++++++++++++++++- 2 files changed, 79 insertions(+), 6 deletions(-) diff --git a/src/Components/Forms/src/FieldIdentifier.cs b/src/Components/Forms/src/FieldIdentifier.cs index 3c147a02841f..3a5eab25b70c 100644 --- a/src/Components/Forms/src/FieldIdentifier.cs +++ b/src/Components/Forms/src/FieldIdentifier.cs @@ -4,6 +4,7 @@ using System.Collections.Concurrent; using System.Diagnostics.CodeAnalysis; using System.Linq.Expressions; +using System.Reflection; using System.Runtime.CompilerServices; using Microsoft.AspNetCore.Components.HotReload; @@ -15,7 +16,7 @@ namespace Microsoft.AspNetCore.Components.Forms; ///
    public readonly struct FieldIdentifier : IEquatable { - private static readonly ConcurrentDictionary<(Type ModelType, string FieldName), Func> _fieldAccessors = new(); + private static readonly ConcurrentDictionary<(Type ModelType, MemberInfo Member), Func> _fieldAccessors = new(); static FieldIdentifier() { @@ -151,7 +152,7 @@ private static void ParseAccessor(Expression> accessor, out object mo internal static object GetModelFromMemberAccess( MemberExpression member, - ConcurrentDictionary<(Type ModelType, string FieldName), Func>? cache = null) + ConcurrentDictionary<(Type ModelType, MemberInfo Member), Func>? cache = null) { cache ??= _fieldAccessors; Func? accessor = null; @@ -160,7 +161,7 @@ internal static object GetModelFromMemberAccess( { case ConstantExpression model: value = model.Value ?? throw new ArgumentException("The provided expression must evaluate to a non-null value."); - accessor = cache.GetOrAdd((value.GetType(), member.Member.Name), CreateAccessor); + accessor = cache.GetOrAdd((value.GetType(), member.Member), CreateAccessor); break; default: break; @@ -183,11 +184,12 @@ internal static object GetModelFromMemberAccess( "Trimming", "IL2026:Members annotated with 'RequiresUnreferencedCodeAttribute' require dynamic access otherwise can break functionality when trimming application code", Justification = "Application code does not get trimmed. We expect the members in the expression to not be trimmed.")] - static Func CreateAccessor((Type model, string member) arg) + static Func CreateAccessor((Type model, MemberInfo member) arg) { var parameter = Expression.Parameter(typeof(object), "value"); Expression expression = Expression.Convert(parameter, arg.model); - expression = Expression.PropertyOrField(expression, arg.member); + + expression = Expression.MakeMemberAccess(expression, arg.member); expression = Expression.Convert(expression, typeof(object)); var lambda = Expression.Lambda>(expression, parameter); diff --git a/src/Components/Forms/test/FieldIdentifierTest.cs b/src/Components/Forms/test/FieldIdentifierTest.cs index 0f4b0c903576..c767f2fa7d85 100644 --- a/src/Components/Forms/test/FieldIdentifierTest.cs +++ b/src/Components/Forms/test/FieldIdentifierTest.cs @@ -3,6 +3,7 @@ using System.Collections.Concurrent; using System.Linq.Expressions; +using System.Reflection; namespace Microsoft.AspNetCore.Components.Forms; @@ -142,7 +143,7 @@ public void CanCreateFromExpression_Property() public void CanCreateFromExpression_PropertyUsesCache() { var models = new TestModel[] { new TestModel(), new TestModel() }; - var cache = new ConcurrentDictionary<(Type ModelType, string FieldName), Func>(); + var cache = new ConcurrentDictionary<(Type ModelType, MemberInfo FieldName), Func>(); var result = new TestModel[2]; for (var i = 0; i < models.Length; i++) { @@ -221,6 +222,53 @@ public void CanCreateFromExpression_MemberOfObjectWithCast() Assert.Equal(nameof(TestModel.StringField), fieldIdentifier.FieldName); } + [Fact] + public void CanCreateFromExpression_DifferentCaseField() + { + var fieldIdentifier = FieldIdentifier.Create(() => model.Field); + Assert.Same(model, fieldIdentifier.Model); + Assert.Equal(nameof(model.Field), fieldIdentifier.FieldName); + } + + private DifferentCaseFieldModel model = new() { Field = 1 }; +#pragma warning disable CA1823 // This is used in the test above + private DifferentCaseFieldModel Model = new() { field = 2 }; +#pragma warning restore CA1823 // Avoid unused private fields + + [Fact] + public void CanCreateFromExpression_DifferentCaseProperty() + { + var fieldIdentifier = FieldIdentifier.Create(() => Model2.Property); + Assert.Same(Model2, fieldIdentifier.Model); + Assert.Equal(nameof(Model2.Property), fieldIdentifier.FieldName); + } + + protected DifferentCasePropertyModel Model2 { get; } = new() { property = 1 }; + + protected DifferentCasePropertyModel model2 { get; } = new() { Property = 2 }; + + [Fact] + public void CanCreateFromExpression_DifferentCasePropertyAndField() + { + var fieldIdentifier = FieldIdentifier.Create(() => model3.Value); + Assert.Same(model3, fieldIdentifier.Model); + Assert.Equal(nameof(Model3.Value), fieldIdentifier.FieldName); + } + + [Fact] + public void CanCreateFromExpression_NonAsciiCharacters() + { + var fieldIdentifier = FieldIdentifier.Create(() => @ÖvrigAnställning.Ort); + Assert.Same(@ÖvrigAnställning, fieldIdentifier.Model); + Assert.Equal(nameof(@ÖvrigAnställning.Ort), fieldIdentifier.FieldName); + } + + public DifferentCasePropertyFieldModel Model3 { get; } = new() { value = 1 }; + + public DifferentCasePropertyFieldModel model3 = new() { Value = 2 }; + + public ÖvrigAnställningModel @ÖvrigAnställning { get; set; } = new(); + string StringPropertyOnThisClass { get; set; } class TestModel @@ -253,4 +301,27 @@ public override int GetHashCode() return StringComparer.Ordinal.GetHashCode(Property); } } + + public class ÖvrigAnställningModel + { + public int Ort { get; set; } + } + + private class DifferentCaseFieldModel + { + public int Field; + public int field; + } + + protected class DifferentCasePropertyModel + { + public int Property { get; set; } + public int property { get; set; } + } + + public class DifferentCasePropertyFieldModel + { + public int Value { get; set; } + public int value; + } } From 458aef31136d49c89230b7b422cf6b3e6c80b46a Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 12 Feb 2024 13:20:47 -0800 Subject: [PATCH 128/391] [release/8.0] SignalR performance: track groups per connection, remove on disconnect (#53862) * SignalR: track groups per connection, remove on disconnect, fixes dotnet/aspnetcore#48249 Instead of iterating over ALL the groups, which is slow and even introduces a DDoS vector, we remove from groups that are specific to this connection * Removed unused method * Apply suggestions from code review Co-authored-by: Brennan * More code review suggestions with a minor fix * Use lock instead of ToArray (the latter iterates anyway) * Made the HashSet an internal property on HubConnectionContext * Removed unneeded "using" * Removed ignore-case from group tracking * Addressed race condition from code review --------- Co-authored-by: alex-jitbit <33555768+alex-jitbit@users.noreply.github.com> Co-authored-by: Brennan --- .../Core/src/DefaultHubLifetimeManager.cs | 35 +++++++++++++++++-- .../server/Core/src/HubConnectionContext.cs | 3 ++ .../server/Core/src/Internal/HubGroupList.cs | 10 ------ 3 files changed, 35 insertions(+), 13 deletions(-) diff --git a/src/SignalR/server/Core/src/DefaultHubLifetimeManager.cs b/src/SignalR/server/Core/src/DefaultHubLifetimeManager.cs index eec5f9ea2546..1eba4726f893 100644 --- a/src/SignalR/server/Core/src/DefaultHubLifetimeManager.cs +++ b/src/SignalR/server/Core/src/DefaultHubLifetimeManager.cs @@ -42,7 +42,18 @@ public override Task AddToGroupAsync(string connectionId, string groupName, Canc return Task.CompletedTask; } - _groups.Add(connection, groupName); + // Track groups in the connection object + lock (connection.GroupNames) + { + if (!connection.GroupNames.Add(groupName)) + { + // Connection already in group + return Task.CompletedTask; + } + + _groups.Add(connection, groupName); + } + // Connection disconnected while adding to group, remove it in case the Add was called after OnDisconnectedAsync removed items from the group if (connection.ConnectionAborted.IsCancellationRequested) { @@ -64,7 +75,17 @@ public override Task RemoveFromGroupAsync(string connectionId, string groupName, return Task.CompletedTask; } - _groups.Remove(connectionId, groupName); + // Remove from previously saved groups + lock (connection.GroupNames) + { + if (!connection.GroupNames.Remove(groupName)) + { + // Connection not in group + return Task.CompletedTask; + } + + _groups.Remove(connectionId, groupName); + } return Task.CompletedTask; } @@ -277,8 +298,16 @@ public override Task OnConnectedAsync(HubConnectionContext connection) /// public override Task OnDisconnectedAsync(HubConnectionContext connection) { + lock (connection.GroupNames) + { + // Remove from tracked groups one by one + foreach (var groupName in connection.GroupNames) + { + _groups.Remove(connection.ConnectionId, groupName); + } + } + _connections.Remove(connection); - _groups.RemoveDisconnectedConnection(connection.ConnectionId); return Task.CompletedTask; } diff --git a/src/SignalR/server/Core/src/HubConnectionContext.cs b/src/SignalR/server/Core/src/HubConnectionContext.cs index af9c68bbaa83..da0067064b97 100644 --- a/src/SignalR/server/Core/src/HubConnectionContext.cs +++ b/src/SignalR/server/Core/src/HubConnectionContext.cs @@ -56,6 +56,9 @@ public partial class HubConnectionContext [MemberNotNullWhen(true, nameof(_messageBuffer))] internal bool UsingStatefulReconnect() => _useStatefulReconnect; + // Tracks groups that the connection has been added to + internal HashSet GroupNames { get; } = new HashSet(); + /// /// Initializes a new instance of the class. /// diff --git a/src/SignalR/server/Core/src/Internal/HubGroupList.cs b/src/SignalR/server/Core/src/Internal/HubGroupList.cs index 138595d5be07..d87bb7f09e47 100644 --- a/src/SignalR/server/Core/src/Internal/HubGroupList.cs +++ b/src/SignalR/server/Core/src/Internal/HubGroupList.cs @@ -3,7 +3,6 @@ using System.Collections; using System.Collections.Concurrent; -using System.Linq; namespace Microsoft.AspNetCore.SignalR.Internal; @@ -43,15 +42,6 @@ public void Remove(string connectionId, string groupName) } } - public void RemoveDisconnectedConnection(string connectionId) - { - var groupNames = _groups.Where(x => x.Value.ContainsKey(connectionId)).Select(x => x.Key); - foreach (var groupName in groupNames) - { - Remove(connectionId, groupName); - } - } - public int Count => _groups.Count; public IEnumerator> GetEnumerator() From 1335aff281e639cca11eec7580c95110194d7579 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 12 Feb 2024 13:21:43 -0800 Subject: [PATCH 129/391] [release/8.0] Fix closing SignalR Websocket connection on server close (#53408) * Fix closing SignalR Websocket connection on server close * fb --------- Co-authored-by: Brennan --- .../src/Internal/HttpConnectionDispatcher.cs | 8 +++++ .../test/HttpConnectionDispatcherTests.cs | 31 +++++++++++++++++++ 2 files changed, 39 insertions(+) diff --git a/src/SignalR/common/Http.Connections/src/Internal/HttpConnectionDispatcher.cs b/src/SignalR/common/Http.Connections/src/Internal/HttpConnectionDispatcher.cs index 7f97e1e29761..c47953e4eebb 100644 --- a/src/SignalR/common/Http.Connections/src/Internal/HttpConnectionDispatcher.cs +++ b/src/SignalR/common/Http.Connections/src/Internal/HttpConnectionDispatcher.cs @@ -168,6 +168,14 @@ private async Task ExecuteAsync(HttpContext context, ConnectionDelegate connecti { transport = HttpTransportType.WebSockets; connection = await GetOrCreateConnectionAsync(context, options); + + if (connection is not null) + { + Log.EstablishedConnection(_logger); + + // Allow the reads to be canceled + connection.Cancellation ??= new CancellationTokenSource(); + } } else { diff --git a/src/SignalR/common/Http.Connections/test/HttpConnectionDispatcherTests.cs b/src/SignalR/common/Http.Connections/test/HttpConnectionDispatcherTests.cs index e02d92df21d0..0f72f214fae9 100644 --- a/src/SignalR/common/Http.Connections/test/HttpConnectionDispatcherTests.cs +++ b/src/SignalR/common/Http.Connections/test/HttpConnectionDispatcherTests.cs @@ -2842,6 +2842,37 @@ public async Task WebSocketConnectionClosingTriggersConnectionClosedToken() } } + [Fact] + public async Task ServerClosingClosesWebSocketConnection() + { + using (StartVerifiableLog()) + { + var manager = CreateConnectionManager(LoggerFactory); + var connection = manager.CreateConnection(); + + var dispatcher = CreateDispatcher(manager, LoggerFactory); + var services = new ServiceCollection(); + services.AddSingleton(); + var context = MakeRequest("/foo", connection, services); + SetTransport(context, HttpTransportType.WebSockets); + + var builder = new ConnectionBuilder(services.BuildServiceProvider()); + builder.UseConnectionHandler(); + var app = builder.Build(); + var options = new HttpConnectionDispatcherOptions(); + options.WebSockets.CloseTimeout = TimeSpan.FromSeconds(1); + + var executeTask = dispatcher.ExecuteAsync(context, options, app); + + // "close" server, since we're not using a server in these tests we just simulate what would be called when the server closes + await connection.DisposeAsync().DefaultTimeout(); + + await connection.ConnectionClosed.WaitForCancellationAsync().DefaultTimeout(); + + await executeTask.DefaultTimeout(); + } + } + public class CustomHttpRequestLifetimeFeature : IHttpRequestLifetimeFeature { public CancellationToken RequestAborted { get; set; } From 5b72da2f40fab01f0eecc28bba3f46d2972f14cb Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 12 Feb 2024 13:23:47 -0800 Subject: [PATCH 130/391] [release/8.0] Update Wix version (#53971) * Update Wix version * Update RepoTasks.csproj --------- Co-authored-by: William Godbe --- eng/targets/Wix.Common.props | 2 +- eng/tools/RepoTasks/RepoTasks.csproj | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/eng/targets/Wix.Common.props b/eng/targets/Wix.Common.props index 730df3c1c8dd..1be1ce45a3e6 100644 --- a/eng/targets/Wix.Common.props +++ b/eng/targets/Wix.Common.props @@ -4,7 +4,7 @@ 2.0 3.14 - 1.0.0-v3.14.0.5722 + 3.14.0-8606.20240208.1 diff --git a/eng/tools/RepoTasks/RepoTasks.csproj b/eng/tools/RepoTasks/RepoTasks.csproj index 19789266e477..aa07cbc9dc51 100644 --- a/eng/tools/RepoTasks/RepoTasks.csproj +++ b/eng/tools/RepoTasks/RepoTasks.csproj @@ -34,7 +34,7 @@
    - + From 9cd97f4f32a968da32f418f64a1b25bca214970b Mon Sep 17 00:00:00 2001 From: Mackinnon Buck Date: Tue, 13 Feb 2024 21:36:17 +0000 Subject: [PATCH 131/391] Merged PR 37179: [internal/release/8.0] [Blazor] Fix interactive server component activation Fixes an issue where interactive server components may sometimes fail to become interactive. --- .../ComponentServiceCollectionExtensions.cs | 2 +- .../ServerRenderingTests/InteractivityTest.cs | 49 +++++++++++++++++++ 2 files changed, 50 insertions(+), 1 deletion(-) diff --git a/src/Components/Server/src/DependencyInjection/ComponentServiceCollectionExtensions.cs b/src/Components/Server/src/DependencyInjection/ComponentServiceCollectionExtensions.cs index bea90b2ec054..66b77af81143 100644 --- a/src/Components/Server/src/DependencyInjection/ComponentServiceCollectionExtensions.cs +++ b/src/Components/Server/src/DependencyInjection/ComponentServiceCollectionExtensions.cs @@ -61,12 +61,12 @@ public static IServerSideBlazorBuilder AddServerSideBlazor(this IServiceCollecti // user's configuration. So even if the user has multiple independent server-side // Components entrypoints, this lot is the same and repeated registrations are a no-op. services.TryAddSingleton(); - services.TryAddSingleton(); services.TryAddSingleton(); services.TryAddSingleton(); services.TryAddSingleton(); services.TryAddSingleton(); services.TryAddSingleton(); + services.TryAddScoped(); services.TryAddScoped(); services.TryAddScoped(); diff --git a/src/Components/test/E2ETest/ServerRenderingTests/InteractivityTest.cs b/src/Components/test/E2ETest/ServerRenderingTests/InteractivityTest.cs index e6068c118a99..240876cf53fa 100644 --- a/src/Components/test/E2ETest/ServerRenderingTests/InteractivityTest.cs +++ b/src/Components/test/E2ETest/ServerRenderingTests/InteractivityTest.cs @@ -1172,6 +1172,55 @@ public void InteractiveServerRootComponent_CanAccessCircuitContext() Browser.Equal("True", () => Browser.FindElement(By.Id("has-circuit-context")).Text); } + [Fact] + public void InteractiveServerRootComponents_CanBecomeInteractive_WithoutInterferingWithOtherCircuits() + { + // Start by setting up 2 tabs with interactive server components. + SetUpPageWithOneInteractiveServerComponent(); + + var firstWindow = Browser.CurrentWindowHandle; + Browser.SwitchTo().NewWindow(WindowType.Tab); + var secondWindow = Browser.CurrentWindowHandle; + + SetUpPageWithOneInteractiveServerComponent(); + + // Start streaming in the second tab. + Browser.Click(By.Id("start-streaming-link")); + Browser.Equal("Streaming", () => Browser.FindElement(By.Id("status")).Text); + + // Add an interactive server component while streaming. + // This will update the existing component, but the new component + // won't become interactive until streaming ends. + Browser.Click(By.Id(AddServerPrerenderedId)); + Browser.Equal("False", () => Browser.FindElement(By.Id($"is-interactive-1")).Text); + + // Add an interactive server component in the first tab. + // This component will become interactive immediately because the response + // that rendered the component will have completed quickly. + Browser.SwitchTo().Window(firstWindow); + Browser.Click(By.Id(AddServerPrerenderedId)); + Browser.Equal("True", () => Browser.FindElement(By.Id($"is-interactive-1")).Text); + + // Stop streaming in the second tab. + // This will activate the pending component for interactivity. + // This check verifies that a circuit can activate components from its most + // recent response, even if that response isn't the most recent between all + // circuits. + Browser.SwitchTo().Window(secondWindow); + Browser.Click(By.Id("stop-streaming-link")); + Browser.Equal("True", () => Browser.FindElement(By.Id($"is-interactive-1")).Text); + + void SetUpPageWithOneInteractiveServerComponent() + { + Navigate($"{ServerPathBase}/streaming-interactivity"); + + Browser.Equal("Not streaming", () => Browser.FindElement(By.Id("status")).Text); + + Browser.Click(By.Id(AddServerPrerenderedId)); + Browser.Equal("True", () => Browser.FindElement(By.Id($"is-interactive-0")).Text); + } + } + private void BlockWebAssemblyResourceLoad() { // Force a WebAssembly resource cache miss so that we can fall back to using server interactivity From 62a5df19b6e5d5e5c3c8ca26437092aeb1f45803 Mon Sep 17 00:00:00 2001 From: wtgodbe Date: Tue, 13 Feb 2024 13:46:33 -0800 Subject: [PATCH 132/391] Update baseline, SDK --- eng/Baseline.Designer.props | 502 ++++++++++++++++++------------------ eng/Baseline.xml | 212 +++++++-------- eng/Versions.props | 2 +- global.json | 4 +- 4 files changed, 360 insertions(+), 360 deletions(-) diff --git a/eng/Baseline.Designer.props b/eng/Baseline.Designer.props index e1ede3cc8caf..537411483eed 100644 --- a/eng/Baseline.Designer.props +++ b/eng/Baseline.Designer.props @@ -2,117 +2,117 @@ $(MSBuildAllProjects);$(MSBuildThisFileFullPath) - 8.0.1 + 8.0.2 - 8.0.1 + 8.0.2 - 8.0.1 + 8.0.2 - 8.0.1 + 8.0.2 - 8.0.1 + 8.0.2 - 8.0.1 + 8.0.2 - 8.0.1 + 8.0.2 - 8.0.1 + 8.0.2 - 8.0.1 + 8.0.2 - 8.0.1 + 8.0.2 - 8.0.1 + 8.0.2 - 8.0.1 + 8.0.2 - 8.0.1 + 8.0.2 - 8.0.1 + 8.0.2 - 8.0.1 + 8.0.2 - 8.0.1 + 8.0.2 - 8.0.1 + 8.0.2 - 8.0.1 + 8.0.2 - 8.0.1 + 8.0.2 - 8.0.1 + 8.0.2 - 8.0.1 + 8.0.2 - 8.0.1 + 8.0.2 - + - 8.0.1 + 8.0.2 - 8.0.1 + 8.0.2 - 8.0.1 + 8.0.2 @@ -120,137 +120,137 @@ - 8.0.1 + 8.0.2 - + - + - + - + - + - + - 8.0.1 + 8.0.2 - + - 8.0.1 + 8.0.2 - 8.0.1 + 8.0.2 - + - 8.0.1 + 8.0.2 - - + + - 8.0.1 + 8.0.2 - 8.0.1 + 8.0.2 - - + + - 8.0.1 + 8.0.2 - + - 8.0.1 + 8.0.2 - + - 8.0.1 + 8.0.2 - + - 8.0.1 + 8.0.2 - - + + - 8.0.1 + 8.0.2 - - - + + + - 8.0.1 + 8.0.2 - - + + - 8.0.1 + 8.0.2 - - + + - 8.0.1 + 8.0.2 - 8.0.1 + 8.0.2 - 8.0.1 + 8.0.2 - - + + @@ -258,142 +258,142 @@ - 8.0.1 + 8.0.2 - + - 8.0.1 + 8.0.2 - + - + - + - + - 8.0.1 + 8.0.2 - 8.0.1 + 8.0.2 - + - + - + - 8.0.1 + 8.0.2 - - + + - + - - + + - + - - + + - + - 8.0.1 + 8.0.2 - 8.0.1 + 8.0.2 - - + + - 8.0.1 + 8.0.2 - + - + - + - 8.0.1 + 8.0.2 - + - + - + - 8.0.1 + 8.0.2 - + - 8.0.1 + 8.0.2 @@ -402,7 +402,7 @@ - 8.0.1 + 8.0.2 @@ -410,71 +410,71 @@ - 8.0.1 + 8.0.2 - 8.0.1 + 8.0.2 - + - + - + - + - + - + - + - + - 8.0.1 + 8.0.2 - - + + - + - - + + - 8.0.1 + 8.0.2 - - + + - 8.0.1 + 8.0.2 - - + + - 8.0.1 + 8.0.2 @@ -490,27 +490,27 @@ - 8.0.1 + 8.0.2 - 8.0.1 + 8.0.2 - 8.0.1 + 8.0.2 - + - 8.0.1 + 8.0.2 @@ -519,79 +519,79 @@ - 8.0.1 + 8.0.2 - + - 8.0.1 + 8.0.2 - 8.0.1 + 8.0.2 - + - 8.0.1 + 8.0.2 - 8.0.1 + 8.0.2 - - + + - - + + - - + + - 8.0.1 + 8.0.2 - - + + - - + + - - + + - - + + @@ -599,190 +599,190 @@ - 8.0.1 + 8.0.2 - - + + - + - - + + - - - + + + - 8.0.1 + 8.0.2 - + - + - + - 8.0.1 + 8.0.2 - + - + - + - 8.0.1 + 8.0.2 - + - + - + - 8.0.1 + 8.0.2 - - - - + + + + - 8.0.1 + 8.0.2 - + - 8.0.1 + 8.0.2 - 8.0.1 + 8.0.2 - 8.0.1 + 8.0.2 - 8.0.1 + 8.0.2 - + - 8.0.1 + 8.0.2 - + - 8.0.1 + 8.0.2 - 8.0.1 + 8.0.2 - 8.0.1 + 8.0.2 - 8.0.1 + 8.0.2 - 8.0.1 + 8.0.2 - 8.0.1 + 8.0.2 - 8.0.1 + 8.0.2 - + - + - + - 8.0.1 + 8.0.2 - + - + - + - 8.0.1 + 8.0.2 @@ -798,48 +798,48 @@ - 8.0.1 + 8.0.2 - + - + - + - + - + - + - 8.0.1 + 8.0.2 - 8.0.1 + 8.0.2 - - - + + + - 8.0.1 + 8.0.2 - 8.0.1 + 8.0.2 @@ -849,7 +849,7 @@ - 8.0.1 + 8.0.2 @@ -858,73 +858,73 @@ - 8.0.1 + 8.0.2 - + - + - + - + - + - + - 8.0.1 + 8.0.2 - + - + - + - 8.0.1 + 8.0.2 - + - + - + - + - + - + - 8.0.1 + 8.0.2 - 8.0.1 + 8.0.2 @@ -953,40 +953,40 @@ - 8.0.1 + 8.0.2 - 8.0.1 + 8.0.2 - + - + - + - 8.0.1 + 8.0.2 - 8.0.1 + 8.0.2 - + - 8.0.1 + 8.0.2 diff --git a/eng/Baseline.xml b/eng/Baseline.xml index f88c76c8f57b..b2335226206e 100644 --- a/eng/Baseline.xml +++ b/eng/Baseline.xml @@ -4,110 +4,110 @@ This file contains a list of all the packages and their versions which were rele Update this list when preparing for a new patch. --> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/eng/Versions.props b/eng/Versions.props index 6dbbc0304702..05f1714facfd 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -11,7 +11,7 @@ 3 - false + true 7.1.2 + + + + + + + + @@ -30,9 +38,17 @@ + + + + + + + + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 4d6216446367..868b54cdd29b 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -376,26 +376,26 @@ https://github.com/dotnet/winforms abda8e3bfa78319363526b5a5f86863ec979940e
    - + https://github.com/dotnet/arcade - 61ae141d2bf3534619265c8f691fd55dc3e75147 + da98edc4c3ea539f109ea320672136ceb32591a7 - + https://github.com/dotnet/arcade - 61ae141d2bf3534619265c8f691fd55dc3e75147 + da98edc4c3ea539f109ea320672136ceb32591a7 - + https://github.com/dotnet/arcade - 61ae141d2bf3534619265c8f691fd55dc3e75147 + da98edc4c3ea539f109ea320672136ceb32591a7 - + https://github.com/dotnet/arcade - 61ae141d2bf3534619265c8f691fd55dc3e75147 + da98edc4c3ea539f109ea320672136ceb32591a7 - + https://github.com/dotnet/arcade - 61ae141d2bf3534619265c8f691fd55dc3e75147 + da98edc4c3ea539f109ea320672136ceb32591a7 https://github.com/dotnet/extensions diff --git a/eng/Versions.props b/eng/Versions.props index 05f1714facfd..24ac766a4c42 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -161,9 +161,9 @@ 6.2.4 6.2.4 - 8.0.0-beta.24059.4 - 8.0.0-beta.24059.4 - 8.0.0-beta.24059.4 + 8.0.0-beta.24113.2 + 8.0.0-beta.24113.2 + 8.0.0-beta.24113.2 8.0.0-alpha.1.24065.1 diff --git a/eng/common/post-build/publish-using-darc.ps1 b/eng/common/post-build/publish-using-darc.ps1 index 1e779fec4dd1..5a3a32ea8d75 100644 --- a/eng/common/post-build/publish-using-darc.ps1 +++ b/eng/common/post-build/publish-using-darc.ps1 @@ -12,7 +12,7 @@ param( try { . $PSScriptRoot\post-build-utils.ps1 - $darc = Get-Darc + $darc = Get-Darc $optionalParams = [System.Collections.ArrayList]::new() @@ -46,7 +46,7 @@ try { } Write-Host 'done.' -} +} catch { Write-Host $_ Write-PipelineTelemetryError -Category 'PromoteBuild' -Message "There was an error while trying to publish build '$BuildId' to default channels." diff --git a/eng/common/templates/job/publish-build-assets.yml b/eng/common/templates/job/publish-build-assets.yml index fa5446c093dd..8ec0151def21 100644 --- a/eng/common/templates/job/publish-build-assets.yml +++ b/eng/common/templates/job/publish-build-assets.yml @@ -58,7 +58,7 @@ jobs: demands: Cmd # If it's not devdiv, it's dnceng ${{ if ne(variables['System.TeamProject'], 'DevDiv') }}: - name: $(DncEngInternalBuildPool) + name: NetCore1ESPool-Publishing-Internal demands: ImageOverride -equals windows.vs2019.amd64 steps: @@ -71,7 +71,7 @@ jobs: checkDownloadedFiles: true condition: ${{ parameters.condition }} continueOnError: ${{ parameters.continueOnError }} - + - task: NuGetAuthenticate@1 - task: PowerShell@2 @@ -86,7 +86,7 @@ jobs: /p:OfficialBuildId=$(Build.BuildNumber) condition: ${{ parameters.condition }} continueOnError: ${{ parameters.continueOnError }} - + - task: powershell@2 displayName: Create ReleaseConfigs Artifact inputs: @@ -95,7 +95,7 @@ jobs: Add-Content -Path "$(Build.StagingDirectory)/ReleaseConfigs.txt" -Value $(BARBuildId) Add-Content -Path "$(Build.StagingDirectory)/ReleaseConfigs.txt" -Value "$(DefaultChannels)" Add-Content -Path "$(Build.StagingDirectory)/ReleaseConfigs.txt" -Value $(IsStableBuild) - + - task: PublishBuildArtifacts@1 displayName: Publish ReleaseConfigs Artifact inputs: @@ -121,7 +121,7 @@ jobs: - task: PublishBuildArtifacts@1 displayName: Publish SymbolPublishingExclusionsFile Artifact - condition: eq(variables['SymbolExclusionFile'], 'true') + condition: eq(variables['SymbolExclusionFile'], 'true') inputs: PathtoPublish: '$(Build.SourcesDirectory)/eng/SymbolPublishingExclusionsFile.txt' PublishLocation: Container @@ -137,7 +137,7 @@ jobs: displayName: Publish Using Darc inputs: filePath: $(Build.SourcesDirectory)/eng/common/post-build/publish-using-darc.ps1 - arguments: -BuildId $(BARBuildId) + arguments: -BuildId $(BARBuildId) -PublishingInfraVersion 3 -AzdoToken '$(publishing-dnceng-devdiv-code-r-build-re)' -MaestroToken '$(MaestroApiAccessToken)' @@ -148,4 +148,4 @@ jobs: - ${{ if eq(parameters.enablePublishBuildArtifacts, 'true') }}: - template: /eng/common/templates/steps/publish-logs.yml parameters: - JobLabel: 'Publish_Artifacts_Logs' + JobLabel: 'Publish_Artifacts_Logs' diff --git a/eng/common/templates/post-build/post-build.yml b/eng/common/templates/post-build/post-build.yml index 3f74abf7ce0f..aba44a25a338 100644 --- a/eng/common/templates/post-build/post-build.yml +++ b/eng/common/templates/post-build/post-build.yml @@ -39,7 +39,7 @@ parameters: displayName: Enable NuGet validation type: boolean default: true - + - name: publishInstallersAndChecksums displayName: Publish installers and checksums type: boolean @@ -131,8 +131,8 @@ stages: displayName: Validate inputs: filePath: $(Build.SourcesDirectory)/eng/common/post-build/nuget-validation.ps1 - arguments: -PackagesPath $(Build.ArtifactStagingDirectory)/PackageArtifacts/ - -ToolDestinationPath $(Agent.BuildDirectory)/Extract/ + arguments: -PackagesPath $(Build.ArtifactStagingDirectory)/PackageArtifacts/ + -ToolDestinationPath $(Agent.BuildDirectory)/Extract/ - job: displayName: Signing Validation @@ -221,9 +221,9 @@ stages: displayName: Validate inputs: filePath: $(Build.SourcesDirectory)/eng/common/post-build/sourcelink-validation.ps1 - arguments: -InputPath $(Build.ArtifactStagingDirectory)/BlobArtifacts/ - -ExtractPath $(Agent.BuildDirectory)/Extract/ - -GHRepoName $(Build.Repository.Name) + arguments: -InputPath $(Build.ArtifactStagingDirectory)/BlobArtifacts/ + -ExtractPath $(Agent.BuildDirectory)/Extract/ + -GHRepoName $(Build.Repository.Name) -GHCommit $(Build.SourceVersion) -SourcelinkCliVersion $(SourceLinkCLIVersion) continueOnError: true @@ -258,7 +258,7 @@ stages: demands: Cmd # If it's not devdiv, it's dnceng ${{ else }}: - name: $(DncEngInternalBuildPool) + name: NetCore1ESPool-Publishing-Internal demands: ImageOverride -equals windows.vs2019.amd64 steps: - template: setup-maestro-vars.yml @@ -272,7 +272,7 @@ stages: displayName: Publish Using Darc inputs: filePath: $(Build.SourcesDirectory)/eng/common/post-build/publish-using-darc.ps1 - arguments: -BuildId $(BARBuildId) + arguments: -BuildId $(BARBuildId) -PublishingInfraVersion ${{ parameters.publishingInfraVersion }} -AzdoToken '$(publishing-dnceng-devdiv-code-r-build-re)' -MaestroToken '$(MaestroApiAccessToken)' diff --git a/eng/common/templates/variables/pool-providers.yml b/eng/common/templates/variables/pool-providers.yml index 9cc5c550d3b3..d236f9fdbb15 100644 --- a/eng/common/templates/variables/pool-providers.yml +++ b/eng/common/templates/variables/pool-providers.yml @@ -1,15 +1,15 @@ -# Select a pool provider based off branch name. Anything with branch name containing 'release' must go into an -Svc pool, +# Select a pool provider based off branch name. Anything with branch name containing 'release' must go into an -Svc pool, # otherwise it should go into the "normal" pools. This separates out the queueing and billing of released branches. -# Motivation: +# Motivation: # Once a given branch of a repository's output has been officially "shipped" once, it is then considered to be COGS # (Cost of goods sold) and should be moved to a servicing pool provider. This allows both separation of queueing # (allowing release builds and main PR builds to not intefere with each other) and billing (required for COGS. -# Additionally, the pool provider name itself may be subject to change when the .NET Core Engineering Services -# team needs to move resources around and create new and potentially differently-named pools. Using this template +# Additionally, the pool provider name itself may be subject to change when the .NET Core Engineering Services +# team needs to move resources around and create new and potentially differently-named pools. Using this template # file from an Arcade-ified repo helps guard against both having to update one's release/* branches and renaming. -# How to use: +# How to use: # This yaml assumes your shipped product branches use the naming convention "release/..." (which many do). # If we find alternate naming conventions in broad usage it can be added to the condition below. # @@ -54,4 +54,4 @@ variables: False, 'NetCore1ESPool-Internal' ) - ] \ No newline at end of file + ] diff --git a/global.json b/global.json index 87a914e2d4e2..cf8518ed1b74 100644 --- a/global.json +++ b/global.json @@ -27,7 +27,7 @@ }, "msbuild-sdks": { "Yarn.MSBuild": "1.22.19", - "Microsoft.DotNet.Arcade.Sdk": "8.0.0-beta.24059.4", - "Microsoft.DotNet.Helix.Sdk": "8.0.0-beta.24059.4" + "Microsoft.DotNet.Arcade.Sdk": "8.0.0-beta.24113.2", + "Microsoft.DotNet.Helix.Sdk": "8.0.0-beta.24113.2" } } From b95da6a71188fd56e2a61fd33f77b541196ae6cd Mon Sep 17 00:00:00 2001 From: DotNet-Bot Date: Fri, 16 Feb 2024 18:58:22 +0000 Subject: [PATCH 134/391] Update dependencies from https://dev.azure.com/dnceng/internal/_git/dotnet-efcore build 20240215.10 dotnet-ef , Microsoft.EntityFrameworkCore , Microsoft.EntityFrameworkCore.Design , Microsoft.EntityFrameworkCore.InMemory , Microsoft.EntityFrameworkCore.Relational , Microsoft.EntityFrameworkCore.Sqlite , Microsoft.EntityFrameworkCore.SqlServer , Microsoft.EntityFrameworkCore.Tools From Version 8.0.3 -> To Version 8.0.3 --- NuGet.config | 14 ++------------ eng/Version.Details.xml | 16 ++++++++-------- 2 files changed, 10 insertions(+), 20 deletions(-) diff --git a/NuGet.config b/NuGet.config index fe635a3bde1b..f6dcba9cd1aa 100644 --- a/NuGet.config +++ b/NuGet.config @@ -6,12 +6,7 @@ - - - - - - + @@ -39,12 +34,7 @@ - - - - - - + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 5b812d9bbcf0..e0bbfbe4de01 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -11,35 +11,35 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - fb708b2c4589b05458f2486143f9848edce8ddb4 + c2f996919858eb11d2836705d47b531b5a174c79 https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - fb708b2c4589b05458f2486143f9848edce8ddb4 + c2f996919858eb11d2836705d47b531b5a174c79 https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - fb708b2c4589b05458f2486143f9848edce8ddb4 + c2f996919858eb11d2836705d47b531b5a174c79 https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - fb708b2c4589b05458f2486143f9848edce8ddb4 + c2f996919858eb11d2836705d47b531b5a174c79 https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - fb708b2c4589b05458f2486143f9848edce8ddb4 + c2f996919858eb11d2836705d47b531b5a174c79 https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - fb708b2c4589b05458f2486143f9848edce8ddb4 + c2f996919858eb11d2836705d47b531b5a174c79 https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - fb708b2c4589b05458f2486143f9848edce8ddb4 + c2f996919858eb11d2836705d47b531b5a174c79 https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - fb708b2c4589b05458f2486143f9848edce8ddb4 + c2f996919858eb11d2836705d47b531b5a174c79 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime From 88ec3bc3f37e76fbcc932a25f9f0c1c29fe2b343 Mon Sep 17 00:00:00 2001 From: DotNet Bot Date: Fri, 16 Feb 2024 20:49:02 +0000 Subject: [PATCH 135/391] [internal/release/8.0] Update dependencies from dnceng/internal/dotnet-efcore, dnceng/internal/dotnet-runtime --- NuGet.config | 12 ++------- eng/Version.Details.xml | 54 ++++++++++++++++++++--------------------- eng/Versions.props | 26 ++++++++++---------- 3 files changed, 42 insertions(+), 50 deletions(-) diff --git a/NuGet.config b/NuGet.config index f6dcba9cd1aa..b118e41dec14 100644 --- a/NuGet.config +++ b/NuGet.config @@ -9,11 +9,7 @@ - - - - - + @@ -37,11 +33,7 @@ - - - - - + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index e0bbfbe4de01..8df7c9d6944c 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -89,9 +89,9 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime 5535e31a712343a63f5d7d796cd874e563e5ac14 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 5535e31a712343a63f5d7d796cd874e563e5ac14 + 9f4b1f5d664afdfc80e1508ab7ed099dff210fbd https://dev.azure.com/dnceng/internal/_git/dotnet-runtime @@ -121,9 +121,9 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime 5535e31a712343a63f5d7d796cd874e563e5ac14 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 1381d5ebd2ab1f292848d5b19b80cf71ac332508 + 9f4b1f5d664afdfc80e1508ab7ed099dff210fbd https://dev.azure.com/dnceng/internal/_git/dotnet-runtime @@ -137,9 +137,9 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime 5535e31a712343a63f5d7d796cd874e563e5ac14 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 5535e31a712343a63f5d7d796cd874e563e5ac14 + 9f4b1f5d664afdfc80e1508ab7ed099dff210fbd https://dev.azure.com/dnceng/internal/_git/dotnet-runtime @@ -179,15 +179,15 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 1381d5ebd2ab1f292848d5b19b80cf71ac332508 + 9f4b1f5d664afdfc80e1508ab7ed099dff210fbd https://dev.azure.com/dnceng/internal/_git/dotnet-runtime 5535e31a712343a63f5d7d796cd874e563e5ac14 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 1381d5ebd2ab1f292848d5b19b80cf71ac332508 + 9f4b1f5d664afdfc80e1508ab7ed099dff210fbd https://github.com/dotnet/source-build-externals @@ -255,9 +255,9 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime 5535e31a712343a63f5d7d796cd874e563e5ac14 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 1381d5ebd2ab1f292848d5b19b80cf71ac332508 + 9f4b1f5d664afdfc80e1508ab7ed099dff210fbd https://dev.azure.com/dnceng/internal/_git/dotnet-runtime @@ -275,17 +275,17 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime 5535e31a712343a63f5d7d796cd874e563e5ac14 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 1381d5ebd2ab1f292848d5b19b80cf71ac332508 + 9f4b1f5d664afdfc80e1508ab7ed099dff210fbd - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 1381d5ebd2ab1f292848d5b19b80cf71ac332508 + 9f4b1f5d664afdfc80e1508ab7ed099dff210fbd - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 1381d5ebd2ab1f292848d5b19b80cf71ac332508 + 9f4b1f5d664afdfc80e1508ab7ed099dff210fbd https://dev.azure.com/dnceng/internal/_git/dotnet-runtime @@ -316,22 +316,22 @@ Win-x64 is used here because we have picked an arbitrary runtime identifier to flow the version of the latest NETCore.App runtime. All Runtime.$rid packages should have the same version. --> - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 1381d5ebd2ab1f292848d5b19b80cf71ac332508 + 9f4b1f5d664afdfc80e1508ab7ed099dff210fbd - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 1381d5ebd2ab1f292848d5b19b80cf71ac332508 + 9f4b1f5d664afdfc80e1508ab7ed099dff210fbd - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 1381d5ebd2ab1f292848d5b19b80cf71ac332508 + 9f4b1f5d664afdfc80e1508ab7ed099dff210fbd - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 1381d5ebd2ab1f292848d5b19b80cf71ac332508 + 9f4b1f5d664afdfc80e1508ab7ed099dff210fbd https://github.com/dotnet/xdt @@ -368,9 +368,9 @@ - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 1381d5ebd2ab1f292848d5b19b80cf71ac332508 + 9f4b1f5d664afdfc80e1508ab7ed099dff210fbd https://github.com/dotnet/winforms diff --git a/eng/Versions.props b/eng/Versions.props index 4c90871b8954..eec156015f1a 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -66,12 +66,12 @@ 8.0.0 - 8.0.2 - 8.0.2 - 8.0.2 - 8.0.2 - 8.0.2 - 8.0.2-servicing.24067.11 + 8.0.3 + 8.0.3 + 8.0.3 + 8.0.3 + 8.0.3 + 8.0.3-servicing.24114.23 8.0.0 8.0.0 8.0.0 @@ -84,7 +84,7 @@ 8.0.0 8.0.0 8.0.0 - 8.0.0 + 8.0.1 8.0.0 8.0.0 8.0.0 @@ -92,11 +92,11 @@ 8.0.0 8.0.0 8.0.0 - 8.0.2-servicing.24067.11 + 8.0.3-servicing.24114.23 8.0.0 8.0.0 8.0.0 - 8.0.0 + 8.0.1 8.0.0 8.0.0 8.0.0 @@ -108,7 +108,7 @@ 8.0.0 8.0.2 8.0.0 - 8.0.2-servicing.24067.11 + 8.0.3-servicing.24114.23 8.0.0 8.0.0 8.0.0 @@ -124,13 +124,13 @@ 8.0.0 8.0.0 8.0.0 - 8.0.2 + 8.0.3 8.0.0 8.0.0 8.0.0 - 8.0.2-servicing.24067.11 + 8.0.3-servicing.24114.23 - 8.0.2-servicing.24067.11 + 8.0.3-servicing.24114.23 8.0.0 8.0.1 From c14e9c1a04e0858f4047a2f9a8b52318e9c169e7 Mon Sep 17 00:00:00 2001 From: DotNet Bot Date: Wed, 6 Mar 2024 01:44:58 +0000 Subject: [PATCH 136/391] [internal/release/8.0] Update dependencies from dnceng/internal/dotnet-efcore --- NuGet.config | 8 ++++++-- eng/Version.Details.xml | 32 ++++++++++++++++---------------- eng/Versions.props | 16 ++++++++-------- 3 files changed, 30 insertions(+), 26 deletions(-) diff --git a/NuGet.config b/NuGet.config index b118e41dec14..f8573310cc80 100644 --- a/NuGet.config +++ b/NuGet.config @@ -6,10 +6,12 @@ - + + + @@ -30,9 +32,11 @@ - + + + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 8df7c9d6944c..d8258189f861 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -9,37 +9,37 @@ --> - + https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - c2f996919858eb11d2836705d47b531b5a174c79 + e62ec69af3257f1484074652bc767be03b334be6 - + https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - c2f996919858eb11d2836705d47b531b5a174c79 + e62ec69af3257f1484074652bc767be03b334be6 - + https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - c2f996919858eb11d2836705d47b531b5a174c79 + e62ec69af3257f1484074652bc767be03b334be6 - + https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - c2f996919858eb11d2836705d47b531b5a174c79 + e62ec69af3257f1484074652bc767be03b334be6 - + https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - c2f996919858eb11d2836705d47b531b5a174c79 + e62ec69af3257f1484074652bc767be03b334be6 - + https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - c2f996919858eb11d2836705d47b531b5a174c79 + e62ec69af3257f1484074652bc767be03b334be6 - + https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - c2f996919858eb11d2836705d47b531b5a174c79 + e62ec69af3257f1484074652bc767be03b334be6 - + https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - c2f996919858eb11d2836705d47b531b5a174c79 + e62ec69af3257f1484074652bc767be03b334be6 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime diff --git a/eng/Versions.props b/eng/Versions.props index eec156015f1a..d376a280e92f 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -142,14 +142,14 @@ 8.1.0-preview.23604.1 8.1.0-preview.23604.1 - 8.0.3 - 8.0.3 - 8.0.3 - 8.0.3 - 8.0.3 - 8.0.3 - 8.0.3 - 8.0.3 + 8.0.4 + 8.0.4 + 8.0.4 + 8.0.4 + 8.0.4 + 8.0.4 + 8.0.4 + 8.0.4 4.8.0-3.23518.7 4.8.0-3.23518.7 From 65cdaeb9a7d1c895baecc8be256d6a8abd0f8a67 Mon Sep 17 00:00:00 2001 From: DotNet Bot Date: Wed, 6 Mar 2024 03:22:09 +0000 Subject: [PATCH 137/391] [internal/release/8.0] Update dependencies from dnceng/internal/dotnet-efcore --- NuGet.config | 4 ++-- eng/Version.Details.xml | 16 ++++++++-------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/NuGet.config b/NuGet.config index f8573310cc80..d81eaf35c174 100644 --- a/NuGet.config +++ b/NuGet.config @@ -6,7 +6,7 @@ - + @@ -32,7 +32,7 @@ - + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index d8258189f861..f893413cefda 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -11,35 +11,35 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - e62ec69af3257f1484074652bc767be03b334be6 + f45a470fcff46f6401c261e59221c45eae2b8d8a https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - e62ec69af3257f1484074652bc767be03b334be6 + f45a470fcff46f6401c261e59221c45eae2b8d8a https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - e62ec69af3257f1484074652bc767be03b334be6 + f45a470fcff46f6401c261e59221c45eae2b8d8a https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - e62ec69af3257f1484074652bc767be03b334be6 + f45a470fcff46f6401c261e59221c45eae2b8d8a https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - e62ec69af3257f1484074652bc767be03b334be6 + f45a470fcff46f6401c261e59221c45eae2b8d8a https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - e62ec69af3257f1484074652bc767be03b334be6 + f45a470fcff46f6401c261e59221c45eae2b8d8a https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - e62ec69af3257f1484074652bc767be03b334be6 + f45a470fcff46f6401c261e59221c45eae2b8d8a https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - e62ec69af3257f1484074652bc767be03b334be6 + f45a470fcff46f6401c261e59221c45eae2b8d8a https://dev.azure.com/dnceng/internal/_git/dotnet-runtime From 08ea01cfb0d8ac543a6cbb3370e65e624f98b0ec Mon Sep 17 00:00:00 2001 From: DotNet Bot Date: Wed, 6 Mar 2024 07:35:11 +0000 Subject: [PATCH 138/391] [internal/release/8.0] Update dependencies from dnceng/internal/dotnet-efcore --- NuGet.config | 4 ++-- eng/Version.Details.xml | 16 ++++++++-------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/NuGet.config b/NuGet.config index d81eaf35c174..697be057b98f 100644 --- a/NuGet.config +++ b/NuGet.config @@ -6,7 +6,7 @@ - + @@ -32,7 +32,7 @@ - + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index f893413cefda..32550ec86ca8 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -11,35 +11,35 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - f45a470fcff46f6401c261e59221c45eae2b8d8a + 4b06689e8765bc767ec2b4a2042a5bb63da777f7 https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - f45a470fcff46f6401c261e59221c45eae2b8d8a + 4b06689e8765bc767ec2b4a2042a5bb63da777f7 https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - f45a470fcff46f6401c261e59221c45eae2b8d8a + 4b06689e8765bc767ec2b4a2042a5bb63da777f7 https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - f45a470fcff46f6401c261e59221c45eae2b8d8a + 4b06689e8765bc767ec2b4a2042a5bb63da777f7 https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - f45a470fcff46f6401c261e59221c45eae2b8d8a + 4b06689e8765bc767ec2b4a2042a5bb63da777f7 https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - f45a470fcff46f6401c261e59221c45eae2b8d8a + 4b06689e8765bc767ec2b4a2042a5bb63da777f7 https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - f45a470fcff46f6401c261e59221c45eae2b8d8a + 4b06689e8765bc767ec2b4a2042a5bb63da777f7 https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - f45a470fcff46f6401c261e59221c45eae2b8d8a + 4b06689e8765bc767ec2b4a2042a5bb63da777f7 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime From ce1f66da9c17294f0f03775d8f67dc15700a2bc7 Mon Sep 17 00:00:00 2001 From: vseanreesermsft <78103370+vseanreesermsft@users.noreply.github.com> Date: Wed, 6 Mar 2024 12:21:32 -0800 Subject: [PATCH 139/391] Update branding to 8.0.4 (#54380) --- eng/Versions.props | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/eng/Versions.props b/eng/Versions.props index 24ac766a4c42..184db4c0eb7f 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -8,10 +8,10 @@ 8 0 - 3 + 4 - true + false 7.1.2 - + @@ -32,7 +32,7 @@ - + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 32550ec86ca8..2c127def182d 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -11,35 +11,35 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 4b06689e8765bc767ec2b4a2042a5bb63da777f7 + ffbe02d729a4a43136e94a3366588257968c004a https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 4b06689e8765bc767ec2b4a2042a5bb63da777f7 + ffbe02d729a4a43136e94a3366588257968c004a https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 4b06689e8765bc767ec2b4a2042a5bb63da777f7 + ffbe02d729a4a43136e94a3366588257968c004a https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 4b06689e8765bc767ec2b4a2042a5bb63da777f7 + ffbe02d729a4a43136e94a3366588257968c004a https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 4b06689e8765bc767ec2b4a2042a5bb63da777f7 + ffbe02d729a4a43136e94a3366588257968c004a https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 4b06689e8765bc767ec2b4a2042a5bb63da777f7 + ffbe02d729a4a43136e94a3366588257968c004a https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 4b06689e8765bc767ec2b4a2042a5bb63da777f7 + ffbe02d729a4a43136e94a3366588257968c004a https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 4b06689e8765bc767ec2b4a2042a5bb63da777f7 + ffbe02d729a4a43136e94a3366588257968c004a https://dev.azure.com/dnceng/internal/_git/dotnet-runtime From 350b79fd1ef8b07c5a7db1e8a4bb85e4b7b434ba Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" <42748379+dotnet-maestro[bot]@users.noreply.github.com> Date: Sat, 9 Mar 2024 01:09:46 +0000 Subject: [PATCH 147/391] Update dependencies from https://github.com/dotnet/source-build-externals build 20240308.3 (#54453) [release/8.0] Update dependencies from dotnet/source-build-externals --- NuGet.config | 20 -------------------- eng/Version.Details.xml | 4 ++-- eng/Versions.props | 2 +- 3 files changed, 3 insertions(+), 23 deletions(-) diff --git a/NuGet.config b/NuGet.config index df02beaac395..1c2f27eb90ce 100644 --- a/NuGet.config +++ b/NuGet.config @@ -6,18 +6,8 @@ - - - - - - - - - - @@ -38,18 +28,8 @@ - - - - - - - - - - diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 868b54cdd29b..2286c6254318 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -189,9 +189,9 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime 1381d5ebd2ab1f292848d5b19b80cf71ac332508 - + https://github.com/dotnet/source-build-externals - 83274d94c7e2ff21081b0d75ecbec2da2241f831 + 7a9b99e457a2b9792a3c17ccaf95d80038725108 diff --git a/eng/Versions.props b/eng/Versions.props index 184db4c0eb7f..2bdd5cda215f 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -165,7 +165,7 @@ 8.0.0-beta.24113.2 8.0.0-beta.24113.2 - 8.0.0-alpha.1.24065.1 + 8.0.0-alpha.1.24158.3 8.0.0-alpha.1.24061.1 From 90c120138769704703c92f17c477a66a42463d32 Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" <42748379+dotnet-maestro[bot]@users.noreply.github.com> Date: Mon, 11 Mar 2024 16:20:37 +0000 Subject: [PATCH 148/391] Update dependencies from https://github.com/dotnet/source-build-externals build 20240311.1 (#54489) [release/8.0] Update dependencies from dotnet/source-build-externals --- eng/Version.Details.xml | 4 ++-- eng/Versions.props | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 2286c6254318..aea0f0fd5305 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -189,9 +189,9 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime 1381d5ebd2ab1f292848d5b19b80cf71ac332508 - + https://github.com/dotnet/source-build-externals - 7a9b99e457a2b9792a3c17ccaf95d80038725108 + 00fb7841c80b44262646e57bcfbe90a1b7bc3151 diff --git a/eng/Versions.props b/eng/Versions.props index 2bdd5cda215f..90a48f261e41 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -165,7 +165,7 @@ 8.0.0-beta.24113.2 8.0.0-beta.24113.2 - 8.0.0-alpha.1.24158.3 + 8.0.0-alpha.1.24161.1 8.0.0-alpha.1.24061.1 From 6be61f743953f71fd833c288a472088dbe5e6f92 Mon Sep 17 00:00:00 2001 From: William Godbe Date: Mon, 11 Mar 2024 15:53:00 -0700 Subject: [PATCH 149/391] Create ci-public.yml (#54440) --- .azure/pipelines/ci-public.yml | 806 +++++++++++++++++++++++++++++++++ 1 file changed, 806 insertions(+) create mode 100644 .azure/pipelines/ci-public.yml diff --git a/.azure/pipelines/ci-public.yml b/.azure/pipelines/ci-public.yml new file mode 100644 index 000000000000..b184f7cef685 --- /dev/null +++ b/.azure/pipelines/ci-public.yml @@ -0,0 +1,806 @@ +# +# See https://learn.microsoft.com/en-us/azure/devops/pipelines/yaml-schema for details on this file. +# + +# Configure which branches trigger builds +trigger: + batch: true + branches: + include: + - main + - release/* + - internal/release/* + +# Run PR validation on all branches +# This doesn't have any path exclusions, even for things like docs, because +# we have it configured in GitHub as a required check, and for it to pass +# it must actually run, even if it's not relevant to a particular change. +pr: + autoCancel: true + branches: + include: + - '*' + +schedules: +- cron: 0 9 * * 1 + displayName: "Run CodeQL3000 weekly, Monday at 2:00 AM PDT" + branches: + include: + - release/2.1 + - release/6.0 + - release/7.0 + - main + always: true + +parameters: +# Choose whether to skip tests when running pipeline manually. +- name: skipTests + default: false + displayName: Skip tests? + type: boolean +# Parameters below are ignored in public builds. +# +# Choose whether to run the CodeQL3000 tasks. +# Manual builds align w/ official builds unless this parameter is true. +- name: runCodeQL3000 + default: false + displayName: Run CodeQL3000 tasks + type: boolean +# Choose whether to enable binlogs when running pipeline manually. +# Binary logs are enabled by default in public builds and aren't designed to be disabled there. +- name: produceBinlogs + default: false + displayName: Produce binlogs? + type: boolean + +variables: +- name: DOTNET_SKIP_FIRST_TIME_EXPERIENCE + value: true +- name: _TeamName + value: AspNetCore +- name: _PublishUsingPipelines + value: true +- ${{ if or(startswith(variables['Build.SourceBranch'], 'refs/heads/release/'), startswith(variables['Build.SourceBranch'], 'refs/heads/internal/release/'), eq(variables['Build.Reason'], 'Manual')) }}: + - name: PostBuildSign + value: false +- ${{ else }}: + - name: PostBuildSign + value: true +- name: _UseHelixOpenQueues + value: ${{ ne(variables['System.TeamProject'], 'internal') }} +- ${{ if and(ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest'), eq(variables['Build.SourceBranch'], 'refs/heads/main')) }}: + - name: enableSourceIndex + value: true +- ${{ if and(ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}: + - name: _BuildArgs + value: /p:TeamName=$(_TeamName) + /p:OfficialBuildId=$(Build.BuildNumber) + /p:SkipTestBuild=true + /p:PostBuildSign=$(PostBuildSign) + # DotNet-Blob-Feed provides: dotnetfeed-storage-access-key-1 + # Publish-Build-Assets provides: MaestroAccessToken, BotAccount-dotnet-maestro-bot-PAT + - group: Publish-Build-Assets + # The following extra properties are not set when testing. Use with final build.[cmd,sh] of asset-producing jobs. + - name: _PublishArgs + value: /p:Publish=true + /p:GenerateChecksums=true + /p:DotNetPublishUsingPipelines=$(_PublishUsingPipelines) + - ${{ if ne(parameters.produceBinlogs, 'true') }}: + # Do not log most Windows steps in official builds; this is the slowest job. Site extensions step always logs. + - name: WindowsArm64LogArgs + value: -ExcludeCIBinaryLog + - name: Windows64LogArgs + value: -ExcludeCIBinaryLog + - name: Windows86LogArgs + value: -ExcludeCIBinaryLog + - name: WindowsSignLogArgs + value: -ExcludeCIBinaryLog + - name: WindowsInstallersLogArgs + value: -ExcludeCIBinaryLog + - name: WindowsArm64InstallersLogArgs + value: -ExcludeCIBinaryLog +- ${{ if or(eq(variables['System.TeamProject'], 'public'), in(variables['Build.Reason'], 'PullRequest')) }}: + - name: _BuildArgs + value: '/p:SkipTestBuild=true /p:PostBuildSign=$(PostBuildSign)' + - name: _PublishArgs + value: '' +- ${{ if or(eq(variables['System.TeamProject'], 'public'), in(variables['Build.Reason'], 'PullRequest'), eq(parameters.produceBinlogs, 'true')) }}: + # Write binary logs for all main Windows build steps except the x86 one in public and PR builds. + - name: WindowsArm64LogArgs + value: /bl:artifacts/log/Release/Build.arm64.binlog + - name: Windows64LogArgs + value: /bl:artifacts/log/Release/Build.x64.binlog + - name: Windows86LogArgs + value: -ExcludeCIBinaryLog + - name: WindowsSignLogArgs + value: /bl:artifacts/log/Release/Build.CodeSign.binlog + - name: WindowsInstallersLogArgs + value: /bl:artifacts/log/Release/Build.Installers.binlog + - name: WindowsArm64InstallersLogArgs + value: /bl:artifacts/log/Release/Build.Installers.Arm64.binlog +- ${{ if ne(variables['System.TeamProject'], 'internal') }}: + - name: _SignType + value: '' + - name: _InternalRuntimeDownloadArgs + value: '' + - name: _InternalRuntimeDownloadCodeSignArgs + value: '' +- ${{ if eq(variables['System.TeamProject'], 'internal') }}: + - group: DotNetBuilds storage account read tokens + - name: _InternalRuntimeDownloadArgs + value: -RuntimeSourceFeed https://dotnetbuilds.blob.core.windows.net/internal + -RuntimeSourceFeedKey $(dotnetbuilds-internal-container-read-token-base64) + /p:DotNetAssetRootAccessTokenSuffix='$(dotnetbuilds-internal-container-read-token-base64)' + # The code signing doesn't use the aspnet build scripts, so the msbuild parameters have to be passed directly. This + # is awkward but necessary because the eng/common/ build scripts don't add the msbuild properties automatically. + - name: _InternalRuntimeDownloadCodeSignArgs + value: $(_InternalRuntimeDownloadArgs) + /p:DotNetRuntimeSourceFeed=https://dotnetbuilds.blob.core.windows.net/internal + /p:DotNetRuntimeSourceFeedKey=$(dotnetbuilds-internal-container-read-token-base64) + - group: DotNet-HelixApi-Access + - ${{ if notin(variables['Build.Reason'], 'PullRequest') }}: + - name: _SignType + value: real + - ${{ if in(variables['Build.Reason'], 'PullRequest') }}: + - name: _SignType + value: test +- name: runCodeQL3000 + value: ${{ or(eq(variables['Build.Reason'], 'Schedule'), and(eq(variables['Build.Reason'], 'Manual'), eq(parameters.runCodeQL3000, 'true'))) }} +- template: /eng/common/templates/variables/pool-providers.yml + +stages: +- stage: build + displayName: Build + jobs: + - ${{ if and(ne(variables['System.TeamProject'], 'public'), eq(variables.runCodeQL3000, 'true')) }}: + - template: jobs/default-build.yml + parameters: + jobName: build + jobDisplayName: Build and run CodeQL3000 + agentOs: Windows + codeSign: false + # Component governance and SBOM creation are not needed here. Disable what Arcade would inject. + disableComponentGovernance: true + enableSbom: false + variables: + # Security analysis is included in normal runs. Disable its auto-injection. + - skipNugetSecurityAnalysis: true + # Do not let CodeQL3000 Extension gate scan frequency. + - Codeql.Cadence: 0 + # Enable CodeQL3000 unconditionally so it may be run on any branch. + - Codeql.Enabled: true + # Ignore the small amount of infrastructure Python code in this repo. + - Codeql.Language: cpp,csharp,java,javascript + - Codeql.ExcludePathPatterns: submodules + # Ignore test and infrastructure code. + - Codeql.SourceRoot: src + # CodeQL3000 needs this plumbed along as a variable to enable TSA. + - Codeql.TSAEnabled: ${{ eq(variables['Build.Reason'], 'Schedule') }} + # Default expects tsaoptions.json under SourceRoot. + - Codeql.TSAOptionsPath: '$(Build.SourcesDirectory)/.config/tsaoptions.json' + beforeBuild: + - task: CodeQL3000Init@0 + displayName: CodeQL Initialize + - script: "echo ##vso[build.addbuildtag]CodeQL3000" + displayName: 'Set CI CodeQL3000 tag' + condition: ne(variables.CODEQL_DIST,'') + steps: + - script: ./eng/build.cmd + -ci + -arch x64 + -all + $(_BuildArgs) + $(_InternalRuntimeDownloadArgs) + /p:UseSharedCompilation=false + displayName: Build x64 + afterBuild: + - task: CodeQL3000Finalize@0 + displayName: CodeQL Finalize + artifacts: + - name: Build_Logs + path: artifacts/log/ + publishOnError: true + includeForks: true + + - ${{ else }}: # regular build + # Code check + - ${{ if or(eq(variables['System.TeamProject'], 'public'), in(variables['Build.Reason'], 'PullRequest', 'Manual')) }}: + - template: jobs/default-build.yml + parameters: + jobName: Code_check + jobDisplayName: Code check + agentOs: Windows + steps: + - powershell: ./eng/scripts/CodeCheck.ps1 -ci $(_InternalRuntimeDownloadArgs) + displayName: Run eng/scripts/CodeCheck.ps1 + artifacts: + - name: Code_Check_Logs + path: artifacts/log/ + publishOnError: true + includeForks: true + + # Build Windows (x64/x86/arm64) + - template: jobs/default-build.yml + parameters: + codeSign: true + jobName: Windows_build + jobDisplayName: "Build: Windows x64/x86/arm64" + agentOs: Windows + steps: + - ${{ if notIn(variables['Build.Reason'], 'PullRequest') }}: + - script: "echo ##vso[build.addbuildtag]daily-build" + displayName: 'Set CI daily-build tag' + + # !!! NOTE !!! Some of these steps have disabled code signing. + # This is intentional to workaround https://github.com/dotnet/arcade/issues/1957 which always re-submits for code-signing, even + # if they have already been signed. This results in slower builds due to re-submitting the same .nupkg many times for signing. + # The sign settings have been configured to + - script: ./eng/build.cmd + -ci + -arch x64 + -pack + -all + $(_BuildArgs) + $(_InternalRuntimeDownloadArgs) + $(Windows64LogArgs) + displayName: Build x64 + + # Build the x86 shared framework + # This is going to actually build x86 native assets. + - script: ./eng/build.cmd + -ci + -noBuildRepoTasks + -arch x86 + -pack + -all + -noBuildJava + -noBuildNative + /p:OnlyPackPlatformSpecificPackages=true + $(_BuildArgs) + $(_InternalRuntimeDownloadArgs) + $(Windows86LogArgs) + displayName: Build x86 + + # Build the arm64 shared framework + - script: ./eng/build.cmd + -ci + -noBuildRepoTasks + -arch arm64 + -sign + -pack + -noBuildJava + -noBuildNative + /p:DotNetSignType=$(_SignType) + /p:OnlyPackPlatformSpecificPackages=true + $(_BuildArgs) + $(_InternalRuntimeDownloadArgs) + $(WindowsArm64LogArgs) + displayName: Build ARM64 + + # Submit a manual build (in public or internal project) to validate changes to site extensions. + - ${{ if ne(variables['Build.Reason'], 'PullRequest') }}: + - script: .\src\SiteExtensions\build.cmd + -ci + -noBuildRepoTasks + -pack + -noBuildDeps + -noBuildNative + $(_BuildArgs) + $(_InternalRuntimeDownloadArgs) + displayName: Build SiteExtension + + # This runs code-signing on all packages, zips, and jar files as defined in build/CodeSign.targets. If + # https://github.com/dotnet/arcade/issues/1957 is resolved, consider running code-signing inline with the other + # previous steps. Sign check is disabled because it is run in a separate step below, after installers are built. + - script: ./eng/build.cmd + -ci + -noBuildRepoTasks + -noBuildNative + -noBuild + -sign + /p:DotNetSignType=$(_SignType) + $(_BuildArgs) + $(WindowsSignLogArgs) + displayName: Code sign packages + + # Windows installers bundle x86/x64/arm64 assets + - script: ./eng/build.cmd + -ci + -noBuildRepoTasks + -sign + -buildInstallers + -noBuildNative + /p:DotNetSignType=$(_SignType) + $(_BuildArgs) + $(_InternalRuntimeDownloadArgs) + $(WindowsInstallersLogArgs) + displayName: Build Installers + + # Windows installers bundle and sharedfx msi for arm64 + - script: ./eng/build.cmd + -ci + -noBuildRepoTasks + -arch arm64 + -sign + -buildInstallers + -noBuildNative + /p:DotNetSignType=$(_SignType) + /p:AssetManifestFileName=aspnetcore-win.xml + $(_BuildArgs) + $(_PublishArgs) + /p:PublishInstallerBaseVersion=true + $(_InternalRuntimeDownloadArgs) + $(WindowsArm64InstallersLogArgs) + displayName: Build ARM64 Installers + + artifacts: + - name: Windows_Logs + path: artifacts/log/ + publishOnError: true + includeForks: true + - name: Windows_Packages + path: artifacts/packages/ + - name: Windows_HostingBundle + path: artifacts/bin/WindowsHostingBundle + - name: Windows_ANCM_Msi + path: artifacts/bin/ANCMv2 + - name: Windows_ANCMIISExpress_Msi + path: artifacts/bin/AncmIISExpressV2 + + # Build MacOS arm64 + - template: jobs/default-build.yml + parameters: + jobName: MacOs_arm64_build + jobDisplayName: "Build: macOS arm64" + agentOs: macOs + buildArgs: + --arch arm64 + --pack + --all + --no-build-nodejs + --no-build-java + -p:OnlyPackPlatformSpecificPackages=true + -p:AssetManifestFileName=aspnetcore-MacOS_arm64.xml + $(_BuildArgs) + $(_PublishArgs) + $(_InternalRuntimeDownloadArgs) + installNodeJs: false + artifacts: + - name: MacOS_arm64_Logs + path: artifacts/log/ + publishOnError: true + includeForks: true + - name: MacOS_arm64_Packages + path: artifacts/packages/ + + - ${{ if ne(variables.PostBuildSign, 'true') }}: + - template: jobs/codesign-xplat.yml + parameters: + inputName: MacOS_arm64 + + # Build MacOS x64 + - template: jobs/default-build.yml + parameters: + jobName: MacOs_x64_build + jobDisplayName: "Build: macOS x64" + agentOs: macOs + buildArgs: + --pack + --all + --no-build-nodejs + --no-build-java + -p:OnlyPackPlatformSpecificPackages=true + -p:AssetManifestFileName=aspnetcore-MacOS_x64.xml + $(_BuildArgs) + $(_PublishArgs) + $(_InternalRuntimeDownloadArgs) + installNodeJs: false + artifacts: + - name: MacOS_x64_Logs + path: artifacts/log/ + publishOnError: true + includeForks: true + - name: MacOS_x64_Packages + path: artifacts/packages/ + + - ${{ if ne(variables.PostBuildSign, 'true') }}: + - template: jobs/codesign-xplat.yml + parameters: + inputName: MacOS_x64 + + # Build Linux x64 + - template: jobs/default-build.yml + parameters: + jobName: Linux_x64_build + jobDisplayName: "Build: Linux x64" + agentOs: Linux + useHostedUbuntu: false + steps: + - script: ./eng/build.sh + --ci + --arch x64 + --pack + --all + --no-build-nodejs + --no-build-java + -p:OnlyPackPlatformSpecificPackages=true + $(_BuildArgs) + $(_InternalRuntimeDownloadArgs) + displayName: Run build.sh + - script: git clean -xfd src/**/obj/; + ./dockerbuild.sh bionic --ci --nobl --arch x64 --build-installers --no-build-deps --no-build-nodejs + -p:OnlyPackPlatformSpecificPackages=true -p:BuildRuntimeArchive=false -p:LinuxInstallerType=deb + $(_BuildArgs) + $(_InternalRuntimeDownloadArgs) + displayName: Build Debian installers + - script: git clean -xfd src/**/obj/; + ./dockerbuild.sh rhel --ci --nobl --arch x64 --build-installers --no-build-deps --no-build-nodejs + -p:OnlyPackPlatformSpecificPackages=true -p:BuildRuntimeArchive=false -p:LinuxInstallerType=rpm + -p:AssetManifestFileName=aspnetcore-Linux_x64.xml + $(_BuildArgs) + $(_PublishArgs) + $(_InternalRuntimeDownloadArgs) + displayName: Build RPM installers + installNodeJs: false + artifacts: + - name: Linux_x64_Logs + path: artifacts/log/ + publishOnError: true + includeForks: true + - name: Linux_x64_Packages + path: artifacts/packages/ + + - ${{ if ne(variables.PostBuildSign, 'true') }}: + - template: jobs/codesign-xplat.yml + parameters: + inputName: Linux_x64 + + # Build Linux ARM + - template: jobs/default-build.yml + parameters: + jobName: Linux_arm_build + jobDisplayName: "Build: Linux ARM" + agentOs: Linux + buildArgs: + --arch arm + --pack + --all + --no-build-nodejs + --no-build-java + -p:OnlyPackPlatformSpecificPackages=true + -p:AssetManifestFileName=aspnetcore-Linux_arm.xml + $(_BuildArgs) + $(_PublishArgs) + $(_InternalRuntimeDownloadArgs) + installNodeJs: false + artifacts: + - name: Linux_arm_Logs + path: artifacts/log/ + publishOnError: true + includeForks: true + - name: Linux_arm_Packages + path: artifacts/packages/ + + - ${{ if ne(variables.PostBuildSign, 'true') }}: + - template: jobs/codesign-xplat.yml + parameters: + inputName: Linux_arm + + # Build Linux ARM64 + - template: jobs/default-build.yml + parameters: + jobName: Linux_arm64_build + jobDisplayName: "Build: Linux ARM64" + agentOs: Linux + steps: + - script: ./eng/build.sh + --ci + --arch arm64 + --pack + --all + --no-build-nodejs + --no-build-java + -p:OnlyPackPlatformSpecificPackages=true + $(_BuildArgs) + $(_InternalRuntimeDownloadArgs) + displayName: Run build.sh + - script: git clean -xfd src/**/obj/; + ./dockerbuild.sh rhel --ci --nobl --arch arm64 --build-installers --no-build-deps --no-build-nodejs + -p:OnlyPackPlatformSpecificPackages=true -p:BuildRuntimeArchive=false -p:LinuxInstallerType=rpm + -p:AssetManifestFileName=aspnetcore-Linux_arm64.xml + $(_BuildArgs) + $(_PublishArgs) + $(_InternalRuntimeDownloadArgs) + displayName: Build RPM installers + installNodeJs: false + artifacts: + - name: Linux_arm64_Logs + path: artifacts/log/ + publishOnError: true + includeForks: true + - name: Linux_arm64_Packages + path: artifacts/packages/ + + - ${{ if ne(variables.PostBuildSign, 'true') }}: + - template: jobs/codesign-xplat.yml + parameters: + inputName: Linux_arm64 + + # Build Linux Musl x64 + - template: jobs/default-build.yml + parameters: + jobName: Linux_musl_x64_build + jobDisplayName: "Build: Linux Musl x64" + agentOs: Linux + container: mcr.microsoft.com/dotnet-buildtools/prereqs:alpine-3.14-WithNode + buildArgs: + --arch x64 + --os-name linux-musl + --pack + --all + --no-build-nodejs + --no-build-java + -p:OnlyPackPlatformSpecificPackages=true + -p:AssetManifestFileName=aspnetcore-Linux_musl_x64.xml + $(_BuildArgs) + $(_PublishArgs) + $(_InternalRuntimeDownloadArgs) + installNodeJs: false + disableComponentGovernance: true + artifacts: + - name: Linux_musl_x64_Logs + path: artifacts/log/ + publishOnError: true + includeForks: true + - name: Linux_musl_x64_Packages + path: artifacts/packages/ + + - ${{ if ne(variables.PostBuildSign, 'true') }}: + - template: jobs/codesign-xplat.yml + parameters: + inputName: Linux_musl_x64 + + # Build Linux Musl ARM + - template: jobs/default-build.yml + parameters: + jobName: Linux_musl_arm_build + jobDisplayName: "Build: Linux Musl ARM" + agentOs: Linux + useHostedUbuntu: false + container: mcr.microsoft.com/dotnet-buildtools/prereqs:ubuntu-18.04-cross-arm-alpine + buildArgs: + --arch arm + --os-name linux-musl + --pack + --all + --no-build-nodejs + --no-build-java + -p:OnlyPackPlatformSpecificPackages=true + -p:AssetManifestFileName=aspnetcore-Linux_musl_arm.xml + $(_BuildArgs) + $(_PublishArgs) + $(_InternalRuntimeDownloadArgs) + installNodeJs: false + artifacts: + - name: Linux_musl_arm_Logs + path: artifacts/log/ + publishOnError: true + includeForks: true + - name: Linux_musl_arm_Packages + path: artifacts/packages/ + + - ${{ if ne(variables.PostBuildSign, 'true') }}: + - template: jobs/codesign-xplat.yml + parameters: + inputName: Linux_musl_arm + + # Build Linux Musl ARM64 + - template: jobs/default-build.yml + parameters: + jobName: Linux_musl_arm64_build + jobDisplayName: "Build: Linux Musl ARM64" + agentOs: Linux + useHostedUbuntu: false + container: mcr.microsoft.com/dotnet-buildtools/prereqs:ubuntu-18.04-cross-arm64-alpine + buildArgs: + --arch arm64 + --os-name linux-musl + --pack + --all + --no-build-nodejs + --no-build-java + -p:OnlyPackPlatformSpecificPackages=true + -p:AssetManifestFileName=aspnetcore-Linux_musl_arm64.xml + $(_BuildArgs) + $(_PublishArgs) + $(_InternalRuntimeDownloadArgs) + installNodeJs: false + artifacts: + - name: Linux_musl_arm64_Logs + path: artifacts/log/ + publishOnError: true + includeForks: true + - name: Linux_musl_arm64_Packages + path: artifacts/packages/ + + - ${{ if ne(variables.PostBuildSign, 'true') }}: + - template: jobs/codesign-xplat.yml + parameters: + inputName: Linux_musl_arm64 + + - ${{ if and(ne(parameters.skipTests, 'true'), or(eq(variables['System.TeamProject'], 'public'), in(variables['Build.Reason'], 'PullRequest', 'Manual'))) }}: + # Test jobs + - template: jobs/default-build.yml + parameters: + jobName: Windows_Test + jobDisplayName: "Test: Windows Server x64" + agentOs: Windows + isAzDOTestingJob: true + # Just uploading artifacts/logs/ files can take 15 minutes. Doubling the cancel timeout for this job. + cancelTimeoutInMinutes: 30 + buildArgs: -all -pack -test -binaryLog /p:SkipHelixReadyTests=true /p:SkipIISNewHandlerTests=true /p:SkipIISTests=true + /p:SkipIISExpressTests=true /p:SkipIISNewShimTests=true /p:RunTemplateTests=false /p:RunBlazorPlaywrightTemplateTests=true + $(_InternalRuntimeDownloadArgs) + beforeBuild: + - powershell: "& ./src/Servers/IIS/tools/UpdateIISExpressCertificate.ps1; & ./src/Servers/IIS/tools/update_schema.ps1" + displayName: Setup IISExpress test certificates and schema + artifacts: + - name: Windows_Test_Logs + path: artifacts/log/ + publishOnError: true + includeForks: true + - name: Windows_Test_Results + path: artifacts/TestResults/ + publishOnError: true + includeForks: true + + - template: jobs/default-build.yml + parameters: + jobName: MacOS_Test + jobDisplayName: "Test: macOS" + agentOs: macOS + timeoutInMinutes: 240 + isAzDOTestingJob: true + buildArgs: --all --test --binaryLog "/p:RunTemplateTests=false /p:SkipHelixReadyTests=true" $(_InternalRuntimeDownloadArgs) + beforeBuild: + - bash: "./eng/scripts/install-nginx-mac.sh" + displayName: Installing Nginx + artifacts: + - name: MacOS_Test_Logs + path: artifacts/log/ + publishOnError: true + includeForks: true + - name: MacOS_Test_Results + path: artifacts/TestResults/ + publishOnError: true + includeForks: true + + - template: jobs/default-build.yml + parameters: + jobName: Linux_Test + jobDisplayName: "Test: Ubuntu x64" + agentOs: Linux + isAzDOTestingJob: true + useHostedUbuntu: false + buildArgs: --all --test --binaryLog "/p:RunTemplateTests=false /p:SkipHelixReadyTests=true" $(_InternalRuntimeDownloadArgs) + beforeBuild: + - bash: "./eng/scripts/install-nginx-linux.sh" + displayName: Installing Nginx + - bash: "echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf && sudo sysctl -p" + displayName: Increase inotify limit + artifacts: + - name: Linux_Test_Logs + path: artifacts/log/ + publishOnError: true + includeForks: true + - name: Linux_Test_Results + path: artifacts/TestResults/ + publishOnError: true + includeForks: true + + # Helix x64 + - template: jobs/default-build.yml + parameters: + jobName: Helix_x64 + jobDisplayName: 'Tests: Helix x64' + agentOs: Windows + timeoutInMinutes: 240 + steps: + # Build the shared framework + - script: ./eng/build.cmd -ci -nobl -all -pack -arch x64 + /p:CrossgenOutput=false /p:ASPNETCORE_TEST_LOG_DIR=artifacts/log $(_InternalRuntimeDownloadArgs) + displayName: Build shared fx + # -noBuildRepoTasks -noBuildNative -noBuild to avoid repeating work done in the previous step. + - script: ./eng/build.cmd -ci -nobl -all -noBuildRepoTasks -noBuildNative -noBuild -test + -projects eng\helix\helix.proj /p:IsHelixPRCheck=true /p:IsHelixJob=true + /p:CrossgenOutput=false /p:ASPNETCORE_TEST_LOG_DIR=artifacts/log $(_InternalRuntimeDownloadArgs) + displayName: Run build.cmd helix target + env: + HelixApiAccessToken: $(HelixApiAccessToken) # Needed for internal queues + SYSTEM_ACCESSTOKEN: $(System.AccessToken) # We need to set this env var to publish helix results to Azure Dev Ops + + artifacts: + - name: Helix_logs + path: artifacts/log/ + publishOnError: true + includeForks: true + + # Source build + - template: /eng/common/templates/job/source-build.yml + parameters: + platform: + name: 'Managed' + container: 'mcr.microsoft.com/dotnet-buildtools/prereqs:centos-stream8' + buildScript: './eng/build.sh $(_PublishArgs) --no-build-nodejs --no-build-repo-tasks $(_InternalRuntimeDownloadArgs)' + skipPublishValidation: true + jobProperties: + timeoutInMinutes: 120 + variables: + # Log environment variables in binary logs to ease debugging + MSBUILDLOGALLENVIRONMENTVARIABLES: true + + - ${{ if eq(variables.enableSourceIndex, 'true') }}: + - template: /eng/common/templates/job/source-index-stage1.yml + parameters: + sourceIndexBuildCommand: ./eng/build.cmd -Configuration Release -ci -noBuildJava -binaryLog /p:OnlyPackPlatformSpecificPackages=true + binlogPath: artifacts/log/Release/Build.binlog + presteps: + - task: NodeTool@0 + displayName: Install Node 18.x + inputs: + versionSpec: 18.x + pool: + name: $(DncEngInternalBuildPool) + demands: ImageOverride -equals 1es-windows-2022 + + # Publish to the BAR and perform source indexing. Wait until everything else is done. + - ${{ if and(ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}: + - template: /eng/common/templates/job/publish-build-assets.yml + parameters: + dependsOn: + - Windows_build + - ${{ if ne(variables.PostBuildSign, 'true') }}: + - CodeSign_Xplat_MacOS_arm64 + - CodeSign_Xplat_MacOS_x64 + - CodeSign_Xplat_Linux_x64 + - CodeSign_Xplat_Linux_arm + - CodeSign_Xplat_Linux_arm64 + - CodeSign_Xplat_Linux_musl_x64 + - CodeSign_Xplat_Linux_musl_arm + - CodeSign_Xplat_Linux_musl_arm64 + - ${{ if eq(variables.PostBuildSign, 'true') }}: + - MacOs_arm64_build + - MacOs_x64_build + - Linux_x64_build + - Linux_arm_build + - Linux_arm64_build + - Linux_musl_x64_build + - Linux_musl_arm_build + - Linux_musl_arm64_build + # In addition to the dependencies above that provide assets, ensure the build was successful overall. + - ${{ if in(variables['Build.Reason'], 'Manual') }}: + - Code_check + - ${{ if ne(parameters.skipTests, 'true') }}: + - Windows_Test + - MacOS_Test + - Linux_Test + - Helix_x64 + - ${{ if eq(variables.enableSourceIndex, 'true') }}: + - SourceIndexStage1 + - Source_Build_Managed + pool: + name: $(DncEngInternalBuildPool) + demands: ImageOverride -equals 1es-windows-2019 + publishUsingPipelines: ${{ variables._PublishUsingPipelines }} + enablePublishBuildArtifacts: true # publish artifacts/log files + publishAssetsImmediately: true # Don't use a separate stage for darc publishing. + +- ${{ if and(ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest'), ne(variables.runCodeQL3000, 'true')) }}: + - template: /eng/common/templates/post-build/post-build.yml + parameters: + publishingInfraVersion: 3 + enableSymbolValidation: false + enableSigningValidation: false + enableNugetValidation: false + publishInstallersAndChecksums: true + publishAssetsImmediately: true From ece10b178691afd2647865ccc3f8c6cc476b5af3 Mon Sep 17 00:00:00 2001 From: Marc Gravell Date: Tue, 12 Mar 2024 17:12:47 +0000 Subject: [PATCH 150/391] backport 8.0 - http.sys accept loop - mitigate against break due to possible conflicting IO callbacks (#54437) * investigate #54251 (more details will be in PR) 1. handle MRTVS cascading fault breaking the accept loop 2. log any expectation failures # Conflicts: # src/Servers/HttpSys/src/AsyncAcceptContext.cs * make log text consistent * upgrade log to "critical" on the actual state error * - capture whether it is the managed vs unmanaged code-path that is glitching - lock new critical log messages behind app-context switch --- .../HttpSys/src/AsyncAcceptContext.Log.cs | 26 +++ src/Servers/HttpSys/src/AsyncAcceptContext.cs | 148 +++++++++++++----- src/Servers/HttpSys/src/LoggerEventIds.cs | 4 + src/Servers/HttpSys/src/MessagePump.cs | 2 +- .../FunctionalTests/Listener/Utilities.cs | 2 +- 5 files changed, 142 insertions(+), 40 deletions(-) create mode 100644 src/Servers/HttpSys/src/AsyncAcceptContext.Log.cs diff --git a/src/Servers/HttpSys/src/AsyncAcceptContext.Log.cs b/src/Servers/HttpSys/src/AsyncAcceptContext.Log.cs new file mode 100644 index 000000000000..93d811b6e3ec --- /dev/null +++ b/src/Servers/HttpSys/src/AsyncAcceptContext.Log.cs @@ -0,0 +1,26 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. + +using Microsoft.Extensions.Logging; + +namespace Microsoft.AspNetCore.Server.HttpSys; + +internal partial class AsyncAcceptContext +{ + private static partial class Log + { + [LoggerMessage(LoggerEventIds.AcceptSetResultFailed, LogLevel.Error, "Error attempting to set 'accept' outcome", EventName = "AcceptSetResultFailed")] + public static partial void AcceptSetResultFailed(ILogger logger, Exception exception); + + // note on "critical": these represent an unexpected IO callback state that needs investigation; see https://github.com/dotnet/aspnetcore/pull/54368/ + + [LoggerMessage(LoggerEventIds.AcceptSetExpectationMismatch, LogLevel.Critical, "Mismatch setting callback expectation - {Value}", EventName = "AcceptSetExpectationMismatch")] + public static partial void AcceptSetExpectationMismatch(ILogger logger, int value); + + [LoggerMessage(LoggerEventIds.AcceptCancelExpectationMismatch, LogLevel.Critical, "Mismatch canceling accept state - {Value}", EventName = "AcceptCancelExpectationMismatch")] + public static partial void AcceptCancelExpectationMismatch(ILogger logger, int value); + + [LoggerMessage(LoggerEventIds.AcceptObserveExpectationMismatch, LogLevel.Critical, "Mismatch observing {Kind} accept callback - {Value}", EventName = "AcceptObserveExpectationMismatch")] + public static partial void AcceptObserveExpectationMismatch(ILogger logger, string kind, int value); + } +} diff --git a/src/Servers/HttpSys/src/AsyncAcceptContext.cs b/src/Servers/HttpSys/src/AsyncAcceptContext.cs index 72131695aed6..a210c19bb4ef 100644 --- a/src/Servers/HttpSys/src/AsyncAcceptContext.cs +++ b/src/Servers/HttpSys/src/AsyncAcceptContext.cs @@ -4,17 +4,23 @@ using System.Diagnostics; using System.Threading.Tasks.Sources; using Microsoft.AspNetCore.HttpSys.Internal; +using Microsoft.Extensions.Logging; namespace Microsoft.AspNetCore.Server.HttpSys; -internal sealed unsafe class AsyncAcceptContext : IValueTaskSource, IDisposable +internal sealed unsafe partial class AsyncAcceptContext : IValueTaskSource, IDisposable { private static readonly IOCompletionCallback IOCallback = IOWaitCallback; private readonly PreAllocatedOverlapped _preallocatedOverlapped; private readonly IRequestContextFactory _requestContextFactory; + private readonly ILogger _logger; + private int _expectedCompletionCount; private NativeOverlapped* _overlapped; + private readonly bool _logExpectationFailures = AppContext.TryGetSwitch( + "Microsoft.AspNetCore.Server.HttpSys.LogAcceptExpectationFailure", out var enabled) && enabled; + // mutable struct; do not make this readonly private ManualResetValueTaskSourceCore _mrvts = new() { @@ -24,11 +30,12 @@ internal sealed unsafe class AsyncAcceptContext : IValueTaskSource AcceptAsync() return new ValueTask(this, _mrvts.Version); } - private void IOCompleted(uint errorCode, uint numBytes) + private void IOCompleted(uint errorCode, uint numBytes, bool managed) { try { + ObserveCompletion(managed); // expectation tracking if (errorCode != UnsafeNclNativeMethods.ErrorCodes.ERROR_SUCCESS && errorCode != UnsafeNclNativeMethods.ErrorCodes.ERROR_MORE_DATA) { - _mrvts.SetException(new HttpSysException((int)errorCode)); - return; + // (keep all the error handling in one place) + throw new HttpSysException((int)errorCode); } Debug.Assert(_requestContext != null); @@ -71,7 +79,14 @@ private void IOCompleted(uint errorCode, uint numBytes) // we want to reuse the acceptContext object for future accepts. _requestContext = null; - _mrvts.SetResult(requestContext); + try + { + _mrvts.SetResult(requestContext); + } + catch (Exception ex) + { + Log.AcceptSetResultFailed(_logger, ex); + } } else { @@ -84,22 +99,69 @@ private void IOCompleted(uint errorCode, uint numBytes) if (statusCode != UnsafeNclNativeMethods.ErrorCodes.ERROR_SUCCESS && statusCode != UnsafeNclNativeMethods.ErrorCodes.ERROR_IO_PENDING) { - // someother bad error, possible(?) return values are: + // some other bad error, possible(?) return values are: // ERROR_INVALID_HANDLE, ERROR_INSUFFICIENT_BUFFER, ERROR_OPERATION_ABORTED - _mrvts.SetException(new HttpSysException((int)statusCode)); + // (keep all the error handling in one place) + throw new HttpSysException((int)statusCode); } } } catch (Exception exception) { - _mrvts.SetException(exception); + try + { + _mrvts.SetException(exception); + } + catch (Exception ex) + { + Log.AcceptSetResultFailed(_logger, ex); + } } } private static unsafe void IOWaitCallback(uint errorCode, uint numBytes, NativeOverlapped* nativeOverlapped) { var acceptContext = (AsyncAcceptContext)ThreadPoolBoundHandle.GetNativeOverlappedState(nativeOverlapped)!; - acceptContext.IOCompleted(errorCode, numBytes); + acceptContext.IOCompleted(errorCode, numBytes, false); + } + + private void SetExpectCompletion() // we anticipate a completion *might* occur + { + // note this is intentionally a "reset and check" rather than Increment, so that we don't spam + // the logs forever if a glitch occurs + var value = Interlocked.Exchange(ref _expectedCompletionCount, 1); // should have been 0 + if (value != 0) + { + if (_logExpectationFailures) + { + Log.AcceptSetExpectationMismatch(_logger, value); + } + Debug.Assert(false, nameof(SetExpectCompletion)); // fail hard in debug + } + } + private void CancelExpectCompletion() // due to error-code etc, we no longer anticipate a completion + { + var value = Interlocked.Decrement(ref _expectedCompletionCount); // should have been 1, so now 0 + if (value != 0) + { + if (_logExpectationFailures) + { + Log.AcceptCancelExpectationMismatch(_logger, value); + } + Debug.Assert(false, nameof(CancelExpectCompletion)); // fail hard in debug + } + } + private void ObserveCompletion(bool managed) // a completion was invoked + { + var value = Interlocked.Decrement(ref _expectedCompletionCount); // should have been 1, so now 0 + if (value != 0) + { + if (_logExpectationFailures) + { + Log.AcceptObserveExpectationMismatch(_logger, managed ? "managed" : "unmanaged", value); + } + Debug.Assert(false, nameof(ObserveCompletion)); // fail hard in debug + } } private uint QueueBeginGetContext() @@ -112,6 +174,7 @@ private uint QueueBeginGetContext() retry = false; uint bytesTransferred = 0; + SetExpectCompletion(); // track this *before*, because of timing vs IOCP (could even be effectively synchronous) statusCode = HttpApi.HttpReceiveHttpRequest( Server.RequestQueue.Handle, _requestContext.RequestId, @@ -123,35 +186,44 @@ private uint QueueBeginGetContext() &bytesTransferred, _overlapped); - if ((statusCode == UnsafeNclNativeMethods.ErrorCodes.ERROR_CONNECTION_INVALID - || statusCode == UnsafeNclNativeMethods.ErrorCodes.ERROR_INVALID_PARAMETER) - && _requestContext.RequestId != 0) - { - // ERROR_CONNECTION_INVALID: - // The client reset the connection between the time we got the MORE_DATA error and when we called HttpReceiveHttpRequest - // with the new buffer. We can clear the request id and move on to the next request. - // - // ERROR_INVALID_PARAMETER: Historical check from HttpListener. - // https://referencesource.microsoft.com/#System/net/System/Net/_ListenerAsyncResult.cs,137 - // we might get this if somebody stole our RequestId, - // set RequestId to 0 and start all over again with the buffer we just allocated - // BUGBUG: how can someone steal our request ID? seems really bad and in need of fix. - _requestContext.RequestId = 0; - retry = true; - } - else if (statusCode == UnsafeNclNativeMethods.ErrorCodes.ERROR_MORE_DATA) - { - // the buffer was not big enough to fit the headers, we need - // to read the RequestId returned, allocate a new buffer of the required size - // (uint)backingBuffer.Length - AlignmentPadding - AllocateNativeRequest(bytesTransferred); - retry = true; - } - else if (statusCode == UnsafeNclNativeMethods.ErrorCodes.ERROR_SUCCESS - && HttpSysListener.SkipIOCPCallbackOnSuccess) + switch (statusCode) { - // IO operation completed synchronously - callback won't be called to signal completion. - IOCompleted(statusCode, bytesTransferred); + case (UnsafeNclNativeMethods.ErrorCodes.ERROR_CONNECTION_INVALID or UnsafeNclNativeMethods.ErrorCodes.ERROR_INVALID_PARAMETER) when _requestContext.RequestId != 0: + // ERROR_CONNECTION_INVALID: + // The client reset the connection between the time we got the MORE_DATA error and when we called HttpReceiveHttpRequest + // with the new buffer. We can clear the request id and move on to the next request. + // + // ERROR_INVALID_PARAMETER: Historical check from HttpListener. + // https://referencesource.microsoft.com/#System/net/System/Net/_ListenerAsyncResult.cs,137 + // we might get this if somebody stole our RequestId, + // set RequestId to 0 and start all over again with the buffer we just allocated + // BUGBUG: how can someone steal our request ID? seems really bad and in need of fix. + CancelExpectCompletion(); + _requestContext.RequestId = 0; + retry = true; + break; + case UnsafeNclNativeMethods.ErrorCodes.ERROR_MORE_DATA: + // the buffer was not big enough to fit the headers, we need + // to read the RequestId returned, allocate a new buffer of the required size + // (uint)backingBuffer.Length - AlignmentPadding + CancelExpectCompletion(); // we'll "expect" again when we retry + AllocateNativeRequest(bytesTransferred); + retry = true; + break; + case UnsafeNclNativeMethods.ErrorCodes.ERROR_SUCCESS: + if (HttpSysListener.SkipIOCPCallbackOnSuccess) + { + // IO operation completed synchronously - callback won't be called to signal completion. + IOCompleted(statusCode, bytesTransferred, true); // marks completion + } + // else: callback fired by IOCP (at some point), which marks completion + break; + case UnsafeNclNativeMethods.ErrorCodes.ERROR_IO_PENDING: + break; // no change to state - callback will occur at some point + default: + // fault code, not expecting an IOCP callback + CancelExpectCompletion(); + break; } } while (retry); diff --git a/src/Servers/HttpSys/src/LoggerEventIds.cs b/src/Servers/HttpSys/src/LoggerEventIds.cs index d550618eab1e..87f8ea56ee9f 100644 --- a/src/Servers/HttpSys/src/LoggerEventIds.cs +++ b/src/Servers/HttpSys/src/LoggerEventIds.cs @@ -54,4 +54,8 @@ internal static class LoggerEventIds public const int RequestValidationFailed = 47; public const int CreateDisconnectTokenError = 48; public const int RequestAborted = 49; + public const int AcceptSetResultFailed = 50; + public const int AcceptSetExpectationMismatch = 51; + public const int AcceptCancelExpectationMismatch = 52; + public const int AcceptObserveExpectationMismatch = 53; } diff --git a/src/Servers/HttpSys/src/MessagePump.cs b/src/Servers/HttpSys/src/MessagePump.cs index ec56271379b2..5cf1c88f0b12 100644 --- a/src/Servers/HttpSys/src/MessagePump.cs +++ b/src/Servers/HttpSys/src/MessagePump.cs @@ -162,7 +162,7 @@ private void ProcessRequestsWorker() Debug.Assert(RequestContextFactory != null); // Allocate and accept context per loop and reuse it for all accepts - var acceptContext = new AsyncAcceptContext(Listener, RequestContextFactory); + var acceptContext = new AsyncAcceptContext(Listener, RequestContextFactory, _logger); var loop = new AcceptLoop(acceptContext, this); diff --git a/src/Servers/HttpSys/test/FunctionalTests/Listener/Utilities.cs b/src/Servers/HttpSys/test/FunctionalTests/Listener/Utilities.cs index 15664bf82119..b7ca7e33df85 100644 --- a/src/Servers/HttpSys/test/FunctionalTests/Listener/Utilities.cs +++ b/src/Servers/HttpSys/test/FunctionalTests/Listener/Utilities.cs @@ -107,7 +107,7 @@ internal static HttpSysListener CreateServerOnExistingQueue(string requestQueueN internal static async Task AcceptAsync(this HttpSysListener server, TimeSpan timeout) { var factory = new TestRequestContextFactory(server); - using var acceptContext = new AsyncAcceptContext(server, factory); + using var acceptContext = new AsyncAcceptContext(server, factory, server.Logger); async Task AcceptAsync() { From d638bba69440ac83547adb4a95fb28d3678226dc Mon Sep 17 00:00:00 2001 From: Marc Gravell Date: Tue, 12 Mar 2024 17:12:56 +0000 Subject: [PATCH 151/391] Backport to net8 - Caching: SE.Redis update and fix naming inconsistency (#54413) * Caching: SE.Redis update and fix naming inconsistency (#54239) * - rev to SE.Redis 2.7.27 - use new AddLibraryNameSuffix API (2.7.27) - do not use ConfigurationOptions.Clone() - impacts key rotation - attach suffix even if ConnectionMultiplexerFactory used (Aspire) * nit extra ; --- eng/Versions.props | 2 +- .../StackExchangeRedis/src/RedisCache.Log.cs | 3 +++ .../StackExchangeRedis/src/RedisCache.cs | 25 ++++++++++++------- .../src/RedisCacheOptions.cs | 9 ++----- .../src/RedisOutputCacheOptions.cs | 9 ++----- .../src/RedisOutputCacheStore.Log.cs | 3 +++ .../src/RedisOutputCacheStore.cs | 16 +++++++++++- .../test/RedisConnectionFixture.cs | 3 ++- .../src/RedisHubLifetimeManager.cs | 1 + .../test/TestConnectionMultiplexer.cs | 9 ++----- 10 files changed, 47 insertions(+), 33 deletions(-) diff --git a/eng/Versions.props b/eng/Versions.props index 90a48f261e41..ddbd24c23cb7 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -318,7 +318,7 @@ 4.17.0 1.4.0 4.0.0 - 2.6.122 + 2.7.27 5.0.0 6.4.0 2.0.3 diff --git a/src/Caching/StackExchangeRedis/src/RedisCache.Log.cs b/src/Caching/StackExchangeRedis/src/RedisCache.Log.cs index c20e93f52cef..5569613a2eb7 100644 --- a/src/Caching/StackExchangeRedis/src/RedisCache.Log.cs +++ b/src/Caching/StackExchangeRedis/src/RedisCache.Log.cs @@ -12,5 +12,8 @@ private static partial class Log { [LoggerMessage(1, LogLevel.Warning, "Could not determine the Redis server version. Falling back to use HMSET command instead of HSET.", EventName = "CouldNotDetermineServerVersion")] public static partial void CouldNotDetermineServerVersion(ILogger logger, Exception exception); + + [LoggerMessage(2, LogLevel.Debug, "Unable to add library name suffix.", EventName = "UnableToAddLibraryNameSuffix")] + internal static partial void UnableToAddLibraryNameSuffix(ILogger logger, Exception exception); } } diff --git a/src/Caching/StackExchangeRedis/src/RedisCache.cs b/src/Caching/StackExchangeRedis/src/RedisCache.cs index 9a896e0e5a7c..b346bbd24b4d 100644 --- a/src/Caching/StackExchangeRedis/src/RedisCache.cs +++ b/src/Caching/StackExchangeRedis/src/RedisCache.cs @@ -257,14 +257,7 @@ private IDatabase Connect() IConnectionMultiplexer connection; if (_options.ConnectionMultiplexerFactory is null) { - if (_options.ConfigurationOptions is not null) - { - connection = ConnectionMultiplexer.Connect(_options.ConfigurationOptions); - } - else - { - connection = ConnectionMultiplexer.Connect(_options.Configuration!); - } + connection = ConnectionMultiplexer.Connect(_options.GetConfiguredOptions()); } else { @@ -308,7 +301,7 @@ private async ValueTask ConnectSlowAsync(CancellationToken token) IConnectionMultiplexer connection; if (_options.ConnectionMultiplexerFactory is null) { - connection = await ConnectionMultiplexer.ConnectAsync(_options.GetConfiguredOptions("asp.net DC")).ConfigureAwait(false); + connection = await ConnectionMultiplexer.ConnectAsync(_options.GetConfiguredOptions()).ConfigureAwait(false); } else { @@ -332,6 +325,7 @@ private void PrepareConnection(IConnectionMultiplexer connection) WriteTimeTicks(ref _lastConnectTicks, DateTimeOffset.UtcNow); ValidateServerFeatures(connection); TryRegisterProfiler(connection); + TryAddSuffix(connection); } private void ValidateServerFeatures(IConnectionMultiplexer connection) @@ -369,6 +363,19 @@ private void TryRegisterProfiler(IConnectionMultiplexer connection) } } + private void TryAddSuffix(IConnectionMultiplexer connection) + { + try + { + connection.AddLibraryNameSuffix("aspnet"); + connection.AddLibraryNameSuffix("DC"); + } + catch (Exception ex) + { + Log.UnableToAddLibraryNameSuffix(_logger, ex); + } + } + private byte[]? GetAndRefresh(string key, bool getData) { ArgumentNullThrowHelper.ThrowIfNull(key); diff --git a/src/Caching/StackExchangeRedis/src/RedisCacheOptions.cs b/src/Caching/StackExchangeRedis/src/RedisCacheOptions.cs index f6386dc7b00a..23aad4f9e642 100644 --- a/src/Caching/StackExchangeRedis/src/RedisCacheOptions.cs +++ b/src/Caching/StackExchangeRedis/src/RedisCacheOptions.cs @@ -59,18 +59,13 @@ static bool GetDefaultValue() => set => _useForceReconnect = value; } - internal ConfigurationOptions GetConfiguredOptions(string libSuffix) + internal ConfigurationOptions GetConfiguredOptions() { - var options = ConfigurationOptions?.Clone() ?? ConfigurationOptions.Parse(Configuration!); + var options = ConfigurationOptions ?? ConfigurationOptions.Parse(Configuration!); // we don't want an initially unavailable server to prevent DI creating the service itself options.AbortOnConnectFail = false; - if (!string.IsNullOrWhiteSpace(libSuffix)) - { - var provider = DefaultOptionsProvider.GetProvider(options.EndPoints); - options.LibraryName = $"{provider.LibraryName} {libSuffix}"; - } return options; } } diff --git a/src/Middleware/Microsoft.AspNetCore.OutputCaching.StackExchangeRedis/src/RedisOutputCacheOptions.cs b/src/Middleware/Microsoft.AspNetCore.OutputCaching.StackExchangeRedis/src/RedisOutputCacheOptions.cs index a13262e03c28..ec42d5a5e16c 100644 --- a/src/Middleware/Microsoft.AspNetCore.OutputCaching.StackExchangeRedis/src/RedisOutputCacheOptions.cs +++ b/src/Middleware/Microsoft.AspNetCore.OutputCaching.StackExchangeRedis/src/RedisOutputCacheOptions.cs @@ -54,18 +54,13 @@ static bool GetDefaultValue() => set => _useForceReconnect = value; } - internal ConfigurationOptions GetConfiguredOptions(string libSuffix) + internal ConfigurationOptions GetConfiguredOptions() { - var options = ConfigurationOptions?.Clone() ?? ConfigurationOptions.Parse(Configuration!); + var options = ConfigurationOptions ?? ConfigurationOptions.Parse(Configuration!); // we don't want an initially unavailable server to prevent DI creating the service itself options.AbortOnConnectFail = false; - if (!string.IsNullOrWhiteSpace(libSuffix)) - { - var provider = DefaultOptionsProvider.GetProvider(options.EndPoints); - options.LibraryName = $"{provider.LibraryName} {libSuffix}"; - } return options; } } diff --git a/src/Middleware/Microsoft.AspNetCore.OutputCaching.StackExchangeRedis/src/RedisOutputCacheStore.Log.cs b/src/Middleware/Microsoft.AspNetCore.OutputCaching.StackExchangeRedis/src/RedisOutputCacheStore.Log.cs index adc254675c10..c80167695ebf 100644 --- a/src/Middleware/Microsoft.AspNetCore.OutputCaching.StackExchangeRedis/src/RedisOutputCacheStore.Log.cs +++ b/src/Middleware/Microsoft.AspNetCore.OutputCaching.StackExchangeRedis/src/RedisOutputCacheStore.Log.cs @@ -14,4 +14,7 @@ internal partial class RedisOutputCacheStore [LoggerMessage(2, LogLevel.Error, "Fatal error occurred executing redis output-cache GC loop.", EventName = "RedisOutputCacheGCFatalError")] internal static partial void RedisOutputCacheGCFatalError(ILogger logger, Exception exception); + + [LoggerMessage(3, LogLevel.Debug, "Unable to add library name suffix.", EventName = "UnableToAddLibraryNameSuffix")] + internal static partial void UnableToAddLibraryNameSuffix(ILogger logger, Exception exception); } diff --git a/src/Middleware/Microsoft.AspNetCore.OutputCaching.StackExchangeRedis/src/RedisOutputCacheStore.cs b/src/Middleware/Microsoft.AspNetCore.OutputCaching.StackExchangeRedis/src/RedisOutputCacheStore.cs index 3b8f1d21670b..1dc30df00f2c 100644 --- a/src/Middleware/Microsoft.AspNetCore.OutputCaching.StackExchangeRedis/src/RedisOutputCacheStore.cs +++ b/src/Middleware/Microsoft.AspNetCore.OutputCaching.StackExchangeRedis/src/RedisOutputCacheStore.cs @@ -332,7 +332,7 @@ private async ValueTask ConnectSlowAsync(CancellationToken token) IConnectionMultiplexer connection; if (_options.ConnectionMultiplexerFactory is null) { - connection = await ConnectionMultiplexer.ConnectAsync(_options.GetConfiguredOptions("asp.net OC")).ConfigureAwait(false); + connection = await ConnectionMultiplexer.ConnectAsync(_options.GetConfiguredOptions()).ConfigureAwait(false); } else { @@ -415,6 +415,7 @@ private void PrepareConnection(IConnectionMultiplexer connection) WriteTimeTicks(ref _lastConnectTicks, DateTimeOffset.UtcNow); ValidateServerFeatures(connection); TryRegisterProfiler(connection); + TryAddSuffix(connection); } private void ValidateServerFeatures(IConnectionMultiplexer connection) @@ -451,6 +452,19 @@ private void TryRegisterProfiler(IConnectionMultiplexer connection) } } + private void TryAddSuffix(IConnectionMultiplexer connection) + { + try + { + connection.AddLibraryNameSuffix("aspnet"); + connection.AddLibraryNameSuffix("OC"); + } + catch (Exception ex) + { + UnableToAddLibraryNameSuffix(_logger, ex); + } + } + private static void WriteTimeTicks(ref long field, DateTimeOffset value) { var ticks = value == DateTimeOffset.MinValue ? 0L : value.UtcTicks; diff --git a/src/Middleware/Microsoft.AspNetCore.OutputCaching.StackExchangeRedis/test/RedisConnectionFixture.cs b/src/Middleware/Microsoft.AspNetCore.OutputCaching.StackExchangeRedis/test/RedisConnectionFixture.cs index 23f379825dce..d7ea5529b41c 100644 --- a/src/Middleware/Microsoft.AspNetCore.OutputCaching.StackExchangeRedis/test/RedisConnectionFixture.cs +++ b/src/Middleware/Microsoft.AspNetCore.OutputCaching.StackExchangeRedis/test/RedisConnectionFixture.cs @@ -13,8 +13,9 @@ public RedisConnectionFixture() var options = new RedisOutputCacheOptions { Configuration = "127.0.0.1:6379", // TODO: CI test config here - }.GetConfiguredOptions("CI test"); + }.GetConfiguredOptions(); _muxer = ConnectionMultiplexer.Connect(options); + _muxer.AddLibraryNameSuffix("test"); } public IDatabase Database => _muxer.GetDatabase(); diff --git a/src/SignalR/server/StackExchangeRedis/src/RedisHubLifetimeManager.cs b/src/SignalR/server/StackExchangeRedis/src/RedisHubLifetimeManager.cs index acd18262d16e..f1743fa5f2d6 100644 --- a/src/SignalR/server/StackExchangeRedis/src/RedisHubLifetimeManager.cs +++ b/src/SignalR/server/StackExchangeRedis/src/RedisHubLifetimeManager.cs @@ -13,6 +13,7 @@ using Microsoft.Extensions.Logging; using Microsoft.Extensions.Options; using StackExchange.Redis; +using RedisProtocol = Microsoft.AspNetCore.SignalR.StackExchangeRedis.Internal.RedisProtocol; // to disambiguate from StackExchange.Redis.RedisProtocol namespace Microsoft.AspNetCore.SignalR.StackExchangeRedis; diff --git a/src/SignalR/server/StackExchangeRedis/test/TestConnectionMultiplexer.cs b/src/SignalR/server/StackExchangeRedis/test/TestConnectionMultiplexer.cs index 953d1d46a83e..1768a7f97471 100644 --- a/src/SignalR/server/StackExchangeRedis/test/TestConnectionMultiplexer.cs +++ b/src/SignalR/server/StackExchangeRedis/test/TestConnectionMultiplexer.cs @@ -1,19 +1,12 @@ // Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. -using System; using System.Collections.Concurrent; -using System.Collections.Generic; -using System.Diagnostics; -using System.IO; using System.Net; using System.Reflection; -using System.Threading; -using System.Threading.Tasks; using StackExchange.Redis; using StackExchange.Redis.Maintenance; using StackExchange.Redis.Profiling; -using Xunit; namespace Microsoft.AspNetCore.SignalR.Tests; @@ -237,6 +230,8 @@ public IServer[] GetServers() } public ValueTask DisposeAsync() => default; + + public void AddLibraryNameSuffix(string suffix) { } // don't need to implement } public class TestRedisServer From c9ff986a7c4ba4c51f7fa16ada603f3b5fcb2b50 Mon Sep 17 00:00:00 2001 From: wtgodbe Date: Tue, 12 Mar 2024 12:53:37 -0700 Subject: [PATCH 152/391] Update baseline, SDK --- eng/Baseline.Designer.props | 511 ++++++++++++++++++------------------ eng/Baseline.xml | 212 +++++++-------- eng/Versions.props | 2 +- global.json | 4 +- 4 files changed, 366 insertions(+), 363 deletions(-) diff --git a/eng/Baseline.Designer.props b/eng/Baseline.Designer.props index 537411483eed..6a374b33b2e4 100644 --- a/eng/Baseline.Designer.props +++ b/eng/Baseline.Designer.props @@ -2,117 +2,117 @@ $(MSBuildAllProjects);$(MSBuildThisFileFullPath) - 8.0.2 + 8.0.3 - 8.0.2 + 8.0.3 - 8.0.2 + 8.0.3 - 8.0.2 + 8.0.3 - 8.0.2 + 8.0.3 - 8.0.2 + 8.0.3 - 8.0.2 + 8.0.3 - 8.0.2 + 8.0.3 - 8.0.2 + 8.0.3 - 8.0.2 + 8.0.3 - 8.0.2 + 8.0.3 - 8.0.2 + 8.0.3 - 8.0.2 + 8.0.3 - 8.0.2 + 8.0.3 - 8.0.2 + 8.0.3 - 8.0.2 + 8.0.3 - 8.0.2 + 8.0.3 - 8.0.2 + 8.0.3 - 8.0.2 + 8.0.3 - 8.0.2 + 8.0.3 - 8.0.2 + 8.0.3 - 8.0.2 + 8.0.3 - + - 8.0.2 + 8.0.3 - 8.0.2 + 8.0.3 - 8.0.2 + 8.0.3 @@ -120,137 +120,137 @@ - 8.0.2 + 8.0.3 - - + + - - + + - - + + - 8.0.2 + 8.0.3 - + - 8.0.2 + 8.0.3 - 8.0.2 + 8.0.3 - + - 8.0.2 + 8.0.3 - - + + - 8.0.2 + 8.0.3 - 8.0.2 + 8.0.3 - - + + - 8.0.2 + 8.0.3 - + - 8.0.2 + 8.0.3 - + - 8.0.2 + 8.0.3 - + - 8.0.2 + 8.0.3 - - + + - 8.0.2 + 8.0.3 - - - + + + - 8.0.2 + 8.0.3 - - + + - 8.0.2 + 8.0.3 - - + + - 8.0.2 + 8.0.3 - 8.0.2 + 8.0.3 - 8.0.2 + 8.0.3 - - + + @@ -258,83 +258,83 @@ - 8.0.2 + 8.0.3 - + - 8.0.2 + 8.0.3 - + - + - + - + - 8.0.2 + 8.0.3 - 8.0.2 + 8.0.3 - + - + - + - 8.0.2 + 8.0.3 - - - + + + - + - - - + + + - + - - - + + + - + @@ -342,58 +342,58 @@ - 8.0.2 + 8.0.3 - 8.0.2 + 8.0.3 - - + + - 8.0.2 + 8.0.3 - + - + - + - 8.0.2 + 8.0.3 - + - + - + - 8.0.2 + 8.0.3 - + - 8.0.2 + 8.0.3 @@ -402,7 +402,7 @@ - 8.0.2 + 8.0.3 @@ -410,71 +410,71 @@ - 8.0.2 + 8.0.3 - 8.0.2 + 8.0.3 - - + + - - + + - - + + - - + + - 8.0.2 + 8.0.3 - - + + - + - - + + - 8.0.2 + 8.0.3 - - + + - 8.0.2 + 8.0.3 - - + + - 8.0.2 + 8.0.3 @@ -490,27 +490,27 @@ - 8.0.2 + 8.0.3 - 8.0.2 + 8.0.3 - + - 8.0.2 + 8.0.3 - + - 8.0.2 + 8.0.3 @@ -519,79 +519,79 @@ - 8.0.2 + 8.0.3 - + - 8.0.2 + 8.0.3 - 8.0.2 + 8.0.3 - + - 8.0.2 + 8.0.3 - 8.0.2 + 8.0.3 - - + + - - + + - - + + - 8.0.2 + 8.0.3 - - + + - - + + - - + + - - + + @@ -599,83 +599,83 @@ - 8.0.2 + 8.0.3 - + - + - + - + - + - 8.0.2 + 8.0.3 - + - + - + - 8.0.2 + 8.0.3 - + - + - + - 8.0.2 + 8.0.3 - + - + - + - 8.0.2 + 8.0.3 - - - - + + + + - 8.0.2 + 8.0.3 @@ -684,105 +684,108 @@ - 8.0.2 + 8.0.3 - 8.0.2 + 8.0.3 - 8.0.2 + 8.0.3 - 8.0.2 + 8.0.3 - + - 8.0.2 + 8.0.3 - + - 8.0.2 + 8.0.3 - 8.0.2 + 8.0.3 - 8.0.2 + 8.0.3 - 8.0.2 + 8.0.3 - 8.0.2 + 8.0.3 - 8.0.2 + 8.0.3 - 8.0.2 + 8.0.3 - + + - + + - + + - 8.0.2 + 8.0.3 - + - + - + - 8.0.2 + 8.0.3 @@ -798,48 +801,48 @@ - 8.0.2 + 8.0.3 - + - + - + - + - + - + - 8.0.2 + 8.0.3 - 8.0.2 + 8.0.3 - - - + + + - 8.0.2 + 8.0.3 - 8.0.2 + 8.0.3 @@ -849,7 +852,7 @@ - 8.0.2 + 8.0.3 @@ -858,79 +861,79 @@ - 8.0.2 + 8.0.3 - + - + - + - 8.0.2 + 8.0.3 - + - + - + - 8.0.2 + 8.0.3 - - - + + + - - - + + + - - - + + + - 8.0.2 + 8.0.3 - 8.0.2 + 8.0.3 - + @@ -939,7 +942,7 @@ - + @@ -947,46 +950,46 @@ - + - 8.0.2 + 8.0.3 - 8.0.2 + 8.0.3 - + - + - + - 8.0.2 + 8.0.3 - 8.0.2 + 8.0.3 - + - 8.0.2 + 8.0.3 diff --git a/eng/Baseline.xml b/eng/Baseline.xml index b2335226206e..4c14e31894a1 100644 --- a/eng/Baseline.xml +++ b/eng/Baseline.xml @@ -4,110 +4,110 @@ This file contains a list of all the packages and their versions which were rele Update this list when preparing for a new patch. --> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/eng/Versions.props b/eng/Versions.props index 4ae65086b013..ed1329ab96e5 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -11,7 +11,7 @@ 4 - false + true 7.1.2 - + @@ -32,7 +32,7 @@ - + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 2c127def182d..d7bf2b675f21 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -11,35 +11,35 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - ffbe02d729a4a43136e94a3366588257968c004a + 7e3f01a3398b91c837853dbe0426738017178d24 https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - ffbe02d729a4a43136e94a3366588257968c004a + 7e3f01a3398b91c837853dbe0426738017178d24 https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - ffbe02d729a4a43136e94a3366588257968c004a + 7e3f01a3398b91c837853dbe0426738017178d24 https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - ffbe02d729a4a43136e94a3366588257968c004a + 7e3f01a3398b91c837853dbe0426738017178d24 https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - ffbe02d729a4a43136e94a3366588257968c004a + 7e3f01a3398b91c837853dbe0426738017178d24 https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - ffbe02d729a4a43136e94a3366588257968c004a + 7e3f01a3398b91c837853dbe0426738017178d24 https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - ffbe02d729a4a43136e94a3366588257968c004a + 7e3f01a3398b91c837853dbe0426738017178d24 https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - ffbe02d729a4a43136e94a3366588257968c004a + 7e3f01a3398b91c837853dbe0426738017178d24 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime From ea15eb613e2bf2a5d9bc8d1969123e83f10c88ba Mon Sep 17 00:00:00 2001 From: DotNet-Bot Date: Wed, 13 Mar 2024 10:18:03 +0000 Subject: [PATCH 154/391] Update dependencies from https://dev.azure.com/dnceng/internal/_git/dotnet-efcore build 20240313.3 dotnet-ef , Microsoft.EntityFrameworkCore , Microsoft.EntityFrameworkCore.Design , Microsoft.EntityFrameworkCore.InMemory , Microsoft.EntityFrameworkCore.Relational , Microsoft.EntityFrameworkCore.Sqlite , Microsoft.EntityFrameworkCore.SqlServer , Microsoft.EntityFrameworkCore.Tools From Version 8.0.4 -> To Version 8.0.4 --- NuGet.config | 4 ++-- eng/Version.Details.xml | 16 ++++++++-------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/NuGet.config b/NuGet.config index cd9b28bffdfc..6cd98a8bb6ad 100644 --- a/NuGet.config +++ b/NuGet.config @@ -6,7 +6,7 @@ - + @@ -32,7 +32,7 @@ - + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 40ec027de8e0..4d251776cc58 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -11,35 +11,35 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 7e3f01a3398b91c837853dbe0426738017178d24 + 9c4dc41967c3136b5d41cebeadce45ac4f972b88 https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 7e3f01a3398b91c837853dbe0426738017178d24 + 9c4dc41967c3136b5d41cebeadce45ac4f972b88 https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 7e3f01a3398b91c837853dbe0426738017178d24 + 9c4dc41967c3136b5d41cebeadce45ac4f972b88 https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 7e3f01a3398b91c837853dbe0426738017178d24 + 9c4dc41967c3136b5d41cebeadce45ac4f972b88 https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 7e3f01a3398b91c837853dbe0426738017178d24 + 9c4dc41967c3136b5d41cebeadce45ac4f972b88 https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 7e3f01a3398b91c837853dbe0426738017178d24 + 9c4dc41967c3136b5d41cebeadce45ac4f972b88 https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 7e3f01a3398b91c837853dbe0426738017178d24 + 9c4dc41967c3136b5d41cebeadce45ac4f972b88 https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 7e3f01a3398b91c837853dbe0426738017178d24 + 9c4dc41967c3136b5d41cebeadce45ac4f972b88 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime From 4b3bd126c6edd5ecb0b204847d5924072fbe013c Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" <42748379+dotnet-maestro[bot]@users.noreply.github.com> Date: Wed, 13 Mar 2024 14:50:54 +0000 Subject: [PATCH 155/391] Update dependencies from https://github.com/dotnet/source-build-reference-packages build (#54527) [release/8.0] Update dependencies from dotnet/source-build-reference-packages --- NuGet.config | 8 ++++++++ eng/Version.Details.xml | 4 ++-- eng/Versions.props | 2 +- 3 files changed, 11 insertions(+), 3 deletions(-) diff --git a/NuGet.config b/NuGet.config index b118e41dec14..f1ce6ec60b55 100644 --- a/NuGet.config +++ b/NuGet.config @@ -7,9 +7,13 @@ + + + + @@ -30,9 +34,13 @@ + + + + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 97c9304251b6..556fd7622564 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -338,9 +338,9 @@ 9a1c3e1b7f0c8763d4c96e593961a61a72679a7b - + https://github.com/dotnet/source-build-reference-packages - 453a37ef7ae6c335cd49b3b9ab7713c87faeb265 + c08ec59adcf8b56cd1b4de2090c320496566b5c6 diff --git a/eng/Versions.props b/eng/Versions.props index ed1329ab96e5..744273cdc2af 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -167,7 +167,7 @@ 8.0.0-alpha.1.24161.1 - 8.0.0-alpha.1.24061.1 + 8.0.0-alpha.1.24162.3 2.0.0-beta-23228-03 From 548f624149112a144203ea1e6e4d0b44b7b9d9dd Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" <42748379+dotnet-maestro[bot]@users.noreply.github.com> Date: Thu, 14 Mar 2024 14:50:38 +0000 Subject: [PATCH 156/391] Update dependencies from https://github.com/dotnet/source-build-reference-packages build (#54540) [release/8.0] Update dependencies from dotnet/source-build-reference-packages --- eng/Version.Details.xml | 4 ++-- eng/Versions.props | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 556fd7622564..c854183f0e81 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -338,9 +338,9 @@ 9a1c3e1b7f0c8763d4c96e593961a61a72679a7b - + https://github.com/dotnet/source-build-reference-packages - c08ec59adcf8b56cd1b4de2090c320496566b5c6 + 79827eed138fd2575a8b24820b4f385ee4ffb6e6 diff --git a/eng/Versions.props b/eng/Versions.props index 744273cdc2af..23fdaf376594 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -167,7 +167,7 @@ 8.0.0-alpha.1.24161.1 - 8.0.0-alpha.1.24162.3 + 8.0.0-alpha.1.24163.3 2.0.0-beta-23228-03 From a871e2dbe51e51534a99e8029dd3a49c2edbe83c Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" <42748379+dotnet-maestro[bot]@users.noreply.github.com> Date: Tue, 19 Mar 2024 00:13:23 +0000 Subject: [PATCH 157/391] [release/8.0] Update dependencies from dotnet/source-build-externals (#54595) [release/8.0] Update dependencies from dotnet/source-build-externals --- NuGet.config | 12 ------------ eng/Version.Details.xml | 4 ++-- eng/Versions.props | 2 +- 3 files changed, 3 insertions(+), 15 deletions(-) diff --git a/NuGet.config b/NuGet.config index f1ce6ec60b55..1c2f27eb90ce 100644 --- a/NuGet.config +++ b/NuGet.config @@ -6,14 +6,8 @@ - - - - - - @@ -34,14 +28,8 @@ - - - - - - diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index c854183f0e81..45bbb7c0029c 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -189,9 +189,9 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime 9f4b1f5d664afdfc80e1508ab7ed099dff210fbd - + https://github.com/dotnet/source-build-externals - 00fb7841c80b44262646e57bcfbe90a1b7bc3151 + 0fac378047750fa8bd850a98b159560f9f7627c3 diff --git a/eng/Versions.props b/eng/Versions.props index 23fdaf376594..63beef18904f 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -165,7 +165,7 @@ 8.0.0-beta.24113.2 8.0.0-beta.24113.2 - 8.0.0-alpha.1.24161.1 + 8.0.0-alpha.1.24168.2 8.0.0-alpha.1.24163.3 From 99e1c014f14a9491ee28d4aa55d9ec75fc4ff723 Mon Sep 17 00:00:00 2001 From: DotNet-Bot Date: Tue, 19 Mar 2024 20:21:49 +0000 Subject: [PATCH 158/391] Update dependencies from https://dev.azure.com/dnceng/internal/_git/dotnet-runtime build Microsoft.Extensions.HostFactoryResolver.Sources , Microsoft.Internal.Runtime.AspNetCore.Transport , Microsoft.NET.Runtime.MonoAOTCompiler.Task , Microsoft.NET.Runtime.WebAssembly.Sdk , Microsoft.NETCore.App.Ref , Microsoft.NETCore.App.Runtime.AOT.win-x64.Cross.browser-wasm , Microsoft.NETCore.App.Runtime.win-x64 , Microsoft.NETCore.BrowserDebugHost.Transport , Microsoft.NETCore.Platforms , System.Diagnostics.DiagnosticSource , Microsoft.SourceBuild.Intermediate.runtime.linux-x64 From Version 8.0.3-servicing.24114.23 -> To Version 8.0.4-servicing.24168.10 --- NuGet.config | 8 ++------ eng/Version.Details.xml | 44 ++++++++++++++++++++--------------------- eng/Versions.props | 22 ++++++++++----------- 3 files changed, 35 insertions(+), 39 deletions(-) diff --git a/NuGet.config b/NuGet.config index 6cd98a8bb6ad..354f3715e686 100644 --- a/NuGet.config +++ b/NuGet.config @@ -9,9 +9,7 @@ - - - + @@ -35,9 +33,7 @@ - - - + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 074c0c5c930f..8287bcdaf45c 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -121,9 +121,9 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime 5535e31a712343a63f5d7d796cd874e563e5ac14 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 9f4b1f5d664afdfc80e1508ab7ed099dff210fbd + a1a9440b48374c6d400287abbb56a4ac54d9b02f https://dev.azure.com/dnceng/internal/_git/dotnet-runtime @@ -185,9 +185,9 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime 5535e31a712343a63f5d7d796cd874e563e5ac14 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 9f4b1f5d664afdfc80e1508ab7ed099dff210fbd + a1a9440b48374c6d400287abbb56a4ac54d9b02f https://github.com/dotnet/source-build-externals @@ -203,9 +203,9 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime 5535e31a712343a63f5d7d796cd874e563e5ac14 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 5535e31a712343a63f5d7d796cd874e563e5ac14 + a1a9440b48374c6d400287abbb56a4ac54d9b02f https://dev.azure.com/dnceng/internal/_git/dotnet-runtime @@ -275,17 +275,17 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime 5535e31a712343a63f5d7d796cd874e563e5ac14 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 9f4b1f5d664afdfc80e1508ab7ed099dff210fbd + a1a9440b48374c6d400287abbb56a4ac54d9b02f - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 9f4b1f5d664afdfc80e1508ab7ed099dff210fbd + a1a9440b48374c6d400287abbb56a4ac54d9b02f - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 9f4b1f5d664afdfc80e1508ab7ed099dff210fbd + a1a9440b48374c6d400287abbb56a4ac54d9b02f https://dev.azure.com/dnceng/internal/_git/dotnet-runtime @@ -316,22 +316,22 @@ Win-x64 is used here because we have picked an arbitrary runtime identifier to flow the version of the latest NETCore.App runtime. All Runtime.$rid packages should have the same version. --> - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 9f4b1f5d664afdfc80e1508ab7ed099dff210fbd + a1a9440b48374c6d400287abbb56a4ac54d9b02f - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 9f4b1f5d664afdfc80e1508ab7ed099dff210fbd + a1a9440b48374c6d400287abbb56a4ac54d9b02f - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 9f4b1f5d664afdfc80e1508ab7ed099dff210fbd + a1a9440b48374c6d400287abbb56a4ac54d9b02f - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 9f4b1f5d664afdfc80e1508ab7ed099dff210fbd + a1a9440b48374c6d400287abbb56a4ac54d9b02f https://github.com/dotnet/xdt @@ -368,9 +368,9 @@ - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 9f4b1f5d664afdfc80e1508ab7ed099dff210fbd + a1a9440b48374c6d400287abbb56a4ac54d9b02f https://github.com/dotnet/winforms diff --git a/eng/Versions.props b/eng/Versions.props index 8e8b8efe39a1..066058a1012a 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -66,12 +66,12 @@ 8.0.0 - 8.0.3 - 8.0.3 - 8.0.3 - 8.0.3 - 8.0.3 - 8.0.3-servicing.24114.23 + 8.0.4 + 8.0.4 + 8.0.4 + 8.0.4 + 8.0.4 + 8.0.4-servicing.24168.10 8.0.0 8.0.0 8.0.0 @@ -92,7 +92,7 @@ 8.0.0 8.0.0 8.0.0 - 8.0.3-servicing.24114.23 + 8.0.4-servicing.24168.10 8.0.0 8.0.0 8.0.0 @@ -108,9 +108,9 @@ 8.0.0 8.0.2 8.0.0 - 8.0.3-servicing.24114.23 + 8.0.4-servicing.24168.10 8.0.0 - 8.0.0 + 8.0.1 8.0.0 8.0.0 8.0.0-rtm.23520.14 @@ -128,9 +128,9 @@ 8.0.0 8.0.0 8.0.0 - 8.0.3-servicing.24114.23 + 8.0.4-servicing.24168.10 - 8.0.3-servicing.24114.23 + 8.0.4-servicing.24168.10 8.0.0 8.0.1 From 574ce3e9a49d1ca74946c88a1e55bc5357b8a450 Mon Sep 17 00:00:00 2001 From: DotNet-Bot Date: Tue, 19 Mar 2024 20:35:24 +0000 Subject: [PATCH 159/391] Update dependencies from https://dev.azure.com/dnceng/internal/_git/dotnet-efcore build dotnet-ef , Microsoft.EntityFrameworkCore , Microsoft.EntityFrameworkCore.Design , Microsoft.EntityFrameworkCore.InMemory , Microsoft.EntityFrameworkCore.Relational , Microsoft.EntityFrameworkCore.Sqlite , Microsoft.EntityFrameworkCore.SqlServer , Microsoft.EntityFrameworkCore.Tools From Version 8.0.4 -> To Version 8.0.4 --- NuGet.config | 4 ++-- eng/Version.Details.xml | 16 ++++++++-------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/NuGet.config b/NuGet.config index 354f3715e686..ca417f896613 100644 --- a/NuGet.config +++ b/NuGet.config @@ -6,7 +6,7 @@ - + @@ -30,7 +30,7 @@ - + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 8287bcdaf45c..7cb921c23d20 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -11,35 +11,35 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 9c4dc41967c3136b5d41cebeadce45ac4f972b88 + e6a5449ab693dab150c3fb500d00218c3a4c4ff0 https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 9c4dc41967c3136b5d41cebeadce45ac4f972b88 + e6a5449ab693dab150c3fb500d00218c3a4c4ff0 https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 9c4dc41967c3136b5d41cebeadce45ac4f972b88 + e6a5449ab693dab150c3fb500d00218c3a4c4ff0 https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 9c4dc41967c3136b5d41cebeadce45ac4f972b88 + e6a5449ab693dab150c3fb500d00218c3a4c4ff0 https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 9c4dc41967c3136b5d41cebeadce45ac4f972b88 + e6a5449ab693dab150c3fb500d00218c3a4c4ff0 https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 9c4dc41967c3136b5d41cebeadce45ac4f972b88 + e6a5449ab693dab150c3fb500d00218c3a4c4ff0 https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 9c4dc41967c3136b5d41cebeadce45ac4f972b88 + e6a5449ab693dab150c3fb500d00218c3a4c4ff0 https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 9c4dc41967c3136b5d41cebeadce45ac4f972b88 + e6a5449ab693dab150c3fb500d00218c3a4c4ff0 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime From 1a62137b1086b8ea3c0a2bfd3100f03dca9b820a Mon Sep 17 00:00:00 2001 From: DotNet-Bot Date: Tue, 19 Mar 2024 23:19:09 +0000 Subject: [PATCH 160/391] Update dependencies from https://dev.azure.com/dnceng/internal/_git/dotnet-runtime build Microsoft.Extensions.HostFactoryResolver.Sources , Microsoft.Internal.Runtime.AspNetCore.Transport , Microsoft.NET.Runtime.MonoAOTCompiler.Task , Microsoft.NET.Runtime.WebAssembly.Sdk , Microsoft.NETCore.App.Ref , Microsoft.NETCore.App.Runtime.AOT.win-x64.Cross.browser-wasm , Microsoft.NETCore.App.Runtime.win-x64 , Microsoft.NETCore.BrowserDebugHost.Transport , Microsoft.NETCore.Platforms , System.Diagnostics.DiagnosticSource , Microsoft.SourceBuild.Intermediate.runtime.linux-x64 From Version 8.0.4-servicing.24168.10 -> To Version 8.0.4-servicing.24169.9 --- NuGet.config | 4 ++-- eng/Version.Details.xml | 32 ++++++++++++++++---------------- eng/Versions.props | 10 +++++----- 3 files changed, 23 insertions(+), 23 deletions(-) diff --git a/NuGet.config b/NuGet.config index ca417f896613..463dd593b462 100644 --- a/NuGet.config +++ b/NuGet.config @@ -9,7 +9,7 @@ - + @@ -33,7 +33,7 @@ - + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 7cb921c23d20..484bae498197 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -121,9 +121,9 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime 5535e31a712343a63f5d7d796cd874e563e5ac14 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - a1a9440b48374c6d400287abbb56a4ac54d9b02f + 2d7eea252964e69be94cb9c847b371b23e4dd470 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime @@ -185,9 +185,9 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime 5535e31a712343a63f5d7d796cd874e563e5ac14 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - a1a9440b48374c6d400287abbb56a4ac54d9b02f + 2d7eea252964e69be94cb9c847b371b23e4dd470 https://github.com/dotnet/source-build-externals @@ -205,7 +205,7 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - a1a9440b48374c6d400287abbb56a4ac54d9b02f + 2d7eea252964e69be94cb9c847b371b23e4dd470 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime @@ -277,15 +277,15 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - a1a9440b48374c6d400287abbb56a4ac54d9b02f + 2d7eea252964e69be94cb9c847b371b23e4dd470 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - a1a9440b48374c6d400287abbb56a4ac54d9b02f + 2d7eea252964e69be94cb9c847b371b23e4dd470 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - a1a9440b48374c6d400287abbb56a4ac54d9b02f + 2d7eea252964e69be94cb9c847b371b23e4dd470 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime @@ -318,20 +318,20 @@ --> https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - a1a9440b48374c6d400287abbb56a4ac54d9b02f + 2d7eea252964e69be94cb9c847b371b23e4dd470 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - a1a9440b48374c6d400287abbb56a4ac54d9b02f + 2d7eea252964e69be94cb9c847b371b23e4dd470 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - a1a9440b48374c6d400287abbb56a4ac54d9b02f + 2d7eea252964e69be94cb9c847b371b23e4dd470 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - a1a9440b48374c6d400287abbb56a4ac54d9b02f + 2d7eea252964e69be94cb9c847b371b23e4dd470 https://github.com/dotnet/xdt @@ -368,9 +368,9 @@ - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - a1a9440b48374c6d400287abbb56a4ac54d9b02f + 2d7eea252964e69be94cb9c847b371b23e4dd470 https://github.com/dotnet/winforms diff --git a/eng/Versions.props b/eng/Versions.props index 066058a1012a..46ae46e62bd8 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -71,7 +71,7 @@ 8.0.4 8.0.4 8.0.4 - 8.0.4-servicing.24168.10 + 8.0.4-servicing.24169.9 8.0.0 8.0.0 8.0.0 @@ -92,7 +92,7 @@ 8.0.0 8.0.0 8.0.0 - 8.0.4-servicing.24168.10 + 8.0.4-servicing.24169.9 8.0.0 8.0.0 8.0.0 @@ -108,7 +108,7 @@ 8.0.0 8.0.2 8.0.0 - 8.0.4-servicing.24168.10 + 8.0.4-servicing.24169.9 8.0.0 8.0.1 8.0.0 @@ -128,9 +128,9 @@ 8.0.0 8.0.0 8.0.0 - 8.0.4-servicing.24168.10 + 8.0.4-servicing.24169.9 - 8.0.4-servicing.24168.10 + 8.0.4-servicing.24169.9 8.0.0 8.0.1 From 40c20ab937c9943bb8bfcf17a43befbfb9628721 Mon Sep 17 00:00:00 2001 From: DotNet-Bot Date: Wed, 20 Mar 2024 19:53:15 +0000 Subject: [PATCH 161/391] Update dependencies from https://dev.azure.com/dnceng/internal/_git/dotnet-efcore build dotnet-ef , Microsoft.EntityFrameworkCore , Microsoft.EntityFrameworkCore.Design , Microsoft.EntityFrameworkCore.InMemory , Microsoft.EntityFrameworkCore.Relational , Microsoft.EntityFrameworkCore.Sqlite , Microsoft.EntityFrameworkCore.SqlServer , Microsoft.EntityFrameworkCore.Tools From Version 8.0.4 -> To Version 8.0.4 --- NuGet.config | 4 ++-- eng/Version.Details.xml | 16 ++++++++-------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/NuGet.config b/NuGet.config index 463dd593b462..092ecc4fe140 100644 --- a/NuGet.config +++ b/NuGet.config @@ -6,7 +6,7 @@ - + @@ -30,7 +30,7 @@ - + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 484bae498197..d5cd74a04766 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -11,35 +11,35 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - e6a5449ab693dab150c3fb500d00218c3a4c4ff0 + 0e8ece3526ef3575fb85de308b8a4cd5840f928e https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - e6a5449ab693dab150c3fb500d00218c3a4c4ff0 + 0e8ece3526ef3575fb85de308b8a4cd5840f928e https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - e6a5449ab693dab150c3fb500d00218c3a4c4ff0 + 0e8ece3526ef3575fb85de308b8a4cd5840f928e https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - e6a5449ab693dab150c3fb500d00218c3a4c4ff0 + 0e8ece3526ef3575fb85de308b8a4cd5840f928e https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - e6a5449ab693dab150c3fb500d00218c3a4c4ff0 + 0e8ece3526ef3575fb85de308b8a4cd5840f928e https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - e6a5449ab693dab150c3fb500d00218c3a4c4ff0 + 0e8ece3526ef3575fb85de308b8a4cd5840f928e https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - e6a5449ab693dab150c3fb500d00218c3a4c4ff0 + 0e8ece3526ef3575fb85de308b8a4cd5840f928e https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - e6a5449ab693dab150c3fb500d00218c3a4c4ff0 + 0e8ece3526ef3575fb85de308b8a4cd5840f928e https://dev.azure.com/dnceng/internal/_git/dotnet-runtime From 20f6ccb11195fe8b77f6ef66cfd87132b48fe570 Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" <42748379+dotnet-maestro[bot]@users.noreply.github.com> Date: Mon, 25 Mar 2024 16:19:17 +0000 Subject: [PATCH 162/391] Update dependencies from https://github.com/dotnet/source-build-externals build (#54744) [release/8.0] Update dependencies from dotnet/source-build-externals --- eng/Version.Details.xml | 4 ++-- eng/Versions.props | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 45bbb7c0029c..bea317e36b22 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -189,9 +189,9 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime 9f4b1f5d664afdfc80e1508ab7ed099dff210fbd - + https://github.com/dotnet/source-build-externals - 0fac378047750fa8bd850a98b159560f9f7627c3 + 300e99190e6ae1983681694dbdd5f75f0c692081 diff --git a/eng/Versions.props b/eng/Versions.props index 63beef18904f..9aab640ac44d 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -165,7 +165,7 @@ 8.0.0-beta.24113.2 8.0.0-beta.24113.2 - 8.0.0-alpha.1.24168.2 + 8.0.0-alpha.1.24175.3 8.0.0-alpha.1.24163.3 From 3ab2afa323d6bd0539bdabeac6627478204375da Mon Sep 17 00:00:00 2001 From: vseanreesermsft <78103370+vseanreesermsft@users.noreply.github.com> Date: Tue, 2 Apr 2024 13:45:47 -0700 Subject: [PATCH 163/391] Update branding to 8.0.5 (#54907) --- eng/Versions.props | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/eng/Versions.props b/eng/Versions.props index 9aab640ac44d..3e21a52c4b1e 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -8,10 +8,10 @@ 8 0 - 4 + 5 - true + false 7.1.2 - 8.0.0-beta.24113.2 - 8.0.0-beta.24113.2 - 8.0.0-beta.24113.2 + 8.0.0-beta.24165.4 + 8.0.0-beta.24165.4 + 8.0.0-beta.24165.4 8.0.0-alpha.1.24175.3 diff --git a/eng/common/SetupNugetSources.ps1 b/eng/common/SetupNugetSources.ps1 index 6c65e81925f2..efa2fd72bfaa 100644 --- a/eng/common/SetupNugetSources.ps1 +++ b/eng/common/SetupNugetSources.ps1 @@ -35,7 +35,7 @@ Set-StrictMode -Version 2.0 . $PSScriptRoot\tools.ps1 # Add source entry to PackageSources -function AddPackageSource($sources, $SourceName, $SourceEndPoint, $creds, $Username, $Password) { +function AddPackageSource($sources, $SourceName, $SourceEndPoint, $creds, $Username, $pwd) { $packageSource = $sources.SelectSingleNode("add[@key='$SourceName']") if ($packageSource -eq $null) @@ -48,12 +48,11 @@ function AddPackageSource($sources, $SourceName, $SourceEndPoint, $creds, $Usern else { Write-Host "Package source $SourceName already present." } - - AddCredential -Creds $creds -Source $SourceName -Username $Username -Password $Password + AddCredential -Creds $creds -Source $SourceName -Username $Username -pwd $pwd } # Add a credential node for the specified source -function AddCredential($creds, $source, $username, $password) { +function AddCredential($creds, $source, $username, $pwd) { # Looks for credential configuration for the given SourceName. Create it if none is found. $sourceElement = $creds.SelectSingleNode($Source) if ($sourceElement -eq $null) @@ -82,17 +81,18 @@ function AddCredential($creds, $source, $username, $password) { $passwordElement.SetAttribute("key", "ClearTextPassword") $sourceElement.AppendChild($passwordElement) | Out-Null } - $passwordElement.SetAttribute("value", $Password) + + $passwordElement.SetAttribute("value", $pwd) } -function InsertMaestroPrivateFeedCredentials($Sources, $Creds, $Username, $Password) { +function InsertMaestroPrivateFeedCredentials($Sources, $Creds, $Username, $pwd) { $maestroPrivateSources = $Sources.SelectNodes("add[contains(@key,'darc-int')]") Write-Host "Inserting credentials for $($maestroPrivateSources.Count) Maestro's private feeds." ForEach ($PackageSource in $maestroPrivateSources) { Write-Host "`tInserting credential for Maestro's feed:" $PackageSource.Key - AddCredential -Creds $creds -Source $PackageSource.Key -Username $Username -Password $Password + AddCredential -Creds $creds -Source $PackageSource.Key -Username $Username -pwd $pwd } } @@ -144,13 +144,13 @@ if ($disabledSources -ne $null) { $userName = "dn-bot" # Insert credential nodes for Maestro's private feeds -InsertMaestroPrivateFeedCredentials -Sources $sources -Creds $creds -Username $userName -Password $Password +InsertMaestroPrivateFeedCredentials -Sources $sources -Creds $creds -Username $userName -pwd $Password # 3.1 uses a different feed url format so it's handled differently here $dotnet31Source = $sources.SelectSingleNode("add[@key='dotnet3.1']") if ($dotnet31Source -ne $null) { - AddPackageSource -Sources $sources -SourceName "dotnet3.1-internal" -SourceEndPoint "https://pkgs.dev.azure.com/dnceng/_packaging/dotnet3.1-internal/nuget/v2" -Creds $creds -Username $userName -Password $Password - AddPackageSource -Sources $sources -SourceName "dotnet3.1-internal-transport" -SourceEndPoint "https://pkgs.dev.azure.com/dnceng/_packaging/dotnet3.1-internal-transport/nuget/v2" -Creds $creds -Username $userName -Password $Password + AddPackageSource -Sources $sources -SourceName "dotnet3.1-internal" -SourceEndPoint "https://pkgs.dev.azure.com/dnceng/_packaging/dotnet3.1-internal/nuget/v2" -Creds $creds -Username $userName -pwd $Password + AddPackageSource -Sources $sources -SourceName "dotnet3.1-internal-transport" -SourceEndPoint "https://pkgs.dev.azure.com/dnceng/_packaging/dotnet3.1-internal-transport/nuget/v2" -Creds $creds -Username $userName -pwd $Password } $dotnetVersions = @('5','6','7','8') @@ -159,9 +159,9 @@ foreach ($dotnetVersion in $dotnetVersions) { $feedPrefix = "dotnet" + $dotnetVersion; $dotnetSource = $sources.SelectSingleNode("add[@key='$feedPrefix']") if ($dotnetSource -ne $null) { - AddPackageSource -Sources $sources -SourceName "$feedPrefix-internal" -SourceEndPoint "https://pkgs.dev.azure.com/dnceng/internal/_packaging/$feedPrefix-internal/nuget/v2" -Creds $creds -Username $userName -Password $Password - AddPackageSource -Sources $sources -SourceName "$feedPrefix-internal-transport" -SourceEndPoint "https://pkgs.dev.azure.com/dnceng/internal/_packaging/$feedPrefix-internal-transport/nuget/v2" -Creds $creds -Username $userName -Password $Password + AddPackageSource -Sources $sources -SourceName "$feedPrefix-internal" -SourceEndPoint "https://pkgs.dev.azure.com/dnceng/internal/_packaging/$feedPrefix-internal/nuget/v2" -Creds $creds -Username $userName -pwd $Password + AddPackageSource -Sources $sources -SourceName "$feedPrefix-internal-transport" -SourceEndPoint "https://pkgs.dev.azure.com/dnceng/internal/_packaging/$feedPrefix-internal-transport/nuget/v2" -Creds $creds -Username $userName -pwd $Password } } -$doc.Save($filename) +$doc.Save($filename) \ No newline at end of file diff --git a/eng/common/templates-official/job/job.yml b/eng/common/templates-official/job/job.yml new file mode 100644 index 000000000000..a2709d10562c --- /dev/null +++ b/eng/common/templates-official/job/job.yml @@ -0,0 +1,263 @@ +# Internal resources (telemetry, microbuild) can only be accessed from non-public projects, +# and some (Microbuild) should only be applied to non-PR cases for internal builds. + +parameters: +# Job schema parameters - https://docs.microsoft.com/en-us/azure/devops/pipelines/yaml-schema?view=vsts&tabs=schema#job + cancelTimeoutInMinutes: '' + condition: '' + container: '' + continueOnError: false + dependsOn: '' + displayName: '' + pool: '' + steps: [] + strategy: '' + timeoutInMinutes: '' + variables: [] + workspace: '' + templateContext: '' + +# Job base template specific parameters + # See schema documentation - https://github.com/dotnet/arcade/blob/master/Documentation/AzureDevOps/TemplateSchema.md + artifacts: '' + enableMicrobuild: false + enablePublishBuildArtifacts: false + enablePublishBuildAssets: false + enablePublishTestResults: false + enablePublishUsingPipelines: false + enableBuildRetry: false + disableComponentGovernance: '' + componentGovernanceIgnoreDirectories: '' + mergeTestResults: false + testRunTitle: '' + testResultsFormat: '' + name: '' + preSteps: [] + runAsPublic: false +# Sbom related params + enableSbom: true + PackageVersion: 7.0.0 + BuildDropPath: '$(Build.SourcesDirectory)/artifacts' + +jobs: +- job: ${{ parameters.name }} + + ${{ if ne(parameters.cancelTimeoutInMinutes, '') }}: + cancelTimeoutInMinutes: ${{ parameters.cancelTimeoutInMinutes }} + + ${{ if ne(parameters.condition, '') }}: + condition: ${{ parameters.condition }} + + ${{ if ne(parameters.container, '') }}: + container: ${{ parameters.container }} + + ${{ if ne(parameters.continueOnError, '') }}: + continueOnError: ${{ parameters.continueOnError }} + + ${{ if ne(parameters.dependsOn, '') }}: + dependsOn: ${{ parameters.dependsOn }} + + ${{ if ne(parameters.displayName, '') }}: + displayName: ${{ parameters.displayName }} + + ${{ if ne(parameters.pool, '') }}: + pool: ${{ parameters.pool }} + + ${{ if ne(parameters.strategy, '') }}: + strategy: ${{ parameters.strategy }} + + ${{ if ne(parameters.timeoutInMinutes, '') }}: + timeoutInMinutes: ${{ parameters.timeoutInMinutes }} + + ${{ if ne(parameters.templateContext, '') }}: + templateContext: ${{ parameters.templateContext }} + + variables: + - ${{ if ne(parameters.enableTelemetry, 'false') }}: + - name: DOTNET_CLI_TELEMETRY_PROFILE + value: '$(Build.Repository.Uri)' + - ${{ if eq(parameters.enableRichCodeNavigation, 'true') }}: + - name: EnableRichCodeNavigation + value: 'true' + # Retry signature validation up to three times, waiting 2 seconds between attempts. + # See https://learn.microsoft.com/en-us/nuget/reference/errors-and-warnings/nu3028#retry-untrusted-root-failures + - name: NUGET_EXPERIMENTAL_CHAIN_BUILD_RETRY_POLICY + value: 3,2000 + - ${{ each variable in parameters.variables }}: + # handle name-value variable syntax + # example: + # - name: [key] + # value: [value] + - ${{ if ne(variable.name, '') }}: + - name: ${{ variable.name }} + value: ${{ variable.value }} + + # handle variable groups + - ${{ if ne(variable.group, '') }}: + - group: ${{ variable.group }} + + # handle template variable syntax + # example: + # - template: path/to/template.yml + # parameters: + # [key]: [value] + - ${{ if ne(variable.template, '') }}: + - template: ${{ variable.template }} + ${{ if ne(variable.parameters, '') }}: + parameters: ${{ variable.parameters }} + + # handle key-value variable syntax. + # example: + # - [key]: [value] + - ${{ if and(eq(variable.name, ''), eq(variable.group, ''), eq(variable.template, '')) }}: + - ${{ each pair in variable }}: + - name: ${{ pair.key }} + value: ${{ pair.value }} + + # DotNet-HelixApi-Access provides 'HelixApiAccessToken' for internal builds + - ${{ if and(eq(parameters.enableTelemetry, 'true'), eq(parameters.runAsPublic, 'false'), ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}: + - group: DotNet-HelixApi-Access + + ${{ if ne(parameters.workspace, '') }}: + workspace: ${{ parameters.workspace }} + + steps: + - ${{ if ne(parameters.preSteps, '') }}: + - ${{ each preStep in parameters.preSteps }}: + - ${{ preStep }} + + - ${{ if and(eq(parameters.runAsPublic, 'false'), ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}: + - ${{ if eq(parameters.enableMicrobuild, 'true') }}: + - task: MicroBuildSigningPlugin@3 + displayName: Install MicroBuild plugin + inputs: + signType: $(_SignType) + zipSources: false + feedSource: https://dnceng.pkgs.visualstudio.com/_packaging/MicroBuildToolset/nuget/v3/index.json + env: + TeamName: $(_TeamName) + continueOnError: ${{ parameters.continueOnError }} + condition: and(succeeded(), in(variables['_SignType'], 'real', 'test'), eq(variables['Agent.Os'], 'Windows_NT')) + + - ${{ if and(eq(parameters.runAsPublic, 'false'), eq(variables['System.TeamProject'], 'internal')) }}: + - task: NuGetAuthenticate@1 + + - ${{ if and(ne(parameters.artifacts.download, 'false'), ne(parameters.artifacts.download, '')) }}: + - task: DownloadPipelineArtifact@2 + inputs: + buildType: current + artifactName: ${{ coalesce(parameters.artifacts.download.name, 'Artifacts_$(Agent.OS)_$(_BuildConfig)') }} + targetPath: ${{ coalesce(parameters.artifacts.download.path, 'artifacts') }} + itemPattern: ${{ coalesce(parameters.artifacts.download.pattern, '**') }} + + - ${{ each step in parameters.steps }}: + - ${{ step }} + + - ${{ if eq(parameters.enableRichCodeNavigation, true) }}: + - task: RichCodeNavIndexer@0 + displayName: RichCodeNav Upload + inputs: + languages: ${{ coalesce(parameters.richCodeNavigationLanguage, 'csharp') }} + environment: ${{ coalesce(parameters.richCodeNavigationEnvironment, 'production') }} + richNavLogOutputDirectory: $(Build.SourcesDirectory)/artifacts/bin + uploadRichNavArtifacts: ${{ coalesce(parameters.richCodeNavigationUploadArtifacts, false) }} + continueOnError: true + + - template: /eng/common/templates-official/steps/component-governance.yml + parameters: + ${{ if eq(parameters.disableComponentGovernance, '') }}: + ${{ if and(ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest'), eq(parameters.runAsPublic, 'false'), or(startsWith(variables['Build.SourceBranch'], 'refs/heads/release/'), startsWith(variables['Build.SourceBranch'], 'refs/heads/dotnet/'), startsWith(variables['Build.SourceBranch'], 'refs/heads/microsoft/'), eq(variables['Build.SourceBranch'], 'refs/heads/main'))) }}: + disableComponentGovernance: false + ${{ else }}: + disableComponentGovernance: true + ${{ else }}: + disableComponentGovernance: ${{ parameters.disableComponentGovernance }} + componentGovernanceIgnoreDirectories: ${{ parameters.componentGovernanceIgnoreDirectories }} + + - ${{ if eq(parameters.enableMicrobuild, 'true') }}: + - ${{ if and(eq(parameters.runAsPublic, 'false'), ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}: + - task: MicroBuildCleanup@1 + displayName: Execute Microbuild cleanup tasks + condition: and(always(), in(variables['_SignType'], 'real', 'test'), eq(variables['Agent.Os'], 'Windows_NT')) + continueOnError: ${{ parameters.continueOnError }} + env: + TeamName: $(_TeamName) + + - ${{ if ne(parameters.artifacts.publish, '') }}: + - ${{ if and(ne(parameters.artifacts.publish.artifacts, 'false'), ne(parameters.artifacts.publish.artifacts, '')) }}: + - task: CopyFiles@2 + displayName: Gather binaries for publish to artifacts + inputs: + SourceFolder: 'artifacts/bin' + Contents: '**' + TargetFolder: '$(Build.ArtifactStagingDirectory)/artifacts/bin' + - task: CopyFiles@2 + displayName: Gather packages for publish to artifacts + inputs: + SourceFolder: 'artifacts/packages' + Contents: '**' + TargetFolder: '$(Build.ArtifactStagingDirectory)/artifacts/packages' + - task: 1ES.PublishBuildArtifacts@1 + displayName: Publish pipeline artifacts + inputs: + PathtoPublish: '$(Build.ArtifactStagingDirectory)/artifacts' + PublishLocation: Container + ArtifactName: ${{ coalesce(parameters.artifacts.publish.artifacts.name , 'Artifacts_$(Agent.Os)_$(_BuildConfig)') }} + continueOnError: true + condition: always() + - ${{ if and(ne(parameters.artifacts.publish.logs, 'false'), ne(parameters.artifacts.publish.logs, '')) }}: + - task: 1ES.PublishPipelineArtifact@1 + inputs: + targetPath: 'artifacts/log' + artifactName: ${{ coalesce(parameters.artifacts.publish.logs.name, 'Logs_Build_$(Agent.Os)_$(_BuildConfig)') }} + displayName: 'Publish logs' + continueOnError: true + condition: always() + + - ${{ if ne(parameters.enablePublishBuildArtifacts, 'false') }}: + - task: 1ES.PublishBuildArtifacts@1 + displayName: Publish Logs + inputs: + PathtoPublish: '$(Build.SourcesDirectory)/artifacts/log/$(_BuildConfig)' + PublishLocation: Container + ArtifactName: ${{ coalesce(parameters.enablePublishBuildArtifacts.artifactName, '$(Agent.Os)_$(Agent.JobName)' ) }} + continueOnError: true + condition: always() + + - ${{ if or(and(eq(parameters.enablePublishTestResults, 'true'), eq(parameters.testResultsFormat, '')), eq(parameters.testResultsFormat, 'xunit')) }}: + - task: PublishTestResults@2 + displayName: Publish XUnit Test Results + inputs: + testResultsFormat: 'xUnit' + testResultsFiles: '*.xml' + searchFolder: '$(Build.SourcesDirectory)/artifacts/TestResults/$(_BuildConfig)' + testRunTitle: ${{ coalesce(parameters.testRunTitle, parameters.name, '$(System.JobName)') }}-xunit + mergeTestResults: ${{ parameters.mergeTestResults }} + continueOnError: true + condition: always() + - ${{ if or(and(eq(parameters.enablePublishTestResults, 'true'), eq(parameters.testResultsFormat, '')), eq(parameters.testResultsFormat, 'vstest')) }}: + - task: PublishTestResults@2 + displayName: Publish TRX Test Results + inputs: + testResultsFormat: 'VSTest' + testResultsFiles: '*.trx' + searchFolder: '$(Build.SourcesDirectory)/artifacts/TestResults/$(_BuildConfig)' + testRunTitle: ${{ coalesce(parameters.testRunTitle, parameters.name, '$(System.JobName)') }}-trx + mergeTestResults: ${{ parameters.mergeTestResults }} + continueOnError: true + condition: always() + + - ${{ if and(eq(parameters.runAsPublic, 'false'), ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest'), eq(parameters.enableSbom, 'true')) }}: + - template: /eng/common/templates-official/steps/generate-sbom.yml + parameters: + PackageVersion: ${{ parameters.packageVersion}} + BuildDropPath: ${{ parameters.buildDropPath }} + IgnoreDirectories: ${{ parameters.componentGovernanceIgnoreDirectories }} + + - ${{ if eq(parameters.enableBuildRetry, 'true') }}: + - task: 1ES.PublishPipelineArtifact@1 + inputs: + targetPath: '$(Build.SourcesDirectory)\eng\common\BuildConfiguration' + artifactName: 'BuildConfiguration' + displayName: 'Publish build retry configuration' + continueOnError: true \ No newline at end of file diff --git a/eng/common/templates-official/job/onelocbuild.yml b/eng/common/templates-official/job/onelocbuild.yml new file mode 100644 index 000000000000..ba9ba4930329 --- /dev/null +++ b/eng/common/templates-official/job/onelocbuild.yml @@ -0,0 +1,112 @@ +parameters: + # Optional: dependencies of the job + dependsOn: '' + + # Optional: A defined YAML pool - https://docs.microsoft.com/en-us/azure/devops/pipelines/yaml-schema?view=vsts&tabs=schema#pool + pool: '' + + CeapexPat: $(dn-bot-ceapex-package-r) # PAT for the loc AzDO instance https://dev.azure.com/ceapex + GithubPat: $(BotAccount-dotnet-bot-repo-PAT) + + SourcesDirectory: $(Build.SourcesDirectory) + CreatePr: true + AutoCompletePr: false + ReusePr: true + UseLfLineEndings: true + UseCheckedInLocProjectJson: false + SkipLocProjectJsonGeneration: false + LanguageSet: VS_Main_Languages + LclSource: lclFilesInRepo + LclPackageId: '' + RepoType: gitHub + GitHubOrg: dotnet + MirrorRepo: '' + MirrorBranch: main + condition: '' + JobNameSuffix: '' + +jobs: +- job: OneLocBuild${{ parameters.JobNameSuffix }} + + dependsOn: ${{ parameters.dependsOn }} + + displayName: OneLocBuild${{ parameters.JobNameSuffix }} + + variables: + - group: OneLocBuildVariables # Contains the CeapexPat and GithubPat + - name: _GenerateLocProjectArguments + value: -SourcesDirectory ${{ parameters.SourcesDirectory }} + -LanguageSet "${{ parameters.LanguageSet }}" + -CreateNeutralXlfs + - ${{ if eq(parameters.UseCheckedInLocProjectJson, 'true') }}: + - name: _GenerateLocProjectArguments + value: ${{ variables._GenerateLocProjectArguments }} -UseCheckedInLocProjectJson + - template: /eng/common/templates-official/variables/pool-providers.yml + + ${{ if ne(parameters.pool, '') }}: + pool: ${{ parameters.pool }} + ${{ if eq(parameters.pool, '') }}: + pool: + # We don't use the collection uri here because it might vary (.visualstudio.com vs. dev.azure.com) + ${{ if eq(variables['System.TeamProject'], 'DevDiv') }}: + name: AzurePipelines-EO + image: 1ESPT-Windows2022 + demands: Cmd + os: windows + # If it's not devdiv, it's dnceng + ${{ if ne(variables['System.TeamProject'], 'DevDiv') }}: + name: $(DncEngInternalBuildPool) + image: 1es-windows-2022-pt + os: windows + + steps: + - ${{ if ne(parameters.SkipLocProjectJsonGeneration, 'true') }}: + - task: Powershell@2 + inputs: + filePath: $(Build.SourcesDirectory)/eng/common/generate-locproject.ps1 + arguments: $(_GenerateLocProjectArguments) + displayName: Generate LocProject.json + condition: ${{ parameters.condition }} + + - task: OneLocBuild@2 + displayName: OneLocBuild + env: + SYSTEM_ACCESSTOKEN: $(System.AccessToken) + inputs: + locProj: eng/Localize/LocProject.json + outDir: $(Build.ArtifactStagingDirectory) + lclSource: ${{ parameters.LclSource }} + lclPackageId: ${{ parameters.LclPackageId }} + isCreatePrSelected: ${{ parameters.CreatePr }} + isAutoCompletePrSelected: ${{ parameters.AutoCompletePr }} + ${{ if eq(parameters.CreatePr, true) }}: + isUseLfLineEndingsSelected: ${{ parameters.UseLfLineEndings }} + ${{ if eq(parameters.RepoType, 'gitHub') }}: + isShouldReusePrSelected: ${{ parameters.ReusePr }} + packageSourceAuth: patAuth + patVariable: ${{ parameters.CeapexPat }} + ${{ if eq(parameters.RepoType, 'gitHub') }}: + repoType: ${{ parameters.RepoType }} + gitHubPatVariable: "${{ parameters.GithubPat }}" + ${{ if ne(parameters.MirrorRepo, '') }}: + isMirrorRepoSelected: true + gitHubOrganization: ${{ parameters.GitHubOrg }} + mirrorRepo: ${{ parameters.MirrorRepo }} + mirrorBranch: ${{ parameters.MirrorBranch }} + condition: ${{ parameters.condition }} + + - task: 1ES.PublishBuildArtifacts@1 + displayName: Publish Localization Files + inputs: + PathtoPublish: '$(Build.ArtifactStagingDirectory)/loc' + PublishLocation: Container + ArtifactName: Loc + condition: ${{ parameters.condition }} + + - task: 1ES.PublishBuildArtifacts@1 + displayName: Publish LocProject.json + inputs: + PathtoPublish: '$(Build.SourcesDirectory)/eng/Localize/' + PublishLocation: Container + ArtifactName: Loc + condition: ${{ parameters.condition }} \ No newline at end of file diff --git a/eng/common/templates-official/job/publish-build-assets.yml b/eng/common/templates-official/job/publish-build-assets.yml new file mode 100644 index 000000000000..53138622fe7a --- /dev/null +++ b/eng/common/templates-official/job/publish-build-assets.yml @@ -0,0 +1,155 @@ +parameters: + configuration: 'Debug' + + # Optional: condition for the job to run + condition: '' + + # Optional: 'true' if future jobs should run even if this job fails + continueOnError: false + + # Optional: dependencies of the job + dependsOn: '' + + # Optional: Include PublishBuildArtifacts task + enablePublishBuildArtifacts: false + + # Optional: A defined YAML pool - https://docs.microsoft.com/en-us/azure/devops/pipelines/yaml-schema?view=vsts&tabs=schema#pool + pool: {} + + # Optional: should run as a public build even in the internal project + # if 'true', the build won't run any of the internal only steps, even if it is running in non-public projects. + runAsPublic: false + + # Optional: whether the build's artifacts will be published using release pipelines or direct feed publishing + publishUsingPipelines: false + + # Optional: whether the build's artifacts will be published using release pipelines or direct feed publishing + publishAssetsImmediately: false + + artifactsPublishingAdditionalParameters: '' + + signingValidationAdditionalParameters: '' + +jobs: +- job: Asset_Registry_Publish + + dependsOn: ${{ parameters.dependsOn }} + timeoutInMinutes: 150 + + ${{ if eq(parameters.publishAssetsImmediately, 'true') }}: + displayName: Publish Assets + ${{ else }}: + displayName: Publish to Build Asset Registry + + variables: + - template: /eng/common/templates-official/variables/pool-providers.yml + - ${{ if and(eq(parameters.runAsPublic, 'false'), ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}: + - group: Publish-Build-Assets + - group: AzureDevOps-Artifact-Feeds-Pats + - name: runCodesignValidationInjection + value: false + - ${{ if eq(parameters.publishAssetsImmediately, 'true') }}: + - template: /eng/common/templates-official/post-build/common-variables.yml + + pool: + # We don't use the collection uri here because it might vary (.visualstudio.com vs. dev.azure.com) + ${{ if eq(variables['System.TeamProject'], 'DevDiv') }}: + name: AzurePipelines-EO + image: 1ESPT-Windows2022 + demands: Cmd + os: windows + # If it's not devdiv, it's dnceng + ${{ if ne(variables['System.TeamProject'], 'DevDiv') }}: + name: $(DncEngInternalBuildPool) + image: 1es-windows-2022-pt + os: windows + steps: + - ${{ if and(eq(parameters.runAsPublic, 'false'), ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}: + - task: DownloadBuildArtifacts@0 + displayName: Download artifact + inputs: + artifactName: AssetManifests + downloadPath: '$(Build.StagingDirectory)/Download' + checkDownloadedFiles: true + condition: ${{ parameters.condition }} + continueOnError: ${{ parameters.continueOnError }} + + - task: NuGetAuthenticate@1 + + - task: PowerShell@2 + displayName: Publish Build Assets + inputs: + filePath: eng\common\sdk-task.ps1 + arguments: -task PublishBuildAssets -restore -msbuildEngine dotnet + /p:ManifestsPath='$(Build.StagingDirectory)/Download/AssetManifests' + /p:BuildAssetRegistryToken=$(MaestroAccessToken) + /p:MaestroApiEndpoint=https://maestro-prod.westus2.cloudapp.azure.com + /p:PublishUsingPipelines=${{ parameters.publishUsingPipelines }} + /p:OfficialBuildId=$(Build.BuildNumber) + condition: ${{ parameters.condition }} + continueOnError: ${{ parameters.continueOnError }} + + - task: powershell@2 + displayName: Create ReleaseConfigs Artifact + inputs: + targetType: inline + script: | + New-Item -Path "$(Build.StagingDirectory)/ReleaseConfigs" -ItemType Directory -Force + $filePath = "$(Build.StagingDirectory)/ReleaseConfigs/ReleaseConfigs.txt" + Add-Content -Path $filePath -Value $(BARBuildId) + Add-Content -Path $filePath -Value "$(DefaultChannels)" + Add-Content -Path $filePath -Value $(IsStableBuild) + + - task: 1ES.PublishBuildArtifacts@1 + displayName: Publish ReleaseConfigs Artifact + inputs: + PathtoPublish: '$(Build.StagingDirectory)/ReleaseConfigs' + PublishLocation: Container + ArtifactName: ReleaseConfigs + + - task: powershell@2 + displayName: Check if SymbolPublishingExclusionsFile.txt exists + inputs: + targetType: inline + script: | + $symbolExclusionfile = "$(Build.SourcesDirectory)/eng/SymbolPublishingExclusionsFile.txt" + if(Test-Path -Path $symbolExclusionfile) + { + Write-Host "SymbolExclusionFile exists" + Write-Host "##vso[task.setvariable variable=SymbolExclusionFile]true" + } + else{ + Write-Host "Symbols Exclusion file does not exists" + Write-Host "##vso[task.setvariable variable=SymbolExclusionFile]false" + } + + - task: 1ES.PublishBuildArtifacts@1 + displayName: Publish SymbolPublishingExclusionsFile Artifact + condition: eq(variables['SymbolExclusionFile'], 'true') + inputs: + PathtoPublish: '$(Build.SourcesDirectory)/eng/SymbolPublishingExclusionsFile.txt' + PublishLocation: Container + ArtifactName: ReleaseConfigs + + - ${{ if eq(parameters.publishAssetsImmediately, 'true') }}: + - template: /eng/common/templates-official/post-build/setup-maestro-vars.yml + parameters: + BARBuildId: ${{ parameters.BARBuildId }} + PromoteToChannelIds: ${{ parameters.PromoteToChannelIds }} + + - task: PowerShell@2 + displayName: Publish Using Darc + inputs: + filePath: $(Build.SourcesDirectory)/eng/common/post-build/publish-using-darc.ps1 + arguments: -BuildId $(BARBuildId) + -PublishingInfraVersion 3 + -AzdoToken '$(publishing-dnceng-devdiv-code-r-build-re)' + -MaestroToken '$(MaestroApiAccessToken)' + -WaitPublishingFinish true + -ArtifactsPublishingAdditionalParameters '${{ parameters.artifactsPublishingAdditionalParameters }}' + -SymbolPublishingAdditionalParameters '${{ parameters.symbolPublishingAdditionalParameters }}' + + - ${{ if eq(parameters.enablePublishBuildArtifacts, 'true') }}: + - template: /eng/common/templates-official/steps/publish-logs.yml + parameters: + JobLabel: 'Publish_Artifacts_Logs' diff --git a/eng/common/templates-official/job/source-build.yml b/eng/common/templates-official/job/source-build.yml new file mode 100644 index 000000000000..8aba3b44bb25 --- /dev/null +++ b/eng/common/templates-official/job/source-build.yml @@ -0,0 +1,67 @@ +parameters: + # This template adds arcade-powered source-build to CI. The template produces a server job with a + # default ID 'Source_Build_Complete' to put in a dependency list if necessary. + + # Specifies the prefix for source-build jobs added to pipeline. Use this if disambiguation needed. + jobNamePrefix: 'Source_Build' + + # Defines the platform on which to run the job. By default, a linux-x64 machine, suitable for + # managed-only repositories. This is an object with these properties: + # + # name: '' + # The name of the job. This is included in the job ID. + # targetRID: '' + # The name of the target RID to use, instead of the one auto-detected by Arcade. + # nonPortable: false + # Enables non-portable mode. This means a more specific RID (e.g. fedora.32-x64 rather than + # linux-x64), and compiling against distro-provided packages rather than portable ones. + # skipPublishValidation: false + # Disables publishing validation. By default, a check is performed to ensure no packages are + # published by source-build. + # container: '' + # A container to use. Runs in docker. + # pool: {} + # A pool to use. Runs directly on an agent. + # buildScript: '' + # Specifies the build script to invoke to perform the build in the repo. The default + # './build.sh' should work for typical Arcade repositories, but this is customizable for + # difficult situations. + # jobProperties: {} + # A list of job properties to inject at the top level, for potential extensibility beyond + # container and pool. + platform: {} + +jobs: +- job: ${{ parameters.jobNamePrefix }}_${{ parameters.platform.name }} + displayName: Source-Build (${{ parameters.platform.name }}) + + ${{ each property in parameters.platform.jobProperties }}: + ${{ property.key }}: ${{ property.value }} + + ${{ if ne(parameters.platform.container, '') }}: + container: ${{ parameters.platform.container }} + + ${{ if eq(parameters.platform.pool, '') }}: + # The default VM host AzDO pool. This should be capable of running Docker containers: almost all + # source-build builds run in Docker, including the default managed platform. + # /eng/common/templates-official/variables/pool-providers.yml can't be used here (some customers declare variables already), so duplicate its logic + pool: + ${{ if eq(variables['System.TeamProject'], 'public') }}: + name: $[replace(replace(eq(contains(coalesce(variables['System.PullRequest.TargetBranch'], variables['Build.SourceBranch'], 'refs/heads/main'), 'release'), 'true'), True, 'NetCore-Svc-Public' ), False, 'NetCore-Public')] + demands: ImageOverride -equals Build.Ubuntu.1804.Amd64.Open + + ${{ if eq(variables['System.TeamProject'], 'internal') }}: + name: $[replace(replace(eq(contains(coalesce(variables['System.PullRequest.TargetBranch'], variables['Build.SourceBranch'], 'refs/heads/main'), 'release'), 'true'), True, 'NetCore1ESPool-Svc-Internal'), False, 'NetCore1ESPool-Internal')] + image: 1es-mariner-2-pt + os: linux + + ${{ if ne(parameters.platform.pool, '') }}: + pool: ${{ parameters.platform.pool }} + + workspace: + clean: all + + steps: + - template: /eng/common/templates-official/steps/source-build.yml + parameters: + platform: ${{ parameters.platform }} diff --git a/eng/common/templates-official/job/source-index-stage1.yml b/eng/common/templates-official/job/source-index-stage1.yml new file mode 100644 index 000000000000..4b6337391708 --- /dev/null +++ b/eng/common/templates-official/job/source-index-stage1.yml @@ -0,0 +1,68 @@ +parameters: + runAsPublic: false + sourceIndexPackageVersion: 1.0.1-20230228.2 + sourceIndexPackageSource: https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-tools/nuget/v3/index.json + sourceIndexBuildCommand: powershell -NoLogo -NoProfile -ExecutionPolicy Bypass -Command "eng/common/build.ps1 -restore -build -binarylog -ci" + preSteps: [] + binlogPath: artifacts/log/Debug/Build.binlog + condition: '' + dependsOn: '' + pool: '' + +jobs: +- job: SourceIndexStage1 + dependsOn: ${{ parameters.dependsOn }} + condition: ${{ parameters.condition }} + variables: + - name: SourceIndexPackageVersion + value: ${{ parameters.sourceIndexPackageVersion }} + - name: SourceIndexPackageSource + value: ${{ parameters.sourceIndexPackageSource }} + - name: BinlogPath + value: ${{ parameters.binlogPath }} + - ${{ if and(eq(parameters.runAsPublic, 'false'), ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}: + - group: source-dot-net stage1 variables + - template: /eng/common/templates-official/variables/pool-providers.yml + + ${{ if ne(parameters.pool, '') }}: + pool: ${{ parameters.pool }} + ${{ if eq(parameters.pool, '') }}: + pool: + ${{ if eq(variables['System.TeamProject'], 'public') }}: + name: $(DncEngPublicBuildPool) + demands: ImageOverride -equals windows.vs2019.amd64.open + ${{ if eq(variables['System.TeamProject'], 'internal') }}: + name: $(DncEngInternalBuildPool) + image: 1es-windows-2022-pt + os: windows + + steps: + - ${{ each preStep in parameters.preSteps }}: + - ${{ preStep }} + + - task: UseDotNet@2 + displayName: Use .NET Core SDK 6 + inputs: + packageType: sdk + version: 6.0.x + installationPath: $(Agent.TempDirectory)/dotnet + workingDirectory: $(Agent.TempDirectory) + + - script: | + $(Agent.TempDirectory)/dotnet/dotnet tool install BinLogToSln --version $(SourceIndexPackageVersion) --add-source $(SourceIndexPackageSource) --tool-path $(Agent.TempDirectory)/.source-index/tools + $(Agent.TempDirectory)/dotnet/dotnet tool install UploadIndexStage1 --version $(SourceIndexPackageVersion) --add-source $(SourceIndexPackageSource) --tool-path $(Agent.TempDirectory)/.source-index/tools + displayName: Download Tools + # Set working directory to temp directory so 'dotnet' doesn't try to use global.json and use the repo's sdk. + workingDirectory: $(Agent.TempDirectory) + + - script: ${{ parameters.sourceIndexBuildCommand }} + displayName: Build Repository + + - script: $(Agent.TempDirectory)/.source-index/tools/BinLogToSln -i $(BinlogPath) -r $(Build.SourcesDirectory) -n $(Build.Repository.Name) -o .source-index/stage1output + displayName: Process Binlog into indexable sln + + - ${{ if and(eq(parameters.runAsPublic, 'false'), ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}: + - script: $(Agent.TempDirectory)/.source-index/tools/UploadIndexStage1 -i .source-index/stage1output -n $(Build.Repository.Name) + displayName: Upload stage1 artifacts to source index + env: + BLOB_CONTAINER_URL: $(source-dot-net-stage1-blob-container-url) diff --git a/eng/common/templates-official/jobs/codeql-build.yml b/eng/common/templates-official/jobs/codeql-build.yml new file mode 100644 index 000000000000..b68d3c2f3199 --- /dev/null +++ b/eng/common/templates-official/jobs/codeql-build.yml @@ -0,0 +1,31 @@ +parameters: + # See schema documentation in /Documentation/AzureDevOps/TemplateSchema.md + continueOnError: false + # Required: A collection of jobs to run - https://docs.microsoft.com/en-us/azure/devops/pipelines/yaml-schema?view=vsts&tabs=schema#job + jobs: [] + # Optional: if specified, restore and use this version of Guardian instead of the default. + overrideGuardianVersion: '' + +jobs: +- template: /eng/common/templates-official/jobs/jobs.yml + parameters: + enableMicrobuild: false + enablePublishBuildArtifacts: false + enablePublishTestResults: false + enablePublishBuildAssets: false + enablePublishUsingPipelines: false + enableTelemetry: true + + variables: + - group: Publish-Build-Assets + # The Guardian version specified in 'eng/common/sdl/packages.config'. This value must be kept in + # sync with the packages.config file. + - name: DefaultGuardianVersion + value: 0.109.0 + - name: GuardianPackagesConfigFile + value: $(Build.SourcesDirectory)\eng\common\sdl\packages.config + - name: GuardianVersion + value: ${{ coalesce(parameters.overrideGuardianVersion, '$(DefaultGuardianVersion)') }} + + jobs: ${{ parameters.jobs }} + diff --git a/eng/common/templates-official/jobs/jobs.yml b/eng/common/templates-official/jobs/jobs.yml new file mode 100644 index 000000000000..857a0f8ba43e --- /dev/null +++ b/eng/common/templates-official/jobs/jobs.yml @@ -0,0 +1,97 @@ +parameters: + # See schema documentation in /Documentation/AzureDevOps/TemplateSchema.md + continueOnError: false + + # Optional: Include PublishBuildArtifacts task + enablePublishBuildArtifacts: false + + # Optional: Enable publishing using release pipelines + enablePublishUsingPipelines: false + + # Optional: Enable running the source-build jobs to build repo from source + enableSourceBuild: false + + # Optional: Parameters for source-build template. + # See /eng/common/templates-official/jobs/source-build.yml for options + sourceBuildParameters: [] + + graphFileGeneration: + # Optional: Enable generating the graph files at the end of the build + enabled: false + # Optional: Include toolset dependencies in the generated graph files + includeToolset: false + + # Required: A collection of jobs to run - https://docs.microsoft.com/en-us/azure/devops/pipelines/yaml-schema?view=vsts&tabs=schema#job + jobs: [] + + # Optional: Override automatically derived dependsOn value for "publish build assets" job + publishBuildAssetsDependsOn: '' + + # Optional: Publish the assets as soon as the publish to BAR stage is complete, rather doing so in a separate stage. + publishAssetsImmediately: false + + # Optional: If using publishAssetsImmediately and additional parameters are needed, can be used to send along additional parameters (normally sent to post-build.yml) + artifactsPublishingAdditionalParameters: '' + signingValidationAdditionalParameters: '' + + # Optional: should run as a public build even in the internal project + # if 'true', the build won't run any of the internal only steps, even if it is running in non-public projects. + runAsPublic: false + + enableSourceIndex: false + sourceIndexParams: {} + +# Internal resources (telemetry, microbuild) can only be accessed from non-public projects, +# and some (Microbuild) should only be applied to non-PR cases for internal builds. + +jobs: +- ${{ each job in parameters.jobs }}: + - template: ../job/job.yml + parameters: + # pass along parameters + ${{ each parameter in parameters }}: + ${{ if ne(parameter.key, 'jobs') }}: + ${{ parameter.key }}: ${{ parameter.value }} + + # pass along job properties + ${{ each property in job }}: + ${{ if ne(property.key, 'job') }}: + ${{ property.key }}: ${{ property.value }} + + name: ${{ job.job }} + +- ${{ if eq(parameters.enableSourceBuild, true) }}: + - template: /eng/common/templates-official/jobs/source-build.yml + parameters: + allCompletedJobId: Source_Build_Complete + ${{ each parameter in parameters.sourceBuildParameters }}: + ${{ parameter.key }}: ${{ parameter.value }} + +- ${{ if eq(parameters.enableSourceIndex, 'true') }}: + - template: ../job/source-index-stage1.yml + parameters: + runAsPublic: ${{ parameters.runAsPublic }} + ${{ each parameter in parameters.sourceIndexParams }}: + ${{ parameter.key }}: ${{ parameter.value }} + +- ${{ if and(eq(parameters.runAsPublic, 'false'), ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}: + - ${{ if or(eq(parameters.enablePublishBuildAssets, true), eq(parameters.artifacts.publish.manifests, 'true'), ne(parameters.artifacts.publish.manifests, '')) }}: + - template: ../job/publish-build-assets.yml + parameters: + continueOnError: ${{ parameters.continueOnError }} + dependsOn: + - ${{ if ne(parameters.publishBuildAssetsDependsOn, '') }}: + - ${{ each job in parameters.publishBuildAssetsDependsOn }}: + - ${{ job.job }} + - ${{ if eq(parameters.publishBuildAssetsDependsOn, '') }}: + - ${{ each job in parameters.jobs }}: + - ${{ job.job }} + - ${{ if eq(parameters.enableSourceBuild, true) }}: + - Source_Build_Complete + + runAsPublic: ${{ parameters.runAsPublic }} + publishUsingPipelines: ${{ parameters.enablePublishUsingPipelines }} + publishAssetsImmediately: ${{ parameters.publishAssetsImmediately }} + enablePublishBuildArtifacts: ${{ parameters.enablePublishBuildArtifacts }} + artifactsPublishingAdditionalParameters: ${{ parameters.artifactsPublishingAdditionalParameters }} + signingValidationAdditionalParameters: ${{ parameters.signingValidationAdditionalParameters }} diff --git a/eng/common/templates-official/jobs/source-build.yml b/eng/common/templates-official/jobs/source-build.yml new file mode 100644 index 000000000000..08e5db9bb116 --- /dev/null +++ b/eng/common/templates-official/jobs/source-build.yml @@ -0,0 +1,46 @@ +parameters: + # This template adds arcade-powered source-build to CI. A job is created for each platform, as + # well as an optional server job that completes when all platform jobs complete. + + # The name of the "join" job for all source-build platforms. If set to empty string, the job is + # not included. Existing repo pipelines can use this job depend on all source-build jobs + # completing without maintaining a separate list of every single job ID: just depend on this one + # server job. By default, not included. Recommended name if used: 'Source_Build_Complete'. + allCompletedJobId: '' + + # See /eng/common/templates-official/job/source-build.yml + jobNamePrefix: 'Source_Build' + + # This is the default platform provided by Arcade, intended for use by a managed-only repo. + defaultManagedPlatform: + name: 'Managed' + container: 'mcr.microsoft.com/dotnet-buildtools/prereqs:centos-stream8' + + # Defines the platforms on which to run build jobs. One job is created for each platform, and the + # object in this array is sent to the job template as 'platform'. If no platforms are specified, + # one job runs on 'defaultManagedPlatform'. + platforms: [] + +jobs: + +- ${{ if ne(parameters.allCompletedJobId, '') }}: + - job: ${{ parameters.allCompletedJobId }} + displayName: Source-Build Complete + pool: server + dependsOn: + - ${{ each platform in parameters.platforms }}: + - ${{ parameters.jobNamePrefix }}_${{ platform.name }} + - ${{ if eq(length(parameters.platforms), 0) }}: + - ${{ parameters.jobNamePrefix }}_${{ parameters.defaultManagedPlatform.name }} + +- ${{ each platform in parameters.platforms }}: + - template: /eng/common/templates-official/job/source-build.yml + parameters: + jobNamePrefix: ${{ parameters.jobNamePrefix }} + platform: ${{ platform }} + +- ${{ if eq(length(parameters.platforms), 0) }}: + - template: /eng/common/templates-official/job/source-build.yml + parameters: + jobNamePrefix: ${{ parameters.jobNamePrefix }} + platform: ${{ parameters.defaultManagedPlatform }} diff --git a/eng/common/templates-official/post-build/common-variables.yml b/eng/common/templates-official/post-build/common-variables.yml new file mode 100644 index 000000000000..c24193acfc98 --- /dev/null +++ b/eng/common/templates-official/post-build/common-variables.yml @@ -0,0 +1,22 @@ +variables: + - group: Publish-Build-Assets + + # Whether the build is internal or not + - name: IsInternalBuild + value: ${{ and(ne(variables['System.TeamProject'], 'public'), contains(variables['Build.SourceBranch'], 'internal')) }} + + # Default Maestro++ API Endpoint and API Version + - name: MaestroApiEndPoint + value: "https://maestro-prod.westus2.cloudapp.azure.com/" + - name: MaestroApiAccessToken + value: $(MaestroAccessToken) + - name: MaestroApiVersion + value: "2020-02-20" + + - name: SourceLinkCLIVersion + value: 3.0.0 + - name: SymbolToolVersion + value: 1.0.1 + + - name: runCodesignValidationInjection + value: false diff --git a/eng/common/templates-official/post-build/post-build.yml b/eng/common/templates-official/post-build/post-build.yml new file mode 100644 index 000000000000..5c98fe1c0f3a --- /dev/null +++ b/eng/common/templates-official/post-build/post-build.yml @@ -0,0 +1,285 @@ +parameters: + # Which publishing infra should be used. THIS SHOULD MATCH THE VERSION ON THE BUILD MANIFEST. + # Publishing V1 is no longer supported + # Publishing V2 is no longer supported + # Publishing V3 is the default + - name: publishingInfraVersion + displayName: Which version of publishing should be used to promote the build definition? + type: number + default: 3 + values: + - 3 + + - name: BARBuildId + displayName: BAR Build Id + type: number + default: 0 + + - name: PromoteToChannelIds + displayName: Channel to promote BARBuildId to + type: string + default: '' + + - name: enableSourceLinkValidation + displayName: Enable SourceLink validation + type: boolean + default: false + + - name: enableSigningValidation + displayName: Enable signing validation + type: boolean + default: true + + - name: enableSymbolValidation + displayName: Enable symbol validation + type: boolean + default: false + + - name: enableNugetValidation + displayName: Enable NuGet validation + type: boolean + default: true + + - name: publishInstallersAndChecksums + displayName: Publish installers and checksums + type: boolean + default: true + + - name: SDLValidationParameters + type: object + default: + enable: false + publishGdn: false + continueOnError: false + params: '' + artifactNames: '' + downloadArtifacts: true + + # These parameters let the user customize the call to sdk-task.ps1 for publishing + # symbols & general artifacts as well as for signing validation + - name: symbolPublishingAdditionalParameters + displayName: Symbol publishing additional parameters + type: string + default: '' + + - name: artifactsPublishingAdditionalParameters + displayName: Artifact publishing additional parameters + type: string + default: '' + + - name: signingValidationAdditionalParameters + displayName: Signing validation additional parameters + type: string + default: '' + + # Which stages should finish execution before post-build stages start + - name: validateDependsOn + type: object + default: + - build + + - name: publishDependsOn + type: object + default: + - Validate + + # Optional: Call asset publishing rather than running in a separate stage + - name: publishAssetsImmediately + type: boolean + default: false + +stages: +- ${{ if or(eq( parameters.enableNugetValidation, 'true'), eq(parameters.enableSigningValidation, 'true'), eq(parameters.enableSourceLinkValidation, 'true'), eq(parameters.SDLValidationParameters.enable, 'true')) }}: + - stage: Validate + dependsOn: ${{ parameters.validateDependsOn }} + displayName: Validate Build Assets + variables: + - template: common-variables.yml + - template: /eng/common/templates-official/variables/pool-providers.yml + jobs: + - job: + displayName: NuGet Validation + condition: and(succeededOrFailed(), eq( ${{ parameters.enableNugetValidation }}, 'true')) + pool: + # We don't use the collection uri here because it might vary (.visualstudio.com vs. dev.azure.com) + ${{ if eq(variables['System.TeamProject'], 'DevDiv') }}: + name: AzurePipelines-EO + image: 1ESPT-Windows2022 + demands: Cmd + os: windows + # If it's not devdiv, it's dnceng + ${{ else }}: + name: $(DncEngInternalBuildPool) + image: 1es-windows-2022-pt + os: windows + + steps: + - template: setup-maestro-vars.yml + parameters: + BARBuildId: ${{ parameters.BARBuildId }} + PromoteToChannelIds: ${{ parameters.PromoteToChannelIds }} + + - task: DownloadBuildArtifacts@0 + displayName: Download Package Artifacts + inputs: + buildType: specific + buildVersionToDownload: specific + project: $(AzDOProjectName) + pipeline: $(AzDOPipelineId) + buildId: $(AzDOBuildId) + artifactName: PackageArtifacts + checkDownloadedFiles: true + + - task: PowerShell@2 + displayName: Validate + inputs: + filePath: $(Build.SourcesDirectory)/eng/common/post-build/nuget-validation.ps1 + arguments: -PackagesPath $(Build.ArtifactStagingDirectory)/PackageArtifacts/ + -ToolDestinationPath $(Agent.BuildDirectory)/Extract/ + + - job: + displayName: Signing Validation + condition: and( eq( ${{ parameters.enableSigningValidation }}, 'true'), ne( variables['PostBuildSign'], 'true')) + pool: + # We don't use the collection uri here because it might vary (.visualstudio.com vs. dev.azure.com) + ${{ if eq(variables['System.TeamProject'], 'DevDiv') }}: + name: AzurePipelines-EO + image: 1ESPT-Windows2022 + demands: Cmd + os: windows + # If it's not devdiv, it's dnceng + ${{ else }}: + name: $(DncEngInternalBuildPool) + image: 1es-windows-2022-pt + os: windows + steps: + - template: setup-maestro-vars.yml + parameters: + BARBuildId: ${{ parameters.BARBuildId }} + PromoteToChannelIds: ${{ parameters.PromoteToChannelIds }} + + - task: DownloadBuildArtifacts@0 + displayName: Download Package Artifacts + inputs: + buildType: specific + buildVersionToDownload: specific + project: $(AzDOProjectName) + pipeline: $(AzDOPipelineId) + buildId: $(AzDOBuildId) + artifactName: PackageArtifacts + checkDownloadedFiles: true + itemPattern: | + ** + !**/Microsoft.SourceBuild.Intermediate.*.nupkg + + # This is necessary whenever we want to publish/restore to an AzDO private feed + # Since sdk-task.ps1 tries to restore packages we need to do this authentication here + # otherwise it'll complain about accessing a private feed. + - task: NuGetAuthenticate@1 + displayName: 'Authenticate to AzDO Feeds' + + # Signing validation will optionally work with the buildmanifest file which is downloaded from + # Azure DevOps above. + - task: PowerShell@2 + displayName: Validate + inputs: + filePath: eng\common\sdk-task.ps1 + arguments: -task SigningValidation -restore -msbuildEngine vs + /p:PackageBasePath='$(Build.ArtifactStagingDirectory)/PackageArtifacts' + /p:SignCheckExclusionsFile='$(Build.SourcesDirectory)/eng/SignCheckExclusionsFile.txt' + ${{ parameters.signingValidationAdditionalParameters }} + + - template: ../steps/publish-logs.yml + parameters: + StageLabel: 'Validation' + JobLabel: 'Signing' + BinlogToolVersion: $(BinlogToolVersion) + + - job: + displayName: SourceLink Validation + condition: eq( ${{ parameters.enableSourceLinkValidation }}, 'true') + pool: + # We don't use the collection uri here because it might vary (.visualstudio.com vs. dev.azure.com) + ${{ if eq(variables['System.TeamProject'], 'DevDiv') }}: + name: AzurePipelines-EO + image: 1ESPT-Windows2022 + demands: Cmd + os: windows + # If it's not devdiv, it's dnceng + ${{ else }}: + name: $(DncEngInternalBuildPool) + image: 1es-windows-2022-pt + os: windows + steps: + - template: setup-maestro-vars.yml + parameters: + BARBuildId: ${{ parameters.BARBuildId }} + PromoteToChannelIds: ${{ parameters.PromoteToChannelIds }} + + - task: DownloadBuildArtifacts@0 + displayName: Download Blob Artifacts + inputs: + buildType: specific + buildVersionToDownload: specific + project: $(AzDOProjectName) + pipeline: $(AzDOPipelineId) + buildId: $(AzDOBuildId) + artifactName: BlobArtifacts + checkDownloadedFiles: true + + - task: PowerShell@2 + displayName: Validate + inputs: + filePath: $(Build.SourcesDirectory)/eng/common/post-build/sourcelink-validation.ps1 + arguments: -InputPath $(Build.ArtifactStagingDirectory)/BlobArtifacts/ + -ExtractPath $(Agent.BuildDirectory)/Extract/ + -GHRepoName $(Build.Repository.Name) + -GHCommit $(Build.SourceVersion) + -SourcelinkCliVersion $(SourceLinkCLIVersion) + continueOnError: true + +- ${{ if ne(parameters.publishAssetsImmediately, 'true') }}: + - stage: publish_using_darc + ${{ if or(eq(parameters.enableNugetValidation, 'true'), eq(parameters.enableSigningValidation, 'true'), eq(parameters.enableSourceLinkValidation, 'true'), eq(parameters.SDLValidationParameters.enable, 'true')) }}: + dependsOn: ${{ parameters.publishDependsOn }} + ${{ else }}: + dependsOn: ${{ parameters.validateDependsOn }} + displayName: Publish using Darc + variables: + - template: common-variables.yml + - template: /eng/common/templates-official/variables/pool-providers.yml + jobs: + - job: + displayName: Publish Using Darc + timeoutInMinutes: 120 + pool: + # We don't use the collection uri here because it might vary (.visualstudio.com vs. dev.azure.com) + ${{ if eq(variables['System.TeamProject'], 'DevDiv') }}: + name: AzurePipelines-EO + image: 1ESPT-Windows2022 + demands: Cmd + os: windows + # If it's not devdiv, it's dnceng + ${{ else }}: + name: $(DncEngInternalBuildPool) + image: 1es-windows-2022-pt + os: windows + steps: + - template: setup-maestro-vars.yml + parameters: + BARBuildId: ${{ parameters.BARBuildId }} + PromoteToChannelIds: ${{ parameters.PromoteToChannelIds }} + + - task: NuGetAuthenticate@1 + + - task: PowerShell@2 + displayName: Publish Using Darc + inputs: + filePath: $(Build.SourcesDirectory)/eng/common/post-build/publish-using-darc.ps1 + arguments: -BuildId $(BARBuildId) + -PublishingInfraVersion ${{ parameters.publishingInfraVersion }} + -AzdoToken '$(publishing-dnceng-devdiv-code-r-build-re)' + -MaestroToken '$(MaestroApiAccessToken)' + -WaitPublishingFinish true + -ArtifactsPublishingAdditionalParameters '${{ parameters.artifactsPublishingAdditionalParameters }}' + -SymbolPublishingAdditionalParameters '${{ parameters.symbolPublishingAdditionalParameters }}' diff --git a/eng/common/templates-official/post-build/setup-maestro-vars.yml b/eng/common/templates-official/post-build/setup-maestro-vars.yml new file mode 100644 index 000000000000..0c87f149a4ad --- /dev/null +++ b/eng/common/templates-official/post-build/setup-maestro-vars.yml @@ -0,0 +1,70 @@ +parameters: + BARBuildId: '' + PromoteToChannelIds: '' + +steps: + - ${{ if eq(coalesce(parameters.PromoteToChannelIds, 0), 0) }}: + - task: DownloadBuildArtifacts@0 + displayName: Download Release Configs + inputs: + buildType: current + artifactName: ReleaseConfigs + checkDownloadedFiles: true + + - task: PowerShell@2 + name: setReleaseVars + displayName: Set Release Configs Vars + inputs: + targetType: inline + pwsh: true + script: | + try { + if (!$Env:PromoteToMaestroChannels -or $Env:PromoteToMaestroChannels.Trim() -eq '') { + $Content = Get-Content $(Build.StagingDirectory)/ReleaseConfigs/ReleaseConfigs.txt + + $BarId = $Content | Select -Index 0 + $Channels = $Content | Select -Index 1 + $IsStableBuild = $Content | Select -Index 2 + + $AzureDevOpsProject = $Env:System_TeamProject + $AzureDevOpsBuildDefinitionId = $Env:System_DefinitionId + $AzureDevOpsBuildId = $Env:Build_BuildId + } + else { + $buildApiEndpoint = "${Env:MaestroApiEndPoint}/api/builds/${Env:BARBuildId}?api-version=${Env:MaestroApiVersion}" + + $apiHeaders = New-Object 'System.Collections.Generic.Dictionary[[String],[String]]' + $apiHeaders.Add('Accept', 'application/json') + $apiHeaders.Add('Authorization',"Bearer ${Env:MAESTRO_API_TOKEN}") + + $buildInfo = try { Invoke-WebRequest -Method Get -Uri $buildApiEndpoint -Headers $apiHeaders | ConvertFrom-Json } catch { Write-Host "Error: $_" } + + $BarId = $Env:BARBuildId + $Channels = $Env:PromoteToMaestroChannels -split "," + $Channels = $Channels -join "][" + $Channels = "[$Channels]" + + $IsStableBuild = $buildInfo.stable + $AzureDevOpsProject = $buildInfo.azureDevOpsProject + $AzureDevOpsBuildDefinitionId = $buildInfo.azureDevOpsBuildDefinitionId + $AzureDevOpsBuildId = $buildInfo.azureDevOpsBuildId + } + + Write-Host "##vso[task.setvariable variable=BARBuildId]$BarId" + Write-Host "##vso[task.setvariable variable=TargetChannels]$Channels" + Write-Host "##vso[task.setvariable variable=IsStableBuild]$IsStableBuild" + + Write-Host "##vso[task.setvariable variable=AzDOProjectName]$AzureDevOpsProject" + Write-Host "##vso[task.setvariable variable=AzDOPipelineId]$AzureDevOpsBuildDefinitionId" + Write-Host "##vso[task.setvariable variable=AzDOBuildId]$AzureDevOpsBuildId" + } + catch { + Write-Host $_ + Write-Host $_.Exception + Write-Host $_.ScriptStackTrace + exit 1 + } + env: + MAESTRO_API_TOKEN: $(MaestroApiAccessToken) + BARBuildId: ${{ parameters.BARBuildId }} + PromoteToMaestroChannels: ${{ parameters.PromoteToChannelIds }} diff --git a/eng/common/templates-official/post-build/trigger-subscription.yml b/eng/common/templates-official/post-build/trigger-subscription.yml new file mode 100644 index 000000000000..da669030daf6 --- /dev/null +++ b/eng/common/templates-official/post-build/trigger-subscription.yml @@ -0,0 +1,13 @@ +parameters: + ChannelId: 0 + +steps: +- task: PowerShell@2 + displayName: Triggering subscriptions + inputs: + filePath: $(Build.SourcesDirectory)/eng/common/post-build/trigger-subscriptions.ps1 + arguments: -SourceRepo $(Build.Repository.Uri) + -ChannelId ${{ parameters.ChannelId }} + -MaestroApiAccessToken $(MaestroAccessToken) + -MaestroApiEndPoint $(MaestroApiEndPoint) + -MaestroApiVersion $(MaestroApiVersion) diff --git a/eng/common/templates-official/steps/add-build-to-channel.yml b/eng/common/templates-official/steps/add-build-to-channel.yml new file mode 100644 index 000000000000..f67a210d62f3 --- /dev/null +++ b/eng/common/templates-official/steps/add-build-to-channel.yml @@ -0,0 +1,13 @@ +parameters: + ChannelId: 0 + +steps: +- task: PowerShell@2 + displayName: Add Build to Channel + inputs: + filePath: $(Build.SourcesDirectory)/eng/common/post-build/add-build-to-channel.ps1 + arguments: -BuildId $(BARBuildId) + -ChannelId ${{ parameters.ChannelId }} + -MaestroApiAccessToken $(MaestroApiAccessToken) + -MaestroApiEndPoint $(MaestroApiEndPoint) + -MaestroApiVersion $(MaestroApiVersion) diff --git a/eng/common/templates-official/steps/build-reason.yml b/eng/common/templates-official/steps/build-reason.yml new file mode 100644 index 000000000000..eba58109b52c --- /dev/null +++ b/eng/common/templates-official/steps/build-reason.yml @@ -0,0 +1,12 @@ +# build-reason.yml +# Description: runs steps if build.reason condition is valid. conditions is a string of valid build reasons +# to include steps (',' separated). +parameters: + conditions: '' + steps: [] + +steps: + - ${{ if and( not(startsWith(parameters.conditions, 'not')), contains(parameters.conditions, variables['build.reason'])) }}: + - ${{ parameters.steps }} + - ${{ if and( startsWith(parameters.conditions, 'not'), not(contains(parameters.conditions, variables['build.reason']))) }}: + - ${{ parameters.steps }} diff --git a/eng/common/templates-official/steps/component-governance.yml b/eng/common/templates-official/steps/component-governance.yml new file mode 100644 index 000000000000..0ecec47b0c91 --- /dev/null +++ b/eng/common/templates-official/steps/component-governance.yml @@ -0,0 +1,13 @@ +parameters: + disableComponentGovernance: false + componentGovernanceIgnoreDirectories: '' + +steps: +- ${{ if eq(parameters.disableComponentGovernance, 'true') }}: + - script: "echo ##vso[task.setvariable variable=skipComponentGovernanceDetection]true" + displayName: Set skipComponentGovernanceDetection variable +- ${{ if ne(parameters.disableComponentGovernance, 'true') }}: + - task: ComponentGovernanceComponentDetection@0 + continueOnError: true + inputs: + ignoreDirectories: ${{ parameters.componentGovernanceIgnoreDirectories }} \ No newline at end of file diff --git a/eng/common/templates-official/steps/execute-codeql.yml b/eng/common/templates-official/steps/execute-codeql.yml new file mode 100644 index 000000000000..9b4a5ffa30a7 --- /dev/null +++ b/eng/common/templates-official/steps/execute-codeql.yml @@ -0,0 +1,32 @@ +parameters: + # Language that should be analyzed. Defaults to csharp + language: csharp + # Build Commands + buildCommands: '' + overrideParameters: '' # Optional: to override values for parameters. + additionalParameters: '' # Optional: parameters that need user specific values eg: '-SourceToolsList @("abc","def") -ArtifactToolsList @("ghi","jkl")' + # Optional: if specified, restore and use this version of Guardian instead of the default. + overrideGuardianVersion: '' + # Optional: if true, publish the '.gdn' folder as a pipeline artifact. This can help with in-depth + # diagnosis of problems with specific tool configurations. + publishGuardianDirectoryToPipeline: false + # The script to run to execute all SDL tools. Use this if you want to use a script to define SDL + # parameters rather than relying on YAML. It may be better to use a local script, because you can + # reproduce results locally without piecing together a command based on the YAML. + executeAllSdlToolsScript: 'eng/common/sdl/execute-all-sdl-tools.ps1' + # There is some sort of bug (has been reported) in Azure DevOps where if this parameter is named + # 'continueOnError', the parameter value is not correctly picked up. + # This can also be remedied by the caller (post-build.yml) if it does not use a nested parameter + # optional: determines whether to continue the build if the step errors; + sdlContinueOnError: false + +steps: +- template: /eng/common/templates-official/steps/execute-sdl.yml + parameters: + overrideGuardianVersion: ${{ parameters.overrideGuardianVersion }} + executeAllSdlToolsScript: ${{ parameters.executeAllSdlToolsScript }} + overrideParameters: ${{ parameters.overrideParameters }} + additionalParameters: '${{ parameters.additionalParameters }} + -CodeQLAdditionalRunConfigParams @("BuildCommands < ${{ parameters.buildCommands }}", "Language < ${{ parameters.language }}")' + publishGuardianDirectoryToPipeline: ${{ parameters.publishGuardianDirectoryToPipeline }} + sdlContinueOnError: ${{ parameters.sdlContinueOnError }} \ No newline at end of file diff --git a/eng/common/templates-official/steps/execute-sdl.yml b/eng/common/templates-official/steps/execute-sdl.yml new file mode 100644 index 000000000000..07426fde05d8 --- /dev/null +++ b/eng/common/templates-official/steps/execute-sdl.yml @@ -0,0 +1,88 @@ +parameters: + overrideGuardianVersion: '' + executeAllSdlToolsScript: '' + overrideParameters: '' + additionalParameters: '' + publishGuardianDirectoryToPipeline: false + sdlContinueOnError: false + condition: '' + +steps: +- task: NuGetAuthenticate@1 + inputs: + nuGetServiceConnections: GuardianConnect + +- task: NuGetToolInstaller@1 + displayName: 'Install NuGet.exe' + +- ${{ if ne(parameters.overrideGuardianVersion, '') }}: + - pwsh: | + Set-Location -Path $(Build.SourcesDirectory)\eng\common\sdl + . .\sdl.ps1 + $guardianCliLocation = Install-Gdn -Path $(Build.SourcesDirectory)\.artifacts -Version ${{ parameters.overrideGuardianVersion }} + Write-Host "##vso[task.setvariable variable=GuardianCliLocation]$guardianCliLocation" + displayName: Install Guardian (Overridden) + +- ${{ if eq(parameters.overrideGuardianVersion, '') }}: + - pwsh: | + Set-Location -Path $(Build.SourcesDirectory)\eng\common\sdl + . .\sdl.ps1 + $guardianCliLocation = Install-Gdn -Path $(Build.SourcesDirectory)\.artifacts + Write-Host "##vso[task.setvariable variable=GuardianCliLocation]$guardianCliLocation" + displayName: Install Guardian + +- ${{ if ne(parameters.overrideParameters, '') }}: + - powershell: ${{ parameters.executeAllSdlToolsScript }} ${{ parameters.overrideParameters }} + displayName: Execute SDL (Overridden) + continueOnError: ${{ parameters.sdlContinueOnError }} + condition: ${{ parameters.condition }} + +- ${{ if eq(parameters.overrideParameters, '') }}: + - powershell: ${{ parameters.executeAllSdlToolsScript }} + -GuardianCliLocation $(GuardianCliLocation) + -NugetPackageDirectory $(Build.SourcesDirectory)\.packages + -AzureDevOpsAccessToken $(dn-bot-dotnet-build-rw-code-rw) + ${{ parameters.additionalParameters }} + displayName: Execute SDL + continueOnError: ${{ parameters.sdlContinueOnError }} + condition: ${{ parameters.condition }} + +- ${{ if ne(parameters.publishGuardianDirectoryToPipeline, 'false') }}: + # We want to publish the Guardian results and configuration for easy diagnosis. However, the + # '.gdn' dir is a mix of configuration, results, extracted dependencies, and Guardian default + # tooling files. Some of these files are large and aren't useful during an investigation, so + # exclude them by simply deleting them before publishing. (As of writing, there is no documented + # way to selectively exclude a dir from the pipeline artifact publish task.) + - task: DeleteFiles@1 + displayName: Delete Guardian dependencies to avoid uploading + inputs: + SourceFolder: $(Agent.BuildDirectory)/.gdn + Contents: | + c + i + condition: succeededOrFailed() + + - publish: $(Agent.BuildDirectory)/.gdn + artifact: GuardianConfiguration + displayName: Publish GuardianConfiguration + condition: succeededOrFailed() + + # Publish the SARIF files in a container named CodeAnalysisLogs to enable integration + # with the "SARIF SAST Scans Tab" Azure DevOps extension + - task: CopyFiles@2 + displayName: Copy SARIF files + inputs: + flattenFolders: true + sourceFolder: $(Agent.BuildDirectory)/.gdn/rc/ + contents: '**/*.sarif' + targetFolder: $(Build.SourcesDirectory)/CodeAnalysisLogs + condition: succeededOrFailed() + + # Use PublishBuildArtifacts because the SARIF extension only checks this case + # see microsoft/sarif-azuredevops-extension#4 + - task: PublishBuildArtifacts@1 + displayName: Publish SARIF files to CodeAnalysisLogs container + inputs: + pathToPublish: $(Build.SourcesDirectory)/CodeAnalysisLogs + artifactName: CodeAnalysisLogs + condition: succeededOrFailed() \ No newline at end of file diff --git a/eng/common/templates-official/steps/generate-sbom.yml b/eng/common/templates-official/steps/generate-sbom.yml new file mode 100644 index 000000000000..1bf43bf807af --- /dev/null +++ b/eng/common/templates-official/steps/generate-sbom.yml @@ -0,0 +1,48 @@ +# BuildDropPath - The root folder of the drop directory for which the manifest file will be generated. +# PackageName - The name of the package this SBOM represents. +# PackageVersion - The version of the package this SBOM represents. +# ManifestDirPath - The path of the directory where the generated manifest files will be placed +# IgnoreDirectories - Directories to ignore for SBOM generation. This will be passed through to the CG component detector. + +parameters: + PackageVersion: 8.0.0 + BuildDropPath: '$(Build.SourcesDirectory)/artifacts' + PackageName: '.NET' + ManifestDirPath: $(Build.ArtifactStagingDirectory)/sbom + IgnoreDirectories: '' + sbomContinueOnError: true + +steps: +- task: PowerShell@2 + displayName: Prep for SBOM generation in (Non-linux) + condition: or(eq(variables['Agent.Os'], 'Windows_NT'), eq(variables['Agent.Os'], 'Darwin')) + inputs: + filePath: ./eng/common/generate-sbom-prep.ps1 + arguments: ${{parameters.manifestDirPath}} + +# Chmodding is a workaround for https://github.com/dotnet/arcade/issues/8461 +- script: | + chmod +x ./eng/common/generate-sbom-prep.sh + ./eng/common/generate-sbom-prep.sh ${{parameters.manifestDirPath}} + displayName: Prep for SBOM generation in (Linux) + condition: eq(variables['Agent.Os'], 'Linux') + continueOnError: ${{ parameters.sbomContinueOnError }} + +- task: AzureArtifacts.manifest-generator-task.manifest-generator-task.ManifestGeneratorTask@0 + displayName: 'Generate SBOM manifest' + continueOnError: ${{ parameters.sbomContinueOnError }} + inputs: + PackageName: ${{ parameters.packageName }} + BuildDropPath: ${{ parameters.buildDropPath }} + PackageVersion: ${{ parameters.packageVersion }} + ManifestDirPath: ${{ parameters.manifestDirPath }} + ${{ if ne(parameters.IgnoreDirectories, '') }}: + AdditionalComponentDetectorArgs: '--IgnoreDirectories ${{ parameters.IgnoreDirectories }}' + +- task: 1ES.PublishPipelineArtifact@1 + displayName: Publish SBOM manifest + continueOnError: ${{parameters.sbomContinueOnError}} + inputs: + targetPath: '${{parameters.manifestDirPath}}' + artifactName: $(ARTIFACT_NAME) + diff --git a/eng/common/templates-official/steps/publish-logs.yml b/eng/common/templates-official/steps/publish-logs.yml new file mode 100644 index 000000000000..04012fed182a --- /dev/null +++ b/eng/common/templates-official/steps/publish-logs.yml @@ -0,0 +1,23 @@ +parameters: + StageLabel: '' + JobLabel: '' + +steps: +- task: Powershell@2 + displayName: Prepare Binlogs to Upload + inputs: + targetType: inline + script: | + New-Item -ItemType Directory $(Build.SourcesDirectory)/PostBuildLogs/${{parameters.StageLabel}}/${{parameters.JobLabel}}/ + Move-Item -Path $(Build.SourcesDirectory)/artifacts/log/Debug/* $(Build.SourcesDirectory)/PostBuildLogs/${{parameters.StageLabel}}/${{parameters.JobLabel}}/ + continueOnError: true + condition: always() + +- task: 1ES.PublishBuildArtifacts@1 + displayName: Publish Logs + inputs: + PathtoPublish: '$(Build.SourcesDirectory)/PostBuildLogs' + PublishLocation: Container + ArtifactName: PostBuildLogs + continueOnError: true + condition: always() diff --git a/eng/common/templates-official/steps/retain-build.yml b/eng/common/templates-official/steps/retain-build.yml new file mode 100644 index 000000000000..83d97a26a01f --- /dev/null +++ b/eng/common/templates-official/steps/retain-build.yml @@ -0,0 +1,28 @@ +parameters: + # Optional azure devops PAT with build execute permissions for the build's organization, + # only needed if the build that should be retained ran on a different organization than + # the pipeline where this template is executing from + Token: '' + # Optional BuildId to retain, defaults to the current running build + BuildId: '' + # Azure devops Organization URI for the build in the https://dev.azure.com/ format. + # Defaults to the organization the current pipeline is running on + AzdoOrgUri: '$(System.CollectionUri)' + # Azure devops project for the build. Defaults to the project the current pipeline is running on + AzdoProject: '$(System.TeamProject)' + +steps: + - task: powershell@2 + inputs: + targetType: 'filePath' + filePath: eng/common/retain-build.ps1 + pwsh: true + arguments: > + -AzdoOrgUri: ${{parameters.AzdoOrgUri}} + -AzdoProject ${{parameters.AzdoProject}} + -Token ${{coalesce(parameters.Token, '$env:SYSTEM_ACCESSTOKEN') }} + -BuildId ${{coalesce(parameters.BuildId, '$env:BUILD_ID')}} + displayName: Enable permanent build retention + env: + SYSTEM_ACCESSTOKEN: $(System.AccessToken) + BUILD_ID: $(Build.BuildId) \ No newline at end of file diff --git a/eng/common/templates-official/steps/send-to-helix.yml b/eng/common/templates-official/steps/send-to-helix.yml new file mode 100644 index 000000000000..3eb7e2d5f840 --- /dev/null +++ b/eng/common/templates-official/steps/send-to-helix.yml @@ -0,0 +1,91 @@ +# Please remember to update the documentation if you make changes to these parameters! +parameters: + HelixSource: 'pr/default' # required -- sources must start with pr/, official/, prodcon/, or agent/ + HelixType: 'tests/default/' # required -- Helix telemetry which identifies what type of data this is; should include "test" for clarity and must end in '/' + HelixBuild: $(Build.BuildNumber) # required -- the build number Helix will use to identify this -- automatically set to the AzDO build number + HelixTargetQueues: '' # required -- semicolon-delimited list of Helix queues to test on; see https://helix.dot.net/ for a list of queues + HelixAccessToken: '' # required -- access token to make Helix API requests; should be provided by the appropriate variable group + HelixConfiguration: '' # optional -- additional property attached to a job + HelixPreCommands: '' # optional -- commands to run before Helix work item execution + HelixPostCommands: '' # optional -- commands to run after Helix work item execution + WorkItemDirectory: '' # optional -- a payload directory to zip up and send to Helix; requires WorkItemCommand; incompatible with XUnitProjects + WorkItemCommand: '' # optional -- a command to execute on the payload; requires WorkItemDirectory; incompatible with XUnitProjects + WorkItemTimeout: '' # optional -- a timeout in TimeSpan.Parse-ready value (e.g. 00:02:00) for the work item command; requires WorkItemDirectory; incompatible with XUnitProjects + CorrelationPayloadDirectory: '' # optional -- a directory to zip up and send to Helix as a correlation payload + XUnitProjects: '' # optional -- semicolon-delimited list of XUnitProjects to parse and send to Helix; requires XUnitRuntimeTargetFramework, XUnitPublishTargetFramework, XUnitRunnerVersion, and IncludeDotNetCli=true + XUnitWorkItemTimeout: '' # optional -- the workitem timeout in seconds for all workitems created from the xUnit projects specified by XUnitProjects + XUnitPublishTargetFramework: '' # optional -- framework to use to publish your xUnit projects + XUnitRuntimeTargetFramework: '' # optional -- framework to use for the xUnit console runner + XUnitRunnerVersion: '' # optional -- version of the xUnit nuget package you wish to use on Helix; required for XUnitProjects + IncludeDotNetCli: false # optional -- true will download a version of the .NET CLI onto the Helix machine as a correlation payload; requires DotNetCliPackageType and DotNetCliVersion + DotNetCliPackageType: '' # optional -- either 'sdk', 'runtime' or 'aspnetcore-runtime'; determines whether the sdk or runtime will be sent to Helix; see https://raw.githubusercontent.com/dotnet/core/main/release-notes/releases-index.json + DotNetCliVersion: '' # optional -- version of the CLI to send to Helix; based on this: https://raw.githubusercontent.com/dotnet/core/main/release-notes/releases-index.json + WaitForWorkItemCompletion: true # optional -- true will make the task wait until work items have been completed and fail the build if work items fail. False is "fire and forget." + IsExternal: false # [DEPRECATED] -- doesn't do anything, jobs are external if HelixAccessToken is empty and Creator is set + HelixBaseUri: 'https://helix.dot.net/' # optional -- sets the Helix API base URI (allows targeting https://helix.int-dot.net ) + Creator: '' # optional -- if the build is external, use this to specify who is sending the job + DisplayNamePrefix: 'Run Tests' # optional -- rename the beginning of the displayName of the steps in AzDO + condition: succeeded() # optional -- condition for step to execute; defaults to succeeded() + continueOnError: false # optional -- determines whether to continue the build if the step errors; defaults to false + +steps: + - powershell: 'powershell "$env:BUILD_SOURCESDIRECTORY\eng\common\msbuild.ps1 $env:BUILD_SOURCESDIRECTORY\eng\common\helixpublish.proj /restore /p:TreatWarningsAsErrors=false /t:Test /bl:$env:BUILD_SOURCESDIRECTORY\artifacts\log\$env:BuildConfig\SendToHelix.binlog"' + displayName: ${{ parameters.DisplayNamePrefix }} (Windows) + env: + BuildConfig: $(_BuildConfig) + HelixSource: ${{ parameters.HelixSource }} + HelixType: ${{ parameters.HelixType }} + HelixBuild: ${{ parameters.HelixBuild }} + HelixConfiguration: ${{ parameters.HelixConfiguration }} + HelixTargetQueues: ${{ parameters.HelixTargetQueues }} + HelixAccessToken: ${{ parameters.HelixAccessToken }} + HelixPreCommands: ${{ parameters.HelixPreCommands }} + HelixPostCommands: ${{ parameters.HelixPostCommands }} + WorkItemDirectory: ${{ parameters.WorkItemDirectory }} + WorkItemCommand: ${{ parameters.WorkItemCommand }} + WorkItemTimeout: ${{ parameters.WorkItemTimeout }} + CorrelationPayloadDirectory: ${{ parameters.CorrelationPayloadDirectory }} + XUnitProjects: ${{ parameters.XUnitProjects }} + XUnitWorkItemTimeout: ${{ parameters.XUnitWorkItemTimeout }} + XUnitPublishTargetFramework: ${{ parameters.XUnitPublishTargetFramework }} + XUnitRuntimeTargetFramework: ${{ parameters.XUnitRuntimeTargetFramework }} + XUnitRunnerVersion: ${{ parameters.XUnitRunnerVersion }} + IncludeDotNetCli: ${{ parameters.IncludeDotNetCli }} + DotNetCliPackageType: ${{ parameters.DotNetCliPackageType }} + DotNetCliVersion: ${{ parameters.DotNetCliVersion }} + WaitForWorkItemCompletion: ${{ parameters.WaitForWorkItemCompletion }} + HelixBaseUri: ${{ parameters.HelixBaseUri }} + Creator: ${{ parameters.Creator }} + SYSTEM_ACCESSTOKEN: $(System.AccessToken) + condition: and(${{ parameters.condition }}, eq(variables['Agent.Os'], 'Windows_NT')) + continueOnError: ${{ parameters.continueOnError }} + - script: $BUILD_SOURCESDIRECTORY/eng/common/msbuild.sh $BUILD_SOURCESDIRECTORY/eng/common/helixpublish.proj /restore /p:TreatWarningsAsErrors=false /t:Test /bl:$BUILD_SOURCESDIRECTORY/artifacts/log/$BuildConfig/SendToHelix.binlog + displayName: ${{ parameters.DisplayNamePrefix }} (Unix) + env: + BuildConfig: $(_BuildConfig) + HelixSource: ${{ parameters.HelixSource }} + HelixType: ${{ parameters.HelixType }} + HelixBuild: ${{ parameters.HelixBuild }} + HelixConfiguration: ${{ parameters.HelixConfiguration }} + HelixTargetQueues: ${{ parameters.HelixTargetQueues }} + HelixAccessToken: ${{ parameters.HelixAccessToken }} + HelixPreCommands: ${{ parameters.HelixPreCommands }} + HelixPostCommands: ${{ parameters.HelixPostCommands }} + WorkItemDirectory: ${{ parameters.WorkItemDirectory }} + WorkItemCommand: ${{ parameters.WorkItemCommand }} + WorkItemTimeout: ${{ parameters.WorkItemTimeout }} + CorrelationPayloadDirectory: ${{ parameters.CorrelationPayloadDirectory }} + XUnitProjects: ${{ parameters.XUnitProjects }} + XUnitWorkItemTimeout: ${{ parameters.XUnitWorkItemTimeout }} + XUnitPublishTargetFramework: ${{ parameters.XUnitPublishTargetFramework }} + XUnitRuntimeTargetFramework: ${{ parameters.XUnitRuntimeTargetFramework }} + XUnitRunnerVersion: ${{ parameters.XUnitRunnerVersion }} + IncludeDotNetCli: ${{ parameters.IncludeDotNetCli }} + DotNetCliPackageType: ${{ parameters.DotNetCliPackageType }} + DotNetCliVersion: ${{ parameters.DotNetCliVersion }} + WaitForWorkItemCompletion: ${{ parameters.WaitForWorkItemCompletion }} + HelixBaseUri: ${{ parameters.HelixBaseUri }} + Creator: ${{ parameters.Creator }} + SYSTEM_ACCESSTOKEN: $(System.AccessToken) + condition: and(${{ parameters.condition }}, ne(variables['Agent.Os'], 'Windows_NT')) + continueOnError: ${{ parameters.continueOnError }} diff --git a/eng/common/templates-official/steps/source-build.yml b/eng/common/templates-official/steps/source-build.yml new file mode 100644 index 000000000000..829f17c34d11 --- /dev/null +++ b/eng/common/templates-official/steps/source-build.yml @@ -0,0 +1,129 @@ +parameters: + # This template adds arcade-powered source-build to CI. + + # This is a 'steps' template, and is intended for advanced scenarios where the existing build + # infra has a careful build methodology that must be followed. For example, a repo + # (dotnet/runtime) might choose to clone the GitHub repo only once and store it as a pipeline + # artifact for all subsequent jobs to use, to reduce dependence on a strong network connection to + # GitHub. Using this steps template leaves room for that infra to be included. + + # Defines the platform on which to run the steps. See 'eng/common/templates-official/job/source-build.yml' + # for details. The entire object is described in the 'job' template for simplicity, even though + # the usage of the properties on this object is split between the 'job' and 'steps' templates. + platform: {} + +steps: +# Build. Keep it self-contained for simple reusability. (No source-build-specific job variables.) +- script: | + set -x + df -h + + # If building on the internal project, the artifact feeds variable may be available (usually only if needed) + # In that case, call the feed setup script to add internal feeds corresponding to public ones. + # In addition, add an msbuild argument to copy the WIP from the repo to the target build location. + # This is because SetupNuGetSources.sh will alter the current NuGet.config file, and we need to preserve those + # changes. + internalRestoreArgs= + if [ '$(dn-bot-dnceng-artifact-feeds-rw)' != '$''(dn-bot-dnceng-artifact-feeds-rw)' ]; then + # Temporarily work around https://github.com/dotnet/arcade/issues/7709 + chmod +x $(Build.SourcesDirectory)/eng/common/SetupNugetSources.sh + $(Build.SourcesDirectory)/eng/common/SetupNugetSources.sh $(Build.SourcesDirectory)/NuGet.config $(dn-bot-dnceng-artifact-feeds-rw) + internalRestoreArgs='/p:CopyWipIntoInnerSourceBuildRepo=true' + + # The 'Copy WIP' feature of source build uses git stash to apply changes from the original repo. + # This only works if there is a username/email configured, which won't be the case in most CI runs. + git config --get user.email + if [ $? -ne 0 ]; then + git config user.email dn-bot@microsoft.com + git config user.name dn-bot + fi + fi + + # If building on the internal project, the internal storage variable may be available (usually only if needed) + # In that case, add variables to allow the download of internal runtimes if the specified versions are not found + # in the default public locations. + internalRuntimeDownloadArgs= + if [ '$(dotnetbuilds-internal-container-read-token-base64)' != '$''(dotnetbuilds-internal-container-read-token-base64)' ]; then + internalRuntimeDownloadArgs='/p:DotNetRuntimeSourceFeed=https://dotnetbuilds.blob.core.windows.net/internal /p:DotNetRuntimeSourceFeedKey=$(dotnetbuilds-internal-container-read-token-base64) --runtimesourcefeed https://dotnetbuilds.blob.core.windows.net/internal --runtimesourcefeedkey $(dotnetbuilds-internal-container-read-token-base64)' + fi + + buildConfig=Release + # Check if AzDO substitutes in a build config from a variable, and use it if so. + if [ '$(_BuildConfig)' != '$''(_BuildConfig)' ]; then + buildConfig='$(_BuildConfig)' + fi + + officialBuildArgs= + if [ '${{ and(ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}' = 'True' ]; then + officialBuildArgs='/p:DotNetPublishUsingPipelines=true /p:OfficialBuildId=$(BUILD.BUILDNUMBER)' + fi + + targetRidArgs= + if [ '${{ parameters.platform.targetRID }}' != '' ]; then + targetRidArgs='/p:TargetRid=${{ parameters.platform.targetRID }}' + fi + + runtimeOsArgs= + if [ '${{ parameters.platform.runtimeOS }}' != '' ]; then + runtimeOsArgs='/p:RuntimeOS=${{ parameters.platform.runtimeOS }}' + fi + + baseOsArgs= + if [ '${{ parameters.platform.baseOS }}' != '' ]; then + baseOsArgs='/p:BaseOS=${{ parameters.platform.baseOS }}' + fi + + publishArgs= + if [ '${{ parameters.platform.skipPublishValidation }}' != 'true' ]; then + publishArgs='--publish' + fi + + assetManifestFileName=SourceBuild_RidSpecific.xml + if [ '${{ parameters.platform.name }}' != '' ]; then + assetManifestFileName=SourceBuild_${{ parameters.platform.name }}.xml + fi + + ${{ coalesce(parameters.platform.buildScript, './build.sh') }} --ci \ + --configuration $buildConfig \ + --restore --build --pack $publishArgs -bl \ + $officialBuildArgs \ + $internalRuntimeDownloadArgs \ + $internalRestoreArgs \ + $targetRidArgs \ + $runtimeOsArgs \ + $baseOsArgs \ + /p:SourceBuildNonPortable=${{ parameters.platform.nonPortable }} \ + /p:ArcadeBuildFromSource=true \ + /p:AssetManifestFileName=$assetManifestFileName + displayName: Build + +# Upload build logs for diagnosis. +- task: CopyFiles@2 + displayName: Prepare BuildLogs staging directory + inputs: + SourceFolder: '$(Build.SourcesDirectory)' + Contents: | + **/*.log + **/*.binlog + artifacts/source-build/self/prebuilt-report/** + TargetFolder: '$(Build.StagingDirectory)/BuildLogs' + CleanTargetFolder: true + continueOnError: true + condition: succeededOrFailed() + +- task: 1ES.PublishPipelineArtifact@1 + displayName: Publish BuildLogs + inputs: + targetPath: '$(Build.StagingDirectory)/BuildLogs' + artifactName: BuildLogs_SourceBuild_${{ parameters.platform.name }}_Attempt$(System.JobAttempt) + continueOnError: true + condition: succeededOrFailed() + +# Manually inject component detection so that we can ignore the source build upstream cache, which contains +# a nupkg cache of input packages (a local feed). +# This path must match the upstream cache path in property 'CurrentRepoSourceBuiltNupkgCacheDir' +# in src\Microsoft.DotNet.Arcade.Sdk\tools\SourceBuild\SourceBuildArcade.targets +- task: ComponentGovernanceComponentDetection@0 + displayName: Component Detection (Exclude upstream cache) + inputs: + ignoreDirectories: '$(Build.SourcesDirectory)/artifacts/source-build/self/src/artifacts/obj/source-built-upstream-cache' diff --git a/eng/common/templates-official/variables/pool-providers.yml b/eng/common/templates-official/variables/pool-providers.yml new file mode 100644 index 000000000000..beab7d1bfba0 --- /dev/null +++ b/eng/common/templates-official/variables/pool-providers.yml @@ -0,0 +1,45 @@ +# Select a pool provider based off branch name. Anything with branch name containing 'release' must go into an -Svc pool, +# otherwise it should go into the "normal" pools. This separates out the queueing and billing of released branches. + +# Motivation: +# Once a given branch of a repository's output has been officially "shipped" once, it is then considered to be COGS +# (Cost of goods sold) and should be moved to a servicing pool provider. This allows both separation of queueing +# (allowing release builds and main PR builds to not intefere with each other) and billing (required for COGS. +# Additionally, the pool provider name itself may be subject to change when the .NET Core Engineering Services +# team needs to move resources around and create new and potentially differently-named pools. Using this template +# file from an Arcade-ified repo helps guard against both having to update one's release/* branches and renaming. + +# How to use: +# This yaml assumes your shipped product branches use the naming convention "release/..." (which many do). +# If we find alternate naming conventions in broad usage it can be added to the condition below. +# +# First, import the template in an arcade-ified repo to pick up the variables, e.g.: +# +# variables: +# - template: /eng/common/templates-official/variables/pool-providers.yml +# +# ... then anywhere specifying the pool provider use the runtime variables, +# $(DncEngInternalBuildPool) +# +# pool: +# name: $(DncEngInternalBuildPool) +# image: 1es-windows-2022-pt + +variables: + # Coalesce the target and source branches so we know when a PR targets a release branch + # If these variables are somehow missing, fall back to main (tends to have more capacity) + + # Any new -Svc alternative pools should have variables added here to allow for splitting work + + - name: DncEngInternalBuildPool + value: $[ + replace( + replace( + eq(contains(coalesce(variables['System.PullRequest.TargetBranch'], variables['Build.SourceBranch'], 'refs/heads/main'), 'release'), 'true'), + True, + 'NetCore1ESPool-Svc-Internal' + ), + False, + 'NetCore1ESPool-Internal' + ) + ] \ No newline at end of file diff --git a/eng/common/templates-official/variables/sdl-variables.yml b/eng/common/templates-official/variables/sdl-variables.yml new file mode 100644 index 000000000000..dbdd66d4a4b3 --- /dev/null +++ b/eng/common/templates-official/variables/sdl-variables.yml @@ -0,0 +1,7 @@ +variables: +# The Guardian version specified in 'eng/common/sdl/packages.config'. This value must be kept in +# sync with the packages.config file. +- name: DefaultGuardianVersion + value: 0.109.0 +- name: GuardianPackagesConfigFile + value: $(Build.SourcesDirectory)\eng\common\sdl\packages.config \ No newline at end of file diff --git a/eng/common/templates/job/job.yml b/eng/common/templates/job/job.yml index e24ca2f46f98..8ec5c4f2d9f9 100644 --- a/eng/common/templates/job/job.yml +++ b/eng/common/templates/job/job.yml @@ -15,6 +15,7 @@ parameters: timeoutInMinutes: '' variables: [] workspace: '' + templateContext: '' # Job base template specific parameters # See schema documentation - https://github.com/dotnet/arcade/blob/master/Documentation/AzureDevOps/TemplateSchema.md @@ -68,6 +69,9 @@ jobs: ${{ if ne(parameters.timeoutInMinutes, '') }}: timeoutInMinutes: ${{ parameters.timeoutInMinutes }} + ${{ if ne(parameters.templateContext, '') }}: + templateContext: ${{ parameters.templateContext }} + variables: - ${{ if ne(parameters.enableTelemetry, 'false') }}: - name: DOTNET_CLI_TELEMETRY_PROFILE diff --git a/eng/common/templates/steps/generate-sbom.yml b/eng/common/templates/steps/generate-sbom.yml index a06373f38fa5..2b21eae42732 100644 --- a/eng/common/templates/steps/generate-sbom.yml +++ b/eng/common/templates/steps/generate-sbom.yml @@ -5,7 +5,7 @@ # IgnoreDirectories - Directories to ignore for SBOM generation. This will be passed through to the CG component detector. parameters: - PackageVersion: 7.0.0 + PackageVersion: 8.0.0 BuildDropPath: '$(Build.SourcesDirectory)/artifacts' PackageName: '.NET' ManifestDirPath: $(Build.ArtifactStagingDirectory)/sbom diff --git a/eng/targets/Helix.Common.props b/eng/targets/Helix.Common.props index e586fa5efc16..426386e98ebf 100644 --- a/eng/targets/Helix.Common.props +++ b/eng/targets/Helix.Common.props @@ -1,12 +1,12 @@ - (AlmaLinux.8.Amd64.Open)Ubuntu.2004.Amd64.Open@mcr.microsoft.com/dotnet-buildtools/prereqs:almalinux-8-helix-amd64 - (Alpine.316.Amd64.Open)Ubuntu.2004.Amd64.Open@mcr.microsoft.com/dotnet-buildtools/prereqs:alpine-3.16-helix-amd64 - (Debian.11.Amd64.Open)Ubuntu.2004.Amd64.Open@mcr.microsoft.com/dotnet-buildtools/prereqs:debian-11-helix-amd64 - (Fedora.34.Amd64.Open)Ubuntu.2004.Amd64.Open@mcr.microsoft.com/dotnet-buildtools/prereqs:fedora-34-helix - (Mariner)Ubuntu.2004.Amd64.Open@mcr.microsoft.com/dotnet-buildtools/prereqs:cbl-mariner-1.0-helix - (Debian.12.Arm64.Open)ubuntu.2004.armarch.open@mcr.microsoft.com/dotnet-buildtools/prereqs:debian-12-helix-arm64v8 + (AlmaLinux.8.Amd64.Open)Ubuntu.2204.Amd64.Open@mcr.microsoft.com/dotnet-buildtools/prereqs:almalinux-8-helix-amd64 + (Alpine.317.Amd64.Open)Ubuntu.2204.Amd64.Open@mcr.microsoft.com/dotnet-buildtools/prereqs:alpine-3.17-helix-amd64 + (Debian.11.Amd64.Open)Ubuntu.2204.Amd64.Open@mcr.microsoft.com/dotnet-buildtools/prereqs:debian-11-helix-amd64 + (Fedora.38.Amd64.Open)Ubuntu.2204.Amd64.Open@mcr.microsoft.com/dotnet-buildtools/prereqs:fedora-38-helix + (Mariner)Ubuntu.2204.Amd64.Open@mcr.microsoft.com/dotnet-buildtools/prereqs:cbl-mariner-1.0-helix + (Debian.12.Arm64.Open)ubuntu.2204.armarch.open@mcr.microsoft.com/dotnet-buildtools/prereqs:debian-12-helix-arm64v8 false @@ -42,9 +42,9 @@ - + - + diff --git a/global.json b/global.json index e697669c8b29..88ba69a6c220 100644 --- a/global.json +++ b/global.json @@ -27,7 +27,7 @@ }, "msbuild-sdks": { "Yarn.MSBuild": "1.22.19", - "Microsoft.DotNet.Arcade.Sdk": "8.0.0-beta.24113.2", - "Microsoft.DotNet.Helix.Sdk": "8.0.0-beta.24113.2" + "Microsoft.DotNet.Arcade.Sdk": "8.0.0-beta.24165.4", + "Microsoft.DotNet.Helix.Sdk": "8.0.0-beta.24165.4" } } From 81f1726a71206fd7a7cb86b9ab0a725439e2a9fb Mon Sep 17 00:00:00 2001 From: Eilon Lipton Date: Tue, 2 Apr 2024 14:00:56 -0700 Subject: [PATCH 165/391] Increase logs and delays in CanLaunchPhotinoWebViewAndClickButton (#54608) --- .../test/E2ETest/BasicBlazorHybridTest.cs | 52 ++++++++++--------- .../test/E2ETest/WebViewManagerE2ETests.cs | 7 ++- 2 files changed, 33 insertions(+), 26 deletions(-) diff --git a/src/Components/WebView/test/E2ETest/BasicBlazorHybridTest.cs b/src/Components/WebView/test/E2ETest/BasicBlazorHybridTest.cs index df64496c253c..9cd357a02f5d 100644 --- a/src/Components/WebView/test/E2ETest/BasicBlazorHybridTest.cs +++ b/src/Components/WebView/test/E2ETest/BasicBlazorHybridTest.cs @@ -18,21 +18,21 @@ public void Run() // Note: This test produces *a lot* of debug output to aid when debugging failures. The only output // that is necessary for the functioning of this test is the "Test passed" at the end of this method. - Console.WriteLine($"Current directory: {Environment.CurrentDirectory}"); - Console.WriteLine($"Current assembly: {typeof(Program).Assembly.Location}"); + Console.WriteLine($"[{DateTime.Now.ToLongTimeString()}] Current directory: {Environment.CurrentDirectory}"); + Console.WriteLine($"[{DateTime.Now.ToLongTimeString()}] Current assembly: {typeof(Program).Assembly.Location}"); var thisProgramDir = Path.GetDirectoryName(typeof(Program).Assembly.Location); // Add correct runtime sub-folder to PATH to ensure native files are discovered (this is supposed to happen automatically, but somehow it doesn't...) var newNativePath = Path.Combine(thisProgramDir, "runtimes", RuntimeInformation.RuntimeIdentifier, "native"); - Console.WriteLine($"Adding new native path: {newNativePath}"); + Console.WriteLine($"[{DateTime.Now.ToLongTimeString()}] Adding new native path: {newNativePath}"); Environment.SetEnvironmentVariable("PATH", newNativePath + ";" + Environment.GetEnvironmentVariable("PATH")); - Console.WriteLine($"New PATH env var: {Environment.GetEnvironmentVariable("PATH")}"); + Console.WriteLine($"[{DateTime.Now.ToLongTimeString()}] New PATH env var: {Environment.GetEnvironmentVariable("PATH")}"); var thisAppFiles = Directory.GetFiles(thisProgramDir, "*", SearchOption.AllDirectories).ToArray(); - Console.WriteLine($"Found {thisAppFiles.Length} files in this app:"); + Console.WriteLine($"[{DateTime.Now.ToLongTimeString()}] Found {thisAppFiles.Length} files in this app:"); foreach (var file in thisAppFiles) { - Console.WriteLine($"\t{file}"); + Console.WriteLine($"[{DateTime.Now.ToLongTimeString()}] \t{file}"); } var hostPage = "wwwroot/webviewtesthost.html"; @@ -41,7 +41,7 @@ public void Run() serviceCollection.AddBlazorWebView(); serviceCollection.AddSingleton(); - Console.WriteLine($"Creating BlazorWindow..."); + Console.WriteLine($"[{DateTime.Now.ToLongTimeString()}] Creating BlazorWindow..."); BlazorWindow mainWindow = null; try { @@ -53,11 +53,11 @@ public void Run() } catch (Exception ex) { - Console.WriteLine($"Exception {ex.GetType().FullName} while creating window: {ex.Message}"); + Console.WriteLine($"[{DateTime.Now.ToLongTimeString()}] Exception {ex.GetType().FullName} while creating window: {ex.Message}"); Console.WriteLine(ex.StackTrace); } - Console.WriteLine($"Hooking exception handler..."); + Console.WriteLine($"[{DateTime.Now.ToLongTimeString()}] Hooking exception handler..."); AppDomain.CurrentDomain.UnhandledException += (sender, error) => { Console.Write( @@ -65,15 +65,15 @@ public void Run() error.ExceptionObject.ToString() + Environment.NewLine); }; - Console.WriteLine($"Setting up root components..."); + Console.WriteLine($"[{DateTime.Now.ToLongTimeString()}] Setting up root components..."); mainWindow.RootComponents.Add("root"); - Console.WriteLine($"Running window..."); + Console.WriteLine($"[{DateTime.Now.ToLongTimeString()}] Running window..."); const string NewControlDivValueMessage = "wvt:NewControlDivValue"; var isWebViewReady = false; - Console.WriteLine($"RegisterWebMessageReceivedHandler..."); + Console.WriteLine($"[{DateTime.Now.ToLongTimeString()}] RegisterWebMessageReceivedHandler..."); mainWindow.PhotinoWindow.RegisterWebMessageReceivedHandler((s, msg) => { if (!msg.StartsWith("__bwv:", StringComparison.Ordinal)) @@ -90,29 +90,33 @@ public void Run() }); var testPassed = false; + Console.WriteLine($"[{DateTime.Now.ToLongTimeString()}] Attaching WindowCreated handler..."); mainWindow.PhotinoWindow.WindowCreated += (s, e) => { + Console.WriteLine($"[{DateTime.Now.ToLongTimeString()}] In WindowCreated event..."); Task.Run(async () => { + Console.WriteLine($"[{DateTime.Now.ToLongTimeString()}] In async test task..."); + try { // This is the actual test logic here (wait for WebView, click button, verify updates, etc.) // 1. Wait for WebView ready - Console.WriteLine($"Waiting for WebView ready..."); + Console.WriteLine($"[{DateTime.Now.ToLongTimeString()}] Waiting for WebView ready..."); var isWebViewReadyRetriesLeft = 20; while (!isWebViewReady) { - Console.WriteLine($"WebView not ready yet, waiting 1sec..."); + Console.WriteLine($"[{DateTime.Now.ToLongTimeString()}] WebView not ready yet, waiting 1sec..."); await Task.Delay(1000); isWebViewReadyRetriesLeft--; if (isWebViewReadyRetriesLeft == 0) { - Console.WriteLine($"WebView never became ready, failing the test..."); + Console.WriteLine($"[{DateTime.Now.ToLongTimeString()}] WebView never became ready, failing the test..."); return; } } - Console.WriteLine($"WebView is ready!"); + Console.WriteLine($"[{DateTime.Now.ToLongTimeString()}] WebView is ready!"); // 2. Check TestPage starting state if (!await WaitForControlDiv(mainWindow.PhotinoWindow, controlValueToWaitFor: "0")) @@ -130,7 +134,7 @@ public void Run() } // 5. If we get here, it all worked! - Console.WriteLine($"All tests passed!"); + Console.WriteLine($"[{DateTime.Now.ToLongTimeString()}] All tests passed!"); testPassed = true; } catch (Exception ex) @@ -153,16 +157,16 @@ public void Run() } catch (Exception ex) { - Console.WriteLine($"Exception while running window: {ex}"); + Console.WriteLine($"[{DateTime.Now.ToLongTimeString()}] Exception while running window: {ex}"); } // This line is what's required for the test to be considered as passed. The xUnit test in WebViewManagerE2ETests checks // that this reports success and that decides if the test is pass/fail. - Console.WriteLine($"Test passed? {testPassed}"); + Console.WriteLine($"[{DateTime.Now.ToLongTimeString()}] Test passed? {testPassed}"); } const int MaxWaitTimes = 30; - const int WaitTimeInMS = 250; + const int WaitTimeInMS = 1000; public async Task WaitForControlDiv(PhotinoWindow photinoWindow, string controlValueToWaitFor) { @@ -172,20 +176,20 @@ public async Task WaitForControlDiv(PhotinoWindow photinoWindow, string co // Tell WebView to report the current controlDiv value (this is inside the loop because // it's possible for this to execute before the WebView has finished processing previous // C#-generated events, such as WebView button clicks). - Console.WriteLine($"Asking WebView for current controlDiv value..."); + Console.WriteLine($"[{DateTime.Now.ToLongTimeString()}] Asking WebView for current controlDiv value..."); photinoWindow.SendWebMessage($"wvt:GetControlDivValue"); // And wait for the value to appear if (_latestControlDivValue == controlValueToWaitFor) { - Console.WriteLine($"WebView reported the expected controlDiv value of {controlValueToWaitFor}!"); + Console.WriteLine($"[{DateTime.Now.ToLongTimeString()}] WebView reported the expected controlDiv value of {controlValueToWaitFor}!"); return true; } - Console.WriteLine($"Waiting for controlDiv to have value '{controlValueToWaitFor}', but it's still '{_latestControlDivValue}', so waiting {WaitTimeInMS}ms."); + Console.WriteLine($"[{DateTime.Now.ToLongTimeString()}] Waiting for controlDiv to have value '{controlValueToWaitFor}', but it's still '{_latestControlDivValue}', so waiting {WaitTimeInMS}ms."); await Task.Delay(WaitTimeInMS); } - Console.WriteLine($"Waited {MaxWaitTimes * WaitTimeInMS}ms but couldn't get controlDiv to have value '{controlValueToWaitFor}' (last value is '{_latestControlDivValue}')."); + Console.WriteLine($"[{DateTime.Now.ToLongTimeString()}] Waited {MaxWaitTimes * WaitTimeInMS}ms but couldn't get controlDiv to have value '{controlValueToWaitFor}' (last value is '{_latestControlDivValue}')."); return false; } } diff --git a/src/Components/WebView/test/E2ETest/WebViewManagerE2ETests.cs b/src/Components/WebView/test/E2ETest/WebViewManagerE2ETests.cs index 228cd7b0a96b..0f944bb5795d 100644 --- a/src/Components/WebView/test/E2ETest/WebViewManagerE2ETests.cs +++ b/src/Components/WebView/test/E2ETest/WebViewManagerE2ETests.cs @@ -3,10 +3,11 @@ using System.Diagnostics; using Microsoft.AspNetCore.Testing; +using Xunit.Abstractions; namespace Microsoft.AspNetCore.Components.WebViewE2E.Test; -public class WebViewManagerE2ETests +public class WebViewManagerE2ETests(ITestOutputHelper output) { // Skips: // - Ubuntu is skipped due to this error: @@ -39,7 +40,9 @@ public async Task CanLaunchPhotinoWebViewAndClickButton() var testProgramOutput = photinoProcess.StandardOutput.ReadToEnd(); - await photinoProcess.WaitForExitAsync().TimeoutAfter(TimeSpan.FromSeconds(30)); + await photinoProcess.WaitForExitAsync().TimeoutAfter(TimeSpan.FromSeconds(60)); + + output.WriteLine(testProgramOutput); // The test app reports its own results by calling Console.WriteLine(), so here we only need to verify that // the test internally believes it passed (and we trust it!). From e66069bc2973c2152c687a3d02ea44b32691988a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 2 Apr 2024 14:01:32 -0700 Subject: [PATCH 166/391] [release/8.0] (deps): Bump src/submodules/googletest (#54872) Bumps [src/submodules/googletest](https://github.com/google/googletest) from `31993df` to `77afe8e`. - [Release notes](https://github.com/google/googletest/releases) - [Commits](https://github.com/google/googletest/compare/31993dfa6b47e11c7a6ef67cfa8af90892b9bd1c...77afe8e0149c207edd9561c28de6d2226673b51f) --- updated-dependencies: - dependency-name: src/submodules/googletest dependency-type: direct:production ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- src/submodules/googletest | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/submodules/googletest b/src/submodules/googletest index 31993dfa6b47..77afe8e0149c 160000 --- a/src/submodules/googletest +++ b/src/submodules/googletest @@ -1 +1 @@ -Subproject commit 31993dfa6b47e11c7a6ef67cfa8af90892b9bd1c +Subproject commit 77afe8e0149c207edd9561c28de6d2226673b51f From 7869bfc4396a8d8fefa9f06c8c3dfa33f077fc5c Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 2 Apr 2024 14:02:57 -0700 Subject: [PATCH 167/391] [release/8.0] Reduce helix-matrix timeout to 5 hours (#54778) * Reduce helix-matrix timeout to 3 hours * Update helix-matrix.yml --------- Co-authored-by: William Godbe --- .azure/pipelines/helix-matrix.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.azure/pipelines/helix-matrix.yml b/.azure/pipelines/helix-matrix.yml index f28571a50063..b2c9c1a4cc06 100644 --- a/.azure/pipelines/helix-matrix.yml +++ b/.azure/pipelines/helix-matrix.yml @@ -29,7 +29,7 @@ jobs: jobName: Helix_matrix_x64 jobDisplayName: 'Tests: Helix full matrix x64' agentOs: Windows - timeoutInMinutes: 480 + timeoutInMinutes: 300 steps: # Build the shared framework - script: ./eng/build.cmd -ci -nobl -all -pack -arch x64 From 53e662dc867fbc85df215e15f7e918ca5ffa22f7 Mon Sep 17 00:00:00 2001 From: Stephen Halter Date: Tue, 2 Apr 2024 14:03:44 -0700 Subject: [PATCH 168/391] Preserve RemoteAuthenticationContext during JS interop (#54225) (#54655) --- AspNetCore.sln | 19 ++++ src/Components/Components.slnf | 1 + .../Services/RemoteAuthenticationService.cs | 9 +- .../ServerFixtures/AspNetSiteServerFixture.cs | 2 +- ...soft.AspNetCore.Components.E2ETests.csproj | 7 +- .../E2ETest/Tests/RemoteAuthenticationTest.cs | 79 +++++++++++++++ .../Tests/WebAssemblyPrerenderedTest.cs | 2 +- .../Components.TestServer.csproj | 2 + .../Components.TestServer/Program.cs | 1 + .../RemoteAuthenticationApp.razor | 24 +++++ .../RemoteAuthenticationStartup.cs | 97 +++++++++++++++++++ ...Components.WasmRemoteAuthentication.csproj | 20 ++++ .../Pages/Authentication.razor | 9 ++ .../Pages/TestRemoteAuthentication.razor | 13 +++ .../Program.cs | 12 +++ .../Properties/launchSettings.json | 21 ++++ .../RedirectToLogin.razor | 14 +++ .../Routes.razor | 27 ++++++ 18 files changed, 354 insertions(+), 5 deletions(-) create mode 100644 src/Components/test/E2ETest/Tests/RemoteAuthenticationTest.cs create mode 100644 src/Components/test/testassets/Components.TestServer/RazorComponents/RemoteAuthenticationApp.razor create mode 100644 src/Components/test/testassets/Components.TestServer/RemoteAuthenticationStartup.cs create mode 100644 src/Components/test/testassets/Components.WasmRemoteAuthentication/Components.WasmRemoteAuthentication.csproj create mode 100644 src/Components/test/testassets/Components.WasmRemoteAuthentication/Pages/Authentication.razor create mode 100644 src/Components/test/testassets/Components.WasmRemoteAuthentication/Pages/TestRemoteAuthentication.razor create mode 100644 src/Components/test/testassets/Components.WasmRemoteAuthentication/Program.cs create mode 100644 src/Components/test/testassets/Components.WasmRemoteAuthentication/Properties/launchSettings.json create mode 100644 src/Components/test/testassets/Components.WasmRemoteAuthentication/RedirectToLogin.razor create mode 100644 src/Components/test/testassets/Components.WasmRemoteAuthentication/Routes.razor diff --git a/AspNetCore.sln b/AspNetCore.sln index a41bb737b608..367d27911f8e 100644 --- a/AspNetCore.sln +++ b/AspNetCore.sln @@ -1782,6 +1782,8 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.AspNetCore.Output EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "NotReferencedInWasmCodePackage", "src\Components\test\testassets\NotReferencedInWasmCodePackage\NotReferencedInWasmCodePackage.csproj", "{433F91E4-E39D-4EB0-B798-2998B3969A2C}" EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Components.WasmRemoteAuthentication", "src\Components\test\testassets\Components.WasmRemoteAuthentication\Components.WasmRemoteAuthentication.csproj", "{8A021D6D-7935-4AB3-BB47-38D4FF9B0D13}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -10735,6 +10737,22 @@ Global {433F91E4-E39D-4EB0-B798-2998B3969A2C}.Release|x64.Build.0 = Release|Any CPU {433F91E4-E39D-4EB0-B798-2998B3969A2C}.Release|x86.ActiveCfg = Release|Any CPU {433F91E4-E39D-4EB0-B798-2998B3969A2C}.Release|x86.Build.0 = Release|Any CPU + {8A021D6D-7935-4AB3-BB47-38D4FF9B0D13}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {8A021D6D-7935-4AB3-BB47-38D4FF9B0D13}.Debug|Any CPU.Build.0 = Debug|Any CPU + {8A021D6D-7935-4AB3-BB47-38D4FF9B0D13}.Debug|arm64.ActiveCfg = Debug|Any CPU + {8A021D6D-7935-4AB3-BB47-38D4FF9B0D13}.Debug|arm64.Build.0 = Debug|Any CPU + {8A021D6D-7935-4AB3-BB47-38D4FF9B0D13}.Debug|x64.ActiveCfg = Debug|Any CPU + {8A021D6D-7935-4AB3-BB47-38D4FF9B0D13}.Debug|x64.Build.0 = Debug|Any CPU + {8A021D6D-7935-4AB3-BB47-38D4FF9B0D13}.Debug|x86.ActiveCfg = Debug|Any CPU + {8A021D6D-7935-4AB3-BB47-38D4FF9B0D13}.Debug|x86.Build.0 = Debug|Any CPU + {8A021D6D-7935-4AB3-BB47-38D4FF9B0D13}.Release|Any CPU.ActiveCfg = Release|Any CPU + {8A021D6D-7935-4AB3-BB47-38D4FF9B0D13}.Release|Any CPU.Build.0 = Release|Any CPU + {8A021D6D-7935-4AB3-BB47-38D4FF9B0D13}.Release|arm64.ActiveCfg = Release|Any CPU + {8A021D6D-7935-4AB3-BB47-38D4FF9B0D13}.Release|arm64.Build.0 = Release|Any CPU + {8A021D6D-7935-4AB3-BB47-38D4FF9B0D13}.Release|x64.ActiveCfg = Release|Any CPU + {8A021D6D-7935-4AB3-BB47-38D4FF9B0D13}.Release|x64.Build.0 = Release|Any CPU + {8A021D6D-7935-4AB3-BB47-38D4FF9B0D13}.Release|x86.ActiveCfg = Release|Any CPU + {8A021D6D-7935-4AB3-BB47-38D4FF9B0D13}.Release|x86.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -11615,6 +11633,7 @@ Global {A939893A-B3CD-48F6-80D3-340C8A6E275B} = {AA5ABFBC-177C-421E-B743-005E0FD1248B} {F232B503-D412-45EE-8B31-EFD46B9FA302} = {AA5ABFBC-177C-421E-B743-005E0FD1248B} {433F91E4-E39D-4EB0-B798-2998B3969A2C} = {6126DCE4-9692-4EE2-B240-C65743572995} + {8A021D6D-7935-4AB3-BB47-38D4FF9B0D13} = {6126DCE4-9692-4EE2-B240-C65743572995} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {3E8720B3-DBDD-498C-B383-2CC32A054E8F} diff --git a/src/Components/Components.slnf b/src/Components/Components.slnf index 4ea1556f741f..a35d7e8e8686 100644 --- a/src/Components/Components.slnf +++ b/src/Components/Components.slnf @@ -52,6 +52,7 @@ "src\\Components\\test\\testassets\\BasicTestApp\\BasicTestApp.csproj", "src\\Components\\test\\testassets\\Components.TestServer\\Components.TestServer.csproj", "src\\Components\\test\\testassets\\Components.WasmMinimal\\Components.WasmMinimal.csproj", + "src\\Components\\test\\testassets\\Components.WasmRemoteAuthentication\\Components.WasmRemoteAuthentication.csproj", "src\\Components\\test\\testassets\\ComponentsApp.App\\ComponentsApp.App.csproj", "src\\Components\\test\\testassets\\ComponentsApp.Server\\ComponentsApp.Server.csproj", "src\\Components\\test\\testassets\\GlobalizationWasmApp\\GlobalizationWasmApp.csproj", diff --git a/src/Components/WebAssembly/WebAssembly.Authentication/src/Services/RemoteAuthenticationService.cs b/src/Components/WebAssembly/WebAssembly.Authentication/src/Services/RemoteAuthenticationService.cs index 62d9fa5265e4..12d315bdaf60 100644 --- a/src/Components/WebAssembly/WebAssembly.Authentication/src/Services/RemoteAuthenticationService.cs +++ b/src/Components/WebAssembly/WebAssembly.Authentication/src/Services/RemoteAuthenticationService.cs @@ -108,7 +108,7 @@ public virtual async Task RemoteAuthenticationContext context) { await EnsureAuthService(); - var result = await JsRuntime.InvokeAsync>("AuthenticationService.signIn", context); + var result = await JSInvokeWithContextAsync, RemoteAuthenticationResult>("AuthenticationService.signIn", context); await UpdateUserOnSuccess(result); return result; @@ -130,7 +130,7 @@ public virtual async Task RemoteAuthenticationContext context) { await EnsureAuthService(); - var result = await JsRuntime.InvokeAsync>("AuthenticationService.signOut", context); + var result = await JSInvokeWithContextAsync, RemoteAuthenticationResult>("AuthenticationService.signOut", context); await UpdateUserOnSuccess(result); return result; @@ -187,6 +187,11 @@ public virtual async ValueTask RequestAccessToken(AccessToken } : null); } + // JSRuntime.InvokeAsync does not properly annotate all arguments with DynamicallyAccessedMembersAttribute. https://github.com/dotnet/aspnetcore/issues/39839 + // Calling JsRuntime.InvokeAsync directly results allows the RemoteAuthenticationContext.State getter to be trimmed. https://github.com/dotnet/aspnetcore/issues/49956 + private ValueTask JSInvokeWithContextAsync<[DynamicallyAccessedMembers(JsonSerialized)] TContext, [DynamicallyAccessedMembers(JsonSerialized)] TResult>( + string identifier, TContext context) => JsRuntime.InvokeAsync(identifier, context); + private string GetReturnUrl(string? customReturnUrl) => customReturnUrl != null ? Navigation.ToAbsoluteUri(customReturnUrl).AbsoluteUri : Navigation.Uri; diff --git a/src/Components/test/E2ETest/Infrastructure/ServerFixtures/AspNetSiteServerFixture.cs b/src/Components/test/E2ETest/Infrastructure/ServerFixtures/AspNetSiteServerFixture.cs index 5bd6846cf3b9..955061b702ab 100644 --- a/src/Components/test/E2ETest/Infrastructure/ServerFixtures/AspNetSiteServerFixture.cs +++ b/src/Components/test/E2ETest/Infrastructure/ServerFixtures/AspNetSiteServerFixture.cs @@ -32,7 +32,7 @@ protected override IHost CreateWebHost() } var assembly = ApplicationAssembly ?? BuildWebHostMethod.Method.DeclaringType.Assembly; - var sampleSitePath = DefaultGetContentRoot(assembly); + var sampleSitePath = GetContentRootMethod(assembly); var host = "127.0.0.1"; if (E2ETestOptions.Instance.SauceTest) diff --git a/src/Components/test/E2ETest/Microsoft.AspNetCore.Components.E2ETests.csproj b/src/Components/test/E2ETest/Microsoft.AspNetCore.Components.E2ETests.csproj index 763b968c63b1..b8ad7c0303a4 100644 --- a/src/Components/test/E2ETest/Microsoft.AspNetCore.Components.E2ETests.csproj +++ b/src/Components/test/E2ETest/Microsoft.AspNetCore.Components.E2ETests.csproj @@ -1,4 +1,4 @@ - + diff --git a/src/Components/test/E2ETest/Tests/RemoteAuthenticationTest.cs b/src/Components/test/E2ETest/Tests/RemoteAuthenticationTest.cs new file mode 100644 index 000000000000..6915b0915198 --- /dev/null +++ b/src/Components/test/E2ETest/Tests/RemoteAuthenticationTest.cs @@ -0,0 +1,79 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. + +using System.Reflection; +using Microsoft.AspNetCore.Components.E2ETest.Infrastructure; +using Microsoft.AspNetCore.Components.E2ETest.Infrastructure.ServerFixtures; +using Microsoft.AspNetCore.E2ETesting; +using Microsoft.AspNetCore.Hosting; +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Hosting; +using Microsoft.Extensions.Logging; +using Microsoft.Extensions.Logging.Testing; +using OpenQA.Selenium; +using TestServer; +using Xunit.Abstractions; + +namespace Microsoft.AspNetCore.Components.E2ETest.Tests; + +public class RemoteAuthenticationTest : + ServerTestBase> +{ + public readonly bool TestTrimmedApps = typeof(ToggleExecutionModeServerFixture<>).Assembly + .GetCustomAttributes() + .First(m => m.Key == "Microsoft.AspNetCore.E2ETesting.TestTrimmedOrMultithreadingApps") + .Value == "true"; + + public RemoteAuthenticationTest( + BrowserFixture browserFixture, + BasicTestAppServerSiteFixture serverFixture, + ITestOutputHelper output) + : base(browserFixture, serverFixture, output) + { + serverFixture.ApplicationAssembly = typeof(RemoteAuthenticationStartup).Assembly; + + if (TestTrimmedApps) + { + serverFixture.BuildWebHostMethod = BuildPublishedWebHost; + serverFixture.GetContentRootMethod = GetPublishedContentRoot; + } + } + + [Fact] + public void NavigateToLogin_PreservesExtraQueryParams() + { + // If the preservedExtraQueryParams passed to NavigateToLogin by RedirectToLogin gets trimmed, + // the OIDC endpoints will fail to authenticate the user. + Navigate("/subdir/test-remote-authentication"); + + var heading = Browser.Exists(By.TagName("h1")); + Browser.Equal("Hello, Jane Doe!", () => heading.Text); + } + + private static IHost BuildPublishedWebHost(string[] args) => + Host.CreateDefaultBuilder(args) + .ConfigureLogging((ctx, lb) => + { + TestSink sink = new TestSink(); + lb.AddProvider(new TestLoggerProvider(sink)); + lb.Services.AddSingleton(sink); + }) + .ConfigureWebHostDefaults(webHostBuilder => + { + webHostBuilder.UseStartup(); + // Avoid UseStaticAssets or we won't use the trimmed published output. + }) + .Build(); + + private static string GetPublishedContentRoot(Assembly assembly) + { + var contentRoot = Path.Combine(AppContext.BaseDirectory, "trimmed-or-threading", assembly.GetName().Name); + + if (!Directory.Exists(contentRoot)) + { + throw new DirectoryNotFoundException($"Test is configured to use trimmed outputs, but trimmed outputs were not found in {contentRoot}."); + } + + return contentRoot; + } +} diff --git a/src/Components/test/E2ETest/Tests/WebAssemblyPrerenderedTest.cs b/src/Components/test/E2ETest/Tests/WebAssemblyPrerenderedTest.cs index 9007e18ab483..1b108484b9db 100644 --- a/src/Components/test/E2ETest/Tests/WebAssemblyPrerenderedTest.cs +++ b/src/Components/test/E2ETest/Tests/WebAssemblyPrerenderedTest.cs @@ -56,7 +56,7 @@ private void WaitUntilLoaded() private static string GetPublishedContentRoot(Assembly assembly) { - var contentRoot = Path.Combine(AppContext.BaseDirectory, "trimmed", assembly.GetName().Name); + var contentRoot = Path.Combine(AppContext.BaseDirectory, "trimmed-or-threading", assembly.GetName().Name); if (!Directory.Exists(contentRoot)) { diff --git a/src/Components/test/testassets/Components.TestServer/Components.TestServer.csproj b/src/Components/test/testassets/Components.TestServer/Components.TestServer.csproj index 6279d994bc7b..16d1475fc03c 100644 --- a/src/Components/test/testassets/Components.TestServer/Components.TestServer.csproj +++ b/src/Components/test/testassets/Components.TestServer/Components.TestServer.csproj @@ -25,11 +25,13 @@ + + diff --git a/src/Components/test/testassets/Components.TestServer/Program.cs b/src/Components/test/testassets/Components.TestServer/Program.cs index 1c6156c605d0..a3206465989d 100644 --- a/src/Components/test/testassets/Components.TestServer/Program.cs +++ b/src/Components/test/testassets/Components.TestServer/Program.cs @@ -19,6 +19,7 @@ public static async Task Main(string[] args) var createIndividualHosts = new Dictionary { ["Client authentication"] = (BuildWebHost(CreateAdditionalArgs(args)), "/subdir"), + ["Remote client authentication"] = (BuildWebHost(CreateAdditionalArgs(args)), "/subdir"), ["Server authentication"] = (BuildWebHost(CreateAdditionalArgs(args)), "/subdir"), ["CORS (WASM)"] = (BuildWebHost(CreateAdditionalArgs(args)), "/subdir"), ["Prerendering (Server-side)"] = (BuildWebHost(CreateAdditionalArgs(args)), "/prerendered"), diff --git a/src/Components/test/testassets/Components.TestServer/RazorComponents/RemoteAuthenticationApp.razor b/src/Components/test/testassets/Components.TestServer/RazorComponents/RemoteAuthenticationApp.razor new file mode 100644 index 000000000000..7cec534aca44 --- /dev/null +++ b/src/Components/test/testassets/Components.TestServer/RazorComponents/RemoteAuthenticationApp.razor @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + diff --git a/src/Components/test/testassets/Components.TestServer/RemoteAuthenticationStartup.cs b/src/Components/test/testassets/Components.TestServer/RemoteAuthenticationStartup.cs new file mode 100644 index 000000000000..69aca756bb9e --- /dev/null +++ b/src/Components/test/testassets/Components.TestServer/RemoteAuthenticationStartup.cs @@ -0,0 +1,97 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. + +using System.Globalization; +using System.Reflection; +using Components.TestServer.RazorComponents; +using Microsoft.AspNetCore.Mvc; +using Microsoft.IdentityModel.JsonWebTokens; +using Microsoft.IdentityModel.Tokens; + +namespace TestServer; + +public class RemoteAuthenticationStartup +{ + public void ConfigureServices(IServiceCollection services) + { + services.AddRazorComponents() + .AddInteractiveWebAssemblyComponents(); + } + + // This method gets called by the runtime. Use this method to configure the HTTP request pipeline. + public void Configure(IApplicationBuilder app, IWebHostEnvironment env) + { + app.Map("/subdir", app => + { + app.UseStaticFiles(); + app.UseRouting(); + app.UseAntiforgery(); + app.UseEndpoints(endpoints => + { + endpoints.MapRazorComponents() + .AddAdditionalAssemblies(Assembly.Load("Components.WasmRemoteAuthentication")) + .AddInteractiveWebAssemblyRenderMode(options => options.PathPrefix = "/WasmRemoteAuthentication"); + + var oidcEndpoints = endpoints.MapGroup("oidc"); + + // This is designed to test a single login at a time. + var issuer = ""; + oidcEndpoints.MapGet(".well-known/openid-configuration", (HttpRequest request, [FromHeader] string host) => + { + issuer = $"{(request.IsHttps ? "https" : "http")}://{host}"; + return Results.Json(new + { + issuer, + authorization_endpoint = $"{issuer}/subdir/oidc/authorize", + token_endpoint = $"{issuer}/subdir/oidc/token", + }); + }); + + var lastCode = ""; + oidcEndpoints.MapGet("authorize", (string redirect_uri, string? state, string? prompt, bool? preservedExtraQueryParams) => + { + // Require interaction so silent sign-in does not skip RedirectToLogin.razor. + if (prompt == "none") + { + return Results.Redirect($"{redirect_uri}?error=interaction_required&state={state}"); + } + + // Verify that the extra query parameters added by RedirectToLogin.razor are preserved. + if (preservedExtraQueryParams != true) + { + return Results.Redirect($"{redirect_uri}?error=invalid_request&error_description=extraQueryParams%20not%20preserved&state={state}"); + } + + lastCode = Random.Shared.Next().ToString(CultureInfo.InvariantCulture); + return Results.Redirect($"{redirect_uri}?code={lastCode}&state={state}"); + }); + + var jwtHandler = new JsonWebTokenHandler(); + oidcEndpoints.MapPost("token", ([FromForm] string code) => + { + if (string.IsNullOrEmpty(lastCode) && code != lastCode) + { + return Results.BadRequest("Bad code"); + } + + return Results.Json(new + { + token_type = "Bearer", + scope = "openid profile", + expires_in = 3600, + id_token = jwtHandler.CreateToken(new SecurityTokenDescriptor + { + Issuer = issuer, + Audience = "s6BhdRkqt3", + Claims = new Dictionary + { + ["sub"] = "248289761001", + ["name"] = "Jane Doe", + }, + }), + }); + }).DisableAntiforgery(); + }); + }); + } +} diff --git a/src/Components/test/testassets/Components.WasmRemoteAuthentication/Components.WasmRemoteAuthentication.csproj b/src/Components/test/testassets/Components.WasmRemoteAuthentication/Components.WasmRemoteAuthentication.csproj new file mode 100644 index 000000000000..3b44a098893d --- /dev/null +++ b/src/Components/test/testassets/Components.WasmRemoteAuthentication/Components.WasmRemoteAuthentication.csproj @@ -0,0 +1,20 @@ + + + + $(DefaultNetCoreTargetFramework) + enable + enable + WasmRemoteAuthentication + + + + + <_BlazorBrotliCompressionLevel>NoCompression + + + + + + + + diff --git a/src/Components/test/testassets/Components.WasmRemoteAuthentication/Pages/Authentication.razor b/src/Components/test/testassets/Components.WasmRemoteAuthentication/Pages/Authentication.razor new file mode 100644 index 000000000000..9ec02f227154 --- /dev/null +++ b/src/Components/test/testassets/Components.WasmRemoteAuthentication/Pages/Authentication.razor @@ -0,0 +1,9 @@ +@page "/authentication/{action}" + +@using Microsoft.AspNetCore.Components.WebAssembly.Authentication + + + +@code { + [Parameter] public string? Action { get; set; } +} diff --git a/src/Components/test/testassets/Components.WasmRemoteAuthentication/Pages/TestRemoteAuthentication.razor b/src/Components/test/testassets/Components.WasmRemoteAuthentication/Pages/TestRemoteAuthentication.razor new file mode 100644 index 000000000000..a5a7cf05ec31 --- /dev/null +++ b/src/Components/test/testassets/Components.WasmRemoteAuthentication/Pages/TestRemoteAuthentication.razor @@ -0,0 +1,13 @@ +@page "/test-remote-authentication" + +@using Microsoft.AspNetCore.Components.Authorization + + + +

    Hello, @context.User.Identity?.Name!

    +
    + + @* Do this rather than rely on the [Authorize] attribute to avoid endpoint routing. *@ + + +
    diff --git a/src/Components/test/testassets/Components.WasmRemoteAuthentication/Program.cs b/src/Components/test/testassets/Components.WasmRemoteAuthentication/Program.cs new file mode 100644 index 000000000000..e8f99c23b6e4 --- /dev/null +++ b/src/Components/test/testassets/Components.WasmRemoteAuthentication/Program.cs @@ -0,0 +1,12 @@ +using Microsoft.AspNetCore.Components.WebAssembly.Hosting; + +var builder = WebAssemblyHostBuilder.CreateDefault(args); + +builder.Services.AddOidcAuthentication(options => +{ + options.ProviderOptions.Authority = $"{builder.HostEnvironment.BaseAddress}oidc"; + options.ProviderOptions.ClientId = "s6BhdRkqt3"; + options.ProviderOptions.ResponseType = "code"; +}); + +await builder.Build().RunAsync(); diff --git a/src/Components/test/testassets/Components.WasmRemoteAuthentication/Properties/launchSettings.json b/src/Components/test/testassets/Components.WasmRemoteAuthentication/Properties/launchSettings.json new file mode 100644 index 000000000000..ab37532e31fb --- /dev/null +++ b/src/Components/test/testassets/Components.WasmRemoteAuthentication/Properties/launchSettings.json @@ -0,0 +1,21 @@ +{ + "profiles": { + "http": { + "commandName": "Project", + "launchBrowser": true, + "inspectUri": "{wsProtocol}://{url.hostname}:{url.port}/_framework/debug/ws-proxy?browser={browserInspectUri}", + "applicationUrl": "http://localhost:5102/", + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + } + }, + "https": { + "commandName": "Project", + "launchBrowser": true, + "applicationUrl": "https://localhost:7293;http://localhost:5102", + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + } + } + } +} diff --git a/src/Components/test/testassets/Components.WasmRemoteAuthentication/RedirectToLogin.razor b/src/Components/test/testassets/Components.WasmRemoteAuthentication/RedirectToLogin.razor new file mode 100644 index 000000000000..76739ecc85d4 --- /dev/null +++ b/src/Components/test/testassets/Components.WasmRemoteAuthentication/RedirectToLogin.razor @@ -0,0 +1,14 @@ +@using Microsoft.AspNetCore.Components.WebAssembly.Authentication + +@inject NavigationManager Navigation + +@code { + protected override void OnInitialized() + { + var request = new InteractiveRequestOptions { Interaction = InteractionType.SignIn, ReturnUrl = Navigation.Uri }; + var extraQueryParams = new Dictionary { ["preservedExtraQueryParams"] = "true" }; + request.TryAddAdditionalParameter("extraQueryParams", extraQueryParams); + + Navigation.NavigateToLogin("authentication/login", request); + } +} diff --git a/src/Components/test/testassets/Components.WasmRemoteAuthentication/Routes.razor b/src/Components/test/testassets/Components.WasmRemoteAuthentication/Routes.razor new file mode 100644 index 000000000000..b69e64ec3e62 --- /dev/null +++ b/src/Components/test/testassets/Components.WasmRemoteAuthentication/Routes.razor @@ -0,0 +1,27 @@ +@using Microsoft.AspNetCore.Components.Authorization +@using Microsoft.AspNetCore.Components.Routing +@using Microsoft.AspNetCore.Components.Web + + + + + + + @if (context.User.Identity?.IsAuthenticated != true) + { + + } + else + { +

    You are not authorized to access this resource.

    + } +
    +
    + +
    + + Not found +

    Sorry, there's nothing at this address.

    +
    +
    +
    From 22bb1c3f052c6bfb02e361109fa31401fdd03db9 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 2 Apr 2024 14:04:02 -0700 Subject: [PATCH 169/391] [release/8.0] Improve usage of `Type.GetType` when activating types in data protection (#54762) * Added test demonstrating behavior on TypeLoadException * Catch exceptions when calling GetType and fall back to IActivator.CreateInstance * Move trimming suppression * Include comment about how throwOnError: false can still throw * Check type name for known value before getting type * Remove unnecessary suppression * Comment * PR feedback * Update src/DataProtection/DataProtection/test/Microsoft.AspNetCore.DataProtection.Tests/XmlEncryption/XmlEncryptionExtensionsTests.cs --------- Co-authored-by: Kristian Hellang Co-authored-by: James Newton-King --- .../src/Internal/DefaultTypeNameResolver.cs | 34 +++++++ .../src/Internal/ITypeNameResolver.cs | 12 +++ .../src/KeyManagement/XmlKeyManager.cs | 17 ++-- .../DataProtection/src/TypeExtensions.cs | 13 +++ .../XmlEncryption/XmlEncryptionExtensions.cs | 17 ++-- .../XmlEncryptionExtensionsTests.cs | 94 +++++++++++++++++++ 6 files changed, 173 insertions(+), 14 deletions(-) create mode 100644 src/DataProtection/DataProtection/src/Internal/DefaultTypeNameResolver.cs create mode 100644 src/DataProtection/DataProtection/src/Internal/ITypeNameResolver.cs diff --git a/src/DataProtection/DataProtection/src/Internal/DefaultTypeNameResolver.cs b/src/DataProtection/DataProtection/src/Internal/DefaultTypeNameResolver.cs new file mode 100644 index 000000000000..40a63826048a --- /dev/null +++ b/src/DataProtection/DataProtection/src/Internal/DefaultTypeNameResolver.cs @@ -0,0 +1,34 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. + +using System; +using System.Diagnostics.CodeAnalysis; + +namespace Microsoft.AspNetCore.DataProtection.Internal; + +internal sealed class DefaultTypeNameResolver : ITypeNameResolver +{ + public static readonly DefaultTypeNameResolver Instance = new(); + + private DefaultTypeNameResolver() + { + } + + [UnconditionalSuppressMessage("Trimmer", "IL2057", Justification = "Type.GetType is only used to resolve statically known types that are referenced by DataProtection assembly.")] + public bool TryResolveType(string typeName, [NotNullWhen(true)] out Type? type) + { + try + { + // Some exceptions are thrown regardless of the value of throwOnError. + // For example, if the type is found but cannot be loaded, + // a System.TypeLoadException is thrown even if throwOnError is false. + type = Type.GetType(typeName, throwOnError: false); + return type != null; + } + catch + { + type = null; + return false; + } + } +} diff --git a/src/DataProtection/DataProtection/src/Internal/ITypeNameResolver.cs b/src/DataProtection/DataProtection/src/Internal/ITypeNameResolver.cs new file mode 100644 index 000000000000..f31a037201b8 --- /dev/null +++ b/src/DataProtection/DataProtection/src/Internal/ITypeNameResolver.cs @@ -0,0 +1,12 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. + +using System; +using System.Diagnostics.CodeAnalysis; + +namespace Microsoft.AspNetCore.DataProtection.Internal; + +internal interface ITypeNameResolver +{ + bool TryResolveType(string typeName, [NotNullWhen(true)] out Type? type); +} diff --git a/src/DataProtection/DataProtection/src/KeyManagement/XmlKeyManager.cs b/src/DataProtection/DataProtection/src/KeyManagement/XmlKeyManager.cs index 57a678e6480b..9549d8d17721 100644 --- a/src/DataProtection/DataProtection/src/KeyManagement/XmlKeyManager.cs +++ b/src/DataProtection/DataProtection/src/KeyManagement/XmlKeyManager.cs @@ -49,6 +49,7 @@ public sealed class XmlKeyManager : IKeyManager, IInternalXmlKeyManager private const string RevokeAllKeysValue = "*"; private readonly IActivator _activator; + private readonly ITypeNameResolver _typeNameResolver; private readonly AlgorithmConfiguration _authenticatedEncryptorConfiguration; private readonly IKeyEscrowSink? _keyEscrowSink; private readonly IInternalXmlKeyManager _internalKeyManager; @@ -112,6 +113,8 @@ internal XmlKeyManager( var escrowSinks = keyManagementOptions.Value.KeyEscrowSinks; _keyEscrowSink = escrowSinks.Count > 0 ? new AggregateKeyEscrowSink(escrowSinks) : null; _activator = activator; + // Note: ITypeNameResolver is only implemented on the activator in tests. In production, it's always DefaultTypeNameResolver. + _typeNameResolver = activator as ITypeNameResolver ?? DefaultTypeNameResolver.Instance; TriggerAndResetCacheExpirationToken(suppressLogging: true); _internalKeyManager = _internalKeyManager ?? this; _encryptorFactories = keyManagementOptions.Value.AuthenticatedEncryptorFactories; @@ -460,27 +463,27 @@ IAuthenticatedEncryptorDescriptor IInternalXmlKeyManager.DeserializeDescriptorFr } } - [UnconditionalSuppressMessage("Trimmer", "IL2057", Justification = "Type.GetType result is only useful with types that are referenced by DataProtection assembly.")] private IAuthenticatedEncryptorDescriptorDeserializer CreateDeserializer(string descriptorDeserializerTypeName) { - var resolvedTypeName = TypeForwardingActivator.TryForwardTypeName(descriptorDeserializerTypeName, out var forwardedTypeName) + // typeNameToMatch will be used for matching against known types but not passed to the activator. + // The activator will do its own forwarding. + var typeNameToMatch = TypeForwardingActivator.TryForwardTypeName(descriptorDeserializerTypeName, out var forwardedTypeName) ? forwardedTypeName : descriptorDeserializerTypeName; - var type = Type.GetType(resolvedTypeName, throwOnError: false); - if (type == typeof(AuthenticatedEncryptorDescriptorDeserializer)) + if (typeof(AuthenticatedEncryptorDescriptorDeserializer).MatchName(typeNameToMatch, _typeNameResolver)) { return _activator.CreateInstance(descriptorDeserializerTypeName); } - else if (type == typeof(CngCbcAuthenticatedEncryptorDescriptorDeserializer) && RuntimeInformation.IsOSPlatform(OSPlatform.Windows)) + else if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows) && typeof(CngCbcAuthenticatedEncryptorDescriptorDeserializer).MatchName(typeNameToMatch, _typeNameResolver)) { return _activator.CreateInstance(descriptorDeserializerTypeName); } - else if (type == typeof(CngGcmAuthenticatedEncryptorDescriptorDeserializer) && RuntimeInformation.IsOSPlatform(OSPlatform.Windows)) + else if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows) && typeof(CngGcmAuthenticatedEncryptorDescriptorDeserializer).MatchName(typeNameToMatch, _typeNameResolver)) { return _activator.CreateInstance(descriptorDeserializerTypeName); } - else if (type == typeof(ManagedAuthenticatedEncryptorDescriptorDeserializer)) + else if (typeof(ManagedAuthenticatedEncryptorDescriptorDeserializer).MatchName(typeNameToMatch, _typeNameResolver)) { return _activator.CreateInstance(descriptorDeserializerTypeName); } diff --git a/src/DataProtection/DataProtection/src/TypeExtensions.cs b/src/DataProtection/DataProtection/src/TypeExtensions.cs index 89b69d0b70db..1766ff6a7c2d 100644 --- a/src/DataProtection/DataProtection/src/TypeExtensions.cs +++ b/src/DataProtection/DataProtection/src/TypeExtensions.cs @@ -3,6 +3,7 @@ using System; using System.Diagnostics.CodeAnalysis; +using Microsoft.AspNetCore.DataProtection.Internal; namespace Microsoft.AspNetCore.DataProtection; @@ -39,4 +40,16 @@ public static Type GetTypeWithTrimFriendlyErrorMessage(string typeName) throw new InvalidOperationException($"Unable to load type '{typeName}'. If the app is published with trimming then this type may have been trimmed. Ensure the type's assembly is excluded from trimming.", ex); } } + + public static bool MatchName(this Type matchType, string resolvedTypeName, ITypeNameResolver typeNameResolver) + { + // Before attempting to resolve the name to a type, check if it starts with the full name of the type. + // Use StartsWith to ignore potential assembly version differences. + if (matchType.FullName != null && resolvedTypeName.StartsWith(matchType.FullName, StringComparison.Ordinal)) + { + return typeNameResolver.TryResolveType(resolvedTypeName, out var resolvedType) && resolvedType == matchType; + } + + return false; + } } diff --git a/src/DataProtection/DataProtection/src/XmlEncryption/XmlEncryptionExtensions.cs b/src/DataProtection/DataProtection/src/XmlEncryption/XmlEncryptionExtensions.cs index 1b99664b486c..62d1bdf0b99c 100644 --- a/src/DataProtection/DataProtection/src/XmlEncryption/XmlEncryptionExtensions.cs +++ b/src/DataProtection/DataProtection/src/XmlEncryption/XmlEncryptionExtensions.cs @@ -67,27 +67,30 @@ public static XElement DecryptElement(this XElement element, IActivator activato return doc.Root!; } - [UnconditionalSuppressMessage("Trimmer", "IL2057", Justification = "Type.GetType result is only useful with types that are referenced by DataProtection assembly.")] private static IXmlDecryptor CreateDecryptor(IActivator activator, string decryptorTypeName) { - var resolvedTypeName = TypeForwardingActivator.TryForwardTypeName(decryptorTypeName, out var forwardedTypeName) + // typeNameToMatch will be used for matching against known types but not passed to the activator. + // The activator will do its own forwarding. + var typeNameToMatch = TypeForwardingActivator.TryForwardTypeName(decryptorTypeName, out var forwardedTypeName) ? forwardedTypeName : decryptorTypeName; - var type = Type.GetType(resolvedTypeName, throwOnError: false); - if (type == typeof(DpapiNGXmlDecryptor)) + // Note: ITypeNameResolver is only implemented on the activator in tests. In production, it's always DefaultTypeNameResolver. + var typeNameResolver = activator as ITypeNameResolver ?? DefaultTypeNameResolver.Instance; + + if (typeof(DpapiNGXmlDecryptor).MatchName(typeNameToMatch, typeNameResolver)) { return activator.CreateInstance(decryptorTypeName); } - else if (type == typeof(DpapiXmlDecryptor)) + else if (typeof(DpapiXmlDecryptor).MatchName(typeNameToMatch, typeNameResolver)) { return activator.CreateInstance(decryptorTypeName); } - else if (type == typeof(EncryptedXmlDecryptor)) + else if (typeof(EncryptedXmlDecryptor).MatchName(typeNameToMatch, typeNameResolver)) { return activator.CreateInstance(decryptorTypeName); } - else if (type == typeof(NullXmlDecryptor)) + else if (typeof(NullXmlDecryptor).MatchName(typeNameToMatch, typeNameResolver)) { return activator.CreateInstance(decryptorTypeName); } diff --git a/src/DataProtection/DataProtection/test/Microsoft.AspNetCore.DataProtection.Tests/XmlEncryption/XmlEncryptionExtensionsTests.cs b/src/DataProtection/DataProtection/test/Microsoft.AspNetCore.DataProtection.Tests/XmlEncryption/XmlEncryptionExtensionsTests.cs index dffa10477e87..2897f4b46182 100644 --- a/src/DataProtection/DataProtection/test/Microsoft.AspNetCore.DataProtection.Tests/XmlEncryption/XmlEncryptionExtensionsTests.cs +++ b/src/DataProtection/DataProtection/test/Microsoft.AspNetCore.DataProtection.Tests/XmlEncryption/XmlEncryptionExtensionsTests.cs @@ -49,6 +49,100 @@ public void DecryptElement_RootNodeRequiresDecryption_Success() XmlAssert.Equal("", retVal); } + [Fact] + public void DecryptElement_CustomType_TypeNameResolverNotCalled() + { + // Arrange + var decryptorTypeName = typeof(MyXmlDecryptor).AssemblyQualifiedName; + + var original = XElement.Parse(@$" + + + "); + + var mockActivator = new Mock(); + mockActivator.ReturnDecryptedElementGivenDecryptorTypeNameAndInput(decryptorTypeName, "", ""); + var mockTypeNameResolver = mockActivator.As(); + + var serviceCollection = new ServiceCollection(); + serviceCollection.AddSingleton(mockActivator.Object); + var services = serviceCollection.BuildServiceProvider(); + var activator = services.GetActivator(); + + // Act + var retVal = original.DecryptElement(activator); + + // Assert + XmlAssert.Equal("", retVal); + Type resolvedType; + mockTypeNameResolver.Verify(o => o.TryResolveType(It.IsAny(), out resolvedType), Times.Never()); + } + + [Fact] + public void DecryptElement_KnownType_TypeNameResolverCalled() + { + // Arrange + var decryptorTypeName = typeof(NullXmlDecryptor).AssemblyQualifiedName; + TypeForwardingActivator.TryForwardTypeName(decryptorTypeName, out var forwardedTypeName); + + var original = XElement.Parse(@$" + + + + + "); + + var mockActivator = new Mock(); + mockActivator.Setup(o => o.CreateInstance(typeof(NullXmlDecryptor), decryptorTypeName)).Returns(new NullXmlDecryptor()); + var mockTypeNameResolver = mockActivator.As(); + var resolvedType = typeof(NullXmlDecryptor); + mockTypeNameResolver.Setup(mockTypeNameResolver => mockTypeNameResolver.TryResolveType(forwardedTypeName, out resolvedType)).Returns(true); + + var serviceCollection = new ServiceCollection(); + serviceCollection.AddSingleton(mockActivator.Object); + var services = serviceCollection.BuildServiceProvider(); + var activator = services.GetActivator(); + + // Act + var retVal = original.DecryptElement(activator); + + // Assert + XmlAssert.Equal("", retVal); + mockTypeNameResolver.Verify(o => o.TryResolveType(It.IsAny(), out resolvedType), Times.Once()); + } + + [Fact] + public void DecryptElement_KnownType_UnableToResolveType_Success() + { + // Arrange + var decryptorTypeName = typeof(NullXmlDecryptor).AssemblyQualifiedName; + + var original = XElement.Parse(@$" + + + + + "); + + var mockActivator = new Mock(); + mockActivator.Setup(o => o.CreateInstance(typeof(IXmlDecryptor), decryptorTypeName)).Returns(new NullXmlDecryptor()); + var mockTypeNameResolver = mockActivator.As(); + Type resolvedType = null; + mockTypeNameResolver.Setup(mockTypeNameResolver => mockTypeNameResolver.TryResolveType(It.IsAny(), out resolvedType)).Returns(false); + + var serviceCollection = new ServiceCollection(); + serviceCollection.AddSingleton(mockActivator.Object); + var services = serviceCollection.BuildServiceProvider(); + var activator = services.GetActivator(); + + // Act + var retVal = original.DecryptElement(activator); + + // Assert + XmlAssert.Equal("", retVal); + mockTypeNameResolver.Verify(o => o.TryResolveType(It.IsAny(), out resolvedType), Times.Once()); + } + [Fact] public void DecryptElement_MultipleNodesRequireDecryption_AvoidsRecursion_Success() { From aac83664edf0b935dec94d64eb0635d972156a64 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 2 Apr 2024 14:04:15 -0700 Subject: [PATCH 170/391] [release/8.0] Fix route analyzer performance with highly concatenated strings (#54763) * Add test for route analyzer performance issue * Clean up * Clean up * Fix build * Save last string node as an optimization to exit out of deeply nested string concatenations * Update src/Framework/AspNetCoreAnalyzers/test/RouteEmbeddedLanguage/RoutePatternAnalyzerTests.cs Co-authored-by: Martin Costello * Improve perf, remove class file * Fix stress test * Improve analysis performance * Test mixing lang at levels * Simplify * Old code * Comment * Comment * Match new Roslyn behavior * Clean up --------- Co-authored-by: James Newton-King Co-authored-by: Martin Costello --- .../RouteStringSyntaxDetector.cs | 13 ++ .../Infrastructure/SyntaxNodeExtensions.cs | 6 + ...osoft.AspNetCore.App.Analyzers.Test.csproj | 2 +- .../RoutePatternAnalyzerTests.cs | 132 ++++++++++++++++++ 4 files changed, 152 insertions(+), 1 deletion(-) diff --git a/src/Framework/AspNetCoreAnalyzers/src/Analyzers/RouteEmbeddedLanguage/Infrastructure/RouteStringSyntaxDetector.cs b/src/Framework/AspNetCoreAnalyzers/src/Analyzers/RouteEmbeddedLanguage/Infrastructure/RouteStringSyntaxDetector.cs index 345336918ea8..d5814e002b5b 100644 --- a/src/Framework/AspNetCoreAnalyzers/src/Analyzers/RouteEmbeddedLanguage/Infrastructure/RouteStringSyntaxDetector.cs +++ b/src/Framework/AspNetCoreAnalyzers/src/Analyzers/RouteEmbeddedLanguage/Infrastructure/RouteStringSyntaxDetector.cs @@ -149,6 +149,19 @@ private static bool HasLanguageComment( return true; } + // Check for the common case of a string literal in a large binary expression. For example `"..." + "..." + + // "..."` We never want to consider these as regex/json tokens as processing them would require knowing the + // contents of every string literal, and having our lexers/parsers somehow stitch them all together. This is + // beyond what those systems support (and would only work for constant strings anyways). This prevents both + // incorrect results *and* avoids heavy perf hits walking up large binary expressions (often while a caller is + // themselves walking down such a large expression). + if (token.Parent.IsLiteralExpression() && + token.Parent.Parent.IsBinaryExpression() && + token.Parent.Parent.RawKind == (int)SyntaxKind.AddExpression) + { + return false; + } + for (var node = token.Parent; node != null; node = node.Parent) { if (HasLanguageComment(node.GetLeadingTrivia(), out identifier, out options)) diff --git a/src/Framework/AspNetCoreAnalyzers/src/Analyzers/RouteEmbeddedLanguage/Infrastructure/SyntaxNodeExtensions.cs b/src/Framework/AspNetCoreAnalyzers/src/Analyzers/RouteEmbeddedLanguage/Infrastructure/SyntaxNodeExtensions.cs index 525854a63eb4..3eba331a5ffb 100644 --- a/src/Framework/AspNetCoreAnalyzers/src/Analyzers/RouteEmbeddedLanguage/Infrastructure/SyntaxNodeExtensions.cs +++ b/src/Framework/AspNetCoreAnalyzers/src/Analyzers/RouteEmbeddedLanguage/Infrastructure/SyntaxNodeExtensions.cs @@ -33,6 +33,12 @@ public static SyntaxNode GetRequiredParent(this SyntaxNode node) return parent; } + public static bool IsLiteralExpression([NotNullWhen(true)] this SyntaxNode? node) + => node is LiteralExpressionSyntax; + + public static bool IsBinaryExpression([NotNullWhen(true)] this SyntaxNode? node) + => node is BinaryExpressionSyntax; + [return: NotNullIfNotNull("node")] public static SyntaxNode? WalkUpParentheses(this SyntaxNode? node) { diff --git a/src/Framework/AspNetCoreAnalyzers/test/Microsoft.AspNetCore.App.Analyzers.Test.csproj b/src/Framework/AspNetCoreAnalyzers/test/Microsoft.AspNetCore.App.Analyzers.Test.csproj index 5f223d266110..8070e80c0b51 100644 --- a/src/Framework/AspNetCoreAnalyzers/test/Microsoft.AspNetCore.App.Analyzers.Test.csproj +++ b/src/Framework/AspNetCoreAnalyzers/test/Microsoft.AspNetCore.App.Analyzers.Test.csproj @@ -1,4 +1,4 @@ - + $(DefaultNetCoreTargetFramework) diff --git a/src/Framework/AspNetCoreAnalyzers/test/RouteEmbeddedLanguage/RoutePatternAnalyzerTests.cs b/src/Framework/AspNetCoreAnalyzers/test/RouteEmbeddedLanguage/RoutePatternAnalyzerTests.cs index 921e7f7f5d2f..a4c06cd0a261 100644 --- a/src/Framework/AspNetCoreAnalyzers/test/RouteEmbeddedLanguage/RoutePatternAnalyzerTests.cs +++ b/src/Framework/AspNetCoreAnalyzers/test/RouteEmbeddedLanguage/RoutePatternAnalyzerTests.cs @@ -1,17 +1,28 @@ // Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. +using System.Diagnostics; using System.Globalization; +using System.Text; using Microsoft.AspNetCore.Analyzer.Testing; using Microsoft.AspNetCore.Analyzers.RenderTreeBuilder; using Microsoft.AspNetCore.Analyzers.RouteEmbeddedLanguage.Infrastructure; +using Microsoft.CodeAnalysis; +using Xunit.Abstractions; namespace Microsoft.AspNetCore.Analyzers.RouteEmbeddedLanguage; public partial class RoutePatternAnalyzerTests { + private readonly ITestOutputHelper _testOutputHelper; + private TestDiagnosticAnalyzerRunner Runner { get; } = new(new RoutePatternAnalyzer()); + public RoutePatternAnalyzerTests(ITestOutputHelper testOutputHelper) + { + _testOutputHelper = testOutputHelper; + } + [Fact] public async Task CommentOnString_ReportResults() { @@ -512,4 +523,125 @@ public object TestAction(int id) // Assert Assert.Empty(diagnostics); } + + [Fact] + public async Task ConcatString_PerformanceTest() + { + // Arrange + var builder = new StringBuilder(); + builder.AppendLine(""" + class Program + { + static void Main() { } + static readonly string _s = + """); + for (var i = 0; i < 2000; i++) + { + builder.AppendLine(" \"a{}bc\" +"); + } + builder.AppendLine(""" + ""; + } + """); + var source = TestSource.Read(builder.ToString()); + + // Act 1 + // Warm up. + var diagnostics1 = await Runner.GetDiagnosticsAsync(source.Source); + + // Assert 1 + Assert.Empty(diagnostics1); + + // Act 2 + // Measure analysis. + var stopwatch = Stopwatch.StartNew(); + + var diagnostics2 = await Runner.GetDiagnosticsAsync(source.Source); + _testOutputHelper.WriteLine($"Elapsed time: {stopwatch.Elapsed}"); + + // Assert 2 + Assert.Empty(diagnostics2); + } + + [Fact] + public async Task ConcatString_DetectLanguage_NoWarningsBecauseConcatString() + { + // Arrange + var builder = new StringBuilder(); + builder.AppendLine(""" + class Program + { + static void Main() { } + // lang=Route + static readonly string _s = + """); + for (var i = 0; i < 2000; i++) + { + builder.AppendLine(" \"a{}bc\" +"); + } + builder.AppendLine(""" + ""; + } + """); + var source = TestSource.Read(builder.ToString()); + + // Act + var diagnostics = await Runner.GetDiagnosticsAsync(source.Source); + + // Assert + Assert.Empty(diagnostics); + } + + [Fact] + public async Task NestedLangComment_NoWarningsBecauseConcatString() + { + // Arrange + var builder = new StringBuilder(); + builder.AppendLine(""" + class Program + { + static void Main() { } + static readonly string _s = + "{/*MM0*/te*st0}" + + // lang=Route + "{/*MM1*/te*st1}" + + "{/*MM2*/te*st2}" + + "{test3}"; + } + """); + var source = TestSource.Read(builder.ToString()); + + // Act + var diagnostics = await Runner.GetDiagnosticsAsync(source.Source); + + // Assert + Assert.Empty(diagnostics); + } + + [Fact] + public async Task TopLangComment_NoWarningsBecauseConcatString() + { + // Arrange + var builder = new StringBuilder(); + builder.AppendLine(""" + class Program + { + static void Main() { } + static readonly string _s = + // lang=Route + "{/*MM0*/te*st0}" + + "{/*MM1*/te*st1}" + + "{/*MM2*/te*st2}" + + // lang=regex + "{test3}"; + } + """); + var source = TestSource.Read(builder.ToString()); + + // Act + var diagnostics = await Runner.GetDiagnosticsAsync(source.Source); + + // Assert + Assert.Empty(diagnostics); + } } From bc351a0ee1c3ebfa33b996620a14151c10950600 Mon Sep 17 00:00:00 2001 From: William Godbe Date: Tue, 2 Apr 2024 17:51:03 -0700 Subject: [PATCH 171/391] Suppress ps1 SDL errors (#54915) --- src/DataProtection/CreateTestCert.ps1 | 2 ++ .../Deployers/RemoteWindowsDeployer/RemotePSSessionHelper.ps1 | 4 +++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/src/DataProtection/CreateTestCert.ps1 b/src/DataProtection/CreateTestCert.ps1 index a85a040f05b6..5c97f792bcfc 100644 --- a/src/DataProtection/CreateTestCert.ps1 +++ b/src/DataProtection/CreateTestCert.ps1 @@ -1,3 +1,5 @@ +[Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSAvoidUsingConvertToSecureStringWithPlainText', '', Justification='dev utility tool')] + # # Generates a new test cert in a .pfx file # Obviously, don't actually use this to produce production certs diff --git a/src/Hosting/Server.IntegrationTesting/src/Deployers/RemoteWindowsDeployer/RemotePSSessionHelper.ps1 b/src/Hosting/Server.IntegrationTesting/src/Deployers/RemoteWindowsDeployer/RemotePSSessionHelper.ps1 index e5c54d21e810..62d6aef70f5d 100644 --- a/src/Hosting/Server.IntegrationTesting/src/Deployers/RemoteWindowsDeployer/RemotePSSessionHelper.ps1 +++ b/src/Hosting/Server.IntegrationTesting/src/Deployers/RemoteWindowsDeployer/RemotePSSessionHelper.ps1 @@ -1,4 +1,6 @@ -[CmdletBinding()] +[Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSAvoidUsingConvertToSecureStringWithPlainText', '', Justification='dev utility tool')] + +[CmdletBinding()] param( [Parameter(Mandatory=$true)] [string]$serverName, From 169228984e2ce513a09d87bdb4646bd578dfbf06 Mon Sep 17 00:00:00 2001 From: Mackinnon Buck Date: Tue, 2 Apr 2024 19:09:24 -0700 Subject: [PATCH 172/391] [release/8.0] Backport test fixes (#54912) * Test fixes (#54825) * Add license header --------- Co-authored-by: Steve Sanderson --- eng/Versions.props | 2 +- .../FormHandlingTests/FormWithParentBindingContextTest.cs | 4 ++-- .../testassets/Components.WasmRemoteAuthentication/Program.cs | 3 +++ 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/eng/Versions.props b/eng/Versions.props index 61b1f56babb0..bceb8d91ba48 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -310,7 +310,7 @@ 1.0.2 13.0.3 13.0.4 - 2.4.0 + 2.5.2 1.28.0 3.0.0 7.2.4 diff --git a/src/Components/test/E2ETest/ServerRenderingTests/FormHandlingTests/FormWithParentBindingContextTest.cs b/src/Components/test/E2ETest/ServerRenderingTests/FormHandlingTests/FormWithParentBindingContextTest.cs index 271d6bf686e5..80423bd8e8d7 100644 --- a/src/Components/test/E2ETest/ServerRenderingTests/FormHandlingTests/FormWithParentBindingContextTest.cs +++ b/src/Components/test/E2ETest/ServerRenderingTests/FormHandlingTests/FormWithParentBindingContextTest.cs @@ -1466,7 +1466,7 @@ public void SubmitButtonFormenctypeAttributeOverridesEnhancedFormEnctype() [Fact] public void EnhancedFormThatCallsNavigationManagerRefreshDoesNotPushHistoryEntry() { - GoTo("about:blank"); + Navigate("about:blank"); var startUrl = Browser.Url; GoTo("forms/form-that-calls-navigation-manager-refresh"); @@ -1488,7 +1488,7 @@ public void EnhancedFormThatCallsNavigationManagerRefreshDoesNotPushHistoryEntry [Fact] public void EnhancedFormThatCallsNavigationManagerRefreshDoesNotPushHistoryEntry_Streaming() { - GoTo("about:blank"); + Navigate("about:blank"); var startUrl = Browser.Url; GoTo("forms/form-that-calls-navigation-manager-refresh-streaming"); diff --git a/src/Components/test/testassets/Components.WasmRemoteAuthentication/Program.cs b/src/Components/test/testassets/Components.WasmRemoteAuthentication/Program.cs index e8f99c23b6e4..712d678c8920 100644 --- a/src/Components/test/testassets/Components.WasmRemoteAuthentication/Program.cs +++ b/src/Components/test/testassets/Components.WasmRemoteAuthentication/Program.cs @@ -1,3 +1,6 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. + using Microsoft.AspNetCore.Components.WebAssembly.Hosting; var builder = WebAssemblyHostBuilder.CreateDefault(args); From d71995c667ee09affae76bc330e196d8298df377 Mon Sep 17 00:00:00 2001 From: William Godbe Date: Thu, 4 Apr 2024 18:17:08 -0700 Subject: [PATCH 173/391] Skip SpotBugs for now (#54952) --- .azure/pipelines/ci.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.azure/pipelines/ci.yml b/.azure/pipelines/ci.yml index daba25973421..2b65d7e703b6 100644 --- a/.azure/pipelines/ci.yml +++ b/.azure/pipelines/ci.yml @@ -137,6 +137,8 @@ extends: name: NetCore1ESPool-Svc-Internal image: 1es-windows-2022-pt os: windows + spotBugs: + enabled: false containers: alpine319WithNode: image: mcr.microsoft.com/dotnet-buildtools/prereqs:alpine-3.19-WithNode From 331725ab1651f189f622d85a267bbe4b7e5a5f9d Mon Sep 17 00:00:00 2001 From: Brennan Date: Sun, 7 Apr 2024 19:53:36 -0700 Subject: [PATCH 174/391] Fix Abort lock --- .../Kestrel/Core/src/Internal/Http2/Http2FrameWriter.cs | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/Servers/Kestrel/Core/src/Internal/Http2/Http2FrameWriter.cs b/src/Servers/Kestrel/Core/src/Internal/Http2/Http2FrameWriter.cs index f90f728a34fe..fead18298694 100644 --- a/src/Servers/Kestrel/Core/src/Internal/Http2/Http2FrameWriter.cs +++ b/src/Servers/Kestrel/Core/src/Internal/Http2/Http2FrameWriter.cs @@ -380,9 +380,12 @@ public void Complete() } _completed = true; - AbortConnectionFlowControl(); _outputWriter.Abort(); } + + // Ok to call after aborting the Pipe because we've already set _completed to true which means any writes from the abort call + // won't call into the Pipe. + AbortConnectionFlowControl(); } public Task ShutdownAsync() @@ -925,6 +928,9 @@ private void ConsumeConnectionWindow(long bytes) } } + /// + /// Do not call this method under the _writeLock + /// private void AbortConnectionFlowControl() { lock (_windowUpdateLock) From cebb459fc7927789c9dc3821892de8e3d48c5d4d Mon Sep 17 00:00:00 2001 From: Brennan Date: Mon, 8 Apr 2024 17:12:38 -0700 Subject: [PATCH 175/391] better --- .../src/Internal/Http2/Http2FrameWriter.cs | 27 +++++++++++++--- .../src/Internal/Http2/Http2OutputProducer.cs | 31 ++++++++++++------- 2 files changed, 42 insertions(+), 16 deletions(-) diff --git a/src/Servers/Kestrel/Core/src/Internal/Http2/Http2FrameWriter.cs b/src/Servers/Kestrel/Core/src/Internal/Http2/Http2FrameWriter.cs index fead18298694..a7e329fc59d5 100644 --- a/src/Servers/Kestrel/Core/src/Internal/Http2/Http2FrameWriter.cs +++ b/src/Servers/Kestrel/Core/src/Internal/Http2/Http2FrameWriter.cs @@ -370,17 +370,31 @@ public void UpdateMaxFrameSize(uint maxFrameSize) } } + /// + /// Call while in the _writeLock. + /// + /// true if already completed. + private bool CompleteUnsynchronized() + { + if (_completed) + { + return true; + } + + _completed = true; + _outputWriter.Abort(); + + return false; + } + public void Complete() { lock (_writeLock) { - if (_completed) + if (CompleteUnsynchronized()) { return; } - - _completed = true; - _outputWriter.Abort(); } // Ok to call after aborting the Pipe because we've already set _completed to true which means any writes from the abort call @@ -407,7 +421,10 @@ public void Abort(ConnectionAbortedException error) _aborted = true; _connectionContext.Abort(error); - Complete(); + if (CompleteUnsynchronized()) + { + return; + } } } diff --git a/src/Servers/Kestrel/Core/src/Internal/Http2/Http2OutputProducer.cs b/src/Servers/Kestrel/Core/src/Internal/Http2/Http2OutputProducer.cs index 8f13acbc2763..53d2299d2a33 100644 --- a/src/Servers/Kestrel/Core/src/Internal/Http2/Http2OutputProducer.cs +++ b/src/Servers/Kestrel/Core/src/Internal/Http2/Http2OutputProducer.cs @@ -590,6 +590,7 @@ public void Reset() internal void OnRequestProcessingEnded() { + var shouldCompleteStream = false; lock (_dataWriterLock) { if (_requestProcessingComplete) @@ -600,15 +601,22 @@ internal void OnRequestProcessingEnded() _requestProcessingComplete = true; - if (_completedResponse) - { - Stream.CompleteStream(errored: false); - } + shouldCompleteStream = _completedResponse; + } + + // Complete outside of lock, anything this method does that needs a lock will acquire a lock itself. + if (shouldCompleteStream) + { + Stream.CompleteStream(errored: false); } + } internal ValueTask CompleteResponseAsync() { + var shouldCompleteStream = false; + ValueTask task = default; + lock (_dataWriterLock) { if (_completedResponse) @@ -619,8 +627,6 @@ internal ValueTask CompleteResponseAsync() _completedResponse = true; - ValueTask task = default; - if (_resetErrorCode is { } error) { // If we have an error code to write, write it now that we're done with the response. @@ -628,13 +634,16 @@ internal ValueTask CompleteResponseAsync() task = _frameWriter.WriteRstStreamAsync(StreamId, error); } - if (_requestProcessingComplete) - { - Stream.CompleteStream(errored: false); - } + shouldCompleteStream = _requestProcessingComplete; + } - return task; + // Complete outside of lock, anything this method does that needs a lock will acquire a lock itself. + if (shouldCompleteStream) + { + Stream.CompleteStream(errored: false); } + + return task; } internal Memory GetFakeMemory(int minSize) From b076b7d8c3e18e5777cbbcd6ec8681fc7d3fb0ee Mon Sep 17 00:00:00 2001 From: Brennan Date: Wed, 10 Apr 2024 11:34:22 -0700 Subject: [PATCH 176/391] some updates --- .../Core/src/Internal/Http2/Http2FrameWriter.cs | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/src/Servers/Kestrel/Core/src/Internal/Http2/Http2FrameWriter.cs b/src/Servers/Kestrel/Core/src/Internal/Http2/Http2FrameWriter.cs index a7e329fc59d5..0c8c3ccea149 100644 --- a/src/Servers/Kestrel/Core/src/Internal/Http2/Http2FrameWriter.cs +++ b/src/Servers/Kestrel/Core/src/Internal/Http2/Http2FrameWriter.cs @@ -371,7 +371,7 @@ public void UpdateMaxFrameSize(uint maxFrameSize) } /// - /// Call while in the _writeLock. + /// Call while in the . /// /// true if already completed. private bool CompleteUnsynchronized() @@ -397,8 +397,8 @@ public void Complete() } } - // Ok to call after aborting the Pipe because we've already set _completed to true which means any writes from the abort call - // won't call into the Pipe. + // Call outside of _writeLock as this can call Http2OutputProducer.Stop which can acquire Http2OutputProducer._dataWriterLock + // which is not the desired lock order AbortConnectionFlowControl(); } @@ -426,6 +426,10 @@ public void Abort(ConnectionAbortedException error) return; } } + + // Call outside of _writeLock as this can call Http2OutputProducer.Stop which can acquire Http2OutputProducer._dataWriterLock + // which is not the desired lock order + AbortConnectionFlowControl(); } private ValueTask FlushEndOfStreamHeadersAsync(Http2Stream stream) @@ -946,7 +950,9 @@ private void ConsumeConnectionWindow(long bytes) } /// - /// Do not call this method under the _writeLock + /// Do not call this method under the _writeLock. + /// This method can call Http2OutputProducer.Stop which can acquire Http2OutputProducer._dataWriterLock + /// which is not the desired lock order /// private void AbortConnectionFlowControl() { From 146cf0a4f150d42bd88dc6b6271f5d2512256106 Mon Sep 17 00:00:00 2001 From: Brennan Date: Thu, 11 Apr 2024 09:27:28 -0700 Subject: [PATCH 177/391] comment + rename --- .../Kestrel/Core/src/Internal/Http2/Http2FrameWriter.cs | 6 +++--- .../Kestrel/Core/src/Internal/Http2/Http2OutputProducer.cs | 4 ++++ 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/src/Servers/Kestrel/Core/src/Internal/Http2/Http2FrameWriter.cs b/src/Servers/Kestrel/Core/src/Internal/Http2/Http2FrameWriter.cs index 0c8c3ccea149..3006288f4b8c 100644 --- a/src/Servers/Kestrel/Core/src/Internal/Http2/Http2FrameWriter.cs +++ b/src/Servers/Kestrel/Core/src/Internal/Http2/Http2FrameWriter.cs @@ -502,7 +502,7 @@ private void WriteResponseHeadersUnsynchronized(int streamId, int statusCode, Ht _outgoingFrame.PrepareHeaders(headerFrameFlags, streamId); var buffer = _headerEncodingBuffer.AsSpan(); var done = HPackHeaderWriter.BeginEncodeHeaders(statusCode, _hpackEncoder, _headersEnumerator, buffer, out var payloadLength); - FinishWritingHeaders(streamId, payloadLength, done); + FinishWritingHeadersUnsynchronized(streamId, payloadLength, done); } // Any exception from the HPack encoder can leave the dynamic table in a corrupt state. // Since we allow custom header encoders we don't know what type of exceptions to expect. @@ -543,7 +543,7 @@ private ValueTask WriteDataAndTrailersAsync(Http2Stream stream, in _outgoingFrame.PrepareHeaders(Http2HeadersFrameFlags.END_STREAM, streamId); var buffer = _headerEncodingBuffer.AsSpan(); var done = HPackHeaderWriter.BeginEncodeHeaders(_hpackEncoder, _headersEnumerator, buffer, out var payloadLength); - FinishWritingHeaders(streamId, payloadLength, done); + FinishWritingHeadersUnsynchronized(streamId, payloadLength, done); } // Any exception from the HPack encoder can leave the dynamic table in a corrupt state. // Since we allow custom header encoders we don't know what type of exceptions to expect. @@ -557,7 +557,7 @@ private ValueTask WriteDataAndTrailersAsync(Http2Stream stream, in } } - private void FinishWritingHeaders(int streamId, int payloadLength, bool done) + private void FinishWritingHeadersUnsynchronized(int streamId, int payloadLength, bool done) { var buffer = _headerEncodingBuffer.AsSpan(); _outgoingFrame.PayloadLength = payloadLength; diff --git a/src/Servers/Kestrel/Core/src/Internal/Http2/Http2OutputProducer.cs b/src/Servers/Kestrel/Core/src/Internal/Http2/Http2OutputProducer.cs index 53d2299d2a33..f65890adf7cb 100644 --- a/src/Servers/Kestrel/Core/src/Internal/Http2/Http2OutputProducer.cs +++ b/src/Servers/Kestrel/Core/src/Internal/Http2/Http2OutputProducer.cs @@ -605,6 +605,8 @@ internal void OnRequestProcessingEnded() } // Complete outside of lock, anything this method does that needs a lock will acquire a lock itself. + // Additionally, this method should only be called once per Reset so calling outside of the lock is fine from the perspective + // of multiple threads calling OnRequestProcessingEnded. if (shouldCompleteStream) { Stream.CompleteStream(errored: false); @@ -638,6 +640,8 @@ internal ValueTask CompleteResponseAsync() } // Complete outside of lock, anything this method does that needs a lock will acquire a lock itself. + // CompleteResponseAsync also should never be called in parallel so calling this outside of the lock doesn't + // cause any weirdness with parallel threads calling this method and no longer waiting on the stream completion call. if (shouldCompleteStream) { Stream.CompleteStream(errored: false); From b305452f9db1a5b4d035df07666cf96b7d44771b Mon Sep 17 00:00:00 2001 From: wtgodbe Date: Thu, 11 Apr 2024 10:44:00 -0700 Subject: [PATCH 178/391] Update baseline, SDK --- eng/Baseline.Designer.props | 442 ++++++++++++++++++------------------ eng/Baseline.xml | 212 ++++++++--------- eng/Versions.props | 2 +- global.json | 4 +- 4 files changed, 330 insertions(+), 330 deletions(-) diff --git a/eng/Baseline.Designer.props b/eng/Baseline.Designer.props index 6a374b33b2e4..49210d5502a1 100644 --- a/eng/Baseline.Designer.props +++ b/eng/Baseline.Designer.props @@ -2,117 +2,117 @@ $(MSBuildAllProjects);$(MSBuildThisFileFullPath) - 8.0.3 + 8.0.4 - 8.0.3 + 8.0.4 - 8.0.3 + 8.0.4 - 8.0.3 + 8.0.4 - 8.0.3 + 8.0.4 - 8.0.3 + 8.0.4 - 8.0.3 + 8.0.4 - 8.0.3 + 8.0.4 - 8.0.3 + 8.0.4 - 8.0.3 + 8.0.4 - 8.0.3 + 8.0.4 - 8.0.3 + 8.0.4 - 8.0.3 + 8.0.4 - 8.0.3 + 8.0.4 - 8.0.3 + 8.0.4 - 8.0.3 + 8.0.4 - 8.0.3 + 8.0.4 - 8.0.3 + 8.0.4 - 8.0.3 + 8.0.4 - 8.0.3 + 8.0.4 - 8.0.3 + 8.0.4 - 8.0.3 + 8.0.4 - + - 8.0.3 + 8.0.4 - 8.0.3 + 8.0.4 - 8.0.3 + 8.0.4 @@ -120,137 +120,137 @@ - 8.0.3 + 8.0.4 - + - + - + - 8.0.3 + 8.0.4 - + - 8.0.3 + 8.0.4 - 8.0.3 + 8.0.4 - + - 8.0.3 + 8.0.4 - - + + - 8.0.3 + 8.0.4 - 8.0.3 + 8.0.4 - - + + - 8.0.3 + 8.0.4 - + - 8.0.3 + 8.0.4 - + - 8.0.3 + 8.0.4 - + - 8.0.3 + 8.0.4 - - + + - 8.0.3 + 8.0.4 - - - + + + - 8.0.3 + 8.0.4 - - + + - 8.0.3 + 8.0.4 - - + + - 8.0.3 + 8.0.4 - 8.0.3 + 8.0.4 - 8.0.3 + 8.0.4 - - + + @@ -258,7 +258,7 @@ - 8.0.3 + 8.0.4 @@ -267,51 +267,51 @@ - 8.0.3 + 8.0.4 - + - + - + - + - 8.0.3 + 8.0.4 - 8.0.3 + 8.0.4 - + - + - + - 8.0.3 + 8.0.4 - - + + @@ -321,8 +321,8 @@ - - + + @@ -330,8 +330,8 @@ - - + + @@ -342,58 +342,58 @@ - 8.0.3 + 8.0.4 - 8.0.3 + 8.0.4 - - + + - 8.0.3 + 8.0.4 - + - + - + - 8.0.3 + 8.0.4 - - + + - - + + - - + + - 8.0.3 + 8.0.4 - + - 8.0.3 + 8.0.4 @@ -402,7 +402,7 @@ - 8.0.3 + 8.0.4 @@ -410,71 +410,71 @@ - 8.0.3 + 8.0.4 - 8.0.3 + 8.0.4 - + - + - + - + - 8.0.3 + 8.0.4 - + - + - + - 8.0.3 + 8.0.4 - - + + - 8.0.3 + 8.0.4 - - + + - 8.0.3 + 8.0.4 @@ -490,27 +490,27 @@ - 8.0.3 + 8.0.4 - 8.0.3 + 8.0.4 - 8.0.3 + 8.0.4 - + - 8.0.3 + 8.0.4 @@ -519,79 +519,79 @@ - 8.0.3 + 8.0.4 - + - 8.0.3 + 8.0.4 - 8.0.3 + 8.0.4 - + - 8.0.3 + 8.0.4 - 8.0.3 + 8.0.4 - - + + - - + + - - + + - 8.0.3 + 8.0.4 - - + + - - + + - - + + - - + + @@ -599,149 +599,149 @@ - 8.0.3 + 8.0.4 - + - + - + - 8.0.3 + 8.0.4 - + - + - + - 8.0.3 + 8.0.4 - + - + - + - 8.0.3 + 8.0.4 - + - + - + - 8.0.3 + 8.0.4 - - - - + + + + - 8.0.3 + 8.0.4 - + - 8.0.3 + 8.0.4 - 8.0.3 + 8.0.4 - 8.0.3 + 8.0.4 - 8.0.3 + 8.0.4 - + - 8.0.3 + 8.0.4 - + - 8.0.3 + 8.0.4 - 8.0.3 + 8.0.4 - 8.0.3 + 8.0.4 - 8.0.3 + 8.0.4 - 8.0.3 + 8.0.4 - 8.0.3 + 8.0.4 - 8.0.3 + 8.0.4 @@ -763,29 +763,29 @@ - 8.0.3 + 8.0.4 - + - + - + - 8.0.3 + 8.0.4 @@ -801,23 +801,23 @@ - 8.0.3 + 8.0.4 - + - + - + @@ -825,24 +825,24 @@ - 8.0.3 + 8.0.4 - 8.0.3 + 8.0.4 - - - + + + - 8.0.3 + 8.0.4 - 8.0.3 + 8.0.4 @@ -852,7 +852,7 @@ - 8.0.3 + 8.0.4 @@ -861,73 +861,73 @@ - 8.0.3 + 8.0.4 - + - + - + - 8.0.3 + 8.0.4 - + - + - + - 8.0.3 + 8.0.4 - + - + - + - 8.0.3 + 8.0.4 - 8.0.3 + 8.0.4 @@ -956,11 +956,11 @@ - 8.0.3 + 8.0.4 - 8.0.3 + 8.0.4 @@ -978,18 +978,18 @@ - 8.0.3 + 8.0.4 - 8.0.3 + 8.0.4 - + - 8.0.3 + 8.0.4 diff --git a/eng/Baseline.xml b/eng/Baseline.xml index 4c14e31894a1..110083387ae6 100644 --- a/eng/Baseline.xml +++ b/eng/Baseline.xml @@ -4,110 +4,110 @@ This file contains a list of all the packages and their versions which were rele Update this list when preparing for a new patch. --> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/eng/Versions.props b/eng/Versions.props index d42c6dae7e02..ed43f9da3917 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -11,7 +11,7 @@ 5 - false + true 7.1.2 - 8.0.0-beta.24165.4 - 8.0.0-beta.24165.4 - 8.0.0-beta.24165.4 + 8.0.0-beta.24204.3 + 8.0.0-beta.24204.3 + 8.0.0-beta.24204.3 8.0.0-alpha.1.24175.3 diff --git a/eng/common/native/init-compiler.sh b/eng/common/native/init-compiler.sh index f5c1ec7eafeb..2d5660642b8d 100644 --- a/eng/common/native/init-compiler.sh +++ b/eng/common/native/init-compiler.sh @@ -63,7 +63,7 @@ if [ -z "$CLR_CC" ]; then # Set default versions if [ -z "$majorVersion" ]; then # note: gcc (all versions) and clang versions higher than 6 do not have minor version in file name, if it is zero. - if [ "$compiler" = "clang" ]; then versions="17 16 15 14 13 12 11 10 9 8 7 6.0 5.0 4.0 3.9 3.8 3.7 3.6 3.5" + if [ "$compiler" = "clang" ]; then versions="18 17 16 15 14 13 12 11 10 9 8 7 6.0 5.0 4.0 3.9 3.8 3.7 3.6 3.5" elif [ "$compiler" = "gcc" ]; then versions="13 12 11 10 9 8 7 6 5 4.9"; fi for version in $versions; do diff --git a/eng/common/templates-official/job/job.yml b/eng/common/templates-official/job/job.yml index a2709d10562c..1f035fee73f4 100644 --- a/eng/common/templates-official/job/job.yml +++ b/eng/common/templates-official/job/job.yml @@ -128,7 +128,7 @@ jobs: - ${{ if and(eq(parameters.runAsPublic, 'false'), ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}: - ${{ if eq(parameters.enableMicrobuild, 'true') }}: - - task: MicroBuildSigningPlugin@3 + - task: MicroBuildSigningPlugin@4 displayName: Install MicroBuild plugin inputs: signType: $(_SignType) @@ -136,6 +136,7 @@ jobs: feedSource: https://dnceng.pkgs.visualstudio.com/_packaging/MicroBuildToolset/nuget/v3/index.json env: TeamName: $(_TeamName) + MicroBuildOutputFolderOverride: '$(Agent.TempDirectory)' continueOnError: ${{ parameters.continueOnError }} condition: and(succeeded(), in(variables['_SignType'], 'real', 'test'), eq(variables['Agent.Os'], 'Windows_NT')) diff --git a/eng/common/templates-official/job/onelocbuild.yml b/eng/common/templates-official/job/onelocbuild.yml index ba9ba4930329..52b4d05d3f8d 100644 --- a/eng/common/templates-official/job/onelocbuild.yml +++ b/eng/common/templates-official/job/onelocbuild.yml @@ -56,7 +56,7 @@ jobs: # If it's not devdiv, it's dnceng ${{ if ne(variables['System.TeamProject'], 'DevDiv') }}: name: $(DncEngInternalBuildPool) - image: 1es-windows-2022-pt + image: 1es-windows-2022 os: windows steps: diff --git a/eng/common/templates-official/job/publish-build-assets.yml b/eng/common/templates-official/job/publish-build-assets.yml index 53138622fe7a..589ac80a18b7 100644 --- a/eng/common/templates-official/job/publish-build-assets.yml +++ b/eng/common/templates-official/job/publish-build-assets.yml @@ -60,8 +60,8 @@ jobs: os: windows # If it's not devdiv, it's dnceng ${{ if ne(variables['System.TeamProject'], 'DevDiv') }}: - name: $(DncEngInternalBuildPool) - image: 1es-windows-2022-pt + name: NetCore1ESPool-Publishing-Internal + image: windows.vs2019.amd64 os: windows steps: - ${{ if and(eq(parameters.runAsPublic, 'false'), ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}: diff --git a/eng/common/templates-official/job/source-build.yml b/eng/common/templates-official/job/source-build.yml index 8aba3b44bb25..f193dfbe2366 100644 --- a/eng/common/templates-official/job/source-build.yml +++ b/eng/common/templates-official/job/source-build.yml @@ -52,7 +52,7 @@ jobs: ${{ if eq(variables['System.TeamProject'], 'internal') }}: name: $[replace(replace(eq(contains(coalesce(variables['System.PullRequest.TargetBranch'], variables['Build.SourceBranch'], 'refs/heads/main'), 'release'), 'true'), True, 'NetCore1ESPool-Svc-Internal'), False, 'NetCore1ESPool-Internal')] - image: 1es-mariner-2-pt + image: 1es-mariner-2 os: linux ${{ if ne(parameters.platform.pool, '') }}: diff --git a/eng/common/templates-official/job/source-index-stage1.yml b/eng/common/templates-official/job/source-index-stage1.yml index 4b6337391708..f0513aee5b0d 100644 --- a/eng/common/templates-official/job/source-index-stage1.yml +++ b/eng/common/templates-official/job/source-index-stage1.yml @@ -33,7 +33,7 @@ jobs: demands: ImageOverride -equals windows.vs2019.amd64.open ${{ if eq(variables['System.TeamProject'], 'internal') }}: name: $(DncEngInternalBuildPool) - image: 1es-windows-2022-pt + image: windows.vs2022.amd64 os: windows steps: diff --git a/eng/common/templates-official/post-build/post-build.yml b/eng/common/templates-official/post-build/post-build.yml index 5c98fe1c0f3a..da1f40958b45 100644 --- a/eng/common/templates-official/post-build/post-build.yml +++ b/eng/common/templates-official/post-build/post-build.yml @@ -110,7 +110,7 @@ stages: # If it's not devdiv, it's dnceng ${{ else }}: name: $(DncEngInternalBuildPool) - image: 1es-windows-2022-pt + image: 1es-windows-2022 os: windows steps: @@ -150,7 +150,7 @@ stages: # If it's not devdiv, it's dnceng ${{ else }}: name: $(DncEngInternalBuildPool) - image: 1es-windows-2022-pt + image: 1es-windows-2022 os: windows steps: - template: setup-maestro-vars.yml @@ -208,7 +208,7 @@ stages: # If it's not devdiv, it's dnceng ${{ else }}: name: $(DncEngInternalBuildPool) - image: 1es-windows-2022-pt + image: 1es-windows-2022 os: windows steps: - template: setup-maestro-vars.yml @@ -261,8 +261,8 @@ stages: os: windows # If it's not devdiv, it's dnceng ${{ else }}: - name: $(DncEngInternalBuildPool) - image: 1es-windows-2022-pt + name: NetCore1ESPool-Publishing-Internal + image: windows.vs2019.amd64 os: windows steps: - template: setup-maestro-vars.yml diff --git a/eng/common/templates-official/steps/component-governance.yml b/eng/common/templates-official/steps/component-governance.yml index 0ecec47b0c91..cbba0596709d 100644 --- a/eng/common/templates-official/steps/component-governance.yml +++ b/eng/common/templates-official/steps/component-governance.yml @@ -4,7 +4,7 @@ parameters: steps: - ${{ if eq(parameters.disableComponentGovernance, 'true') }}: - - script: "echo ##vso[task.setvariable variable=skipComponentGovernanceDetection]true" + - script: echo "##vso[task.setvariable variable=skipComponentGovernanceDetection]true" displayName: Set skipComponentGovernanceDetection variable - ${{ if ne(parameters.disableComponentGovernance, 'true') }}: - task: ComponentGovernanceComponentDetection@0 diff --git a/eng/common/templates-official/variables/pool-providers.yml b/eng/common/templates-official/variables/pool-providers.yml index beab7d1bfba0..1f308b24efc4 100644 --- a/eng/common/templates-official/variables/pool-providers.yml +++ b/eng/common/templates-official/variables/pool-providers.yml @@ -23,7 +23,7 @@ # # pool: # name: $(DncEngInternalBuildPool) -# image: 1es-windows-2022-pt +# image: 1es-windows-2022 variables: # Coalesce the target and source branches so we know when a PR targets a release branch diff --git a/eng/common/templates/steps/component-governance.yml b/eng/common/templates/steps/component-governance.yml index 0ecec47b0c91..cbba0596709d 100644 --- a/eng/common/templates/steps/component-governance.yml +++ b/eng/common/templates/steps/component-governance.yml @@ -4,7 +4,7 @@ parameters: steps: - ${{ if eq(parameters.disableComponentGovernance, 'true') }}: - - script: "echo ##vso[task.setvariable variable=skipComponentGovernanceDetection]true" + - script: echo "##vso[task.setvariable variable=skipComponentGovernanceDetection]true" displayName: Set skipComponentGovernanceDetection variable - ${{ if ne(parameters.disableComponentGovernance, 'true') }}: - task: ComponentGovernanceComponentDetection@0 diff --git a/global.json b/global.json index 2e071c49dbaf..915af8cbaa3c 100644 --- a/global.json +++ b/global.json @@ -27,7 +27,7 @@ }, "msbuild-sdks": { "Yarn.MSBuild": "1.22.19", - "Microsoft.DotNet.Arcade.Sdk": "8.0.0-beta.24165.4", - "Microsoft.DotNet.Helix.Sdk": "8.0.0-beta.24165.4" + "Microsoft.DotNet.Arcade.Sdk": "8.0.0-beta.24204.3", + "Microsoft.DotNet.Helix.Sdk": "8.0.0-beta.24204.3" } } From d65b2f0638cf9a208affc3db9d01bccdd7e6a619 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 12 Apr 2024 15:07:43 -0700 Subject: [PATCH 180/391] [release/8.0] Update Wix version (#55101) * Update Wix.Common.props * Update RepoTasks.csproj * Update Wix.Common.props * Update Wix.Common.props * Update RepoTasks.csproj --------- Co-authored-by: William Godbe --- eng/targets/Wix.Common.props | 2 +- eng/tools/RepoTasks/RepoTasks.csproj | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/eng/targets/Wix.Common.props b/eng/targets/Wix.Common.props index 1be1ce45a3e6..d8fcb93ea39a 100644 --- a/eng/targets/Wix.Common.props +++ b/eng/targets/Wix.Common.props @@ -4,7 +4,7 @@ 2.0 3.14 - 3.14.0-8606.20240208.1 + $(MicrosoftSignedWixVersion) diff --git a/eng/tools/RepoTasks/RepoTasks.csproj b/eng/tools/RepoTasks/RepoTasks.csproj index aa07cbc9dc51..a15b19e51dcb 100644 --- a/eng/tools/RepoTasks/RepoTasks.csproj +++ b/eng/tools/RepoTasks/RepoTasks.csproj @@ -34,7 +34,7 @@ - + From 582b2e31f26fb410742b1bc7f2d0b1c573222115 Mon Sep 17 00:00:00 2001 From: DotNet Bot Date: Tue, 16 Apr 2024 19:05:44 +0000 Subject: [PATCH 181/391] Merged PR 38666: [internal/release/8.0] Update dependencies from dnceng/internal/dotnet-efcore, dnceng/internal/dotnet-runtime This pull request updates the following dependencies [marker]: <> (Begin:e179a2a7-bc5d-4498-2467-08dbd53ba9ce) ## From https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - **Subscription**: e179a2a7-bc5d-4498-2467-08dbd53ba9ce - **Build**: 20240416.4 - **Date Produced**: April 16, 2024 1:54:08 PM UTC - **Commit**: 59616ed938b97f4742b1cfdbfcb35bc1216b6959 - **Branch**: refs/heads/internal/release/8.0 [DependencyUpdate]: <> (Begin) - **Updates**: - **dotnet-ef**: [from 8.0.5 to 8.0.5][11] - **Microsoft.EntityFrameworkCore**: [from 8.0.5 to 8.0.5][11] - **Microsoft.EntityFrameworkCore.Design**: [from 8.0.5 to 8.0.5][11] - **Microsoft.EntityFrameworkCore.InMemory**: [from 8.0.5 to 8.0.5][11] - **Microsoft.EntityFrameworkCore.Relational**: [from 8.0.5 to 8.0.5][11] - **Microsoft.EntityFrameworkCore.Sqlite**: [from 8.0.5 to 8.0.5][11] - **Microsoft.EntityFrameworkCore.SqlServer**: [from 8.0.5 to 8.0.5][11] - **Microsoft.EntityFrameworkCore.Tools**: [from 8.0.5 to 8.0.5][11] [11]: https://dev.azure.com/dnceng/internal/_git/dotnet-efcore/branches?baseVersion=GC3d3630635c50c5a7254c20fd282994ad67ec4775&targetVersion=GC59616ed938b97f4742b1cfdbfcb35bc1216b6959&_a=files [DependencyUpdate]: <> (End) [marker]: <> (End:e179a2a7-bc5d-4498-2467-08dbd53ba9ce) [marker]: <> (Begin:83131e87-e80d-4d5b-f426-08dbd53b3319) ## From https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - **Subscription**: 83131e87-e80d-4d5b-f426-08dbd53b3319 - **Build**: 20240415.24 - **Date Produced**: April 16, 2024 8:17:49 AM UTC - **Commit**: dfd075b97471bd97ea70066a299d1fe92af90352 - **Branch**: refs/heads/internal/release/8.0 [DependencyUpdate]: <> (Begin) - **Updates**: - **Microsoft.Extensions.HostFactoryResolver.Sources**: [from 8.0.4-servicing.24169.9 to 8.0.5-servicing.24215.24][7] - **Microsoft.Internal.Runtime.AspNetCore.Transport**: [from 8.0.4-servicing.24169.9 to 8.0.5-servicing.24215.24][7] - **Microsoft.NET.Runtime.MonoAOTCompiler.Task**: [from 8.0.4 to 8.0.5][7] - **Microsoft.NET.Runtime.WebAssembly.Sdk**: [from 8.0.4 to 8.0.5][7] - **Microsoft.NETCore.App.Ref**: [from 8.0.4 to 8.0.5][7] - **Microsoft.NETCore.App.Runtime.AOT.win-x64.Cross.browser-wasm**: [from 8.0.4 to 8.0.5][7] - **Microsoft.NETCore.App.Runtime.win-x64**: [from 8.0.4 to 8.0.5][7] - **Microsoft.NETCore.BrowserDebugHost.Transport**: [from 8.0.4-servicing.24169.9 to 8.0.5-servicing.24215.24][7] - **Microsoft.NETCore.Platforms**: [from 8.0.4-servicing.24169.9 to 8.0.5-servicing.24215.24][7] - **System.Security.Cryptography.Xml**: [from 8.0.0 to 8.0.1][8] - **Microsoft.SourceBuild.Intermediate.runtime.linux-x64**: [from 8.0.4-servicing.24169.9 to 8.0.5-servicing.24215.24][7] [7]: https://dev.azure.com/dnceng/internal/_git/dotnet-runtime/branches?baseVersion=GC2d7eea252964e69be94cb9c847b371b23e4dd470&targetVersion=GCdfd075b97471bd97ea70066a299d1fe92af90352&_a=files [... --- NuGet.config | 8 ++--- eng/Version.Details.xml | 78 ++++++++++++++++++++--------------------- eng/Versions.props | 38 ++++++++++---------- 3 files changed, 62 insertions(+), 62 deletions(-) diff --git a/NuGet.config b/NuGet.config index 092ecc4fe140..b01b523486e5 100644 --- a/NuGet.config +++ b/NuGet.config @@ -6,10 +6,10 @@ - + - + @@ -30,10 +30,10 @@ - + - + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index bb53cf158231..8f25372c4783 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -9,37 +9,37 @@ --> - + https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 0e8ece3526ef3575fb85de308b8a4cd5840f928e + 59616ed938b97f4742b1cfdbfcb35bc1216b6959 - + https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 0e8ece3526ef3575fb85de308b8a4cd5840f928e + 59616ed938b97f4742b1cfdbfcb35bc1216b6959 - + https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 0e8ece3526ef3575fb85de308b8a4cd5840f928e + 59616ed938b97f4742b1cfdbfcb35bc1216b6959 - + https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 0e8ece3526ef3575fb85de308b8a4cd5840f928e + 59616ed938b97f4742b1cfdbfcb35bc1216b6959 - + https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 0e8ece3526ef3575fb85de308b8a4cd5840f928e + 59616ed938b97f4742b1cfdbfcb35bc1216b6959 - + https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 0e8ece3526ef3575fb85de308b8a4cd5840f928e + 59616ed938b97f4742b1cfdbfcb35bc1216b6959 - + https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 0e8ece3526ef3575fb85de308b8a4cd5840f928e + 59616ed938b97f4742b1cfdbfcb35bc1216b6959 - + https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 0e8ece3526ef3575fb85de308b8a4cd5840f928e + 59616ed938b97f4742b1cfdbfcb35bc1216b6959 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime @@ -121,9 +121,9 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime 5535e31a712343a63f5d7d796cd874e563e5ac14 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 2d7eea252964e69be94cb9c847b371b23e4dd470 + dfd075b97471bd97ea70066a299d1fe92af90352 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime @@ -185,9 +185,9 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime 5535e31a712343a63f5d7d796cd874e563e5ac14 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 2d7eea252964e69be94cb9c847b371b23e4dd470 + dfd075b97471bd97ea70066a299d1fe92af90352 https://github.com/dotnet/source-build-externals @@ -205,7 +205,7 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 2d7eea252964e69be94cb9c847b371b23e4dd470 + 57275c8c907c6fd84a7fbc9e549da451ebf35a72 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime @@ -239,9 +239,9 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime 5535e31a712343a63f5d7d796cd874e563e5ac14 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 5535e31a712343a63f5d7d796cd874e563e5ac14 + dfd075b97471bd97ea70066a299d1fe92af90352 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime @@ -275,17 +275,17 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime 5535e31a712343a63f5d7d796cd874e563e5ac14 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 2d7eea252964e69be94cb9c847b371b23e4dd470 + dfd075b97471bd97ea70066a299d1fe92af90352 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 2d7eea252964e69be94cb9c847b371b23e4dd470 + dfd075b97471bd97ea70066a299d1fe92af90352 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 2d7eea252964e69be94cb9c847b371b23e4dd470 + dfd075b97471bd97ea70066a299d1fe92af90352 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime @@ -316,22 +316,22 @@ Win-x64 is used here because we have picked an arbitrary runtime identifier to flow the version of the latest NETCore.App runtime. All Runtime.$rid packages should have the same version. --> - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 2d7eea252964e69be94cb9c847b371b23e4dd470 + dfd075b97471bd97ea70066a299d1fe92af90352 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 2d7eea252964e69be94cb9c847b371b23e4dd470 + dfd075b97471bd97ea70066a299d1fe92af90352 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 2d7eea252964e69be94cb9c847b371b23e4dd470 + dfd075b97471bd97ea70066a299d1fe92af90352 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 2d7eea252964e69be94cb9c847b371b23e4dd470 + dfd075b97471bd97ea70066a299d1fe92af90352 https://github.com/dotnet/xdt @@ -368,9 +368,9 @@ - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 2d7eea252964e69be94cb9c847b371b23e4dd470 + dfd075b97471bd97ea70066a299d1fe92af90352 https://github.com/dotnet/winforms diff --git a/eng/Versions.props b/eng/Versions.props index 3b9147c36523..cbad301f8d6d 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -66,12 +66,12 @@ 8.0.0 - 8.0.4 - 8.0.4 - 8.0.4 - 8.0.4 - 8.0.4 - 8.0.4-servicing.24169.9 + 8.0.5 + 8.0.5 + 8.0.5 + 8.0.5 + 8.0.5 + 8.0.5-servicing.24215.24 8.0.0 8.0.0 8.0.0 @@ -92,7 +92,7 @@ 8.0.0 8.0.0 8.0.0 - 8.0.4-servicing.24169.9 + 8.0.5-servicing.24215.24 8.0.0 8.0.0 8.0.0 @@ -108,7 +108,7 @@ 8.0.0 8.0.2 8.0.0 - 8.0.4-servicing.24169.9 + 8.0.5-servicing.24215.24 8.0.0 8.0.1 8.0.0 @@ -120,7 +120,7 @@ 8.0.0 8.0.0 8.0.0 - 8.0.0 + 8.0.1 8.0.0 8.0.0 8.0.0 @@ -128,9 +128,9 @@ 8.0.0 8.0.0 8.0.0 - 8.0.4-servicing.24169.9 + 8.0.5-servicing.24215.24 - 8.0.4-servicing.24169.9 + 8.0.5-servicing.24215.24 8.0.0 8.0.1 @@ -142,14 +142,14 @@ 8.1.0-preview.23604.1 8.1.0-preview.23604.1 - 8.0.4 - 8.0.4 - 8.0.4 - 8.0.4 - 8.0.4 - 8.0.4 - 8.0.4 - 8.0.4 + 8.0.5 + 8.0.5 + 8.0.5 + 8.0.5 + 8.0.5 + 8.0.5 + 8.0.5 + 8.0.5 4.8.0-3.23518.7 4.8.0-3.23518.7 From b5c1ba33910bd7b344c4f14f88de5d14ac8ce7d5 Mon Sep 17 00:00:00 2001 From: DotNet Bot Date: Wed, 17 Apr 2024 18:22:20 +0000 Subject: [PATCH 182/391] Merged PR 39041: [internal/release/8.0] Update dependencies from dnceng/internal/dotnet-runtime This pull request updates the following dependencies [marker]: <> (Begin:83131e87-e80d-4d5b-f426-08dbd53b3319) ## From https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - **Subscription**: 83131e87-e80d-4d5b-f426-08dbd53b3319 - **Build**: 20240416.15 - **Date Produced**: April 17, 2024 5:40:43 PM UTC - **Commit**: 087e15321bb712ef6fe8b0ba6f8bd12facf92629 - **Branch**: refs/heads/internal/release/8.0 [DependencyUpdate]: <> (Begin) - **Updates**: - **Microsoft.Extensions.HostFactoryResolver.Sources**: [from 8.0.5-servicing.24215.24 to 8.0.5-servicing.24216.15][1] - **Microsoft.Internal.Runtime.AspNetCore.Transport**: [from 8.0.5-servicing.24215.24 to 8.0.5-servicing.24216.15][1] - **Microsoft.NET.Runtime.MonoAOTCompiler.Task**: [from 8.0.5 to 8.0.5][1] - **Microsoft.NET.Runtime.WebAssembly.Sdk**: [from 8.0.5 to 8.0.5][1] - **Microsoft.NETCore.App.Ref**: [from 8.0.5 to 8.0.5][1] - **Microsoft.NETCore.App.Runtime.AOT.win-x64.Cross.browser-wasm**: [from 8.0.5 to 8.0.5][1] - **Microsoft.NETCore.App.Runtime.win-x64**: [from 8.0.5 to 8.0.5][1] - **Microsoft.NETCore.BrowserDebugHost.Transport**: [from 8.0.5-servicing.24215.24 to 8.0.5-servicing.24216.15][1] - **Microsoft.NETCore.Platforms**: [from 8.0.5-servicing.24215.24 to 8.0.5-servicing.24216.15][1] - **System.Security.Cryptography.Xml**: [from 8.0.1 to 8.0.1][1] - **Microsoft.SourceBuild.Intermediate.runtime.linux-x64**: [from 8.0.5-servicing.24215.24 to 8.0.5-servicing.24216.15][1] [1]: https://dev.azure.com/dnceng/internal/_git/dotnet-runtime/branches?baseVersion=GCdfd075b97471bd97ea70066a299d1fe92af90352&targetVersion=GC087e15321bb712ef6fe8b0ba6f8bd12facf92629&_a=files [DependencyUpdate]: <> (End) [marker]: <> (End:83131e87-e80d-4d5b-f426-08dbd53b3319) --- NuGet.config | 4 ++-- eng/Version.Details.xml | 32 ++++++++++++++++---------------- eng/Versions.props | 10 +++++----- 3 files changed, 23 insertions(+), 23 deletions(-) diff --git a/NuGet.config b/NuGet.config index b01b523486e5..6fec0b536139 100644 --- a/NuGet.config +++ b/NuGet.config @@ -9,7 +9,7 @@ - + @@ -33,7 +33,7 @@ - + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 8f25372c4783..60cfee76aacb 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -121,9 +121,9 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime 5535e31a712343a63f5d7d796cd874e563e5ac14 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - dfd075b97471bd97ea70066a299d1fe92af90352 + 087e15321bb712ef6fe8b0ba6f8bd12facf92629 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime @@ -185,9 +185,9 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime 5535e31a712343a63f5d7d796cd874e563e5ac14 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - dfd075b97471bd97ea70066a299d1fe92af90352 + 087e15321bb712ef6fe8b0ba6f8bd12facf92629 https://github.com/dotnet/source-build-externals @@ -241,7 +241,7 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - dfd075b97471bd97ea70066a299d1fe92af90352 + 087e15321bb712ef6fe8b0ba6f8bd12facf92629 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime @@ -277,15 +277,15 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - dfd075b97471bd97ea70066a299d1fe92af90352 + 087e15321bb712ef6fe8b0ba6f8bd12facf92629 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - dfd075b97471bd97ea70066a299d1fe92af90352 + 087e15321bb712ef6fe8b0ba6f8bd12facf92629 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - dfd075b97471bd97ea70066a299d1fe92af90352 + 087e15321bb712ef6fe8b0ba6f8bd12facf92629 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime @@ -318,20 +318,20 @@ --> https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - dfd075b97471bd97ea70066a299d1fe92af90352 + 087e15321bb712ef6fe8b0ba6f8bd12facf92629 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - dfd075b97471bd97ea70066a299d1fe92af90352 + 087e15321bb712ef6fe8b0ba6f8bd12facf92629 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - dfd075b97471bd97ea70066a299d1fe92af90352 + 087e15321bb712ef6fe8b0ba6f8bd12facf92629 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - dfd075b97471bd97ea70066a299d1fe92af90352 + 087e15321bb712ef6fe8b0ba6f8bd12facf92629 https://github.com/dotnet/xdt @@ -368,9 +368,9 @@
    - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - dfd075b97471bd97ea70066a299d1fe92af90352 + 087e15321bb712ef6fe8b0ba6f8bd12facf92629 https://github.com/dotnet/winforms diff --git a/eng/Versions.props b/eng/Versions.props index cbad301f8d6d..138a9144ab30 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -71,7 +71,7 @@ 8.0.5 8.0.5 8.0.5 - 8.0.5-servicing.24215.24 + 8.0.5-servicing.24216.15 8.0.0 8.0.0 8.0.0 @@ -92,7 +92,7 @@ 8.0.0 8.0.0 8.0.0 - 8.0.5-servicing.24215.24 + 8.0.5-servicing.24216.15 8.0.0 8.0.0 8.0.0 @@ -108,7 +108,7 @@ 8.0.0 8.0.2 8.0.0 - 8.0.5-servicing.24215.24 + 8.0.5-servicing.24216.15 8.0.0 8.0.1 8.0.0 @@ -128,9 +128,9 @@ 8.0.0 8.0.0 8.0.0 - 8.0.5-servicing.24215.24 + 8.0.5-servicing.24216.15 - 8.0.5-servicing.24215.24 + 8.0.5-servicing.24216.15 8.0.0 8.0.1 From 1681d9acf750c1f1ba8f89d54796c99fbfbfb8b2 Mon Sep 17 00:00:00 2001 From: DotNet Bot Date: Wed, 17 Apr 2024 20:30:24 +0000 Subject: [PATCH 183/391] Merged PR 39048: [internal/release/8.0] Update dependencies from dnceng/internal/dotnet-efcore This pull request updates the following dependencies [marker]: <> (Begin:e179a2a7-bc5d-4498-2467-08dbd53ba9ce) ## From https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - **Subscription**: e179a2a7-bc5d-4498-2467-08dbd53ba9ce - **Build**: 20240417.4 - **Date Produced**: April 17, 2024 7:24:03 PM UTC - **Commit**: f42a208554fed9bb37603c5ed4f02206b2b1b9fa - **Branch**: refs/heads/internal/release/8.0 [DependencyUpdate]: <> (Begin) - **Updates**: - **dotnet-ef**: [from 8.0.5 to 8.0.5][1] - **Microsoft.EntityFrameworkCore**: [from 8.0.5 to 8.0.5][1] - **Microsoft.EntityFrameworkCore.Design**: [from 8.0.5 to 8.0.5][1] - **Microsoft.EntityFrameworkCore.InMemory**: [from 8.0.5 to 8.0.5][1] - **Microsoft.EntityFrameworkCore.Relational**: [from 8.0.5 to 8.0.5][1] - **Microsoft.EntityFrameworkCore.Sqlite**: [from 8.0.5 to 8.0.5][1] - **Microsoft.EntityFrameworkCore.SqlServer**: [from 8.0.5 to 8.0.5][1] - **Microsoft.EntityFrameworkCore.Tools**: [from 8.0.5 to 8.0.5][1] [1]: https://dev.azure.com/dnceng/internal/_git/dotnet-efcore/branches?baseVersion=GC59616ed938b97f4742b1cfdbfcb35bc1216b6959&targetVersion=GCf42a208554fed9bb37603c5ed4f02206b2b1b9fa&_a=files [DependencyUpdate]: <> (End) [marker]: <> (End:e179a2a7-bc5d-4498-2467-08dbd53ba9ce) --- NuGet.config | 4 ++-- eng/Version.Details.xml | 16 ++++++++-------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/NuGet.config b/NuGet.config index 6fec0b536139..a67fb5e3b1f1 100644 --- a/NuGet.config +++ b/NuGet.config @@ -6,7 +6,7 @@ - + @@ -30,7 +30,7 @@ - + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 60cfee76aacb..b604e79cd5e4 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -11,35 +11,35 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 59616ed938b97f4742b1cfdbfcb35bc1216b6959 + f42a208554fed9bb37603c5ed4f02206b2b1b9fa https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 59616ed938b97f4742b1cfdbfcb35bc1216b6959 + f42a208554fed9bb37603c5ed4f02206b2b1b9fa https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 59616ed938b97f4742b1cfdbfcb35bc1216b6959 + f42a208554fed9bb37603c5ed4f02206b2b1b9fa https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 59616ed938b97f4742b1cfdbfcb35bc1216b6959 + f42a208554fed9bb37603c5ed4f02206b2b1b9fa https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 59616ed938b97f4742b1cfdbfcb35bc1216b6959 + f42a208554fed9bb37603c5ed4f02206b2b1b9fa https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 59616ed938b97f4742b1cfdbfcb35bc1216b6959 + f42a208554fed9bb37603c5ed4f02206b2b1b9fa https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 59616ed938b97f4742b1cfdbfcb35bc1216b6959 + f42a208554fed9bb37603c5ed4f02206b2b1b9fa https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 59616ed938b97f4742b1cfdbfcb35bc1216b6959 + f42a208554fed9bb37603c5ed4f02206b2b1b9fa https://dev.azure.com/dnceng/internal/_git/dotnet-runtime From c9e3996173cec136bc2e9f3b4ec45f2a323b1d63 Mon Sep 17 00:00:00 2001 From: Sean Reeser Date: Wed, 24 Apr 2024 18:21:52 +0000 Subject: [PATCH 184/391] Merged PR 39207: [internal/release/8.0] Updated Version.Details.xml - replace sha for System.Diagnostics.DiagnosticSource Updated Version.Details.xml - replace sha for System.Diagnostics.DiagnosticSource with 2d7eea252964e69be94cb9c847b371b23e4dd470 --- eng/Version.Details.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index b604e79cd5e4..8165a50d2627 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -205,7 +205,7 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 57275c8c907c6fd84a7fbc9e549da451ebf35a72 + 2d7eea252964e69be94cb9c847b371b23e4dd470 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime From 67761b3c1df88c462f1451fea3a3d500d5bc1344 Mon Sep 17 00:00:00 2001 From: Stephen Halter Date: Tue, 23 Apr 2024 18:19:26 -0700 Subject: [PATCH 185/391] Do not disable JWT validation unless requested Prior to this fix, when JwtBearerOptions are read from the default config section, issuer and audience validation would be disabled if no valid issuers or valid audiences were explicitly configured from config. This was a problem if the authority was supplied from config because this would disable validating the issuer matched what was provided by the authority. In the case of Entra, this means tokens for another tenant could be used since the JWKS are the same across tenants. Disabling audience validation when no valid audiences are provided by config is less severe because valid audiences cannot be inferred from an authority, but it could still be supplied outside config, and it should still validated unless validation is explicitly opted out of. The configuration reading logic now reads "ValidateIssuer" and "ValidateAudience" booleans from config allowing developers to explicitly opt out of validation by setting these false. Otherwise, the default remains true. --- .../src/JwtBearerConfigureOptions.cs | 6 +- .../test/JwtBearerTests_Handler.cs | 117 +++++++++++------- 2 files changed, 76 insertions(+), 47 deletions(-) diff --git a/src/Security/Authentication/JwtBearer/src/JwtBearerConfigureOptions.cs b/src/Security/Authentication/JwtBearer/src/JwtBearerConfigureOptions.cs index 812eb9287aa3..97568fde9751 100644 --- a/src/Security/Authentication/JwtBearer/src/JwtBearerConfigureOptions.cs +++ b/src/Security/Authentication/JwtBearer/src/JwtBearerConfigureOptions.cs @@ -40,12 +40,14 @@ public void Configure(string? name, JwtBearerOptions options) return; } + var validateIssuer = StringHelpers.ParseValueOrDefault(configSection[nameof(TokenValidationParameters.ValidateIssuer)], bool.Parse, options.TokenValidationParameters.ValidateIssuer); var issuer = configSection[nameof(TokenValidationParameters.ValidIssuer)]; var issuers = configSection.GetSection(nameof(TokenValidationParameters.ValidIssuers)).GetChildren().Select(iss => iss.Value).ToList(); if (issuer is not null) { issuers.Add(issuer); } + var validateAudience = StringHelpers.ParseValueOrDefault(configSection[nameof(TokenValidationParameters.ValidateAudience)], bool.Parse, options.TokenValidationParameters.ValidateAudience); var audience = configSection[nameof(TokenValidationParameters.ValidAudience)]; var audiences = configSection.GetSection(nameof(TokenValidationParameters.ValidAudiences)).GetChildren().Select(aud => aud.Value).ToList(); if (audience is not null) @@ -71,9 +73,9 @@ public void Configure(string? name, JwtBearerOptions options) options.SaveToken = StringHelpers.ParseValueOrDefault(configSection[nameof(options.SaveToken)], bool.Parse, options.SaveToken); options.TokenValidationParameters = new() { - ValidateIssuer = issuers.Count > 0, + ValidateIssuer = validateIssuer, ValidIssuers = issuers, - ValidateAudience = audiences.Count > 0, + ValidateAudience = validateAudience, ValidAudiences = audiences, ValidateIssuerSigningKey = true, IssuerSigningKeys = GetIssuerSigningKeys(configSection, issuers), diff --git a/src/Security/Authentication/test/JwtBearerTests_Handler.cs b/src/Security/Authentication/test/JwtBearerTests_Handler.cs index 6d8260c2a39f..bce43d0c48da 100644 --- a/src/Security/Authentication/test/JwtBearerTests_Handler.cs +++ b/src/Security/Authentication/test/JwtBearerTests_Handler.cs @@ -31,17 +31,9 @@ public class JwtBearerTests_Handler : SharedAuthenticationTests false; } protected override bool SupportsSignOut { get => false; } - protected override void RegisterAuth(AuthenticationBuilder services, Action configure) - { - services.AddJwtBearer(o => - { - ConfigureDefaults(o); - configure.Invoke(o); - }); - } - - private void ConfigureDefaults(JwtBearerOptions o) + protected override void RegisterAuth(AuthenticationBuilder services, Action configure = null) { + services.AddJwtBearer(configure); } [Fact] @@ -964,25 +956,19 @@ public async Task ExpirationAndIssuedWhenMinOrMaxValue() [Fact] public void CanReadJwtBearerOptionsFromConfig() { - var services = new ServiceCollection().AddLogging(); - var config = new ConfigurationBuilder().AddInMemoryCollection(new[] - { - new KeyValuePair("Authentication:Schemes:Bearer:ValidIssuer", "dotnet-user-jwts"), - new KeyValuePair("Authentication:Schemes:Bearer:ValidAudiences:0", "http://localhost:5000/"), - new KeyValuePair("Authentication:Schemes:Bearer:ValidAudiences:1", "https://localhost:5001/"), - new KeyValuePair("Authentication:Schemes:Bearer:BackchannelTimeout", "00:01:00"), - new KeyValuePair("Authentication:Schemes:Bearer:RequireHttpsMetadata", "false"), - new KeyValuePair("Authentication:Schemes:Bearer:SaveToken", "True"), - }).Build(); + var services = new ServiceCollection(); + var config = new ConfigurationBuilder().AddInMemoryCollection([ + new("Authentication:Schemes:Bearer:ValidIssuer", "dotnet-user-jwts"), + new("Authentication:Schemes:Bearer:ValidAudiences:0", "http://localhost:5000/"), + new("Authentication:Schemes:Bearer:ValidAudiences:1", "https://localhost:5001/"), + new("Authentication:Schemes:Bearer:BackchannelTimeout", "00:01:00"), + new("Authentication:Schemes:Bearer:RequireHttpsMetadata", "false"), + new("Authentication:Schemes:Bearer:SaveToken", "True"), + ]).Build(); services.AddSingleton(config); // Act - var builder = services.AddAuthentication(o => - { - o.AddScheme("Bearer", "Bearer"); - }); - builder.AddJwtBearer("Bearer"); - RegisterAuth(builder, _ => { }); + RegisterAuth(services.AddAuthentication()); var sp = services.BuildServiceProvider(); // Assert @@ -992,35 +978,34 @@ public void CanReadJwtBearerOptionsFromConfig() Assert.Equal(jwtBearerOptions.BackchannelTimeout, TimeSpan.FromSeconds(60)); Assert.False(jwtBearerOptions.RequireHttpsMetadata); Assert.True(jwtBearerOptions.SaveToken); - Assert.True(jwtBearerOptions.MapInboundClaims); // Assert default values are respected + // ValidateIssuerSignInKey should always be set to its non-default value of true if options are read from config. + Assert.True(jwtBearerOptions.TokenValidationParameters.ValidateIssuerSigningKey); + // Assert default values for other options are respected. + Assert.True(jwtBearerOptions.MapInboundClaims); + Assert.True(jwtBearerOptions.TokenValidationParameters.ValidateIssuer); + Assert.True(jwtBearerOptions.TokenValidationParameters.ValidateAudience); } [Fact] public void CanReadMultipleIssuersFromConfig() { - var services = new ServiceCollection().AddLogging(); + var services = new ServiceCollection(); var firstKey = "qPG6tDtfxFYZifHW3sEueQ=="; var secondKey = "6JPzXj6aOPdojlZdeLshaA=="; - var config = new ConfigurationBuilder().AddInMemoryCollection(new[] - { - new KeyValuePair("Authentication:Schemes:Bearer:ValidIssuers:0", "dotnet-user-jwts"), - new KeyValuePair("Authentication:Schemes:Bearer:ValidIssuers:1", "dotnet-user-jwts-2"), - new KeyValuePair("Authentication:Schemes:Bearer:SigningKeys:0:Issuer", "dotnet-user-jwts"), - new KeyValuePair("Authentication:Schemes:Bearer:SigningKeys:0:Value", firstKey), - new KeyValuePair("Authentication:Schemes:Bearer:SigningKeys:0:Length", "32"), - new KeyValuePair("Authentication:Schemes:Bearer:SigningKeys:1:Issuer", "dotnet-user-jwts-2"), - new KeyValuePair("Authentication:Schemes:Bearer:SigningKeys:1:Value", secondKey), - new KeyValuePair("Authentication:Schemes:Bearer:SigningKeys:1:Length", "32"), - }).Build(); + var config = new ConfigurationBuilder().AddInMemoryCollection([ + new("Authentication:Schemes:Bearer:ValidIssuers:0", "dotnet-user-jwts"), + new("Authentication:Schemes:Bearer:ValidIssuers:1", "dotnet-user-jwts-2"), + new("Authentication:Schemes:Bearer:SigningKeys:0:Issuer", "dotnet-user-jwts"), + new("Authentication:Schemes:Bearer:SigningKeys:0:Value", firstKey), + new("Authentication:Schemes:Bearer:SigningKeys:0:Length", "32"), + new("Authentication:Schemes:Bearer:SigningKeys:1:Issuer", "dotnet-user-jwts-2"), + new("Authentication:Schemes:Bearer:SigningKeys:1:Value", secondKey), + new("Authentication:Schemes:Bearer:SigningKeys:1:Length", "32"), + ]).Build(); services.AddSingleton(config); // Act - var builder = services.AddAuthentication(o => - { - o.AddScheme("Bearer", "Bearer"); - }); - builder.AddJwtBearer("Bearer"); - RegisterAuth(builder, _ => { }); + RegisterAuth(services.AddAuthentication()); var sp = services.BuildServiceProvider(); // Assert @@ -1030,6 +1015,48 @@ public void CanReadMultipleIssuersFromConfig() Assert.Equal(secondKey, Convert.ToBase64String(jwtBearerOptions.TokenValidationParameters.IssuerSigningKeys.OfType().LastOrDefault()?.Key)); } + [Fact] + public void IssuerAndAudienceValidationEnabledByDefaultWhenOptionsAreReadFromConfig() + { + var services = new ServiceCollection(); + var config = new ConfigurationBuilder().AddInMemoryCollection([ + new("Authentication:Schemes:Bearer:Authority", "https://localhost:5001/"), + ]).Build(); + services.AddSingleton(config); + + // Act + RegisterAuth(services.AddAuthentication()); + var sp = services.BuildServiceProvider(); + + // Assert + var jwtBearerOptions = sp.GetRequiredService>().Get(JwtBearerDefaults.AuthenticationScheme); + Assert.Equal("https://localhost:5001/", jwtBearerOptions.Authority); + Assert.True(jwtBearerOptions.TokenValidationParameters.ValidateIssuer); + Assert.True(jwtBearerOptions.TokenValidationParameters.ValidateAudience); + } + + [Fact] + public void IssuerAndAudienceValidationCanBeDisabledFromConfig() + { + var services = new ServiceCollection(); + var config = new ConfigurationBuilder().AddInMemoryCollection([ + new("Authentication:Schemes:Bearer:Authority", "https://localhost:5001/"), + new("Authentication:Schemes:Bearer:ValidateIssuer", "false"), + new("Authentication:Schemes:Bearer:ValidateAudience", "false"), + ]).Build(); + services.AddSingleton(config); + + // Act + RegisterAuth(services.AddAuthentication()); + var sp = services.BuildServiceProvider(); + + // Assert + var jwtBearerOptions = sp.GetRequiredService>().Get(JwtBearerDefaults.AuthenticationScheme); + Assert.Equal("https://localhost:5001/", jwtBearerOptions.Authority); + Assert.False(jwtBearerOptions.TokenValidationParameters.ValidateIssuer); + Assert.False(jwtBearerOptions.TokenValidationParameters.ValidateAudience); + } + class InvalidTokenValidator : TokenHandler { public InvalidTokenValidator() From e4c2e6487687313348d21604d12a85a6f741c59c Mon Sep 17 00:00:00 2001 From: Stephen Halter Date: Mon, 29 Apr 2024 14:33:20 -0700 Subject: [PATCH 186/391] Fix typo in test comment --- src/Security/Authentication/test/JwtBearerTests_Handler.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Security/Authentication/test/JwtBearerTests_Handler.cs b/src/Security/Authentication/test/JwtBearerTests_Handler.cs index bce43d0c48da..60001e54f3cd 100644 --- a/src/Security/Authentication/test/JwtBearerTests_Handler.cs +++ b/src/Security/Authentication/test/JwtBearerTests_Handler.cs @@ -978,7 +978,7 @@ public void CanReadJwtBearerOptionsFromConfig() Assert.Equal(jwtBearerOptions.BackchannelTimeout, TimeSpan.FromSeconds(60)); Assert.False(jwtBearerOptions.RequireHttpsMetadata); Assert.True(jwtBearerOptions.SaveToken); - // ValidateIssuerSignInKey should always be set to its non-default value of true if options are read from config. + // ValidateIssuerSigningKey should always be set to its non-default value of true if options are read from config. Assert.True(jwtBearerOptions.TokenValidationParameters.ValidateIssuerSigningKey); // Assert default values for other options are respected. Assert.True(jwtBearerOptions.MapInboundClaims); From 50554f37024442c834a79c8335a1f809305efd35 Mon Sep 17 00:00:00 2001 From: vseanreesermsft <78103370+vseanreesermsft@users.noreply.github.com> Date: Thu, 2 May 2024 09:16:43 -0700 Subject: [PATCH 187/391] Update branding to 8.0.6 (#55472) --- eng/Versions.props | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/eng/Versions.props b/eng/Versions.props index 3b9147c36523..bb027536e097 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -8,10 +8,10 @@ 8 0 - 5 + 6 - true + false 7.1.2 - - @@ -30,10 +28,8 @@ - - diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index bb53cf158231..3c94ec36695c 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -189,9 +189,9 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime 2d7eea252964e69be94cb9c847b371b23e4dd470 - + https://github.com/dotnet/source-build-externals - 300e99190e6ae1983681694dbdd5f75f0c692081 + 908177a58a41532b3302c17f1e1a8cf1c1234545 diff --git a/eng/Versions.props b/eng/Versions.props index bb027536e097..d5cfe172142d 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -165,7 +165,7 @@ 8.0.0-beta.24204.3 8.0.0-beta.24204.3 - 8.0.0-alpha.1.24175.3 + 8.0.0-alpha.1.24216.1 8.0.0-alpha.1.24163.3 From 12adf59a0b12c5899308f7bc5d9364336cce02fc Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 2 May 2024 09:43:13 -0700 Subject: [PATCH 193/391] [release/8.0] Handle rejected promises inside incoming Invocation messages (#55230) * Handle rejected promises inside incoming Invocation messages Incoming messages of Invocation type result in executing a clientMethod promise, but promise rejections are unhandled. This can result in a unhandled rejected promise, potentially resulting in Node.js process crashing. Note, this was previously detected via eslint and suppressed in code. To avoid this, catch promise rejections and log the failure. One scenario this case can happen is, if during the clientMethod call, the server connection is disconnected, the invokation will still attempt to send a completion message (through _sendWithProtocol). This will then result in a promise rejection, such as the following: ``` Cannot send data if the connection is not in the 'Connected' State. at HttpConnection.send (node_modules\@microsoft\signalr\dist\cjs\HttpConnection.js:95:35) at HubConnection._sendMessage (node_modules\@microsoft\signalr\dist\cjs\HubConnection.js:266:32) at HubConnection._sendWithProtocol (node_modules\@microsoft\signalr\dist\cjs\HubConnection.js:273:21) at HubConnection._invokeClientMethod (node_modules\@microsoft\signalr\dist\cjs\HubConnection.js:577:24) at processTicksAndRejections (node:internal/process/task_queues:95:5) ``` * Add test of callback sending response with a rejected promise Adds a test covering when callback invoked when server invokes a method on the client and then handles rejected promise on send When the unhandled promise fix is not applied to HubConnection, the following error fails the HubConnection.test.ts test suite: Send error 831 | connection.send = () => { 832 | promiseRejected = true; > 833 | return Promise.reject(new Error("Send error")); | ^ 834 | } 835 | p.resolve(); 836 | }); at TestConnection.connection.send (signalr/tests/HubConnection.test.ts:833:51) at HubConnection.send [as _sendMessage] (signalr/src/HubConnection.ts:422:32) at HubConnection._sendMessage [as _sendWithProtocol] (signalr/src/HubConnection.ts:433:25) at HubConnection._sendWithProtocol [as _invokeClientMethod] (signalr/src/HubConnection.ts:808:24) --------- Co-authored-by: Danny Amirault --- .../clients/ts/signalr/src/HubConnection.ts | 6 ++-- .../ts/signalr/tests/HubConnection.test.ts | 32 +++++++++++++++++++ 2 files changed, 36 insertions(+), 2 deletions(-) diff --git a/src/SignalR/clients/ts/signalr/src/HubConnection.ts b/src/SignalR/clients/ts/signalr/src/HubConnection.ts index 3612759b72c9..4ea7a78acaaa 100644 --- a/src/SignalR/clients/ts/signalr/src/HubConnection.ts +++ b/src/SignalR/clients/ts/signalr/src/HubConnection.ts @@ -614,8 +614,10 @@ export class HubConnection { switch (message.type) { case MessageType.Invocation: - // eslint-disable-next-line @typescript-eslint/no-floating-promises - this._invokeClientMethod(message); + this._invokeClientMethod(message) + .catch((e) => { + this._logger.log(LogLevel.Error, `Invoke client method threw error: ${getErrorString(e)}`) + }); break; case MessageType.StreamItem: case MessageType.Completion: { diff --git a/src/SignalR/clients/ts/signalr/tests/HubConnection.test.ts b/src/SignalR/clients/ts/signalr/tests/HubConnection.test.ts index f382a805fc00..f01d68687421 100644 --- a/src/SignalR/clients/ts/signalr/tests/HubConnection.test.ts +++ b/src/SignalR/clients/ts/signalr/tests/HubConnection.test.ts @@ -818,6 +818,38 @@ describe("HubConnection", () => { }); }); + it("callback invoked when server invokes a method on the client and then handles rejected promise on send", async () => { + await VerifyLogger.run(async (logger) => { + const connection = new TestConnection(); + const hubConnection = createHubConnection(connection, logger); + let promiseRejected = false; + try { + await hubConnection.start(); + const p = new PromiseSource(); + hubConnection.on("message", async () => { + // Force sending of response to error + connection.send = () => { + promiseRejected = true; + return Promise.reject(new Error("Send error")); + } + p.resolve(); + }); + connection.receive({ + arguments: ["test"], + nonblocking: true, + target: "message", + invocationId: "0", + type: MessageType.Invocation, + }); + + await p; + expect(promiseRejected).toBe(true); + } finally { + await hubConnection.stop(); + } + }, new RegExp("Invoke client method threw error: Error: Send error")); + }); + it("stop on handshake error", async () => { await VerifyLogger.run(async (logger) => { const connection = new TestConnection(false); From 909f8a8c1bf3d7db8e2998f2e040c6876e4c683f Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 3 May 2024 10:46:26 -0700 Subject: [PATCH 194/391] [release/8.0] Add missing registry keys for Microsoft.AspNetCore.App (#55501) * Add missing registry keys for Microsoft.AspNetCore.App * Fixup * Capitalization * Fixup * PackageVersion * Targetdir * Try this --------- Co-authored-by: wtgodbe --- src/Installers/Windows/SharedFramework/Product.wxs | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/Installers/Windows/SharedFramework/Product.wxs b/src/Installers/Windows/SharedFramework/Product.wxs index ae95ee10ae9c..30d8d6025817 100644 --- a/src/Installers/Windows/SharedFramework/Product.wxs +++ b/src/Installers/Windows/SharedFramework/Product.wxs @@ -60,6 +60,7 @@ + @@ -73,6 +74,12 @@ + + + + + + @@ -110,5 +117,11 @@ + + + + + + From 5c525f2d4dfb786123fff7a30e59f9db891a6900 Mon Sep 17 00:00:00 2001 From: Will Godbe Date: Fri, 3 May 2024 21:47:14 +0000 Subject: [PATCH 195/391] Merged PR 39362: [release/8.0] Add direct references to S.T.J in tools --- src/Tools/dotnet-user-jwts/src/dotnet-user-jwts.csproj | 1 + src/Tools/dotnet-user-secrets/src/dotnet-user-secrets.csproj | 1 + 2 files changed, 2 insertions(+) diff --git a/src/Tools/dotnet-user-jwts/src/dotnet-user-jwts.csproj b/src/Tools/dotnet-user-jwts/src/dotnet-user-jwts.csproj index 119c210c6eae..d32c05dcb54a 100644 --- a/src/Tools/dotnet-user-jwts/src/dotnet-user-jwts.csproj +++ b/src/Tools/dotnet-user-jwts/src/dotnet-user-jwts.csproj @@ -28,6 +28,7 @@ + diff --git a/src/Tools/dotnet-user-secrets/src/dotnet-user-secrets.csproj b/src/Tools/dotnet-user-secrets/src/dotnet-user-secrets.csproj index 01716ab85f0b..1a60f3aa072d 100644 --- a/src/Tools/dotnet-user-secrets/src/dotnet-user-secrets.csproj +++ b/src/Tools/dotnet-user-secrets/src/dotnet-user-secrets.csproj @@ -29,6 +29,7 @@ + From ead2a0f56499a1377e86e77600a1bdd2924d04d0 Mon Sep 17 00:00:00 2001 From: William Godbe Date: Fri, 3 May 2024 16:34:54 -0700 Subject: [PATCH 196/391] [release/8.0] Add internal pipeline to test IdentityModel nightlies (#55504) * Add internal identity pipeline * 1es-ify IdentityModel test pipeline * Fix template path * Fix everything * Fix args * More arg fixing * Really skip template tests * NoWarn --- .azure/pipelines/helix-matrix.yml | 1 - .../pipelines/identitymodel-helix-matrix.yml | 101 ++++++++++++++++++ Directory.Build.props | 2 + eng/Versions.props | 3 +- eng/helix/helix.proj | 2 +- eng/scripts/SetupIdentitySources.ps1 | 46 ++++++++ eng/targets/Helix.targets | 2 +- .../Templates.Blazor.Tests.csproj | 1 + ...lates.Blazor.WebAssembly.Auth.Tests.csproj | 1 + .../Templates.Blazor.WebAssembly.Tests.csproj | 1 + .../Templates.Mvc.Tests.csproj | 1 + .../Templates.Tests/Templates.Tests.csproj | 1 + 12 files changed, 158 insertions(+), 4 deletions(-) create mode 100644 .azure/pipelines/identitymodel-helix-matrix.yml create mode 100644 eng/scripts/SetupIdentitySources.ps1 diff --git a/.azure/pipelines/helix-matrix.yml b/.azure/pipelines/helix-matrix.yml index b2c9c1a4cc06..33b1a3c483fa 100644 --- a/.azure/pipelines/helix-matrix.yml +++ b/.azure/pipelines/helix-matrix.yml @@ -12,7 +12,6 @@ schedules: branches: include: - release/6.0 - - release/7.0 - release/8.0 always: false diff --git a/.azure/pipelines/identitymodel-helix-matrix.yml b/.azure/pipelines/identitymodel-helix-matrix.yml new file mode 100644 index 000000000000..55f0f8dd8063 --- /dev/null +++ b/.azure/pipelines/identitymodel-helix-matrix.yml @@ -0,0 +1,101 @@ +# We only want to run IdentityModel matrix on main +pr: none +trigger: none +schedules: +# Cron timezone is UTC. +- cron: "0 */12 * * *" + branches: + include: + - release/8.0 + always: true + +variables: +- name: _UseHelixOpenQueues + value: false +- group: DotNet-HelixApi-Access +- template: /eng/common/templates-official/variables/pool-providers.yml@self + +resources: + repositories: + # Repo: 1ESPipelineTemplates/1ESPipelineTemplates + - repository: 1esPipelines + type: git + name: 1ESPipelineTemplates/1ESPipelineTemplates + ref: refs/tags/release + +extends: + template: v1/1ES.Official.PipelineTemplate.yml@1esPipelines + parameters: + sdl: + sourceAnalysisPool: + name: NetCore1ESPool-Svc-Internal + image: 1es-windows-2022 + os: windows + codeql: + compiled: + enabled: false + justificationForDisabling: 'This is a test-only pipeline. The same product code is already scanned in the main pipeline (aspnetcore-ci)' + + stages: + - stage: build + displayName: Build + jobs: + - template: .azure/pipelines/jobs/default-build.yml@self + parameters: + jobName: IdentityModel_helix_matrix_x64 + jobDisplayName: 'Tests: IdentityModel nightlies helix full matrix x64' + agentOs: Windows + timeoutInMinutes: 300 + steps: + - task: NuGetAuthenticate@1 + inputs: + forceReinstallCredentialProvider: true + - task: NuGetCommand@2 + displayName: Install Microsoft.IdentityModel.Logging + inputs: + command: 'custom' + arguments: 'install Microsoft.IdentityModel.Logging + -Source https://pkgs.dev.azure.com/dnceng/internal/_packaging/identitymodel-nightlies/nuget/v3/index.json + -DependencyVersion Highest -OutputDirectory $(Build.StagingDirectory) -PreRelease' + - task: NuGetCommand@2 + displayName: Install Microsoft.IdentityModel.Protocols.OpenIdConnect + inputs: + command: 'custom' + arguments: 'install Microsoft.IdentityModel.Protocols.OpenIdConnect + -Source https://pkgs.dev.azure.com/dnceng/internal/_packaging/identitymodel-nightlies/nuget/v3/index.json + -DependencyVersion Highest -OutputDirectory $(Build.StagingDirectory) -PreRelease' + - task: NuGetCommand@2 + displayName: Install Microsoft.IdentityModel.Protocols.WsFederation + inputs: + command: 'custom' + arguments: 'install Microsoft.IdentityModel.Protocols.WsFederation + -Source https://pkgs.dev.azure.com/dnceng/internal/_packaging/identitymodel-nightlies/nuget/v3/index.json + -DependencyVersion Highest -OutputDirectory $(Build.StagingDirectory) -PreRelease' + - task: NuGetCommand@2 + displayName: System.IdentityModel.Tokens.Jwt + inputs: + command: 'custom' + arguments: 'install System.IdentityModel.Tokens.Jwt + -Source https://pkgs.dev.azure.com/dnceng/internal/_packaging/identitymodel-nightlies/nuget/v3/index.json + -DependencyVersion Highest -OutputDirectory $(Build.StagingDirectory) -PreRelease' + - task: PowerShell@2 + displayName: Add IdentityModel feel to NuGet.config + inputs: + filePath: $(Build.SourcesDirectory)/eng/scripts/SetupIdentitySources.ps1 + arguments: -ConfigFile $(Build.SourcesDirectory)/NuGet.config -IdentityModelPackageSource $(Build.StagingDirectory) + # Build the shared framework + - script: ./eng/build.cmd -ci -nobl -all -pack -arch x64 + /p:CrossgenOutput=false /p:IsIdentityModelTestJob=true /p:ASPNETCORE_TEST_LOG_DIR=artifacts/log + displayName: Build shared fx + # -noBuildRepoTasks -noBuildNative -noBuild to avoid repeating work done in the previous step. + - script: .\eng\build.cmd -ci -nobl -all -noBuildRepoTasks -noBuildNative -noBuild -test + -projects eng\helix\helix.proj /p:IsHelixJob=true /p:RunTemplateTests=false + /p:CrossgenOutput=false /p:IsIdentityModelTestJob=true /p:ASPNETCORE_TEST_LOG_DIR=artifacts/log + displayName: Run build.cmd helix target + env: + HelixApiAccessToken: $(HelixApiAccessToken) # Needed for internal queues + SYSTEM_ACCESSTOKEN: $(System.AccessToken) # We need to set this env var to publish helix results to Azure Dev Ops + artifacts: + - name: Helix_logs + path: artifacts/log/ + publishOnError: true \ No newline at end of file diff --git a/Directory.Build.props b/Directory.Build.props index 9ae6760c645e..d080a9e0fb8e 100644 --- a/Directory.Build.props +++ b/Directory.Build.props @@ -117,6 +117,8 @@ $(NoWarn.Replace('1591', '')) $(NoWarn);0105 + + $(NoWarn);NU5104 $(WarningsNotAsErrors);CS1591 diff --git a/eng/Versions.props b/eng/Versions.props index d5cfe172142d..c403cd48e0fa 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -12,7 +12,8 @@ false - 7.1.2 + 7.1.2 + *-* diff --git a/eng/helix/helix.proj b/eng/helix/helix.proj index 73ed73a32068..99254551279f 100644 --- a/eng/helix/helix.proj +++ b/eng/helix/helix.proj @@ -21,7 +21,7 @@ - + diff --git a/eng/scripts/SetupIdentitySources.ps1 b/eng/scripts/SetupIdentitySources.ps1 new file mode 100644 index 000000000000..58a4e690d7b1 --- /dev/null +++ b/eng/scripts/SetupIdentitySources.ps1 @@ -0,0 +1,46 @@ +[CmdletBinding()] +param ( + [Parameter(Mandatory = $true)][string]$ConfigFile, + [Parameter(Mandatory = $true)][string]$IdentityModelPackageSource +) + +$ErrorActionPreference = "Stop" +Set-StrictMode -Version 2.0 +[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12 + +# Add source entry to PackageSources +function AddPackageSource($sources, $SourceName, $SourceEndPoint) { + $packageSource = $sources.SelectSingleNode("add[@key='$SourceName']") + + if ($packageSource -eq $null) + { + $packageSource = $doc.CreateElement("add") + $packageSource.SetAttribute("key", $SourceName) + $packageSource.SetAttribute("value", $SourceEndPoint) + $sources.AppendChild($packageSource) | Out-Null + } + else { + Write-Host "Package source $SourceName already present." + } +} + +if (!(Test-Path $ConfigFile -PathType Leaf)) { + Write-PipelineTelemetryError -Category 'Build' -Message "eng/scripts/SetupIdentitySources.ps1 returned a non-zero exit code. Couldn't find the NuGet config file: $ConfigFile" + ExitWithExitCode 1 +} + +# Load NuGet.config +$doc = New-Object System.Xml.XmlDocument +$filename = (Get-Item $ConfigFile).FullName +$doc.Load($filename) + +# Get reference to or create one if none exist already +$sources = $doc.DocumentElement.SelectSingleNode("packageSources") +if ($sources -eq $null) { + $sources = $doc.CreateElement("packageSources") + $doc.DocumentElement.AppendChild($sources) | Out-Null +} + +AddPackageSource -Sources $sources -SourceName "identitymodel-nightlies" -SourceEndPoint $IdentityModelPackageSource + +$doc.Save($filename) \ No newline at end of file diff --git a/eng/targets/Helix.targets b/eng/targets/Helix.targets index 35c116026c62..ee73eb8ac8a3 100644 --- a/eng/targets/Helix.targets +++ b/eng/targets/Helix.targets @@ -141,7 +141,7 @@ <_Temp Include="@(HelixAvailableTargetQueue)" /> - + diff --git a/src/ProjectTemplates/test/Templates.Blazor.Tests/Templates.Blazor.Tests.csproj b/src/ProjectTemplates/test/Templates.Blazor.Tests/Templates.Blazor.Tests.csproj index 368459e98c90..1db85d5286fe 100644 --- a/src/ProjectTemplates/test/Templates.Blazor.Tests/Templates.Blazor.Tests.csproj +++ b/src/ProjectTemplates/test/Templates.Blazor.Tests/Templates.Blazor.Tests.csproj @@ -9,6 +9,7 @@ true $(RunTemplateTests) true + false diff --git a/src/ProjectTemplates/test/Templates.Blazor.WebAssembly.Auth.Tests/Templates.Blazor.WebAssembly.Auth.Tests.csproj b/src/ProjectTemplates/test/Templates.Blazor.WebAssembly.Auth.Tests/Templates.Blazor.WebAssembly.Auth.Tests.csproj index 3754aee3abd4..3d0831a1001a 100644 --- a/src/ProjectTemplates/test/Templates.Blazor.WebAssembly.Auth.Tests/Templates.Blazor.WebAssembly.Auth.Tests.csproj +++ b/src/ProjectTemplates/test/Templates.Blazor.WebAssembly.Auth.Tests/Templates.Blazor.WebAssembly.Auth.Tests.csproj @@ -9,6 +9,7 @@ true true + false diff --git a/src/ProjectTemplates/test/Templates.Blazor.WebAssembly.Tests/Templates.Blazor.WebAssembly.Tests.csproj b/src/ProjectTemplates/test/Templates.Blazor.WebAssembly.Tests/Templates.Blazor.WebAssembly.Tests.csproj index 44348f90847a..b42866c3a78f 100644 --- a/src/ProjectTemplates/test/Templates.Blazor.WebAssembly.Tests/Templates.Blazor.WebAssembly.Tests.csproj +++ b/src/ProjectTemplates/test/Templates.Blazor.WebAssembly.Tests/Templates.Blazor.WebAssembly.Tests.csproj @@ -9,6 +9,7 @@ true true + false diff --git a/src/ProjectTemplates/test/Templates.Mvc.Tests/Templates.Mvc.Tests.csproj b/src/ProjectTemplates/test/Templates.Mvc.Tests/Templates.Mvc.Tests.csproj index 880e1bb68d6b..152c0d7b0d07 100644 --- a/src/ProjectTemplates/test/Templates.Mvc.Tests/Templates.Mvc.Tests.csproj +++ b/src/ProjectTemplates/test/Templates.Mvc.Tests/Templates.Mvc.Tests.csproj @@ -9,6 +9,7 @@ true true + false diff --git a/src/ProjectTemplates/test/Templates.Tests/Templates.Tests.csproj b/src/ProjectTemplates/test/Templates.Tests/Templates.Tests.csproj index d7c3c354d144..fb297bfae7c5 100644 --- a/src/ProjectTemplates/test/Templates.Tests/Templates.Tests.csproj +++ b/src/ProjectTemplates/test/Templates.Tests/Templates.Tests.csproj @@ -9,6 +9,7 @@ true true + false From f9fe44ddda3a6dedac222b10e55798656cc3b0f6 Mon Sep 17 00:00:00 2001 From: DotNet Bot Date: Sun, 5 May 2024 04:48:05 +0000 Subject: [PATCH 197/391] Merged PR 39318: [internal/release/8.0] Update dependencies from dnceng/internal/dotnet-efcore, dnceng/internal/dotnet-runtime This pull request updates the following dependencies [marker]: <> (Begin:e179a2a7-bc5d-4498-2467-08dbd53ba9ce) ## From https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - **Subscription**: e179a2a7-bc5d-4498-2467-08dbd53ba9ce - **Build**: 20240503.7 - **Date Produced**: May 3, 2024 9:24:14 PM UTC - **Commit**: 79322f37015c26b5dc05bee854fcdac1e7042b58 - **Branch**: refs/heads/internal/release/8.0 [DependencyUpdate]: <> (Begin) - **Updates**: - **dotnet-ef**: [from 8.0.5 to 8.0.6][12] - **Microsoft.EntityFrameworkCore**: [from 8.0.5 to 8.0.6][12] - **Microsoft.EntityFrameworkCore.Design**: [from 8.0.5 to 8.0.6][12] - **Microsoft.EntityFrameworkCore.InMemory**: [from 8.0.5 to 8.0.6][12] - **Microsoft.EntityFrameworkCore.Relational**: [from 8.0.5 to 8.0.6][12] - **Microsoft.EntityFrameworkCore.Sqlite**: [from 8.0.5 to 8.0.6][12] - **Microsoft.EntityFrameworkCore.SqlServer**: [from 8.0.5 to 8.0.6][12] - **Microsoft.EntityFrameworkCore.Tools**: [from 8.0.5 to 8.0.6][12] [12]: https://dev.azure.com/dnceng/internal/_git/dotnet-efcore/branches?baseVersion=GCf42a208554fed9bb37603c5ed4f02206b2b1b9fa&targetVersion=GC79322f37015c26b5dc05bee854fcdac1e7042b58&_a=files [DependencyUpdate]: <> (End) [marker]: <> (End:e179a2a7-bc5d-4498-2467-08dbd53ba9ce) [marker]: <> (Begin:83131e87-e80d-4d5b-f426-08dbd53b3319) ## From https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - **Subscription**: 83131e87-e80d-4d5b-f426-08dbd53b3319 - **Build**: 20240503.6 - **Date Produced**: May 3, 2024 7:30:41 PM UTC - **Commit**: fa5b0d8f4a8b424732cc992158aa92842f8a2846 - **Branch**: refs/heads/internal/release/8.0 [DependencyUpdate]: <> (Begin) - **Updates**: - **Microsoft.Extensions.Configuration.Binder**: [from 8.0.1 to 8.0.2][8] - **Microsoft.Extensions.Configuration.FileExtensions**: [from 8.0.0 to 8.0.1][9] - **Microsoft.Extensions.DependencyModel**: [from 8.0.0 to 8.0.1][9] - **Microsoft.Extensions.HostFactoryResolver.Sources**: [from 8.0.5-servicing.24216.15 to 8.0.6-servicing.24253.6][10] - **Microsoft.Internal.Runtime.AspNetCore.Transport**: [from 8.0.5-servicing.24216.15 to 8.0.6-servicing.24253.6][10] - **Microsoft.NET.Runtime.MonoAOTCompiler.Task**: [from 8.0.5 to 8.0.6][10] - **Microsoft.NET.Runtime.WebAssembly.Sdk**: [from 8.0.5 to 8.0.6][10] - **Microsoft.NETCore.App.Ref**: [from 8.0.5 to 8.0.6][10] - **Microsoft.NETCore.App.Runtime.AOT.win-x64.Cross.browser-wasm**: [from 8.0.5 to 8.0.6][10] - **Microsoft.NETCore.App.Runtime.win-x64**: [from 8.0.5 to 8.0.6][10] - **Microsoft.NETCore.BrowserDebugHost.Transport**: [from 8.0.5-servicing.24216.15 to 8.0.6-servicing.24253.6][10] - **Microsoft.NETCore.Platforms**: [from 8.0.5-servicing.24216.15 to 8.0.6-servicing.24253.6][10] - **System.Security.Cryptography.Xml**: [from 8.0.1 to 8.0.1][10] - **System.Text.Json**: [from 8.0.3 to 8.0.4][11] - **Microsoft.SourceBuild.Intermediate.runtime.linux-x... --- NuGet.config | 8 ++-- eng/Version.Details.xml | 90 ++++++++++++++++++++--------------------- eng/Versions.props | 44 ++++++++++---------- 3 files changed, 71 insertions(+), 71 deletions(-) diff --git a/NuGet.config b/NuGet.config index a67fb5e3b1f1..56def1947ce9 100644 --- a/NuGet.config +++ b/NuGet.config @@ -6,10 +6,10 @@ - + - + @@ -30,10 +30,10 @@ - + - + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 8165a50d2627..ea439acf8b88 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -9,37 +9,37 @@ --> - + https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - f42a208554fed9bb37603c5ed4f02206b2b1b9fa + 79322f37015c26b5dc05bee854fcdac1e7042b58 - + https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - f42a208554fed9bb37603c5ed4f02206b2b1b9fa + 79322f37015c26b5dc05bee854fcdac1e7042b58 - + https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - f42a208554fed9bb37603c5ed4f02206b2b1b9fa + 79322f37015c26b5dc05bee854fcdac1e7042b58 - + https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - f42a208554fed9bb37603c5ed4f02206b2b1b9fa + 79322f37015c26b5dc05bee854fcdac1e7042b58 - + https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - f42a208554fed9bb37603c5ed4f02206b2b1b9fa + 79322f37015c26b5dc05bee854fcdac1e7042b58 - + https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - f42a208554fed9bb37603c5ed4f02206b2b1b9fa + 79322f37015c26b5dc05bee854fcdac1e7042b58 - + https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - f42a208554fed9bb37603c5ed4f02206b2b1b9fa + 79322f37015c26b5dc05bee854fcdac1e7042b58 - + https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - f42a208554fed9bb37603c5ed4f02206b2b1b9fa + 79322f37015c26b5dc05bee854fcdac1e7042b58 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime @@ -53,9 +53,9 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime 5535e31a712343a63f5d7d796cd874e563e5ac14 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - bf5e279d9239bfef5bb1b8d6212f1b971c434606 + fa5b0d8f4a8b424732cc992158aa92842f8a2846 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime @@ -65,9 +65,9 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime 5535e31a712343a63f5d7d796cd874e563e5ac14 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 5535e31a712343a63f5d7d796cd874e563e5ac14 + fa5b0d8f4a8b424732cc992158aa92842f8a2846 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime @@ -121,9 +121,9 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime 5535e31a712343a63f5d7d796cd874e563e5ac14 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 087e15321bb712ef6fe8b0ba6f8bd12facf92629 + fa5b0d8f4a8b424732cc992158aa92842f8a2846 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime @@ -185,9 +185,9 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime 5535e31a712343a63f5d7d796cd874e563e5ac14 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 087e15321bb712ef6fe8b0ba6f8bd12facf92629 + fa5b0d8f4a8b424732cc992158aa92842f8a2846 https://github.com/dotnet/source-build-externals @@ -241,7 +241,7 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 087e15321bb712ef6fe8b0ba6f8bd12facf92629 + fa5b0d8f4a8b424732cc992158aa92842f8a2846 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime @@ -255,9 +255,9 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime 5535e31a712343a63f5d7d796cd874e563e5ac14 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 9f4b1f5d664afdfc80e1508ab7ed099dff210fbd + fa5b0d8f4a8b424732cc992158aa92842f8a2846 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime @@ -271,21 +271,21 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime 5535e31a712343a63f5d7d796cd874e563e5ac14 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 5535e31a712343a63f5d7d796cd874e563e5ac14 + fa5b0d8f4a8b424732cc992158aa92842f8a2846 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 087e15321bb712ef6fe8b0ba6f8bd12facf92629 + fa5b0d8f4a8b424732cc992158aa92842f8a2846 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 087e15321bb712ef6fe8b0ba6f8bd12facf92629 + fa5b0d8f4a8b424732cc992158aa92842f8a2846 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 087e15321bb712ef6fe8b0ba6f8bd12facf92629 + fa5b0d8f4a8b424732cc992158aa92842f8a2846 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime @@ -316,22 +316,22 @@ Win-x64 is used here because we have picked an arbitrary runtime identifier to flow the version of the latest NETCore.App runtime. All Runtime.$rid packages should have the same version. --> - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 087e15321bb712ef6fe8b0ba6f8bd12facf92629 + fa5b0d8f4a8b424732cc992158aa92842f8a2846 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 087e15321bb712ef6fe8b0ba6f8bd12facf92629 + fa5b0d8f4a8b424732cc992158aa92842f8a2846 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 087e15321bb712ef6fe8b0ba6f8bd12facf92629 + fa5b0d8f4a8b424732cc992158aa92842f8a2846 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 087e15321bb712ef6fe8b0ba6f8bd12facf92629 + fa5b0d8f4a8b424732cc992158aa92842f8a2846 https://github.com/dotnet/xdt @@ -368,9 +368,9 @@ - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 087e15321bb712ef6fe8b0ba6f8bd12facf92629 + fa5b0d8f4a8b424732cc992158aa92842f8a2846 https://github.com/dotnet/winforms diff --git a/eng/Versions.props b/eng/Versions.props index 138a9144ab30..0b9fdcd4d553 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -65,20 +65,20 @@ --> - 8.0.0 - 8.0.5 - 8.0.5 - 8.0.5 - 8.0.5 - 8.0.5 - 8.0.5-servicing.24216.15 + 8.0.1 + 8.0.6 + 8.0.6 + 8.0.6 + 8.0.6 + 8.0.6 + 8.0.6-servicing.24253.6 8.0.0 8.0.0 8.0.0 - 8.0.1 + 8.0.2 8.0.0 8.0.0 - 8.0.0 + 8.0.1 8.0.0 8.0.0 8.0.0 @@ -92,7 +92,7 @@ 8.0.0 8.0.0 8.0.0 - 8.0.5-servicing.24216.15 + 8.0.6-servicing.24253.6 8.0.0 8.0.0 8.0.0 @@ -108,7 +108,7 @@ 8.0.0 8.0.2 8.0.0 - 8.0.5-servicing.24216.15 + 8.0.6-servicing.24253.6 8.0.0 8.0.1 8.0.0 @@ -124,13 +124,13 @@ 8.0.0 8.0.0 8.0.0 - 8.0.3 + 8.0.4 8.0.0 8.0.0 8.0.0 - 8.0.5-servicing.24216.15 + 8.0.6-servicing.24253.6 - 8.0.5-servicing.24216.15 + 8.0.6-servicing.24253.6 8.0.0 8.0.1 @@ -142,14 +142,14 @@ 8.1.0-preview.23604.1 8.1.0-preview.23604.1 - 8.0.5 - 8.0.5 - 8.0.5 - 8.0.5 - 8.0.5 - 8.0.5 - 8.0.5 - 8.0.5 + 8.0.6 + 8.0.6 + 8.0.6 + 8.0.6 + 8.0.6 + 8.0.6 + 8.0.6 + 8.0.6 4.8.0-3.23518.7 4.8.0-3.23518.7 From 0df4d2c533dda87132569d4d3d4a0a0b01eb5e57 Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" <42748379+dotnet-maestro[bot]@users.noreply.github.com> Date: Thu, 9 May 2024 15:29:00 -0700 Subject: [PATCH 198/391] [release/8.0] Update dependencies from dotnet/source-build-reference-packages (#55516) * Update dependencies from https://github.com/dotnet/source-build-reference-packages build 20240501.1 Microsoft.SourceBuild.Intermediate.source-build-reference-packages From Version 8.0.0-alpha.1.24163.3 -> To Version 8.0.0-alpha.1.24251.1 * Update dependencies from https://github.com/dotnet/source-build-reference-packages build 20240501.1 Microsoft.SourceBuild.Intermediate.source-build-reference-packages From Version 8.0.0-alpha.1.24163.3 -> To Version 8.0.0-alpha.1.24251.1 * Update dependencies from https://github.com/dotnet/source-build-reference-packages build 20240501.1 Microsoft.SourceBuild.Intermediate.source-build-reference-packages From Version 8.0.0-alpha.1.24163.3 -> To Version 8.0.0-alpha.1.24251.1 * Update dependencies from https://github.com/dotnet/source-build-reference-packages build 20240501.1 Microsoft.SourceBuild.Intermediate.source-build-reference-packages From Version 8.0.0-alpha.1.24163.3 -> To Version 8.0.0-alpha.1.24251.1 * Update dependencies from https://github.com/dotnet/source-build-reference-packages build 20240506.1 Microsoft.SourceBuild.Intermediate.source-build-reference-packages From Version 8.0.0-alpha.1.24163.3 -> To Version 8.0.0-alpha.1.24256.1 * Update dependencies from https://github.com/dotnet/source-build-reference-packages build 20240507.2 Microsoft.SourceBuild.Intermediate.source-build-reference-packages From Version 8.0.0-alpha.1.24163.3 -> To Version 8.0.0-alpha.1.24257.2 --------- Co-authored-by: dotnet-maestro[bot] --- eng/Version.Details.xml | 4 ++-- eng/Versions.props | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 3c94ec36695c..14e0a4b37a59 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -338,9 +338,9 @@ 9a1c3e1b7f0c8763d4c96e593961a61a72679a7b - + https://github.com/dotnet/source-build-reference-packages - 79827eed138fd2575a8b24820b4f385ee4ffb6e6 + 6ed73280a6d70f7e7ac39c86f2abe8c10983f0bb diff --git a/eng/Versions.props b/eng/Versions.props index c403cd48e0fa..137f17242010 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -168,7 +168,7 @@ 8.0.0-alpha.1.24216.1 - 8.0.0-alpha.1.24163.3 + 8.0.0-alpha.1.24257.2 2.0.0-beta-23228-03 From e3e668fcb129d1e7392503fb34f79f36d1dc92a8 Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" <42748379+dotnet-maestro[bot]@users.noreply.github.com> Date: Thu, 9 May 2024 15:29:09 -0700 Subject: [PATCH 199/391] Update dependencies from https://github.com/dotnet/source-build-externals build 20240506.1 (#55555) Microsoft.SourceBuild.Intermediate.source-build-externals From Version 8.0.0-alpha.1.24216.1 -> To Version 8.0.0-alpha.1.24256.1 Co-authored-by: dotnet-maestro[bot] --- eng/Version.Details.xml | 4 ++-- eng/Versions.props | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 14e0a4b37a59..299178abfe38 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -189,9 +189,9 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime 2d7eea252964e69be94cb9c847b371b23e4dd470 - + https://github.com/dotnet/source-build-externals - 908177a58a41532b3302c17f1e1a8cf1c1234545 + 2b7510ccda2be01e2a2b48598498dca24fb69c3a diff --git a/eng/Versions.props b/eng/Versions.props index 137f17242010..055198d452c9 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -166,7 +166,7 @@ 8.0.0-beta.24204.3 8.0.0-beta.24204.3 - 8.0.0-alpha.1.24216.1 + 8.0.0-alpha.1.24256.1 8.0.0-alpha.1.24257.2 From ba6b2a3d5076df90b198f4143890ff54d02c5d3b Mon Sep 17 00:00:00 2001 From: Will Godbe Date: Thu, 9 May 2024 22:59:56 +0000 Subject: [PATCH 200/391] Merged PR 39446: Add more System.Text.Json references Test build: https://dev.azure.com/dnceng/internal/_build/results?buildId=2447753&view=results --- .../Microsoft.AspNetCore.AzureAppServices.HostingStartup.csproj | 1 + .../Microsoft.AspNetCore.Components.WebAssembly.DevServer.csproj | 1 + .../Microsoft.dotnet-openapi/src/Microsoft.dotnet-openapi.csproj | 1 + src/Tools/dotnet-sql-cache/src/dotnet-sql-cache.csproj | 1 + 4 files changed, 4 insertions(+) diff --git a/src/Azure/AzureAppServices.HostingStartup/src/Microsoft.AspNetCore.AzureAppServices.HostingStartup.csproj b/src/Azure/AzureAppServices.HostingStartup/src/Microsoft.AspNetCore.AzureAppServices.HostingStartup.csproj index dbc464028962..fe1c0f19275e 100644 --- a/src/Azure/AzureAppServices.HostingStartup/src/Microsoft.AspNetCore.AzureAppServices.HostingStartup.csproj +++ b/src/Azure/AzureAppServices.HostingStartup/src/Microsoft.AspNetCore.AzureAppServices.HostingStartup.csproj @@ -13,6 +13,7 @@ + diff --git a/src/Components/WebAssembly/DevServer/src/Microsoft.AspNetCore.Components.WebAssembly.DevServer.csproj b/src/Components/WebAssembly/DevServer/src/Microsoft.AspNetCore.Components.WebAssembly.DevServer.csproj index 8267a699183b..ebd48678889a 100644 --- a/src/Components/WebAssembly/DevServer/src/Microsoft.AspNetCore.Components.WebAssembly.DevServer.csproj +++ b/src/Components/WebAssembly/DevServer/src/Microsoft.AspNetCore.Components.WebAssembly.DevServer.csproj @@ -21,6 +21,7 @@ + diff --git a/src/Tools/Microsoft.dotnet-openapi/src/Microsoft.dotnet-openapi.csproj b/src/Tools/Microsoft.dotnet-openapi/src/Microsoft.dotnet-openapi.csproj index 660d406692e2..3dda9082146e 100644 --- a/src/Tools/Microsoft.dotnet-openapi/src/Microsoft.dotnet-openapi.csproj +++ b/src/Tools/Microsoft.dotnet-openapi/src/Microsoft.dotnet-openapi.csproj @@ -18,6 +18,7 @@ + diff --git a/src/Tools/dotnet-sql-cache/src/dotnet-sql-cache.csproj b/src/Tools/dotnet-sql-cache/src/dotnet-sql-cache.csproj index 91c5ec3c5fe4..d753a475d044 100644 --- a/src/Tools/dotnet-sql-cache/src/dotnet-sql-cache.csproj +++ b/src/Tools/dotnet-sql-cache/src/dotnet-sql-cache.csproj @@ -17,6 +17,7 @@ + From d6c333e067b42cf61218126c3232cfc4c844cde2 Mon Sep 17 00:00:00 2001 From: Brennan Date: Mon, 13 May 2024 11:29:31 -0700 Subject: [PATCH 201/391] Revert "Remove __non_webpack_require__ workaround and split Node dependencies correctly (#48154)" (#55229) This reverts commit 93520b67ad15b45b1fb39fe45fd97c06ebece7e7. --- src/SignalR/clients/ts/signalr/package.json | 9 ---- .../ts/signalr/src/DynamicImports.browser.ts | 22 -------- .../clients/ts/signalr/src/DynamicImports.ts | 54 ------------------- .../clients/ts/signalr/src/FetchHttpClient.ts | 38 +++++++++---- .../clients/ts/signalr/src/HttpConnection.ts | 8 +-- 5 files changed, 33 insertions(+), 98 deletions(-) delete mode 100644 src/SignalR/clients/ts/signalr/src/DynamicImports.browser.ts delete mode 100644 src/SignalR/clients/ts/signalr/src/DynamicImports.ts diff --git a/src/SignalR/clients/ts/signalr/package.json b/src/SignalR/clients/ts/signalr/package.json index db9d0bd3cade..3a4f43382c3a 100644 --- a/src/SignalR/clients/ts/signalr/package.json +++ b/src/SignalR/clients/ts/signalr/package.json @@ -59,14 +59,5 @@ }, "resolutions": { "ansi-regex": "5.0.1" - }, - "browser": { - "./src/DynamicImports.ts": "./src/DynamicImports.browser.ts", - "abort-controller": false, - "eventsource": false, - "fetch-cookie": false, - "node-fetch": false, - "ws": false, - "tough-cookie": false } } diff --git a/src/SignalR/clients/ts/signalr/src/DynamicImports.browser.ts b/src/SignalR/clients/ts/signalr/src/DynamicImports.browser.ts deleted file mode 100644 index 376783f4a4d6..000000000000 --- a/src/SignalR/clients/ts/signalr/src/DynamicImports.browser.ts +++ /dev/null @@ -1,22 +0,0 @@ -// Licensed to the .NET Foundation under one or more agreements. -// The .NET Foundation licenses this file to you under the MIT license. - -/** @private */ -export function configureFetch(): boolean { - return false; -} - -/** @private */ -export function configureAbortController(): boolean { - return false; -} - -/** @private */ -export function getWS(): any { - throw new Error("Trying to import 'ws' in the browser."); -} - -/** @private */ -export function getEventSource(): any { - throw new Error("Trying to import 'eventsource' in the browser."); -} \ No newline at end of file diff --git a/src/SignalR/clients/ts/signalr/src/DynamicImports.ts b/src/SignalR/clients/ts/signalr/src/DynamicImports.ts deleted file mode 100644 index 8ae470578a54..000000000000 --- a/src/SignalR/clients/ts/signalr/src/DynamicImports.ts +++ /dev/null @@ -1,54 +0,0 @@ -// Licensed to the .NET Foundation under one or more agreements. -// The .NET Foundation licenses this file to you under the MIT license. - -// @ts-ignore: This will be removed from built files and is here to make the types available during dev work -import { CookieJar } from "@types/tough-cookie"; -import { Platform } from "./Utils"; - -/** @private */ -export function configureFetch(obj: { _fetchType?: (input: RequestInfo, init?: RequestInit) => Promise, - _jar?: CookieJar }): boolean -{ - // Node added a fetch implementation to the global scope starting in v18. - // We need to add a cookie jar in node to be able to share cookies with WebSocket - if (typeof fetch === "undefined" || Platform.isNode) { - // Cookies aren't automatically handled in Node so we need to add a CookieJar to preserve cookies across requests - // eslint-disable-next-line @typescript-eslint/no-var-requires - obj._jar = new (require("tough-cookie")).CookieJar(); - - if (typeof fetch === "undefined") { - // eslint-disable-next-line @typescript-eslint/no-var-requires - obj._fetchType = require("node-fetch"); - } else { - // Use fetch from Node if available - obj._fetchType = fetch; - } - - // node-fetch doesn't have a nice API for getting and setting cookies - // fetch-cookie will wrap a fetch implementation with a default CookieJar or a provided one - // eslint-disable-next-line @typescript-eslint/no-var-requires - obj._fetchType = require("fetch-cookie")(obj._fetchType, obj._jar); - return true; - } - return false; -} - -/** @private */ -export function configureAbortController(obj: { _abortControllerType: { prototype: AbortController, new(): AbortController } }): boolean { - if (typeof AbortController === "undefined") { - // Node needs EventListener methods on AbortController which our custom polyfill doesn't provide - obj._abortControllerType = require("abort-controller"); - return true; - } - return false; -} - -/** @private */ -export function getWS(): any { - return require("ws"); -} - -/** @private */ -export function getEventSource(): any { - return require("eventsource"); -} \ No newline at end of file diff --git a/src/SignalR/clients/ts/signalr/src/FetchHttpClient.ts b/src/SignalR/clients/ts/signalr/src/FetchHttpClient.ts index 9b26e98c3a78..d6a94fc10239 100644 --- a/src/SignalR/clients/ts/signalr/src/FetchHttpClient.ts +++ b/src/SignalR/clients/ts/signalr/src/FetchHttpClient.ts @@ -8,7 +8,6 @@ import { AbortError, HttpError, TimeoutError } from "./Errors"; import { HttpClient, HttpRequest, HttpResponse } from "./HttpClient"; import { ILogger, LogLevel } from "./ILogger"; import { Platform, getGlobalThis, isArrayBuffer } from "./Utils"; -import { configureAbortController, configureFetch } from "./DynamicImports"; export class FetchHttpClient extends HttpClient { private readonly _abortControllerType: { prototype: AbortController, new(): AbortController }; @@ -21,19 +20,38 @@ export class FetchHttpClient extends HttpClient { super(); this._logger = logger; - // This is how you do "reference" arguments - const fetchObj = { _fetchType: undefined, _jar: undefined }; - if (configureFetch(fetchObj)) { - this._fetchType = fetchObj._fetchType!; - this._jar = fetchObj._jar; + // Node added a fetch implementation to the global scope starting in v18. + // We need to add a cookie jar in node to be able to share cookies with WebSocket + if (typeof fetch === "undefined" || Platform.isNode) { + // In order to ignore the dynamic require in webpack builds we need to do this magic + // @ts-ignore: TS doesn't know about these names + const requireFunc = typeof __webpack_require__ === "function" ? __non_webpack_require__ : require; + + // Cookies aren't automatically handled in Node so we need to add a CookieJar to preserve cookies across requests + this._jar = new (requireFunc("tough-cookie")).CookieJar(); + + if (typeof fetch === "undefined") { + this._fetchType = requireFunc("node-fetch"); + } else { + // Use fetch from Node if available + this._fetchType = fetch; + } + + // node-fetch doesn't have a nice API for getting and setting cookies + // fetch-cookie will wrap a fetch implementation with a default CookieJar or a provided one + this._fetchType = requireFunc("fetch-cookie")(this._fetchType, this._jar); } else { this._fetchType = fetch.bind(getGlobalThis()); } + if (typeof AbortController === "undefined") { + // In order to ignore the dynamic require in webpack builds we need to do this magic + // @ts-ignore: TS doesn't know about these names + const requireFunc = typeof __webpack_require__ === "function" ? __non_webpack_require__ : require; - this._abortControllerType = AbortController; - const abortObj = { _abortControllerType: this._abortControllerType }; - if (configureAbortController(abortObj)) { - this._abortControllerType = abortObj._abortControllerType; + // Node needs EventListener methods on AbortController which our custom polyfill doesn't provide + this._abortControllerType = requireFunc("abort-controller"); + } else { + this._abortControllerType = AbortController; } } diff --git a/src/SignalR/clients/ts/signalr/src/HttpConnection.ts b/src/SignalR/clients/ts/signalr/src/HttpConnection.ts index 3e48a83d61f4..f8397f4d65b5 100644 --- a/src/SignalR/clients/ts/signalr/src/HttpConnection.ts +++ b/src/SignalR/clients/ts/signalr/src/HttpConnection.ts @@ -3,7 +3,6 @@ import { AccessTokenHttpClient } from "./AccessTokenHttpClient"; import { DefaultHttpClient } from "./DefaultHttpClient"; -import { getEventSource, getWS } from "./DynamicImports"; import { AggregateErrors, DisabledTransportError, FailedToNegotiateWithServerError, FailedToStartTransportError, HttpError, UnsupportedTransportError, AbortError } from "./Errors"; import { IConnection } from "./IConnection"; import { IHttpConnectionOptions } from "./IHttpConnectionOptions"; @@ -88,8 +87,11 @@ export class HttpConnection implements IConnection { let eventSourceModule: any = null; if (Platform.isNode && typeof require !== "undefined") { - webSocketModule = getWS(); - eventSourceModule = getEventSource(); + // In order to ignore the dynamic require in webpack builds we need to do this magic + // @ts-ignore: TS doesn't know about these names + const requireFunc = typeof __webpack_require__ === "function" ? __non_webpack_require__ : require; + webSocketModule = requireFunc("ws"); + eventSourceModule = requireFunc("eventsource"); } if (!Platform.isNode && typeof WebSocket !== "undefined" && !options.WebSocket) { From c2f6ade250dd90796f4c17cd104f794b82dd87fd Mon Sep 17 00:00:00 2001 From: wtgodbe Date: Tue, 14 May 2024 16:25:13 -0700 Subject: [PATCH 202/391] Update baseline, SDK --- eng/Baseline.Designer.props | 432 ++++++++++++++++++------------------ eng/Baseline.xml | 212 +++++++++--------- eng/Versions.props | 2 +- global.json | 4 +- 4 files changed, 325 insertions(+), 325 deletions(-) diff --git a/eng/Baseline.Designer.props b/eng/Baseline.Designer.props index 49210d5502a1..a89151e8a015 100644 --- a/eng/Baseline.Designer.props +++ b/eng/Baseline.Designer.props @@ -2,117 +2,117 @@ $(MSBuildAllProjects);$(MSBuildThisFileFullPath) - 8.0.4 + 8.0.5 - 8.0.4 + 8.0.5 - 8.0.4 + 8.0.5 - 8.0.4 + 8.0.5 - 8.0.4 + 8.0.5 - 8.0.4 + 8.0.5 - 8.0.4 + 8.0.5 - 8.0.4 + 8.0.5 - 8.0.4 + 8.0.5 - 8.0.4 + 8.0.5 - 8.0.4 + 8.0.5 - 8.0.4 + 8.0.5 - 8.0.4 + 8.0.5 - 8.0.4 + 8.0.5 - 8.0.4 + 8.0.5 - 8.0.4 + 8.0.5 - 8.0.4 + 8.0.5 - 8.0.4 + 8.0.5 - 8.0.4 + 8.0.5 - 8.0.4 + 8.0.5 - 8.0.4 + 8.0.5 - 8.0.4 + 8.0.5 - + - 8.0.4 + 8.0.5 - 8.0.4 + 8.0.5 - 8.0.4 + 8.0.5 @@ -120,137 +120,137 @@ - 8.0.4 + 8.0.5 - + - + - + - 8.0.4 + 8.0.5 - + - 8.0.4 + 8.0.5 - 8.0.4 + 8.0.5 - + - 8.0.4 + 8.0.5 - - + + - 8.0.4 + 8.0.5 - 8.0.4 + 8.0.5 - - + + - 8.0.4 + 8.0.5 - + - 8.0.4 + 8.0.5 - + - 8.0.4 + 8.0.5 - + - 8.0.4 + 8.0.5 - - + + - 8.0.4 + 8.0.5 - - - + + + - 8.0.4 + 8.0.5 - - + + - 8.0.4 + 8.0.5 - - + + - 8.0.4 + 8.0.5 - 8.0.4 + 8.0.5 - 8.0.4 + 8.0.5 - - + + @@ -258,7 +258,7 @@ - 8.0.4 + 8.0.5 @@ -267,133 +267,133 @@ - 8.0.4 + 8.0.5 - + - + - + - + - 8.0.4 + 8.0.5 - 8.0.4 + 8.0.5 - + - + - + - 8.0.4 + 8.0.5 - - + + - + - - + + - + - - + + - + - 8.0.4 + 8.0.5 - 8.0.4 + 8.0.5 - - + + - 8.0.4 + 8.0.5 - + - + - + - 8.0.4 + 8.0.5 - + - + - + - 8.0.4 + 8.0.5 - + - 8.0.4 + 8.0.5 @@ -402,7 +402,7 @@ - 8.0.4 + 8.0.5 @@ -410,71 +410,71 @@ - 8.0.4 + 8.0.5 - 8.0.4 + 8.0.5 - + - + - + - + - 8.0.4 + 8.0.5 - + - + - + - 8.0.4 + 8.0.5 - - + + - 8.0.4 + 8.0.5 - - + + - 8.0.4 + 8.0.5 @@ -490,27 +490,27 @@ - 8.0.4 + 8.0.5 - 8.0.4 + 8.0.5 - 8.0.4 + 8.0.5 - + - 8.0.4 + 8.0.5 @@ -519,23 +519,23 @@ - 8.0.4 + 8.0.5 - + - 8.0.4 + 8.0.5 - 8.0.4 + 8.0.5 @@ -544,54 +544,54 @@ - 8.0.4 + 8.0.5 - 8.0.4 + 8.0.5 - - + + - - + + - - + + - 8.0.4 + 8.0.5 - - + + - - + + - - + + - - + + @@ -599,83 +599,83 @@ - 8.0.4 + 8.0.5 - + - + - + - 8.0.4 + 8.0.5 - + - + - + - 8.0.4 + 8.0.5 - + - + - + - 8.0.4 + 8.0.5 - + - + - + - 8.0.4 + 8.0.5 - - - - + + + + - 8.0.4 + 8.0.5 @@ -684,64 +684,64 @@ - 8.0.4 + 8.0.5 - 8.0.4 + 8.0.5 - 8.0.4 + 8.0.5 - 8.0.4 + 8.0.5 - + - 8.0.4 + 8.0.5 - + - 8.0.4 + 8.0.5 - 8.0.4 + 8.0.5 - 8.0.4 + 8.0.5 - 8.0.4 + 8.0.5 - 8.0.4 + 8.0.5 - 8.0.4 + 8.0.5 - 8.0.4 + 8.0.5 @@ -763,7 +763,7 @@ - 8.0.4 + 8.0.5 @@ -785,7 +785,7 @@ - 8.0.4 + 8.0.5 @@ -801,23 +801,23 @@ - 8.0.4 + 8.0.5 - + - + - + @@ -825,24 +825,24 @@ - 8.0.4 + 8.0.5 - 8.0.4 + 8.0.5 - - - + + + - 8.0.4 + 8.0.5 - 8.0.4 + 8.0.5 @@ -852,7 +852,7 @@ - 8.0.4 + 8.0.5 @@ -861,73 +861,73 @@ - 8.0.4 + 8.0.5 - + - + - + - 8.0.4 + 8.0.5 - + - + - + - 8.0.4 + 8.0.5 - + - + - + - 8.0.4 + 8.0.5 - 8.0.4 + 8.0.5 @@ -956,11 +956,11 @@ - 8.0.4 + 8.0.5 - 8.0.4 + 8.0.5 @@ -978,18 +978,18 @@ - 8.0.4 + 8.0.5 - 8.0.4 + 8.0.5 - + - 8.0.4 + 8.0.5 diff --git a/eng/Baseline.xml b/eng/Baseline.xml index 110083387ae6..7d886afd31fc 100644 --- a/eng/Baseline.xml +++ b/eng/Baseline.xml @@ -4,110 +4,110 @@ This file contains a list of all the packages and their versions which were rele Update this list when preparing for a new patch. --> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/eng/Versions.props b/eng/Versions.props index 50ae6bac99ee..52f4edb24715 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -11,7 +11,7 @@ 6 - false + true 7.1.2 *-* - + @@ -30,7 +30,7 @@ - + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index f2e08fc373c5..8bdb38439dca 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -11,35 +11,35 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 79322f37015c26b5dc05bee854fcdac1e7042b58 + b5e3d6fd4f2cb30a78bbc275d033dbebfad4bb4c https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 79322f37015c26b5dc05bee854fcdac1e7042b58 + b5e3d6fd4f2cb30a78bbc275d033dbebfad4bb4c https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 79322f37015c26b5dc05bee854fcdac1e7042b58 + b5e3d6fd4f2cb30a78bbc275d033dbebfad4bb4c https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 79322f37015c26b5dc05bee854fcdac1e7042b58 + b5e3d6fd4f2cb30a78bbc275d033dbebfad4bb4c https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 79322f37015c26b5dc05bee854fcdac1e7042b58 + b5e3d6fd4f2cb30a78bbc275d033dbebfad4bb4c https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 79322f37015c26b5dc05bee854fcdac1e7042b58 + b5e3d6fd4f2cb30a78bbc275d033dbebfad4bb4c https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 79322f37015c26b5dc05bee854fcdac1e7042b58 + b5e3d6fd4f2cb30a78bbc275d033dbebfad4bb4c https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 79322f37015c26b5dc05bee854fcdac1e7042b58 + b5e3d6fd4f2cb30a78bbc275d033dbebfad4bb4c https://dev.azure.com/dnceng/internal/_git/dotnet-runtime From 142b847749343babac8e396a5d67b7a8b2910573 Mon Sep 17 00:00:00 2001 From: DotNet-Bot Date: Fri, 17 May 2024 19:29:39 +0000 Subject: [PATCH 204/391] Update dependencies from https://dev.azure.com/dnceng/internal/_git/dotnet-efcore build 20240517.8 dotnet-ef , Microsoft.EntityFrameworkCore , Microsoft.EntityFrameworkCore.Design , Microsoft.EntityFrameworkCore.InMemory , Microsoft.EntityFrameworkCore.Relational , Microsoft.EntityFrameworkCore.Sqlite , Microsoft.EntityFrameworkCore.SqlServer , Microsoft.EntityFrameworkCore.Tools From Version 8.0.6 -> To Version 8.0.6 --- NuGet.config | 4 ++-- eng/Version.Details.xml | 16 ++++++++-------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/NuGet.config b/NuGet.config index 8c1b6e5493e9..cba3d2fd8982 100644 --- a/NuGet.config +++ b/NuGet.config @@ -6,7 +6,7 @@ - + @@ -30,7 +30,7 @@ - + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 8bdb38439dca..5d77d2a498cb 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -11,35 +11,35 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - b5e3d6fd4f2cb30a78bbc275d033dbebfad4bb4c + bcda97958e9c7f9796281c171232698076645e81 https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - b5e3d6fd4f2cb30a78bbc275d033dbebfad4bb4c + bcda97958e9c7f9796281c171232698076645e81 https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - b5e3d6fd4f2cb30a78bbc275d033dbebfad4bb4c + bcda97958e9c7f9796281c171232698076645e81 https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - b5e3d6fd4f2cb30a78bbc275d033dbebfad4bb4c + bcda97958e9c7f9796281c171232698076645e81 https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - b5e3d6fd4f2cb30a78bbc275d033dbebfad4bb4c + bcda97958e9c7f9796281c171232698076645e81 https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - b5e3d6fd4f2cb30a78bbc275d033dbebfad4bb4c + bcda97958e9c7f9796281c171232698076645e81 https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - b5e3d6fd4f2cb30a78bbc275d033dbebfad4bb4c + bcda97958e9c7f9796281c171232698076645e81 https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - b5e3d6fd4f2cb30a78bbc275d033dbebfad4bb4c + bcda97958e9c7f9796281c171232698076645e81 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime From 5ef70788429ca1ccc10d89e9cafde4752fb16f22 Mon Sep 17 00:00:00 2001 From: DotNet Bot Date: Fri, 17 May 2024 23:15:03 +0000 Subject: [PATCH 205/391] Merged PR 39707: [internal/release/8.0] Update dependencies from dnceng/internal/dotnet-efcore This pull request updates the following dependencies [marker]: <> (Begin:e179a2a7-bc5d-4498-2467-08dbd53ba9ce) ## From https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - **Subscription**: e179a2a7-bc5d-4498-2467-08dbd53ba9ce - **Build**: 20240517.12 - **Date Produced**: May 17, 2024 10:07:23 PM UTC - **Commit**: f87585ffdb215ff006620ef20be71d30fe5f6271 - **Branch**: refs/heads/internal/release/8.0 [DependencyUpdate]: <> (Begin) - **Updates**: - **dotnet-ef**: [from 8.0.6 to 8.0.7][1] - **Microsoft.EntityFrameworkCore**: [from 8.0.6 to 8.0.7][1] - **Microsoft.EntityFrameworkCore.Design**: [from 8.0.6 to 8.0.7][1] - **Microsoft.EntityFrameworkCore.InMemory**: [from 8.0.6 to 8.0.7][1] - **Microsoft.EntityFrameworkCore.Relational**: [from 8.0.6 to 8.0.7][1] - **Microsoft.EntityFrameworkCore.Sqlite**: [from 8.0.6 to 8.0.7][1] - **Microsoft.EntityFrameworkCore.SqlServer**: [from 8.0.6 to 8.0.7][1] - **Microsoft.EntityFrameworkCore.Tools**: [from 8.0.6 to 8.0.7][1] [1]: https://dev.azure.com/dnceng/internal/_git/dotnet-efcore/branches?baseVersion=GCbcda97958e9c7f9796281c171232698076645e81&targetVersion=GCf87585ffdb215ff006620ef20be71d30fe5f6271&_a=files [DependencyUpdate]: <> (End) [marker]: <> (End:e179a2a7-bc5d-4498-2467-08dbd53ba9ce) --- NuGet.config | 4 ++-- eng/Version.Details.xml | 32 ++++++++++++++++---------------- eng/Versions.props | 16 ++++++++-------- 3 files changed, 26 insertions(+), 26 deletions(-) diff --git a/NuGet.config b/NuGet.config index cba3d2fd8982..ac22b71466cb 100644 --- a/NuGet.config +++ b/NuGet.config @@ -6,7 +6,7 @@ - + @@ -30,7 +30,7 @@ - + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 5d77d2a498cb..279409867c70 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -9,37 +9,37 @@ --> - + https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - bcda97958e9c7f9796281c171232698076645e81 + f87585ffdb215ff006620ef20be71d30fe5f6271 - + https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - bcda97958e9c7f9796281c171232698076645e81 + f87585ffdb215ff006620ef20be71d30fe5f6271 - + https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - bcda97958e9c7f9796281c171232698076645e81 + f87585ffdb215ff006620ef20be71d30fe5f6271 - + https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - bcda97958e9c7f9796281c171232698076645e81 + f87585ffdb215ff006620ef20be71d30fe5f6271 - + https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - bcda97958e9c7f9796281c171232698076645e81 + f87585ffdb215ff006620ef20be71d30fe5f6271 - + https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - bcda97958e9c7f9796281c171232698076645e81 + f87585ffdb215ff006620ef20be71d30fe5f6271 - + https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - bcda97958e9c7f9796281c171232698076645e81 + f87585ffdb215ff006620ef20be71d30fe5f6271 - + https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - bcda97958e9c7f9796281c171232698076645e81 + f87585ffdb215ff006620ef20be71d30fe5f6271 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime diff --git a/eng/Versions.props b/eng/Versions.props index f46ac8f1663d..ab8e70ed57f5 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -143,14 +143,14 @@ 8.1.0-preview.23604.1 8.1.0-preview.23604.1 - 8.0.6 - 8.0.6 - 8.0.6 - 8.0.6 - 8.0.6 - 8.0.6 - 8.0.6 - 8.0.6 + 8.0.7 + 8.0.7 + 8.0.7 + 8.0.7 + 8.0.7 + 8.0.7 + 8.0.7 + 8.0.7 4.8.0-3.23518.7 4.8.0-3.23518.7 From aa6b3d420ca47bc7362606dd8a43e37c9f52dd1e Mon Sep 17 00:00:00 2001 From: DotNet Bot Date: Sat, 18 May 2024 04:51:31 +0000 Subject: [PATCH 206/391] Merged PR 39726: [internal/release/8.0] Update dependencies from dnceng/internal/dotnet-efcore, dnceng/internal/dotnet-runtime This pull request updates the following dependencies [marker]: <> (Begin:83131e87-e80d-4d5b-f426-08dbd53b3319) ## From https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - **Subscription**: 83131e87-e80d-4d5b-f426-08dbd53b3319 - **Build**: 20240517.24 - **Date Produced**: May 18, 2024 12:46:12 AM UTC - **Commit**: cb4ec67fd1784497c953f65bfc390eb8bfdf6c6b - **Branch**: refs/heads/internal/release/8.0 [DependencyUpdate]: <> (Begin) - **Updates**: - **Microsoft.Extensions.Configuration.Binder**: [from 8.0.2 to 8.0.2][1] - **Microsoft.Extensions.Configuration.FileExtensions**: [from 8.0.1 to 8.0.1][1] - **Microsoft.Extensions.DependencyModel**: [from 8.0.1 to 8.0.1][1] - **Microsoft.Extensions.HostFactoryResolver.Sources**: [from 8.0.6-servicing.24253.6 to 8.0.7-servicing.24267.24][1] - **Microsoft.Internal.Runtime.AspNetCore.Transport**: [from 8.0.6-servicing.24253.6 to 8.0.7-servicing.24267.24][1] - **Microsoft.NET.Runtime.MonoAOTCompiler.Task**: [from 8.0.6 to 8.0.7][1] - **Microsoft.NET.Runtime.WebAssembly.Sdk**: [from 8.0.6 to 8.0.7][1] - **Microsoft.NETCore.App.Ref**: [from 8.0.6 to 8.0.7][1] - **Microsoft.NETCore.App.Runtime.AOT.win-x64.Cross.browser-wasm**: [from 8.0.6 to 8.0.7][1] - **Microsoft.NETCore.App.Runtime.win-x64**: [from 8.0.6 to 8.0.7][1] - **Microsoft.NETCore.BrowserDebugHost.Transport**: [from 8.0.6-servicing.24253.6 to 8.0.7-servicing.24267.24][1] - **Microsoft.NETCore.Platforms**: [from 8.0.6-servicing.24253.6 to 8.0.7-servicing.24267.24][1] - **System.Security.Cryptography.Xml**: [from 8.0.1 to 8.0.1][1] - **System.Text.Json**: [from 8.0.4 to 8.0.4][1] - **Microsoft.SourceBuild.Intermediate.runtime.linux-x64**: [from 8.0.6-servicing.24253.6 to 8.0.7-servicing.24267.24][1] [1]: https://dev.azure.com/dnceng/internal/_git/dotnet-runtime/branches?baseVersion=GCfa5b0d8f4a8b424732cc992158aa92842f8a2846&targetVersion=GCcb4ec67fd1784497c953f65bfc390eb8bfdf6c6b&_a=files [DependencyUpdate]: <> (End) [marker]: <> (End:83131e87-e80d-4d5b-f426-08dbd53b3319) [marker]: <> (Begin:e179a2a7-bc5d-4498-2467-08dbd53ba9ce) ## From https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - **Subscription**: e179a2a7-bc5d-4498-2467-08dbd53ba9ce - **Build**: 20240517.14 - **Date Produced**: May 18, 2024 2:59:38 AM UTC - **Commit**: b3a7017957b0f21a0fb5ff610b708319f5a71b5a - **Branch**: refs/heads/internal/release/8.0 [DependencyUpdate]: <> (Begin) - **Updates**: - **dotnet-ef**: [from 8.0.7 to 8.0.7][2] - **Microsoft.EntityFrameworkCore**: [from 8.0.7 to 8.0.7][2] - **Microsoft.EntityFrameworkCore.Design**: [from 8.0.7 to 8.0.7][2] - **Microsoft.EntityFrameworkCore.InMemory**: [from 8.0.7 to 8.0.7][2] - **Microsoft.EntityFrameworkCore.Relational**: [from 8.0.7 to 8.0.7][2] - **Microsoft.EntityFrameworkCore.Sqlite**: [from 8.0.7 to 8.0.7][2] - **Microsoft.EntityFrameworkCore.SqlServer**: [from 8.0.7 to 8.0.7][2] - **Microsoft.Entity... --- NuGet.config | 8 ++--- eng/Version.Details.xml | 66 ++++++++++++++++++++--------------------- eng/Versions.props | 20 ++++++------- 3 files changed, 47 insertions(+), 47 deletions(-) diff --git a/NuGet.config b/NuGet.config index ac22b71466cb..b109ebba5e9b 100644 --- a/NuGet.config +++ b/NuGet.config @@ -6,10 +6,10 @@ - + - + @@ -30,10 +30,10 @@ - + - + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 279409867c70..090cb0f5e7c9 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -11,35 +11,35 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - f87585ffdb215ff006620ef20be71d30fe5f6271 + b3a7017957b0f21a0fb5ff610b708319f5a71b5a https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - f87585ffdb215ff006620ef20be71d30fe5f6271 + b3a7017957b0f21a0fb5ff610b708319f5a71b5a https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - f87585ffdb215ff006620ef20be71d30fe5f6271 + b3a7017957b0f21a0fb5ff610b708319f5a71b5a https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - f87585ffdb215ff006620ef20be71d30fe5f6271 + b3a7017957b0f21a0fb5ff610b708319f5a71b5a https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - f87585ffdb215ff006620ef20be71d30fe5f6271 + b3a7017957b0f21a0fb5ff610b708319f5a71b5a https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - f87585ffdb215ff006620ef20be71d30fe5f6271 + b3a7017957b0f21a0fb5ff610b708319f5a71b5a https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - f87585ffdb215ff006620ef20be71d30fe5f6271 + b3a7017957b0f21a0fb5ff610b708319f5a71b5a https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - f87585ffdb215ff006620ef20be71d30fe5f6271 + b3a7017957b0f21a0fb5ff610b708319f5a71b5a https://dev.azure.com/dnceng/internal/_git/dotnet-runtime @@ -55,7 +55,7 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - fa5b0d8f4a8b424732cc992158aa92842f8a2846 + cb4ec67fd1784497c953f65bfc390eb8bfdf6c6b https://dev.azure.com/dnceng/internal/_git/dotnet-runtime @@ -67,7 +67,7 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - fa5b0d8f4a8b424732cc992158aa92842f8a2846 + cb4ec67fd1784497c953f65bfc390eb8bfdf6c6b https://dev.azure.com/dnceng/internal/_git/dotnet-runtime @@ -121,9 +121,9 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime 5535e31a712343a63f5d7d796cd874e563e5ac14 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - fa5b0d8f4a8b424732cc992158aa92842f8a2846 + cb4ec67fd1784497c953f65bfc390eb8bfdf6c6b https://dev.azure.com/dnceng/internal/_git/dotnet-runtime @@ -185,9 +185,9 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime 5535e31a712343a63f5d7d796cd874e563e5ac14 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - fa5b0d8f4a8b424732cc992158aa92842f8a2846 + cb4ec67fd1784497c953f65bfc390eb8bfdf6c6b https://github.com/dotnet/source-build-externals @@ -241,7 +241,7 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - fa5b0d8f4a8b424732cc992158aa92842f8a2846 + cb4ec67fd1784497c953f65bfc390eb8bfdf6c6b https://dev.azure.com/dnceng/internal/_git/dotnet-runtime @@ -257,7 +257,7 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - fa5b0d8f4a8b424732cc992158aa92842f8a2846 + cb4ec67fd1784497c953f65bfc390eb8bfdf6c6b https://dev.azure.com/dnceng/internal/_git/dotnet-runtime @@ -273,19 +273,19 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - fa5b0d8f4a8b424732cc992158aa92842f8a2846 + cb4ec67fd1784497c953f65bfc390eb8bfdf6c6b - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - fa5b0d8f4a8b424732cc992158aa92842f8a2846 + cb4ec67fd1784497c953f65bfc390eb8bfdf6c6b - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - fa5b0d8f4a8b424732cc992158aa92842f8a2846 + cb4ec67fd1784497c953f65bfc390eb8bfdf6c6b - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - fa5b0d8f4a8b424732cc992158aa92842f8a2846 + cb4ec67fd1784497c953f65bfc390eb8bfdf6c6b https://dev.azure.com/dnceng/internal/_git/dotnet-runtime @@ -316,22 +316,22 @@ Win-x64 is used here because we have picked an arbitrary runtime identifier to flow the version of the latest NETCore.App runtime. All Runtime.$rid packages should have the same version. --> - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - fa5b0d8f4a8b424732cc992158aa92842f8a2846 + cb4ec67fd1784497c953f65bfc390eb8bfdf6c6b - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - fa5b0d8f4a8b424732cc992158aa92842f8a2846 + cb4ec67fd1784497c953f65bfc390eb8bfdf6c6b - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - fa5b0d8f4a8b424732cc992158aa92842f8a2846 + cb4ec67fd1784497c953f65bfc390eb8bfdf6c6b - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - fa5b0d8f4a8b424732cc992158aa92842f8a2846 + cb4ec67fd1784497c953f65bfc390eb8bfdf6c6b https://github.com/dotnet/xdt @@ -368,9 +368,9 @@ - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - fa5b0d8f4a8b424732cc992158aa92842f8a2846 + cb4ec67fd1784497c953f65bfc390eb8bfdf6c6b https://github.com/dotnet/winforms diff --git a/eng/Versions.props b/eng/Versions.props index ab8e70ed57f5..ee38f6c6395f 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -67,12 +67,12 @@ 8.0.1 - 8.0.6 - 8.0.6 - 8.0.6 - 8.0.6 - 8.0.6 - 8.0.6-servicing.24253.6 + 8.0.7 + 8.0.7 + 8.0.7 + 8.0.7 + 8.0.7 + 8.0.7-servicing.24267.24 8.0.0 8.0.0 8.0.0 @@ -93,7 +93,7 @@ 8.0.0 8.0.0 8.0.0 - 8.0.6-servicing.24253.6 + 8.0.7-servicing.24267.24 8.0.0 8.0.0 8.0.0 @@ -109,7 +109,7 @@ 8.0.0 8.0.2 8.0.0 - 8.0.6-servicing.24253.6 + 8.0.7-servicing.24267.24 8.0.0 8.0.1 8.0.0 @@ -129,9 +129,9 @@ 8.0.0 8.0.0 8.0.0 - 8.0.6-servicing.24253.6 + 8.0.7-servicing.24267.24 - 8.0.6-servicing.24253.6 + 8.0.7-servicing.24267.24 8.0.0 8.0.1 From a1af44bd53fa27448c1535ebcab74fa20179f259 Mon Sep 17 00:00:00 2001 From: vseanreesermsft <78103370+vseanreesermsft@users.noreply.github.com> Date: Mon, 20 May 2024 11:18:37 -0700 Subject: [PATCH 207/391] Update branding to 8.0.7 (#55759) --- eng/Versions.props | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/eng/Versions.props b/eng/Versions.props index 52f4edb24715..85cf989b9934 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -8,10 +8,10 @@ 8 0 - 6 + 7 - true + false 7.1.2 *-* - + @@ -30,7 +30,7 @@ - + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 090cb0f5e7c9..fe7f1225a854 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -11,35 +11,35 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - b3a7017957b0f21a0fb5ff610b708319f5a71b5a + 1b046b4dd8ba051569eaf0e5a5dc6fc47156a1de https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - b3a7017957b0f21a0fb5ff610b708319f5a71b5a + 1b046b4dd8ba051569eaf0e5a5dc6fc47156a1de https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - b3a7017957b0f21a0fb5ff610b708319f5a71b5a + 1b046b4dd8ba051569eaf0e5a5dc6fc47156a1de https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - b3a7017957b0f21a0fb5ff610b708319f5a71b5a + 1b046b4dd8ba051569eaf0e5a5dc6fc47156a1de https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - b3a7017957b0f21a0fb5ff610b708319f5a71b5a + 1b046b4dd8ba051569eaf0e5a5dc6fc47156a1de https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - b3a7017957b0f21a0fb5ff610b708319f5a71b5a + 1b046b4dd8ba051569eaf0e5a5dc6fc47156a1de https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - b3a7017957b0f21a0fb5ff610b708319f5a71b5a + 1b046b4dd8ba051569eaf0e5a5dc6fc47156a1de https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - b3a7017957b0f21a0fb5ff610b708319f5a71b5a + 1b046b4dd8ba051569eaf0e5a5dc6fc47156a1de https://dev.azure.com/dnceng/internal/_git/dotnet-runtime From 1e33c982e28ad7b6367533b1644a0ee6b04da1fb Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" <42748379+dotnet-maestro[bot]@users.noreply.github.com> Date: Mon, 20 May 2024 11:38:16 -0700 Subject: [PATCH 209/391] Update dependencies from https://github.com/dotnet/arcade build 20240516.3 (#55796) Microsoft.DotNet.Arcade.Sdk , Microsoft.DotNet.Build.Tasks.Installers , Microsoft.DotNet.Build.Tasks.Templating , Microsoft.DotNet.Helix.Sdk , Microsoft.DotNet.RemoteExecutor From Version 8.0.0-beta.24204.3 -> To Version 8.0.0-beta.24266.3 Co-authored-by: dotnet-maestro[bot] --- NuGet.config | 4 -- eng/Version.Details.xml | 20 ++++---- eng/Versions.props | 6 +-- .../job/source-index-stage1.yml | 49 +++++++++++++------ .../templates/job/source-index-stage1.yml | 44 ++++++++++++----- global.json | 4 +- 6 files changed, 79 insertions(+), 48 deletions(-) diff --git a/NuGet.config b/NuGet.config index a67fb5e3b1f1..1c2f27eb90ce 100644 --- a/NuGet.config +++ b/NuGet.config @@ -6,10 +6,8 @@ - - @@ -30,10 +28,8 @@ - - diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index ddd0576df75e..d213589f4935 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -376,26 +376,26 @@ https://github.com/dotnet/winforms abda8e3bfa78319363526b5a5f86863ec979940e - + https://github.com/dotnet/arcade - 188340e12c0a372b1681ad6a5e72c608021efdba + e6f70c7dd528f05cd28cec2a179d58c22e91d9ac - + https://github.com/dotnet/arcade - 188340e12c0a372b1681ad6a5e72c608021efdba + e6f70c7dd528f05cd28cec2a179d58c22e91d9ac - + https://github.com/dotnet/arcade - 188340e12c0a372b1681ad6a5e72c608021efdba + e6f70c7dd528f05cd28cec2a179d58c22e91d9ac - + https://github.com/dotnet/arcade - 188340e12c0a372b1681ad6a5e72c608021efdba + e6f70c7dd528f05cd28cec2a179d58c22e91d9ac - + https://github.com/dotnet/arcade - 188340e12c0a372b1681ad6a5e72c608021efdba + e6f70c7dd528f05cd28cec2a179d58c22e91d9ac https://github.com/dotnet/extensions diff --git a/eng/Versions.props b/eng/Versions.props index 85cf989b9934..7b1d05748214 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -162,9 +162,9 @@ 6.2.4 6.2.4 - 8.0.0-beta.24204.3 - 8.0.0-beta.24204.3 - 8.0.0-beta.24204.3 + 8.0.0-beta.24266.3 + 8.0.0-beta.24266.3 + 8.0.0-beta.24266.3 8.0.0-alpha.1.24256.1 diff --git a/eng/common/templates-official/job/source-index-stage1.yml b/eng/common/templates-official/job/source-index-stage1.yml index f0513aee5b0d..43ee0c202fc7 100644 --- a/eng/common/templates-official/job/source-index-stage1.yml +++ b/eng/common/templates-official/job/source-index-stage1.yml @@ -1,6 +1,7 @@ parameters: runAsPublic: false - sourceIndexPackageVersion: 1.0.1-20230228.2 + sourceIndexUploadPackageVersion: 2.0.0-20240502.12 + sourceIndexProcessBinlogPackageVersion: 1.0.1-20240129.2 sourceIndexPackageSource: https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-tools/nuget/v3/index.json sourceIndexBuildCommand: powershell -NoLogo -NoProfile -ExecutionPolicy Bypass -Command "eng/common/build.ps1 -restore -build -binarylog -ci" preSteps: [] @@ -14,15 +15,15 @@ jobs: dependsOn: ${{ parameters.dependsOn }} condition: ${{ parameters.condition }} variables: - - name: SourceIndexPackageVersion - value: ${{ parameters.sourceIndexPackageVersion }} + - name: SourceIndexUploadPackageVersion + value: ${{ parameters.sourceIndexUploadPackageVersion }} + - name: SourceIndexProcessBinlogPackageVersion + value: ${{ parameters.sourceIndexProcessBinlogPackageVersion }} - name: SourceIndexPackageSource value: ${{ parameters.sourceIndexPackageSource }} - name: BinlogPath value: ${{ parameters.binlogPath }} - - ${{ if and(eq(parameters.runAsPublic, 'false'), ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}: - - group: source-dot-net stage1 variables - - template: /eng/common/templates-official/variables/pool-providers.yml + - template: /eng/common/templates/variables/pool-providers.yml ${{ if ne(parameters.pool, '') }}: pool: ${{ parameters.pool }} @@ -33,24 +34,23 @@ jobs: demands: ImageOverride -equals windows.vs2019.amd64.open ${{ if eq(variables['System.TeamProject'], 'internal') }}: name: $(DncEngInternalBuildPool) - image: windows.vs2022.amd64 - os: windows + demands: ImageOverride -equals windows.vs2019.amd64 steps: - ${{ each preStep in parameters.preSteps }}: - ${{ preStep }} - task: UseDotNet@2 - displayName: Use .NET Core SDK 6 + displayName: Use .NET 8 SDK inputs: packageType: sdk - version: 6.0.x + version: 8.0.x installationPath: $(Agent.TempDirectory)/dotnet workingDirectory: $(Agent.TempDirectory) - script: | - $(Agent.TempDirectory)/dotnet/dotnet tool install BinLogToSln --version $(SourceIndexPackageVersion) --add-source $(SourceIndexPackageSource) --tool-path $(Agent.TempDirectory)/.source-index/tools - $(Agent.TempDirectory)/dotnet/dotnet tool install UploadIndexStage1 --version $(SourceIndexPackageVersion) --add-source $(SourceIndexPackageSource) --tool-path $(Agent.TempDirectory)/.source-index/tools + $(Agent.TempDirectory)/dotnet/dotnet tool install BinLogToSln --version $(sourceIndexProcessBinlogPackageVersion) --add-source $(SourceIndexPackageSource) --tool-path $(Agent.TempDirectory)/.source-index/tools + $(Agent.TempDirectory)/dotnet/dotnet tool install UploadIndexStage1 --version $(sourceIndexUploadPackageVersion) --add-source $(SourceIndexPackageSource) --tool-path $(Agent.TempDirectory)/.source-index/tools displayName: Download Tools # Set working directory to temp directory so 'dotnet' doesn't try to use global.json and use the repo's sdk. workingDirectory: $(Agent.TempDirectory) @@ -62,7 +62,24 @@ jobs: displayName: Process Binlog into indexable sln - ${{ if and(eq(parameters.runAsPublic, 'false'), ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}: - - script: $(Agent.TempDirectory)/.source-index/tools/UploadIndexStage1 -i .source-index/stage1output -n $(Build.Repository.Name) - displayName: Upload stage1 artifacts to source index - env: - BLOB_CONTAINER_URL: $(source-dot-net-stage1-blob-container-url) + - task: AzureCLI@2 + displayName: Get stage 1 auth token + inputs: + azureSubscription: 'SourceDotNet Stage1 Publish' + addSpnToEnvironment: true + scriptType: 'ps' + scriptLocation: 'inlineScript' + inlineScript: | + echo "##vso[task.setvariable variable=ARM_CLIENT_ID]$env:servicePrincipalId" + echo "##vso[task.setvariable variable=ARM_ID_TOKEN]$env:idToken" + echo "##vso[task.setvariable variable=ARM_TENANT_ID]$env:tenantId" + + - script: | + echo "Client ID: $(ARM_CLIENT_ID)" + echo "ID Token: $(ARM_ID_TOKEN)" + echo "Tenant ID: $(ARM_TENANT_ID)" + az login --service-principal -u $(ARM_CLIENT_ID) --tenant $(ARM_TENANT_ID) --allow-no-subscriptions --federated-token $(ARM_ID_TOKEN) + displayName: "Login to Azure" + + - script: $(Agent.TempDirectory)/.source-index/tools/UploadIndexStage1 -i .source-index/stage1output -n $(Build.Repository.Name) -s netsourceindexstage1 -b stage1 + displayName: Upload stage1 artifacts to source index \ No newline at end of file diff --git a/eng/common/templates/job/source-index-stage1.yml b/eng/common/templates/job/source-index-stage1.yml index b98202aa02d8..43ee0c202fc7 100644 --- a/eng/common/templates/job/source-index-stage1.yml +++ b/eng/common/templates/job/source-index-stage1.yml @@ -1,6 +1,7 @@ parameters: runAsPublic: false - sourceIndexPackageVersion: 1.0.1-20230228.2 + sourceIndexUploadPackageVersion: 2.0.0-20240502.12 + sourceIndexProcessBinlogPackageVersion: 1.0.1-20240129.2 sourceIndexPackageSource: https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-tools/nuget/v3/index.json sourceIndexBuildCommand: powershell -NoLogo -NoProfile -ExecutionPolicy Bypass -Command "eng/common/build.ps1 -restore -build -binarylog -ci" preSteps: [] @@ -14,14 +15,14 @@ jobs: dependsOn: ${{ parameters.dependsOn }} condition: ${{ parameters.condition }} variables: - - name: SourceIndexPackageVersion - value: ${{ parameters.sourceIndexPackageVersion }} + - name: SourceIndexUploadPackageVersion + value: ${{ parameters.sourceIndexUploadPackageVersion }} + - name: SourceIndexProcessBinlogPackageVersion + value: ${{ parameters.sourceIndexProcessBinlogPackageVersion }} - name: SourceIndexPackageSource value: ${{ parameters.sourceIndexPackageSource }} - name: BinlogPath value: ${{ parameters.binlogPath }} - - ${{ if and(eq(parameters.runAsPublic, 'false'), ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}: - - group: source-dot-net stage1 variables - template: /eng/common/templates/variables/pool-providers.yml ${{ if ne(parameters.pool, '') }}: @@ -40,16 +41,16 @@ jobs: - ${{ preStep }} - task: UseDotNet@2 - displayName: Use .NET Core SDK 6 + displayName: Use .NET 8 SDK inputs: packageType: sdk - version: 6.0.x + version: 8.0.x installationPath: $(Agent.TempDirectory)/dotnet workingDirectory: $(Agent.TempDirectory) - script: | - $(Agent.TempDirectory)/dotnet/dotnet tool install BinLogToSln --version $(SourceIndexPackageVersion) --add-source $(SourceIndexPackageSource) --tool-path $(Agent.TempDirectory)/.source-index/tools - $(Agent.TempDirectory)/dotnet/dotnet tool install UploadIndexStage1 --version $(SourceIndexPackageVersion) --add-source $(SourceIndexPackageSource) --tool-path $(Agent.TempDirectory)/.source-index/tools + $(Agent.TempDirectory)/dotnet/dotnet tool install BinLogToSln --version $(sourceIndexProcessBinlogPackageVersion) --add-source $(SourceIndexPackageSource) --tool-path $(Agent.TempDirectory)/.source-index/tools + $(Agent.TempDirectory)/dotnet/dotnet tool install UploadIndexStage1 --version $(sourceIndexUploadPackageVersion) --add-source $(SourceIndexPackageSource) --tool-path $(Agent.TempDirectory)/.source-index/tools displayName: Download Tools # Set working directory to temp directory so 'dotnet' doesn't try to use global.json and use the repo's sdk. workingDirectory: $(Agent.TempDirectory) @@ -61,7 +62,24 @@ jobs: displayName: Process Binlog into indexable sln - ${{ if and(eq(parameters.runAsPublic, 'false'), ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}: - - script: $(Agent.TempDirectory)/.source-index/tools/UploadIndexStage1 -i .source-index/stage1output -n $(Build.Repository.Name) - displayName: Upload stage1 artifacts to source index - env: - BLOB_CONTAINER_URL: $(source-dot-net-stage1-blob-container-url) + - task: AzureCLI@2 + displayName: Get stage 1 auth token + inputs: + azureSubscription: 'SourceDotNet Stage1 Publish' + addSpnToEnvironment: true + scriptType: 'ps' + scriptLocation: 'inlineScript' + inlineScript: | + echo "##vso[task.setvariable variable=ARM_CLIENT_ID]$env:servicePrincipalId" + echo "##vso[task.setvariable variable=ARM_ID_TOKEN]$env:idToken" + echo "##vso[task.setvariable variable=ARM_TENANT_ID]$env:tenantId" + + - script: | + echo "Client ID: $(ARM_CLIENT_ID)" + echo "ID Token: $(ARM_ID_TOKEN)" + echo "Tenant ID: $(ARM_TENANT_ID)" + az login --service-principal -u $(ARM_CLIENT_ID) --tenant $(ARM_TENANT_ID) --allow-no-subscriptions --federated-token $(ARM_ID_TOKEN) + displayName: "Login to Azure" + + - script: $(Agent.TempDirectory)/.source-index/tools/UploadIndexStage1 -i .source-index/stage1output -n $(Build.Repository.Name) -s netsourceindexstage1 -b stage1 + displayName: Upload stage1 artifacts to source index \ No newline at end of file diff --git a/global.json b/global.json index f9f458b5413b..bfd92fee2223 100644 --- a/global.json +++ b/global.json @@ -27,7 +27,7 @@ }, "msbuild-sdks": { "Yarn.MSBuild": "1.22.19", - "Microsoft.DotNet.Arcade.Sdk": "8.0.0-beta.24204.3", - "Microsoft.DotNet.Helix.Sdk": "8.0.0-beta.24204.3" + "Microsoft.DotNet.Arcade.Sdk": "8.0.0-beta.24266.3", + "Microsoft.DotNet.Helix.Sdk": "8.0.0-beta.24266.3" } } From 0b462a402736844d26639ebd49950f2badb9c9f0 Mon Sep 17 00:00:00 2001 From: DotNet-Bot Date: Mon, 20 May 2024 23:13:36 +0000 Subject: [PATCH 210/391] Update dependencies from https://dev.azure.com/dnceng/internal/_git/dotnet-runtime build 20240520.7 Microsoft.Extensions.Configuration.Binder , Microsoft.Extensions.Configuration.FileExtensions , Microsoft.Extensions.DependencyModel , Microsoft.Extensions.HostFactoryResolver.Sources , Microsoft.Internal.Runtime.AspNetCore.Transport , Microsoft.NET.Runtime.MonoAOTCompiler.Task , Microsoft.NET.Runtime.WebAssembly.Sdk , Microsoft.NETCore.App.Ref , Microsoft.NETCore.App.Runtime.AOT.win-x64.Cross.browser-wasm , Microsoft.NETCore.App.Runtime.win-x64 , Microsoft.NETCore.BrowserDebugHost.Transport , Microsoft.NETCore.Platforms , System.Security.Cryptography.Xml , System.Text.Json , Microsoft.SourceBuild.Intermediate.runtime.linux-x64 From Version 8.0.2 -> To Version 8.0.2 --- NuGet.config | 4 ++-- eng/Version.Details.xml | 40 ++++++++++++++++++++-------------------- eng/Versions.props | 10 +++++----- 3 files changed, 27 insertions(+), 27 deletions(-) diff --git a/NuGet.config b/NuGet.config index 7edcb47f2675..43ace9a91375 100644 --- a/NuGet.config +++ b/NuGet.config @@ -9,7 +9,7 @@ - + @@ -33,7 +33,7 @@ - + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 7d0634d71aa0..67ceaa7e3346 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -55,7 +55,7 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - cb4ec67fd1784497c953f65bfc390eb8bfdf6c6b + 6d230cdb65dee13db6779749580d02bcd413af70 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime @@ -67,7 +67,7 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - cb4ec67fd1784497c953f65bfc390eb8bfdf6c6b + 6d230cdb65dee13db6779749580d02bcd413af70 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime @@ -121,9 +121,9 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime 5535e31a712343a63f5d7d796cd874e563e5ac14 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - cb4ec67fd1784497c953f65bfc390eb8bfdf6c6b + 6d230cdb65dee13db6779749580d02bcd413af70 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime @@ -185,9 +185,9 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime 5535e31a712343a63f5d7d796cd874e563e5ac14 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - cb4ec67fd1784497c953f65bfc390eb8bfdf6c6b + 6d230cdb65dee13db6779749580d02bcd413af70 https://github.com/dotnet/source-build-externals @@ -241,7 +241,7 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - cb4ec67fd1784497c953f65bfc390eb8bfdf6c6b + 6d230cdb65dee13db6779749580d02bcd413af70 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime @@ -257,7 +257,7 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - cb4ec67fd1784497c953f65bfc390eb8bfdf6c6b + 6d230cdb65dee13db6779749580d02bcd413af70 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime @@ -273,19 +273,19 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - cb4ec67fd1784497c953f65bfc390eb8bfdf6c6b + 6d230cdb65dee13db6779749580d02bcd413af70 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - cb4ec67fd1784497c953f65bfc390eb8bfdf6c6b + 6d230cdb65dee13db6779749580d02bcd413af70 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - cb4ec67fd1784497c953f65bfc390eb8bfdf6c6b + 6d230cdb65dee13db6779749580d02bcd413af70 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - cb4ec67fd1784497c953f65bfc390eb8bfdf6c6b + 6d230cdb65dee13db6779749580d02bcd413af70 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime @@ -318,20 +318,20 @@ --> https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - cb4ec67fd1784497c953f65bfc390eb8bfdf6c6b + 6d230cdb65dee13db6779749580d02bcd413af70 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - cb4ec67fd1784497c953f65bfc390eb8bfdf6c6b + 6d230cdb65dee13db6779749580d02bcd413af70 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - cb4ec67fd1784497c953f65bfc390eb8bfdf6c6b + 6d230cdb65dee13db6779749580d02bcd413af70 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - cb4ec67fd1784497c953f65bfc390eb8bfdf6c6b + 6d230cdb65dee13db6779749580d02bcd413af70 https://github.com/dotnet/xdt @@ -368,9 +368,9 @@ - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - cb4ec67fd1784497c953f65bfc390eb8bfdf6c6b + 6d230cdb65dee13db6779749580d02bcd413af70 https://github.com/dotnet/winforms diff --git a/eng/Versions.props b/eng/Versions.props index 4882877bc2e5..d7c4c6e3c652 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -72,7 +72,7 @@ 8.0.7 8.0.7 8.0.7 - 8.0.7-servicing.24267.24 + 8.0.7-servicing.24270.7 8.0.0 8.0.0 8.0.0 @@ -93,7 +93,7 @@ 8.0.0 8.0.0 8.0.0 - 8.0.7-servicing.24267.24 + 8.0.7-servicing.24270.7 8.0.0 8.0.0 8.0.0 @@ -109,7 +109,7 @@ 8.0.0 8.0.2 8.0.0 - 8.0.7-servicing.24267.24 + 8.0.7-servicing.24270.7 8.0.0 8.0.1 8.0.0 @@ -129,9 +129,9 @@ 8.0.0 8.0.0 8.0.0 - 8.0.7-servicing.24267.24 + 8.0.7-servicing.24270.7 - 8.0.7-servicing.24267.24 + 8.0.7-servicing.24270.7 8.0.0 8.0.1 From 20436bf9d92d82ab3336c1461c90c06c1b688377 Mon Sep 17 00:00:00 2001 From: DotNet-Bot Date: Tue, 21 May 2024 01:08:23 +0000 Subject: [PATCH 211/391] Update dependencies from https://dev.azure.com/dnceng/internal/_git/dotnet-efcore build 20240520.7 dotnet-ef , Microsoft.EntityFrameworkCore , Microsoft.EntityFrameworkCore.Design , Microsoft.EntityFrameworkCore.InMemory , Microsoft.EntityFrameworkCore.Relational , Microsoft.EntityFrameworkCore.Sqlite , Microsoft.EntityFrameworkCore.SqlServer , Microsoft.EntityFrameworkCore.Tools From Version 8.0.7 -> To Version 8.0.7 --- NuGet.config | 4 ++-- eng/Version.Details.xml | 16 ++++++++-------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/NuGet.config b/NuGet.config index 43ace9a91375..f80054a3c02a 100644 --- a/NuGet.config +++ b/NuGet.config @@ -6,7 +6,7 @@ - + @@ -30,7 +30,7 @@ - + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 67ceaa7e3346..223afdbed4b3 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -11,35 +11,35 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 1b046b4dd8ba051569eaf0e5a5dc6fc47156a1de + e60bce54547ab8c7f4238d46ad43a49d289d9c76 https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 1b046b4dd8ba051569eaf0e5a5dc6fc47156a1de + e60bce54547ab8c7f4238d46ad43a49d289d9c76 https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 1b046b4dd8ba051569eaf0e5a5dc6fc47156a1de + e60bce54547ab8c7f4238d46ad43a49d289d9c76 https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 1b046b4dd8ba051569eaf0e5a5dc6fc47156a1de + e60bce54547ab8c7f4238d46ad43a49d289d9c76 https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 1b046b4dd8ba051569eaf0e5a5dc6fc47156a1de + e60bce54547ab8c7f4238d46ad43a49d289d9c76 https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 1b046b4dd8ba051569eaf0e5a5dc6fc47156a1de + e60bce54547ab8c7f4238d46ad43a49d289d9c76 https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 1b046b4dd8ba051569eaf0e5a5dc6fc47156a1de + e60bce54547ab8c7f4238d46ad43a49d289d9c76 https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 1b046b4dd8ba051569eaf0e5a5dc6fc47156a1de + e60bce54547ab8c7f4238d46ad43a49d289d9c76 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime From 8f1406d2b6613b19af66d91a6ed0c9331f9a09e9 Mon Sep 17 00:00:00 2001 From: DotNet-Bot Date: Tue, 21 May 2024 01:58:13 +0000 Subject: [PATCH 212/391] Update dependencies from https://dev.azure.com/dnceng/internal/_git/dotnet-runtime build 20240520.14 Microsoft.Extensions.Configuration.Binder , Microsoft.Extensions.Configuration.FileExtensions , Microsoft.Extensions.DependencyModel , Microsoft.Extensions.HostFactoryResolver.Sources , Microsoft.Internal.Runtime.AspNetCore.Transport , Microsoft.NET.Runtime.MonoAOTCompiler.Task , Microsoft.NET.Runtime.WebAssembly.Sdk , Microsoft.NETCore.App.Ref , Microsoft.NETCore.App.Runtime.AOT.win-x64.Cross.browser-wasm , Microsoft.NETCore.App.Runtime.win-x64 , Microsoft.NETCore.BrowserDebugHost.Transport , Microsoft.NETCore.Platforms , System.Security.Cryptography.Xml , System.Text.Json , Microsoft.SourceBuild.Intermediate.runtime.linux-x64 From Version 8.0.2 -> To Version 8.0.2 --- NuGet.config | 4 ++-- eng/Version.Details.xml | 40 ++++++++++++++++++++-------------------- eng/Versions.props | 10 +++++----- 3 files changed, 27 insertions(+), 27 deletions(-) diff --git a/NuGet.config b/NuGet.config index f80054a3c02a..d9719c8c1d7a 100644 --- a/NuGet.config +++ b/NuGet.config @@ -9,7 +9,7 @@ - + @@ -33,7 +33,7 @@ - + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 223afdbed4b3..46b5cced6381 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -55,7 +55,7 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 6d230cdb65dee13db6779749580d02bcd413af70 + 63d80966a9f0d15e057d0d146702405b19c82533 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime @@ -67,7 +67,7 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 6d230cdb65dee13db6779749580d02bcd413af70 + 63d80966a9f0d15e057d0d146702405b19c82533 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime @@ -121,9 +121,9 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime 5535e31a712343a63f5d7d796cd874e563e5ac14 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 6d230cdb65dee13db6779749580d02bcd413af70 + 63d80966a9f0d15e057d0d146702405b19c82533 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime @@ -185,9 +185,9 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime 5535e31a712343a63f5d7d796cd874e563e5ac14 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 6d230cdb65dee13db6779749580d02bcd413af70 + 63d80966a9f0d15e057d0d146702405b19c82533 https://github.com/dotnet/source-build-externals @@ -241,7 +241,7 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 6d230cdb65dee13db6779749580d02bcd413af70 + 63d80966a9f0d15e057d0d146702405b19c82533 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime @@ -257,7 +257,7 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 6d230cdb65dee13db6779749580d02bcd413af70 + 63d80966a9f0d15e057d0d146702405b19c82533 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime @@ -273,19 +273,19 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 6d230cdb65dee13db6779749580d02bcd413af70 + 63d80966a9f0d15e057d0d146702405b19c82533 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 6d230cdb65dee13db6779749580d02bcd413af70 + 63d80966a9f0d15e057d0d146702405b19c82533 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 6d230cdb65dee13db6779749580d02bcd413af70 + 63d80966a9f0d15e057d0d146702405b19c82533 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 6d230cdb65dee13db6779749580d02bcd413af70 + 63d80966a9f0d15e057d0d146702405b19c82533 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime @@ -318,20 +318,20 @@ --> https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 6d230cdb65dee13db6779749580d02bcd413af70 + 63d80966a9f0d15e057d0d146702405b19c82533 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 6d230cdb65dee13db6779749580d02bcd413af70 + 63d80966a9f0d15e057d0d146702405b19c82533 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 6d230cdb65dee13db6779749580d02bcd413af70 + 63d80966a9f0d15e057d0d146702405b19c82533 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 6d230cdb65dee13db6779749580d02bcd413af70 + 63d80966a9f0d15e057d0d146702405b19c82533 https://github.com/dotnet/xdt @@ -368,9 +368,9 @@ - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 6d230cdb65dee13db6779749580d02bcd413af70 + 63d80966a9f0d15e057d0d146702405b19c82533 https://github.com/dotnet/winforms diff --git a/eng/Versions.props b/eng/Versions.props index d7c4c6e3c652..244e009f6e53 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -72,7 +72,7 @@ 8.0.7 8.0.7 8.0.7 - 8.0.7-servicing.24270.7 + 8.0.7-servicing.24270.14 8.0.0 8.0.0 8.0.0 @@ -93,7 +93,7 @@ 8.0.0 8.0.0 8.0.0 - 8.0.7-servicing.24270.7 + 8.0.7-servicing.24270.14 8.0.0 8.0.0 8.0.0 @@ -109,7 +109,7 @@ 8.0.0 8.0.2 8.0.0 - 8.0.7-servicing.24270.7 + 8.0.7-servicing.24270.14 8.0.0 8.0.1 8.0.0 @@ -129,9 +129,9 @@ 8.0.0 8.0.0 8.0.0 - 8.0.7-servicing.24270.7 + 8.0.7-servicing.24270.14 - 8.0.7-servicing.24270.7 + 8.0.7-servicing.24270.14 8.0.0 8.0.1 From f24c4cd7035845d55865dba3e11aca7b32afd34b Mon Sep 17 00:00:00 2001 From: DotNet-Bot Date: Tue, 21 May 2024 02:53:27 +0000 Subject: [PATCH 213/391] Update dependencies from https://dev.azure.com/dnceng/internal/_git/dotnet-efcore build 20240520.9 dotnet-ef , Microsoft.EntityFrameworkCore , Microsoft.EntityFrameworkCore.Design , Microsoft.EntityFrameworkCore.InMemory , Microsoft.EntityFrameworkCore.Relational , Microsoft.EntityFrameworkCore.Sqlite , Microsoft.EntityFrameworkCore.SqlServer , Microsoft.EntityFrameworkCore.Tools From Version 8.0.7 -> To Version 8.0.7 --- NuGet.config | 4 ++-- eng/Version.Details.xml | 16 ++++++++-------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/NuGet.config b/NuGet.config index d9719c8c1d7a..976529505a8e 100644 --- a/NuGet.config +++ b/NuGet.config @@ -6,7 +6,7 @@ - + @@ -30,7 +30,7 @@ - + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 46b5cced6381..65dfad1f1e98 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -11,35 +11,35 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - e60bce54547ab8c7f4238d46ad43a49d289d9c76 + 87dd6eca401243365826d433c983154dbe4c1474 https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - e60bce54547ab8c7f4238d46ad43a49d289d9c76 + 87dd6eca401243365826d433c983154dbe4c1474 https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - e60bce54547ab8c7f4238d46ad43a49d289d9c76 + 87dd6eca401243365826d433c983154dbe4c1474 https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - e60bce54547ab8c7f4238d46ad43a49d289d9c76 + 87dd6eca401243365826d433c983154dbe4c1474 https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - e60bce54547ab8c7f4238d46ad43a49d289d9c76 + 87dd6eca401243365826d433c983154dbe4c1474 https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - e60bce54547ab8c7f4238d46ad43a49d289d9c76 + 87dd6eca401243365826d433c983154dbe4c1474 https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - e60bce54547ab8c7f4238d46ad43a49d289d9c76 + 87dd6eca401243365826d433c983154dbe4c1474 https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - e60bce54547ab8c7f4238d46ad43a49d289d9c76 + 87dd6eca401243365826d433c983154dbe4c1474 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime From c242f36344e7cc6b157e46ca2d9d86b40e7e0071 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 4 Jun 2024 12:24:35 -0700 Subject: [PATCH 214/391] [release/8.0] (deps): Bump src/submodules/googletest (#56007) Bumps [src/submodules/googletest](https://github.com/google/googletest) from `d83fee1` to `a7f443b`. - [Release notes](https://github.com/google/googletest/releases) - [Commits](https://github.com/google/googletest/compare/d83fee138a9ae6cb7c03688a2d08d4043a39815d...a7f443b80b105f940225332ed3c31f2790092f47) --- updated-dependencies: - dependency-name: src/submodules/googletest dependency-type: direct:production ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- src/submodules/googletest | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/submodules/googletest b/src/submodules/googletest index d83fee138a9a..a7f443b80b10 160000 --- a/src/submodules/googletest +++ b/src/submodules/googletest @@ -1 +1 @@ -Subproject commit d83fee138a9ae6cb7c03688a2d08d4043a39815d +Subproject commit a7f443b80b105f940225332ed3c31f2790092f47 From 489a3733d5fa19a73a679192ff3592d5db4c0b5a Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" <42748379+dotnet-maestro[bot]@users.noreply.github.com> Date: Tue, 4 Jun 2024 12:25:13 -0700 Subject: [PATCH 215/391] [release/8.0] Update dependencies from dotnet/source-build-externals (#55691) * Update dependencies from https://github.com/dotnet/source-build-externals build 20240513.1 Microsoft.SourceBuild.Intermediate.source-build-externals From Version 8.0.0-alpha.1.24256.1 -> To Version 8.0.0-alpha.1.24263.1 * Update dependencies from https://github.com/dotnet/source-build-externals build 20240519.1 Microsoft.SourceBuild.Intermediate.source-build-externals From Version 8.0.0-alpha.1.24256.1 -> To Version 8.0.0-alpha.1.24269.1 --------- Co-authored-by: dotnet-maestro[bot] --- eng/Version.Details.xml | 4 ++-- eng/Versions.props | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index d213589f4935..029e9bf19b7c 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -189,9 +189,9 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime 087e15321bb712ef6fe8b0ba6f8bd12facf92629 - + https://github.com/dotnet/source-build-externals - 2b7510ccda2be01e2a2b48598498dca24fb69c3a + 4f2151df120194f0268944f1b723c14820738fc8 diff --git a/eng/Versions.props b/eng/Versions.props index 7b1d05748214..37cdd2d80e04 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -166,7 +166,7 @@ 8.0.0-beta.24266.3 8.0.0-beta.24266.3 - 8.0.0-alpha.1.24256.1 + 8.0.0-alpha.1.24269.1 8.0.0-alpha.1.24257.2 From c5721fb7a65ddc13d1b445c2c08c27b72ab57cdc Mon Sep 17 00:00:00 2001 From: Brennan Conroy Date: Thu, 6 Jun 2024 15:57:28 +0000 Subject: [PATCH 216/391] Merged PR 40029: Lock around Http3Stream data frame processing Follows the same pattern as Http2Stream: https://github.com/dotnet/aspnetcore/blob/main/src/Servers/Kestrel/Core/src/Internal/Http2/Http2Stream.cs#L463 and https://github.com/dotnet/aspnetcore/blob/38fe7dd594bde10cc9c9c3c710947af14d3117b3/src/Servers/Kestrel/Core/src/Internal/Http2/Http2Stream.cs#L490 --- .../Core/src/Internal/Http3/Http3Stream.cs | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/src/Servers/Kestrel/Core/src/Internal/Http3/Http3Stream.cs b/src/Servers/Kestrel/Core/src/Internal/Http3/Http3Stream.cs index e0810f4ffd62..bb42d0e18e6d 100644 --- a/src/Servers/Kestrel/Core/src/Internal/Http3/Http3Stream.cs +++ b/src/Servers/Kestrel/Core/src/Internal/Http3/Http3Stream.cs @@ -63,6 +63,7 @@ internal abstract partial class Http3Stream : HttpProtocol, IHttp3Stream, IHttpS public bool EndStreamReceived => (_completionState & StreamCompletionFlags.EndStreamReceived) == StreamCompletionFlags.EndStreamReceived; public bool IsAborted => (_completionState & StreamCompletionFlags.Aborted) == StreamCompletionFlags.Aborted; + private bool IsAbortedRead => (_completionState & StreamCompletionFlags.AbortedRead) == StreamCompletionFlags.AbortedRead; public bool IsCompleted => (_completionState & StreamCompletionFlags.Completed) == StreamCompletionFlags.Completed; public Pipe RequestBodyPipe { get; private set; } = default!; @@ -892,12 +893,20 @@ private Task ProcessDataFrameAsync(in ReadOnlySequence payload) InputRemaining -= payload.Length; } - foreach (var segment in payload) + lock (_completionLock) { - RequestBodyPipe.Writer.Write(segment.Span); - } + if (IsAborted || IsAbortedRead) + { + return Task.CompletedTask; + } - return RequestBodyPipe.Writer.FlushAsync().GetAsTask(); + foreach (var segment in payload) + { + RequestBodyPipe.Writer.Write(segment.Span); + } + + return RequestBodyPipe.Writer.FlushAsync().GetAsTask(); + } } protected override void OnReset() From ba94792835910ce8d4ac066f051cc9b50cb3bca9 Mon Sep 17 00:00:00 2001 From: Matt Mitchell Date: Thu, 6 Jun 2024 15:52:17 -0700 Subject: [PATCH 217/391] Remove references to obsolete storage account variables (#56101) --- .azure/pipelines/blazor-daily-tests.yml | 1 - .azure/pipelines/signalr-daily-tests.yml | 1 - 2 files changed, 2 deletions(-) diff --git a/.azure/pipelines/blazor-daily-tests.yml b/.azure/pipelines/blazor-daily-tests.yml index c22f30db60dd..df3d335489d2 100644 --- a/.azure/pipelines/blazor-daily-tests.yml +++ b/.azure/pipelines/blazor-daily-tests.yml @@ -7,7 +7,6 @@ # We just need one Windows machine because all it does is trigger SauceLabs. variables: - ${{ if ne(variables['System.TeamProject'], 'public') }}: - - group: DotNet-MSRC-Storage - group: AzureDevOps-Artifact-Feeds-Pats - name: SAUCE_CONNECT_DOWNLOAD_ON_INSTALL value: true diff --git a/.azure/pipelines/signalr-daily-tests.yml b/.azure/pipelines/signalr-daily-tests.yml index 5bedd10fc3f4..ad33363fad91 100644 --- a/.azure/pipelines/signalr-daily-tests.yml +++ b/.azure/pipelines/signalr-daily-tests.yml @@ -6,7 +6,6 @@ variables: - ${{ if ne(variables['System.TeamProject'], 'public') }}: - - group: DotNet-MSRC-Storage - group: AzureDevOps-Artifact-Feeds-Pats - template: /eng/common/templates/variables/pool-providers.yml From a2ca3fb80b0555bb411cb048bbcfe6f2a74f24e6 Mon Sep 17 00:00:00 2001 From: DotNet Bot Date: Wed, 12 Jun 2024 02:54:32 +0000 Subject: [PATCH 218/391] Merged PR 40093: [internal/release/8.0] Update dependencies from dnceng/internal/dotnet-efcore, dnceng/internal/dotnet-runtime This pull request updates the following dependencies [marker]: <> (Begin:e179a2a7-bc5d-4498-2467-08dbd53ba9ce) ## From https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - **Subscription**: e179a2a7-bc5d-4498-2467-08dbd53ba9ce - **Build**: 20240611.12 - **Date Produced**: June 12, 2024 1:40:31 AM UTC - **Commit**: 7b638e5601fef91e2baf5c52a3f3f9b89903cff2 - **Branch**: refs/heads/internal/release/8.0 [DependencyUpdate]: <> (Begin) - **Updates**: - **dotnet-ef**: [from 8.0.7 to 8.0.7][5] - **Microsoft.EntityFrameworkCore**: [from 8.0.7 to 8.0.7][5] - **Microsoft.EntityFrameworkCore.Design**: [from 8.0.7 to 8.0.7][5] - **Microsoft.EntityFrameworkCore.InMemory**: [from 8.0.7 to 8.0.7][5] - **Microsoft.EntityFrameworkCore.Relational**: [from 8.0.7 to 8.0.7][5] - **Microsoft.EntityFrameworkCore.Sqlite**: [from 8.0.7 to 8.0.7][5] - **Microsoft.EntityFrameworkCore.SqlServer**: [from 8.0.7 to 8.0.7][5] - **Microsoft.EntityFrameworkCore.Tools**: [from 8.0.7 to 8.0.7][5] [5]: https://dev.azure.com/dnceng/internal/_git/dotnet-efcore/branches?baseVersion=GC87dd6eca401243365826d433c983154dbe4c1474&targetVersion=GC7b638e5601fef91e2baf5c52a3f3f9b89903cff2&_a=files [DependencyUpdate]: <> (End) [marker]: <> (End:e179a2a7-bc5d-4498-2467-08dbd53ba9ce) [marker]: <> (Begin:83131e87-e80d-4d5b-f426-08dbd53b3319) ## From https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - **Subscription**: 83131e87-e80d-4d5b-f426-08dbd53b3319 - **Build**: 20240611.13 - **Date Produced**: June 11, 2024 11:27:10 PM UTC - **Commit**: e0b6a8149721f5d4f4bc8fe2ae8d39543a503b1d - **Branch**: refs/heads/internal/release/8.0 [DependencyUpdate]: <> (Begin) - **Updates**: - **Microsoft.Extensions.Configuration.Binder**: [from 8.0.2 to 8.0.2][3] - **Microsoft.Extensions.Configuration.FileExtensions**: [from 8.0.1 to 8.0.1][3] - **Microsoft.Extensions.DependencyModel**: [from 8.0.1 to 8.0.1][3] - **Microsoft.Extensions.HostFactoryResolver.Sources**: [from 8.0.7-servicing.24270.14 to 8.0.7-servicing.24311.13][3] - **Microsoft.Internal.Runtime.AspNetCore.Transport**: [from 8.0.7-servicing.24270.14 to 8.0.7-servicing.24311.13][3] - **Microsoft.NET.Runtime.MonoAOTCompiler.Task**: [from 8.0.7 to 8.0.7][3] - **Microsoft.NET.Runtime.WebAssembly.Sdk**: [from 8.0.7 to 8.0.7][3] - **Microsoft.NETCore.App.Ref**: [from 8.0.7 to 8.0.7][3] - **Microsoft.NETCore.App.Runtime.AOT.win-x64.Cross.browser-wasm**: [from 8.0.7 to 8.0.7][3] - **Microsoft.NETCore.App.Runtime.win-x64**: [from 8.0.7 to 8.0.7][3] - **Microsoft.NETCore.BrowserDebugHost.Transport**: [from 8.0.7-servicing.24270.14 to 8.0.7-servicing.24311.13][3] - **Microsoft.NETCore.Platforms**: [from 8.0.7-servicing.24270.14 to 8.0.7-servicing.24311.13][3] - **System.Net.Http.WinHttpHandler**: [from 8.0.0 to 8.0.1][4] - **System.Security.Cryptography.Xml**: [from 8.0.1 to 8.0.1][3] - **System.Text.Json**: [from 8.0.4 to 8.0.4]... --- NuGet.config | 8 +++--- eng/Version.Details.xml | 60 ++++++++++++++++++++--------------------- eng/Versions.props | 12 ++++----- 3 files changed, 40 insertions(+), 40 deletions(-) diff --git a/NuGet.config b/NuGet.config index 976529505a8e..ead8a890bc2c 100644 --- a/NuGet.config +++ b/NuGet.config @@ -6,10 +6,10 @@ - + - + @@ -30,10 +30,10 @@ - + - + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 4137b3637bc6..344000651568 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -11,35 +11,35 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 87dd6eca401243365826d433c983154dbe4c1474 + 7b638e5601fef91e2baf5c52a3f3f9b89903cff2 https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 87dd6eca401243365826d433c983154dbe4c1474 + 7b638e5601fef91e2baf5c52a3f3f9b89903cff2 https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 87dd6eca401243365826d433c983154dbe4c1474 + 7b638e5601fef91e2baf5c52a3f3f9b89903cff2 https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 87dd6eca401243365826d433c983154dbe4c1474 + 7b638e5601fef91e2baf5c52a3f3f9b89903cff2 https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 87dd6eca401243365826d433c983154dbe4c1474 + 7b638e5601fef91e2baf5c52a3f3f9b89903cff2 https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 87dd6eca401243365826d433c983154dbe4c1474 + 7b638e5601fef91e2baf5c52a3f3f9b89903cff2 https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 87dd6eca401243365826d433c983154dbe4c1474 + 7b638e5601fef91e2baf5c52a3f3f9b89903cff2 https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 87dd6eca401243365826d433c983154dbe4c1474 + 7b638e5601fef91e2baf5c52a3f3f9b89903cff2 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime @@ -55,7 +55,7 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 63d80966a9f0d15e057d0d146702405b19c82533 + e0b6a8149721f5d4f4bc8fe2ae8d39543a503b1d https://dev.azure.com/dnceng/internal/_git/dotnet-runtime @@ -67,7 +67,7 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 63d80966a9f0d15e057d0d146702405b19c82533 + e0b6a8149721f5d4f4bc8fe2ae8d39543a503b1d https://dev.azure.com/dnceng/internal/_git/dotnet-runtime @@ -121,9 +121,9 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime 5535e31a712343a63f5d7d796cd874e563e5ac14 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 63d80966a9f0d15e057d0d146702405b19c82533 + e0b6a8149721f5d4f4bc8fe2ae8d39543a503b1d https://dev.azure.com/dnceng/internal/_git/dotnet-runtime @@ -185,9 +185,9 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime 5535e31a712343a63f5d7d796cd874e563e5ac14 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 63d80966a9f0d15e057d0d146702405b19c82533 + e0b6a8149721f5d4f4bc8fe2ae8d39543a503b1d https://github.com/dotnet/source-build-externals @@ -223,9 +223,9 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime 5535e31a712343a63f5d7d796cd874e563e5ac14 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 5535e31a712343a63f5d7d796cd874e563e5ac14 + e0b6a8149721f5d4f4bc8fe2ae8d39543a503b1d https://dev.azure.com/dnceng/internal/_git/dotnet-runtime @@ -241,7 +241,7 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 63d80966a9f0d15e057d0d146702405b19c82533 + e0b6a8149721f5d4f4bc8fe2ae8d39543a503b1d https://dev.azure.com/dnceng/internal/_git/dotnet-runtime @@ -257,7 +257,7 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 63d80966a9f0d15e057d0d146702405b19c82533 + e0b6a8149721f5d4f4bc8fe2ae8d39543a503b1d https://dev.azure.com/dnceng/internal/_git/dotnet-runtime @@ -273,19 +273,19 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 63d80966a9f0d15e057d0d146702405b19c82533 + e0b6a8149721f5d4f4bc8fe2ae8d39543a503b1d https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 63d80966a9f0d15e057d0d146702405b19c82533 + e0b6a8149721f5d4f4bc8fe2ae8d39543a503b1d https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 63d80966a9f0d15e057d0d146702405b19c82533 + e0b6a8149721f5d4f4bc8fe2ae8d39543a503b1d https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 63d80966a9f0d15e057d0d146702405b19c82533 + e0b6a8149721f5d4f4bc8fe2ae8d39543a503b1d https://dev.azure.com/dnceng/internal/_git/dotnet-runtime @@ -318,20 +318,20 @@ --> https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 63d80966a9f0d15e057d0d146702405b19c82533 + e0b6a8149721f5d4f4bc8fe2ae8d39543a503b1d - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 63d80966a9f0d15e057d0d146702405b19c82533 + e0b6a8149721f5d4f4bc8fe2ae8d39543a503b1d https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 63d80966a9f0d15e057d0d146702405b19c82533 + e0b6a8149721f5d4f4bc8fe2ae8d39543a503b1d - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 63d80966a9f0d15e057d0d146702405b19c82533 + e0b6a8149721f5d4f4bc8fe2ae8d39543a503b1d https://github.com/dotnet/xdt @@ -368,9 +368,9 @@ - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 63d80966a9f0d15e057d0d146702405b19c82533 + e0b6a8149721f5d4f4bc8fe2ae8d39543a503b1d https://github.com/dotnet/winforms diff --git a/eng/Versions.props b/eng/Versions.props index 53b11150448e..4516852198a9 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -72,7 +72,7 @@ 8.0.7 8.0.7 8.0.7 - 8.0.7-servicing.24270.14 + 8.0.7-servicing.24311.13 8.0.0 8.0.0 8.0.0 @@ -93,7 +93,7 @@ 8.0.0 8.0.0 8.0.0 - 8.0.7-servicing.24270.14 + 8.0.7-servicing.24311.13 8.0.0 8.0.0 8.0.0 @@ -109,7 +109,7 @@ 8.0.0 8.0.2 8.0.0 - 8.0.7-servicing.24270.14 + 8.0.7-servicing.24311.13 8.0.0 8.0.1 8.0.0 @@ -117,7 +117,7 @@ 8.0.0-rtm.23520.14 8.0.0 8.0.0 - 8.0.0 + 8.0.1 8.0.0 8.0.0 8.0.0 @@ -129,9 +129,9 @@ 8.0.0 8.0.0 8.0.0 - 8.0.7-servicing.24270.14 + 8.0.7-servicing.24311.13 - 8.0.7-servicing.24270.14 + 8.0.7-servicing.24311.13 8.0.0 8.0.1 From fd0d853b41be6248ed1eba9daad13df8a0a9898a Mon Sep 17 00:00:00 2001 From: DotNet Bot Date: Wed, 12 Jun 2024 21:40:36 +0000 Subject: [PATCH 219/391] Merged PR 40323: [internal/release/8.0] Update dependencies from dnceng/internal/dotnet-efcore This pull request updates the following dependencies [marker]: <> (Begin:e179a2a7-bc5d-4498-2467-08dbd53ba9ce) ## From https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - **Subscription**: e179a2a7-bc5d-4498-2467-08dbd53ba9ce - **Build**: 20240612.5 - **Date Produced**: June 12, 2024 7:24:33 PM UTC - **Commit**: 648ca5cd684fb237379ee2c38911d9b3e780b36f - **Branch**: refs/heads/internal/release/8.0 [DependencyUpdate]: <> (Begin) - **Updates**: - **dotnet-ef**: [from 8.0.7 to 8.0.7][1] - **Microsoft.EntityFrameworkCore**: [from 8.0.7 to 8.0.7][1] - **Microsoft.EntityFrameworkCore.Design**: [from 8.0.7 to 8.0.7][1] - **Microsoft.EntityFrameworkCore.InMemory**: [from 8.0.7 to 8.0.7][1] - **Microsoft.EntityFrameworkCore.Relational**: [from 8.0.7 to 8.0.7][1] - **Microsoft.EntityFrameworkCore.Sqlite**: [from 8.0.7 to 8.0.7][1] - **Microsoft.EntityFrameworkCore.SqlServer**: [from 8.0.7 to 8.0.7][1] - **Microsoft.EntityFrameworkCore.Tools**: [from 8.0.7 to 8.0.7][1] [1]: https://dev.azure.com/dnceng/internal/_git/dotnet-efcore/branches?baseVersion=GC7b638e5601fef91e2baf5c52a3f3f9b89903cff2&targetVersion=GC648ca5cd684fb237379ee2c38911d9b3e780b36f&_a=files [DependencyUpdate]: <> (End) [marker]: <> (End:e179a2a7-bc5d-4498-2467-08dbd53ba9ce) --- NuGet.config | 4 ++-- eng/Version.Details.xml | 16 ++++++++-------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/NuGet.config b/NuGet.config index ead8a890bc2c..69155a729fd8 100644 --- a/NuGet.config +++ b/NuGet.config @@ -6,7 +6,7 @@ - + @@ -30,7 +30,7 @@ - + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 344000651568..f1b9f9d40e38 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -11,35 +11,35 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 7b638e5601fef91e2baf5c52a3f3f9b89903cff2 + 648ca5cd684fb237379ee2c38911d9b3e780b36f https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 7b638e5601fef91e2baf5c52a3f3f9b89903cff2 + 648ca5cd684fb237379ee2c38911d9b3e780b36f https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 7b638e5601fef91e2baf5c52a3f3f9b89903cff2 + 648ca5cd684fb237379ee2c38911d9b3e780b36f https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 7b638e5601fef91e2baf5c52a3f3f9b89903cff2 + 648ca5cd684fb237379ee2c38911d9b3e780b36f https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 7b638e5601fef91e2baf5c52a3f3f9b89903cff2 + 648ca5cd684fb237379ee2c38911d9b3e780b36f https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 7b638e5601fef91e2baf5c52a3f3f9b89903cff2 + 648ca5cd684fb237379ee2c38911d9b3e780b36f https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 7b638e5601fef91e2baf5c52a3f3f9b89903cff2 + 648ca5cd684fb237379ee2c38911d9b3e780b36f https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 7b638e5601fef91e2baf5c52a3f3f9b89903cff2 + 648ca5cd684fb237379ee2c38911d9b3e780b36f https://dev.azure.com/dnceng/internal/_git/dotnet-runtime From c9d6b23f71dca6c300e6ac3fab6f636d97cf6072 Mon Sep 17 00:00:00 2001 From: DotNet-Bot Date: Thu, 13 Jun 2024 13:55:50 +0000 Subject: [PATCH 220/391] Update dependencies from https://dev.azure.com/dnceng/internal/_git/dotnet-runtime build 20240612.14 Microsoft.Extensions.Configuration.Binder , Microsoft.Extensions.Configuration.FileExtensions , Microsoft.Extensions.DependencyModel , Microsoft.Extensions.HostFactoryResolver.Sources , Microsoft.Internal.Runtime.AspNetCore.Transport , Microsoft.NET.Runtime.MonoAOTCompiler.Task , Microsoft.NET.Runtime.WebAssembly.Sdk , Microsoft.NETCore.App.Ref , Microsoft.NETCore.App.Runtime.AOT.win-x64.Cross.browser-wasm , Microsoft.NETCore.App.Runtime.win-x64 , Microsoft.NETCore.BrowserDebugHost.Transport , Microsoft.NETCore.Platforms , System.Net.Http.WinHttpHandler , System.Security.Cryptography.Xml , System.Text.Json , Microsoft.SourceBuild.Intermediate.runtime.linux-x64 From Version 8.0.2 -> To Version 8.0.2 --- NuGet.config | 4 ++-- eng/Version.Details.xml | 42 ++++++++++++++++++++--------------------- eng/Versions.props | 10 +++++----- 3 files changed, 28 insertions(+), 28 deletions(-) diff --git a/NuGet.config b/NuGet.config index 69155a729fd8..cf679a5eb351 100644 --- a/NuGet.config +++ b/NuGet.config @@ -9,7 +9,7 @@ - + @@ -33,7 +33,7 @@ - + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index f1b9f9d40e38..1ae6764f2cdf 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -55,7 +55,7 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - e0b6a8149721f5d4f4bc8fe2ae8d39543a503b1d + cc6880ce36d783678284d36e8397fc30fda93c8a https://dev.azure.com/dnceng/internal/_git/dotnet-runtime @@ -67,7 +67,7 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - e0b6a8149721f5d4f4bc8fe2ae8d39543a503b1d + cc6880ce36d783678284d36e8397fc30fda93c8a https://dev.azure.com/dnceng/internal/_git/dotnet-runtime @@ -121,9 +121,9 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime 5535e31a712343a63f5d7d796cd874e563e5ac14 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - e0b6a8149721f5d4f4bc8fe2ae8d39543a503b1d + cc6880ce36d783678284d36e8397fc30fda93c8a https://dev.azure.com/dnceng/internal/_git/dotnet-runtime @@ -185,9 +185,9 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime 5535e31a712343a63f5d7d796cd874e563e5ac14 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - e0b6a8149721f5d4f4bc8fe2ae8d39543a503b1d + cc6880ce36d783678284d36e8397fc30fda93c8a https://github.com/dotnet/source-build-externals @@ -225,7 +225,7 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - e0b6a8149721f5d4f4bc8fe2ae8d39543a503b1d + cc6880ce36d783678284d36e8397fc30fda93c8a https://dev.azure.com/dnceng/internal/_git/dotnet-runtime @@ -241,7 +241,7 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - e0b6a8149721f5d4f4bc8fe2ae8d39543a503b1d + cc6880ce36d783678284d36e8397fc30fda93c8a https://dev.azure.com/dnceng/internal/_git/dotnet-runtime @@ -257,7 +257,7 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - e0b6a8149721f5d4f4bc8fe2ae8d39543a503b1d + cc6880ce36d783678284d36e8397fc30fda93c8a https://dev.azure.com/dnceng/internal/_git/dotnet-runtime @@ -273,19 +273,19 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - e0b6a8149721f5d4f4bc8fe2ae8d39543a503b1d + cc6880ce36d783678284d36e8397fc30fda93c8a https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - e0b6a8149721f5d4f4bc8fe2ae8d39543a503b1d + cc6880ce36d783678284d36e8397fc30fda93c8a https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - e0b6a8149721f5d4f4bc8fe2ae8d39543a503b1d + cc6880ce36d783678284d36e8397fc30fda93c8a https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - e0b6a8149721f5d4f4bc8fe2ae8d39543a503b1d + cc6880ce36d783678284d36e8397fc30fda93c8a https://dev.azure.com/dnceng/internal/_git/dotnet-runtime @@ -318,20 +318,20 @@ --> https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - e0b6a8149721f5d4f4bc8fe2ae8d39543a503b1d + cc6880ce36d783678284d36e8397fc30fda93c8a - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - e0b6a8149721f5d4f4bc8fe2ae8d39543a503b1d + cc6880ce36d783678284d36e8397fc30fda93c8a https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - e0b6a8149721f5d4f4bc8fe2ae8d39543a503b1d + cc6880ce36d783678284d36e8397fc30fda93c8a - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - e0b6a8149721f5d4f4bc8fe2ae8d39543a503b1d + cc6880ce36d783678284d36e8397fc30fda93c8a https://github.com/dotnet/xdt @@ -368,9 +368,9 @@ - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - e0b6a8149721f5d4f4bc8fe2ae8d39543a503b1d + cc6880ce36d783678284d36e8397fc30fda93c8a https://github.com/dotnet/winforms diff --git a/eng/Versions.props b/eng/Versions.props index 4516852198a9..ac07a607f732 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -72,7 +72,7 @@ 8.0.7 8.0.7 8.0.7 - 8.0.7-servicing.24311.13 + 8.0.7-servicing.24312.14 8.0.0 8.0.0 8.0.0 @@ -93,7 +93,7 @@ 8.0.0 8.0.0 8.0.0 - 8.0.7-servicing.24311.13 + 8.0.7-servicing.24312.14 8.0.0 8.0.0 8.0.0 @@ -109,7 +109,7 @@ 8.0.0 8.0.2 8.0.0 - 8.0.7-servicing.24311.13 + 8.0.7-servicing.24312.14 8.0.0 8.0.1 8.0.0 @@ -129,9 +129,9 @@ 8.0.0 8.0.0 8.0.0 - 8.0.7-servicing.24311.13 + 8.0.7-servicing.24312.14 - 8.0.7-servicing.24311.13 + 8.0.7-servicing.24312.14 8.0.0 8.0.1 From ebc1c7b090d8b339738d2f31f6f06a0cc81d1b00 Mon Sep 17 00:00:00 2001 From: DotNet-Bot Date: Fri, 14 Jun 2024 00:28:48 +0000 Subject: [PATCH 221/391] Update dependencies from https://dev.azure.com/dnceng/internal/_git/dotnet-runtime build 20240613.11 Microsoft.Extensions.Configuration.Binder , Microsoft.Extensions.Configuration.FileExtensions , Microsoft.Extensions.DependencyModel , Microsoft.Extensions.HostFactoryResolver.Sources , Microsoft.Internal.Runtime.AspNetCore.Transport , Microsoft.NET.Runtime.MonoAOTCompiler.Task , Microsoft.NET.Runtime.WebAssembly.Sdk , Microsoft.NETCore.App.Ref , Microsoft.NETCore.App.Runtime.AOT.win-x64.Cross.browser-wasm , Microsoft.NETCore.App.Runtime.win-x64 , Microsoft.NETCore.BrowserDebugHost.Transport , Microsoft.NETCore.Platforms , System.Net.Http.WinHttpHandler , System.Security.Cryptography.Xml , System.Text.Json , Microsoft.SourceBuild.Intermediate.runtime.linux-x64 From Version 8.0.2 -> To Version 8.0.2 --- NuGet.config | 4 ++-- eng/Version.Details.xml | 42 ++++++++++++++++++++--------------------- eng/Versions.props | 10 +++++----- 3 files changed, 28 insertions(+), 28 deletions(-) diff --git a/NuGet.config b/NuGet.config index cf679a5eb351..8f00beab1038 100644 --- a/NuGet.config +++ b/NuGet.config @@ -9,7 +9,7 @@ - + @@ -33,7 +33,7 @@ - + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 1ae6764f2cdf..67a027eb3714 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -55,7 +55,7 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - cc6880ce36d783678284d36e8397fc30fda93c8a + 2aade6beb02ea367fd97c4070a4198802fe61c03 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime @@ -67,7 +67,7 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - cc6880ce36d783678284d36e8397fc30fda93c8a + 2aade6beb02ea367fd97c4070a4198802fe61c03 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime @@ -121,9 +121,9 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime 5535e31a712343a63f5d7d796cd874e563e5ac14 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - cc6880ce36d783678284d36e8397fc30fda93c8a + 2aade6beb02ea367fd97c4070a4198802fe61c03 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime @@ -185,9 +185,9 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime 5535e31a712343a63f5d7d796cd874e563e5ac14 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - cc6880ce36d783678284d36e8397fc30fda93c8a + 2aade6beb02ea367fd97c4070a4198802fe61c03 https://github.com/dotnet/source-build-externals @@ -225,7 +225,7 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - cc6880ce36d783678284d36e8397fc30fda93c8a + 2aade6beb02ea367fd97c4070a4198802fe61c03 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime @@ -241,7 +241,7 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - cc6880ce36d783678284d36e8397fc30fda93c8a + 2aade6beb02ea367fd97c4070a4198802fe61c03 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime @@ -257,7 +257,7 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - cc6880ce36d783678284d36e8397fc30fda93c8a + 2aade6beb02ea367fd97c4070a4198802fe61c03 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime @@ -273,19 +273,19 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - cc6880ce36d783678284d36e8397fc30fda93c8a + 2aade6beb02ea367fd97c4070a4198802fe61c03 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - cc6880ce36d783678284d36e8397fc30fda93c8a + 2aade6beb02ea367fd97c4070a4198802fe61c03 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - cc6880ce36d783678284d36e8397fc30fda93c8a + 2aade6beb02ea367fd97c4070a4198802fe61c03 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - cc6880ce36d783678284d36e8397fc30fda93c8a + 2aade6beb02ea367fd97c4070a4198802fe61c03 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime @@ -318,20 +318,20 @@ --> https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - cc6880ce36d783678284d36e8397fc30fda93c8a + 2aade6beb02ea367fd97c4070a4198802fe61c03 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - cc6880ce36d783678284d36e8397fc30fda93c8a + 2aade6beb02ea367fd97c4070a4198802fe61c03 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - cc6880ce36d783678284d36e8397fc30fda93c8a + 2aade6beb02ea367fd97c4070a4198802fe61c03 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - cc6880ce36d783678284d36e8397fc30fda93c8a + 2aade6beb02ea367fd97c4070a4198802fe61c03 https://github.com/dotnet/xdt @@ -368,9 +368,9 @@ - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - cc6880ce36d783678284d36e8397fc30fda93c8a + 2aade6beb02ea367fd97c4070a4198802fe61c03 https://github.com/dotnet/winforms diff --git a/eng/Versions.props b/eng/Versions.props index ac07a607f732..74cc2f6bc296 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -72,7 +72,7 @@ 8.0.7 8.0.7 8.0.7 - 8.0.7-servicing.24312.14 + 8.0.7-servicing.24313.11 8.0.0 8.0.0 8.0.0 @@ -93,7 +93,7 @@ 8.0.0 8.0.0 8.0.0 - 8.0.7-servicing.24312.14 + 8.0.7-servicing.24313.11 8.0.0 8.0.0 8.0.0 @@ -109,7 +109,7 @@ 8.0.0 8.0.2 8.0.0 - 8.0.7-servicing.24312.14 + 8.0.7-servicing.24313.11 8.0.0 8.0.1 8.0.0 @@ -129,9 +129,9 @@ 8.0.0 8.0.0 8.0.0 - 8.0.7-servicing.24312.14 + 8.0.7-servicing.24313.11 - 8.0.7-servicing.24312.14 + 8.0.7-servicing.24313.11 8.0.0 8.0.1 From a718af35f93dfa3d8a01046ad9f4087b3839a484 Mon Sep 17 00:00:00 2001 From: DotNet-Bot Date: Fri, 14 Jun 2024 16:55:17 +0000 Subject: [PATCH 222/391] Update dependencies from https://dev.azure.com/dnceng/internal/_git/dotnet-efcore build 20240614.4 dotnet-ef , Microsoft.EntityFrameworkCore , Microsoft.EntityFrameworkCore.Design , Microsoft.EntityFrameworkCore.InMemory , Microsoft.EntityFrameworkCore.Relational , Microsoft.EntityFrameworkCore.Sqlite , Microsoft.EntityFrameworkCore.SqlServer , Microsoft.EntityFrameworkCore.Tools From Version 8.0.7 -> To Version 8.0.7 --- NuGet.config | 4 ++-- eng/Version.Details.xml | 16 ++++++++-------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/NuGet.config b/NuGet.config index 8f00beab1038..0049dc24f34d 100644 --- a/NuGet.config +++ b/NuGet.config @@ -6,7 +6,7 @@ - + @@ -30,7 +30,7 @@ - + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 67a027eb3714..66d02fcb8180 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -11,35 +11,35 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 648ca5cd684fb237379ee2c38911d9b3e780b36f + 0d1256be4658567c8a24b4c027bdbb3dbd6de656 https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 648ca5cd684fb237379ee2c38911d9b3e780b36f + 0d1256be4658567c8a24b4c027bdbb3dbd6de656 https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 648ca5cd684fb237379ee2c38911d9b3e780b36f + 0d1256be4658567c8a24b4c027bdbb3dbd6de656 https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 648ca5cd684fb237379ee2c38911d9b3e780b36f + 0d1256be4658567c8a24b4c027bdbb3dbd6de656 https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 648ca5cd684fb237379ee2c38911d9b3e780b36f + 0d1256be4658567c8a24b4c027bdbb3dbd6de656 https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 648ca5cd684fb237379ee2c38911d9b3e780b36f + 0d1256be4658567c8a24b4c027bdbb3dbd6de656 https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 648ca5cd684fb237379ee2c38911d9b3e780b36f + 0d1256be4658567c8a24b4c027bdbb3dbd6de656 https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 648ca5cd684fb237379ee2c38911d9b3e780b36f + 0d1256be4658567c8a24b4c027bdbb3dbd6de656 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime From 5aee1f6e780a82f723e4da64f3ba25847832b0dc Mon Sep 17 00:00:00 2001 From: Steve Sanderson Date: Wed, 26 Jun 2024 15:55:52 +0100 Subject: [PATCH 223/391] Limit MaxItemCount in Virtualize --- .../Web/src/Virtualization/Virtualize.cs | 57 ++++++++++++++++--- .../test/E2ETest/Tests/VirtualizationTest.cs | 19 +++++++ .../test/testassets/BasicTestApp/Index.razor | 1 + .../VirtualizationMaxItemCount.razor | 48 ++++++++++++++++ 4 files changed, 117 insertions(+), 8 deletions(-) create mode 100644 src/Components/test/testassets/BasicTestApp/VirtualizationMaxItemCount.razor diff --git a/src/Components/Web/src/Virtualization/Virtualize.cs b/src/Components/Web/src/Virtualization/Virtualize.cs index 61f22da4a73a..b0873be320cd 100644 --- a/src/Components/Web/src/Virtualization/Virtualize.cs +++ b/src/Components/Web/src/Virtualization/Virtualize.cs @@ -25,6 +25,14 @@ public sealed class Virtualize : ComponentBase, IVirtualizeJsCallbacks, I private int _visibleItemCapacity; + // If the client reports a viewport so large that it could show more than MaxItemCount items, + // we keep track of the "unused" capacity, which is the amount of blank space we want to leave + // at the bottom of the viewport (as a number of items). If we didn't leave this blank space, + // then the bottom spacer would always stay visible and the client would request more items in an + // infinite (but asynchronous) loop, as it would believe there are more items to render and + // enough space to render them into. + private int _unusedItemCapacity; + private int _itemCount; private int _loadedItemsStartIndex; @@ -118,6 +126,22 @@ public sealed class Virtualize : ComponentBase, IVirtualizeJsCallbacks, I [Parameter] public string SpacerElement { get; set; } = "div"; + /* + This API will be added in .NET 9 but cannot be added in a .NET 8 or earlier patch, + as we can't change public API in patches. + + /// + /// Gets or sets the maximum number of items that will be rendered, even if the client reports + /// that its viewport is large enough to show more. The default value is 100. + /// + /// This should only be used as a safeguard against excessive memory usage or large data loads. + /// Do not set this to a smaller number than you expect to fit on a realistic-sized window, because + /// that will leave a blank gap below and the user may not be able to see the rest of the content. + /// + [Parameter] + public int MaxItemCount { get; set; } = 100; + */ + /// /// Instructs the component to re-request data from its . /// This is useful if external data may have changed. There is no need to call this @@ -264,18 +288,23 @@ protected override void BuildRenderTree(RenderTreeBuilder builder) var itemsAfter = Math.Max(0, _itemCount - _visibleItemCapacity - _itemsBefore); builder.OpenElement(7, SpacerElement); - builder.AddAttribute(8, "style", GetSpacerStyle(itemsAfter)); + builder.AddAttribute(8, "style", GetSpacerStyle(itemsAfter, _unusedItemCapacity)); builder.AddElementReferenceCapture(9, elementReference => _spacerAfter = elementReference); builder.CloseElement(); } + private string GetSpacerStyle(int itemsInSpacer, int numItemsGapAbove) + => numItemsGapAbove == 0 + ? GetSpacerStyle(itemsInSpacer) + : $"height: {(itemsInSpacer * _itemSize).ToString(CultureInfo.InvariantCulture)}px; flex-shrink: 0; transform: translateY({(numItemsGapAbove * _itemSize).ToString(CultureInfo.InvariantCulture)}px);"; + private string GetSpacerStyle(int itemsInSpacer) => $"height: {(itemsInSpacer * _itemSize).ToString(CultureInfo.InvariantCulture)}px; flex-shrink: 0;"; void IVirtualizeJsCallbacks.OnBeforeSpacerVisible(float spacerSize, float spacerSeparation, float containerSize) { - CalcualteItemDistribution(spacerSize, spacerSeparation, containerSize, out var itemsBefore, out var visibleItemCapacity); + CalcualteItemDistribution(spacerSize, spacerSeparation, containerSize, out var itemsBefore, out var visibleItemCapacity, out var unusedItemCapacity); // Since we know the before spacer is now visible, we absolutely have to slide the window up // by at least one element. If we're not doing that, the previous item size info we had must @@ -286,12 +315,12 @@ void IVirtualizeJsCallbacks.OnBeforeSpacerVisible(float spacerSize, float spacer itemsBefore--; } - UpdateItemDistribution(itemsBefore, visibleItemCapacity); + UpdateItemDistribution(itemsBefore, visibleItemCapacity, unusedItemCapacity); } void IVirtualizeJsCallbacks.OnAfterSpacerVisible(float spacerSize, float spacerSeparation, float containerSize) { - CalcualteItemDistribution(spacerSize, spacerSeparation, containerSize, out var itemsAfter, out var visibleItemCapacity); + CalcualteItemDistribution(spacerSize, spacerSeparation, containerSize, out var itemsAfter, out var visibleItemCapacity, out var unusedItemCapacity); var itemsBefore = Math.Max(0, _itemCount - itemsAfter - visibleItemCapacity); @@ -304,7 +333,7 @@ void IVirtualizeJsCallbacks.OnAfterSpacerVisible(float spacerSize, float spacerS itemsBefore++; } - UpdateItemDistribution(itemsBefore, visibleItemCapacity); + UpdateItemDistribution(itemsBefore, visibleItemCapacity, unusedItemCapacity); } private void CalcualteItemDistribution( @@ -312,7 +341,8 @@ private void CalcualteItemDistribution( float spacerSeparation, float containerSize, out int itemsInSpacer, - out int visibleItemCapacity) + out int visibleItemCapacity, + out int unusedItemCapacity) { if (_lastRenderedItemCount > 0) { @@ -326,11 +356,21 @@ private void CalcualteItemDistribution( _itemSize = ItemSize; } + // This AppContext data exists as a stopgap for .NET 8 and earlier, since this is being added in a patch + // where we can't add new public API. + var maxItemCount = AppContext.GetData("Microsoft.AspNetCore.Components.Web.Virtualization.Virtualize.MaxItemCount") switch + { + int val => val, // In .NET 9, this will be Math.Min(val, MaxItemCount) + _ => 1000 // In .NET 9, this will be MaxItemCount + }; + itemsInSpacer = Math.Max(0, (int)Math.Floor(spacerSize / _itemSize) - OverscanCount); visibleItemCapacity = (int)Math.Ceiling(containerSize / _itemSize) + 2 * OverscanCount; + unusedItemCapacity = Math.Max(0, visibleItemCapacity - maxItemCount); + visibleItemCapacity -= unusedItemCapacity; } - private void UpdateItemDistribution(int itemsBefore, int visibleItemCapacity) + private void UpdateItemDistribution(int itemsBefore, int visibleItemCapacity, int unusedItemCapacity) { // If the itemcount just changed to a lower number, and we're already scrolled past the end of the new // reduced set of items, clamp the scroll position to the new maximum @@ -340,10 +380,11 @@ private void UpdateItemDistribution(int itemsBefore, int visibleItemCapacity) } // If anything about the offset changed, re-render - if (itemsBefore != _itemsBefore || visibleItemCapacity != _visibleItemCapacity) + if (itemsBefore != _itemsBefore || visibleItemCapacity != _visibleItemCapacity || unusedItemCapacity != _unusedItemCapacity) { _itemsBefore = itemsBefore; _visibleItemCapacity = visibleItemCapacity; + _unusedItemCapacity = unusedItemCapacity; var refreshTask = RefreshDataCoreAsync(renderOnSuccess: true); if (!refreshTask.IsCompleted) diff --git a/src/Components/test/E2ETest/Tests/VirtualizationTest.cs b/src/Components/test/E2ETest/Tests/VirtualizationTest.cs index 46e55d6318a8..a84bb1212f61 100644 --- a/src/Components/test/E2ETest/Tests/VirtualizationTest.cs +++ b/src/Components/test/E2ETest/Tests/VirtualizationTest.cs @@ -262,6 +262,25 @@ public void CanRenderHtmlTable() Assert.Contains(expectedInitialSpacerStyle, bottomSpacer.GetAttribute("style")); } + [Fact] + public void CanLimitMaxItemsRendered() + { + Browser.MountTestComponent(); + + // Despite having a 600px tall scroll area and 30px high items (600/30=20), + // we only render 10 items due to the MaxItemCount setting + var scrollArea = Browser.Exists(By.Id("virtualize-scroll-area")); + var getItems = () => scrollArea.FindElements(By.ClassName("my-item")); + Browser.Equal(10, () => getItems().Count); + Browser.Equal("Id: 0; Name: Thing 0", () => getItems().First().Text); + + // Scrolling still works and loads new data, though there's no guarantee about + // exactly how many items will show up at any one time + Browser.ExecuteJavaScript("document.getElementById('virtualize-scroll-area').scrollTop = 300;"); + Browser.NotEqual("Id: 0; Name: Thing 0", () => getItems().First().Text); + Browser.True(() => getItems().Count > 3 && getItems().Count <= 10); + } + [Fact] public void CanMutateDataInPlace_Sync() { diff --git a/src/Components/test/testassets/BasicTestApp/Index.razor b/src/Components/test/testassets/BasicTestApp/Index.razor index d0382fbdc547..fabbf037e349 100644 --- a/src/Components/test/testassets/BasicTestApp/Index.razor +++ b/src/Components/test/testassets/BasicTestApp/Index.razor @@ -108,6 +108,7 @@ + diff --git a/src/Components/test/testassets/BasicTestApp/VirtualizationMaxItemCount.razor b/src/Components/test/testassets/BasicTestApp/VirtualizationMaxItemCount.razor new file mode 100644 index 000000000000..3c3d793829f0 --- /dev/null +++ b/src/Components/test/testassets/BasicTestApp/VirtualizationMaxItemCount.razor @@ -0,0 +1,48 @@ +@implements IDisposable +

    + MaxItemCount is a safeguard against the client reporting a giant viewport and causing the server to perform a + correspondingly giant data load and then tracking a lot of render state. +

    + +

    + If MaxItemCount is exceeded (which it never should be for a well-behaved client), we don't offer any guarantees + that the behavior will be nice for the end user. We just guarantee to limit the .NET-side workload. As such this + E2E test deliberately does a bad thing of setting MaxItemCount to a low value for test purposes. Applications + should not do this. +

    + +
    + @* In .NET 8 and earlier, the E2E test uses an AppContext.SetData call to set MaxItemCount *@ + @* In .NET 9 onwards, it's a Virtualize component parameter *@ + +
    + Id: @context.Id; Name: @context.Name +
    +
    +
    + +@code { + protected override void OnInitialized() + { + // This relies on Xunit's default behavior of running tests in the same collection sequentially, + // not in parallel. From .NET 9 onwards this can be removed in favour of a Virtualize parameter. + AppContext.SetData("Microsoft.AspNetCore.Components.Web.Virtualization.Virtualize.MaxItemCount", 10); + } + + private async ValueTask> GetItems(ItemsProviderRequest request) + { + const int numThings = 100000; + + await Task.Delay(100); + return new ItemsProviderResult( + Enumerable.Range(request.StartIndex, request.Count).Select(i => new MyThing(i, $"Thing {i}")), + numThings); + } + + record MyThing(int Id, string Name); + + public void Dispose() + { + AppContext.SetData("Microsoft.AspNetCore.Components.Web.Virtualization.Virtualize.MaxItemCount", null); + } +} From 61f9a2848ae0fa128c27cd2b5b603b5ae47d69ac Mon Sep 17 00:00:00 2001 From: vseanreesermsft <78103370+vseanreesermsft@users.noreply.github.com> Date: Tue, 2 Jul 2024 13:32:28 -0700 Subject: [PATCH 224/391] Update branding to 8.0.8 (#56577) --- eng/Versions.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/eng/Versions.props b/eng/Versions.props index 37cdd2d80e04..be98f33f4169 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -8,7 +8,7 @@ 8 0 - 7 + 8 false From 3ffafee69a429d1ab35a9794377742c462b76446 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alexander=20K=C3=B6plinger?= Date: Tue, 2 Jul 2024 22:33:25 +0200 Subject: [PATCH 225/391] [release/8.0] Bump to macos-12 build image (#56270) * Bump to macos-12 build image AzDO will remove macos-11 in about two weeks: https://learn.microsoft.com/en-us/azure/devops/pipelines/agents/hosted?view=azure-devops&tabs=yaml#recent-updates * Update xcode --- .azure/pipelines/jobs/default-build.yml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/.azure/pipelines/jobs/default-build.yml b/.azure/pipelines/jobs/default-build.yml index 8a8755e69335..af28d284351f 100644 --- a/.azure/pipelines/jobs/default-build.yml +++ b/.azure/pipelines/jobs/default-build.yml @@ -107,7 +107,7 @@ jobs: # See https://github.com/dotnet/arcade/blob/master/Documentation/ChoosingAMachinePool.md pool: ${{ if eq(parameters.agentOs, 'macOS') }}: - vmImage: macOS-11 + vmImage: macOS-12 ${{ if eq(parameters.agentOs, 'Linux') }}: ${{ if eq(parameters.useHostedUbuntu, true) }}: vmImage: ubuntu-20.04 @@ -167,8 +167,8 @@ jobs: - script: df -h displayName: Disk size - ${{ if eq(parameters.agentOs, 'macOS') }}: - - script: sudo xcode-select -s /Applications/Xcode_12.5.1.app/Contents/Developer - displayName: Use XCode 12.5.1 + - script: sudo xcode-select -s /Applications/Xcode_14.2.0.app/Contents/Developer + displayName: Use XCode 14.2.0 - checkout: self clean: true - ${{ if and(eq(parameters.agentOs, 'Windows'), eq(parameters.isAzDOTestingJob, true)) }}: @@ -329,7 +329,7 @@ jobs: pool: ${{ if eq(parameters.agentOs, 'macOS') }}: name: Azure Pipelines - image: macOS-11 + image: macOS-12 os: macOS ${{ if eq(parameters.agentOs, 'Linux') }}: name: $(DncEngInternalBuildPool) @@ -393,8 +393,8 @@ jobs: - script: df -h displayName: Disk size - ${{ if eq(parameters.agentOs, 'macOS') }}: - - script: sudo xcode-select -s /Applications/Xcode_12.5.1.app/Contents/Developer - displayName: Use XCode 12.5.1 + - script: sudo xcode-select -s /Applications/Xcode_14.2.0.app/Contents/Developer + displayName: Use XCode 14.2.0 - checkout: self clean: true - ${{ if and(eq(parameters.agentOs, 'Windows'), eq(parameters.isAzDOTestingJob, true)) }}: From ada17d6b04a17be64b4a772e92ddb2ba0389bdad Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 2 Jul 2024 13:49:05 -0700 Subject: [PATCH 226/391] Quarantine CanLaunchPhotinoWebViewAndClickButton (#56300) For some reason retry isn't working for this test? Or it's still failing a lot even with a retry. Co-authored-by: Brennan --- src/Components/WebView/test/E2ETest/WebViewManagerE2ETests.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/src/Components/WebView/test/E2ETest/WebViewManagerE2ETests.cs b/src/Components/WebView/test/E2ETest/WebViewManagerE2ETests.cs index 0f944bb5795d..65fb5cac99f6 100644 --- a/src/Components/WebView/test/E2ETest/WebViewManagerE2ETests.cs +++ b/src/Components/WebView/test/E2ETest/WebViewManagerE2ETests.cs @@ -19,6 +19,7 @@ public class WebViewManagerE2ETests(ITestOutputHelper output) [ConditionalFact] [OSSkipCondition(OperatingSystems.Linux | OperatingSystems.MacOSX, SkipReason = "On Helix/Ubuntu the native Photino assemblies can't be found, and on macOS it can't detect when the WebView is ready")] + [QuarantinedTest("https://github.com/dotnet/aspnetcore/issues/50802")] public async Task CanLaunchPhotinoWebViewAndClickButton() { var photinoTestProgramExePath = typeof(WebViewManagerE2ETests).Assembly.Location; From a2c24f946dca29fe70ad4f720f83f3bb75001b6f Mon Sep 17 00:00:00 2001 From: Stephen Halter Date: Tue, 2 Jul 2024 13:49:13 -0700 Subject: [PATCH 227/391] [release/8.0] Don't require latest runtime patch for Blazor DevServer (#56181) * Don't require latest runtime patch for Blazor DevServer * Use exact runtime for non-servicing builds of Blazor DevServer * Publish to "trimmed" instead of "trimmed-or-threading" - This fixes a regression introduced by https://github.com/dotnet/aspnetcore/pull/54655 --- ...soft.AspNetCore.Components.WebAssembly.DevServer.csproj | 7 +++++-- .../DevServer/src/blazor-devserver.runtimeconfig.json.in | 2 +- .../Microsoft.AspNetCore.Components.E2ETests.csproj | 2 +- .../test/E2ETest/Tests/RemoteAuthenticationTest.cs | 4 ++-- .../test/E2ETest/Tests/WebAssemblyPrerenderedTest.cs | 2 +- 5 files changed, 10 insertions(+), 7 deletions(-) diff --git a/src/Components/WebAssembly/DevServer/src/Microsoft.AspNetCore.Components.WebAssembly.DevServer.csproj b/src/Components/WebAssembly/DevServer/src/Microsoft.AspNetCore.Components.WebAssembly.DevServer.csproj index 8267a699183b..ff17430a5092 100644 --- a/src/Components/WebAssembly/DevServer/src/Microsoft.AspNetCore.Components.WebAssembly.DevServer.csproj +++ b/src/Components/WebAssembly/DevServer/src/Microsoft.AspNetCore.Components.WebAssembly.DevServer.csproj @@ -36,8 +36,11 @@ - <_RuntimeConfigProperties> - SharedFxVersion=$(SharedFxVersion); + <_RuntimeConfigProperties Condition="'$(IsServicingBuild)' == 'true'"> + FrameworkVersion=$(AspNetCoreMajorMinorVersion).0; + + <_RuntimeConfigProperties Condition="'$(IsServicingBuild)' != 'true'"> + FrameworkVersion=$(SharedFxVersion); <_RuntimeConfigPath>$(OutputPath)blazor-devserver.runtimeconfig.json diff --git a/src/Components/WebAssembly/DevServer/src/blazor-devserver.runtimeconfig.json.in b/src/Components/WebAssembly/DevServer/src/blazor-devserver.runtimeconfig.json.in index a509538b85f4..5799aa6485a9 100644 --- a/src/Components/WebAssembly/DevServer/src/blazor-devserver.runtimeconfig.json.in +++ b/src/Components/WebAssembly/DevServer/src/blazor-devserver.runtimeconfig.json.in @@ -3,7 +3,7 @@ "tfm": "net8.0", "framework": { "name": "Microsoft.AspNetCore.App", - "version": "${SharedFxVersion}" + "version": "${FrameworkVersion}" }, "rollForwardOnNoCandidateFx": 2 } diff --git a/src/Components/test/E2ETest/Microsoft.AspNetCore.Components.E2ETests.csproj b/src/Components/test/E2ETest/Microsoft.AspNetCore.Components.E2ETests.csproj index b8ad7c0303a4..dd3462e10abf 100644 --- a/src/Components/test/E2ETest/Microsoft.AspNetCore.Components.E2ETests.csproj +++ b/src/Components/test/E2ETest/Microsoft.AspNetCore.Components.E2ETests.csproj @@ -89,7 +89,7 @@ + Properties="BuildProjectReferences=false;TestTrimmedOrMultithreadingApps=true;PublishDir=$(MSBuildThisFileDirectory)$(OutputPath)trimmed\Components.TestServer\;" /> diff --git a/src/Components/test/E2ETest/Tests/RemoteAuthenticationTest.cs b/src/Components/test/E2ETest/Tests/RemoteAuthenticationTest.cs index 6915b0915198..525f8f774c37 100644 --- a/src/Components/test/E2ETest/Tests/RemoteAuthenticationTest.cs +++ b/src/Components/test/E2ETest/Tests/RemoteAuthenticationTest.cs @@ -21,7 +21,7 @@ public class RemoteAuthenticationTest : { public readonly bool TestTrimmedApps = typeof(ToggleExecutionModeServerFixture<>).Assembly .GetCustomAttributes() - .First(m => m.Key == "Microsoft.AspNetCore.E2ETesting.TestTrimmedOrMultithreadingApps") + .First(m => m.Key == "Microsoft.AspNetCore.E2ETesting.TestTrimmedApps") .Value == "true"; public RemoteAuthenticationTest( @@ -67,7 +67,7 @@ private static IHost BuildPublishedWebHost(string[] args) => private static string GetPublishedContentRoot(Assembly assembly) { - var contentRoot = Path.Combine(AppContext.BaseDirectory, "trimmed-or-threading", assembly.GetName().Name); + var contentRoot = Path.Combine(AppContext.BaseDirectory, "trimmed", assembly.GetName().Name); if (!Directory.Exists(contentRoot)) { diff --git a/src/Components/test/E2ETest/Tests/WebAssemblyPrerenderedTest.cs b/src/Components/test/E2ETest/Tests/WebAssemblyPrerenderedTest.cs index 1b108484b9db..9007e18ab483 100644 --- a/src/Components/test/E2ETest/Tests/WebAssemblyPrerenderedTest.cs +++ b/src/Components/test/E2ETest/Tests/WebAssemblyPrerenderedTest.cs @@ -56,7 +56,7 @@ private void WaitUntilLoaded() private static string GetPublishedContentRoot(Assembly assembly) { - var contentRoot = Path.Combine(AppContext.BaseDirectory, "trimmed-or-threading", assembly.GetName().Name); + var contentRoot = Path.Combine(AppContext.BaseDirectory, "trimmed", assembly.GetName().Name); if (!Directory.Exists(contentRoot)) { From 54df5358b60ce926651e0f0253f5c92a7fd4926c Mon Sep 17 00:00:00 2001 From: William Godbe Date: Mon, 8 Jul 2024 13:19:16 -0700 Subject: [PATCH 228/391] [release/8.0] Chain runtime .Msi's instead of .Exe's in hosting bundle (#56459) * Chain runtime .msi's instead of .exe's in Hosting Bundle * Fixup * Remove unneeded .msi codes * Remove more unneeded props * Feedback * Fix typo * Another typo --- .../WindowsHostingBundle/DotNetCore.wxs | 96 ++++++++++-------- .../WindowsHostingBundle/Product.targets | 99 ++++++++++--------- .../WindowsHostingBundle/SharedFramework.wxs | 50 ++-------- .../WindowsHostingBundle.wixproj | 37 +------ 4 files changed, 122 insertions(+), 160 deletions(-) diff --git a/src/Installers/Windows/WindowsHostingBundle/DotNetCore.wxs b/src/Installers/Windows/WindowsHostingBundle/DotNetCore.wxs index dab0deb92e35..932d6bab74de 100644 --- a/src/Installers/Windows/WindowsHostingBundle/DotNetCore.wxs +++ b/src/Installers/Windows/WindowsHostingBundle/DotNetCore.wxs @@ -2,62 +2,80 @@ - - - - - - - - + InstallCondition="(NativeMachine="$(var.NativeMachine_arm64)") AND (NOT OPT_NO_RUNTIME OR OPT_NO_RUNTIME="0")"> + - - + InstallCondition="VersionNT64 AND NOT (NativeMachine="$(var.NativeMachine_arm64)") AND (NOT OPT_NO_RUNTIME OR OPT_NO_RUNTIME="0")"> + - - + InstallCondition="(NOT OPT_NO_RUNTIME OR OPT_NO_RUNTIME="0") AND (NOT OPT_NO_X86 OR OPT_NO_X86="0")"> + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/Installers/Windows/WindowsHostingBundle/Product.targets b/src/Installers/Windows/WindowsHostingBundle/Product.targets index 2fe40ebe38a6..3b1cf82c1076 100644 --- a/src/Installers/Windows/WindowsHostingBundle/Product.targets +++ b/src/Installers/Windows/WindowsHostingBundle/Product.targets @@ -7,21 +7,32 @@ - - - x64 + DotNetRedistLtsInstallerx64 - $(MicrosoftNETCoreAppRuntimeVersion) - - x86 + DotNetRedistLtsInstallerx86 - $(MicrosoftNETCoreAppRuntimeVersion) - - arm64 + DotNetRedistLtsInstallerarm64 - $(MicrosoftNETCoreAppRuntimeVersion) + + + DotNetRedistHostInstallerx64 + + + DotNetRedistHostInstallerx86 + + + DotNetRedistHostInstallerarm64 + + + DotNetRedistHostfxrInstallerx64 + + + DotNetRedistHostfxrInstallerx86 + + + DotNetRedistHostfxrInstallerarm64 @@ -32,14 +43,32 @@ - - dotnet-runtime-$(MicrosoftNETCoreAppRuntimeVersion)-win-x64.exe + + dotnet-runtime-$(MicrosoftNETCoreAppRuntimeVersion)-win-x64.msi + + + dotnet-runtime-$(MicrosoftNETCoreAppRuntimeVersion)-win-x86.msi + + + dotnet-runtime-$(MicrosoftNETCoreAppRuntimeVersion)-win-arm64.msi + + + dotnet-host-$(MicrosoftNETCoreAppRuntimeVersion)-win-x64.msi - - dotnet-runtime-$(MicrosoftNETCoreAppRuntimeVersion)-win-x86.exe + + dotnet-host-$(MicrosoftNETCoreAppRuntimeVersion)-win-x86.msi - - dotnet-runtime-$(MicrosoftNETCoreAppRuntimeVersion)-win-arm64.exe + + dotnet-host-$(MicrosoftNETCoreAppRuntimeVersion)-win-arm64.msi + + + dotnet-hostfxr-$(MicrosoftNETCoreAppRuntimeVersion)-win-x64.msi + + + dotnet-hostfxr-$(MicrosoftNETCoreAppRuntimeVersion)-win-x86.msi + + + dotnet-hostfxr-$(MicrosoftNETCoreAppRuntimeVersion)-win-arm64.msi @@ -74,42 +103,16 @@ - - - - - - DotNetRedistLtsInstallerProductVersion%(Platforms.Identity) - DotNetRedistLtsInstallerProductCode%(Platforms.Identity) - DotNetRedistLtsInstallerUpgradeCode%(Platforms.Identity) - - - - - - - - - - - - - - $(DefineConstants);DotNetRedistLtsInstallerx64=$(DotNetRedistLtsInstallerx64) - $(DefineConstants);DotNetRedistLtsInstallerProductVersionx64=$(DotNetRedistLtsInstallerProductVersionx64) - $(DefineConstants);DotNetRedistLtsInstallerProductCodex64=$(DotNetRedistLtsInstallerProductCodex64) - $(DefineConstants);DotNetRedistLtsInstallerUpgradeCodex64=$(DotNetRedistLtsInstallerUpgradeCodex64) $(DefineConstants);DotNetRedistLtsInstallerx86=$(DotNetRedistLtsInstallerx86) - $(DefineConstants);DotNetRedistLtsInstallerProductVersionx86=$(DotNetRedistLtsInstallerProductVersionx86) - $(DefineConstants);DotNetRedistLtsInstallerProductCodex86=$(DotNetRedistLtsInstallerProductCodex86) - $(DefineConstants);DotNetRedistLtsInstallerUpgradeCodex86=$(DotNetRedistLtsInstallerUpgradeCodex86) $(DefineConstants);DotNetRedistLtsInstallerarm64=$(DotNetRedistLtsInstallerarm64) - $(DefineConstants);DotNetRedistLtsInstallerProductVersionarm64=$(DotNetRedistLtsInstallerProductVersionarm64) - $(DefineConstants);DotNetRedistLtsInstallerProductCodearm64=$(DotNetRedistLtsInstallerProductCodearm64) - $(DefineConstants);DotNetRedistLtsInstallerUpgradeCodearm64=$(DotNetRedistLtsInstallerUpgradeCodearm64) + $(DefineConstants);DotNetRedistHostInstallerx64=$(DotNetRedistHostInstallerx64) + $(DefineConstants);DotNetRedistHostInstallerx86=$(DotNetRedistHostInstallerx86) + $(DefineConstants);DotNetRedistHostInstallerarm64=$(DotNetRedistHostInstallerarm64) + $(DefineConstants);DotNetRedistHostfxrInstallerx64=$(DotNetRedistHostfxrInstallerx64) + $(DefineConstants);DotNetRedistHostfxrInstallerx86=$(DotNetRedistHostfxrInstallerx86) + $(DefineConstants);DotNetRedistHostfxrInstallerarm64=$(DotNetRedistHostfxrInstallerarm64) diff --git a/src/Installers/Windows/WindowsHostingBundle/SharedFramework.wxs b/src/Installers/Windows/WindowsHostingBundle/SharedFramework.wxs index 7cd6db76c9fb..9523cd755f45 100644 --- a/src/Installers/Windows/WindowsHostingBundle/SharedFramework.wxs +++ b/src/Installers/Windows/WindowsHostingBundle/SharedFramework.wxs @@ -1,63 +1,33 @@ - - - - - - - + - - + InstallCondition="(NativeMachine="$(var.NativeMachine_arm64)") AND (NOT OPT_NO_SHAREDFX OR OPT_NO_SHAREDFX="0")"> + - - + InstallCondition="VersionNT64 AND NOT (NativeMachine="$(var.NativeMachine_arm64)") AND (NOT OPT_NO_SHAREDFX OR OPT_NO_SHAREDFX="0")"> + - - + InstallCondition="(NOT OPT_NO_SHAREDFX OR OPT_NO_SHAREDFX="0") AND (NOT OPT_NO_X86 OR OPT_NO_X86="0")"> + diff --git a/src/Installers/Windows/WindowsHostingBundle/WindowsHostingBundle.wixproj b/src/Installers/Windows/WindowsHostingBundle/WindowsHostingBundle.wixproj index f3b8e2fa1e6d..cfb32de2dc5d 100644 --- a/src/Installers/Windows/WindowsHostingBundle/WindowsHostingBundle.wixproj +++ b/src/Installers/Windows/WindowsHostingBundle/WindowsHostingBundle.wixproj @@ -60,7 +60,7 @@ True true - @@ -103,17 +103,17 @@ - + x64 SharedFxRedistInstallerx64 $(SharedFxPackageVersion) - + x86 SharedFxRedistInstallerx86 $(SharedFxPackageVersion) - + arm64 SharedFxRedistInstallerarm64 $(SharedFxPackageVersion) @@ -139,39 +139,10 @@ - - - SharedFxInstallerProductVersionx64 - SharedFxInstallerProductCodex64 - - - SharedFxInstallerProductVersionx86 - SharedFxInstallerProductCodex86 - - - SharedFxInstallerProductVersionarm64 - SharedFxInstallerProductCodearm64 - - - - - - - - - - - $(DefineConstants);SharedFxRedistInstallerx64=$(SharedFxRedistInstallerx64) - $(DefineConstants);SharedFxInstallerProductVersionx64=$(SharedFxInstallerProductVersionx64) - $(DefineConstants);SharedFxInstallerProductCodex64=$(SharedFxInstallerProductCodex64) $(DefineConstants);SharedFxRedistInstallerx86=$(SharedFxRedistInstallerx86) - $(DefineConstants);SharedFxInstallerProductVersionx86=$(SharedFxInstallerProductVersionx86) - $(DefineConstants);SharedFxInstallerProductCodex86=$(SharedFxInstallerProductCodex86) $(DefineConstants);SharedFxRedistInstallerarm64=$(SharedFxRedistInstallerarm64) - $(DefineConstants);SharedFxInstallerProductVersionarm64=$(SharedFxInstallerProductVersionarm64) - $(DefineConstants);SharedFxInstallerProductCodearm64=$(SharedFxInstallerProductCodearm64) From 123e69ce581cb33fd86c7cd2f8d4ba95e667885c Mon Sep 17 00:00:00 2001 From: Brennan Conroy Date: Mon, 8 Jul 2024 20:57:57 +0000 Subject: [PATCH 229/391] Merged PR 40657: Fix exit AcceptLoop in Http.Sys If an exception occurs during request processing we weren't exiting the accept loop which resulted in duplicating the accept loop. --- src/Servers/HttpSys/src/MessagePump.cs | 33 ++++++++++++++++---------- 1 file changed, 21 insertions(+), 12 deletions(-) diff --git a/src/Servers/HttpSys/src/MessagePump.cs b/src/Servers/HttpSys/src/MessagePump.cs index 5cf1c88f0b12..695c45d3b4e9 100644 --- a/src/Servers/HttpSys/src/MessagePump.cs +++ b/src/Servers/HttpSys/src/MessagePump.cs @@ -279,29 +279,38 @@ private async Task ExecuteAsync() continue; } - try + if (_preferInlineScheduling) { - if (_preferInlineScheduling) + try { await requestContext.ExecuteAsync(); } - else + catch (Exception ex) + { + // Request processing failed + // Log the error message, release throttle and move on + Log.RequestListenerProcessError(_messagePump._logger, ex); + } + } + else + { + try { // Queue another accept before we execute the request ThreadPool.UnsafeQueueUserWorkItem(this, preferLocal: false); // Use this thread to start the execution of the request (avoid the double threadpool dispatch) await requestContext.ExecuteAsync(); - - // We're done with this thread - return; } - } - catch (Exception ex) - { - // Request processing failed - // Log the error message, release throttle and move on - Log.RequestListenerProcessError(_messagePump._logger, ex); + catch (Exception ex) + { + // Request processing failed + // Log the error message, release throttle and move on + Log.RequestListenerProcessError(_messagePump._logger, ex); + } + + // We're done with this thread, accept loop was continued via ThreadPool.UnsafeQueueUserWorkItem + return; } } From ed3508f895a33b8ebcddc729f41c39a756c7499d Mon Sep 17 00:00:00 2001 From: Matt Mitchell Date: Mon, 8 Jul 2024 14:48:47 -0700 Subject: [PATCH 230/391] [release/8.0] Switch to dSAS for internal runtimes (#56488) * Update arcade * Switch to dSAS for internal runtimes * Enable internal sources for source build * Fixup for publishing in arcade 8.0 * Fix spaciong --- .azure/pipelines/ci.yml | 2 +- .azure/pipelines/jobs/default-build.yml | 17 ++++++-- eng/Version.Details.xml | 20 ++++----- eng/Versions.props | 6 +-- eng/common/post-build/publish-using-darc.ps1 | 15 +++---- .../job/publish-build-assets.yml | 12 +++--- .../templates-official/job/source-build.yml | 8 ++++ .../job/source-index-stage1.yml | 16 +++---- .../templates-official/jobs/source-build.yml | 8 ++++ .../post-build/post-build.yml | 8 ++-- .../steps/enable-internal-runtimes.yml | 28 ++++++++++++ .../steps/get-delegation-sas.yml | 43 +++++++++++++++++++ .../steps/get-federated-access-token.yml | 28 ++++++++++++ .../templates/job/publish-build-assets.yml | 12 +++--- eng/common/templates/job/source-build.yml | 8 ++++ .../templates/job/source-index-stage1.yml | 11 ++--- eng/common/templates/jobs/source-build.yml | 8 ++++ .../templates/post-build/post-build.yml | 8 ++-- .../post-build/setup-maestro-vars.yml | 28 ++++++------ .../steps/enable-internal-runtimes.yml | 28 ++++++++++++ .../templates/steps/get-delegation-sas.yml | 43 +++++++++++++++++++ .../steps/get-federated-access-token.yml | 28 ++++++++++++ global.json | 4 +- 23 files changed, 316 insertions(+), 73 deletions(-) create mode 100644 eng/common/templates-official/steps/enable-internal-runtimes.yml create mode 100644 eng/common/templates-official/steps/get-delegation-sas.yml create mode 100644 eng/common/templates-official/steps/get-federated-access-token.yml create mode 100644 eng/common/templates/steps/enable-internal-runtimes.yml create mode 100644 eng/common/templates/steps/get-delegation-sas.yml create mode 100644 eng/common/templates/steps/get-federated-access-token.yml diff --git a/.azure/pipelines/ci.yml b/.azure/pipelines/ci.yml index b72915d1d416..80db7eea0830 100644 --- a/.azure/pipelines/ci.yml +++ b/.azure/pipelines/ci.yml @@ -101,7 +101,6 @@ variables: value: /bl:artifacts/log/Release/Build.Installers.binlog - name: WindowsArm64InstallersLogArgs value: /bl:artifacts/log/Release/Build.Installers.Arm64.binlog -- group: DotNetBuilds storage account read tokens - name: _InternalRuntimeDownloadArgs value: -RuntimeSourceFeed https://dotnetbuilds.blob.core.windows.net/internal -RuntimeSourceFeedKey $(dotnetbuilds-internal-container-read-token-base64) @@ -675,6 +674,7 @@ extends: # Source build - template: /eng/common/templates-official/job/source-build.yml@self parameters: + enableInternalSources: true platform: name: 'Managed' container: 'mcr.microsoft.com/dotnet-buildtools/prereqs:centos-stream9' diff --git a/.azure/pipelines/jobs/default-build.yml b/.azure/pipelines/jobs/default-build.yml index af28d284351f..0570bfc1d372 100644 --- a/.azure/pipelines/jobs/default-build.yml +++ b/.azure/pipelines/jobs/default-build.yml @@ -210,7 +210,6 @@ jobs: # Include the variables we always want. COMPlus_DbgEnableMiniDump: 1 COMPlus_DbgMiniDumpName: "$(System.DefaultWorkingDirectory)/dotnet-%d.%t.core" - DotNetBuildsInternalReadSasToken: $(dotnetbuilds-internal-container-read-token) # Expand provided `env:` properties, if any. ${{ if step.env }}: ${{ step.env }} @@ -222,14 +221,12 @@ jobs: env: COMPlus_DbgEnableMiniDump: 1 COMPlus_DbgMiniDumpName: "$(System.DefaultWorkingDirectory)/dotnet-%d.%t.core" - DotNetBuildsInternalReadSasToken: $(dotnetbuilds-internal-container-read-token) - ${{ if ne(parameters.agentOs, 'Windows') }}: - script: $(BuildDirectory)/build.sh --ci --nobl --configuration $(BuildConfiguration) $(BuildScriptArgs) displayName: Run build.sh env: COMPlus_DbgEnableMiniDump: 1 COMPlus_DbgMiniDumpName: "$(System.DefaultWorkingDirectory)/dotnet-%d.%t.core" - DotNetBuildsInternalReadSasToken: $(dotnetbuilds-internal-container-read-token) - ${{ parameters.afterBuild }} @@ -441,6 +438,20 @@ jobs: env: Token: $(dn-bot-dnceng-artifact-feeds-rw) + # Populates internal runtime SAS tokens. + - template: /eng/common/templates-official/steps/enable-internal-runtimes.yml + + # Populate dotnetbuilds-internal base64 sas tokens. + - template: /eng/common/templates-official/steps/get-delegation-sas.yml + parameters: + federatedServiceConnection: 'dotnetbuilds-internal-read' + outputVariableName: 'dotnetbuilds-internal-container-read-token' + expiryInHours: 1 + base64Encode: false + storageAccount: dotnetbuilds + container: internal + permissions: rl + # Add COMPlus_* environment variables to build steps. - ${{ if ne(parameters.steps, '')}}: - ${{ each step in parameters.steps }}: diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 029e9bf19b7c..37caaa8aa95e 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -376,26 +376,26 @@ https://github.com/dotnet/winforms abda8e3bfa78319363526b5a5f86863ec979940e - + https://github.com/dotnet/arcade - e6f70c7dd528f05cd28cec2a179d58c22e91d9ac + 8b879da4e449c48d99f3f642fc429379a64e8fe8 - + https://github.com/dotnet/arcade - e6f70c7dd528f05cd28cec2a179d58c22e91d9ac + 8b879da4e449c48d99f3f642fc429379a64e8fe8 - + https://github.com/dotnet/arcade - e6f70c7dd528f05cd28cec2a179d58c22e91d9ac + 8b879da4e449c48d99f3f642fc429379a64e8fe8 - + https://github.com/dotnet/arcade - e6f70c7dd528f05cd28cec2a179d58c22e91d9ac + 8b879da4e449c48d99f3f642fc429379a64e8fe8 - + https://github.com/dotnet/arcade - e6f70c7dd528f05cd28cec2a179d58c22e91d9ac + 8b879da4e449c48d99f3f642fc429379a64e8fe8 https://github.com/dotnet/extensions diff --git a/eng/Versions.props b/eng/Versions.props index be98f33f4169..6814e5be8609 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -162,9 +162,9 @@ 6.2.4 6.2.4 - 8.0.0-beta.24266.3 - 8.0.0-beta.24266.3 - 8.0.0-beta.24266.3 + 8.0.0-beta.24352.1 + 8.0.0-beta.24352.1 + 8.0.0-beta.24352.1 8.0.0-alpha.1.24269.1 diff --git a/eng/common/post-build/publish-using-darc.ps1 b/eng/common/post-build/publish-using-darc.ps1 index 5a3a32ea8d75..238945cb5ab4 100644 --- a/eng/common/post-build/publish-using-darc.ps1 +++ b/eng/common/post-build/publish-using-darc.ps1 @@ -2,7 +2,6 @@ param( [Parameter(Mandatory=$true)][int] $BuildId, [Parameter(Mandatory=$true)][int] $PublishingInfraVersion, [Parameter(Mandatory=$true)][string] $AzdoToken, - [Parameter(Mandatory=$true)][string] $MaestroToken, [Parameter(Mandatory=$false)][string] $MaestroApiEndPoint = 'https://maestro.dot.net/', [Parameter(Mandatory=$true)][string] $WaitPublishingFinish, [Parameter(Mandatory=$false)][string] $ArtifactsPublishingAdditionalParameters, @@ -31,13 +30,13 @@ try { } & $darc add-build-to-channel ` - --id $buildId ` - --publishing-infra-version $PublishingInfraVersion ` - --default-channels ` - --source-branch main ` - --azdev-pat $AzdoToken ` - --bar-uri $MaestroApiEndPoint ` - --password $MaestroToken ` + --id $buildId ` + --publishing-infra-version $PublishingInfraVersion ` + --default-channels ` + --source-branch main ` + --azdev-pat "$AzdoToken" ` + --bar-uri "$MaestroApiEndPoint" ` + --ci ` @optionalParams if ($LastExitCode -ne 0) { diff --git a/eng/common/templates-official/job/publish-build-assets.yml b/eng/common/templates-official/job/publish-build-assets.yml index 589ac80a18b7..d01739c12857 100644 --- a/eng/common/templates-official/job/publish-build-assets.yml +++ b/eng/common/templates-official/job/publish-build-assets.yml @@ -76,13 +76,16 @@ jobs: - task: NuGetAuthenticate@1 - - task: PowerShell@2 + - task: AzureCLI@2 displayName: Publish Build Assets inputs: - filePath: eng\common\sdk-task.ps1 - arguments: -task PublishBuildAssets -restore -msbuildEngine dotnet + azureSubscription: "Darc: Maestro Production" + scriptType: ps + scriptLocation: scriptPath + scriptPath: $(Build.SourcesDirectory)/eng/common/sdk-task.ps1 + arguments: > + -task PublishBuildAssets -restore -msbuildEngine dotnet /p:ManifestsPath='$(Build.StagingDirectory)/Download/AssetManifests' - /p:BuildAssetRegistryToken=$(MaestroAccessToken) /p:MaestroApiEndpoint=https://maestro-prod.westus2.cloudapp.azure.com /p:PublishUsingPipelines=${{ parameters.publishUsingPipelines }} /p:OfficialBuildId=$(Build.BuildNumber) @@ -144,7 +147,6 @@ jobs: arguments: -BuildId $(BARBuildId) -PublishingInfraVersion 3 -AzdoToken '$(publishing-dnceng-devdiv-code-r-build-re)' - -MaestroToken '$(MaestroApiAccessToken)' -WaitPublishingFinish true -ArtifactsPublishingAdditionalParameters '${{ parameters.artifactsPublishingAdditionalParameters }}' -SymbolPublishingAdditionalParameters '${{ parameters.symbolPublishingAdditionalParameters }}' diff --git a/eng/common/templates-official/job/source-build.yml b/eng/common/templates-official/job/source-build.yml index f193dfbe2366..f983033bb028 100644 --- a/eng/common/templates-official/job/source-build.yml +++ b/eng/common/templates-official/job/source-build.yml @@ -31,6 +31,12 @@ parameters: # container and pool. platform: {} + # If set to true and running on a non-public project, + # Internal blob storage locations will be enabled. + # This is not enabled by default because many repositories do not need internal sources + # and do not need to have the required service connections approved in the pipeline. + enableInternalSources: false + jobs: - job: ${{ parameters.jobNamePrefix }}_${{ parameters.platform.name }} displayName: Source-Build (${{ parameters.platform.name }}) @@ -62,6 +68,8 @@ jobs: clean: all steps: + - ${{ if eq(parameters.enableInternalSources, true) }}: + - template: /eng/common/templates-official/steps/enable-internal-runtimes.yml - template: /eng/common/templates-official/steps/source-build.yml parameters: platform: ${{ parameters.platform }} diff --git a/eng/common/templates-official/job/source-index-stage1.yml b/eng/common/templates-official/job/source-index-stage1.yml index 43ee0c202fc7..60dfb6b2d1c0 100644 --- a/eng/common/templates-official/job/source-index-stage1.yml +++ b/eng/common/templates-official/job/source-index-stage1.yml @@ -23,7 +23,7 @@ jobs: value: ${{ parameters.sourceIndexPackageSource }} - name: BinlogPath value: ${{ parameters.binlogPath }} - - template: /eng/common/templates/variables/pool-providers.yml + - template: /eng/common/templates-official/variables/pool-providers.yml ${{ if ne(parameters.pool, '') }}: pool: ${{ parameters.pool }} @@ -34,7 +34,8 @@ jobs: demands: ImageOverride -equals windows.vs2019.amd64.open ${{ if eq(variables['System.TeamProject'], 'internal') }}: name: $(DncEngInternalBuildPool) - demands: ImageOverride -equals windows.vs2019.amd64 + image: windows.vs2022.amd64 + os: windows steps: - ${{ each preStep in parameters.preSteps }}: @@ -70,16 +71,13 @@ jobs: scriptType: 'ps' scriptLocation: 'inlineScript' inlineScript: | - echo "##vso[task.setvariable variable=ARM_CLIENT_ID]$env:servicePrincipalId" - echo "##vso[task.setvariable variable=ARM_ID_TOKEN]$env:idToken" - echo "##vso[task.setvariable variable=ARM_TENANT_ID]$env:tenantId" + echo "##vso[task.setvariable variable=ARM_CLIENT_ID;issecret=true]$env:servicePrincipalId" + echo "##vso[task.setvariable variable=ARM_ID_TOKEN;issecret=true]$env:idToken" + echo "##vso[task.setvariable variable=ARM_TENANT_ID;issecret=true]$env:tenantId" - script: | - echo "Client ID: $(ARM_CLIENT_ID)" - echo "ID Token: $(ARM_ID_TOKEN)" - echo "Tenant ID: $(ARM_TENANT_ID)" az login --service-principal -u $(ARM_CLIENT_ID) --tenant $(ARM_TENANT_ID) --allow-no-subscriptions --federated-token $(ARM_ID_TOKEN) displayName: "Login to Azure" - script: $(Agent.TempDirectory)/.source-index/tools/UploadIndexStage1 -i .source-index/stage1output -n $(Build.Repository.Name) -s netsourceindexstage1 -b stage1 - displayName: Upload stage1 artifacts to source index \ No newline at end of file + displayName: Upload stage1 artifacts to source index diff --git a/eng/common/templates-official/jobs/source-build.yml b/eng/common/templates-official/jobs/source-build.yml index 08e5db9bb116..5cf6a269c0b6 100644 --- a/eng/common/templates-official/jobs/source-build.yml +++ b/eng/common/templates-official/jobs/source-build.yml @@ -21,6 +21,12 @@ parameters: # one job runs on 'defaultManagedPlatform'. platforms: [] + # If set to true and running on a non-public project, + # Internal nuget and blob storage locations will be enabled. + # This is not enabled by default because many repositories do not need internal sources + # and do not need to have the required service connections approved in the pipeline. + enableInternalSources: false + jobs: - ${{ if ne(parameters.allCompletedJobId, '') }}: @@ -38,9 +44,11 @@ jobs: parameters: jobNamePrefix: ${{ parameters.jobNamePrefix }} platform: ${{ platform }} + enableInternalSources: ${{ parameters.enableInternalSources }} - ${{ if eq(length(parameters.platforms), 0) }}: - template: /eng/common/templates-official/job/source-build.yml parameters: jobNamePrefix: ${{ parameters.jobNamePrefix }} platform: ${{ parameters.defaultManagedPlatform }} + enableInternalSources: ${{ parameters.enableInternalSources }} diff --git a/eng/common/templates-official/post-build/post-build.yml b/eng/common/templates-official/post-build/post-build.yml index da1f40958b45..0dfa387e7b78 100644 --- a/eng/common/templates-official/post-build/post-build.yml +++ b/eng/common/templates-official/post-build/post-build.yml @@ -272,14 +272,16 @@ stages: - task: NuGetAuthenticate@1 - - task: PowerShell@2 + - task: AzureCLI@2 displayName: Publish Using Darc inputs: - filePath: $(Build.SourcesDirectory)/eng/common/post-build/publish-using-darc.ps1 + azureSubscription: "Darc: Maestro Production" + scriptType: ps + scriptLocation: scriptPath + scriptPath: $(Build.SourcesDirectory)/eng/common/post-build/publish-using-darc.ps1 arguments: -BuildId $(BARBuildId) -PublishingInfraVersion ${{ parameters.publishingInfraVersion }} -AzdoToken '$(publishing-dnceng-devdiv-code-r-build-re)' - -MaestroToken '$(MaestroApiAccessToken)' -WaitPublishingFinish true -ArtifactsPublishingAdditionalParameters '${{ parameters.artifactsPublishingAdditionalParameters }}' -SymbolPublishingAdditionalParameters '${{ parameters.symbolPublishingAdditionalParameters }}' diff --git a/eng/common/templates-official/steps/enable-internal-runtimes.yml b/eng/common/templates-official/steps/enable-internal-runtimes.yml new file mode 100644 index 000000000000..93a8394a666b --- /dev/null +++ b/eng/common/templates-official/steps/enable-internal-runtimes.yml @@ -0,0 +1,28 @@ +# Obtains internal runtime download credentials and populates the 'dotnetbuilds-internal-container-read-token-base64' +# variable with the base64-encoded SAS token, by default + +parameters: +- name: federatedServiceConnection + type: string + default: 'dotnetbuilds-internal-read' +- name: outputVariableName + type: string + default: 'dotnetbuilds-internal-container-read-token-base64' +- name: expiryInHours + type: number + default: 1 +- name: base64Encode + type: boolean + default: true + +steps: +- ${{ if ne(variables['System.TeamProject'], 'public') }}: + - template: /eng/common/templates-official/steps/get-delegation-sas.yml + parameters: + federatedServiceConnection: ${{ parameters.federatedServiceConnection }} + outputVariableName: ${{ parameters.outputVariableName }} + expiryInHours: ${{ parameters.expiryInHours }} + base64Encode: ${{ parameters.base64Encode }} + storageAccount: dotnetbuilds + container: internal + permissions: rl diff --git a/eng/common/templates-official/steps/get-delegation-sas.yml b/eng/common/templates-official/steps/get-delegation-sas.yml new file mode 100644 index 000000000000..c0e8f91317f0 --- /dev/null +++ b/eng/common/templates-official/steps/get-delegation-sas.yml @@ -0,0 +1,43 @@ +parameters: +- name: federatedServiceConnection + type: string +- name: outputVariableName + type: string +- name: expiryInHours + type: number + default: 1 +- name: base64Encode + type: boolean + default: false +- name: storageAccount + type: string +- name: container + type: string +- name: permissions + type: string + default: 'rl' + +steps: +- task: AzureCLI@2 + displayName: 'Generate delegation SAS Token for ${{ parameters.storageAccount }}/${{ parameters.container }}' + inputs: + azureSubscription: ${{ parameters.federatedServiceConnection }} + scriptType: 'pscore' + scriptLocation: 'inlineScript' + inlineScript: | + # Calculate the expiration of the SAS token and convert to UTC + $expiry = (Get-Date).AddHours(${{ parameters.expiryInHours }}).ToUniversalTime().ToString("yyyy-MM-ddTHH:mm:ssZ") + + $sas = az storage container generate-sas --account-name ${{ parameters.storageAccount }} --name ${{ parameters.container }} --permissions ${{ parameters.permissions }} --expiry $expiry --auth-mode login --as-user -o tsv + + if ($LASTEXITCODE -ne 0) { + Write-Error "Failed to generate SAS token." + exit 1 + } + + if ('${{ parameters.base64Encode }}' -eq 'true') { + $sas = [Convert]::ToBase64String([System.Text.Encoding]::UTF8.GetBytes($sas)) + } + + Write-Host "Setting '${{ parameters.outputVariableName }}' with the access token value" + Write-Host "##vso[task.setvariable variable=${{ parameters.outputVariableName }};issecret=true]$sas" diff --git a/eng/common/templates-official/steps/get-federated-access-token.yml b/eng/common/templates-official/steps/get-federated-access-token.yml new file mode 100644 index 000000000000..e3786cef6dfd --- /dev/null +++ b/eng/common/templates-official/steps/get-federated-access-token.yml @@ -0,0 +1,28 @@ +parameters: +- name: federatedServiceConnection + type: string +- name: outputVariableName + type: string +# Resource to get a token for. Common values include: +# - '499b84ac-1321-427f-aa17-267ca6975798' for Azure DevOps +# - 'https://storage.azure.com/' for storage +# Defaults to Azure DevOps +- name: resource + type: string + default: '499b84ac-1321-427f-aa17-267ca6975798' + +steps: +- task: AzureCLI@2 + displayName: 'Getting federated access token for feeds' + inputs: + azureSubscription: ${{ parameters.federatedServiceConnection }} + scriptType: 'pscore' + scriptLocation: 'inlineScript' + inlineScript: | + $accessToken = az account get-access-token --query accessToken --resource ${{ parameters.resource }} --output tsv + if ($LASTEXITCODE -ne 0) { + Write-Error "Failed to get access token for resource '${{ parameters.resource }}'" + exit 1 + } + Write-Host "Setting '${{ parameters.outputVariableName }}' with the access token value" + Write-Host "##vso[task.setvariable variable=${{ parameters.outputVariableName }};issecret=true]$accessToken" diff --git a/eng/common/templates/job/publish-build-assets.yml b/eng/common/templates/job/publish-build-assets.yml index 8ec0151def21..9fd69fa7c9b7 100644 --- a/eng/common/templates/job/publish-build-assets.yml +++ b/eng/common/templates/job/publish-build-assets.yml @@ -74,13 +74,16 @@ jobs: - task: NuGetAuthenticate@1 - - task: PowerShell@2 + - task: AzureCLI@2 displayName: Publish Build Assets inputs: - filePath: eng\common\sdk-task.ps1 - arguments: -task PublishBuildAssets -restore -msbuildEngine dotnet + azureSubscription: "Darc: Maestro Production" + scriptType: ps + scriptLocation: scriptPath + scriptPath: $(Build.SourcesDirectory)/eng/common/sdk-task.ps1 + arguments: > + -task PublishBuildAssets -restore -msbuildEngine dotnet /p:ManifestsPath='$(Build.StagingDirectory)/Download/AssetManifests' - /p:BuildAssetRegistryToken=$(MaestroAccessToken) /p:MaestroApiEndpoint=https://maestro.dot.net /p:PublishUsingPipelines=${{ parameters.publishUsingPipelines }} /p:OfficialBuildId=$(Build.BuildNumber) @@ -140,7 +143,6 @@ jobs: arguments: -BuildId $(BARBuildId) -PublishingInfraVersion 3 -AzdoToken '$(publishing-dnceng-devdiv-code-r-build-re)' - -MaestroToken '$(MaestroApiAccessToken)' -WaitPublishingFinish true -ArtifactsPublishingAdditionalParameters '${{ parameters.artifactsPublishingAdditionalParameters }}' -SymbolPublishingAdditionalParameters '${{ parameters.symbolPublishingAdditionalParameters }}' diff --git a/eng/common/templates/job/source-build.yml b/eng/common/templates/job/source-build.yml index 8a3deef2b727..c0ff472b697b 100644 --- a/eng/common/templates/job/source-build.yml +++ b/eng/common/templates/job/source-build.yml @@ -31,6 +31,12 @@ parameters: # container and pool. platform: {} + # If set to true and running on a non-public project, + # Internal blob storage locations will be enabled. + # This is not enabled by default because many repositories do not need internal sources + # and do not need to have the required service connections approved in the pipeline. + enableInternalSources: false + jobs: - job: ${{ parameters.jobNamePrefix }}_${{ parameters.platform.name }} displayName: Source-Build (${{ parameters.platform.name }}) @@ -61,6 +67,8 @@ jobs: clean: all steps: + - ${{ if eq(parameters.enableInternalSources, true) }}: + - template: /eng/common/templates/steps/enable-internal-runtimes.yml - template: /eng/common/templates/steps/source-build.yml parameters: platform: ${{ parameters.platform }} diff --git a/eng/common/templates/job/source-index-stage1.yml b/eng/common/templates/job/source-index-stage1.yml index 43ee0c202fc7..0b6bb89dc78a 100644 --- a/eng/common/templates/job/source-index-stage1.yml +++ b/eng/common/templates/job/source-index-stage1.yml @@ -70,16 +70,13 @@ jobs: scriptType: 'ps' scriptLocation: 'inlineScript' inlineScript: | - echo "##vso[task.setvariable variable=ARM_CLIENT_ID]$env:servicePrincipalId" - echo "##vso[task.setvariable variable=ARM_ID_TOKEN]$env:idToken" - echo "##vso[task.setvariable variable=ARM_TENANT_ID]$env:tenantId" + echo "##vso[task.setvariable variable=ARM_CLIENT_ID;issecret=true]$env:servicePrincipalId" + echo "##vso[task.setvariable variable=ARM_ID_TOKEN;issecret=true]$env:idToken" + echo "##vso[task.setvariable variable=ARM_TENANT_ID;issecret=true]$env:tenantId" - script: | - echo "Client ID: $(ARM_CLIENT_ID)" - echo "ID Token: $(ARM_ID_TOKEN)" - echo "Tenant ID: $(ARM_TENANT_ID)" az login --service-principal -u $(ARM_CLIENT_ID) --tenant $(ARM_TENANT_ID) --allow-no-subscriptions --federated-token $(ARM_ID_TOKEN) displayName: "Login to Azure" - script: $(Agent.TempDirectory)/.source-index/tools/UploadIndexStage1 -i .source-index/stage1output -n $(Build.Repository.Name) -s netsourceindexstage1 -b stage1 - displayName: Upload stage1 artifacts to source index \ No newline at end of file + displayName: Upload stage1 artifacts to source index diff --git a/eng/common/templates/jobs/source-build.yml b/eng/common/templates/jobs/source-build.yml index a15b07eb51d9..5f46bfa895c1 100644 --- a/eng/common/templates/jobs/source-build.yml +++ b/eng/common/templates/jobs/source-build.yml @@ -21,6 +21,12 @@ parameters: # one job runs on 'defaultManagedPlatform'. platforms: [] + # If set to true and running on a non-public project, + # Internal nuget and blob storage locations will be enabled. + # This is not enabled by default because many repositories do not need internal sources + # and do not need to have the required service connections approved in the pipeline. + enableInternalSources: false + jobs: - ${{ if ne(parameters.allCompletedJobId, '') }}: @@ -38,9 +44,11 @@ jobs: parameters: jobNamePrefix: ${{ parameters.jobNamePrefix }} platform: ${{ platform }} + enableInternalSources: ${{ parameters.enableInternalSources }} - ${{ if eq(length(parameters.platforms), 0) }}: - template: /eng/common/templates/job/source-build.yml parameters: jobNamePrefix: ${{ parameters.jobNamePrefix }} platform: ${{ parameters.defaultManagedPlatform }} + enableInternalSources: ${{ parameters.enableInternalSources }} diff --git a/eng/common/templates/post-build/post-build.yml b/eng/common/templates/post-build/post-build.yml index aba44a25a338..2db4933468fd 100644 --- a/eng/common/templates/post-build/post-build.yml +++ b/eng/common/templates/post-build/post-build.yml @@ -268,14 +268,16 @@ stages: - task: NuGetAuthenticate@1 - - task: PowerShell@2 + - task: AzureCLI@2 displayName: Publish Using Darc inputs: - filePath: $(Build.SourcesDirectory)/eng/common/post-build/publish-using-darc.ps1 + azureSubscription: "Darc: Maestro Production" + scriptType: ps + scriptLocation: scriptPath + scriptPath: $(Build.SourcesDirectory)/eng/common/post-build/publish-using-darc.ps1 arguments: -BuildId $(BARBuildId) -PublishingInfraVersion ${{ parameters.publishingInfraVersion }} -AzdoToken '$(publishing-dnceng-devdiv-code-r-build-re)' - -MaestroToken '$(MaestroApiAccessToken)' -WaitPublishingFinish true -ArtifactsPublishingAdditionalParameters '${{ parameters.artifactsPublishingAdditionalParameters }}' -SymbolPublishingAdditionalParameters '${{ parameters.symbolPublishingAdditionalParameters }}' diff --git a/eng/common/templates/post-build/setup-maestro-vars.yml b/eng/common/templates/post-build/setup-maestro-vars.yml index 0c87f149a4ad..64b9abc68504 100644 --- a/eng/common/templates/post-build/setup-maestro-vars.yml +++ b/eng/common/templates/post-build/setup-maestro-vars.yml @@ -11,13 +11,14 @@ steps: artifactName: ReleaseConfigs checkDownloadedFiles: true - - task: PowerShell@2 + - task: AzureCLI@2 name: setReleaseVars displayName: Set Release Configs Vars inputs: - targetType: inline - pwsh: true - script: | + azureSubscription: "Darc: Maestro Production" + scriptType: pscore + scriptLocation: inlineScript + inlineScript: | try { if (!$Env:PromoteToMaestroChannels -or $Env:PromoteToMaestroChannels.Trim() -eq '') { $Content = Get-Content $(Build.StagingDirectory)/ReleaseConfigs/ReleaseConfigs.txt @@ -31,15 +32,16 @@ steps: $AzureDevOpsBuildId = $Env:Build_BuildId } else { - $buildApiEndpoint = "${Env:MaestroApiEndPoint}/api/builds/${Env:BARBuildId}?api-version=${Env:MaestroApiVersion}" + . $(Build.SourcesDirectory)\eng\common\tools.ps1 + $darc = Get-Darc + $buildInfo = & $darc get-build ` + --id ${{ parameters.BARBuildId }} ` + --extended ` + --output-format json ` + --ci ` + | convertFrom-Json - $apiHeaders = New-Object 'System.Collections.Generic.Dictionary[[String],[String]]' - $apiHeaders.Add('Accept', 'application/json') - $apiHeaders.Add('Authorization',"Bearer ${Env:MAESTRO_API_TOKEN}") - - $buildInfo = try { Invoke-WebRequest -Method Get -Uri $buildApiEndpoint -Headers $apiHeaders | ConvertFrom-Json } catch { Write-Host "Error: $_" } - - $BarId = $Env:BARBuildId + $BarId = ${{ parameters.BARBuildId }} $Channels = $Env:PromoteToMaestroChannels -split "," $Channels = $Channels -join "][" $Channels = "[$Channels]" @@ -65,6 +67,4 @@ steps: exit 1 } env: - MAESTRO_API_TOKEN: $(MaestroApiAccessToken) - BARBuildId: ${{ parameters.BARBuildId }} PromoteToMaestroChannels: ${{ parameters.PromoteToChannelIds }} diff --git a/eng/common/templates/steps/enable-internal-runtimes.yml b/eng/common/templates/steps/enable-internal-runtimes.yml new file mode 100644 index 000000000000..54dc9416c519 --- /dev/null +++ b/eng/common/templates/steps/enable-internal-runtimes.yml @@ -0,0 +1,28 @@ +# Obtains internal runtime download credentials and populates the 'dotnetbuilds-internal-container-read-token-base64' +# variable with the base64-encoded SAS token, by default + +parameters: +- name: federatedServiceConnection + type: string + default: 'dotnetbuilds-internal-read' +- name: outputVariableName + type: string + default: 'dotnetbuilds-internal-container-read-token-base64' +- name: expiryInHours + type: number + default: 1 +- name: base64Encode + type: boolean + default: true + +steps: +- ${{ if ne(variables['System.TeamProject'], 'public') }}: + - template: /eng/common/templates/steps/get-delegation-sas.yml + parameters: + federatedServiceConnection: ${{ parameters.federatedServiceConnection }} + outputVariableName: ${{ parameters.outputVariableName }} + expiryInHours: ${{ parameters.expiryInHours }} + base64Encode: ${{ parameters.base64Encode }} + storageAccount: dotnetbuilds + container: internal + permissions: rl diff --git a/eng/common/templates/steps/get-delegation-sas.yml b/eng/common/templates/steps/get-delegation-sas.yml new file mode 100644 index 000000000000..c0e8f91317f0 --- /dev/null +++ b/eng/common/templates/steps/get-delegation-sas.yml @@ -0,0 +1,43 @@ +parameters: +- name: federatedServiceConnection + type: string +- name: outputVariableName + type: string +- name: expiryInHours + type: number + default: 1 +- name: base64Encode + type: boolean + default: false +- name: storageAccount + type: string +- name: container + type: string +- name: permissions + type: string + default: 'rl' + +steps: +- task: AzureCLI@2 + displayName: 'Generate delegation SAS Token for ${{ parameters.storageAccount }}/${{ parameters.container }}' + inputs: + azureSubscription: ${{ parameters.federatedServiceConnection }} + scriptType: 'pscore' + scriptLocation: 'inlineScript' + inlineScript: | + # Calculate the expiration of the SAS token and convert to UTC + $expiry = (Get-Date).AddHours(${{ parameters.expiryInHours }}).ToUniversalTime().ToString("yyyy-MM-ddTHH:mm:ssZ") + + $sas = az storage container generate-sas --account-name ${{ parameters.storageAccount }} --name ${{ parameters.container }} --permissions ${{ parameters.permissions }} --expiry $expiry --auth-mode login --as-user -o tsv + + if ($LASTEXITCODE -ne 0) { + Write-Error "Failed to generate SAS token." + exit 1 + } + + if ('${{ parameters.base64Encode }}' -eq 'true') { + $sas = [Convert]::ToBase64String([System.Text.Encoding]::UTF8.GetBytes($sas)) + } + + Write-Host "Setting '${{ parameters.outputVariableName }}' with the access token value" + Write-Host "##vso[task.setvariable variable=${{ parameters.outputVariableName }};issecret=true]$sas" diff --git a/eng/common/templates/steps/get-federated-access-token.yml b/eng/common/templates/steps/get-federated-access-token.yml new file mode 100644 index 000000000000..c8c49cc0e8f0 --- /dev/null +++ b/eng/common/templates/steps/get-federated-access-token.yml @@ -0,0 +1,28 @@ +parameters: +- name: federatedServiceConnection + type: string +- name: outputVariableName + type: string +# Resource to get a token for. Common values include: +# - '499b84ac-1321-427f-aa17-267ca6975798' for Azure DevOps +# - 'https://storage.azure.com/' for storage +# Defaults to Azure DevOps +- name: resource + type: string + default: '499b84ac-1321-427f-aa17-267ca6975798' + +steps: +- task: AzureCLI@2 + displayName: 'Getting federated access token for feeds' + inputs: + azureSubscription: ${{ parameters.federatedServiceConnection }} + scriptType: 'pscore' + scriptLocation: 'inlineScript' + inlineScript: | + $accessToken = az account get-access-token --query accessToken --resource ${{ parameters.resource }} --output tsv + if ($LASTEXITCODE -ne 0) { + Write-Error "Failed to get access token for resource '${{ parameters.resource }}'" + exit 1 + } + Write-Host "Setting '${{ parameters.outputVariableName }}' with the access token value" + Write-Host "##vso[task.setvariable variable=${{ parameters.outputVariableName }};issecret=true]$accessToken" \ No newline at end of file diff --git a/global.json b/global.json index bfd92fee2223..c89cadcdf55b 100644 --- a/global.json +++ b/global.json @@ -27,7 +27,7 @@ }, "msbuild-sdks": { "Yarn.MSBuild": "1.22.19", - "Microsoft.DotNet.Arcade.Sdk": "8.0.0-beta.24266.3", - "Microsoft.DotNet.Helix.Sdk": "8.0.0-beta.24266.3" + "Microsoft.DotNet.Arcade.Sdk": "8.0.0-beta.24352.1", + "Microsoft.DotNet.Helix.Sdk": "8.0.0-beta.24352.1" } } From f7fc1e7b265c7e2077a8bf9ca443432299964989 Mon Sep 17 00:00:00 2001 From: Mackinnon Buck Date: Tue, 9 Jul 2024 12:00:27 -0700 Subject: [PATCH 231/391] Update SDK and baseline --- eng/Baseline.Designer.props | 443 ++++++++++++++++++------------------ eng/Baseline.xml | 214 ++++++++--------- eng/Versions.props | 2 +- global.json | 4 +- 4 files changed, 332 insertions(+), 331 deletions(-) diff --git a/eng/Baseline.Designer.props b/eng/Baseline.Designer.props index a89151e8a015..b2617286135b 100644 --- a/eng/Baseline.Designer.props +++ b/eng/Baseline.Designer.props @@ -2,117 +2,117 @@ $(MSBuildAllProjects);$(MSBuildThisFileFullPath) - 8.0.5 + 8.0.7 - 8.0.5 + 8.0.7 - 8.0.5 + 8.0.7 - 8.0.5 + 8.0.7 - 8.0.5 + 8.0.7 - 8.0.5 + 8.0.7 - 8.0.5 + 8.0.7 - 8.0.5 + 8.0.7 - 8.0.5 + 8.0.7 - 8.0.5 + 8.0.7 - 8.0.5 + 8.0.7 - 8.0.5 + 8.0.7 - 8.0.5 + 8.0.7 - 8.0.5 + 8.0.7 - 8.0.5 + 8.0.7 - 8.0.5 + 8.0.7 - 8.0.5 + 8.0.7 - 8.0.5 + 8.0.7 - 8.0.5 + 8.0.7 - 8.0.5 + 8.0.7 - 8.0.5 + 8.0.7 - 8.0.5 + 8.0.7 - + - 8.0.5 + 8.0.7 - 8.0.5 + 8.0.7 - 8.0.5 + 8.0.7 @@ -120,145 +120,146 @@ - 8.0.5 + 8.0.7 - + - + - + - 8.0.5 + 8.0.7 - + + - 8.0.5 + 8.0.7 - 8.0.5 + 8.0.7 - + - 8.0.5 + 8.0.7 - - + + - 8.0.5 + 8.0.7 - 8.0.5 + 8.0.7 - - + + - 8.0.5 + 8.0.7 - + - 8.0.5 + 8.0.7 - + - 8.0.5 + 8.0.7 - + - 8.0.5 + 8.0.7 - - + + - 8.0.5 + 8.0.7 - - - + + + - 8.0.5 + 8.0.7 - - - + + + - 8.0.5 + 8.0.7 - - + + - 8.0.5 + 8.0.7 - 8.0.5 + 8.0.7 - 8.0.5 + 8.0.7 - - - + + + - 8.0.5 + 8.0.7 @@ -267,51 +268,51 @@ - 8.0.5 + 8.0.7 - + - + - + - + - 8.0.5 + 8.0.7 - 8.0.5 + 8.0.7 - + - + - + - 8.0.5 + 8.0.7 - - + + @@ -321,8 +322,8 @@ - - + + @@ -330,8 +331,8 @@ - - + + @@ -342,58 +343,58 @@ - 8.0.5 + 8.0.7 - 8.0.5 + 8.0.7 - - + + - 8.0.5 + 8.0.7 - + - + - + - 8.0.5 + 8.0.7 - + - + - + - 8.0.5 + 8.0.7 - + - 8.0.5 + 8.0.7 @@ -402,7 +403,7 @@ - 8.0.5 + 8.0.7 @@ -410,71 +411,71 @@ - 8.0.5 + 8.0.7 - 8.0.5 + 8.0.7 - + - + - + - + - 8.0.5 + 8.0.7 - - + + - + - - + + - 8.0.5 + 8.0.7 - - + + - 8.0.5 + 8.0.7 - - + + - 8.0.5 + 8.0.7 @@ -490,52 +491,52 @@ - 8.0.5 + 8.0.7 - 8.0.5 + 8.0.7 - 8.0.5 + 8.0.7 - + - 8.0.5 + 8.0.7 - + - 8.0.5 + 8.0.7 - - + + - 8.0.5 + 8.0.7 - 8.0.5 + 8.0.7 @@ -544,54 +545,54 @@ - 8.0.5 + 8.0.7 - 8.0.5 + 8.0.7 - - + + - - + + - - + + - 8.0.5 + 8.0.7 - - + + - - + + - - + + - - + + @@ -599,83 +600,83 @@ - 8.0.5 + 8.0.7 - + - + - + - + - + - 8.0.5 + 8.0.7 - + - + - + - 8.0.5 + 8.0.7 - + - + - + - 8.0.5 + 8.0.7 - + - + - + - 8.0.5 + 8.0.7 - - - - + + + + - 8.0.5 + 8.0.7 @@ -684,64 +685,64 @@ - 8.0.5 + 8.0.7 - 8.0.5 + 8.0.7 - 8.0.5 + 8.0.7 - 8.0.5 + 8.0.7 - + - 8.0.5 + 8.0.7 - + - 8.0.5 + 8.0.7 - 8.0.5 + 8.0.7 - 8.0.5 + 8.0.7 - 8.0.5 + 8.0.7 - 8.0.5 + 8.0.7 - 8.0.5 + 8.0.7 - 8.0.5 + 8.0.7 @@ -763,7 +764,7 @@ - 8.0.5 + 8.0.7 @@ -785,7 +786,7 @@ - 8.0.5 + 8.0.7 @@ -801,23 +802,23 @@ - 8.0.5 + 8.0.7 - + - + - + @@ -825,24 +826,24 @@ - 8.0.5 + 8.0.7 - 8.0.5 + 8.0.7 - - - + + + - 8.0.5 + 8.0.7 - 8.0.5 + 8.0.7 @@ -852,7 +853,7 @@ - 8.0.5 + 8.0.7 @@ -861,73 +862,73 @@ - 8.0.5 + 8.0.7 - + - + - + - 8.0.5 + 8.0.7 - + - + - + - 8.0.5 + 8.0.7 - + - + - + - 8.0.5 + 8.0.7 - 8.0.5 + 8.0.7 @@ -956,11 +957,11 @@ - 8.0.5 + 8.0.7 - 8.0.5 + 8.0.7 @@ -978,18 +979,18 @@ - 8.0.5 + 8.0.7 - 8.0.5 + 8.0.7 - + - 8.0.5 + 8.0.7 diff --git a/eng/Baseline.xml b/eng/Baseline.xml index 7d886afd31fc..389370e6e631 100644 --- a/eng/Baseline.xml +++ b/eng/Baseline.xml @@ -1,113 +1,113 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/eng/Versions.props b/eng/Versions.props index 2faf5a56c9ca..1e7613c5fd39 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -11,7 +11,7 @@ 8 - false + true 7.1.2 *-* + + + + + + + + @@ -30,9 +38,17 @@ + + + + + + + + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 61a1664b6c8e..d5533777725d 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -376,26 +376,26 @@ https://github.com/dotnet/winforms abda8e3bfa78319363526b5a5f86863ec979940e - + https://github.com/dotnet/arcade - 8b879da4e449c48d99f3f642fc429379a64e8fe8 + c9efa535175049eb9cba06cae1f8c3d5dbe768a9 - + https://github.com/dotnet/arcade - 8b879da4e449c48d99f3f642fc429379a64e8fe8 + c9efa535175049eb9cba06cae1f8c3d5dbe768a9 - + https://github.com/dotnet/arcade - 8b879da4e449c48d99f3f642fc429379a64e8fe8 + c9efa535175049eb9cba06cae1f8c3d5dbe768a9 - + https://github.com/dotnet/arcade - 8b879da4e449c48d99f3f642fc429379a64e8fe8 + c9efa535175049eb9cba06cae1f8c3d5dbe768a9 - + https://github.com/dotnet/arcade - 8b879da4e449c48d99f3f642fc429379a64e8fe8 + c9efa535175049eb9cba06cae1f8c3d5dbe768a9 https://github.com/dotnet/extensions diff --git a/eng/Versions.props b/eng/Versions.props index 1e7613c5fd39..f8bf8015cbcd 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -162,9 +162,9 @@ 6.2.4 6.2.4 - 8.0.0-beta.24352.1 - 8.0.0-beta.24352.1 - 8.0.0-beta.24352.1 + 8.0.0-beta.24360.5 + 8.0.0-beta.24360.5 + 8.0.0-beta.24360.5 8.0.0-alpha.1.24269.1 diff --git a/eng/common/templates-official/job/publish-build-assets.yml b/eng/common/templates-official/job/publish-build-assets.yml index d01739c12857..ba3e7df81587 100644 --- a/eng/common/templates-official/job/publish-build-assets.yml +++ b/eng/common/templates-official/job/publish-build-assets.yml @@ -140,11 +140,14 @@ jobs: BARBuildId: ${{ parameters.BARBuildId }} PromoteToChannelIds: ${{ parameters.PromoteToChannelIds }} - - task: PowerShell@2 + - task: AzureCLI@2 displayName: Publish Using Darc inputs: - filePath: $(Build.SourcesDirectory)/eng/common/post-build/publish-using-darc.ps1 - arguments: -BuildId $(BARBuildId) + azureSubscription: "Darc: Maestro Production" + scriptType: ps + scriptLocation: scriptPath + scriptPath: $(Build.SourcesDirectory)/eng/common/post-build/publish-using-darc.ps1 + arguments: -BuildId $(BARBuildId) -PublishingInfraVersion 3 -AzdoToken '$(publishing-dnceng-devdiv-code-r-build-re)' -WaitPublishingFinish true diff --git a/eng/common/templates/job/publish-build-assets.yml b/eng/common/templates/job/publish-build-assets.yml index 9fd69fa7c9b7..57a41f0a3e13 100644 --- a/eng/common/templates/job/publish-build-assets.yml +++ b/eng/common/templates/job/publish-build-assets.yml @@ -136,11 +136,14 @@ jobs: BARBuildId: ${{ parameters.BARBuildId }} PromoteToChannelIds: ${{ parameters.PromoteToChannelIds }} - - task: PowerShell@2 + - task: AzureCLI@2 displayName: Publish Using Darc inputs: - filePath: $(Build.SourcesDirectory)/eng/common/post-build/publish-using-darc.ps1 - arguments: -BuildId $(BARBuildId) + azureSubscription: "Darc: Maestro Production" + scriptType: ps + scriptLocation: scriptPath + scriptPath: $(Build.SourcesDirectory)/eng/common/post-build/publish-using-darc.ps1 + arguments: -BuildId $(BARBuildId) -PublishingInfraVersion 3 -AzdoToken '$(publishing-dnceng-devdiv-code-r-build-re)' -WaitPublishingFinish true diff --git a/global.json b/global.json index c6aeefe7556d..e1447c5750a5 100644 --- a/global.json +++ b/global.json @@ -27,7 +27,7 @@ }, "msbuild-sdks": { "Yarn.MSBuild": "1.22.19", - "Microsoft.DotNet.Arcade.Sdk": "8.0.0-beta.24352.1", - "Microsoft.DotNet.Helix.Sdk": "8.0.0-beta.24352.1" + "Microsoft.DotNet.Arcade.Sdk": "8.0.0-beta.24360.5", + "Microsoft.DotNet.Helix.Sdk": "8.0.0-beta.24360.5" } } diff --git a/src/Components/test/E2ETest/ServerRenderingTests/FormHandlingTests/FormWithParentBindingContextTest.cs b/src/Components/test/E2ETest/ServerRenderingTests/FormHandlingTests/FormWithParentBindingContextTest.cs index 80423bd8e8d7..83592f562e1b 100644 --- a/src/Components/test/E2ETest/ServerRenderingTests/FormHandlingTests/FormWithParentBindingContextTest.cs +++ b/src/Components/test/E2ETest/ServerRenderingTests/FormHandlingTests/FormWithParentBindingContextTest.cs @@ -8,6 +8,7 @@ using Microsoft.AspNetCore.Components.E2ETest.Infrastructure; using Microsoft.AspNetCore.Components.E2ETest.Infrastructure.ServerFixtures; using Microsoft.AspNetCore.E2ETesting; +using Microsoft.AspNetCore.Testing; using OpenQA.Selenium; using TestServer; using Xunit.Abstractions; @@ -1250,6 +1251,7 @@ public void PostingFormWithErrorsDoesNotExceedMaximumErrors() } [Fact] + [QuarantinedTest("https://github.com/dotnet/aspnetcore/issues/54447")] public void CanBindToFormWithFiles() { var profilePicture = TempFile.Create(_tempDirectory, "txt", "This is a profile picture."); @@ -1484,7 +1486,7 @@ public void EnhancedFormThatCallsNavigationManagerRefreshDoesNotPushHistoryEntry Browser.Navigate().Back(); Browser.Equal(startUrl, () => Browser.Url); } - + [Fact] public void EnhancedFormThatCallsNavigationManagerRefreshDoesNotPushHistoryEntry_Streaming() { From 0d18db83732b323e8c0ef12d8f5fd06ef2c54438 Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" <42748379+dotnet-maestro[bot]@users.noreply.github.com> Date: Tue, 16 Jul 2024 14:26:15 +0000 Subject: [PATCH 233/391] Update dependencies from https://github.com/dotnet/source-build-reference-packages build 20240715.2 (#56822) [release/8.0] Update dependencies from dotnet/source-build-reference-packages --- eng/Version.Details.xml | 4 ++-- eng/Versions.props | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index d5533777725d..ea959324af92 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -338,9 +338,9 @@ 9a1c3e1b7f0c8763d4c96e593961a61a72679a7b - + https://github.com/dotnet/source-build-reference-packages - 6ed73280a6d70f7e7ac39c86f2abe8c10983f0bb + 8258018588e4435f92c8355b51c84c7084f36eae diff --git a/eng/Versions.props b/eng/Versions.props index f8bf8015cbcd..f2c7d1ac3b42 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -168,7 +168,7 @@ 8.0.0-alpha.1.24269.1 - 8.0.0-alpha.1.24257.2 + 8.0.0-alpha.1.24365.2 2.0.0-beta-23228-03 From 6497952ea5962ba6cc498b1299c848d3b17e6f8f Mon Sep 17 00:00:00 2001 From: DotNet-Bot Date: Tue, 16 Jul 2024 22:58:33 +0000 Subject: [PATCH 234/391] Update dependencies from https://dev.azure.com/dnceng/internal/_git/dotnet-runtime build 20240716.12 Microsoft.Extensions.HostFactoryResolver.Sources , Microsoft.Internal.Runtime.AspNetCore.Transport , Microsoft.NET.Runtime.MonoAOTCompiler.Task , Microsoft.NET.Runtime.WebAssembly.Sdk , Microsoft.NETCore.App.Ref , Microsoft.NETCore.App.Runtime.AOT.win-x64.Cross.browser-wasm , Microsoft.NETCore.App.Runtime.win-x64 , Microsoft.NETCore.BrowserDebugHost.Transport , Microsoft.NETCore.Platforms , System.Net.Http.WinHttpHandler , Microsoft.SourceBuild.Intermediate.runtime.linux-x64 From Version 8.0.7-servicing.24313.11 -> To Version 8.0.8-servicing.24366.12 --- NuGet.config | 2 ++ eng/Version.Details.xml | 44 ++++++++++++++++++++--------------------- eng/Versions.props | 22 ++++++++++----------- 3 files changed, 35 insertions(+), 33 deletions(-) diff --git a/NuGet.config b/NuGet.config index e573a662403a..7a09cc094ea8 100644 --- a/NuGet.config +++ b/NuGet.config @@ -18,6 +18,7 @@ + @@ -45,6 +46,7 @@ + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index ea959324af92..3ed9634b863d 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -121,9 +121,9 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime 5535e31a712343a63f5d7d796cd874e563e5ac14 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 2aade6beb02ea367fd97c4070a4198802fe61c03 + 08338fcaa5c9b9a8190abb99222fed12aaba956c https://dev.azure.com/dnceng/internal/_git/dotnet-runtime @@ -185,9 +185,9 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime 5535e31a712343a63f5d7d796cd874e563e5ac14 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 2aade6beb02ea367fd97c4070a4198802fe61c03 + 08338fcaa5c9b9a8190abb99222fed12aaba956c https://github.com/dotnet/source-build-externals @@ -223,9 +223,9 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime 5535e31a712343a63f5d7d796cd874e563e5ac14 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 2aade6beb02ea367fd97c4070a4198802fe61c03 + 08338fcaa5c9b9a8190abb99222fed12aaba956c https://dev.azure.com/dnceng/internal/_git/dotnet-runtime @@ -275,17 +275,17 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime 2aade6beb02ea367fd97c4070a4198802fe61c03 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 2aade6beb02ea367fd97c4070a4198802fe61c03 + 08338fcaa5c9b9a8190abb99222fed12aaba956c - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 2aade6beb02ea367fd97c4070a4198802fe61c03 + 08338fcaa5c9b9a8190abb99222fed12aaba956c - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 2aade6beb02ea367fd97c4070a4198802fe61c03 + 08338fcaa5c9b9a8190abb99222fed12aaba956c https://dev.azure.com/dnceng/internal/_git/dotnet-runtime @@ -316,22 +316,22 @@ Win-x64 is used here because we have picked an arbitrary runtime identifier to flow the version of the latest NETCore.App runtime. All Runtime.$rid packages should have the same version. --> - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 2aade6beb02ea367fd97c4070a4198802fe61c03 + 08338fcaa5c9b9a8190abb99222fed12aaba956c - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 2aade6beb02ea367fd97c4070a4198802fe61c03 + 08338fcaa5c9b9a8190abb99222fed12aaba956c - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 2aade6beb02ea367fd97c4070a4198802fe61c03 + 08338fcaa5c9b9a8190abb99222fed12aaba956c - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 2aade6beb02ea367fd97c4070a4198802fe61c03 + 08338fcaa5c9b9a8190abb99222fed12aaba956c https://github.com/dotnet/xdt @@ -368,9 +368,9 @@ - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 2aade6beb02ea367fd97c4070a4198802fe61c03 + 08338fcaa5c9b9a8190abb99222fed12aaba956c https://github.com/dotnet/winforms diff --git a/eng/Versions.props b/eng/Versions.props index f2c7d1ac3b42..63bae5298b39 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -67,12 +67,12 @@ 8.0.1 - 8.0.7 - 8.0.7 - 8.0.7 - 8.0.7 - 8.0.7 - 8.0.7-servicing.24313.11 + 8.0.8 + 8.0.8 + 8.0.8 + 8.0.8 + 8.0.8 + 8.0.8-servicing.24366.12 8.0.0 8.0.0 8.0.0 @@ -93,7 +93,7 @@ 8.0.0 8.0.0 8.0.0 - 8.0.7-servicing.24313.11 + 8.0.8-servicing.24366.12 8.0.0 8.0.0 8.0.0 @@ -109,7 +109,7 @@ 8.0.0 8.0.2 8.0.0 - 8.0.7-servicing.24313.11 + 8.0.8-servicing.24366.12 8.0.0 8.0.1 8.0.0 @@ -117,7 +117,7 @@ 8.0.0-rtm.23520.14 8.0.0 8.0.0 - 8.0.1 + 8.0.2 8.0.0 8.0.0 8.0.0 @@ -129,9 +129,9 @@ 8.0.0 8.0.0 8.0.0 - 8.0.7-servicing.24313.11 + 8.0.8-servicing.24366.12 - 8.0.7-servicing.24313.11 + 8.0.8-servicing.24366.12 8.0.0 8.0.1 From 00555a14f66fd3631d201abb6e3f82197584937f Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" <42748379+dotnet-maestro[bot]@users.noreply.github.com> Date: Wed, 17 Jul 2024 14:11:10 +0000 Subject: [PATCH 235/391] Update dependencies from https://github.com/dotnet/source-build-reference-packages build 20240716.1 (#56849) [release/8.0] Update dependencies from dotnet/source-build-reference-packages --- eng/Version.Details.xml | 4 ++-- eng/Versions.props | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index ea959324af92..094e1757a6f2 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -338,9 +338,9 @@ 9a1c3e1b7f0c8763d4c96e593961a61a72679a7b - + https://github.com/dotnet/source-build-reference-packages - 8258018588e4435f92c8355b51c84c7084f36eae + a489be6626823d2adcf396c9e6e72987a7229173 diff --git a/eng/Versions.props b/eng/Versions.props index f2c7d1ac3b42..d4e54e5f14e6 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -168,7 +168,7 @@ 8.0.0-alpha.1.24269.1 - 8.0.0-alpha.1.24365.2 + 8.0.0-alpha.1.24366.1 2.0.0-beta-23228-03 From b1fbaaab3f1c9fe17d22eda6c0425c2f2aa89674 Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" <42748379+dotnet-maestro[bot]@users.noreply.github.com> Date: Wed, 17 Jul 2024 17:27:54 +0000 Subject: [PATCH 236/391] Update dependencies from https://github.com/dotnet/arcade build 20240717.1 (#56854) [release/8.0] Update dependencies from dotnet/arcade --- eng/Version.Details.xml | 20 +++++++++---------- eng/Versions.props | 6 +++--- eng/common/sdl/NuGet.config | 4 ++-- eng/common/sdl/execute-all-sdl-tools.ps1 | 4 +--- eng/common/sdl/init-sdl.ps1 | 8 -------- eng/common/sdl/sdl.ps1 | 4 +++- .../templates-official/steps/execute-sdl.yml | 2 -- .../steps/get-federated-access-token.yml | 14 ++++++++++++- eng/common/templates/steps/execute-sdl.yml | 7 ++++--- .../steps/get-federated-access-token.yml | 14 ++++++++++++- global.json | 4 ++-- 11 files changed, 51 insertions(+), 36 deletions(-) diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 094e1757a6f2..8548b11d2cfc 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -376,26 +376,26 @@ https://github.com/dotnet/winforms abda8e3bfa78319363526b5a5f86863ec979940e - + https://github.com/dotnet/arcade - c9efa535175049eb9cba06cae1f8c3d5dbe768a9 + fa3d544b066661522f1ec5d5e8cfd461a29b0f8a - + https://github.com/dotnet/arcade - c9efa535175049eb9cba06cae1f8c3d5dbe768a9 + fa3d544b066661522f1ec5d5e8cfd461a29b0f8a - + https://github.com/dotnet/arcade - c9efa535175049eb9cba06cae1f8c3d5dbe768a9 + fa3d544b066661522f1ec5d5e8cfd461a29b0f8a - + https://github.com/dotnet/arcade - c9efa535175049eb9cba06cae1f8c3d5dbe768a9 + fa3d544b066661522f1ec5d5e8cfd461a29b0f8a - + https://github.com/dotnet/arcade - c9efa535175049eb9cba06cae1f8c3d5dbe768a9 + fa3d544b066661522f1ec5d5e8cfd461a29b0f8a https://github.com/dotnet/extensions diff --git a/eng/Versions.props b/eng/Versions.props index d4e54e5f14e6..0adeb2f534d7 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -162,9 +162,9 @@ 6.2.4 6.2.4 - 8.0.0-beta.24360.5 - 8.0.0-beta.24360.5 - 8.0.0-beta.24360.5 + 8.0.0-beta.24367.1 + 8.0.0-beta.24367.1 + 8.0.0-beta.24367.1 8.0.0-alpha.1.24269.1 diff --git a/eng/common/sdl/NuGet.config b/eng/common/sdl/NuGet.config index 3849bdb3cf51..5bfbb02ef043 100644 --- a/eng/common/sdl/NuGet.config +++ b/eng/common/sdl/NuGet.config @@ -5,11 +5,11 @@ - + - + diff --git a/eng/common/sdl/execute-all-sdl-tools.ps1 b/eng/common/sdl/execute-all-sdl-tools.ps1 index 4715d75e974d..81ded5b7f477 100644 --- a/eng/common/sdl/execute-all-sdl-tools.ps1 +++ b/eng/common/sdl/execute-all-sdl-tools.ps1 @@ -6,7 +6,6 @@ Param( [string] $BranchName=$env:BUILD_SOURCEBRANCH, # Optional: name of branch or version of gdn settings; defaults to master [string] $SourceDirectory=$env:BUILD_SOURCESDIRECTORY, # Required: the directory where source files are located [string] $ArtifactsDirectory = (Join-Path $env:BUILD_ARTIFACTSTAGINGDIRECTORY ('artifacts')), # Required: the directory where build artifacts are located - [string] $AzureDevOpsAccessToken, # Required: access token for dnceng; should be provided via KeyVault # Optional: list of SDL tools to run on source code. See 'configure-sdl-tool.ps1' for tools list # format. @@ -75,7 +74,7 @@ try { } Exec-BlockVerbosely { - & $(Join-Path $PSScriptRoot 'init-sdl.ps1') -GuardianCliLocation $guardianCliLocation -Repository $RepoName -BranchName $BranchName -WorkingDirectory $workingDirectory -AzureDevOpsAccessToken $AzureDevOpsAccessToken -GuardianLoggerLevel $GuardianLoggerLevel + & $(Join-Path $PSScriptRoot 'init-sdl.ps1') -GuardianCliLocation $guardianCliLocation -Repository $RepoName -BranchName $BranchName -WorkingDirectory $workingDirectory -GuardianLoggerLevel $GuardianLoggerLevel } $gdnFolder = Join-Path $workingDirectory '.gdn' @@ -104,7 +103,6 @@ try { -TargetDirectory $targetDirectory ` -GdnFolder $gdnFolder ` -ToolsList $tools ` - -AzureDevOpsAccessToken $AzureDevOpsAccessToken ` -GuardianLoggerLevel $GuardianLoggerLevel ` -CrScanAdditionalRunConfigParams $CrScanAdditionalRunConfigParams ` -PoliCheckAdditionalRunConfigParams $PoliCheckAdditionalRunConfigParams ` diff --git a/eng/common/sdl/init-sdl.ps1 b/eng/common/sdl/init-sdl.ps1 index 3ac1d92b3700..588ff8e22fbe 100644 --- a/eng/common/sdl/init-sdl.ps1 +++ b/eng/common/sdl/init-sdl.ps1 @@ -3,7 +3,6 @@ Param( [string] $Repository, [string] $BranchName='master', [string] $WorkingDirectory, - [string] $AzureDevOpsAccessToken, [string] $GuardianLoggerLevel='Standard' ) @@ -21,14 +20,7 @@ $ci = $true # Don't display the console progress UI - it's a huge perf hit $ProgressPreference = 'SilentlyContinue' -# Construct basic auth from AzDO access token; construct URI to the repository's gdn folder stored in that repository; construct location of zip file -$encodedPat = [Convert]::ToBase64String([System.Text.Encoding]::ASCII.GetBytes(":$AzureDevOpsAccessToken")) -$escapedRepository = [Uri]::EscapeDataString("/$Repository/$BranchName/.gdn") -$uri = "https://dev.azure.com/dnceng/internal/_apis/git/repositories/sdl-tool-cfg/Items?path=$escapedRepository&versionDescriptor[versionOptions]=0&`$format=zip&api-version=5.0" -$zipFile = "$WorkingDirectory/gdn.zip" - Add-Type -AssemblyName System.IO.Compression.FileSystem -$gdnFolder = (Join-Path $WorkingDirectory '.gdn') try { # if the folder does not exist, we'll do a guardian init and push it to the remote repository diff --git a/eng/common/sdl/sdl.ps1 b/eng/common/sdl/sdl.ps1 index 648c5068d7d6..7fe603fe995d 100644 --- a/eng/common/sdl/sdl.ps1 +++ b/eng/common/sdl/sdl.ps1 @@ -4,6 +4,8 @@ function Install-Gdn { [Parameter(Mandatory=$true)] [string]$Path, + [string]$Source = "https://pkgs.dev.azure.com/dnceng/_packaging/Guardian1ESPTUpstreamOrgFeed/nuget/v3/index.json", + # If omitted, install the latest version of Guardian, otherwise install that specific version. [string]$Version ) @@ -19,7 +21,7 @@ function Install-Gdn { $ci = $true . $PSScriptRoot\..\tools.ps1 - $argumentList = @("install", "Microsoft.Guardian.Cli", "-Source https://securitytools.pkgs.visualstudio.com/_packaging/Guardian/nuget/v3/index.json", "-OutputDirectory $Path", "-NonInteractive", "-NoCache") + $argumentList = @("install", "Microsoft.Guardian.Cli.win-x64", "-Source $Source", "-OutputDirectory $Path", "-NonInteractive", "-NoCache") if ($Version) { $argumentList += "-Version $Version" diff --git a/eng/common/templates-official/steps/execute-sdl.yml b/eng/common/templates-official/steps/execute-sdl.yml index 07426fde05d8..301d5c591ebd 100644 --- a/eng/common/templates-official/steps/execute-sdl.yml +++ b/eng/common/templates-official/steps/execute-sdl.yml @@ -9,8 +9,6 @@ parameters: steps: - task: NuGetAuthenticate@1 - inputs: - nuGetServiceConnections: GuardianConnect - task: NuGetToolInstaller@1 displayName: 'Install NuGet.exe' diff --git a/eng/common/templates-official/steps/get-federated-access-token.yml b/eng/common/templates-official/steps/get-federated-access-token.yml index e3786cef6dfd..55e33bd38f71 100644 --- a/eng/common/templates-official/steps/get-federated-access-token.yml +++ b/eng/common/templates-official/steps/get-federated-access-token.yml @@ -3,6 +3,12 @@ parameters: type: string - name: outputVariableName type: string +- name: stepName + type: string + default: 'getFederatedAccessToken' +- name: condition + type: string + default: '' # Resource to get a token for. Common values include: # - '499b84ac-1321-427f-aa17-267ca6975798' for Azure DevOps # - 'https://storage.azure.com/' for storage @@ -10,10 +16,16 @@ parameters: - name: resource type: string default: '499b84ac-1321-427f-aa17-267ca6975798' +- name: isStepOutputVariable + type: boolean + default: false steps: - task: AzureCLI@2 displayName: 'Getting federated access token for feeds' + name: ${{ parameters.stepName }} + ${{ if ne(parameters.condition, '') }}: + condition: ${{ parameters.condition }} inputs: azureSubscription: ${{ parameters.federatedServiceConnection }} scriptType: 'pscore' @@ -25,4 +37,4 @@ steps: exit 1 } Write-Host "Setting '${{ parameters.outputVariableName }}' with the access token value" - Write-Host "##vso[task.setvariable variable=${{ parameters.outputVariableName }};issecret=true]$accessToken" + Write-Host "##vso[task.setvariable variable=${{ parameters.outputVariableName }};issecret=true;isOutput=${{ parameters.isStepOutputVariable }}]$accessToken" \ No newline at end of file diff --git a/eng/common/templates/steps/execute-sdl.yml b/eng/common/templates/steps/execute-sdl.yml index 07426fde05d8..fe0ebf8c904e 100644 --- a/eng/common/templates/steps/execute-sdl.yml +++ b/eng/common/templates/steps/execute-sdl.yml @@ -9,8 +9,6 @@ parameters: steps: - task: NuGetAuthenticate@1 - inputs: - nuGetServiceConnections: GuardianConnect - task: NuGetToolInstaller@1 displayName: 'Install NuGet.exe' @@ -36,16 +34,19 @@ steps: displayName: Execute SDL (Overridden) continueOnError: ${{ parameters.sdlContinueOnError }} condition: ${{ parameters.condition }} + env: + GUARDIAN_DEFAULT_PACKAGE_SOURCE_SECRET: $(System.AccessToken) - ${{ if eq(parameters.overrideParameters, '') }}: - powershell: ${{ parameters.executeAllSdlToolsScript }} -GuardianCliLocation $(GuardianCliLocation) -NugetPackageDirectory $(Build.SourcesDirectory)\.packages - -AzureDevOpsAccessToken $(dn-bot-dotnet-build-rw-code-rw) ${{ parameters.additionalParameters }} displayName: Execute SDL continueOnError: ${{ parameters.sdlContinueOnError }} condition: ${{ parameters.condition }} + env: + GUARDIAN_DEFAULT_PACKAGE_SOURCE_SECRET: $(System.AccessToken) - ${{ if ne(parameters.publishGuardianDirectoryToPipeline, 'false') }}: # We want to publish the Guardian results and configuration for easy diagnosis. However, the diff --git a/eng/common/templates/steps/get-federated-access-token.yml b/eng/common/templates/steps/get-federated-access-token.yml index c8c49cc0e8f0..55e33bd38f71 100644 --- a/eng/common/templates/steps/get-federated-access-token.yml +++ b/eng/common/templates/steps/get-federated-access-token.yml @@ -3,6 +3,12 @@ parameters: type: string - name: outputVariableName type: string +- name: stepName + type: string + default: 'getFederatedAccessToken' +- name: condition + type: string + default: '' # Resource to get a token for. Common values include: # - '499b84ac-1321-427f-aa17-267ca6975798' for Azure DevOps # - 'https://storage.azure.com/' for storage @@ -10,10 +16,16 @@ parameters: - name: resource type: string default: '499b84ac-1321-427f-aa17-267ca6975798' +- name: isStepOutputVariable + type: boolean + default: false steps: - task: AzureCLI@2 displayName: 'Getting federated access token for feeds' + name: ${{ parameters.stepName }} + ${{ if ne(parameters.condition, '') }}: + condition: ${{ parameters.condition }} inputs: azureSubscription: ${{ parameters.federatedServiceConnection }} scriptType: 'pscore' @@ -25,4 +37,4 @@ steps: exit 1 } Write-Host "Setting '${{ parameters.outputVariableName }}' with the access token value" - Write-Host "##vso[task.setvariable variable=${{ parameters.outputVariableName }};issecret=true]$accessToken" \ No newline at end of file + Write-Host "##vso[task.setvariable variable=${{ parameters.outputVariableName }};issecret=true;isOutput=${{ parameters.isStepOutputVariable }}]$accessToken" \ No newline at end of file diff --git a/global.json b/global.json index e1447c5750a5..420420f45908 100644 --- a/global.json +++ b/global.json @@ -27,7 +27,7 @@ }, "msbuild-sdks": { "Yarn.MSBuild": "1.22.19", - "Microsoft.DotNet.Arcade.Sdk": "8.0.0-beta.24360.5", - "Microsoft.DotNet.Helix.Sdk": "8.0.0-beta.24360.5" + "Microsoft.DotNet.Arcade.Sdk": "8.0.0-beta.24367.1", + "Microsoft.DotNet.Helix.Sdk": "8.0.0-beta.24367.1" } } From c1bbdb53869f31f3441611d13782506ae982060d Mon Sep 17 00:00:00 2001 From: DotNet-Bot Date: Wed, 17 Jul 2024 22:02:35 +0000 Subject: [PATCH 237/391] Update dependencies from https://dev.azure.com/dnceng/internal/_git/dotnet-efcore build 20240717.4 dotnet-ef , Microsoft.EntityFrameworkCore , Microsoft.EntityFrameworkCore.Design , Microsoft.EntityFrameworkCore.InMemory , Microsoft.EntityFrameworkCore.Relational , Microsoft.EntityFrameworkCore.Sqlite , Microsoft.EntityFrameworkCore.SqlServer , Microsoft.EntityFrameworkCore.Tools From Version 8.0.7 -> To Version 8.0.8 --- NuGet.config | 12 ++---------- eng/Version.Details.xml | 32 ++++++++++++++++---------------- eng/Versions.props | 16 ++++++++-------- 3 files changed, 26 insertions(+), 34 deletions(-) diff --git a/NuGet.config b/NuGet.config index 7a09cc094ea8..1a455317c69c 100644 --- a/NuGet.config +++ b/NuGet.config @@ -6,11 +6,7 @@ - - - - - + @@ -39,11 +35,7 @@ - - - - - + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 062622502f1e..30450b38d403 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -9,37 +9,37 @@ --> - + https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 0d1256be4658567c8a24b4c027bdbb3dbd6de656 + 90d079985f33ae91c05b98ecf65e0ce38270ba55 - + https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 0d1256be4658567c8a24b4c027bdbb3dbd6de656 + 90d079985f33ae91c05b98ecf65e0ce38270ba55 - + https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 0d1256be4658567c8a24b4c027bdbb3dbd6de656 + 90d079985f33ae91c05b98ecf65e0ce38270ba55 - + https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 0d1256be4658567c8a24b4c027bdbb3dbd6de656 + 90d079985f33ae91c05b98ecf65e0ce38270ba55 - + https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 0d1256be4658567c8a24b4c027bdbb3dbd6de656 + 90d079985f33ae91c05b98ecf65e0ce38270ba55 - + https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 0d1256be4658567c8a24b4c027bdbb3dbd6de656 + 90d079985f33ae91c05b98ecf65e0ce38270ba55 - + https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 0d1256be4658567c8a24b4c027bdbb3dbd6de656 + 90d079985f33ae91c05b98ecf65e0ce38270ba55 - + https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 0d1256be4658567c8a24b4c027bdbb3dbd6de656 + 90d079985f33ae91c05b98ecf65e0ce38270ba55 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime diff --git a/eng/Versions.props b/eng/Versions.props index f04749a619b5..f544bea98f5c 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -143,14 +143,14 @@ 8.1.0-preview.23604.1 8.1.0-preview.23604.1 - 8.0.7 - 8.0.7 - 8.0.7 - 8.0.7 - 8.0.7 - 8.0.7 - 8.0.7 - 8.0.7 + 8.0.8 + 8.0.8 + 8.0.8 + 8.0.8 + 8.0.8 + 8.0.8 + 8.0.8 + 8.0.8 4.8.0-3.23518.7 4.8.0-3.23518.7 From 8627de289bea83ff85b0e54c4a085680b01668f8 Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" <42748379+dotnet-maestro[bot]@users.noreply.github.com> Date: Thu, 18 Jul 2024 15:44:22 +0000 Subject: [PATCH 238/391] Update dependencies from https://github.com/dotnet/source-build-reference-packages build 20240717.1 (#56875) [release/8.0] Update dependencies from dotnet/source-build-reference-packages --- eng/Version.Details.xml | 4 ++-- eng/Versions.props | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 8548b11d2cfc..2f7c79bfeefc 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -338,9 +338,9 @@ 9a1c3e1b7f0c8763d4c96e593961a61a72679a7b - + https://github.com/dotnet/source-build-reference-packages - a489be6626823d2adcf396c9e6e72987a7229173 + 68d6cef51f1c82d71b435af0f040d72fdd1a782f diff --git a/eng/Versions.props b/eng/Versions.props index 0adeb2f534d7..cf45feb49c4c 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -168,7 +168,7 @@ 8.0.0-alpha.1.24269.1 - 8.0.0-alpha.1.24366.1 + 8.0.0-alpha.1.24367.1 2.0.0-beta-23228-03 From 502dd8fa19557cca5f5fa98338e71a7b21fe9d1b Mon Sep 17 00:00:00 2001 From: Sean Reeser Date: Thu, 18 Jul 2024 18:43:35 +0000 Subject: [PATCH 239/391] Updated ci.yml - name artifacts with attempt number where publish on error is true (logs, test results) --- .azure/pipelines/ci.yml | 34 +++++++++++++++++----------------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/.azure/pipelines/ci.yml b/.azure/pipelines/ci.yml index 80db7eea0830..0395418fe330 100644 --- a/.azure/pipelines/ci.yml +++ b/.azure/pipelines/ci.yml @@ -160,7 +160,7 @@ extends: - powershell: ./eng/scripts/CodeCheck.ps1 -ci $(_InternalRuntimeDownloadArgs) displayName: Run eng/scripts/CodeCheck.ps1 artifacts: - - name: Code_Check_Logs + - name: Code_Check_Logs_Attempt_$(System.JobAttempt) path: artifacts/log/ publishOnError: true includeForks: true @@ -280,7 +280,7 @@ extends: displayName: Build ARM64 Installers artifacts: - - name: Windows_Logs + - name: Windows_Logs_Attempt_$(System.JobAttempt) path: artifacts/log/ publishOnError: true includeForks: true @@ -312,7 +312,7 @@ extends: $(_InternalRuntimeDownloadArgs) installNodeJs: false artifacts: - - name: MacOS_arm64_Logs + - name: MacOS_arm64_Logs_Attempt_$(System.JobAttempt) path: artifacts/log/ publishOnError: true includeForks: true @@ -342,7 +342,7 @@ extends: $(_InternalRuntimeDownloadArgs) installNodeJs: false artifacts: - - name: MacOS_x64_Logs + - name: MacOS_x64_Logs_Attempt_$(System.JobAttempt) path: artifacts/log/ publishOnError: true includeForks: true @@ -389,7 +389,7 @@ extends: displayName: Build RPM installers installNodeJs: false artifacts: - - name: Linux_x64_Logs + - name: Linux_x64_Logs_Attempt_$(System.JobAttempt) path: artifacts/log/ publishOnError: true includeForks: true @@ -420,7 +420,7 @@ extends: $(_InternalRuntimeDownloadArgs) installNodeJs: false artifacts: - - name: Linux_arm_Logs + - name: Linux_arm_Logs_Attempt_$(System.JobAttempt) path: artifacts/log/ publishOnError: true includeForks: true @@ -460,7 +460,7 @@ extends: displayName: Build RPM installers installNodeJs: false artifacts: - - name: Linux_arm64_Logs + - name: Linux_arm64_Logs_Attempt_$(System.JobAttempt) path: artifacts/log/ publishOnError: true includeForks: true @@ -494,7 +494,7 @@ extends: installNodeJs: false disableComponentGovernance: true artifacts: - - name: Linux_musl_x64_Logs + - name: Linux_musl_x64_Logs_Attempt_$(System.JobAttempt) path: artifacts/log/ publishOnError: true includeForks: true @@ -528,7 +528,7 @@ extends: $(_InternalRuntimeDownloadArgs) installNodeJs: false artifacts: - - name: Linux_musl_arm_Logs + - name: Linux_musl_arm_Logs_Attempt_$(System.JobAttempt) path: artifacts/log/ publishOnError: true includeForks: true @@ -562,7 +562,7 @@ extends: $(_InternalRuntimeDownloadArgs) installNodeJs: false artifacts: - - name: Linux_musl_arm64_Logs + - name: Linux_musl_arm64_Logs_Attempt_$(System.JobAttempt) path: artifacts/log/ publishOnError: true includeForks: true @@ -591,11 +591,11 @@ extends: - powershell: "& ./src/Servers/IIS/tools/UpdateIISExpressCertificate.ps1; & ./src/Servers/IIS/tools/update_schema.ps1" displayName: Setup IISExpress test certificates and schema artifacts: - - name: Windows_Test_Logs + - name: Windows_Test_Logs_Attempt_$(System.JobAttempt) path: artifacts/log/ publishOnError: true includeForks: true - - name: Windows_Test_Results + - name: Windows_Test_Results_Attempt_$(System.JobAttempt) path: artifacts/TestResults/ publishOnError: true includeForks: true @@ -612,11 +612,11 @@ extends: - bash: "./eng/scripts/install-nginx-mac.sh" displayName: Installing Nginx artifacts: - - name: MacOS_Test_Logs + - name: MacOS_Test_Logs_Attempt_$(System.JobAttempt) path: artifacts/log/ publishOnError: true includeForks: true - - name: MacOS_Test_Results + - name: MacOS_Test_Results_Attempt_$(System.JobAttempt) path: artifacts/TestResults/ publishOnError: true includeForks: true @@ -635,11 +635,11 @@ extends: - bash: "echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf && sudo sysctl -p" displayName: Increase inotify limit artifacts: - - name: Linux_Test_Logs + - name: Linux_Test_Logs_Attempt_$(System.JobAttempt) path: artifacts/log/ publishOnError: true includeForks: true - - name: Linux_Test_Results + - name: Linux_Test_Results_Attempt_$(System.JobAttempt) path: artifacts/TestResults/ publishOnError: true includeForks: true @@ -666,7 +666,7 @@ extends: SYSTEM_ACCESSTOKEN: $(System.AccessToken) # We need to set this env var to publish helix results to Azure Dev Ops artifacts: - - name: Helix_logs + - name: Helix_Logs_Attempt_$(System.JobAttempt) path: artifacts/log/ publishOnError: true includeForks: true From d7cd46e469034c4de7d967b989eb5f0c4681b872 Mon Sep 17 00:00:00 2001 From: Sean Reeser Date: Thu, 18 Jul 2024 18:45:54 +0000 Subject: [PATCH 240/391] Updated ci-public.yml - add job attempt number to log and test results artifacts that are published on error outcomes. --- .azure/pipelines/ci-public.yml | 34 +++++++++++++++++----------------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/.azure/pipelines/ci-public.yml b/.azure/pipelines/ci-public.yml index eb9ffeaa3cd5..730efedf620d 100644 --- a/.azure/pipelines/ci-public.yml +++ b/.azure/pipelines/ci-public.yml @@ -93,7 +93,7 @@ stages: - powershell: ./eng/scripts/CodeCheck.ps1 -ci $(_InternalRuntimeDownloadArgs) displayName: Run eng/scripts/CodeCheck.ps1 artifacts: - - name: Code_Check_Logs + - name: Code_Check_Logs_Attempt_$(System.JobAttempt) path: artifacts/log/ publishOnError: true includeForks: true @@ -213,7 +213,7 @@ stages: displayName: Build ARM64 Installers artifacts: - - name: Windows_Logs + - name: Windows_Logs_Attempt_$(System.JobAttempt) path: artifacts/log/ publishOnError: true includeForks: true @@ -246,7 +246,7 @@ stages: $(_InternalRuntimeDownloadArgs) installNodeJs: false artifacts: - - name: MacOS_arm64_Logs + - name: MacOS_arm64_Logs_Attempt_$(System.JobAttempt) path: artifacts/log/ publishOnError: true includeForks: true @@ -277,7 +277,7 @@ stages: $(_InternalRuntimeDownloadArgs) installNodeJs: false artifacts: - - name: MacOS_x64_Logs + - name: MacOS_x64_Logs_Attempt_$(System.JobAttempt) path: artifacts/log/ publishOnError: true includeForks: true @@ -324,7 +324,7 @@ stages: displayName: Build RPM installers installNodeJs: false artifacts: - - name: Linux_x64_Logs + - name: Linux_x64_Logs_Attempt_$(System.JobAttempt) path: artifacts/log/ publishOnError: true includeForks: true @@ -355,7 +355,7 @@ stages: $(_InternalRuntimeDownloadArgs) installNodeJs: false artifacts: - - name: Linux_arm_Logs + - name: Linux_arm_Logs_Attempt_$(System.JobAttempt) path: artifacts/log/ publishOnError: true includeForks: true @@ -395,7 +395,7 @@ stages: displayName: Build RPM installers installNodeJs: false artifacts: - - name: Linux_arm64_Logs + - name: Linux_arm64_Logs_Attempt_$(System.JobAttempt) path: artifacts/log/ publishOnError: true includeForks: true @@ -429,7 +429,7 @@ stages: installNodeJs: false disableComponentGovernance: true artifacts: - - name: Linux_musl_x64_Logs + - name: Linux_musl_x64_Logs_Attempt_$(System.JobAttempt) path: artifacts/log/ publishOnError: true includeForks: true @@ -463,7 +463,7 @@ stages: $(_InternalRuntimeDownloadArgs) installNodeJs: false artifacts: - - name: Linux_musl_arm_Logs + - name: Linux_musl_arm_Logs_Attempt_$(System.JobAttempt) path: artifacts/log/ publishOnError: true includeForks: true @@ -497,7 +497,7 @@ stages: $(_InternalRuntimeDownloadArgs) installNodeJs: false artifacts: - - name: Linux_musl_arm64_Logs + - name: Linux_musl_arm64_Logs_Attempt_$(System.JobAttempt) path: artifacts/log/ publishOnError: true includeForks: true @@ -526,11 +526,11 @@ stages: - powershell: "& ./src/Servers/IIS/tools/UpdateIISExpressCertificate.ps1; & ./src/Servers/IIS/tools/update_schema.ps1" displayName: Setup IISExpress test certificates and schema artifacts: - - name: Windows_Test_Logs + - name: Windows_Test_Logs_Attempt_$(System.JobAttempt) path: artifacts/log/ publishOnError: true includeForks: true - - name: Windows_Test_Results + - name: Windows_Test_Results_Attempt_$(System.JobAttempt) path: artifacts/TestResults/ publishOnError: true includeForks: true @@ -547,11 +547,11 @@ stages: - bash: "./eng/scripts/install-nginx-mac.sh" displayName: Installing Nginx artifacts: - - name: MacOS_Test_Logs + - name: MacOS_Test_Logs_Attempt_$(System.JobAttempt) path: artifacts/log/ publishOnError: true includeForks: true - - name: MacOS_Test_Results + - name: MacOS_Test_Results_Attempt_$(System.JobAttempt) path: artifacts/TestResults/ publishOnError: true includeForks: true @@ -570,11 +570,11 @@ stages: - bash: "echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf && sudo sysctl -p" displayName: Increase inotify limit artifacts: - - name: Linux_Test_Logs + - name: Linux_Test_Logs_Attempt_$(System.JobAttempt) path: artifacts/log/ publishOnError: true includeForks: true - - name: Linux_Test_Results + - name: Linux_Test_Results_Attempt_$(System.JobAttempt) path: artifacts/TestResults/ publishOnError: true includeForks: true @@ -601,7 +601,7 @@ stages: SYSTEM_ACCESSTOKEN: $(System.AccessToken) # We need to set this env var to publish helix results to Azure Dev Ops artifacts: - - name: Helix_logs + - name: Helix_Logs_Attempt_$(System.JobAttempt) path: artifacts/log/ publishOnError: true includeForks: true From b4bd41300b674902f782590bf3a719f31bebfabd Mon Sep 17 00:00:00 2001 From: Matt Mitchell Date: Fri, 19 Jul 2024 18:06:13 +0000 Subject: [PATCH 241/391] Merged PR 41232: Regenerate SAS before installers #### AI description (iteration 1) #### PR Classification Code enhancement to regenerate runtime tokens before building installers. #### PR Summary This pull request ensures that runtime tokens are regenerated before building the installers to avoid hitting the hour timeout. - `.azure/pipelines/ci.yml`: Added a step to regenerate runtime tokens before the installer build process. --- .azure/pipelines/jobs/default-build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.azure/pipelines/jobs/default-build.yml b/.azure/pipelines/jobs/default-build.yml index 0570bfc1d372..00043ee1b4c1 100644 --- a/.azure/pipelines/jobs/default-build.yml +++ b/.azure/pipelines/jobs/default-build.yml @@ -446,7 +446,7 @@ jobs: parameters: federatedServiceConnection: 'dotnetbuilds-internal-read' outputVariableName: 'dotnetbuilds-internal-container-read-token' - expiryInHours: 1 + expiryInHours: 2 base64Encode: false storageAccount: dotnetbuilds container: internal From 954f61dd38b33caa2b736c73530bd5a294174437 Mon Sep 17 00:00:00 2001 From: Matt Mitchell Date: Fri, 19 Jul 2024 22:20:50 +0000 Subject: [PATCH 242/391] Merged PR 41234: Update token timeout #### AI description (iteration 1) #### PR Classification Configuration update. #### PR Summary This pull request updates the token timeout configuration in the build pipeline. - `.azure/pipelines/jobs/default-build.yml`: Added `expiryInHours` parameter with a value of 2 to the `enable-internal-runtimes.yml` template. --- .azure/pipelines/jobs/default-build.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.azure/pipelines/jobs/default-build.yml b/.azure/pipelines/jobs/default-build.yml index 00043ee1b4c1..f45f395d6ae3 100644 --- a/.azure/pipelines/jobs/default-build.yml +++ b/.azure/pipelines/jobs/default-build.yml @@ -440,6 +440,8 @@ jobs: # Populates internal runtime SAS tokens. - template: /eng/common/templates-official/steps/enable-internal-runtimes.yml + parameters: + expiryInHours: 2 # Populate dotnetbuilds-internal base64 sas tokens. - template: /eng/common/templates-official/steps/get-delegation-sas.yml From 105a25ff220b6cf3cf23152f9691a59ac8aaa7ed Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" <42748379+dotnet-maestro[bot]@users.noreply.github.com> Date: Mon, 22 Jul 2024 16:50:39 +0000 Subject: [PATCH 243/391] [release/8.0] Update dependencies from dotnet/source-build-externals (#56804) [release/8.0] Update dependencies from dotnet/source-build-externals --- eng/Version.Details.xml | 4 ++-- eng/Versions.props | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 2f7c79bfeefc..b8e179267f9f 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -189,9 +189,9 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime 2aade6beb02ea367fd97c4070a4198802fe61c03 - + https://github.com/dotnet/source-build-externals - 4f2151df120194f0268944f1b723c14820738fc8 + e3059b2fc5aad4cf8de79f0d5d78dab2fbd6074c diff --git a/eng/Versions.props b/eng/Versions.props index cf45feb49c4c..3195d00bc791 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -166,7 +166,7 @@ 8.0.0-beta.24367.1 8.0.0-beta.24367.1 - 8.0.0-alpha.1.24269.1 + 8.0.0-alpha.1.24372.2 8.0.0-alpha.1.24367.1 From e9e4cd7f9734abf705c88aaadbca48d75439b277 Mon Sep 17 00:00:00 2001 From: vseanreesermsft <78103370+vseanreesermsft@users.noreply.github.com> Date: Wed, 7 Aug 2024 14:43:53 -0700 Subject: [PATCH 244/391] Update branding to 8.0.9 (#57198) --- eng/Versions.props | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/eng/Versions.props b/eng/Versions.props index 3195d00bc791..7d98cd312e2c 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -8,10 +8,10 @@ 8 0 - 8 + 9 - true + false 7.1.2 *-* - 8.0.0-alpha.1.24372.2 + 8.0.0-alpha.1.24379.1 8.0.0-alpha.1.24367.1 From 83d8bb53c463f28b9f51eb934ee405b9e04fbddc Mon Sep 17 00:00:00 2001 From: William Godbe Date: Thu, 8 Aug 2024 12:36:46 -0700 Subject: [PATCH 247/391] [release/8.0] Update Microsoft.IO.Redist dependency (#57006) * Update dependency * Fixup * Fix again --- eng/Versions.props | 1 + eng/tools/RepoTasks/RepoTasks.csproj | 1 + 2 files changed, 2 insertions(+) diff --git a/eng/Versions.props b/eng/Versions.props index b74df1305994..8cf470d9ad1d 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -304,6 +304,7 @@ 2.15.2 2.15.2 2.15.2 + 6.0.1 $(MessagePackVersion) 4.10.0 0.11.2 diff --git a/eng/tools/RepoTasks/RepoTasks.csproj b/eng/tools/RepoTasks/RepoTasks.csproj index a15b19e51dcb..001b709fffae 100644 --- a/eng/tools/RepoTasks/RepoTasks.csproj +++ b/eng/tools/RepoTasks/RepoTasks.csproj @@ -34,6 +34,7 @@ + From 22a2b4aba600585bac61e139b8d7dc2ebb20d99e Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" <42748379+dotnet-maestro[bot]@users.noreply.github.com> Date: Thu, 8 Aug 2024 12:37:12 -0700 Subject: [PATCH 248/391] [release/8.0] Update dependencies from dotnet/source-build-reference-packages (#56949) * Update dependencies from https://github.com/dotnet/source-build-reference-packages build 20240722.3 Microsoft.SourceBuild.Intermediate.source-build-reference-packages From Version 8.0.0-alpha.1.24367.1 -> To Version 8.0.0-alpha.1.24372.3 * Update dependencies from https://github.com/dotnet/source-build-reference-packages build 20240722.3 Microsoft.SourceBuild.Intermediate.source-build-reference-packages From Version 8.0.0-alpha.1.24367.1 -> To Version 8.0.0-alpha.1.24372.3 * Update dependencies from https://github.com/dotnet/source-build-reference-packages build 20240722.3 Microsoft.SourceBuild.Intermediate.source-build-reference-packages From Version 8.0.0-alpha.1.24367.1 -> To Version 8.0.0-alpha.1.24372.3 * Update dependencies from https://github.com/dotnet/source-build-reference-packages build 20240722.3 Microsoft.SourceBuild.Intermediate.source-build-reference-packages From Version 8.0.0-alpha.1.24367.1 -> To Version 8.0.0-alpha.1.24372.3 * Update dependencies from https://github.com/dotnet/source-build-reference-packages build 20240722.3 Microsoft.SourceBuild.Intermediate.source-build-reference-packages From Version 8.0.0-alpha.1.24367.1 -> To Version 8.0.0-alpha.1.24372.3 * Update dependencies from https://github.com/dotnet/source-build-reference-packages build 20240722.3 Microsoft.SourceBuild.Intermediate.source-build-reference-packages From Version 8.0.0-alpha.1.24367.1 -> To Version 8.0.0-alpha.1.24372.3 * Update dependencies from https://github.com/dotnet/source-build-reference-packages build 20240722.3 Microsoft.SourceBuild.Intermediate.source-build-reference-packages From Version 8.0.0-alpha.1.24367.1 -> To Version 8.0.0-alpha.1.24372.3 * Update dependencies from https://github.com/dotnet/source-build-reference-packages build 20240722.3 Microsoft.SourceBuild.Intermediate.source-build-reference-packages From Version 8.0.0-alpha.1.24367.1 -> To Version 8.0.0-alpha.1.24372.3 * Update dependencies from https://github.com/dotnet/source-build-reference-packages build 20240722.3 Microsoft.SourceBuild.Intermediate.source-build-reference-packages From Version 8.0.0-alpha.1.24367.1 -> To Version 8.0.0-alpha.1.24372.3 * Update dependencies from https://github.com/dotnet/source-build-reference-packages build 20240722.3 Microsoft.SourceBuild.Intermediate.source-build-reference-packages From Version 8.0.0-alpha.1.24367.1 -> To Version 8.0.0-alpha.1.24372.3 * Update dependencies from https://github.com/dotnet/source-build-reference-packages build 20240722.3 Microsoft.SourceBuild.Intermediate.source-build-reference-packages From Version 8.0.0-alpha.1.24367.1 -> To Version 8.0.0-alpha.1.24372.3 * Update dependencies from https://github.com/dotnet/source-build-reference-packages build 20240722.3 Microsoft.SourceBuild.Intermediate.source-build-reference-packages From Version 8.0.0-alpha.1.24367.1 -> To Version 8.0.0-alpha.1.24372.3 * Update dependencies from https://github.com/dotnet/source-build-reference-packages build 20240722.3 Microsoft.SourceBuild.Intermediate.source-build-reference-packages From Version 8.0.0-alpha.1.24367.1 -> To Version 8.0.0-alpha.1.24372.3 * Update dependencies from https://github.com/dotnet/source-build-reference-packages build 20240722.3 Microsoft.SourceBuild.Intermediate.source-build-reference-packages From Version 8.0.0-alpha.1.24367.1 -> To Version 8.0.0-alpha.1.24372.3 --------- Co-authored-by: dotnet-maestro[bot] --- eng/Version.Details.xml | 4 ++-- eng/Versions.props | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index fb06735eafc6..c7a50e660819 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -338,9 +338,9 @@ 9a1c3e1b7f0c8763d4c96e593961a61a72679a7b - + https://github.com/dotnet/source-build-reference-packages - 68d6cef51f1c82d71b435af0f040d72fdd1a782f + 30ed464acd37779c64e9dc652d4460543ebf9966 diff --git a/eng/Versions.props b/eng/Versions.props index 8cf470d9ad1d..b2c479c367fa 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -168,7 +168,7 @@ 8.0.0-alpha.1.24379.1 - 8.0.0-alpha.1.24367.1 + 8.0.0-alpha.1.24372.3 2.0.0-beta-23228-03 From a7e1abfcc1c953af93ca04d560b9471153a15e10 Mon Sep 17 00:00:00 2001 From: Andrew Casey Date: Thu, 8 Aug 2024 12:38:10 -0700 Subject: [PATCH 249/391] [CG[ Update ws dep in release/8.0 (#56677) * Update src/SignalR/clients/ts/signalr * Update src/Components/Web.JS --- src/Components/Web.JS/yarn.lock | 610 +++++++++++------------ src/SignalR/clients/ts/signalr/yarn.lock | 28 +- 2 files changed, 319 insertions(+), 319 deletions(-) diff --git a/src/Components/Web.JS/yarn.lock b/src/Components/Web.JS/yarn.lock index 8df68624fc1d..562138d40ea5 100644 --- a/src/Components/Web.JS/yarn.lock +++ b/src/Components/Web.JS/yarn.lock @@ -5,7 +5,7 @@ "@ampproject/remapping@^2.2.0": version "2.2.1" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@ampproject/remapping/-/remapping-2.2.1.tgz#99e8e11851128b8702cd57c33684f1d0f260b630" - integrity sha1-mejhGFESi4cCzVfDNoTx0PJgtjA= + integrity "sha1-mejhGFESi4cCzVfDNoTx0PJgtjA= sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==" dependencies: "@jridgewell/gen-mapping" "^0.3.0" "@jridgewell/trace-mapping" "^0.3.9" @@ -13,19 +13,19 @@ "@babel/code-frame@^7.0.0", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.18.6", "@babel/code-frame@^7.21.4": version "7.21.4" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/code-frame/-/code-frame-7.21.4.tgz#d0fa9e4413aca81f2b23b9442797bda1826edb39" - integrity sha1-0PqeRBOsqB8rI7lEJ5e9oYJu2zk= + integrity "sha1-0PqeRBOsqB8rI7lEJ5e9oYJu2zk= sha512-LYvhNKfwWSPpocw8GI7gpK2nq3HSDuEPC/uSYaALSJu9xjsalaaYFOq0Pwt5KmVqwEbZlDu81aLXwBOmD/Fv9g==" dependencies: "@babel/highlight" "^7.18.6" "@babel/compat-data@^7.17.7", "@babel/compat-data@^7.20.5", "@babel/compat-data@^7.21.5": version "7.21.7" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/compat-data/-/compat-data-7.21.7.tgz#61caffb60776e49a57ba61a88f02bedd8714f6bc" - integrity sha1-Ycr/tgd25JpXumGojwK+3YcU9rw= + integrity "sha1-Ycr/tgd25JpXumGojwK+3YcU9rw= sha512-KYMqFYTaenzMK4yUtf4EW9wc4N9ef80FsbMtkwool5zpwl4YrT1SdWYSTRcT94KO4hannogdS+LxY7L+arP3gA==" "@babel/core@^7.11.6", "@babel/core@^7.12.3", "@babel/core@^7.16.7": version "7.21.8" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/core/-/core-7.21.8.tgz#2a8c7f0f53d60100ba4c32470ba0281c92aa9aa4" - integrity sha1-Kox/D1PWAQC6TDJHC6AoHJKqmqQ= + integrity "sha1-Kox/D1PWAQC6TDJHC6AoHJKqmqQ= sha512-YeM22Sondbo523Sz0+CirSPnbj9bG3P0CdHcBZdqUuaeOaYEFbOLoGU7lebvGP6P5J/WE9wOn7u7C4J9HvS1xQ==" dependencies: "@ampproject/remapping" "^2.2.0" "@babel/code-frame" "^7.21.4" @@ -46,7 +46,7 @@ "@babel/generator@^7.21.5", "@babel/generator@^7.7.2": version "7.21.5" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/generator/-/generator-7.21.5.tgz#c0c0e5449504c7b7de8236d99338c3e2a340745f" - integrity sha1-wMDlRJUEx7fegjbZkzjD4qNAdF8= + integrity "sha1-wMDlRJUEx7fegjbZkzjD4qNAdF8= sha512-SrKK/sRv8GesIW1bDagf9cCG38IOMYZusoe1dfg0D8aiUe3Amvoj1QtjTPAWcfrZFvIwlleLb0gxzQidL9w14w==" dependencies: "@babel/types" "^7.21.5" "@jridgewell/gen-mapping" "^0.3.2" @@ -56,21 +56,21 @@ "@babel/helper-annotate-as-pure@^7.18.6": version "7.18.6" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz#eaa49f6f80d5a33f9a5dd2276e6d6e451be0a6bb" - integrity sha1-6qSfb4DVoz+aXdInbm1uRRvgprs= + integrity "sha1-6qSfb4DVoz+aXdInbm1uRRvgprs= sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==" dependencies: "@babel/types" "^7.18.6" "@babel/helper-builder-binary-assignment-operator-visitor@^7.18.6": version "7.21.5" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.21.5.tgz#817f73b6c59726ab39f6ba18c234268a519e5abb" - integrity sha1-gX9ztsWXJqs59roYwjQmilGeWrs= + integrity "sha1-gX9ztsWXJqs59roYwjQmilGeWrs= sha512-uNrjKztPLkUk7bpCNC0jEKDJzzkvel/W+HguzbN8krA+LPfC1CEobJEvAvGka2A/M+ViOqXdcRL0GqPUJSjx9g==" dependencies: "@babel/types" "^7.21.5" "@babel/helper-compilation-targets@^7.17.7", "@babel/helper-compilation-targets@^7.18.9", "@babel/helper-compilation-targets@^7.20.7", "@babel/helper-compilation-targets@^7.21.5": version "7.21.5" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/helper-compilation-targets/-/helper-compilation-targets-7.21.5.tgz#631e6cc784c7b660417421349aac304c94115366" - integrity sha1-Yx5sx4THtmBBdCE0mqwwTJQRU2Y= + integrity "sha1-Yx5sx4THtmBBdCE0mqwwTJQRU2Y= sha512-1RkbFGUKex4lvsB9yhIfWltJM5cZKUftB2eNajaDv3dCMEp49iBG0K14uH8NnX9IPux2+mK7JGEOB0jn48/J6w==" dependencies: "@babel/compat-data" "^7.21.5" "@babel/helper-validator-option" "^7.21.0" @@ -81,7 +81,7 @@ "@babel/helper-create-class-features-plugin@^7.18.6", "@babel/helper-create-class-features-plugin@^7.21.0": version "7.21.8" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.21.8.tgz#205b26330258625ef8869672ebca1e0dee5a0f02" - integrity sha1-IFsmMwJYYl74hpZy68oeDe5aDwI= + integrity "sha1-IFsmMwJYYl74hpZy68oeDe5aDwI= sha512-+THiN8MqiH2AczyuZrnrKL6cAxFRRQDKW9h1YkBvbgKmAm6mwiacig1qT73DHIWMGo40GRnsEfN3LA+E6NtmSw==" dependencies: "@babel/helper-annotate-as-pure" "^7.18.6" "@babel/helper-environment-visitor" "^7.21.5" @@ -96,7 +96,7 @@ "@babel/helper-create-regexp-features-plugin@^7.18.6", "@babel/helper-create-regexp-features-plugin@^7.20.5": version "7.21.8" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.21.8.tgz#a7886f61c2e29e21fd4aaeaf1e473deba6b571dc" - integrity sha1-p4hvYcLiniH9Sq6vHkc966a1cdw= + integrity "sha1-p4hvYcLiniH9Sq6vHkc966a1cdw= sha512-zGuSdedkFtsFHGbexAvNuipg1hbtitDLo2XE8/uf6Y9sOQV1xsYX/2pNbtedp/X0eU1pIt+kGvaqHCowkRbS5g==" dependencies: "@babel/helper-annotate-as-pure" "^7.18.6" regexpu-core "^5.3.1" @@ -105,7 +105,7 @@ "@babel/helper-define-polyfill-provider@^0.3.3": version "0.3.3" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.3.tgz#8612e55be5d51f0cd1f36b4a5a83924e89884b7a" - integrity sha1-hhLlW+XVHwzR82tKWoOSTomIS3o= + integrity "sha1-hhLlW+XVHwzR82tKWoOSTomIS3o= sha512-z5aQKU4IzbqCC1XH0nAqfsFLMVSo22SBKUc0BxGrLkolTdPTructy0ToNnlO2zA4j9Q/7pjMZf0DSY+DSTYzww==" dependencies: "@babel/helper-compilation-targets" "^7.17.7" "@babel/helper-plugin-utils" "^7.16.7" @@ -117,12 +117,12 @@ "@babel/helper-environment-visitor@^7.18.9", "@babel/helper-environment-visitor@^7.21.5": version "7.21.5" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/helper-environment-visitor/-/helper-environment-visitor-7.21.5.tgz#c769afefd41d171836f7cb63e295bedf689d48ba" - integrity sha1-x2mv79QdFxg298tj4pW+32idSLo= + integrity "sha1-x2mv79QdFxg298tj4pW+32idSLo= sha512-IYl4gZ3ETsWocUWgsFZLM5i1BYx9SoemminVEXadgLBa9TdeorzgLKm8wWLA6J1N/kT3Kch8XIk1laNzYoHKvQ==" "@babel/helper-function-name@^7.18.9", "@babel/helper-function-name@^7.19.0", "@babel/helper-function-name@^7.21.0": version "7.21.0" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/helper-function-name/-/helper-function-name-7.21.0.tgz#d552829b10ea9f120969304023cd0645fa00b1b4" - integrity sha1-1VKCmxDqnxIJaTBAI80GRfoAsbQ= + integrity "sha1-1VKCmxDqnxIJaTBAI80GRfoAsbQ= sha512-HfK1aMRanKHpxemaY2gqBmL04iAPOPRj7DxtNbiDOrJK+gdwkiNRVpCpUJYbUT+aZyemKN8brqTOxzCaG6ExRg==" dependencies: "@babel/template" "^7.20.7" "@babel/types" "^7.21.0" @@ -130,28 +130,28 @@ "@babel/helper-hoist-variables@^7.18.6": version "7.18.6" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz#d4d2c8fb4baeaa5c68b99cc8245c56554f926678" - integrity sha1-1NLI+0uuqlxouZzIJFxWVU+SZng= + integrity "sha1-1NLI+0uuqlxouZzIJFxWVU+SZng= sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==" dependencies: "@babel/types" "^7.18.6" "@babel/helper-member-expression-to-functions@^7.21.5": version "7.21.5" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.21.5.tgz#3b1a009af932e586af77c1030fba9ee0bde396c0" - integrity sha1-OxoAmvky5Yavd8EDD7qe4L3jlsA= + integrity "sha1-OxoAmvky5Yavd8EDD7qe4L3jlsA= sha512-nIcGfgwpH2u4n9GG1HpStW5Ogx7x7ekiFHbjjFRKXbn5zUvqO9ZgotCO4x1aNbKn/x/xOUaXEhyNHCwtFCpxWg==" dependencies: "@babel/types" "^7.21.5" "@babel/helper-module-imports@^7.18.6", "@babel/helper-module-imports@^7.21.4": version "7.21.4" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/helper-module-imports/-/helper-module-imports-7.21.4.tgz#ac88b2f76093637489e718a90cec6cf8a9b029af" - integrity sha1-rIiy92CTY3SJ5xipDOxs+KmwKa8= + integrity "sha1-rIiy92CTY3SJ5xipDOxs+KmwKa8= sha512-orajc5T2PsRYUN3ZryCEFeMDYwyw09c/pZeaQEZPH0MpKzSvn3e0uXsDBu3k03VI+9DBiRo+l22BfKTpKwa/Wg==" dependencies: "@babel/types" "^7.21.4" "@babel/helper-module-transforms@^7.18.6", "@babel/helper-module-transforms@^7.20.11", "@babel/helper-module-transforms@^7.21.5": version "7.21.5" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/helper-module-transforms/-/helper-module-transforms-7.21.5.tgz#d937c82e9af68d31ab49039136a222b17ac0b420" - integrity sha1-2TfILpr2jTGrSQORNqIisXrAtCA= + integrity "sha1-2TfILpr2jTGrSQORNqIisXrAtCA= sha512-bI2Z9zBGY2q5yMHoBvJ2a9iX3ZOAzJPm7Q8Yz6YeoUjU/Cvhmi2G4QyTNyPBqqXSgTjUxRg3L0xV45HvkNWWBw==" dependencies: "@babel/helper-environment-visitor" "^7.21.5" "@babel/helper-module-imports" "^7.21.4" @@ -165,19 +165,19 @@ "@babel/helper-optimise-call-expression@^7.18.6": version "7.18.6" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.18.6.tgz#9369aa943ee7da47edab2cb4e838acf09d290ffe" - integrity sha1-k2mqlD7n2kftqyy06Dis8J0pD/4= + integrity "sha1-k2mqlD7n2kftqyy06Dis8J0pD/4= sha512-HP59oD9/fEHQkdcbgFCnbmgH5vIQTJbxh2yf+CdM89/glUNnuzr87Q8GIjGEnOktTROemO0Pe0iPAYbqZuOUiA==" dependencies: "@babel/types" "^7.18.6" "@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.16.7", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.18.9", "@babel/helper-plugin-utils@^7.19.0", "@babel/helper-plugin-utils@^7.20.2", "@babel/helper-plugin-utils@^7.21.5", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": version "7.21.5" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/helper-plugin-utils/-/helper-plugin-utils-7.21.5.tgz#345f2377d05a720a4e5ecfa39cbf4474a4daed56" - integrity sha1-NF8jd9BacgpOXs+jnL9EdKTa7VY= + integrity "sha1-NF8jd9BacgpOXs+jnL9EdKTa7VY= sha512-0WDaIlXKOX/3KfBK/dwP1oQGiPh6rjMkT7HIRv7i5RR2VUMwrx5ZL0dwBkKx7+SW1zwNdgjHd34IMk5ZjTeHVg==" "@babel/helper-remap-async-to-generator@^7.18.9": version "7.18.9" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.18.9.tgz#997458a0e3357080e54e1d79ec347f8a8cd28519" - integrity sha1-mXRYoOM1cIDlTh157DR/iozShRk= + integrity "sha1-mXRYoOM1cIDlTh157DR/iozShRk= sha512-dI7q50YKd8BAv3VEfgg7PS7yD3Rtbi2J1XMXaalXO0W0164hYLnh8zpjRS0mte9MfVp/tltvr/cfdXPvJr1opA==" dependencies: "@babel/helper-annotate-as-pure" "^7.18.6" "@babel/helper-environment-visitor" "^7.18.9" @@ -187,7 +187,7 @@ "@babel/helper-replace-supers@^7.18.6", "@babel/helper-replace-supers@^7.20.7", "@babel/helper-replace-supers@^7.21.5": version "7.21.5" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/helper-replace-supers/-/helper-replace-supers-7.21.5.tgz#a6ad005ba1c7d9bc2973dfde05a1bba7065dde3c" - integrity sha1-pq0AW6HH2bwpc9/eBaG7pwZd3jw= + integrity "sha1-pq0AW6HH2bwpc9/eBaG7pwZd3jw= sha512-/y7vBgsr9Idu4M6MprbOVUfH3vs7tsIfnVWv/Ml2xgwvyH6LTngdfbf5AdsKwkJy4zgy1X/kuNrEKvhhK28Yrg==" dependencies: "@babel/helper-environment-visitor" "^7.21.5" "@babel/helper-member-expression-to-functions" "^7.21.5" @@ -199,43 +199,43 @@ "@babel/helper-simple-access@^7.21.5": version "7.21.5" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/helper-simple-access/-/helper-simple-access-7.21.5.tgz#d697a7971a5c39eac32c7e63c0921c06c8a249ee" - integrity sha1-1penlxpcOerDLH5jwJIcBsiiSe4= + integrity "sha1-1penlxpcOerDLH5jwJIcBsiiSe4= sha512-ENPDAMC1wAjR0uaCUwliBdiSl1KBJAVnMTzXqi64c2MG8MPR6ii4qf7bSXDqSFbr4W6W028/rf5ivoHop5/mkg==" dependencies: "@babel/types" "^7.21.5" "@babel/helper-skip-transparent-expression-wrappers@^7.20.0": version "7.20.0" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.20.0.tgz#fbe4c52f60518cab8140d77101f0e63a8a230684" - integrity sha1-++TFL2BRjKuBQNdxAfDmOoojBoQ= + integrity "sha1-++TFL2BRjKuBQNdxAfDmOoojBoQ= sha512-5y1JYeNKfvnT8sZcK9DVRtpTbGiomYIHviSP3OQWmDPU3DeH4a1ZlT/N2lyQ5P8egjcRaT/Y9aNqUxK0WsnIIg==" dependencies: "@babel/types" "^7.20.0" "@babel/helper-split-export-declaration@^7.18.6": version "7.18.6" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz#7367949bc75b20c6d5a5d4a97bba2824ae8ef075" - integrity sha1-c2eUm8dbIMbVpdSpe7ooJK6O8HU= + integrity "sha1-c2eUm8dbIMbVpdSpe7ooJK6O8HU= sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==" dependencies: "@babel/types" "^7.18.6" "@babel/helper-string-parser@^7.21.5": version "7.21.5" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/helper-string-parser/-/helper-string-parser-7.21.5.tgz#2b3eea65443c6bdc31c22d037c65f6d323b6b2bd" - integrity sha1-Kz7qZUQ8a9wxwi0DfGX20yO2sr0= + integrity "sha1-Kz7qZUQ8a9wxwi0DfGX20yO2sr0= sha512-5pTUx3hAJaZIdW99sJ6ZUUgWq/Y+Hja7TowEnLNMm1VivRgZQL3vpBY3qUACVsvw+yQU6+YgfBVmcbLaZtrA1w==" "@babel/helper-validator-identifier@^7.18.6", "@babel/helper-validator-identifier@^7.19.1": version "7.19.1" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz#7eea834cf32901ffdc1a7ee555e2f9c27e249ca2" - integrity sha1-fuqDTPMpAf/cGn7lVeL5wn4knKI= + integrity "sha1-fuqDTPMpAf/cGn7lVeL5wn4knKI= sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==" "@babel/helper-validator-option@^7.21.0": version "7.21.0" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/helper-validator-option/-/helper-validator-option-7.21.0.tgz#8224c7e13ace4bafdc4004da2cf064ef42673180" - integrity sha1-giTH4TrOS6/cQATaLPBk70JnMYA= + integrity "sha1-giTH4TrOS6/cQATaLPBk70JnMYA= sha512-rmL/B8/f0mKS2baE9ZpyTcTavvEuWhTTW8amjzXNvYG4AwBsqTLikfXsEofsJEfKHf+HQVQbFOHy6o+4cnC/fQ==" "@babel/helper-wrap-function@^7.18.9": version "7.20.5" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/helper-wrap-function/-/helper-wrap-function-7.20.5.tgz#75e2d84d499a0ab3b31c33bcfe59d6b8a45f62e3" - integrity sha1-deLYTUmaCrOzHDO8/lnWuKRfYuM= + integrity "sha1-deLYTUmaCrOzHDO8/lnWuKRfYuM= sha512-bYMxIWK5mh+TgXGVqAtnu5Yn1un+v8DDZtqyzKRLUzrh70Eal2O3aZ7aPYiMADO4uKlkzOiRiZ6GX5q3qxvW9Q==" dependencies: "@babel/helper-function-name" "^7.19.0" "@babel/template" "^7.18.10" @@ -245,7 +245,7 @@ "@babel/helpers@^7.21.5": version "7.21.5" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/helpers/-/helpers-7.21.5.tgz#5bac66e084d7a4d2d9696bdf0175a93f7fb63c08" - integrity sha1-W6xm4ITXpNLZaWvfAXWpP3+2PAg= + integrity "sha1-W6xm4ITXpNLZaWvfAXWpP3+2PAg= sha512-BSY+JSlHxOmGsPTydUkPf1MdMQ3M81x5xGCOVgWM3G8XH77sJ292Y2oqcp0CbbgxhqBuI46iUz1tT7hqP7EfgA==" dependencies: "@babel/template" "^7.20.7" "@babel/traverse" "^7.21.5" @@ -254,7 +254,7 @@ "@babel/highlight@^7.18.6": version "7.18.6" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/highlight/-/highlight-7.18.6.tgz#81158601e93e2563795adcbfbdf5d64be3f2ecdf" - integrity sha1-gRWGAek+JWN5Wty/vfXWS+Py7N8= + integrity "sha1-gRWGAek+JWN5Wty/vfXWS+Py7N8= sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==" dependencies: "@babel/helper-validator-identifier" "^7.18.6" chalk "^2.0.0" @@ -263,19 +263,19 @@ "@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.20.7", "@babel/parser@^7.21.5", "@babel/parser@^7.21.8": version "7.21.8" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/parser/-/parser-7.21.8.tgz#642af7d0333eab9c0ad70b14ac5e76dbde7bfdf8" - integrity sha1-ZCr30DM+q5wK1wsUrF522957/fg= + integrity "sha1-ZCr30DM+q5wK1wsUrF522957/fg= sha512-6zavDGdzG3gUqAdWvlLFfk+36RilI+Pwyuuh7HItyeScCWP3k6i8vKclAQ0bM/0y/Kz/xiwvxhMv9MgTJP5gmA==" "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.18.6": version "7.18.6" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.18.6.tgz#da5b8f9a580acdfbe53494dba45ea389fb09a4d2" - integrity sha1-2luPmlgKzfvlNJTbpF6jifsJpNI= + integrity "sha1-2luPmlgKzfvlNJTbpF6jifsJpNI= sha512-Dgxsyg54Fx1d4Nge8UnvTrED63vrwOdPmyvPzlNN/boaliRP54pm3pGzZD1SJUwrBA+Cs/xdG8kXX6Mn/RfISQ==" dependencies: "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.20.7": version "7.20.7" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.20.7.tgz#d9c85589258539a22a901033853101a6198d4ef1" - integrity sha1-2chViSWFOaIqkBAzhTEBphmNTvE= + integrity "sha1-2chViSWFOaIqkBAzhTEBphmNTvE= sha512-sbr9+wNE5aXMBBFBICk01tt7sBf2Oc9ikRFEcem/ZORup9IMUdNhW7/wVLEbbtlWOsEubJet46mHAL2C8+2jKQ==" dependencies: "@babel/helper-plugin-utils" "^7.20.2" "@babel/helper-skip-transparent-expression-wrappers" "^7.20.0" @@ -284,7 +284,7 @@ "@babel/plugin-proposal-async-generator-functions@^7.20.7": version "7.20.7" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.20.7.tgz#bfb7276d2d573cb67ba379984a2334e262ba5326" - integrity sha1-v7cnbS1XPLZ7o3mYSiM04mK6UyY= + integrity "sha1-v7cnbS1XPLZ7o3mYSiM04mK6UyY= sha512-xMbiLsn/8RK7Wq7VeVytytS2L6qE69bXPB10YCmMdDZbKF4okCqY74pI/jJQ/8U0b/F6NrT2+14b8/P9/3AMGA==" dependencies: "@babel/helper-environment-visitor" "^7.18.9" "@babel/helper-plugin-utils" "^7.20.2" @@ -294,7 +294,7 @@ "@babel/plugin-proposal-class-properties@^7.18.6": version "7.18.6" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz#b110f59741895f7ec21a6fff696ec46265c446a3" - integrity sha1-sRD1l0GJX37CGm//aW7EYmXERqM= + integrity "sha1-sRD1l0GJX37CGm//aW7EYmXERqM= sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==" dependencies: "@babel/helper-create-class-features-plugin" "^7.18.6" "@babel/helper-plugin-utils" "^7.18.6" @@ -302,7 +302,7 @@ "@babel/plugin-proposal-class-static-block@^7.21.0": version "7.21.0" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.21.0.tgz#77bdd66fb7b605f3a61302d224bdfacf5547977d" - integrity sha1-d73Wb7e2BfOmEwLSJL36z1VHl30= + integrity "sha1-d73Wb7e2BfOmEwLSJL36z1VHl30= sha512-XP5G9MWNUskFuP30IfFSEFB0Z6HzLIUcjYM4bYOPHXl7eiJ9HFv8tWj6TXTN5QODiEhDZAeI4hLok2iHFFV4hw==" dependencies: "@babel/helper-create-class-features-plugin" "^7.21.0" "@babel/helper-plugin-utils" "^7.20.2" @@ -311,7 +311,7 @@ "@babel/plugin-proposal-dynamic-import@^7.18.6": version "7.18.6" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.18.6.tgz#72bcf8d408799f547d759298c3c27c7e7faa4d94" - integrity sha1-crz41Ah5n1R9dZKYw8J8fn+qTZQ= + integrity "sha1-crz41Ah5n1R9dZKYw8J8fn+qTZQ= sha512-1auuwmK+Rz13SJj36R+jqFPMJWyKEDd7lLSdOj4oJK0UTgGueSAtkrCvz9ewmgyU/P941Rv2fQwZJN8s6QruXw==" dependencies: "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-syntax-dynamic-import" "^7.8.3" @@ -319,7 +319,7 @@ "@babel/plugin-proposal-export-namespace-from@^7.18.9": version "7.18.9" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.18.9.tgz#5f7313ab348cdb19d590145f9247540e94761203" - integrity sha1-X3MTqzSM2xnVkBRfkkdUDpR2EgM= + integrity "sha1-X3MTqzSM2xnVkBRfkkdUDpR2EgM= sha512-k1NtHyOMvlDDFeb9G5PhUXuGj8m/wiwojgQVEhJ/fsVsMCpLyOP4h0uGEjYJKrRI+EVPlb5Jk+Gt9P97lOGwtA==" dependencies: "@babel/helper-plugin-utils" "^7.18.9" "@babel/plugin-syntax-export-namespace-from" "^7.8.3" @@ -327,7 +327,7 @@ "@babel/plugin-proposal-json-strings@^7.18.6": version "7.18.6" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.18.6.tgz#7e8788c1811c393aff762817e7dbf1ebd0c05f0b" - integrity sha1-foeIwYEcOTr/digX59vx69DAXws= + integrity "sha1-foeIwYEcOTr/digX59vx69DAXws= sha512-lr1peyn9kOdbYc0xr0OdHTZ5FMqS6Di+H0Fz2I/JwMzGmzJETNeOFq2pBySw6X/KFL5EWDjlJuMsUGRFb8fQgQ==" dependencies: "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-syntax-json-strings" "^7.8.3" @@ -335,7 +335,7 @@ "@babel/plugin-proposal-logical-assignment-operators@^7.20.7": version "7.20.7" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.20.7.tgz#dfbcaa8f7b4d37b51e8bfb46d94a5aea2bb89d83" - integrity sha1-37yqj3tNN7Uei/tG2Upa6iu4nYM= + integrity "sha1-37yqj3tNN7Uei/tG2Upa6iu4nYM= sha512-y7C7cZgpMIjWlKE5T7eJwp+tnRYM89HmRvWM5EQuB5BoHEONjmQ8lSNmBUwOyy/GFRsohJED51YBF79hE1djug==" dependencies: "@babel/helper-plugin-utils" "^7.20.2" "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" @@ -343,7 +343,7 @@ "@babel/plugin-proposal-nullish-coalescing-operator@^7.18.6": version "7.18.6" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz#fdd940a99a740e577d6c753ab6fbb43fdb9467e1" - integrity sha1-/dlAqZp0Dld9bHU6tvu0P9uUZ+E= + integrity "sha1-/dlAqZp0Dld9bHU6tvu0P9uUZ+E= sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==" dependencies: "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" @@ -351,7 +351,7 @@ "@babel/plugin-proposal-numeric-separator@^7.18.6": version "7.18.6" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.18.6.tgz#899b14fbafe87f053d2c5ff05b36029c62e13c75" - integrity sha1-iZsU+6/ofwU9LF/wWzYCnGLhPHU= + integrity "sha1-iZsU+6/ofwU9LF/wWzYCnGLhPHU= sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q==" dependencies: "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-syntax-numeric-separator" "^7.10.4" @@ -359,7 +359,7 @@ "@babel/plugin-proposal-object-rest-spread@^7.20.7": version "7.20.7" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.20.7.tgz#aa662940ef425779c75534a5c41e9d936edc390a" - integrity sha1-qmYpQO9CV3nHVTSlxB6dk27cOQo= + integrity "sha1-qmYpQO9CV3nHVTSlxB6dk27cOQo= sha512-d2S98yCiLxDVmBmE8UjGcfPvNEUbA1U5q5WxaWFUGRzJSVAZqm5W6MbPct0jxnegUZ0niLeNX+IOzEs7wYg9Dg==" dependencies: "@babel/compat-data" "^7.20.5" "@babel/helper-compilation-targets" "^7.20.7" @@ -370,7 +370,7 @@ "@babel/plugin-proposal-optional-catch-binding@^7.18.6": version "7.18.6" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.18.6.tgz#f9400d0e6a3ea93ba9ef70b09e72dd6da638a2cb" - integrity sha1-+UANDmo+qTup73CwnnLdbaY4oss= + integrity "sha1-+UANDmo+qTup73CwnnLdbaY4oss= sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw==" dependencies: "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" @@ -378,7 +378,7 @@ "@babel/plugin-proposal-optional-chaining@^7.20.7", "@babel/plugin-proposal-optional-chaining@^7.21.0": version "7.21.0" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.21.0.tgz#886f5c8978deb7d30f678b2e24346b287234d3ea" - integrity sha1-iG9ciXjet9MPZ4suJDRrKHI00+o= + integrity "sha1-iG9ciXjet9MPZ4suJDRrKHI00+o= sha512-p4zeefM72gpmEe2fkUr/OnOXpWEf8nAgk7ZYVqqfFiyIG7oFfVZcCrU64hWn5xp4tQ9LkV4bTIa5rD0KANpKNA==" dependencies: "@babel/helper-plugin-utils" "^7.20.2" "@babel/helper-skip-transparent-expression-wrappers" "^7.20.0" @@ -387,7 +387,7 @@ "@babel/plugin-proposal-private-methods@^7.18.6": version "7.18.6" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.18.6.tgz#5209de7d213457548a98436fa2882f52f4be6bea" - integrity sha1-UgnefSE0V1SKmENvoogvUvS+a+o= + integrity "sha1-UgnefSE0V1SKmENvoogvUvS+a+o= sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA==" dependencies: "@babel/helper-create-class-features-plugin" "^7.18.6" "@babel/helper-plugin-utils" "^7.18.6" @@ -395,7 +395,7 @@ "@babel/plugin-proposal-private-property-in-object@^7.21.0": version "7.21.0" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0.tgz#19496bd9883dd83c23c7d7fc45dcd9ad02dfa1dc" - integrity sha1-GUlr2Yg92Dwjx9f8RdzZrQLfodw= + integrity "sha1-GUlr2Yg92Dwjx9f8RdzZrQLfodw= sha512-ha4zfehbJjc5MmXBlHec1igel5TJXXLDDRbuJ4+XT2TJcyD9/V1919BA8gMvsdHcNMBy4WBUBiRb3nw/EQUtBw==" dependencies: "@babel/helper-annotate-as-pure" "^7.18.6" "@babel/helper-create-class-features-plugin" "^7.21.0" @@ -405,7 +405,7 @@ "@babel/plugin-proposal-unicode-property-regex@^7.18.6", "@babel/plugin-proposal-unicode-property-regex@^7.4.4": version "7.18.6" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.18.6.tgz#af613d2cd5e643643b65cded64207b15c85cb78e" - integrity sha1-r2E9LNXmQ2Q7Zc3tZCB7Fchct44= + integrity "sha1-r2E9LNXmQ2Q7Zc3tZCB7Fchct44= sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w==" dependencies: "@babel/helper-create-regexp-features-plugin" "^7.18.6" "@babel/helper-plugin-utils" "^7.18.6" @@ -455,7 +455,7 @@ "@babel/plugin-syntax-import-assertions@^7.20.0": version "7.20.0" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.20.0.tgz#bb50e0d4bea0957235390641209394e87bdb9cc4" - integrity sha1-u1Dg1L6glXI1OQZBIJOU6HvbnMQ= + integrity "sha1-u1Dg1L6glXI1OQZBIJOU6HvbnMQ= sha512-IUh1vakzNoWalR8ch/areW7qFopR2AEw03JlG7BbrDqmQ4X3q9uuipQwSGrUn7oGiemKjtSLDhNtQHzMHr1JdQ==" dependencies: "@babel/helper-plugin-utils" "^7.19.0" @@ -476,7 +476,7 @@ "@babel/plugin-syntax-jsx@^7.7.2": version "7.21.4" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.21.4.tgz#f264ed7bf40ffc9ec239edabc17a50c4f5b6fea2" - integrity sha1-8mTte/QP/J7COe2rwXpQxPW2/qI= + integrity "sha1-8mTte/QP/J7COe2rwXpQxPW2/qI= sha512-5hewiLct5OKyh6PLKEYaFclcqtIgCb6bmELouxjF6up5q3Sov7rOayW4RwhbaBL0dit8rA80GNfY+UuDp2mBbQ==" dependencies: "@babel/helper-plugin-utils" "^7.20.2" @@ -539,21 +539,21 @@ "@babel/plugin-syntax-typescript@^7.7.2": version "7.21.4" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.21.4.tgz#2751948e9b7c6d771a8efa59340c15d4a2891ff8" - integrity sha1-J1GUjpt8bXcajvpZNAwV1KKJH/g= + integrity "sha1-J1GUjpt8bXcajvpZNAwV1KKJH/g= sha512-xz0D39NvhQn4t4RNsHmDnnsaQizIlUkdtYvLs8La1BlfjQ6JEwxkJGeqJMW2tAXx+q6H+WFuUTXNdYVpEya0YA==" dependencies: "@babel/helper-plugin-utils" "^7.20.2" "@babel/plugin-transform-arrow-functions@^7.21.5": version "7.21.5" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.21.5.tgz#9bb42a53de447936a57ba256fbf537fc312b6929" - integrity sha1-m7QqU95EeTale6JW+/U3/DEraSk= + integrity "sha1-m7QqU95EeTale6JW+/U3/DEraSk= sha512-wb1mhwGOCaXHDTcsRYMKF9e5bbMgqwxtqa2Y1ifH96dXJPwbuLX9qHy3clhrxVqgMz7nyNXs8VkxdH8UBcjKqA==" dependencies: "@babel/helper-plugin-utils" "^7.21.5" "@babel/plugin-transform-async-to-generator@^7.20.7": version "7.20.7" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.20.7.tgz#dfee18623c8cb31deb796aa3ca84dda9cea94354" - integrity sha1-3+4YYjyMsx3reWqjyoTdqc6pQ1Q= + integrity "sha1-3+4YYjyMsx3reWqjyoTdqc6pQ1Q= sha512-Uo5gwHPT9vgnSXQxqGtpdufUiWp96gk7yiP4Mp5bm1QMkEmLXBO7PAGYbKoJ6DhAwiNkcHFBol/x5zZZkL/t0Q==" dependencies: "@babel/helper-module-imports" "^7.18.6" "@babel/helper-plugin-utils" "^7.20.2" @@ -562,21 +562,21 @@ "@babel/plugin-transform-block-scoped-functions@^7.18.6": version "7.18.6" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.18.6.tgz#9187bf4ba302635b9d70d986ad70f038726216a8" - integrity sha1-kYe/S6MCY1udcNmGrXDwOHJiFqg= + integrity "sha1-kYe/S6MCY1udcNmGrXDwOHJiFqg= sha512-ExUcOqpPWnliRcPqves5HJcJOvHvIIWfuS4sroBUenPuMdmW+SMHDakmtS7qOo13sVppmUijqeTv7qqGsvURpQ==" dependencies: "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-transform-block-scoping@^7.21.0": version "7.21.0" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.21.0.tgz#e737b91037e5186ee16b76e7ae093358a5634f02" - integrity sha1-5ze5EDflGG7ha3bnrgkzWKVjTwI= + integrity "sha1-5ze5EDflGG7ha3bnrgkzWKVjTwI= sha512-Mdrbunoh9SxwFZapeHVrwFmri16+oYotcZysSzhNIVDwIAb1UV+kvnxULSYq9J3/q5MDG+4X6w8QVgD1zhBXNQ==" dependencies: "@babel/helper-plugin-utils" "^7.20.2" "@babel/plugin-transform-classes@^7.21.0": version "7.21.0" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/plugin-transform-classes/-/plugin-transform-classes-7.21.0.tgz#f469d0b07a4c5a7dbb21afad9e27e57b47031665" - integrity sha1-9GnQsHpMWn27Ia+tnifle0cDFmU= + integrity "sha1-9GnQsHpMWn27Ia+tnifle0cDFmU= sha512-RZhbYTCEUAe6ntPehC4hlslPWosNHDox+vAs4On/mCLRLfoDVHf6hVEd7kuxr1RnHwJmxFfUM3cZiZRmPxJPXQ==" dependencies: "@babel/helper-annotate-as-pure" "^7.18.6" "@babel/helper-compilation-targets" "^7.20.7" @@ -591,7 +591,7 @@ "@babel/plugin-transform-computed-properties@^7.21.5": version "7.21.5" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.21.5.tgz#3a2d8bb771cd2ef1cd736435f6552fe502e11b44" - integrity sha1-Oi2Lt3HNLvHNc2Q19lUv5QLhG0Q= + integrity "sha1-Oi2Lt3HNLvHNc2Q19lUv5QLhG0Q= sha512-TR653Ki3pAwxBxUe8srfF3e4Pe3FTA46uaNHYyQwIoM4oWKSoOZiDNyHJ0oIoDIUPSRQbQG7jzgVBX3FPVne1Q==" dependencies: "@babel/helper-plugin-utils" "^7.21.5" "@babel/template" "^7.20.7" @@ -599,14 +599,14 @@ "@babel/plugin-transform-destructuring@^7.21.3": version "7.21.3" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.21.3.tgz#73b46d0fd11cd6ef57dea8a381b1215f4959d401" - integrity sha1-c7RtD9Ec1u9X3qijgbEhX0lZ1AE= + integrity "sha1-c7RtD9Ec1u9X3qijgbEhX0lZ1AE= sha512-bp6hwMFzuiE4HqYEyoGJ/V2LeIWn+hLVKc4pnj++E5XQptwhtcGmSayM029d/j2X1bPKGTlsyPwAubuU22KhMA==" dependencies: "@babel/helper-plugin-utils" "^7.20.2" "@babel/plugin-transform-dotall-regex@^7.18.6", "@babel/plugin-transform-dotall-regex@^7.4.4": version "7.18.6" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.18.6.tgz#b286b3e7aae6c7b861e45bed0a2fafd6b1a4fef8" - integrity sha1-soaz56rmx7hh5FvtCi+v1rGk/vg= + integrity "sha1-soaz56rmx7hh5FvtCi+v1rGk/vg= sha512-6S3jpun1eEbAxq7TdjLotAsl4WpQI9DxfkycRcKrjhQYzU87qpXdknpBg/e+TdcMehqGnLFi7tnFUBR02Vq6wg==" dependencies: "@babel/helper-create-regexp-features-plugin" "^7.18.6" "@babel/helper-plugin-utils" "^7.18.6" @@ -614,14 +614,14 @@ "@babel/plugin-transform-duplicate-keys@^7.18.9": version "7.18.9" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.18.9.tgz#687f15ee3cdad6d85191eb2a372c4528eaa0ae0e" - integrity sha1-aH8V7jza1thRkesqNyxFKOqgrg4= + integrity "sha1-aH8V7jza1thRkesqNyxFKOqgrg4= sha512-d2bmXCtZXYc59/0SanQKbiWINadaJXqtvIQIzd4+hNwkWBgyCd5F/2t1kXoUdvPMrxzPvhK6EMQRROxsue+mfw==" dependencies: "@babel/helper-plugin-utils" "^7.18.9" "@babel/plugin-transform-exponentiation-operator@^7.18.6": version "7.18.6" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.18.6.tgz#421c705f4521888c65e91fdd1af951bfefd4dacd" - integrity sha1-QhxwX0UhiIxl6R/dGvlRv+/U2s0= + integrity "sha1-QhxwX0UhiIxl6R/dGvlRv+/U2s0= sha512-wzEtc0+2c88FVR34aQmiz56dxEkxr2g8DQb/KfaFa1JYXOFVsbhvAonFN6PwVWj++fKmku8NP80plJ5Et4wqHw==" dependencies: "@babel/helper-builder-binary-assignment-operator-visitor" "^7.18.6" "@babel/helper-plugin-utils" "^7.18.6" @@ -629,14 +629,14 @@ "@babel/plugin-transform-for-of@^7.21.5": version "7.21.5" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.21.5.tgz#e890032b535f5a2e237a18535f56a9fdaa7b83fc" - integrity sha1-6JADK1NfWi4jehhTX1ap/ap7g/w= + integrity "sha1-6JADK1NfWi4jehhTX1ap/ap7g/w= sha512-nYWpjKW/7j/I/mZkGVgHJXh4bA1sfdFnJoOXwJuj4m3Q2EraO/8ZyrkCau9P5tbHQk01RMSt6KYLCsW7730SXQ==" dependencies: "@babel/helper-plugin-utils" "^7.21.5" "@babel/plugin-transform-function-name@^7.18.9": version "7.18.9" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.18.9.tgz#cc354f8234e62968946c61a46d6365440fc764e0" - integrity sha1-zDVPgjTmKWiUbGGkbWNlRA/HZOA= + integrity "sha1-zDVPgjTmKWiUbGGkbWNlRA/HZOA= sha512-WvIBoRPaJQ5yVHzcnJFor7oS5Ls0PYixlTYE63lCj2RtdQEl15M68FXQlxnG6wdraJIXRdR7KI+hQ7q/9QjrCQ==" dependencies: "@babel/helper-compilation-targets" "^7.18.9" "@babel/helper-function-name" "^7.18.9" @@ -645,21 +645,21 @@ "@babel/plugin-transform-literals@^7.18.9": version "7.18.9" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/plugin-transform-literals/-/plugin-transform-literals-7.18.9.tgz#72796fdbef80e56fba3c6a699d54f0de557444bc" - integrity sha1-cnlv2++A5W+6PGppnVTw3lV0RLw= + integrity "sha1-cnlv2++A5W+6PGppnVTw3lV0RLw= sha512-IFQDSRoTPnrAIrI5zoZv73IFeZu2dhu6irxQjY9rNjTT53VmKg9fenjvoiOWOkJ6mm4jKVPtdMzBY98Fp4Z4cg==" dependencies: "@babel/helper-plugin-utils" "^7.18.9" "@babel/plugin-transform-member-expression-literals@^7.18.6": version "7.18.6" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.18.6.tgz#ac9fdc1a118620ac49b7e7a5d2dc177a1bfee88e" - integrity sha1-rJ/cGhGGIKxJt+el0twXehv+6I4= + integrity "sha1-rJ/cGhGGIKxJt+el0twXehv+6I4= sha512-qSF1ihLGO3q+/g48k85tUjD033C29TNTVB2paCwZPVmOsjn9pClvYYrM2VeJpBY2bcNkuny0YUyTNRyRxJ54KA==" dependencies: "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-transform-modules-amd@^7.20.11": version "7.20.11" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.20.11.tgz#3daccca8e4cc309f03c3a0c4b41dc4b26f55214a" - integrity sha1-PazMqOTMMJ8Dw6DEtB3Esm9VIUo= + integrity "sha1-PazMqOTMMJ8Dw6DEtB3Esm9VIUo= sha512-NuzCt5IIYOW0O30UvqktzHYR2ud5bOWbY0yaxWZ6G+aFzOMJvrs5YHNikrbdaT15+KNO31nPOy5Fim3ku6Zb5g==" dependencies: "@babel/helper-module-transforms" "^7.20.11" "@babel/helper-plugin-utils" "^7.20.2" @@ -667,7 +667,7 @@ "@babel/plugin-transform-modules-commonjs@^7.21.5": version "7.21.5" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.21.5.tgz#d69fb947eed51af91de82e4708f676864e5e47bc" - integrity sha1-1p+5R+7VGvkd6C5HCPZ2hk5eR7w= + integrity "sha1-1p+5R+7VGvkd6C5HCPZ2hk5eR7w= sha512-OVryBEgKUbtqMoB7eG2rs6UFexJi6Zj6FDXx+esBLPTCxCNxAY9o+8Di7IsUGJ+AVhp5ncK0fxWUBd0/1gPhrQ==" dependencies: "@babel/helper-module-transforms" "^7.21.5" "@babel/helper-plugin-utils" "^7.21.5" @@ -676,7 +676,7 @@ "@babel/plugin-transform-modules-systemjs@^7.20.11": version "7.20.11" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.20.11.tgz#467ec6bba6b6a50634eea61c9c232654d8a4696e" - integrity sha1-Rn7Gu6a2pQY07qYcnCMmVNikaW4= + integrity "sha1-Rn7Gu6a2pQY07qYcnCMmVNikaW4= sha512-vVu5g9BPQKSFEmvt2TA4Da5N+QVS66EX21d8uoOihC+OCpUoGvzVsXeqFdtAEfVa5BILAeFt+U7yVmLbQnAJmw==" dependencies: "@babel/helper-hoist-variables" "^7.18.6" "@babel/helper-module-transforms" "^7.20.11" @@ -686,7 +686,7 @@ "@babel/plugin-transform-modules-umd@^7.18.6": version "7.18.6" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.18.6.tgz#81d3832d6034b75b54e62821ba58f28ed0aab4b9" - integrity sha1-gdODLWA0t1tU5ighuljyjtCqtLk= + integrity "sha1-gdODLWA0t1tU5ighuljyjtCqtLk= sha512-dcegErExVeXcRqNtkRU/z8WlBLnvD4MRnHgNs3MytRO1Mn1sHRyhbcpYbVMGclAqOjdW+9cfkdZno9dFdfKLfQ==" dependencies: "@babel/helper-module-transforms" "^7.18.6" "@babel/helper-plugin-utils" "^7.18.6" @@ -694,7 +694,7 @@ "@babel/plugin-transform-named-capturing-groups-regex@^7.20.5": version "7.20.5" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.20.5.tgz#626298dd62ea51d452c3be58b285d23195ba69a8" - integrity sha1-YmKY3WLqUdRSw75YsoXSMZW6aag= + integrity "sha1-YmKY3WLqUdRSw75YsoXSMZW6aag= sha512-mOW4tTzi5iTLnw+78iEq3gr8Aoq4WNRGpmSlrogqaiCBoR1HFhpU4JkpQFOHfeYx3ReVIFWOQJS4aZBRvuZ6mA==" dependencies: "@babel/helper-create-regexp-features-plugin" "^7.20.5" "@babel/helper-plugin-utils" "^7.20.2" @@ -702,14 +702,14 @@ "@babel/plugin-transform-new-target@^7.18.6": version "7.18.6" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.18.6.tgz#d128f376ae200477f37c4ddfcc722a8a1b3246a8" - integrity sha1-0Sjzdq4gBHfzfE3fzHIqihsyRqg= + integrity "sha1-0Sjzdq4gBHfzfE3fzHIqihsyRqg= sha512-DjwFA/9Iu3Z+vrAn+8pBUGcjhxKguSMlsFqeCKbhb9BAV756v0krzVK04CRDi/4aqmk8BsHb4a/gFcaA5joXRw==" dependencies: "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-transform-object-super@^7.18.6": version "7.18.6" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.18.6.tgz#fb3c6ccdd15939b6ff7939944b51971ddc35912c" - integrity sha1-+zxszdFZObb/eTmUS1GXHdw1kSw= + integrity "sha1-+zxszdFZObb/eTmUS1GXHdw1kSw= sha512-uvGz6zk+pZoS1aTZrOvrbj6Pp/kK2mp45t2B+bTDre2UgsZZ8EZLSJtUg7m/no0zOJUWgFONpB7Zv9W2tSaFlA==" dependencies: "@babel/helper-plugin-utils" "^7.18.6" "@babel/helper-replace-supers" "^7.18.6" @@ -717,21 +717,21 @@ "@babel/plugin-transform-parameters@^7.20.7", "@babel/plugin-transform-parameters@^7.21.3": version "7.21.3" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.21.3.tgz#18fc4e797cf6d6d972cb8c411dbe8a809fa157db" - integrity sha1-GPxOeXz21tlyy4xBHb6KgJ+hV9s= + integrity "sha1-GPxOeXz21tlyy4xBHb6KgJ+hV9s= sha512-Wxc+TvppQG9xWFYatvCGPvZ6+SIUxQ2ZdiBP+PHYMIjnPXD+uThCshaz4NZOnODAtBjjcVQQ/3OKs9LW28purQ==" dependencies: "@babel/helper-plugin-utils" "^7.20.2" "@babel/plugin-transform-property-literals@^7.18.6": version "7.18.6" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.18.6.tgz#e22498903a483448e94e032e9bbb9c5ccbfc93a3" - integrity sha1-4iSYkDpINEjpTgMum7ucXMv8k6M= + integrity "sha1-4iSYkDpINEjpTgMum7ucXMv8k6M= sha512-cYcs6qlgafTud3PAzrrRNbQtfpQ8+y/+M5tKmksS9+M1ckbH6kzY8MrexEM9mcA6JDsukE19iIRvAyYl463sMg==" dependencies: "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-transform-regenerator@^7.21.5": version "7.21.5" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.21.5.tgz#576c62f9923f94bcb1c855adc53561fd7913724e" - integrity sha1-V2xi+ZI/lLyxyFWtxTVh/XkTck4= + integrity "sha1-V2xi+ZI/lLyxyFWtxTVh/XkTck4= sha512-ZoYBKDb6LyMi5yCsByQ5jmXsHAQDDYeexT1Szvlmui+lADvfSecr5Dxd/PkrTC3pAD182Fcju1VQkB4oCp9M+w==" dependencies: "@babel/helper-plugin-utils" "^7.21.5" regenerator-transform "^0.15.1" @@ -739,21 +739,21 @@ "@babel/plugin-transform-reserved-words@^7.18.6": version "7.18.6" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.18.6.tgz#b1abd8ebf8edaa5f7fe6bbb8d2133d23b6a6f76a" - integrity sha1-savY6/jtql9/5ru40hM9I7am92o= + integrity "sha1-savY6/jtql9/5ru40hM9I7am92o= sha512-oX/4MyMoypzHjFrT1CdivfKZ+XvIPMFXwwxHp/r0Ddy2Vuomt4HDFGmft1TAY2yiTKiNSsh3kjBAzcM8kSdsjA==" dependencies: "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-transform-shorthand-properties@^7.18.6": version "7.18.6" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.18.6.tgz#6d6df7983d67b195289be24909e3f12a8f664dc9" - integrity sha1-bW33mD1nsZUom+JJCePxKo9mTck= + integrity "sha1-bW33mD1nsZUom+JJCePxKo9mTck= sha512-eCLXXJqv8okzg86ywZJbRn19YJHU4XUa55oz2wbHhaQVn/MM+XhukiT7SYqp/7o00dg52Rj51Ny+Ecw4oyoygw==" dependencies: "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-transform-spread@^7.20.7": version "7.20.7" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/plugin-transform-spread/-/plugin-transform-spread-7.20.7.tgz#c2d83e0b99d3bf83e07b11995ee24bf7ca09401e" - integrity sha1-wtg+C5nTv4PgexGZXuJL98oJQB4= + integrity "sha1-wtg+C5nTv4PgexGZXuJL98oJQB4= sha512-ewBbHQ+1U/VnH1fxltbJqDeWBU1oNLG8Dj11uIv3xVf7nrQu0bPGe5Rf716r7K5Qz+SqtAOVswoVunoiBtGhxw==" dependencies: "@babel/helper-plugin-utils" "^7.20.2" "@babel/helper-skip-transparent-expression-wrappers" "^7.20.0" @@ -761,35 +761,35 @@ "@babel/plugin-transform-sticky-regex@^7.18.6": version "7.18.6" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.18.6.tgz#c6706eb2b1524028e317720339583ad0f444adcc" - integrity sha1-xnBusrFSQCjjF3IDOVg60PRErcw= + integrity "sha1-xnBusrFSQCjjF3IDOVg60PRErcw= sha512-kfiDrDQ+PBsQDO85yj1icueWMfGfJFKN1KCkndygtu/C9+XUfydLC8Iv5UYJqRwy4zk8EcplRxEOeLyjq1gm6Q==" dependencies: "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-transform-template-literals@^7.18.9": version "7.18.9" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.18.9.tgz#04ec6f10acdaa81846689d63fae117dd9c243a5e" - integrity sha1-BOxvEKzaqBhGaJ1j+uEX3ZwkOl4= + integrity "sha1-BOxvEKzaqBhGaJ1j+uEX3ZwkOl4= sha512-S8cOWfT82gTezpYOiVaGHrCbhlHgKhQt8XH5ES46P2XWmX92yisoZywf5km75wv5sYcXDUCLMmMxOLCtthDgMA==" dependencies: "@babel/helper-plugin-utils" "^7.18.9" "@babel/plugin-transform-typeof-symbol@^7.18.9": version "7.18.9" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.18.9.tgz#c8cea68263e45addcd6afc9091429f80925762c0" - integrity sha1-yM6mgmPkWt3NavyQkUKfgJJXYsA= + integrity "sha1-yM6mgmPkWt3NavyQkUKfgJJXYsA= sha512-SRfwTtF11G2aemAZWivL7PD+C9z52v9EvMqH9BuYbabyPuKUvSWks3oCg6041pT925L4zVFqaVBeECwsmlguEw==" dependencies: "@babel/helper-plugin-utils" "^7.18.9" "@babel/plugin-transform-unicode-escapes@^7.21.5": version "7.21.5" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.21.5.tgz#1e55ed6195259b0e9061d81f5ef45a9b009fb7f2" - integrity sha1-HlXtYZUlmw6QYdgfXvRamwCft/I= + integrity "sha1-HlXtYZUlmw6QYdgfXvRamwCft/I= sha512-LYm/gTOwZqsYohlvFUe/8Tujz75LqqVC2w+2qPHLR+WyWHGCZPN1KBpJCJn+4Bk4gOkQy/IXKIge6az5MqwlOg==" dependencies: "@babel/helper-plugin-utils" "^7.21.5" "@babel/plugin-transform-unicode-regex@^7.18.6": version "7.18.6" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.18.6.tgz#194317225d8c201bbae103364ffe9e2cea36cdca" - integrity sha1-GUMXIl2MIBu64QM2T/6eLOo2zco= + integrity "sha1-GUMXIl2MIBu64QM2T/6eLOo2zco= sha512-gE7A6Lt7YLnNOL3Pb9BNeZvi+d8l7tcRrG4+pwJjK9hD2xX4mEvjlQW60G9EEmfXVYRPv9VRQcyegIVHCql/AA==" dependencies: "@babel/helper-create-regexp-features-plugin" "^7.18.6" "@babel/helper-plugin-utils" "^7.18.6" @@ -797,7 +797,7 @@ "@babel/preset-env@^7.16.8": version "7.21.5" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/preset-env/-/preset-env-7.21.5.tgz#db2089d99efd2297716f018aeead815ac3decffb" - integrity sha1-2yCJ2Z79IpdxbwGK7q2BWsPez/s= + integrity "sha1-2yCJ2Z79IpdxbwGK7q2BWsPez/s= sha512-wH00QnTTldTbf/IefEVyChtRdw5RJvODT/Vb4Vcxq1AZvtXj6T0YeX0cAcXhI6/BdGuiP3GcNIL4OQbI2DVNxg==" dependencies: "@babel/compat-data" "^7.21.5" "@babel/helper-compilation-targets" "^7.21.5" @@ -890,19 +890,19 @@ "@babel/regjsgen@^0.8.0": version "0.8.0" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/regjsgen/-/regjsgen-0.8.0.tgz#f0ba69b075e1f05fb2825b7fad991e7adbb18310" - integrity sha1-8LppsHXh8F+yglt/rZkeetuxgxA= + integrity "sha1-8LppsHXh8F+yglt/rZkeetuxgxA= sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==" "@babel/runtime@^7.8.4": version "7.21.5" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/runtime/-/runtime-7.21.5.tgz#8492dddda9644ae3bda3b45eabe87382caee7200" - integrity sha1-hJLd3alkSuO9o7Req+hzgsrucgA= + integrity "sha1-hJLd3alkSuO9o7Req+hzgsrucgA= sha512-8jI69toZqqcsnqGGqwGS4Qb1VwLOEp4hz+CXPywcvjs60u3B4Pom/U/7rm4W8tMOYEB+E9wgD0mW1l3r8qlI9Q==" dependencies: regenerator-runtime "^0.13.11" "@babel/template@^7.18.10", "@babel/template@^7.20.7", "@babel/template@^7.3.3": version "7.20.7" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/template/-/template-7.20.7.tgz#a15090c2839a83b02aa996c0b4994005841fd5a8" - integrity sha1-oVCQwoOag7AqqZbAtJlABYQf1ag= + integrity "sha1-oVCQwoOag7AqqZbAtJlABYQf1ag= sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw==" dependencies: "@babel/code-frame" "^7.18.6" "@babel/parser" "^7.20.7" @@ -911,7 +911,7 @@ "@babel/traverse@^7.20.5", "@babel/traverse@^7.21.5", "@babel/traverse@^7.7.2": version "7.21.5" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/traverse/-/traverse-7.21.5.tgz#ad22361d352a5154b498299d523cf72998a4b133" - integrity sha1-rSI2HTUqUVS0mCmdUjz3KZiksTM= + integrity "sha1-rSI2HTUqUVS0mCmdUjz3KZiksTM= sha512-AhQoI3YjWi6u/y/ntv7k48mcrCXmus0t79J9qPNlk/lAsFlCiJ047RmbfMOawySTHtywXhbXgpx/8nXMYd+oFw==" dependencies: "@babel/code-frame" "^7.21.4" "@babel/generator" "^7.21.5" @@ -927,7 +927,7 @@ "@babel/types@^7.0.0", "@babel/types@^7.18.6", "@babel/types@^7.18.9", "@babel/types@^7.20.0", "@babel/types@^7.20.5", "@babel/types@^7.20.7", "@babel/types@^7.21.0", "@babel/types@^7.21.4", "@babel/types@^7.21.5", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4": version "7.21.5" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/types/-/types-7.21.5.tgz#18dfbd47c39d3904d5db3d3dc2cc80bedb60e5b6" - integrity sha1-GN+9R8OdOQTV2z09wsyAvttg5bY= + integrity "sha1-GN+9R8OdOQTV2z09wsyAvttg5bY= sha512-m4AfNvVF2mVC/F7fDEdH2El3HzUg9It/XsCxZiOTTA3m3qYfcSVSbTfM6Q9xG+hYDniZssYhlXKKUMD5m8tF4Q==" dependencies: "@babel/helper-string-parser" "^7.21.5" "@babel/helper-validator-identifier" "^7.19.1" @@ -946,19 +946,19 @@ "@eslint-community/eslint-utils@^4.2.0": version "4.4.0" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz#a23514e8fb9af1269d5f7788aa556798d61c6b59" - integrity sha1-ojUU6Pua8SadX3eIqlVnmNYca1k= + integrity "sha1-ojUU6Pua8SadX3eIqlVnmNYca1k= sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==" dependencies: eslint-visitor-keys "^3.3.0" "@eslint-community/regexpp@^4.4.0": version "4.5.1" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@eslint-community/regexpp/-/regexpp-4.5.1.tgz#cdd35dce4fa1a89a4fd42b1599eb35b3af408884" - integrity sha1-zdNdzk+hqJpP1CsVmes1s69AiIQ= + integrity "sha1-zdNdzk+hqJpP1CsVmes1s69AiIQ= sha512-Z5ba73P98O1KUYCCJTUeVpja9RcGoMdncZ6T49FCUl2lN38JtCJ+3WgIDBv0AuY4WChU5PmtJmOCTlN6FZTFKQ==" "@eslint/eslintrc@^2.0.3": version "2.0.3" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@eslint/eslintrc/-/eslintrc-2.0.3.tgz#4910db5505f4d503f27774bf356e3704818a0331" - integrity sha1-SRDbVQX01QPyd3S/NW43BIGKAzE= + integrity "sha1-SRDbVQX01QPyd3S/NW43BIGKAzE= sha512-+5gy6OQfk+xx3q0d6jGZZC3f3KzAkXc/IanVxd1is/VIIziRqqt3ongQz0FiTUXqTk0c7aDB3OaFuKnuSoJicQ==" dependencies: ajv "^6.12.4" debug "^4.3.2" @@ -973,12 +973,12 @@ "@eslint/js@8.40.0": version "8.40.0" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@eslint/js/-/js-8.40.0.tgz#3ba73359e11f5a7bd3e407f70b3528abfae69cec" - integrity sha1-O6czWeEfWnvT5Af3CzUoq/rmnOw= + integrity "sha1-O6czWeEfWnvT5Af3CzUoq/rmnOw= sha512-ElyB54bJIhXQYVKjDSvCkPO1iU1tSAeVQJbllWJq1XQSmmA4dgFk8CbiBGpiOPxleE48vDogxCtmMYku4HSVLA==" "@humanwhocodes/config-array@^0.11.8": version "0.11.8" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@humanwhocodes/config-array/-/config-array-0.11.8.tgz#03595ac2075a4dc0f191cc2131de14fbd7d410b9" - integrity sha1-A1lawgdaTcDxkcwhMd4U+9fUELk= + integrity "sha1-A1lawgdaTcDxkcwhMd4U+9fUELk= sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g==" dependencies: "@humanwhocodes/object-schema" "^1.2.1" debug "^4.1.1" @@ -987,7 +987,7 @@ "@humanwhocodes/module-importer@^1.0.1": version "1.0.1" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz#af5b2691a22b44be847b0ca81641c5fb6ad0172c" - integrity sha1-r1smkaIrRL6EewyoFkHF+2rQFyw= + integrity "sha1-r1smkaIrRL6EewyoFkHF+2rQFyw= sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==" "@humanwhocodes/object-schema@^1.2.1": version "1.2.1" @@ -1013,7 +1013,7 @@ "@jest/console@^29.5.0": version "29.5.0" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@jest/console/-/console-29.5.0.tgz#593a6c5c0d3f75689835f1b3b4688c4f8544cb57" - integrity sha1-WTpsXA0/dWiYNfGztGiMT4VEy1c= + integrity "sha1-WTpsXA0/dWiYNfGztGiMT4VEy1c= sha512-NEpkObxPwyw/XxZVLPmAGKE89IQRp4puc6IQRPru6JKd1M3fW9v1xM1AnzIJE65hbCkzQAdnL8P47e9hzhiYLQ==" dependencies: "@jest/types" "^29.5.0" "@types/node" "*" @@ -1025,7 +1025,7 @@ "@jest/core@^29.5.0": version "29.5.0" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@jest/core/-/core-29.5.0.tgz#76674b96904484e8214614d17261cc491e5f1f03" - integrity sha1-dmdLlpBEhOghRhTRcmHMSR5fHwM= + integrity "sha1-dmdLlpBEhOghRhTRcmHMSR5fHwM= sha512-28UzQc7ulUrOQw1IsN/kv1QES3q2kkbl/wGslyhAclqZ/8cMdB5M68BffkIdSJgKBUt50d3hbwJ92XESlE7LiQ==" dependencies: "@jest/console" "^29.5.0" "@jest/reporters" "^29.5.0" @@ -1059,14 +1059,14 @@ "@jest/create-cache-key-function@^27.4.2": version "27.5.1" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@jest/create-cache-key-function/-/create-cache-key-function-27.5.1.tgz#7448fae15602ea95c828f5eceed35c202a820b31" - integrity sha1-dEj64VYC6pXIKPXs7tNcICqCCzE= + integrity "sha1-dEj64VYC6pXIKPXs7tNcICqCCzE= sha512-dmH1yW+makpTSURTy8VzdUwFnfQh1G8R+DxO2Ho2FFmBbKFEVm+3jWdvFhE2VqB/LATCTokkP0dotjyQyw5/AQ==" dependencies: "@jest/types" "^27.5.1" "@jest/environment@^29.5.0": version "29.5.0" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@jest/environment/-/environment-29.5.0.tgz#9152d56317c1fdb1af389c46640ba74ef0bb4c65" - integrity sha1-kVLVYxfB/bGvOJxGZAunTvC7TGU= + integrity "sha1-kVLVYxfB/bGvOJxGZAunTvC7TGU= sha512-5FXw2+wD29YU1d4I2htpRX7jYnAyTRjP2CsXQdo9SAM8g3ifxWPSV0HnClSn71xwctr0U3oZIIH+dtbfmnbXVQ==" dependencies: "@jest/fake-timers" "^29.5.0" "@jest/types" "^29.5.0" @@ -1076,14 +1076,14 @@ "@jest/expect-utils@^29.5.0": version "29.5.0" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@jest/expect-utils/-/expect-utils-29.5.0.tgz#f74fad6b6e20f924582dc8ecbf2cb800fe43a036" - integrity sha1-90+ta24g+SRYLcjsvyy4AP5DoDY= + integrity "sha1-90+ta24g+SRYLcjsvyy4AP5DoDY= sha512-fmKzsidoXQT2KwnrwE0SQq3uj8Z763vzR8LnLBwC2qYWEFpjX8daRsk6rHUM1QvNlEW/UJXNXm59ztmJJWs2Mg==" dependencies: jest-get-type "^29.4.3" "@jest/expect@^29.5.0": version "29.5.0" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@jest/expect/-/expect-29.5.0.tgz#80952f5316b23c483fbca4363ce822af79c38fba" - integrity sha1-gJUvUxayPEg/vKQ2POgir3nDj7o= + integrity "sha1-gJUvUxayPEg/vKQ2POgir3nDj7o= sha512-PueDR2HGihN3ciUNGr4uelropW7rqUfTiOn+8u0leg/42UhblPxHkfoh0Ruu3I9Y1962P3u2DY4+h7GVTSVU6g==" dependencies: expect "^29.5.0" jest-snapshot "^29.5.0" @@ -1091,7 +1091,7 @@ "@jest/fake-timers@^29.5.0": version "29.5.0" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@jest/fake-timers/-/fake-timers-29.5.0.tgz#d4d09ec3286b3d90c60bdcd66ed28d35f1b4dc2c" - integrity sha1-1NCewyhrPZDGC9zWbtKNNfG03Cw= + integrity "sha1-1NCewyhrPZDGC9zWbtKNNfG03Cw= sha512-9ARvuAAQcBwDAqOnglWq2zwNIRUDtk/SCkp/ToGEhFv5r86K21l+VEs0qNTaXtyiY0lEePl3kylijSYJQqdbDg==" dependencies: "@jest/types" "^29.5.0" "@sinonjs/fake-timers" "^10.0.2" @@ -1103,7 +1103,7 @@ "@jest/globals@^29.5.0": version "29.5.0" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@jest/globals/-/globals-29.5.0.tgz#6166c0bfc374c58268677539d0c181f9c1833298" - integrity sha1-YWbAv8N0xYJoZ3U50MGB+cGDMpg= + integrity "sha1-YWbAv8N0xYJoZ3U50MGB+cGDMpg= sha512-S02y0qMWGihdzNbUiqSAiKSpSozSuHX5UYc7QbnHP+D9Lyw8DgGGCinrN9uSuHPeKgSSzvPom2q1nAtBvUsvPQ==" dependencies: "@jest/environment" "^29.5.0" "@jest/expect" "^29.5.0" @@ -1113,7 +1113,7 @@ "@jest/reporters@^29.5.0": version "29.5.0" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@jest/reporters/-/reporters-29.5.0.tgz#985dfd91290cd78ddae4914ba7921bcbabe8ac9b" - integrity sha1-mF39kSkM143a5JFLp5Iby6vorJs= + integrity "sha1-mF39kSkM143a5JFLp5Iby6vorJs= sha512-D05STXqj/M8bP9hQNSICtPqz97u7ffGzZu+9XLucXhkOFBqKcXe04JLZOgIekOxdb73MAoBUFnqvf7MCpKk5OA==" dependencies: "@bcoe/v8-coverage" "^0.2.3" "@jest/console" "^29.5.0" @@ -1143,14 +1143,14 @@ "@jest/schemas@^29.4.3": version "29.4.3" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@jest/schemas/-/schemas-29.4.3.tgz#39cf1b8469afc40b6f5a2baaa146e332c4151788" - integrity sha1-Oc8bhGmvxAtvWiuqoUbjMsQVF4g= + integrity "sha1-Oc8bhGmvxAtvWiuqoUbjMsQVF4g= sha512-VLYKXQmtmuEz6IxJsrZwzG9NvtkQsWNnWMsKxqWNu3+CnfzJQhp0WDDKWLVV9hLKr0l3SLLFRqcYHjhtyuDVxg==" dependencies: "@sinclair/typebox" "^0.25.16" "@jest/source-map@^29.4.3": version "29.4.3" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@jest/source-map/-/source-map-29.4.3.tgz#ff8d05cbfff875d4a791ab679b4333df47951d20" - integrity sha1-/40Fy//4ddSnkatnm0Mz30eVHSA= + integrity "sha1-/40Fy//4ddSnkatnm0Mz30eVHSA= sha512-qyt/mb6rLyd9j1jUts4EQncvS6Yy3PM9HghnNv86QBlV+zdL2inCdK1tuVlL+J+lpiw2BI67qXOrX3UurBqQ1w==" dependencies: "@jridgewell/trace-mapping" "^0.3.15" callsites "^3.0.0" @@ -1159,7 +1159,7 @@ "@jest/test-result@^29.5.0": version "29.5.0" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@jest/test-result/-/test-result-29.5.0.tgz#7c856a6ca84f45cc36926a4e9c6b57f1973f1408" - integrity sha1-fIVqbKhPRcw2kmpOnGtX8Zc/FAg= + integrity "sha1-fIVqbKhPRcw2kmpOnGtX8Zc/FAg= sha512-fGl4rfitnbfLsrfx1uUpDEESS7zM8JdgZgOCQuxQvL1Sn/I6ijeAVQWGfXI9zb1i9Mzo495cIpVZhA0yr60PkQ==" dependencies: "@jest/console" "^29.5.0" "@jest/types" "^29.5.0" @@ -1169,7 +1169,7 @@ "@jest/test-sequencer@^29.5.0": version "29.5.0" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@jest/test-sequencer/-/test-sequencer-29.5.0.tgz#34d7d82d3081abd523dbddc038a3ddcb9f6d3cc4" - integrity sha1-NNfYLTCBq9Uj293AOKPdy59tPMQ= + integrity "sha1-NNfYLTCBq9Uj293AOKPdy59tPMQ= sha512-yPafQEcKjkSfDXyvtgiV4pevSeyuA6MQr6ZIdVkWJly9vkqjnFfcfhRQqpD5whjoU8EORki752xQmjaqoFjzMQ==" dependencies: "@jest/test-result" "^29.5.0" graceful-fs "^4.2.9" @@ -1179,7 +1179,7 @@ "@jest/transform@^29.5.0": version "29.5.0" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@jest/transform/-/transform-29.5.0.tgz#cf9c872d0965f0cbd32f1458aa44a2b1988b00f9" - integrity sha1-z5yHLQll8MvTLxRYqkSisZiLAPk= + integrity "sha1-z5yHLQll8MvTLxRYqkSisZiLAPk= sha512-8vbeZWqLJOvHaDfeMuoHITGKSz5qWc9u04lnWrQE3VyuSw604PzQM824ZeX9XSjUCeDiE3GuxZe5UKa8J61NQw==" dependencies: "@babel/core" "^7.11.6" "@jest/types" "^29.5.0" @@ -1211,7 +1211,7 @@ "@jest/types@^29.5.0": version "29.5.0" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@jest/types/-/types-29.5.0.tgz#f59ef9b031ced83047c67032700d8c807d6e1593" - integrity sha1-9Z75sDHO2DBHxnAycA2MgH1uFZM= + integrity "sha1-9Z75sDHO2DBHxnAycA2MgH1uFZM= sha512-qbu7kN6czmVRc3xWFQcAN03RAUamgppVUdXrvl1Wr3jlNF93o9mJbGcDWrwGB6ht44u7efB1qCFgVQmca24Uog==" dependencies: "@jest/schemas" "^29.4.3" "@types/istanbul-lib-coverage" "^2.0.0" @@ -1223,7 +1223,7 @@ "@jridgewell/gen-mapping@^0.3.0", "@jridgewell/gen-mapping@^0.3.2": version "0.3.3" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz#7e02e6eb5df901aaedb08514203b096614024098" - integrity sha1-fgLm6135AartsIUUIDsJZhQCQJg= + integrity "sha1-fgLm6135AartsIUUIDsJZhQCQJg= sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==" dependencies: "@jridgewell/set-array" "^1.0.1" "@jridgewell/sourcemap-codec" "^1.4.10" @@ -1232,17 +1232,17 @@ "@jridgewell/resolve-uri@3.1.0": version "3.1.0" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz#2203b118c157721addfe69d47b70465463066d78" - integrity sha1-IgOxGMFXchrd/mnUe3BGVGMGbXg= + integrity "sha1-IgOxGMFXchrd/mnUe3BGVGMGbXg= sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==" "@jridgewell/set-array@^1.0.1": version "1.1.2" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@jridgewell/set-array/-/set-array-1.1.2.tgz#7c6cf998d6d20b914c0a55a91ae928ff25965e72" - integrity sha1-fGz5mNbSC5FMClWpGuko/yWWXnI= + integrity "sha1-fGz5mNbSC5FMClWpGuko/yWWXnI= sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==" "@jridgewell/source-map@^0.3.2": version "0.3.3" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@jridgewell/source-map/-/source-map-0.3.3.tgz#8108265659d4c33e72ffe14e33d6cc5eb59f2fda" - integrity sha1-gQgmVlnUwz5y/+FOM9bMXrWfL9o= + integrity "sha1-gQgmVlnUwz5y/+FOM9bMXrWfL9o= sha512-b+fsZXeLYi9fEULmfBrhxn4IrPlINf8fiNarzTof004v3lFdntdwa9PF7vFJqm3mg7s+ScJMxXaE3Acp1irZcg==" dependencies: "@jridgewell/gen-mapping" "^0.3.0" "@jridgewell/trace-mapping" "^0.3.9" @@ -1250,7 +1250,7 @@ "@jridgewell/sourcemap-codec@1.4.14": version "1.4.14" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz#add4c98d341472a289190b424efbdb096991bb24" - integrity sha1-rdTJjTQUcqKJGQtCTvvbCWmRuyQ= + integrity "sha1-rdTJjTQUcqKJGQtCTvvbCWmRuyQ= sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==" "@jridgewell/sourcemap-codec@^1.4.10": version "1.4.15" @@ -1260,7 +1260,7 @@ "@jridgewell/trace-mapping@^0.3.12", "@jridgewell/trace-mapping@^0.3.15", "@jridgewell/trace-mapping@^0.3.17", "@jridgewell/trace-mapping@^0.3.9": version "0.3.18" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@jridgewell/trace-mapping/-/trace-mapping-0.3.18.tgz#25783b2086daf6ff1dcb53c9249ae480e4dd4cd6" - integrity sha1-JXg7IIba9v8dy1PJJJrkgOTdTNY= + integrity "sha1-JXg7IIba9v8dy1PJJJrkgOTdTNY= sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==" dependencies: "@jridgewell/resolve-uri" "3.1.0" "@jridgewell/sourcemap-codec" "1.4.14" @@ -1280,7 +1280,7 @@ "@msgpack/msgpack@^2.7.0": version "2.8.0" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@msgpack/msgpack/-/msgpack-2.8.0.tgz#4210deb771ee3912964f14a15ddfb5ff877e70b9" - integrity sha1-QhDet3HuORKWTxShXd+1/4d+cLk= + integrity "sha1-QhDet3HuORKWTxShXd+1/4d+cLk= sha512-h9u4u/jiIRKbq25PM+zymTyW6bhTzELvOoUd+AvYriWOAKpLGnIamaET3pnHYoI5iYphAHBI4ayx0MehR+VVPQ==" "@nodelib/fs.scandir@2.1.5": version "2.1.5" @@ -1306,76 +1306,76 @@ "@sinclair/typebox@^0.25.16": version "0.25.24" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@sinclair/typebox/-/typebox-0.25.24.tgz#8c7688559979f7079aacaf31aa881c3aa410b718" - integrity sha1-jHaIVZl59wearK8xqogcOqQQtxg= + integrity "sha1-jHaIVZl59wearK8xqogcOqQQtxg= sha512-XJfwUVUKDHF5ugKwIcxEgc9k8b7HbznCp6eUfWgu710hMPNIO4aw4/zB5RogDQz8nd6gyCDpU9O/m6qYEWY6yQ==" "@sinonjs/commons@^3.0.0": version "3.0.0" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@sinonjs/commons/-/commons-3.0.0.tgz#beb434fe875d965265e04722ccfc21df7f755d72" - integrity sha1-vrQ0/oddllJl4EcizPwh3391XXI= + integrity "sha1-vrQ0/oddllJl4EcizPwh3391XXI= sha512-jXBtWAF4vmdNmZgD5FoKsVLv3rPgDnLgPbU84LIJ3otV44vJlDRokVng5v8NFJdCf/da9legHcKaRuZs4L7faA==" dependencies: type-detect "4.0.8" "@sinonjs/fake-timers@^10.0.2": version "10.1.0" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@sinonjs/fake-timers/-/fake-timers-10.1.0.tgz#3595e42b3f0a7df80a9681cf58d8cb418eac1e99" - integrity sha1-NZXkKz8KffgKloHPWNjLQY6sHpk= + integrity "sha1-NZXkKz8KffgKloHPWNjLQY6sHpk= sha512-w1qd368vtrwttm1PRJWPW1QHlbmHrVDGs1eBH/jZvRPUFS4MNXV9Q33EQdjOdeAxZ7O8+3wM7zxztm2nfUSyKw==" dependencies: "@sinonjs/commons" "^3.0.0" "@swc/core-darwin-arm64@1.3.58": version "1.3.58" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@swc/core-darwin-arm64/-/core-darwin-arm64-1.3.58.tgz#0d87c46a0d18ded014a8b3c212cc3303f0f9f44a" - integrity sha1-DYfEag0Y3tAUqLPCEswzA/D59Eo= + integrity "sha1-DYfEag0Y3tAUqLPCEswzA/D59Eo= sha512-NwX9768gcM4HjBEE+2VCMB+h/5bwNDF4DngOTJa9w02l3AwGZXWE66X4ulJQ3Oxv8EAz1nzWb8lbi3XT+WCtmQ==" "@swc/core-darwin-x64@1.3.58": version "1.3.58" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@swc/core-darwin-x64/-/core-darwin-x64-1.3.58.tgz#5c2a73e0e688e3e4d71477994b7aec92ce1ee8fe" - integrity sha1-XCpz4OaI4+TXFHeZS3rsks4e6P4= + integrity "sha1-XCpz4OaI4+TXFHeZS3rsks4e6P4= sha512-XUdKXRIu8S7N5kmrtd0Nxf3uPIgZhQbgVHPhkvYH+Qwb+uXsdltKPiRwhvLI9M0yF3fvIrKtGJ8qUJdH5ih4zw==" "@swc/core-linux-arm-gnueabihf@1.3.58": version "1.3.58" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.3.58.tgz#0c03afc6cf279562bd53a53e5191ed6608ae4779" - integrity sha1-DAOvxs8nlWK9U6U+UZHtZgiuR3k= + integrity "sha1-DAOvxs8nlWK9U6U+UZHtZgiuR3k= sha512-9M3/5RzjCXnz94a1kxb+0eBzqyZkxzeYTMmvcjIJSy7MVvWNuy0wHuh+x96X/6197g40P9LkzAiZ7q0DvxSPQQ==" "@swc/core-linux-arm64-gnu@1.3.58": version "1.3.58" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.3.58.tgz#79797b0ede57803781146ecaa1cf521b979de2e4" - integrity sha1-eXl7Dt5XgDeBFG7Koc9SG5ed4uQ= + integrity "sha1-eXl7Dt5XgDeBFG7Koc9SG5ed4uQ= sha512-hRjJIJdnYUAZlUi9ACCrsfS/hSFP4MmZRaUVOlQOif578Rw4kQlxsxFd1Rh1bhzUCid0KyZOyCvRzHSD/2ONgw==" "@swc/core-linux-arm64-musl@1.3.58": version "1.3.58" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.3.58.tgz#4de5e07f1a16c0bcd789bf080fe74c164b499ad0" - integrity sha1-TeXgfxoWwLzXib8ID+dMFktJmtA= + integrity "sha1-TeXgfxoWwLzXib8ID+dMFktJmtA= sha512-3wrqZbRhbTKtxcQebMAMGKtyypL6BQU0OwqzAk4dBIgm9GaH45xu7sH2OekfHMp3vuj4uWuere+tYtr9HU7xcQ==" "@swc/core-linux-x64-gnu@1.3.58": version "1.3.58" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.3.58.tgz#a924eecc77ef2035c6ff2d58e9631efd28b54027" - integrity sha1-qSTuzHfvIDXG/y1Y6WMe/Si1QCc= + integrity "sha1-qSTuzHfvIDXG/y1Y6WMe/Si1QCc= sha512-yOI5ucB+8g+gtp4L2AydPBThobZ2I3WR/dU2T+x2DFIE5Qpe/fqt6HPTFb02qmvqvOw36TLT45pRwAe4cY5LAw==" "@swc/core-linux-x64-musl@1.3.58": version "1.3.58" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.3.58.tgz#b5d04049d3b404035cc0a261754d95a938f10323" - integrity sha1-tdBASdO0BANcwKJhdU2VqTjxAyM= + integrity "sha1-tdBASdO0BANcwKJhdU2VqTjxAyM= sha512-xPwxgPLxSWXsK9Yf792SsUmLKISdShAI9o/Kk6jjv0r7PRBS25hZ5FyOjAb/rMbAzDcmyGKHevKc3TMUPSMjwg==" "@swc/core-win32-arm64-msvc@1.3.58": version "1.3.58" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.3.58.tgz#cb75b087b8a85eca6ef7a9fe22be8e13d91fcb1c" - integrity sha1-y3Wwh7ioXspu96n+Ir6OE9kfyxw= + integrity "sha1-y3Wwh7ioXspu96n+Ir6OE9kfyxw= sha512-HW61trwkYGiaFprc+fJay6IKJ3scdquSdJaXsyumGF+jc/5kokQzNfY+JH6RWpk0/8zHnUWI4e+iNGuMYxYGeA==" "@swc/core-win32-ia32-msvc@1.3.58": version "1.3.58" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.3.58.tgz#f2cc7a0b451dd283110a7b1f57d3f1675b9f045a" - integrity sha1-8sx6C0Ud0oMRCnsfV9PxZ1ufBFo= + integrity "sha1-8sx6C0Ud0oMRCnsfV9PxZ1ufBFo= sha512-nODSJgHCY8GU6qHR9ieoxshaFD5GYGrPen/6VUvQkGwnV/yMI2Yvecgd1vLSUV4v67ZruPhIkP9OJruD+Juwhg==" "@swc/core-win32-x64-msvc@1.3.58": version "1.3.58" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.3.58.tgz#5fb1c9a7b529fbb906868bb48a5545ed444b9ad9" - integrity sha1-X7HJp7Up+7kGhou0ilVF7URLmtk= + integrity "sha1-X7HJp7Up+7kGhou0ilVF7URLmtk= sha512-If/uQ3MW6Pdtah2FHhfBY2xBdBXBJzOusXpFQAkwNbaxnrJgpqIIxpYphwsJMDQp6ooSS3U90YizW7mJNxb6UA==" "@swc/core@^1.3.58": version "1.3.58" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@swc/core/-/core-1.3.58.tgz#3371c6c660694124c2f1cc60ce6b99fd3df3f8c3" - integrity sha1-M3HGxmBpQSTC8cxgzmuZ/T3z+MM= + integrity "sha1-M3HGxmBpQSTC8cxgzmuZ/T3z+MM= sha512-tSDcHXMBQIo2ohQ/0ryZnUA+0mBrVhe49+cR+QsFru+XEhCok1BLqdE6cZ2a+sgZ1I+Dmw8aTxYm8Ox64PSKPQ==" optionalDependencies: "@swc/core-darwin-arm64" "1.3.58" "@swc/core-darwin-x64" "1.3.58" @@ -1391,7 +1391,7 @@ "@swc/jest@^0.2.26": version "0.2.26" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@swc/jest/-/jest-0.2.26.tgz#6ef2d6d31869e3aaddc132603bc21f2e4c57cc5d" - integrity sha1-bvLW0xhp46rdwTJgO8IfLkxXzF0= + integrity "sha1-bvLW0xhp46rdwTJgO8IfLkxXzF0= sha512-7lAi7q7ShTO3E5Gt1Xqf3pIhRbERxR1DUxvtVa9WKzIB+HGQ7wZP5sYx86zqnaEoKKGhmOoZ7gyW0IRu8Br5+A==" dependencies: "@jest/create-cache-key-function" "^27.4.2" jsonc-parser "^3.2.0" @@ -1399,12 +1399,12 @@ "@tootallnate/once@2": version "2.0.0" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@tootallnate/once/-/once-2.0.0.tgz#f544a148d3ab35801c1f633a7441fd87c2e484bf" - integrity sha1-9UShSNOrNYAcH2M6dEH9h8LkhL8= + integrity "sha1-9UShSNOrNYAcH2M6dEH9h8LkhL8= sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==" "@types/babel__core@^7.1.14": version "7.20.0" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@types/babel__core/-/babel__core-7.20.0.tgz#61bc5a4cae505ce98e1e36c5445e4bee060d8891" - integrity sha1-YbxaTK5QXOmOHjbFRF5L7gYNiJE= + integrity "sha1-YbxaTK5QXOmOHjbFRF5L7gYNiJE= sha512-+n8dL/9GWblDO0iU6eZAwEIJVr5DWigtle+Q6HLOrh/pdbXOhOtqzq8VPPE2zvNJzSKY4vH/z3iT3tn0A3ypiQ==" dependencies: "@babel/parser" "^7.20.7" "@babel/types" "^7.20.7" @@ -1430,7 +1430,7 @@ "@types/babel__traverse@*", "@types/babel__traverse@^7.0.6": version "7.18.5" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@types/babel__traverse/-/babel__traverse-7.18.5.tgz#c107216842905afafd3b6e774f6f935da6f5db80" - integrity sha1-wQchaEKQWvr9O253T2+TXab124A= + integrity "sha1-wQchaEKQWvr9O253T2+TXab124A= sha512-enCvTL8m/EHS/zIvJno9nE+ndYPh1/oNFzRYRmtUqJICG2VnCSBzMLW5VN2KCQU91f23tsNKR8v7VJJQMatl7Q==" dependencies: "@babel/types" "^7.3.0" @@ -1440,7 +1440,7 @@ "@types/eslint-scope@^3.7.3": version "3.7.4" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@types/eslint-scope/-/eslint-scope-3.7.4.tgz#37fc1223f0786c39627068a12e94d6e6fc61de16" - integrity sha1-N/wSI/B4bDlicGihLpTW5vxh3hY= + integrity "sha1-N/wSI/B4bDlicGihLpTW5vxh3hY= sha512-9K4zoImiZc3HlIp6AVUDE4CWYx22a+lhSZMYNpbjW04+YF0KWj4pJXnEMjdnFTiQibFFmElcsasJXDbdI/EPhA==" dependencies: "@types/eslint" "*" "@types/estree" "*" @@ -1448,7 +1448,7 @@ "@types/eslint@*": version "8.37.0" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@types/eslint/-/eslint-8.37.0.tgz#29cebc6c2a3ac7fea7113207bf5a828fdf4d7ef1" - integrity sha1-Kc68bCo6x/6nETIHv1qCj99NfvE= + integrity "sha1-Kc68bCo6x/6nETIHv1qCj99NfvE= sha512-Piet7dG2JBuDIfohBngQ3rCt7MgO9xCO4xIMKxBThCq5PNRB91IjlJ10eJVwfoNtvTErmxLzwBZ7rHZtbOMmFQ==" dependencies: "@types/estree" "*" "@types/json-schema" "*" @@ -1456,12 +1456,12 @@ "@types/estree@*", "@types/estree@^1.0.0": version "1.0.1" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@types/estree/-/estree-1.0.1.tgz#aa22750962f3bf0e79d753d3cc067f010c95f194" - integrity sha1-qiJ1CWLzvw5511PTzAZ/AQyV8ZQ= + integrity "sha1-qiJ1CWLzvw5511PTzAZ/AQyV8ZQ= sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==" "@types/graceful-fs@^4.1.3": version "4.1.6" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@types/graceful-fs/-/graceful-fs-4.1.6.tgz#e14b2576a1c25026b7f02ede1de3b84c3a1efeae" - integrity sha1-4UsldqHCUCa38C7eHeO4TDoe/q4= + integrity "sha1-4UsldqHCUCa38C7eHeO4TDoe/q4= sha512-Sig0SNORX9fdW+bQuTEovKj3uHcUL6LQKbCrrqb1X7J6/ReAbhCXRAhc+SMejhLELFj2QcyuxmUooZ4bt5ReSw==" dependencies: "@types/node" "*" @@ -1487,7 +1487,7 @@ "@types/jsdom@^16.2.14": version "16.2.15" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@types/jsdom/-/jsdom-16.2.15.tgz#6c09990ec43b054e49636cba4d11d54367fc90d6" - integrity sha1-bAmZDsQ7BU5JY2y6TRHVQ2f8kNY= + integrity "sha1-bAmZDsQ7BU5JY2y6TRHVQ2f8kNY= sha512-nwF87yjBKuX/roqGYerZZM0Nv1pZDMAT5YhOHYeM/72Fic+VEqJh4nyoqoapzJnW3pUlfxPY5FhgsJtM+dRnQQ==" dependencies: "@types/node" "*" "@types/parse5" "^6.0.3" @@ -1496,7 +1496,7 @@ "@types/jsdom@^20.0.0": version "20.0.1" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@types/jsdom/-/jsdom-20.0.1.tgz#07c14bc19bd2f918c1929541cdaacae894744808" - integrity sha1-B8FLwZvS+RjBkpVBzarK6JR0SAg= + integrity "sha1-B8FLwZvS+RjBkpVBzarK6JR0SAg= sha512-d0r18sZPmMQr1eG35u12FZfhIXNrnsPU/g5wvRKCUf/tOGilKKwYMYGqh33BNR6ba+2gkHw1EUiHoN3mn7E5IQ==" dependencies: "@types/node" "*" "@types/tough-cookie" "*" @@ -1510,7 +1510,7 @@ "@types/node@*": version "20.1.5" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@types/node/-/node-20.1.5.tgz#e94b604c67fc408f215fcbf3bd84d4743bf7f710" - integrity sha1-6UtgTGf8QI8hX8vzvYTUdDv39xA= + integrity "sha1-6UtgTGf8QI8hX8vzvYTUdDv39xA= sha512-IvGD1CD/nego63ySR7vrAKEX3AJTcmrAN2kn+/sDNLi1Ff5kBzDeEdqWDplK+0HAEoLYej137Sk0cUU8OLOlMg==" "@types/parse5@^6.0.3": version "6.0.3" @@ -1520,12 +1520,12 @@ "@types/prettier@^2.1.5": version "2.7.2" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@types/prettier/-/prettier-2.7.2.tgz#6c2324641cc4ba050a8c710b2b251b377581fbf0" - integrity sha1-bCMkZBzEugUKjHELKyUbN3WB+/A= + integrity "sha1-bCMkZBzEugUKjHELKyUbN3WB+/A= sha512-KufADq8uQqo1pYKVIYzfKbJfBAc0sOeXqGbFaSpv8MRmC/zXgowNZmFcbngndGk922QDmOASEXUZCaY48gs4cg==" "@types/semver@^7.3.12": version "7.5.0" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@types/semver/-/semver-7.5.0.tgz#591c1ce3a702c45ee15f47a42ade72c2fd78978a" - integrity sha1-WRwc46cCxF7hX0ekKt5ywv14l4o= + integrity "sha1-WRwc46cCxF7hX0ekKt5ywv14l4o= sha512-G8hZ6XJiHnuhQKR7ZmysCeJWE08o8T0AXtk5darsCaTVsYZhhgUrq53jizaR2FvsoeCwJhlmwTjkXBY5Pn/ZHw==" "@types/stack-utils@^2.0.0": version "2.0.1" @@ -1545,21 +1545,21 @@ "@types/yargs@^16.0.0": version "16.0.5" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@types/yargs/-/yargs-16.0.5.tgz#12cc86393985735a283e387936398c2f9e5f88e3" - integrity sha1-EsyGOTmFc1ooPjh5NjmML55fiOM= + integrity "sha1-EsyGOTmFc1ooPjh5NjmML55fiOM= sha512-AxO/ADJOBFJScHbWhq2xAhlWP24rY4aCEG/NFaMvbT3X2MgRsLjhjQwsn0Zi5zn0LG9jUhCCZMeX9Dkuw6k+vQ==" dependencies: "@types/yargs-parser" "*" "@types/yargs@^17.0.8": version "17.0.24" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@types/yargs/-/yargs-17.0.24.tgz#b3ef8d50ad4aa6aecf6ddc97c580a00f5aa11902" - integrity sha1-s++NUK1Kpq7PbdyXxYCgD1qhGQI= + integrity "sha1-s++NUK1Kpq7PbdyXxYCgD1qhGQI= sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==" dependencies: "@types/yargs-parser" "*" "@typescript-eslint/eslint-plugin@^5.26.0": version "5.59.6" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.59.6.tgz#a350faef1baa1e961698240f922d8de1761a9e2b" - integrity sha1-o1D67xuqHpYWmCQPki2N4XYanis= + integrity "sha1-o1D67xuqHpYWmCQPki2N4XYanis= sha512-sXtOgJNEuRU5RLwPUb1jxtToZbgvq3M6FPpY4QENxoOggK+UpTxUBpj6tD8+Qh2g46Pi9We87E+eHnUw8YcGsw==" dependencies: "@eslint-community/regexpp" "^4.4.0" "@typescript-eslint/scope-manager" "5.59.6" @@ -1575,7 +1575,7 @@ "@typescript-eslint/parser@^5.26.0": version "5.59.6" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@typescript-eslint/parser/-/parser-5.59.6.tgz#bd36f71f5a529f828e20b627078d3ed6738dbb40" - integrity sha1-vTb3H1pSn4KOILYnB40+1nONu0A= + integrity "sha1-vTb3H1pSn4KOILYnB40+1nONu0A= sha512-7pCa6al03Pv1yf/dUg/s1pXz/yGMUBAw5EeWqNTFiSueKvRNonze3hma3lhdsOrQcaOXhbk5gKu2Fludiho9VA==" dependencies: "@typescript-eslint/scope-manager" "5.59.6" "@typescript-eslint/types" "5.59.6" @@ -1585,7 +1585,7 @@ "@typescript-eslint/scope-manager@5.59.6": version "5.59.6" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@typescript-eslint/scope-manager/-/scope-manager-5.59.6.tgz#d43a3687aa4433868527cfe797eb267c6be35f19" - integrity sha1-1Do2h6pEM4aFJ8/nl+smfGvjXxk= + integrity "sha1-1Do2h6pEM4aFJ8/nl+smfGvjXxk= sha512-gLbY3Le9Dxcb8KdpF0+SJr6EQ+hFGYFl6tVY8VxLPFDfUZC7BHFw+Vq7bM5lE9DwWPfx4vMWWTLGXgpc0mAYyQ==" dependencies: "@typescript-eslint/types" "5.59.6" "@typescript-eslint/visitor-keys" "5.59.6" @@ -1593,7 +1593,7 @@ "@typescript-eslint/type-utils@5.59.6": version "5.59.6" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@typescript-eslint/type-utils/-/type-utils-5.59.6.tgz#37c51d2ae36127d8b81f32a0a4d2efae19277c48" - integrity sha1-N8UdKuNhJ9i4HzKgpNLvrhknfEg= + integrity "sha1-N8UdKuNhJ9i4HzKgpNLvrhknfEg= sha512-A4tms2Mp5yNvLDlySF+kAThV9VTBPCvGf0Rp8nl/eoDX9Okun8byTKoj3fJ52IJitjWOk0fKPNQhXEB++eNozQ==" dependencies: "@typescript-eslint/typescript-estree" "5.59.6" "@typescript-eslint/utils" "5.59.6" @@ -1603,12 +1603,12 @@ "@typescript-eslint/types@5.59.6": version "5.59.6" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@typescript-eslint/types/-/types-5.59.6.tgz#5a6557a772af044afe890d77c6a07e8c23c2460b" - integrity sha1-WmVXp3KvBEr+iQ13xqB+jCPCRgs= + integrity "sha1-WmVXp3KvBEr+iQ13xqB+jCPCRgs= sha512-tH5lBXZI7T2MOUgOWFdVNUILsI02shyQvfzG9EJkoONWugCG77NDDa1EeDGw7oJ5IvsTAAGVV8I3Tk2PNu9QfA==" "@typescript-eslint/typescript-estree@5.59.6": version "5.59.6" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@typescript-eslint/typescript-estree/-/typescript-estree-5.59.6.tgz#2fb80522687bd3825504925ea7e1b8de7bb6251b" - integrity sha1-L7gFImh704JVBJJep+G43nu2JRs= + integrity "sha1-L7gFImh704JVBJJep+G43nu2JRs= sha512-vW6JP3lMAs/Tq4KjdI/RiHaaJSO7IUsbkz17it/Rl9Q+WkQ77EOuOnlbaU8kKfVIOJxMhnRiBG+olE7f3M16DA==" dependencies: "@typescript-eslint/types" "5.59.6" "@typescript-eslint/visitor-keys" "5.59.6" @@ -1621,7 +1621,7 @@ "@typescript-eslint/utils@5.59.6": version "5.59.6" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@typescript-eslint/utils/-/utils-5.59.6.tgz#82960fe23788113fc3b1f9d4663d6773b7907839" - integrity sha1-gpYP4jeIET/DsfnUZj1nc7eQeDk= + integrity "sha1-gpYP4jeIET/DsfnUZj1nc7eQeDk= sha512-vzaaD6EXbTS29cVH0JjXBdzMt6VBlv+hE31XktDRMX1j3462wZCJa7VzO2AxXEXcIl8GQqZPcOPuW/Z1tZVogg==" dependencies: "@eslint-community/eslint-utils" "^4.2.0" "@types/json-schema" "^7.0.9" @@ -1635,7 +1635,7 @@ "@typescript-eslint/visitor-keys@5.59.6": version "5.59.6" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@typescript-eslint/visitor-keys/-/visitor-keys-5.59.6.tgz#673fccabf28943847d0c8e9e8d008e3ada7be6bb" - integrity sha1-Zz/Mq/KJQ4R9DI6ejQCOOtp75rs= + integrity "sha1-Zz/Mq/KJQ4R9DI6ejQCOOtp75rs= sha512-zEfbFLzB9ETcEJ4HZEEsCR9HHeNku5/Qw1jSS5McYJv5BR+ftYXwFFAH5Al+xkGaZEqowMwl7uoJjQb1YSPF8Q==" dependencies: "@typescript-eslint/types" "5.59.6" eslint-visitor-keys "^3.3.0" @@ -1643,7 +1643,7 @@ "@webassemblyjs/ast@1.11.6", "@webassemblyjs/ast@^1.11.5": version "1.11.6" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@webassemblyjs/ast/-/ast-1.11.6.tgz#db046555d3c413f8966ca50a95176a0e2c642e24" - integrity sha1-2wRlVdPEE/iWbKUKlRdqDixkLiQ= + integrity "sha1-2wRlVdPEE/iWbKUKlRdqDixkLiQ= sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q==" dependencies: "@webassemblyjs/helper-numbers" "1.11.6" "@webassemblyjs/helper-wasm-bytecode" "1.11.6" @@ -1661,7 +1661,7 @@ "@webassemblyjs/helper-buffer@1.11.6": version "1.11.6" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.6.tgz#b66d73c43e296fd5e88006f18524feb0f2c7c093" - integrity sha1-tm1zxD4pb9XogAbxhST+sPLHwJM= + integrity "sha1-tm1zxD4pb9XogAbxhST+sPLHwJM= sha512-z3nFzdcp1mb8nEOFFk8DrYLpHvhKC3grJD2ardfKOzmbmJvEf/tPIqCY+sNcwZIY8ZD7IkB2l7/pqhUhqm7hLA==" "@webassemblyjs/helper-numbers@1.11.6": version "1.11.6" @@ -1680,7 +1680,7 @@ "@webassemblyjs/helper-wasm-section@1.11.6": version "1.11.6" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.6.tgz#ff97f3863c55ee7f580fd5c41a381e9def4aa577" - integrity sha1-/5fzhjxV7n9YD9XEGjgene9KpXc= + integrity "sha1-/5fzhjxV7n9YD9XEGjgene9KpXc= sha512-LPpZbSOwTpEC2cgn4hTydySy1Ke+XEu+ETXuoyvuyezHO3Kjdu90KK95Sh9xTbmjrCsUwvWwCOQQNta37VrS9g==" dependencies: "@webassemblyjs/ast" "1.11.6" "@webassemblyjs/helper-buffer" "1.11.6" @@ -1709,7 +1709,7 @@ "@webassemblyjs/wasm-edit@^1.11.5": version "1.11.6" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.6.tgz#c72fa8220524c9b416249f3d94c2958dfe70ceab" - integrity sha1-xy+oIgUkybQWJJ89lMKVjf5wzqs= + integrity "sha1-xy+oIgUkybQWJJ89lMKVjf5wzqs= sha512-Ybn2I6fnfIGuCR+Faaz7YcvtBKxvoLV3Lebn1tM4o/IAJzmi9AWYIPWpyBfU8cC+JxAO57bk4+zdsTjJR+VTOw==" dependencies: "@webassemblyjs/ast" "1.11.6" "@webassemblyjs/helper-buffer" "1.11.6" @@ -1723,7 +1723,7 @@ "@webassemblyjs/wasm-gen@1.11.6": version "1.11.6" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.6.tgz#fb5283e0e8b4551cc4e9c3c0d7184a65faf7c268" - integrity sha1-+1KD4Oi0VRzE6cPA1xhKZfr3wmg= + integrity "sha1-+1KD4Oi0VRzE6cPA1xhKZfr3wmg= sha512-3XOqkZP/y6B4F0PBAXvI1/bky7GryoogUtfwExeP/v7Nzwo1QLcq5oQmpKlftZLbT+ERUOAZVQjuNVak6UXjPA==" dependencies: "@webassemblyjs/ast" "1.11.6" "@webassemblyjs/helper-wasm-bytecode" "1.11.6" @@ -1734,7 +1734,7 @@ "@webassemblyjs/wasm-opt@1.11.6": version "1.11.6" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.6.tgz#d9a22d651248422ca498b09aa3232a81041487c2" - integrity sha1-2aItZRJIQiykmLCaoyMqgQQUh8I= + integrity "sha1-2aItZRJIQiykmLCaoyMqgQQUh8I= sha512-cOrKuLRE7PCe6AsOVl7WasYf3wbSo4CeOk6PkrjS7g57MFfVUF9u6ysQBBODX0LdgSvQqRiGz3CXvIDKcPNy4g==" dependencies: "@webassemblyjs/ast" "1.11.6" "@webassemblyjs/helper-buffer" "1.11.6" @@ -1744,7 +1744,7 @@ "@webassemblyjs/wasm-parser@1.11.6", "@webassemblyjs/wasm-parser@^1.11.5": version "1.11.6" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.6.tgz#bb85378c527df824004812bbdb784eea539174a1" - integrity sha1-u4U3jFJ9+CQASBK723hO6lORdKE= + integrity "sha1-u4U3jFJ9+CQASBK723hO6lORdKE= sha512-6ZwPeGzMJM3Dqp3hCsLgESxBGtT/OeCvCZ4TA1JUPYgmhAx38tTPR9JaKy0S5H3evQpO/h2uWs2j6Yc/fjkpTQ==" dependencies: "@webassemblyjs/ast" "1.11.6" "@webassemblyjs/helper-api-error" "1.11.6" @@ -1756,7 +1756,7 @@ "@webassemblyjs/wast-printer@1.11.6": version "1.11.6" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@webassemblyjs/wast-printer/-/wast-printer-1.11.6.tgz#a7bf8dd7e362aeb1668ff43f35cb849f188eff20" - integrity sha1-p7+N1+NirrFmj/Q/NcuEnxiO/yA= + integrity "sha1-p7+N1+NirrFmj/Q/NcuEnxiO/yA= sha512-JM7AhRcE+yW2GWYaKeHL5vt4xqee5N2WcezptmgyhNS+ScggqcT1OtXykhAb13Sn5Yas0j2uv9tHgrjwvzAP4A==" dependencies: "@webassemblyjs/ast" "1.11.6" "@xtuc/long" "4.2.2" @@ -1803,7 +1803,7 @@ abort-controller@^3.0.0: acorn-globals@^7.0.0: version "7.0.1" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/acorn-globals/-/acorn-globals-7.0.1.tgz#0dbf05c44fa7c94332914c02066d5beff62c40c3" - integrity sha1-Db8FxE+nyUMykUwCBm1b7/YsQMM= + integrity "sha1-Db8FxE+nyUMykUwCBm1b7/YsQMM= sha512-umOSDSDrfHbTNPuNpC2NSnnA3LUrqpevPb4T9jRx4MagXNS0rs+gwiTcAvqCRmsD6utzsrzNt+ebm00SNWiC3Q==" dependencies: acorn "^8.1.0" acorn-walk "^8.0.2" @@ -1811,7 +1811,7 @@ acorn-globals@^7.0.0: acorn-import-assertions@^1.7.6: version "1.9.0" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz#507276249d684797c84e0734ef84860334cfb1ac" - integrity sha1-UHJ2JJ1oR5fITgc074SGAzTPsaw= + integrity "sha1-UHJ2JJ1oR5fITgc074SGAzTPsaw= sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==" acorn-jsx@^5.3.2: version "5.3.2" @@ -1821,12 +1821,12 @@ acorn-jsx@^5.3.2: acorn-walk@^8.0.2: version "8.2.0" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/acorn-walk/-/acorn-walk-8.2.0.tgz#741210f2e2426454508853a2f44d0ab83b7f69c1" - integrity sha1-dBIQ8uJCZFRQiFOi9E0KuDt/acE= + integrity "sha1-dBIQ8uJCZFRQiFOi9E0KuDt/acE= sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==" acorn@^8.1.0, acorn@^8.5.0, acorn@^8.7.1, acorn@^8.8.0, acorn@^8.8.1: version "8.8.2" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/acorn/-/acorn-8.8.2.tgz#1b2f25db02af965399b9776b0c2c391276d37c4a" - integrity sha1-Gy8l2wKvllOZuXdrDCw5EnbTfEo= + integrity "sha1-Gy8l2wKvllOZuXdrDCw5EnbTfEo= sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==" agent-base@6: version "6.0.2" @@ -1884,7 +1884,7 @@ ansi-styles@^5.0.0: anymatch@^3.0.3: version "3.1.3" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e" - integrity sha1-eQxYsZuhcgqEIFtXxhjVrYUklz4= + integrity "sha1-eQxYsZuhcgqEIFtXxhjVrYUklz4= sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==" dependencies: normalize-path "^3.0.0" picomatch "^2.0.4" @@ -1899,7 +1899,7 @@ argparse@^1.0.7: argparse@^2.0.1: version "2.0.1" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" - integrity sha1-JG9Q88p4oyQPbJl+ipvR6sSeSzg= + integrity "sha1-JG9Q88p4oyQPbJl+ipvR6sSeSzg= sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" array-union@^2.1.0: version "2.1.0" @@ -1914,7 +1914,7 @@ asynckit@^0.4.0: babel-jest@^29.5.0: version "29.5.0" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/babel-jest/-/babel-jest-29.5.0.tgz#3fe3ddb109198e78b1c88f9ebdecd5e4fc2f50a5" - integrity sha1-P+PdsQkZjnixyI+evezV5PwvUKU= + integrity "sha1-P+PdsQkZjnixyI+evezV5PwvUKU= sha512-mA4eCDh5mSo2EcA9xQjVTpmbbNk32Zb3Q3QFQsNhaK56Q+yoXowzFodLux30HRgyOho5rsQ6B0P9QpMkvvnJ0Q==" dependencies: "@jest/transform" "^29.5.0" "@types/babel__core" "^7.1.14" @@ -1938,7 +1938,7 @@ babel-plugin-istanbul@^6.1.1: babel-plugin-jest-hoist@^29.5.0: version "29.5.0" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.5.0.tgz#a97db437936f441ec196990c9738d4b88538618a" - integrity sha1-qX20N5NvRB7BlpkMlzjUuIU4YYo= + integrity "sha1-qX20N5NvRB7BlpkMlzjUuIU4YYo= sha512-zSuuuAlTMT4mzLj2nPnUm6fsE6270vdOfnpbJ+RmruU75UhLFvL0N2NgI7xpeS7NaB6hGqmd5pVpGTDYvi4Q3w==" dependencies: "@babel/template" "^7.3.3" "@babel/types" "^7.3.3" @@ -1948,7 +1948,7 @@ babel-plugin-jest-hoist@^29.5.0: babel-plugin-polyfill-corejs2@^0.3.3: version "0.3.3" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.3.tgz#5d1bd3836d0a19e1b84bbf2d9640ccb6f951c122" - integrity sha1-XRvTg20KGeG4S78tlkDMtvlRwSI= + integrity "sha1-XRvTg20KGeG4S78tlkDMtvlRwSI= sha512-8hOdmFYFSZhqg2C/JgLUQ+t52o5nirNwaWM2B9LWteozwIvM14VSwdsCAUET10qT+kmySAlseadmfeeSWFCy+Q==" dependencies: "@babel/compat-data" "^7.17.7" "@babel/helper-define-polyfill-provider" "^0.3.3" @@ -1957,7 +1957,7 @@ babel-plugin-polyfill-corejs2@^0.3.3: babel-plugin-polyfill-corejs3@^0.6.0: version "0.6.0" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.6.0.tgz#56ad88237137eade485a71b52f72dbed57c6230a" - integrity sha1-Vq2II3E36t5IWnG1L3Lb7VfGIwo= + integrity "sha1-Vq2II3E36t5IWnG1L3Lb7VfGIwo= sha512-+eHqR6OPcBhJOGgsIar7xoAB1GcSwVUA3XjAd7HJNzOXT4wv6/H7KIdA/Nc60cvUlDbKApmqNvD1B1bzOt4nyA==" dependencies: "@babel/helper-define-polyfill-provider" "^0.3.3" core-js-compat "^3.25.1" @@ -1965,7 +1965,7 @@ babel-plugin-polyfill-corejs3@^0.6.0: babel-plugin-polyfill-regenerator@^0.4.1: version "0.4.1" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.4.1.tgz#390f91c38d90473592ed43351e801a9d3e0fd747" - integrity sha1-OQ+Rw42QRzWS7UM1HoAanT4P10c= + integrity "sha1-OQ+Rw42QRzWS7UM1HoAanT4P10c= sha512-NtQGmyQDXjQqQ+IzRkBVwEOz9lQ4zxAQZgoAYEtU9dJjnl1Oc98qnN7jcp+bE7O7aYzVpavXE3/VKXNzUbh7aw==" dependencies: "@babel/helper-define-polyfill-provider" "^0.3.3" @@ -1990,7 +1990,7 @@ babel-preset-current-node-syntax@^1.0.0: babel-preset-jest@^29.5.0: version "29.5.0" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/babel-preset-jest/-/babel-preset-jest-29.5.0.tgz#57bc8cc88097af7ff6a5ab59d1cd29d52a5916e2" - integrity sha1-V7yMyICXr3/2patZ0c0p1SpZFuI= + integrity "sha1-V7yMyICXr3/2patZ0c0p1SpZFuI= sha512-JOMloxOqdiBSxMAzjRaH023/vvcaSaec49zvg+2LmNsktC7ei39LTJGw02J+9uUtTZUq6xbLyJ4dxe9sSmIuAg==" dependencies: babel-plugin-jest-hoist "^29.5.0" babel-preset-current-node-syntax "^1.0.0" @@ -2018,7 +2018,7 @@ braces@^3.0.2: browserslist@^4.14.5, browserslist@^4.21.3, browserslist@^4.21.5: version "4.21.5" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/browserslist/-/browserslist-4.21.5.tgz#75c5dae60063ee641f977e00edd3cfb2fb7af6a7" - integrity sha1-dcXa5gBj7mQfl34A7dPPsvt69qc= + integrity "sha1-dcXa5gBj7mQfl34A7dPPsvt69qc= sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w==" dependencies: caniuse-lite "^1.0.30001449" electron-to-chromium "^1.4.284" @@ -2055,7 +2055,7 @@ camelcase@^6.2.0: caniuse-lite@^1.0.30001449: version "1.0.30001487" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/caniuse-lite/-/caniuse-lite-1.0.30001487.tgz#d882d1a34d89c11aea53b8cdc791931bdab5fe1b" - integrity sha1-2ILRo02JwRrqU7jNx5GTG9q1/hs= + integrity "sha1-2ILRo02JwRrqU7jNx5GTG9q1/hs= sha512-83564Z3yWGqXsh2vaH/mhXfEM0wX+NlBCm1jYHOb97TrTWJEmPTccZgeLTPBUUb0PNVo+oomb7wkimZBIERClA==" chalk@^2.0.0: version "2.4.2" @@ -2087,7 +2087,7 @@ chrome-trace-event@^1.0.2: ci-info@^3.2.0: version "3.8.0" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/ci-info/-/ci-info-3.8.0.tgz#81408265a5380c929f0bc665d62256628ce9ef91" - integrity sha1-gUCCZaU4DJKfC8Zl1iJWYozp75E= + integrity "sha1-gUCCZaU4DJKfC8Zl1iJWYozp75E= sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==" cjs-module-lexer@^1.0.0: version "1.2.2" @@ -2106,7 +2106,7 @@ cliui@^7.0.2: cliui@^8.0.1: version "8.0.1" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/cliui/-/cliui-8.0.1.tgz#0c04b075db02cbfe60dc8e6cf2f5486b1a3608aa" - integrity sha1-DASwddsCy/5g3I5s8vVIaxo2CKo= + integrity "sha1-DASwddsCy/5g3I5s8vVIaxo2CKo= sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==" dependencies: string-width "^4.2.0" strip-ansi "^6.0.1" @@ -2158,7 +2158,7 @@ color-name@~1.1.4: colorette@^2.0.14: version "2.0.20" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/colorette/-/colorette-2.0.20.tgz#9eb793e6833067f7235902fcd3b09917a000a95a" - integrity sha1-nreT5oMwZ/cjWQL807CZF6AAqVo= + integrity "sha1-nreT5oMwZ/cjWQL807CZF6AAqVo= sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==" combined-stream@^1.0.8: version "1.0.8" @@ -2185,17 +2185,17 @@ concat-map@0.0.1: convert-source-map@^1.6.0, convert-source-map@^1.7.0: version "1.9.0" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/convert-source-map/-/convert-source-map-1.9.0.tgz#7faae62353fb4213366d0ca98358d22e8368b05f" - integrity sha1-f6rmI1P7QhM2bQypg1jSLoNosF8= + integrity "sha1-f6rmI1P7QhM2bQypg1jSLoNosF8= sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==" convert-source-map@^2.0.0: version "2.0.0" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/convert-source-map/-/convert-source-map-2.0.0.tgz#4b560f649fc4e918dd0ab75cf4961e8bc882d82a" - integrity sha1-S1YPZJ/E6RjdCrdc9JYei8iC2Co= + integrity "sha1-S1YPZJ/E6RjdCrdc9JYei8iC2Co= sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==" core-js-compat@^3.25.1: version "3.30.2" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/core-js-compat/-/core-js-compat-3.30.2.tgz#83f136e375babdb8c80ad3c22d67c69098c1dd8b" - integrity sha1-g/E243W6vbjICtPCLWfGkJjB3Ys= + integrity "sha1-g/E243W6vbjICtPCLWfGkJjB3Ys= sha512-nriW1nuJjUgvkEjIot1Spwakz52V9YkYHZAQG6A1eCgC8AA1p0zngrQEP9R0+V6hji5XilWKG1Bd0YRppmGimA==" dependencies: browserslist "^4.21.5" @@ -2211,7 +2211,7 @@ cross-spawn@^7.0.2, cross-spawn@^7.0.3: cssom@^0.5.0: version "0.5.0" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/cssom/-/cssom-0.5.0.tgz#d254fa92cd8b6fbd83811b9fbaed34663cc17c36" - integrity sha1-0lT6ks2Lb72DgRufuu00ZjzBfDY= + integrity "sha1-0lT6ks2Lb72DgRufuu00ZjzBfDY= sha512-iKuQcq+NdHqlAcwUY0o/HL69XQrUaQdMjmStJ8JFmUaiiQErlhrmuigkg/CU4E2J0IyUKUrMAgl36TvN67MqTw==" cssom@~0.3.6: version "0.3.8" @@ -2228,7 +2228,7 @@ cssstyle@^2.3.0: data-urls@^3.0.2: version "3.0.2" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/data-urls/-/data-urls-3.0.2.tgz#9cf24a477ae22bcef5cd5f6f0bfbc1d2d3be9143" - integrity sha1-nPJKR3riK871zV9vC/vB0tO+kUM= + integrity "sha1-nPJKR3riK871zV9vC/vB0tO+kUM= sha512-Jy/tj3ldjZJo63sVAvg6LHt2mHvl4V6AgRAmNDtLdm7faqtsx+aJG42rsyCo9JCoRVKwPFzKlIPx3DIibwSIaQ==" dependencies: abab "^2.0.6" whatwg-mimetype "^3.0.0" @@ -2244,7 +2244,7 @@ debug@4, debug@^4.1.0, debug@^4.1.1, debug@^4.3.2, debug@^4.3.4: decimal.js@^10.4.2: version "10.4.3" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/decimal.js/-/decimal.js-10.4.3.tgz#1044092884d245d1b7f65725fa4ad4c6f781cc23" - integrity sha1-EEQJKITSRdG39lcl+krUxveBzCM= + integrity "sha1-EEQJKITSRdG39lcl+krUxveBzCM= sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==" dedent@^0.7.0: version "0.7.0" @@ -2259,7 +2259,7 @@ deep-is@^0.1.3, deep-is@~0.1.3: deepmerge@^4.2.2: version "4.3.1" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/deepmerge/-/deepmerge-4.3.1.tgz#44b5f2147cd3b00d4b56137685966f26fd25dd4a" - integrity sha1-RLXyFHzTsA1LVhN2hZZvJv0l3Uo= + integrity "sha1-RLXyFHzTsA1LVhN2hZZvJv0l3Uo= sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==" delayed-stream@~1.0.0: version "1.0.0" @@ -2274,7 +2274,7 @@ detect-newline@^3.0.0: diff-sequences@^29.4.3: version "29.4.3" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/diff-sequences/-/diff-sequences-29.4.3.tgz#9314bc1fabe09267ffeca9cbafc457d8499a13f2" - integrity sha1-kxS8H6vgkmf/7KnLr8RX2EmaE/I= + integrity "sha1-kxS8H6vgkmf/7KnLr8RX2EmaE/I= sha512-ofrBgwpPhCD85kMKtE9RYFFq6OC1A89oW2vvgWZNCwxrUpRUILopY7lsYyMDSjc8g6U6aiO0Qubg6r4Wgt5ZnA==" dir-glob@^3.0.1: version "3.0.1" @@ -2293,19 +2293,19 @@ doctrine@^3.0.0: domexception@^4.0.0: version "4.0.0" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/domexception/-/domexception-4.0.0.tgz#4ad1be56ccadc86fc76d033353999a8037d03673" - integrity sha1-StG+VsytyG/HbQMzU5magDfQNnM= + integrity "sha1-StG+VsytyG/HbQMzU5magDfQNnM= sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw==" dependencies: webidl-conversions "^7.0.0" electron-to-chromium@^1.4.284: version "1.4.396" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/electron-to-chromium/-/electron-to-chromium-1.4.396.tgz#3d3664eb58d86376fbe2fece3705f68ca197205c" - integrity sha1-PTZk61jYY3b74v7ONwX2jKGXIFw= + integrity "sha1-PTZk61jYY3b74v7ONwX2jKGXIFw= sha512-pqKTdqp/c5vsrc0xUPYXTDBo9ixZuGY8es4ZOjjd6HD6bFYbu5QA09VoW3fkY4LF1T0zYk86lN6bZnNlBuOpdQ==" emittery@^0.13.1: version "0.13.1" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/emittery/-/emittery-0.13.1.tgz#c04b8c3457490e0847ae51fced3af52d338e3dad" - integrity sha1-wEuMNFdJDghHrlH87Tr1LTOOPa0= + integrity "sha1-wEuMNFdJDghHrlH87Tr1LTOOPa0= sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==" emoji-regex@^8.0.0: version "8.0.0" @@ -2315,7 +2315,7 @@ emoji-regex@^8.0.0: enhanced-resolve@^5.0.0, enhanced-resolve@^5.14.0: version "5.14.0" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/enhanced-resolve/-/enhanced-resolve-5.14.0.tgz#0b6c676c8a3266c99fa281e4433a706f5c0c61c4" - integrity sha1-C2xnbIoyZsmfooHkQzpwb1wMYcQ= + integrity "sha1-C2xnbIoyZsmfooHkQzpwb1wMYcQ= sha512-+DCows0XNwLDcUhbFJPdlQEVnT2zXlCv7hPxemTz86/O+B/hCQ+mb7ydkPKiflpVraqLPCAfu7lDy+hBXueojw==" dependencies: graceful-fs "^4.2.4" tapable "^2.2.0" @@ -2323,7 +2323,7 @@ enhanced-resolve@^5.0.0, enhanced-resolve@^5.14.0: entities@^4.4.0: version "4.5.0" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/entities/-/entities-4.5.0.tgz#5d268ea5e7113ec74c4d033b79ea5a35a488fb48" - integrity sha1-XSaOpecRPsdMTQM7eepaNaSI+0g= + integrity "sha1-XSaOpecRPsdMTQM7eepaNaSI+0g= sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==" envinfo@^7.7.3: version "7.8.1" @@ -2340,7 +2340,7 @@ error-ex@^1.3.1: es-module-lexer@^1.2.1: version "1.2.1" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/es-module-lexer/-/es-module-lexer-1.2.1.tgz#ba303831f63e6a394983fde2f97ad77b22324527" - integrity sha1-ujA4MfY+ajlJg/3i+XrXeyIyRSc= + integrity "sha1-ujA4MfY+ajlJg/3i+XrXeyIyRSc= sha512-9978wrXM50Y4rTMmW5kXIC09ZdXQZqkE4mxhwkd8VbzsGkXGPgV4zWuqQJgCEzYngdo2dYDa0l8xhX4fkSwJSg==" escalade@^3.1.1: version "3.1.1" @@ -2377,7 +2377,7 @@ escodegen@^2.0.0: eslint-plugin-header@^3.1.1: version "3.1.1" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/eslint-plugin-header/-/eslint-plugin-header-3.1.1.tgz#6ce512432d57675265fac47292b50d1eff11acd6" - integrity sha1-bOUSQy1XZ1Jl+sRykrUNHv8RrNY= + integrity "sha1-bOUSQy1XZ1Jl+sRykrUNHv8RrNY= sha512-9vlKxuJ4qf793CmeeSrZUvVClw6amtpghq3CuWcB5cUNnWHQhgcqy5eF8oVKFk1G3Y/CbchGfEaw3wiIJaNmVg==" eslint-scope@5.1.1, eslint-scope@^5.1.1: version "5.1.1" @@ -2390,7 +2390,7 @@ eslint-scope@5.1.1, eslint-scope@^5.1.1: eslint-scope@^7.2.0: version "7.2.0" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/eslint-scope/-/eslint-scope-7.2.0.tgz#f21ebdafda02352f103634b96dd47d9f81ca117b" - integrity sha1-8h69r9oCNS8QNjS5bdR9n4HKEXs= + integrity "sha1-8h69r9oCNS8QNjS5bdR9n4HKEXs= sha512-DYj5deGlHBfMt15J7rdtyKNq/Nqlv5KfU4iodrQ019XESsRnwXH9KAE0y3cwtUHDo2ob7CypAnCqefh6vioWRw==" dependencies: esrecurse "^4.3.0" estraverse "^5.2.0" @@ -2398,12 +2398,12 @@ eslint-scope@^7.2.0: eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.1: version "3.4.1" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/eslint-visitor-keys/-/eslint-visitor-keys-3.4.1.tgz#c22c48f48942d08ca824cc526211ae400478a994" - integrity sha1-wixI9IlC0IyoJMxSYhGuQAR4qZQ= + integrity "sha1-wixI9IlC0IyoJMxSYhGuQAR4qZQ= sha512-pZnmmLwYzf+kWaM/Qgrvpen51upAktaaiI01nsJD/Yr3lMOdNtq0cxkrrg16w64VtisN6okbs7Q8AfGqj4c9fA==" eslint@^8.16.0: version "8.40.0" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/eslint/-/eslint-8.40.0.tgz#a564cd0099f38542c4e9a2f630fa45bf33bc42a4" - integrity sha1-pWTNAJnzhULE6aL2MPpFvzO8QqQ= + integrity "sha1-pWTNAJnzhULE6aL2MPpFvzO8QqQ= sha512-bvR+TsP9EHL3TqNtj9sCNJVAFK3fBN8Q7g5waghxyRsPLIMwL73XSKnZFK0hk/O2ANC+iAoq6PWMQ+IfBAJIiQ==" dependencies: "@eslint-community/eslint-utils" "^4.2.0" "@eslint-community/regexpp" "^4.4.0" @@ -2449,7 +2449,7 @@ eslint@^8.16.0: espree@^9.5.2: version "9.5.2" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/espree/-/espree-9.5.2.tgz#e994e7dc33a082a7a82dceaf12883a829353215b" - integrity sha1-6ZTn3DOggqeoLc6vEog6gpNTIVs= + integrity "sha1-6ZTn3DOggqeoLc6vEog6gpNTIVs= sha512-7OASN1Wma5fum5SrNhFMAMJxOUAbhyfQ8dQ//PJaJbNw0URTPWqIghHWt1MmAANKhHZIYOHruW4Kw4ruUWOdGw==" dependencies: acorn "^8.8.0" acorn-jsx "^5.3.2" @@ -2463,7 +2463,7 @@ esprima@^4.0.0, esprima@^4.0.1: esquery@^1.4.2: version "1.5.0" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/esquery/-/esquery-1.5.0.tgz#6ce17738de8577694edd7361c57182ac8cb0db0b" - integrity sha1-bOF3ON6Fd2lO3XNhxXGCrIyw2ws= + integrity "sha1-bOF3ON6Fd2lO3XNhxXGCrIyw2ws= sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==" dependencies: estraverse "^5.1.0" @@ -2527,7 +2527,7 @@ exit@^0.1.2: expect@^29.5.0: version "29.5.0" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/expect/-/expect-29.5.0.tgz#68c0509156cb2a0adb8865d413b137eeaae682f7" - integrity sha1-aMBQkVbLKgrbiGXUE7E37qrmgvc= + integrity "sha1-aMBQkVbLKgrbiGXUE7E37qrmgvc= sha512-yM7xqUrCO2JdpFo4XpM82t+PJBFybdqoQuJLDGeDX2ij8NZzqRHyu3Hp188/JX7SWqud+7t4MUdvcgGBICMHZg==" dependencies: "@jest/expect-utils" "^29.5.0" jest-get-type "^29.4.3" @@ -2543,7 +2543,7 @@ fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: fast-glob@^3.2.9: version "3.2.12" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/fast-glob/-/fast-glob-3.2.12.tgz#7f39ec99c2e6ab030337142da9e0c18f37afae80" - integrity sha1-fznsmcLmqwMDNxQtqeDBjzevroA= + integrity "sha1-fznsmcLmqwMDNxQtqeDBjzevroA= sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==" dependencies: "@nodelib/fs.stat" "^2.0.2" "@nodelib/fs.walk" "^1.2.3" @@ -2564,19 +2564,19 @@ fast-levenshtein@^2.0.6, fast-levenshtein@~2.0.6: fastest-levenshtein@^1.0.12: version "1.0.16" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz#210e61b6ff181de91ea9b3d1b84fdedd47e034e5" - integrity sha1-IQ5htv8YHekeqbPRuE/e3UfgNOU= + integrity "sha1-IQ5htv8YHekeqbPRuE/e3UfgNOU= sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==" fastq@^1.6.0: version "1.15.0" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/fastq/-/fastq-1.15.0.tgz#d04d07c6a2a68fe4599fea8d2e103a937fae6b3a" - integrity sha1-0E0HxqKmj+RZn+qNLhA6k3+uazo= + integrity "sha1-0E0HxqKmj+RZn+qNLhA6k3+uazo= sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==" dependencies: reusify "^1.0.4" fb-watchman@^2.0.0: version "2.0.2" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/fb-watchman/-/fb-watchman-2.0.2.tgz#e9524ee6b5c77e9e5001af0f85f3adbb8623255c" - integrity sha1-6VJO5rXHfp5QAa8PhfOtu4YjJVw= + integrity "sha1-6VJO5rXHfp5QAa8PhfOtu4YjJVw= sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==" dependencies: bser "2.1.1" @@ -2613,7 +2613,7 @@ find-up@^4.0.0, find-up@^4.1.0: find-up@^5.0.0: version "5.0.0" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" - integrity sha1-TJKBnstwg1YeT0okCoa+UZj1Nvw= + integrity "sha1-TJKBnstwg1YeT0okCoa+UZj1Nvw= sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==" dependencies: locate-path "^6.0.0" path-exists "^4.0.0" @@ -2629,12 +2629,12 @@ flat-cache@^3.0.4: flatted@^3.1.0: version "3.2.7" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/flatted/-/flatted-3.2.7.tgz#609f39207cb614b89d0765b477cb2d437fbf9787" - integrity sha1-YJ85IHy2FLidB2W0d8stQ3+/l4c= + integrity "sha1-YJ85IHy2FLidB2W0d8stQ3+/l4c= sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==" form-data@^4.0.0: version "4.0.0" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/form-data/-/form-data-4.0.0.tgz#93919daeaf361ee529584b9b31664dc12c9fa452" - integrity sha1-k5Gdrq82HuUpWEubMWZNwSyfpFI= + integrity "sha1-k5Gdrq82HuUpWEubMWZNwSyfpFI= sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==" dependencies: asynckit "^0.4.0" combined-stream "^1.0.8" @@ -2643,7 +2643,7 @@ form-data@^4.0.0: fp-ts@^2.6.1: version "2.15.0" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/fp-ts/-/fp-ts-2.15.0.tgz#ed1ff6fc9a072176ec2310e20e814077bb391545" - integrity sha1-7R/2/JoHIXbsIxDiDoFAd7s5FUU= + integrity "sha1-7R/2/JoHIXbsIxDiDoFAd7s5FUU= sha512-3o6EllAvGuCsDgjM+frscLKDRPR9pqbrg13tJ13z86F4eni913kBV8h85rM6zpu2fEvJ8RWA0ouYlUWwHEmxTg==" fs.realpath@^1.0.0: version "1.0.0" @@ -2690,7 +2690,7 @@ glob-parent@^5.1.2: glob-parent@^6.0.2: version "6.0.2" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3" - integrity sha1-bSN9mQg5UMeSkPJMdkKj3poo+eM= + integrity "sha1-bSN9mQg5UMeSkPJMdkKj3poo+eM= sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==" dependencies: is-glob "^4.0.3" @@ -2719,7 +2719,7 @@ globals@^11.1.0: globals@^13.19.0: version "13.20.0" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/globals/-/globals-13.20.0.tgz#ea276a1e508ffd4f1612888f9d1bad1e2717bf82" - integrity sha1-6idqHlCP/U8WEoiPnRutHicXv4I= + integrity "sha1-6idqHlCP/U8WEoiPnRutHicXv4I= sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==" dependencies: type-fest "^0.20.2" @@ -2743,7 +2743,7 @@ graceful-fs@^4.1.2, graceful-fs@^4.2.4, graceful-fs@^4.2.9: grapheme-splitter@^1.0.4: version "1.0.4" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz#9cf3a665c6247479896834af35cf1dbb4400767e" - integrity sha1-nPOmZcYkdHmJaDSvNc8du0QAdn4= + integrity "sha1-nPOmZcYkdHmJaDSvNc8du0QAdn4= sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==" has-flag@^3.0.0: version "3.0.0" @@ -2765,7 +2765,7 @@ has@^1.0.3: html-encoding-sniffer@^3.0.0: version "3.0.0" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/html-encoding-sniffer/-/html-encoding-sniffer-3.0.0.tgz#2cb1a8cf0db52414776e5b2a7a04d5dd98158de9" - integrity sha1-LLGozw21JBR3blsqegTV3ZgVjek= + integrity "sha1-LLGozw21JBR3blsqegTV3ZgVjek= sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==" dependencies: whatwg-encoding "^2.0.0" @@ -2777,7 +2777,7 @@ html-escaper@^2.0.0: http-proxy-agent@^5.0.0: version "5.0.0" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz#5129800203520d434f142bc78ff3c170800f2b43" - integrity sha1-USmAAgNSDUNPFCvHj/PBcIAPK0M= + integrity "sha1-USmAAgNSDUNPFCvHj/PBcIAPK0M= sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==" dependencies: "@tootallnate/once" "2" agent-base "6" @@ -2799,14 +2799,14 @@ human-signals@^2.1.0: iconv-lite@0.6.3: version "0.6.3" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/iconv-lite/-/iconv-lite-0.6.3.tgz#a52f80bf38da1952eb5c681790719871a1a72501" - integrity sha1-pS+AvzjaGVLrXGgXkHGYcaGnJQE= + integrity "sha1-pS+AvzjaGVLrXGgXkHGYcaGnJQE= sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==" dependencies: safer-buffer ">= 2.1.2 < 3.0.0" ignore@^5.2.0: version "5.2.4" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/ignore/-/ignore-5.2.4.tgz#a291c0c6178ff1b960befe47fcdec301674a6324" - integrity sha1-opHAxheP8blgvv5H/N7DAWdKYyQ= + integrity "sha1-opHAxheP8blgvv5H/N7DAWdKYyQ= sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==" import-fresh@^3.0.0, import-fresh@^3.2.1: version "3.3.0" @@ -2868,7 +2868,7 @@ io-ts-reporters@^1.2.2: io-ts@^2.2.13: version "2.2.20" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/io-ts/-/io-ts-2.2.20.tgz#be42b75f6668a2c44f706f72ee6e4c906777c7f5" - integrity sha1-vkK3X2ZoosRPcG9y7m5MkGd3x/U= + integrity "sha1-vkK3X2ZoosRPcG9y7m5MkGd3x/U= sha512-Rq2BsYmtwS5vVttie4rqrOCIfHCS9TgpRLFpKQCM1wZBBRY9nWVGmEvm2FnDbSE2un1UE39DvFpTR5UL47YDcA==" is-arrayish@^0.2.1: version "0.2.1" @@ -2878,7 +2878,7 @@ is-arrayish@^0.2.1: is-core-module@^2.11.0: version "2.12.0" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/is-core-module/-/is-core-module-2.12.0.tgz#36ad62f6f73c8253fd6472517a12483cf03e7ec4" - integrity sha1-Nq1i9vc8glP9ZHJRehJIPPA+fsQ= + integrity "sha1-Nq1i9vc8glP9ZHJRehJIPPA+fsQ= sha512-RECHCBCd/viahWmwj6enj19sKbHfJrddi/6cBDsNTKbNq0f7VeaUkBo60BqzvPqo/W54ChS62Z5qyun7cfOMqQ==" dependencies: has "^1.0.3" @@ -2912,7 +2912,7 @@ is-number@^7.0.0: is-path-inside@^3.0.3: version "3.0.3" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283" - integrity sha1-0jE2LlOgf/Kw4Op/7QSRYf/RYoM= + integrity "sha1-0jE2LlOgf/Kw4Op/7QSRYf/RYoM= sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==" is-plain-object@^2.0.4: version "2.0.4" @@ -2949,7 +2949,7 @@ istanbul-lib-coverage@^3.0.0, istanbul-lib-coverage@^3.2.0: istanbul-lib-instrument@^5.0.4, istanbul-lib-instrument@^5.1.0: version "5.2.1" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz#d10c8885c2125574e1c231cacadf955675e1ce3d" - integrity sha1-0QyIhcISVXThwjHKyt+VVnXhzj0= + integrity "sha1-0QyIhcISVXThwjHKyt+VVnXhzj0= sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==" dependencies: "@babel/core" "^7.12.3" "@babel/parser" "^7.14.7" @@ -2978,7 +2978,7 @@ istanbul-lib-source-maps@^4.0.0: istanbul-reports@^3.1.3: version "3.1.5" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/istanbul-reports/-/istanbul-reports-3.1.5.tgz#cc9a6ab25cb25659810e4785ed9d9fb742578bae" - integrity sha1-zJpqslyyVlmBDkeF7Z2ft0JXi64= + integrity "sha1-zJpqslyyVlmBDkeF7Z2ft0JXi64= sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==" dependencies: html-escaper "^2.0.0" istanbul-lib-report "^3.0.0" @@ -2986,7 +2986,7 @@ istanbul-reports@^3.1.3: jest-changed-files@^29.5.0: version "29.5.0" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/jest-changed-files/-/jest-changed-files-29.5.0.tgz#e88786dca8bf2aa899ec4af7644e16d9dcf9b23e" - integrity sha1-6IeG3Ki/KqiZ7Er3ZE4W2dz5sj4= + integrity "sha1-6IeG3Ki/KqiZ7Er3ZE4W2dz5sj4= sha512-IFG34IUMUaNBIxjQXF/iu7g6EcdMrGRRxaUSw92I/2g2YC6vCdTltl4nHvt7Ci5nSJwXIkCu8Ka1DKF+X7Z1Ag==" dependencies: execa "^5.0.0" p-limit "^3.1.0" @@ -2994,7 +2994,7 @@ jest-changed-files@^29.5.0: jest-circus@^29.5.0: version "29.5.0" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/jest-circus/-/jest-circus-29.5.0.tgz#b5926989449e75bff0d59944bae083c9d7fb7317" - integrity sha1-tZJpiUSedb/w1ZlEuuCDydf7cxc= + integrity "sha1-tZJpiUSedb/w1ZlEuuCDydf7cxc= sha512-gq/ongqeQKAplVxqJmbeUOJJKkW3dDNPY8PjhJ5G0lBRvu0e3EWGxGy5cI4LAGA7gV2UHCtWBI4EMXK8c9nQKA==" dependencies: "@jest/environment" "^29.5.0" "@jest/expect" "^29.5.0" @@ -3020,7 +3020,7 @@ jest-circus@^29.5.0: jest-cli@^29.5.0: version "29.5.0" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/jest-cli/-/jest-cli-29.5.0.tgz#b34c20a6d35968f3ee47a7437ff8e53e086b4a67" - integrity sha1-s0wgptNZaPPuR6dDf/jlPghrSmc= + integrity "sha1-s0wgptNZaPPuR6dDf/jlPghrSmc= sha512-L1KcP1l4HtfwdxXNFCL5bmUbLQiKrakMUriBEcc1Vfz6gx31ORKdreuWvmQVBit+1ss9NNR3yxjwfwzZNdQXJw==" dependencies: "@jest/core" "^29.5.0" "@jest/test-result" "^29.5.0" @@ -3038,7 +3038,7 @@ jest-cli@^29.5.0: jest-config@^29.5.0: version "29.5.0" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/jest-config/-/jest-config-29.5.0.tgz#3cc972faec8c8aaea9ae158c694541b79f3748da" - integrity sha1-PMly+uyMiq6prhWMaUVBt583SNo= + integrity "sha1-PMly+uyMiq6prhWMaUVBt583SNo= sha512-kvDUKBnNJPNBmFFOhDbm59iu1Fii1Q6SxyhXfvylq3UTHbg6o7j/g8k2dZyXWLvfdKB1vAPxNZnMgtKJcmu3kA==" dependencies: "@babel/core" "^7.11.6" "@jest/test-sequencer" "^29.5.0" @@ -3066,7 +3066,7 @@ jest-config@^29.5.0: jest-diff@^29.5.0: version "29.5.0" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/jest-diff/-/jest-diff-29.5.0.tgz#e0d83a58eb5451dcc1fa61b1c3ee4e8f5a290d63" - integrity sha1-4Ng6WOtUUdzB+mGxw+5Oj1opDWM= + integrity "sha1-4Ng6WOtUUdzB+mGxw+5Oj1opDWM= sha512-LtxijLLZBduXnHSniy0WMdaHjmQnt3g5sa16W4p0HqukYTTsyTW3GD1q41TyGl5YFXj/5B2U6dlh5FM1LIMgxw==" dependencies: chalk "^4.0.0" diff-sequences "^29.4.3" @@ -3076,14 +3076,14 @@ jest-diff@^29.5.0: jest-docblock@^29.4.3: version "29.4.3" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/jest-docblock/-/jest-docblock-29.4.3.tgz#90505aa89514a1c7dceeac1123df79e414636ea8" - integrity sha1-kFBaqJUUocfc7qwRI9955BRjbqg= + integrity "sha1-kFBaqJUUocfc7qwRI9955BRjbqg= sha512-fzdTftThczeSD9nZ3fzA/4KkHtnmllawWrXO69vtI+L9WjEIuXWs4AmyME7lN5hU7dB0sHhuPfcKofRsUb/2Fg==" dependencies: detect-newline "^3.0.0" jest-each@^29.5.0: version "29.5.0" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/jest-each/-/jest-each-29.5.0.tgz#fc6e7014f83eac68e22b7195598de8554c2e5c06" - integrity sha1-/G5wFPg+rGjiK3GVWY3oVUwuXAY= + integrity "sha1-/G5wFPg+rGjiK3GVWY3oVUwuXAY= sha512-HM5kIJ1BTnVt+DQZ2ALp3rzXEl+g726csObrW/jpEGl+CDSSQpOJJX2KE/vEg8cxcMXdyEPu6U4QX5eruQv5hA==" dependencies: "@jest/types" "^29.5.0" chalk "^4.0.0" @@ -3094,7 +3094,7 @@ jest-each@^29.5.0: jest-environment-jsdom@^29.5.0: version "29.5.0" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/jest-environment-jsdom/-/jest-environment-jsdom-29.5.0.tgz#cfe86ebaf1453f3297b5ff3470fbe94739c960cb" - integrity sha1-z+huuvFFPzKXtf80cPvpRznJYMs= + integrity "sha1-z+huuvFFPzKXtf80cPvpRznJYMs= sha512-/KG8yEK4aN8ak56yFVdqFDzKNHgF4BAymCx2LbPNPsUshUlfAl0eX402Xm1pt+eoG9SLZEUVifqXtX8SK74KCw==" dependencies: "@jest/environment" "^29.5.0" "@jest/fake-timers" "^29.5.0" @@ -3108,7 +3108,7 @@ jest-environment-jsdom@^29.5.0: jest-environment-node@^29.5.0: version "29.5.0" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/jest-environment-node/-/jest-environment-node-29.5.0.tgz#f17219d0f0cc0e68e0727c58b792c040e332c967" - integrity sha1-8XIZ0PDMDmjgcnxYt5LAQOMyyWc= + integrity "sha1-8XIZ0PDMDmjgcnxYt5LAQOMyyWc= sha512-ExxuIK/+yQ+6PRGaHkKewYtg6hto2uGCgvKdb2nfJfKXgZ17DfXjvbZ+jA1Qt9A8EQSfPnt5FKIfnOO3u1h9qw==" dependencies: "@jest/environment" "^29.5.0" "@jest/fake-timers" "^29.5.0" @@ -3120,12 +3120,12 @@ jest-environment-node@^29.5.0: jest-get-type@^29.4.3: version "29.4.3" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/jest-get-type/-/jest-get-type-29.4.3.tgz#1ab7a5207c995161100b5187159ca82dd48b3dd5" - integrity sha1-GrelIHyZUWEQC1GHFZyoLdSLPdU= + integrity "sha1-GrelIHyZUWEQC1GHFZyoLdSLPdU= sha512-J5Xez4nRRMjk8emnTpWrlkyb9pfRQQanDrvWHhsR1+VUfbwxi30eVcZFlcdGInRibU4G5LwHXpI7IRHU0CY+gg==" jest-haste-map@^29.5.0: version "29.5.0" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/jest-haste-map/-/jest-haste-map-29.5.0.tgz#69bd67dc9012d6e2723f20a945099e972b2e94de" - integrity sha1-ab1n3JAS1uJyPyCpRQmelysulN4= + integrity "sha1-ab1n3JAS1uJyPyCpRQmelysulN4= sha512-IspOPnnBro8YfVYSw6yDRKh/TiCdRngjxeacCps1cQ9cgVN6+10JUcuJ1EabrgYLOATsIAigxA0rLR9x/YlrSA==" dependencies: "@jest/types" "^29.5.0" "@types/graceful-fs" "^4.1.3" @@ -3144,7 +3144,7 @@ jest-haste-map@^29.5.0: jest-junit@^16.0.0: version "16.0.0" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/jest-junit/-/jest-junit-16.0.0.tgz#d838e8c561cf9fdd7eb54f63020777eee4136785" - integrity sha1-2DjoxWHPn91+tU9jAgd37uQTZ4U= + integrity "sha1-2DjoxWHPn91+tU9jAgd37uQTZ4U= sha512-A94mmw6NfJab4Fg/BlvVOUXzXgF0XIH6EmTgJ5NDPp4xoKq0Kr7sErb+4Xs9nZvu58pJojz5RFGpqnZYJTrRfQ==" dependencies: mkdirp "^1.0.4" strip-ansi "^6.0.1" @@ -3154,7 +3154,7 @@ jest-junit@^16.0.0: jest-leak-detector@^29.5.0: version "29.5.0" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/jest-leak-detector/-/jest-leak-detector-29.5.0.tgz#cf4bdea9615c72bac4a3a7ba7e7930f9c0610c8c" - integrity sha1-z0veqWFccrrEo6e6fnkw+cBhDIw= + integrity "sha1-z0veqWFccrrEo6e6fnkw+cBhDIw= sha512-u9YdeeVnghBUtpN5mVxjID7KbkKE1QU4f6uUwuxiY0vYRi9BUCLKlPEZfDGR67ofdFmDz9oPAy2G92Ujrntmow==" dependencies: jest-get-type "^29.4.3" pretty-format "^29.5.0" @@ -3162,7 +3162,7 @@ jest-leak-detector@^29.5.0: jest-matcher-utils@^29.5.0: version "29.5.0" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/jest-matcher-utils/-/jest-matcher-utils-29.5.0.tgz#d957af7f8c0692c5453666705621ad4abc2c59c5" - integrity sha1-2Vevf4wGksVFNmZwViGtSrwsWcU= + integrity "sha1-2Vevf4wGksVFNmZwViGtSrwsWcU= sha512-lecRtgm/rjIK0CQ7LPQwzCs2VwW6WAahA55YBuI+xqmhm7LAaxokSB8C97yJeYyT+HvQkH741StzpU41wohhWw==" dependencies: chalk "^4.0.0" jest-diff "^29.5.0" @@ -3172,7 +3172,7 @@ jest-matcher-utils@^29.5.0: jest-message-util@^29.5.0: version "29.5.0" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/jest-message-util/-/jest-message-util-29.5.0.tgz#1f776cac3aca332ab8dd2e3b41625435085c900e" - integrity sha1-H3dsrDrKMyq43S47QWJUNQhckA4= + integrity "sha1-H3dsrDrKMyq43S47QWJUNQhckA4= sha512-Kijeg9Dag6CKtIDA7O21zNTACqD5MD/8HfIV8pdD94vFyFuer52SigdC3IQMhab3vACxXMiFk+yMHNdbqtyTGA==" dependencies: "@babel/code-frame" "^7.12.13" "@jest/types" "^29.5.0" @@ -3187,7 +3187,7 @@ jest-message-util@^29.5.0: jest-mock@^29.5.0: version "29.5.0" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/jest-mock/-/jest-mock-29.5.0.tgz#26e2172bcc71d8b0195081ff1f146ac7e1518aed" - integrity sha1-JuIXK8xx2LAZUIH/HxRqx+FRiu0= + integrity "sha1-JuIXK8xx2LAZUIH/HxRqx+FRiu0= sha512-GqOzvdWDE4fAV2bWQLQCkujxYWL7RxjCnj71b5VhDAGOevB3qj3Ovg26A5NI84ZpODxyzaozXLOh2NCgkbvyaw==" dependencies: "@jest/types" "^29.5.0" "@types/node" "*" @@ -3196,17 +3196,17 @@ jest-mock@^29.5.0: jest-pnp-resolver@^1.2.2: version "1.2.3" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz#930b1546164d4ad5937d5540e711d4d38d4cad2e" - integrity sha1-kwsVRhZNStWTfVVA5xHU041MrS4= + integrity "sha1-kwsVRhZNStWTfVVA5xHU041MrS4= sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==" jest-regex-util@^29.4.3: version "29.4.3" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/jest-regex-util/-/jest-regex-util-29.4.3.tgz#a42616141e0cae052cfa32c169945d00c0aa0bb8" - integrity sha1-pCYWFB4MrgUs+jLBaZRdAMCqC7g= + integrity "sha1-pCYWFB4MrgUs+jLBaZRdAMCqC7g= sha512-O4FglZaMmWXbGHSQInfXewIsd1LMn9p3ZXB/6r4FOkyhX2/iP/soMG98jGvk/A3HAN78+5VWcBGO0BJAPRh4kg==" jest-resolve-dependencies@^29.5.0: version "29.5.0" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/jest-resolve-dependencies/-/jest-resolve-dependencies-29.5.0.tgz#f0ea29955996f49788bf70996052aa98e7befee4" - integrity sha1-8OoplVmW9JeIv3CZYFKqmOe+/uQ= + integrity "sha1-8OoplVmW9JeIv3CZYFKqmOe+/uQ= sha512-sjV3GFr0hDJMBpYeUuGduP+YeCRbd7S/ck6IvL3kQ9cpySYKqcqhdLLC2rFwrcL7tz5vYibomBrsFYWkIGGjOg==" dependencies: jest-regex-util "^29.4.3" jest-snapshot "^29.5.0" @@ -3214,7 +3214,7 @@ jest-resolve-dependencies@^29.5.0: jest-resolve@^29.5.0: version "29.5.0" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/jest-resolve/-/jest-resolve-29.5.0.tgz#b053cc95ad1d5f6327f0ac8aae9f98795475ecdc" - integrity sha1-sFPMla0dX2Mn8KyKrp+YeVR17Nw= + integrity "sha1-sFPMla0dX2Mn8KyKrp+YeVR17Nw= sha512-1TzxJ37FQq7J10jPtQjcc+MkCkE3GBpBecsSUWJ0qZNJpmg6m0D9/7II03yJulm3H/fvVjgqLh/k2eYg+ui52w==" dependencies: chalk "^4.0.0" graceful-fs "^4.2.9" @@ -3229,7 +3229,7 @@ jest-resolve@^29.5.0: jest-runner@^29.5.0: version "29.5.0" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/jest-runner/-/jest-runner-29.5.0.tgz#6a57c282eb0ef749778d444c1d758c6a7693b6f8" - integrity sha1-alfCgusO90l3jURMHXWManaTtvg= + integrity "sha1-alfCgusO90l3jURMHXWManaTtvg= sha512-m7b6ypERhFghJsslMLhydaXBiLf7+jXy8FwGRHO3BGV1mcQpPbwiqiKUR2zU2NJuNeMenJmlFZCsIqzJCTeGLQ==" dependencies: "@jest/console" "^29.5.0" "@jest/environment" "^29.5.0" @@ -3256,7 +3256,7 @@ jest-runner@^29.5.0: jest-runtime@^29.5.0: version "29.5.0" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/jest-runtime/-/jest-runtime-29.5.0.tgz#c83f943ee0c1da7eb91fa181b0811ebd59b03420" - integrity sha1-yD+UPuDB2n65H6GBsIEevVmwNCA= + integrity "sha1-yD+UPuDB2n65H6GBsIEevVmwNCA= sha512-1Hr6Hh7bAgXQP+pln3homOiEZtCDZFqwmle7Ew2j8OlbkIu6uE3Y/etJQG8MLQs3Zy90xrp2C0BRrtPHG4zryw==" dependencies: "@jest/environment" "^29.5.0" "@jest/fake-timers" "^29.5.0" @@ -3284,7 +3284,7 @@ jest-runtime@^29.5.0: jest-snapshot@^29.5.0: version "29.5.0" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/jest-snapshot/-/jest-snapshot-29.5.0.tgz#c9c1ce0331e5b63cd444e2f95a55a73b84b1e8ce" - integrity sha1-ycHOAzHltjzUROL5WlWnO4Sx6M4= + integrity "sha1-ycHOAzHltjzUROL5WlWnO4Sx6M4= sha512-x7Wolra5V0tt3wRs3/ts3S6ciSQVypgGQlJpz2rsdQYoUKxMxPNaoHMGJN6qAuPJqS+2iQ1ZUn5kl7HCyls84g==" dependencies: "@babel/core" "^7.11.6" "@babel/generator" "^7.7.2" @@ -3313,7 +3313,7 @@ jest-snapshot@^29.5.0: jest-util@^29.5.0: version "29.5.0" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/jest-util/-/jest-util-29.5.0.tgz#24a4d3d92fc39ce90425311b23c27a6e0ef16b8f" - integrity sha1-JKTT2S/DnOkEJTEbI8J6bg7xa48= + integrity "sha1-JKTT2S/DnOkEJTEbI8J6bg7xa48= sha512-RYMgG/MTadOr5t8KdhejfvUU82MxsCu5MF6KuDUHl+NuwzUt+Sm6jJWxTJVrDR1j5M/gJVCPKQEpWXY+yIQ6lQ==" dependencies: "@jest/types" "^29.5.0" "@types/node" "*" @@ -3325,7 +3325,7 @@ jest-util@^29.5.0: jest-validate@^29.5.0: version "29.5.0" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/jest-validate/-/jest-validate-29.5.0.tgz#8e5a8f36178d40e47138dc00866a5f3bd9916ffc" - integrity sha1-jlqPNheNQORxONwAhmpfO9mRb/w= + integrity "sha1-jlqPNheNQORxONwAhmpfO9mRb/w= sha512-pC26etNIi+y3HV8A+tUGr/lph9B18GnzSRAkPaaZJIE1eFdiYm6/CewuiJQ8/RlfHd1u/8Ioi8/sJ+CmbA+zAQ==" dependencies: "@jest/types" "^29.5.0" camelcase "^6.2.0" @@ -3337,7 +3337,7 @@ jest-validate@^29.5.0: jest-watcher@^29.5.0: version "29.5.0" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/jest-watcher/-/jest-watcher-29.5.0.tgz#cf7f0f949828ba65ddbbb45c743a382a4d911363" - integrity sha1-z38PlJgoumXdu7RcdDo4Kk2RE2M= + integrity "sha1-z38PlJgoumXdu7RcdDo4Kk2RE2M= sha512-KmTojKcapuqYrKDpRwfqcQ3zjMlwu27SYext9pt4GlF5FUgB+7XE1mcCnSm6a4uUpFyQIkb6ZhzZvHl+jiBCiA==" dependencies: "@jest/test-result" "^29.5.0" "@jest/types" "^29.5.0" @@ -3360,7 +3360,7 @@ jest-worker@^27.4.5: jest-worker@^29.5.0: version "29.5.0" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/jest-worker/-/jest-worker-29.5.0.tgz#bdaefb06811bd3384d93f009755014d8acb4615d" - integrity sha1-va77BoEb0zhNk/AJdVAU2Ky0YV0= + integrity "sha1-va77BoEb0zhNk/AJdVAU2Ky0YV0= sha512-NcrQnevGoSp4b5kg+akIpthoAFHxPBcb5P6mYPY0fUNT+sSvmtu6jlkEle3anczUKIKEbMxFimk9oTP/tpIPgA==" dependencies: "@types/node" "*" jest-util "^29.5.0" @@ -3370,7 +3370,7 @@ jest-worker@^29.5.0: jest@^29.5.0: version "29.5.0" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/jest/-/jest-29.5.0.tgz#f75157622f5ce7ad53028f2f8888ab53e1f1f24e" - integrity sha1-91FXYi9c561TAo8viIirU+Hx8k4= + integrity "sha1-91FXYi9c561TAo8viIirU+Hx8k4= sha512-juMg3he2uru1QoXX078zTa7pO85QyB9xajZc6bU+d9yEGwrKX6+vGmJQ3UdVZsvTEUARIdObzH68QItim6OSSQ==" dependencies: "@jest/core" "^29.5.0" "@jest/types" "^29.5.0" @@ -3380,7 +3380,7 @@ jest@^29.5.0: js-sdsl@^4.1.4: version "4.4.0" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/js-sdsl/-/js-sdsl-4.4.0.tgz#8b437dbe642daa95760400b602378ed8ffea8430" - integrity sha1-i0N9vmQtqpV2BAC2AjeO2P/qhDA= + integrity "sha1-i0N9vmQtqpV2BAC2AjeO2P/qhDA= sha512-FfVSdx6pJ41Oa+CF7RDaFmTnCaFhua+SNYQX74riGOpl96x+2jQCqEfQ2bnXu/5DPCqlRuiqyvTJM0Qjz26IVg==" js-tokens@^4.0.0: version "4.0.0" @@ -3398,14 +3398,14 @@ js-yaml@^3.13.1: js-yaml@^4.1.0: version "4.1.0" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" - integrity sha1-wftl+PUBeQHN0slRhkuhhFihBgI= + integrity "sha1-wftl+PUBeQHN0slRhkuhhFihBgI= sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==" dependencies: argparse "^2.0.1" jsdom@^20.0.0: version "20.0.3" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/jsdom/-/jsdom-20.0.3.tgz#886a41ba1d4726f67a8858028c99489fed6ad4db" - integrity sha1-iGpBuh1HJvZ6iFgCjJlIn+1q1Ns= + integrity "sha1-iGpBuh1HJvZ6iFgCjJlIn+1q1Ns= sha512-SYhBvTh89tTfCD/CRdSOm13mOBa42iTaTyfyEWBdKcGdPxPtLFBXuHR8XHb33YNYaP+lLbmSvBTsnoesCNJEsQ==" dependencies: abab "^2.0.6" acorn "^8.8.1" @@ -3467,7 +3467,7 @@ json5@^2.2.2: jsonc-parser@^3.2.0: version "3.2.0" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/jsonc-parser/-/jsonc-parser-3.2.0.tgz#31ff3f4c2b9793f89c67212627c51c6394f88e76" - integrity sha1-Mf8/TCuXk/icZyEmJ8UcY5T4jnY= + integrity "sha1-Mf8/TCuXk/icZyEmJ8UcY5T4jnY= sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==" kind-of@^6.0.2: version "6.0.3" @@ -3520,7 +3520,7 @@ locate-path@^5.0.0: locate-path@^6.0.0: version "6.0.0" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" - integrity sha1-VTIeswn+u8WcSAHZMackUqaB0oY= + integrity "sha1-VTIeswn+u8WcSAHZMackUqaB0oY= sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==" dependencies: p-locate "^5.0.0" @@ -3537,7 +3537,7 @@ lodash.merge@^4.6.2: lru-cache@^5.1.1: version "5.1.1" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" - integrity sha1-HaJ+ZxAnGUdpXa9oSOhH8B2EuSA= + integrity "sha1-HaJ+ZxAnGUdpXa9oSOhH8B2EuSA= sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==" dependencies: yallist "^3.0.2" @@ -3607,7 +3607,7 @@ minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2: mkdirp@^1.0.4: version "1.0.4" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" - integrity sha1-PrXtYmInVteaXw4qIh3+utdcL34= + integrity "sha1-PrXtYmInVteaXw4qIh3+utdcL34= sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==" ms@2.1.2: version "2.1.2" @@ -3617,7 +3617,7 @@ ms@2.1.2: natural-compare-lite@^1.4.0: version "1.4.0" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz#17b09581988979fddafe0201e931ba933c96cbb4" - integrity sha1-F7CVgZiJef3a/gIB6TG6kzyWy7Q= + integrity "sha1-F7CVgZiJef3a/gIB6TG6kzyWy7Q= sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==" natural-compare@^1.4.0: version "1.4.0" @@ -3632,7 +3632,7 @@ neo-async@^2.6.2: node-fetch@^2.6.7: version "2.6.11" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/node-fetch/-/node-fetch-2.6.11.tgz#cde7fc71deef3131ef80a738919f999e6edfff25" - integrity sha1-zef8cd7vMTHvgKc4kZ+Znm7f/yU= + integrity "sha1-zef8cd7vMTHvgKc4kZ+Znm7f/yU= sha512-4I6pdBY1EthSqDmJkiNk3JIT8cswwR9nfeW/cPdUagJYEQG7R95WRH74wpz7ma8Gh/9dI9FP+OU+0E4FvtA55w==" dependencies: whatwg-url "^5.0.0" @@ -3644,7 +3644,7 @@ node-int64@^0.4.0: node-releases@^2.0.8: version "2.0.10" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/node-releases/-/node-releases-2.0.10.tgz#c311ebae3b6a148c89b1813fd7c4d3c024ef537f" - integrity sha1-wxHrrjtqFIyJsYE/18TTwCTvU38= + integrity "sha1-wxHrrjtqFIyJsYE/18TTwCTvU38= sha512-5GFldHPXVG/YZmFzJvKK2zDSzPKhEp0+ZR5SVaoSag9fsL5YgHbUHDfnG5494ISANDcK4KwPXAx2xqVEydmd7w==" normalize-path@^3.0.0: version "3.0.0" @@ -3661,7 +3661,7 @@ npm-run-path@^4.0.1: nwsapi@^2.2.2: version "2.2.4" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/nwsapi/-/nwsapi-2.2.4.tgz#fd59d5e904e8e1f03c25a7d5a15cfa16c714a1e5" - integrity sha1-/VnV6QTo4fA8JafVoVz6FscUoeU= + integrity "sha1-/VnV6QTo4fA8JafVoVz6FscUoeU= sha512-NHj4rzRo0tQdijE9ZqAx6kYDcoRwYwSYzCA8MY3JzfxlrvEU0jhnhJT9BhqhJs7I/dKcrDm6TyulaRqZPIhN5g==" once@^1.3.0: version "1.4.0" @@ -3711,7 +3711,7 @@ p-limit@^2.2.0: p-limit@^3.0.2, p-limit@^3.1.0: version "3.1.0" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" - integrity sha1-4drMvnjQ0TiMoYxk/qOOPlfjcGs= + integrity "sha1-4drMvnjQ0TiMoYxk/qOOPlfjcGs= sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==" dependencies: yocto-queue "^0.1.0" @@ -3725,7 +3725,7 @@ p-locate@^4.1.0: p-locate@^5.0.0: version "5.0.0" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834" - integrity sha1-g8gxXGeFAF470CGDlBHJ4RDm2DQ= + integrity "sha1-g8gxXGeFAF470CGDlBHJ4RDm2DQ= sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==" dependencies: p-limit "^3.0.2" @@ -3754,7 +3754,7 @@ parse-json@^5.2.0: parse5@^7.0.0, parse5@^7.1.1: version "7.1.2" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/parse5/-/parse5-7.1.2.tgz#0736bebbfd77793823240a23b7fc5e010b7f8e32" - integrity sha1-Bza+u/13eTgjJAojt/xeAQt/jjI= + integrity "sha1-Bza+u/13eTgjJAojt/xeAQt/jjI= sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==" dependencies: entities "^4.4.0" @@ -3823,7 +3823,7 @@ prelude-ls@~1.1.2: pretty-format@^29.5.0: version "29.5.0" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/pretty-format/-/pretty-format-29.5.0.tgz#283134e74f70e2e3e7229336de0e4fce94ccde5a" - integrity sha1-KDE0509w4uPnIpM23g5PzpTM3lo= + integrity "sha1-KDE0509w4uPnIpM23g5PzpTM3lo= sha512-V2mGkI31qdttvTFX7Mt4efOqHXqJWMu4/r66Xh3Z3BwZaPfPJgp6/gbwoujRpPUtfEF6AUUWx3Jim3GCw5g/Qw==" dependencies: "@jest/schemas" "^29.4.3" ansi-styles "^5.0.0" @@ -3850,7 +3850,7 @@ punycode@^2.1.0, punycode@^2.1.1: pure-rand@^6.0.0: version "6.0.2" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/pure-rand/-/pure-rand-6.0.2.tgz#a9c2ddcae9b68d736a8163036f088a2781c8b306" - integrity sha1-qcLdyum2jXNqgWMDbwiKJ4HIswY= + integrity "sha1-qcLdyum2jXNqgWMDbwiKJ4HIswY= sha512-6Yg0ekpKICSjPswYOuC5sku/TSWaRYlA0qsXqJgM/d/4pLPHPuTxK7Nbf7jFKzAeedUhR8C7K9Uv63FBsSo8xQ==" querystringify@^2.1.1: version "2.2.0" @@ -3872,7 +3872,7 @@ randombytes@^2.1.0: react-is@^18.0.0: version "18.2.0" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/react-is/-/react-is-18.2.0.tgz#199431eeaaa2e09f86427efbb4f1473edb47609b" - integrity sha1-GZQx7qqi4J+GQn77tPFHPttHYJs= + integrity "sha1-GZQx7qqi4J+GQn77tPFHPttHYJs= sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==" rechoir@^0.7.0: version "0.7.1" @@ -3884,7 +3884,7 @@ rechoir@^0.7.0: regenerate-unicode-properties@^10.1.0: version "10.1.0" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.0.tgz#7c3192cab6dd24e21cb4461e5ddd7dd24fa8374c" - integrity sha1-fDGSyrbdJOIctEYeXd190k+oN0w= + integrity "sha1-fDGSyrbdJOIctEYeXd190k+oN0w= sha512-d1VudCLoIGitcU/hEg2QqvyGZQmdC0Lf8BqdOMXGFSvJP4bNV1+XqbPQeHHLD51Jh4QJJ225dlIFvY4Ly6MXmQ==" dependencies: regenerate "^1.4.2" @@ -3896,19 +3896,19 @@ regenerate@^1.4.2: regenerator-runtime@^0.13.11: version "0.13.11" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz#f6dca3e7ceec20590d07ada785636a90cdca17f9" - integrity sha1-9tyj587sIFkNB62nhWNqkM3KF/k= + integrity "sha1-9tyj587sIFkNB62nhWNqkM3KF/k= sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==" regenerator-transform@^0.15.1: version "0.15.1" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/regenerator-transform/-/regenerator-transform-0.15.1.tgz#f6c4e99fc1b4591f780db2586328e4d9a9d8dc56" - integrity sha1-9sTpn8G0WR94DbJYYyjk2anY3FY= + integrity "sha1-9sTpn8G0WR94DbJYYyjk2anY3FY= sha512-knzmNAcuyxV+gQCufkYcvOqX/qIIfHLv0u5x79kRxuGojfYVky1f15TzZEu2Avte8QGepvUNTnLskf8E6X6Vyg==" dependencies: "@babel/runtime" "^7.8.4" regexpu-core@^5.3.1: version "5.3.2" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/regexpu-core/-/regexpu-core-5.3.2.tgz#11a2b06884f3527aec3e93dbbf4a3b958a95546b" - integrity sha1-EaKwaITzUnrsPpPbv0o7lYqVVGs= + integrity "sha1-EaKwaITzUnrsPpPbv0o7lYqVVGs= sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==" dependencies: "@babel/regjsgen" "^0.8.0" regenerate "^1.4.2" @@ -3920,7 +3920,7 @@ regexpu-core@^5.3.1: regjsparser@^0.9.1: version "0.9.1" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/regjsparser/-/regjsparser-0.9.1.tgz#272d05aa10c7c1f67095b1ff0addae8442fc5709" - integrity sha1-Jy0FqhDHwfZwlbH/Ct2uhEL8Vwk= + integrity "sha1-Jy0FqhDHwfZwlbH/Ct2uhEL8Vwk= sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==" dependencies: jsesc "~0.5.0" @@ -3954,12 +3954,12 @@ resolve-from@^5.0.0: resolve.exports@^2.0.0: version "2.0.2" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/resolve.exports/-/resolve.exports-2.0.2.tgz#f8c934b8e6a13f539e38b7098e2e36134f01e800" - integrity sha1-+Mk0uOahP1OeOLcJji42E08B6AA= + integrity "sha1-+Mk0uOahP1OeOLcJji42E08B6AA= sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==" resolve@^1.14.2, resolve@^1.20.0, resolve@^1.9.0: version "1.22.2" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/resolve/-/resolve-1.22.2.tgz#0ed0943d4e301867955766c9f3e1ae6d01c6845f" - integrity sha1-DtCUPU4wGGeVV2bJ8+GubQHGhF8= + integrity "sha1-DtCUPU4wGGeVV2bJ8+GubQHGhF8= sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==" dependencies: is-core-module "^2.11.0" path-parse "^1.0.7" @@ -3997,14 +3997,14 @@ safe-buffer@^5.1.0: saxes@^6.0.0: version "6.0.0" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/saxes/-/saxes-6.0.0.tgz#fe5b4a4768df4f14a201b1ba6a65c1f3d9988cc5" - integrity sha1-/ltKR2jfTxSiAbG6amXB89mYjMU= + integrity "sha1-/ltKR2jfTxSiAbG6amXB89mYjMU= sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==" dependencies: xmlchars "^2.2.0" schema-utils@^3.1.1, schema-utils@^3.1.2: version "3.1.2" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/schema-utils/-/schema-utils-3.1.2.tgz#36c10abca6f7577aeae136c804b0c741edeadc99" - integrity sha1-NsEKvKb3V3rq4TbIBLDHQe3q3Jk= + integrity "sha1-NsEKvKb3V3rq4TbIBLDHQe3q3Jk= sha512-pvjEHOgWc9OWA/f/DE3ohBWTD6EleVLf7iFUkoSwAxttdBhB9QUebQgxER2kWueOvRJXPHNnyrvvh9eZINB8Eg==" dependencies: "@types/json-schema" "^7.0.8" ajv "^6.12.5" @@ -4023,21 +4023,21 @@ semver@^6.0.0, semver@^6.1.1, semver@^6.1.2, semver@^6.3.0: semver@^7.3.4, semver@^7.3.5, semver@^7.3.7: version "7.5.1" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/semver/-/semver-7.5.1.tgz#c90c4d631cf74720e46b21c1d37ea07edfab91ec" - integrity sha1-yQxNYxz3RyDkayHB036gft+rkew= + integrity "sha1-yQxNYxz3RyDkayHB036gft+rkew= sha512-Wvss5ivl8TMRZXXESstBA4uR5iXgEN/VC5/sOcuXdVLzcdkz4HWetIoRfG5gb5X+ij/G9rw9YoGn3QoQ8OCSpw==" dependencies: lru-cache "^6.0.0" serialize-javascript@^6.0.1: version "6.0.1" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/serialize-javascript/-/serialize-javascript-6.0.1.tgz#b206efb27c3da0b0ab6b52f48d170b7996458e5c" - integrity sha1-sgbvsnw9oLCra1L0jRcLeZZFjlw= + integrity "sha1-sgbvsnw9oLCra1L0jRcLeZZFjlw= sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w==" dependencies: randombytes "^2.1.0" set-cookie-parser@^2.4.8: version "2.6.0" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/set-cookie-parser/-/set-cookie-parser-2.6.0.tgz#131921e50f62ff1a66a461d7d62d7b21d5d15a51" - integrity sha1-Exkh5Q9i/xpmpGHX1i17IdXRWlE= + integrity "sha1-Exkh5Q9i/xpmpGHX1i17IdXRWlE= sha512-RVnVQxTXuerk653XfuliOxBP81Sf0+qfQE73LIYKcyMYHG94AuH0kgrQpRDuTZnSmjpysHmzxJXKNfa6PjFhyQ==" shallow-clone@^3.0.0: version "3.0.1" @@ -4076,7 +4076,7 @@ slash@^3.0.0: source-map-support@0.5.13: version "0.5.13" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/source-map-support/-/source-map-support-0.5.13.tgz#31b24a9c2e73c2de85066c0feb7d44767ed52932" - integrity sha1-MbJKnC5zwt6FBmwP631Edn7VKTI= + integrity "sha1-MbJKnC5zwt6FBmwP631Edn7VKTI= sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==" dependencies: buffer-from "^1.0.0" source-map "^0.6.0" @@ -4102,7 +4102,7 @@ sprintf-js@~1.0.2: stack-utils@^2.0.3: version "2.0.6" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/stack-utils/-/stack-utils-2.0.6.tgz#aaf0748169c02fc33c8232abccf933f54a1cc34f" - integrity sha1-qvB0gWnAL8M8gjKrzPkz9Uocw08= + integrity "sha1-qvB0gWnAL8M8gjKrzPkz9Uocw08= sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==" dependencies: escape-string-regexp "^2.0.0" @@ -4184,7 +4184,7 @@ tapable@^2.1.1, tapable@^2.2.0: terser-webpack-plugin@^5.3.7: version "5.3.8" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/terser-webpack-plugin/-/terser-webpack-plugin-5.3.8.tgz#415e03d2508f7de63d59eca85c5d102838f06610" - integrity sha1-QV4D0lCPfeY9WeyoXF0QKDjwZhA= + integrity "sha1-QV4D0lCPfeY9WeyoXF0QKDjwZhA= sha512-WiHL3ElchZMsK27P8uIUh4604IgJyAW47LVXGbEoB21DbQcZ+OuMpGjVYnEUaqcWM6dO8uS2qUbA7LSCWqvsbg==" dependencies: "@jridgewell/trace-mapping" "^0.3.17" jest-worker "^27.4.5" @@ -4195,7 +4195,7 @@ terser-webpack-plugin@^5.3.7: terser@^5.14.2, terser@^5.16.8: version "5.17.4" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/terser/-/terser-5.17.4.tgz#b0c2d94897dfeba43213ed5f90ed117270a2c696" - integrity sha1-sMLZSJff66QyE+1fkO0RcnCixpY= + integrity "sha1-sMLZSJff66QyE+1fkO0RcnCixpY= sha512-jcEKZw6UPrgugz/0Tuk/PVyLAPfMBJf5clnGueo45wTweoV8yh7Q7PEkhkJ5uuUbC7zAxEcG3tqNr1bstkQ8nw==" dependencies: "@jridgewell/source-map" "^0.3.2" acorn "^8.5.0" @@ -4246,7 +4246,7 @@ tough-cookie@^4.0.0, tough-cookie@^4.1.2: tr46@^3.0.0: version "3.0.0" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/tr46/-/tr46-3.0.0.tgz#555c4e297a950617e8eeddef633c87d4d9d6cbf9" - integrity sha1-VVxOKXqVBhfo7t3vYzyH1NnWy/k= + integrity "sha1-VVxOKXqVBhfo7t3vYzyH1NnWy/k= sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==" dependencies: punycode "^2.1.1" @@ -4258,7 +4258,7 @@ tr46@~0.0.3: ts-loader@^9.2.6: version "9.4.2" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/ts-loader/-/ts-loader-9.4.2.tgz#80a45eee92dd5170b900b3d00abcfa14949aeb78" - integrity sha1-gKRe7pLdUXC5ALPQCrz6FJSa63g= + integrity "sha1-gKRe7pLdUXC5ALPQCrz6FJSa63g= sha512-OmlC4WVmFv5I0PpaxYb+qGeGOdm5giHU7HwDDUjw59emP2UYMHy9fFSDcYgSNoH8sXcj4hGCSEhlDZ9ULeDraA==" dependencies: chalk "^4.1.0" enhanced-resolve "^5.0.0" @@ -4309,7 +4309,7 @@ type-fest@^0.21.3: typescript@^4.5.4: version "4.9.5" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/typescript/-/typescript-4.9.5.tgz#095979f9bcc0d09da324d58d03ce8f8374cbe65a" - integrity sha1-CVl5+bzA0J2jJNWNA86Pg3TL5lo= + integrity "sha1-CVl5+bzA0J2jJNWNA86Pg3TL5lo= sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==" unicode-canonical-property-names-ecmascript@^2.0.0: version "2.0.0" @@ -4327,12 +4327,12 @@ unicode-match-property-ecmascript@^2.0.0: unicode-match-property-value-ecmascript@^2.1.0: version "2.1.0" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz#cb5fffdcd16a05124f5a4b0bf7c3770208acbbe0" - integrity sha1-y1//3NFqBRJPWksL98N3Agisu+A= + integrity "sha1-y1//3NFqBRJPWksL98N3Agisu+A= sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==" unicode-property-aliases-ecmascript@^2.0.0: version "2.1.0" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz#43d41e3be698bd493ef911077c9b131f827e8ccd" - integrity sha1-Q9QeO+aYvUk++REHfJsTH4J+jM0= + integrity "sha1-Q9QeO+aYvUk++REHfJsTH4J+jM0= sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==" universalify@^0.2.0: version "0.2.0" @@ -4342,7 +4342,7 @@ universalify@^0.2.0: update-browserslist-db@^1.0.10: version "1.0.11" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/update-browserslist-db/-/update-browserslist-db-1.0.11.tgz#9a2a641ad2907ae7b3616506f4b977851db5b940" - integrity sha1-mipkGtKQeuezYWUG9Ll3hR21uUA= + integrity "sha1-mipkGtKQeuezYWUG9Ll3hR21uUA= sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==" dependencies: escalade "^3.1.1" picocolors "^1.0.0" @@ -4365,12 +4365,12 @@ url-parse@^1.5.3: uuid@^8.3.2: version "8.3.2" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" - integrity sha1-gNW1ztJxu5r2xEXyGhoExgbO++I= + integrity "sha1-gNW1ztJxu5r2xEXyGhoExgbO++I= sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==" v8-to-istanbul@^9.0.1: version "9.1.0" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/v8-to-istanbul/-/v8-to-istanbul-9.1.0.tgz#1b83ed4e397f58c85c266a570fc2558b5feb9265" - integrity sha1-G4PtTjl/WMhcJmpXD8JVi1/rkmU= + integrity "sha1-G4PtTjl/WMhcJmpXD8JVi1/rkmU= sha512-6z3GW9x8G1gd+JIIgQQQxXuiJtCXeAjp6RaPEPLv62mH3iPHPxV6W3robxtCzNErRo6ZwTmzWhsbNvjyEBKzKA==" dependencies: "@jridgewell/trace-mapping" "^0.3.12" "@types/istanbul-lib-coverage" "^2.0.1" @@ -4379,7 +4379,7 @@ v8-to-istanbul@^9.0.1: w3c-xmlserializer@^4.0.0: version "4.0.0" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/w3c-xmlserializer/-/w3c-xmlserializer-4.0.0.tgz#aebdc84920d806222936e3cdce408e32488a3073" - integrity sha1-rr3ISSDYBiIpNuPNzkCOMkiKMHM= + integrity "sha1-rr3ISSDYBiIpNuPNzkCOMkiKMHM= sha512-d+BFHzbiCx6zGfz0HyQ6Rg69w9k19nviJspaj4yNscGjrHu94sVP+aRm75yEbCh+r2/yR+7q6hux9LVtbuTGBw==" dependencies: xml-name-validator "^4.0.0" @@ -4406,7 +4406,7 @@ webidl-conversions@^3.0.0: webidl-conversions@^7.0.0: version "7.0.0" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/webidl-conversions/-/webidl-conversions-7.0.0.tgz#256b4e1882be7debbf01d05f0aa2039778ea080a" - integrity sha1-JWtOGIK+feu/AdBfCqIDl3jqCAo= + integrity "sha1-JWtOGIK+feu/AdBfCqIDl3jqCAo= sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==" webpack-cli@^4.9.2: version "4.10.0" @@ -4442,7 +4442,7 @@ webpack-sources@^3.2.3: webpack@^5.72.1: version "5.82.1" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/webpack/-/webpack-5.82.1.tgz#8f38c78e53467556e8a89054ebd3ef6e9f67dbab" - integrity sha1-jzjHjlNGdVboqJBU69Pvbp9n26s= + integrity "sha1-jzjHjlNGdVboqJBU69Pvbp9n26s= sha512-C6uiGQJ+Gt4RyHXXYt+v9f+SN1v83x68URwgxNQ98cvH8kxiuywWGP4XeNZ1paOzZ63aY3cTciCEQJNFUljlLw==" dependencies: "@types/eslint-scope" "^3.7.3" "@types/estree" "^1.0.0" @@ -4472,19 +4472,19 @@ webpack@^5.72.1: whatwg-encoding@^2.0.0: version "2.0.0" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz#e7635f597fd87020858626805a2729fa7698ac53" - integrity sha1-52NfWX/YcCCFhiaAWicp+naYrFM= + integrity "sha1-52NfWX/YcCCFhiaAWicp+naYrFM= sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==" dependencies: iconv-lite "0.6.3" whatwg-mimetype@^3.0.0: version "3.0.0" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/whatwg-mimetype/-/whatwg-mimetype-3.0.0.tgz#5fa1a7623867ff1af6ca3dc72ad6b8a4208beba7" - integrity sha1-X6GnYjhn/xr2yj3HKta4pCCL66c= + integrity "sha1-X6GnYjhn/xr2yj3HKta4pCCL66c= sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==" whatwg-url@^11.0.0: version "11.0.0" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/whatwg-url/-/whatwg-url-11.0.0.tgz#0a849eebb5faf2119b901bb76fd795c2848d4018" - integrity sha1-CoSe67X68hGbkBu3b9eVwoSNQBg= + integrity "sha1-CoSe67X68hGbkBu3b9eVwoSNQBg= sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==" dependencies: tr46 "^3.0.0" webidl-conversions "^7.0.0" @@ -4507,7 +4507,7 @@ which@^2.0.1: wildcard@^2.0.0: version "2.0.1" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/wildcard/-/wildcard-2.0.1.tgz#5ab10d02487198954836b6349f74fff961e10f67" - integrity sha1-WrENAkhxmJVINrY0n3T/+WHhD2c= + integrity "sha1-WrENAkhxmJVINrY0n3T/+WHhD2c= sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==" word-wrap@^1.2.3, word-wrap@~1.2.3: version "1.2.3" @@ -4531,7 +4531,7 @@ wrappy@1: write-file-atomic@^4.0.2: version "4.0.2" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/write-file-atomic/-/write-file-atomic-4.0.2.tgz#a9df01ae5b77858a027fd2e80768ee433555fcfd" - integrity sha1-qd8Brlt3hYoCf9LoB2juQzVV/P0= + integrity "sha1-qd8Brlt3hYoCf9LoB2juQzVV/P0= sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==" dependencies: imurmurhash "^0.1.4" signal-exit "^3.0.7" @@ -4539,22 +4539,22 @@ write-file-atomic@^4.0.2: ws@^7.4.5: version "7.5.9" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/ws/-/ws-7.5.9.tgz#54fa7db29f4c7cec68b1ddd3a89de099942bb591" - integrity sha1-VPp9sp9MfOxosd3TqJ3gmZQrtZE= + integrity "sha1-VPp9sp9MfOxosd3TqJ3gmZQrtZE= sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==" ws@^8.11.0: version "8.13.0" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/ws/-/ws-8.13.0.tgz#9a9fb92f93cf41512a0735c8f4dd09b8a1211cd0" - integrity sha1-mp+5L5PPQVEqBzXI9N0JuKEhHNA= + integrity "sha1-mp+5L5PPQVEqBzXI9N0JuKEhHNA= sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==" xml-name-validator@^4.0.0: version "4.0.0" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/xml-name-validator/-/xml-name-validator-4.0.0.tgz#79a006e2e63149a8600f15430f0a4725d1524835" - integrity sha1-eaAG4uYxSahgDxVDDwpHJdFSSDU= + integrity "sha1-eaAG4uYxSahgDxVDDwpHJdFSSDU= sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==" xml@^1.0.1: version "1.0.1" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/xml/-/xml-1.0.1.tgz#78ba72020029c5bc87b8a81a3cfcd74b4a2fc1e5" - integrity sha1-eLpyAgApxbyHuKgaPPzXS0ovweU= + integrity "sha1-eLpyAgApxbyHuKgaPPzXS0ovweU= sha512-huCv9IH9Tcf95zuYCsQraZtWnJvBtLVE0QHMOs8bWyZAFZNDcYjsPq1nEx8jKA9y+Beo9v+7OBPRisQTjinQMw==" xmlchars@^2.2.0: version "2.2.0" @@ -4569,7 +4569,7 @@ y18n@^5.0.5: yallist@^3.0.2: version "3.1.1" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" - integrity sha1-27fa+b/YusmrRev2ArjLrQ1dCP0= + integrity "sha1-27fa+b/YusmrRev2ArjLrQ1dCP0= sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" yallist@^4.0.0: version "4.0.0" @@ -4584,7 +4584,7 @@ yargs-parser@^20.2.2: yargs-parser@^21.1.1: version "21.1.1" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/yargs-parser/-/yargs-parser-21.1.1.tgz#9096bceebf990d21bb31fa9516e0ede294a77d35" - integrity sha1-kJa87r+ZDSG7MfqVFuDt4pSnfTU= + integrity "sha1-kJa87r+ZDSG7MfqVFuDt4pSnfTU= sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==" yargs@^16.2.0: version "16.2.0" @@ -4602,7 +4602,7 @@ yargs@^16.2.0: yargs@^17.3.1: version "17.7.2" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/yargs/-/yargs-17.7.2.tgz#991df39aca675a192b816e1e0363f9d75d2aa269" - integrity sha1-mR3zmspnWhkrgW4eA2P5110qomk= + integrity "sha1-mR3zmspnWhkrgW4eA2P5110qomk= sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==" dependencies: cliui "^8.0.1" escalade "^3.1.1" @@ -4615,4 +4615,4 @@ yargs@^17.3.1: yocto-queue@^0.1.0: version "0.1.0" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" - integrity sha1-ApTrPe4FAo0x7hpfosVWpqrxChs= + integrity "sha1-ApTrPe4FAo0x7hpfosVWpqrxChs= sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==" diff --git a/src/SignalR/clients/ts/signalr/yarn.lock b/src/SignalR/clients/ts/signalr/yarn.lock index aab5dba9da02..0bf87e376fc3 100644 --- a/src/SignalR/clients/ts/signalr/yarn.lock +++ b/src/SignalR/clients/ts/signalr/yarn.lock @@ -16,7 +16,7 @@ "@types/eventsource@^1.1.8": version "1.1.11" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@types/eventsource/-/eventsource-1.1.11.tgz#a2c0bfd0436b7db42ed1b2b2117f7ec2e8478dc7" - integrity sha1-osC/0ENrfbQu0bKyEX9+wuhHjcc= + integrity "sha1-osC/0ENrfbQu0bKyEX9+wuhHjcc= sha512-L7wLDZlWm5mROzv87W0ofIYeQP5K2UhoFnnUyEWLKM6UBb0ZNRgAqp98qE5DkgfBXdWfc2kYmw9KZm4NLjRbsw==" "@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0": version "2.0.4" @@ -48,12 +48,12 @@ "@types/node@*": version "18.13.0" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@types/node/-/node-18.13.0.tgz#0400d1e6ce87e9d3032c19eb6c58205b0d3f7850" - integrity sha1-BADR5s6H6dMDLBnrbFggWw0/eFA= + integrity "sha1-BADR5s6H6dMDLBnrbFggWw0/eFA= sha512-gC3TazRzGoOnoKAhUx+Q0t8S9Tzs74z7m0ipwGpSqQrleP14hKxP4/JUeEQcD3W1/aIpnWl8pHowI7WokuZpXg==" "@types/node@^14.14.31": version "14.18.36" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@types/node/-/node-14.18.36.tgz#c414052cb9d43fab67d679d5f3c641be911f5835" - integrity sha1-xBQFLLnUP6tn1nnV88ZBvpEfWDU= + integrity "sha1-xBQFLLnUP6tn1nnV88ZBvpEfWDU= sha512-FXKWbsJ6a1hIrRxv+FoukuHnGTgEzKYGi7kilfMae96AL9UNkPFNWJEEYWzdRI9ooIkbr4AKldyuSTLql06vLQ==" "@types/tough-cookie@^4.0.0": version "4.0.2" @@ -68,7 +68,7 @@ "@types/yargs@^15.0.0": version "15.0.15" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@types/yargs/-/yargs-15.0.15.tgz#e609a2b1ef9e05d90489c2f5f45bbfb2be092158" - integrity sha1-5gmise+eBdkEicL19Fu/sr4JIVg= + integrity "sha1-5gmise+eBdkEicL19Fu/sr4JIVg= sha512-IziEYMU9XoVj8hWg7k+UJrXALkGFjWJhn5QFEv9q4p+v40oZhSuC135M38st8XPjICL7Ey4TV64ferBGUoJhBg==" dependencies: "@types/yargs-parser" "*" @@ -124,12 +124,12 @@ event-target-shim@^5.0.0: eventsource@^2.0.2: version "2.0.2" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/eventsource/-/eventsource-2.0.2.tgz#76dfcc02930fb2ff339520b6d290da573a9e8508" - integrity sha1-dt/MApMPsv8zlSC20pDaVzqehQg= + integrity "sha1-dt/MApMPsv8zlSC20pDaVzqehQg= sha512-IzUmBGPR3+oUG9dUeXynyNmf91/3zUSJg1lCktzKw47OXuhco54U3r9B7O4XX+Rb1Itm9OZ2b0RkTs10bICOxA==" fetch-cookie@^2.0.3: version "2.1.0" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/fetch-cookie/-/fetch-cookie-2.1.0.tgz#6e127909912f9e527533b045aab555c06b33801b" - integrity sha1-bhJ5CZEvnlJ1M7BFqrVVwGszgBs= + integrity "sha1-bhJ5CZEvnlJ1M7BFqrVVwGszgBs= sha512-39+cZRbWfbibmj22R2Jy6dmTbAWC+oqun1f1FzQaNurkPDUP4C38jpeZbiXCR88RKRVDp8UcDrbFXkNhN+NjYg==" dependencies: set-cookie-parser "^2.4.8" tough-cookie "^4.0.0" @@ -157,7 +157,7 @@ jest-get-type@^26.3.0: node-fetch@^2.6.7: version "2.6.9" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/node-fetch/-/node-fetch-2.6.9.tgz#7c7f744b5cc6eb5fd404e0c7a9fec630a55657e6" - integrity sha1-fH90S1zG61/UBODHqf7GMKVWV+Y= + integrity "sha1-fH90S1zG61/UBODHqf7GMKVWV+Y= sha512-DJm/CJkZkRjKKj4Zi4BsKVZh3ValV5IR5s7LVZnW+6YMh0W1BfNA8XSs6DLMGYlId5F3KnA70uu2qepcR08Qqg==" dependencies: whatwg-url "^5.0.0" @@ -179,12 +179,12 @@ process@^0.11.10: psl@^1.1.33: version "1.9.0" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/psl/-/psl-1.9.0.tgz#d0df2a137f00794565fcaf3b2c00cd09f8d5a5a7" - integrity sha1-0N8qE38AeUVl/K87LADNCfjVpac= + integrity "sha1-0N8qE38AeUVl/K87LADNCfjVpac= sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==" punycode@^2.1.1: version "2.3.0" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/punycode/-/punycode-2.3.0.tgz#f67fa67c94da8f4d0cfff981aee4118064199b8f" - integrity sha1-9n+mfJTaj00M//mBruQRgGQZm48= + integrity "sha1-9n+mfJTaj00M//mBruQRgGQZm48= sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==" querystringify@^2.1.1: version "2.2.0" @@ -204,7 +204,7 @@ requires-port@^1.0.0: set-cookie-parser@^2.4.8: version "2.5.1" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/set-cookie-parser/-/set-cookie-parser-2.5.1.tgz#ddd3e9a566b0e8e0862aca974a6ac0e01349430b" - integrity sha1-3dPppWaw6OCGKsqXSmrA4BNJQws= + integrity "sha1-3dPppWaw6OCGKsqXSmrA4BNJQws= sha512-1jeBGaKNGdEq4FgIrORu/N570dwoPYio8lSoYLWmX7sQ//0JY08Xh9o5pBcgmHQ/MbsYp/aZnOe1s1lIsbLprQ==" supports-color@^7.1.0: version "7.2.0" @@ -216,7 +216,7 @@ supports-color@^7.1.0: tough-cookie@^4.0.0: version "4.1.2" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/tough-cookie/-/tough-cookie-4.1.2.tgz#e53e84b85f24e0b65dd526f46628db6c85f6b874" - integrity sha1-5T6EuF8k4LZd1Sb0ZijbbIX2uHQ= + integrity "sha1-5T6EuF8k4LZd1Sb0ZijbbIX2uHQ= sha512-G9fqXWoYFZgTc2z8Q5zaHy/vJMjm+WV0AkAeHxVCQiEB1b+dGvWzFW6QV07cY5jQ5gRkeid2qIkzkxUnmoQZUQ==" dependencies: psl "^1.1.33" punycode "^2.1.1" @@ -255,6 +255,6 @@ whatwg-url@^5.0.0: webidl-conversions "^3.0.0" ws@^7.4.5: - version "7.5.9" - resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/ws/-/ws-7.5.9.tgz#54fa7db29f4c7cec68b1ddd3a89de099942bb591" - integrity sha1-VPp9sp9MfOxosd3TqJ3gmZQrtZE= + version "7.5.10" + resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/ws/-/ws-7.5.10.tgz#58b5c20dc281633f6c19113f39b349bd8bd558d9" + integrity sha1-WLXCDcKBYz9sGRE/ObNJvYvVWNk= From 6ee87a3fc94724557ca28c77ee488254ed679b78 Mon Sep 17 00:00:00 2001 From: Martin Costello Date: Thu, 8 Aug 2024 20:38:56 +0100 Subject: [PATCH 250/391] [release/8.0] Update Swashbuckle.AspNetCore to 6.6.2 (#56266) * Update Swashbuckle.AspNetCore to 6.6.2 Update Swashbuckle.AspNetCore to a version that has built-in support for .NET 8. * Fix test Update expected description. See domaindrivendev/Swashbuckle.AspNetCore#2872. --- eng/Versions.props | 2 +- .../GrpcSwaggerServiceExtensionsTests.cs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/eng/Versions.props b/eng/Versions.props index b2c479c367fa..1adc4c555700 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -322,7 +322,7 @@ 4.0.0 2.7.27 5.0.0 - 6.4.0 + 6.6.2 2.0.3 1.0.0 2.4.2 diff --git a/src/Grpc/JsonTranscoding/test/Microsoft.AspNetCore.Grpc.Swagger.Tests/GrpcSwaggerServiceExtensionsTests.cs b/src/Grpc/JsonTranscoding/test/Microsoft.AspNetCore.Grpc.Swagger.Tests/GrpcSwaggerServiceExtensionsTests.cs index ef12f543d21c..6cffa4f6ed8d 100644 --- a/src/Grpc/JsonTranscoding/test/Microsoft.AspNetCore.Grpc.Swagger.Tests/GrpcSwaggerServiceExtensionsTests.cs +++ b/src/Grpc/JsonTranscoding/test/Microsoft.AspNetCore.Grpc.Swagger.Tests/GrpcSwaggerServiceExtensionsTests.cs @@ -46,7 +46,7 @@ public void AddGrpcSwagger_GrpcServiceRegistered_ReturnSwaggerWithGrpcOperation( var path = swagger.Paths["/v1/greeter/{name}"]; Assert.True(path.Operations.TryGetValue(OperationType.Get, out var operation)); - Assert.Equal("Success", operation.Responses["200"].Description); + Assert.Equal("OK", operation.Responses["200"].Description); Assert.Equal("Error", operation.Responses["default"].Description); } From 8555e4d42bada65347124929307b637a2d35df0a Mon Sep 17 00:00:00 2001 From: William Godbe Date: Thu, 8 Aug 2024 14:42:27 -0700 Subject: [PATCH 251/391] Skip timing out MVC template tests in 8.0 (#56978) --- .../test/Templates.Mvc.Tests/Templates.Mvc.Tests.csproj | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/ProjectTemplates/test/Templates.Mvc.Tests/Templates.Mvc.Tests.csproj b/src/ProjectTemplates/test/Templates.Mvc.Tests/Templates.Mvc.Tests.csproj index 152c0d7b0d07..614a5e3cfac0 100644 --- a/src/ProjectTemplates/test/Templates.Mvc.Tests/Templates.Mvc.Tests.csproj +++ b/src/ProjectTemplates/test/Templates.Mvc.Tests/Templates.Mvc.Tests.csproj @@ -20,6 +20,14 @@ Mvc true 01:20:00 + + + + + $(HelixQueueDebian11); + $(HelixQueueMariner); + $(SkipHelixQueues) + From e46a19254943d8146fd89b24c7525dcd4f70f55b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 8 Aug 2024 14:43:12 -0700 Subject: [PATCH 252/391] [release/8.0] (deps): Bump src/submodules/googletest (#57123) Bumps [src/submodules/googletest](https://github.com/google/googletest) from `a7f443b` to `3e3b44c`. - [Release notes](https://github.com/google/googletest/releases) - [Commits](https://github.com/google/googletest/compare/a7f443b80b105f940225332ed3c31f2790092f47...3e3b44c300b21eb996a2957782421bc0f157af18) --- updated-dependencies: - dependency-name: src/submodules/googletest dependency-type: direct:production ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- src/submodules/googletest | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/submodules/googletest b/src/submodules/googletest index a7f443b80b10..3e3b44c300b2 160000 --- a/src/submodules/googletest +++ b/src/submodules/googletest @@ -1 +1 @@ -Subproject commit a7f443b80b105f940225332ed3c31f2790092f47 +Subproject commit 3e3b44c300b21eb996a2957782421bc0f157af18 From 35f21b3e9857749cb011c20e8b62bb85d2dc1767 Mon Sep 17 00:00:00 2001 From: Brennan Date: Thu, 8 Aug 2024 16:26:57 -0700 Subject: [PATCH 253/391] Update azure-pipelines-mirror-within-azdo.yml for 8.0 (#56457) --- .azure/pipelines/azure-pipelines-mirror-within-azdo.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.azure/pipelines/azure-pipelines-mirror-within-azdo.yml b/.azure/pipelines/azure-pipelines-mirror-within-azdo.yml index 818114af0250..4725ab9fba1c 100644 --- a/.azure/pipelines/azure-pipelines-mirror-within-azdo.yml +++ b/.azure/pipelines/azure-pipelines-mirror-within-azdo.yml @@ -3,7 +3,7 @@ trigger: batch: true branches: include: - - internal/release/6.0 + - internal/release/8.0 parameters: # Run the pipeline manually (usually disallowed) From 1002b673be5803ba63173ef8a2fdebe3e388a34a Mon Sep 17 00:00:00 2001 From: Brennan Conroy Date: Mon, 12 Aug 2024 16:20:13 +0000 Subject: [PATCH 254/391] Merged PR 41476: Fix Http3 Pipe complete Don't complete the `PipeWriter` when it still might be used by Application code. --- .../src/Internal/Http3/Http3OutputProducer.cs | 33 +++-- .../Core/src/Internal/Http3/Http3Stream.cs | 2 + ...re.Server.Kestrel.Transport.Sockets.csproj | 1 + .../Http3/Http3RequestTests.cs | 132 ++++++++++++++++++ .../DiagnosticMemoryPool.cs | 23 +++ 5 files changed, 181 insertions(+), 10 deletions(-) diff --git a/src/Servers/Kestrel/Core/src/Internal/Http3/Http3OutputProducer.cs b/src/Servers/Kestrel/Core/src/Internal/Http3/Http3OutputProducer.cs index d387d3629662..cd135fa3d319 100644 --- a/src/Servers/Kestrel/Core/src/Internal/Http3/Http3OutputProducer.cs +++ b/src/Servers/Kestrel/Core/src/Internal/Http3/Http3OutputProducer.cs @@ -68,25 +68,21 @@ public void StreamReset() _dataWriteProcessingTask = ProcessDataWrites().Preserve(); } - public void Dispose() + // Called once Application code has exited + // Or on Dispose which also would occur after Application code finished + public void Complete() { lock (_dataWriterLock) { - if (_disposed) - { - return; - } - - _disposed = true; - Stop(); + _pipeWriter.Complete(); + if (_fakeMemoryOwner != null) { _fakeMemoryOwner.Dispose(); _fakeMemoryOwner = null; } - if (_fakeMemory != null) { ArrayPool.Shared.Return(_fakeMemory); @@ -95,6 +91,21 @@ public void Dispose() } } + public void Dispose() + { + lock (_dataWriterLock) + { + if (_disposed) + { + return; + } + + _disposed = true; + + Complete(); + } + } + void IHttpOutputAborter.Abort(ConnectionAbortedException abortReason) { _stream.Abort(abortReason, Http3ErrorCode.InternalError); @@ -285,7 +296,9 @@ public void Stop() _streamCompleted = true; - _pipeWriter.Complete(new OperationCanceledException()); + // Application code could be using this PipeWriter, we cancel the next (or in progress) flush so they can observe this Stop + // Additionally, _streamCompleted will cause any future PipeWriter operations to noop + _pipeWriter.CancelPendingFlush(); } } diff --git a/src/Servers/Kestrel/Core/src/Internal/Http3/Http3Stream.cs b/src/Servers/Kestrel/Core/src/Internal/Http3/Http3Stream.cs index bb42d0e18e6d..61625f180cd2 100644 --- a/src/Servers/Kestrel/Core/src/Internal/Http3/Http3Stream.cs +++ b/src/Servers/Kestrel/Core/src/Internal/Http3/Http3Stream.cs @@ -559,6 +559,8 @@ private void CompleteStream(bool errored) TryClose(); } + _http3Output.Complete(); + // Stream will be pooled after app completed. // Wait to signal app completed after any potential aborts on the stream. _appCompletedTaskSource.SetResult(null); diff --git a/src/Servers/Kestrel/Transport.Sockets/src/Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets.csproj b/src/Servers/Kestrel/Transport.Sockets/src/Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets.csproj index 9258e26fcba1..055f5f8e297e 100644 --- a/src/Servers/Kestrel/Transport.Sockets/src/Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets.csproj +++ b/src/Servers/Kestrel/Transport.Sockets/src/Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets.csproj @@ -44,5 +44,6 @@ + diff --git a/src/Servers/Kestrel/test/Interop.FunctionalTests/Http3/Http3RequestTests.cs b/src/Servers/Kestrel/test/Interop.FunctionalTests/Http3/Http3RequestTests.cs index 1c71550c2a68..180664d7c136 100644 --- a/src/Servers/Kestrel/test/Interop.FunctionalTests/Http3/Http3RequestTests.cs +++ b/src/Servers/Kestrel/test/Interop.FunctionalTests/Http3/Http3RequestTests.cs @@ -1,6 +1,7 @@ // Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. +using System.Buffers; using System.Diagnostics; using System.Diagnostics.Metrics; using System.Net; @@ -1143,6 +1144,137 @@ public async Task POST_Bidirectional_LargeData_Cancellation_Error(HttpProtocols } } + internal class MemoryPoolFeature : IMemoryPoolFeature + { + public MemoryPool MemoryPool { get; set; } + } + + [ConditionalTheory] + [MsQuicSupported] + [InlineData(HttpProtocols.Http3)] + [InlineData(HttpProtocols.Http2)] + public async Task ApplicationWriteWhenConnectionClosesPreservesMemory(HttpProtocols protocol) + { + // Arrange + var memoryPool = new DiagnosticMemoryPool(new PinnedBlockMemoryPool(), allowLateReturn: true); + + var writingTcs = new TaskCompletionSource(TaskCreationOptions.RunContinuationsAsynchronously); + var cancelTcs = new TaskCompletionSource(TaskCreationOptions.RunContinuationsAsynchronously); + var completionTcs = new TaskCompletionSource(TaskCreationOptions.RunContinuationsAsynchronously); + + var builder = CreateHostBuilder(async context => + { + try + { + var requestBody = context.Request.Body; + + await context.Response.BodyWriter.FlushAsync(); + + // Test relies on Htt2Stream/Http3Stream aborting the token after stopping Http2OutputProducer/Http3OutputProducer + // It's very fragile but it is sort of a best effort test anyways + // Additionally, Http2 schedules it's stopping, so doesn't directly do anything to the PipeWriter when calling stop on Http2OutputProducer + context.RequestAborted.Register(() => + { + cancelTcs.SetResult(); + }); + + while (true) + { + var memory = context.Response.BodyWriter.GetMemory(); + + // Unblock client-side to close the connection + writingTcs.TrySetResult(); + + await cancelTcs.Task; + + // Verify memory is still rented from the memory pool after the producer has been stopped + Assert.True(memoryPool.ContainsMemory(memory)); + + context.Response.BodyWriter.Advance(memory.Length); + var flushResult = await context.Response.BodyWriter.FlushAsync(); + + if (flushResult.IsCanceled || flushResult.IsCompleted) + { + break; + } + } + + completionTcs.SetResult(); + } + catch (Exception ex) + { + writingTcs.TrySetException(ex); + // Exceptions annoyingly don't show up on the client side when doing E2E + cancellation testing + // so we need to use a TCS to observe any unexpected errors + completionTcs.TrySetException(ex); + throw; + } + }, protocol: protocol, + configureKestrel: o => + { + o.Listen(IPAddress.Parse("127.0.0.1"), 0, listenOptions => + { + listenOptions.Protocols = protocol; + listenOptions.UseHttps(TestResources.GetTestCertificate()).Use(@delegate => + { + // Connection middleware for Http/1.1 and Http/2 + return (context) => + { + // Set the memory pool used by the connection so we can observe if memory from the PipeWriter is still rented from the pool + context.Features.Set(new MemoryPoolFeature() { MemoryPool = memoryPool }); + return @delegate(context); + }; + }); + + IMultiplexedConnectionBuilder multiplexedConnectionBuilder = listenOptions; + multiplexedConnectionBuilder.Use(@delegate => + { + // Connection middleware for Http/3 + return (context) => + { + // Set the memory pool used by the connection so we can observe if memory from the PipeWriter is still rented from the pool + context.Features.Set(new MemoryPoolFeature() { MemoryPool = memoryPool }); + return @delegate(context); + }; + }); + }); + }); + + var httpClientHandler = new HttpClientHandler(); + httpClientHandler.ServerCertificateCustomValidationCallback = HttpClientHandler.DangerousAcceptAnyServerCertificateValidator; + + using (var host = builder.Build()) + using (var client = new HttpClient(httpClientHandler)) + { + await host.StartAsync().DefaultTimeout(); + + var cts = new CancellationTokenSource(); + + var request = new HttpRequestMessage(HttpMethod.Post, $"https://127.0.0.1:{host.GetPort()}/"); + request.Version = GetProtocol(protocol); + request.VersionPolicy = HttpVersionPolicy.RequestVersionExact; + + // Act + var responseTask = client.SendAsync(request, HttpCompletionOption.ResponseHeadersRead); + + Logger.LogInformation("Client waiting for headers."); + var response = await responseTask.DefaultTimeout(); + await writingTcs.Task; + + Logger.LogInformation("Client canceled request."); + response.Dispose(); + + // Assert + await host.StopAsync().DefaultTimeout(); + + await completionTcs.Task; + + memoryPool.Dispose(); + + await memoryPool.WhenAllBlocksReturnedAsync(TimeSpan.FromSeconds(15)); + } + } + // Verify HTTP/2 and HTTP/3 match behavior [ConditionalTheory] [MsQuicSupported] diff --git a/src/Shared/Buffers.MemoryPool/DiagnosticMemoryPool.cs b/src/Shared/Buffers.MemoryPool/DiagnosticMemoryPool.cs index 5c7f2cd686ae..32e3ab4b2189 100644 --- a/src/Shared/Buffers.MemoryPool/DiagnosticMemoryPool.cs +++ b/src/Shared/Buffers.MemoryPool/DiagnosticMemoryPool.cs @@ -162,4 +162,27 @@ public async Task WhenAllBlocksReturnedAsync(TimeSpan timeout) await task; } + + public bool ContainsMemory(Memory memory) + { + lock (_syncObj) + { + foreach (var block in _blocks) + { + unsafe + { + fixed (byte* inUseMemoryPtr = memory.Span) + fixed (byte* beginPooledMemoryPtr = block.Memory.Span) + { + byte* endPooledMemoryPtr = beginPooledMemoryPtr + block.Memory.Length; + if (inUseMemoryPtr >= beginPooledMemoryPtr && inUseMemoryPtr < endPooledMemoryPtr) + { + return true; + } + } + } + } + return false; + } + } } From 16374e2c46b0f44be608b51ab81e2c581e6543c5 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 12 Aug 2024 10:11:55 -0700 Subject: [PATCH 255/391] Add support for Chromium Snap cert trust (#57257) I thought this already worked, but it turns out it behaves differently depending on how you launch it. When it is launched as a snap (vs from the command line), it can only access things in its own folder, so it looks in a different NSS DB for trusted certs. Fixing this is as simple as adding one more well-known location to the list. Co-authored-by: Andrew Casey --- .../UnixCertificateManager.cs | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/src/Shared/CertificateGeneration/UnixCertificateManager.cs b/src/Shared/CertificateGeneration/UnixCertificateManager.cs index 209da55e80c4..1febba391529 100644 --- a/src/Shared/CertificateGeneration/UnixCertificateManager.cs +++ b/src/Shared/CertificateGeneration/UnixCertificateManager.cs @@ -476,6 +476,11 @@ private static string GetChromiumNssDb(string homeDirectory) return Path.Combine(homeDirectory, ".pki", "nssdb"); } + private static string GetChromiumSnapNssDb(string homeDirectory) + { + return Path.Combine(homeDirectory, "snap", "chromium", "current", ".pki", "nssdb"); + } + private static string GetFirefoxDirectory(string homeDirectory) { return Path.Combine(homeDirectory, ".mozilla", "firefox"); @@ -732,13 +737,21 @@ private static List GetNssDbs(string homeDirectory) return nssDbs; } - // Chrome, Chromium, Edge, and their respective snaps all use this directory + // Chrome, Chromium, and Edge all use this directory var chromiumNssDb = GetChromiumNssDb(homeDirectory); if (Directory.Exists(chromiumNssDb)) { nssDbs.Add(new NssDb(chromiumNssDb, isFirefox: false)); } + // Chromium Snap, when launched under snap confinement, uses this directory + // (On Ubuntu, the GUI launcher uses confinement, but the terminal does not) + var chromiumSnapNssDb = GetChromiumSnapNssDb(homeDirectory); + if (Directory.Exists(chromiumSnapNssDb)) + { + nssDbs.Add(new NssDb(chromiumSnapNssDb, isFirefox: false)); + } + var firefoxDir = GetFirefoxDirectory(homeDirectory); if (Directory.Exists(firefoxDir)) { From f85f009366c3f42eb7860cc70eda4dc23dbde69e Mon Sep 17 00:00:00 2001 From: Aditya Mandaleeka Date: Mon, 12 Aug 2024 11:46:03 -0700 Subject: [PATCH 256/391] [8.0] Optionally respect HTTP/1.0 keep-Alive for HTTP.sys (#57182) * Optionally respect HTTP/1.0 Keep-Alive for HTTP.sys. * Update test to account for switch. * Simplify. * Remove extraneous parens. * Move setting to HttpSysOptions for improved testability. * Add comment about internal field --- src/Servers/HttpSys/src/HttpSysOptions.cs | 5 ++ .../HttpSys/src/RequestProcessing/Response.cs | 18 +++- .../Listener/ResponseHeaderTests.cs | 88 ++++++++++++++++++- .../FunctionalTests/Listener/Utilities.cs | 7 +- src/Shared/HttpSys/Constants.cs | 1 + 5 files changed, 111 insertions(+), 8 deletions(-) diff --git a/src/Servers/HttpSys/src/HttpSysOptions.cs b/src/Servers/HttpSys/src/HttpSysOptions.cs index 44bc0bc5faa8..87fb1ba6d176 100644 --- a/src/Servers/HttpSys/src/HttpSysOptions.cs +++ b/src/Servers/HttpSys/src/HttpSysOptions.cs @@ -29,6 +29,11 @@ public class HttpSysOptions private long? _maxRequestBodySize = DefaultMaxRequestBodySize; private string? _requestQueueName; + private const string RespectHttp10KeepAliveSwitch = "Microsoft.AspNetCore.Server.HttpSys.RespectHttp10KeepAlive"; + + // Internal for testing + internal bool RespectHttp10KeepAlive = AppContext.TryGetSwitch(RespectHttp10KeepAliveSwitch, out var enabled) && enabled; + /// /// Initializes a new . /// diff --git a/src/Servers/HttpSys/src/RequestProcessing/Response.cs b/src/Servers/HttpSys/src/RequestProcessing/Response.cs index b10de647511d..e080698ea871 100644 --- a/src/Servers/HttpSys/src/RequestProcessing/Response.cs +++ b/src/Servers/HttpSys/src/RequestProcessing/Response.cs @@ -30,6 +30,7 @@ internal sealed class Response private BoundaryType _boundaryType; private HttpApiTypes.HTTP_RESPONSE_V2 _nativeResponse; private HeaderCollection? _trailers; + private readonly bool _respectHttp10KeepAlive; internal Response(RequestContext requestContext) { @@ -51,6 +52,7 @@ internal Response(RequestContext requestContext) _nativeStream = null; _cacheTtl = null; _authChallenges = RequestContext.Server.Options.Authentication.Schemes; + _respectHttp10KeepAlive = RequestContext.Server.Options.RespectHttp10KeepAlive; } private enum ResponseState @@ -390,6 +392,7 @@ internal HttpApiTypes.HTTP_FLAGS ComputeHeaders(long writeCount, bool endOfReque var requestConnectionString = Request.Headers[HeaderNames.Connection]; var isHeadRequest = Request.IsHeadMethod; var requestCloseSet = Matches(Constants.Close, requestConnectionString); + var requestConnectionKeepAliveSet = Matches(Constants.KeepAlive, requestConnectionString); // Gather everything the app may have set on the response: // Http.Sys does not allow us to specify the response protocol version, assume this is a HTTP/1.1 response when making decisions. @@ -402,12 +405,25 @@ internal HttpApiTypes.HTTP_FLAGS ComputeHeaders(long writeCount, bool endOfReque // Determine if the connection will be kept alive or closed. var keepConnectionAlive = true; - if (requestVersion <= Constants.V1_0 // Http.Sys does not support "Keep-Alive: true" or "Connection: Keep-Alive" + + if (requestVersion < Constants.V1_0 || (requestVersion == Constants.V1_1 && requestCloseSet) || responseCloseSet) { keepConnectionAlive = false; } + else if (requestVersion == Constants.V1_0) + { + // In .NET 9, we updated the behavior for 1.0 clients here to match + // RFC 2068. The new behavior is available down-level behind an + // AppContext switch. + + // An HTTP/1.1 server may also establish persistent connections with + // HTTP/1.0 clients upon receipt of a Keep-Alive connection token. + // However, a persistent connection with an HTTP/1.0 client cannot make + // use of the chunked transfer-coding. From: https://www.rfc-editor.org/rfc/rfc2068#section-19.7.1 + keepConnectionAlive = _respectHttp10KeepAlive && requestConnectionKeepAliveSet && !responseChunkedSet; + } // Determine the body format. If the user asks to do something, let them, otherwise choose a good default for the scenario. if (responseContentLength.HasValue) diff --git a/src/Servers/HttpSys/test/FunctionalTests/Listener/ResponseHeaderTests.cs b/src/Servers/HttpSys/test/FunctionalTests/Listener/ResponseHeaderTests.cs index 4ceb2d4c6bc2..f7213a212879 100644 --- a/src/Servers/HttpSys/test/FunctionalTests/Listener/ResponseHeaderTests.cs +++ b/src/Servers/HttpSys/test/FunctionalTests/Listener/ResponseHeaderTests.cs @@ -6,6 +6,7 @@ using System.Linq; using System.Net; using System.Net.Http; +using System.Net.Sockets; using System.Text; using System.Threading.Tasks; using Microsoft.AspNetCore.Testing; @@ -207,20 +208,83 @@ public async Task ResponseHeaders_11HeadRequestStatusCodeWithoutBody_NoContentLe } [ConditionalFact] - public async Task ResponseHeaders_HTTP10KeepAliveRequest_Gets11Close() + public async Task ResponseHeaders_HTTP10KeepAliveRequest_KeepAliveHeader_RespectsSwitch() + { + string address; + using (var server = Utilities.CreateHttpServer(out address, respectHttp10KeepAlive: true)) + { + // Track the number of times ConnectCallback is invoked to ensure the underlying socket wasn't closed. + int connectCallbackInvocations = 0; + var handler = new SocketsHttpHandler(); + handler.ConnectCallback = (context, cancellationToken) => + { + Interlocked.Increment(ref connectCallbackInvocations); + return ConnectCallback(context, cancellationToken); + }; + + using (var client = new HttpClient(handler)) + { + // Send the first request + Task responseTask = SendRequestAsync(address, usehttp11: false, sendKeepAlive: true, httpClient: client); + var context = await server.AcceptAsync(Utilities.DefaultTimeout).Before(responseTask); + context.Dispose(); + + HttpResponseMessage response = await responseTask; + response.EnsureSuccessStatusCode(); + Assert.Equal(new Version(1, 1), response.Version); + Assert.Null(response.Headers.ConnectionClose); + + // Send the second request + responseTask = SendRequestAsync(address, usehttp11: false, sendKeepAlive: true, httpClient: client); + context = await server.AcceptAsync(Utilities.DefaultTimeout).Before(responseTask); + context.Dispose(); + + response = await responseTask; + response.EnsureSuccessStatusCode(); + Assert.Equal(new Version(1, 1), response.Version); + Assert.Null(response.Headers.ConnectionClose); + } + + // Verify that ConnectCallback was only called once + Assert.Equal(1, connectCallbackInvocations); + } + + using (var server = Utilities.CreateHttpServer(out address, respectHttp10KeepAlive: false)) + { + var handler = new SocketsHttpHandler(); + using (var client = new HttpClient(handler)) + { + // Send the first request + Task responseTask = SendRequestAsync(address, usehttp11: false, sendKeepAlive: true, httpClient: client); + var context = await server.AcceptAsync(Utilities.DefaultTimeout).Before(responseTask); + context.Dispose(); + + HttpResponseMessage response = await responseTask; + response.EnsureSuccessStatusCode(); + Assert.Equal(new Version(1, 1), response.Version); + Assert.True(response.Headers.ConnectionClose.Value); + } + } + } + + [ConditionalFact] + public async Task ResponseHeaders_HTTP10KeepAliveRequest_ChunkedTransferEncoding_Gets11Close() { string address; using (var server = Utilities.CreateHttpServer(out address)) { - // Http.Sys does not support 1.0 keep-alives. Task responseTask = SendRequestAsync(address, usehttp11: false, sendKeepAlive: true); var context = await server.AcceptAsync(Utilities.DefaultTimeout).Before(responseTask); + context.Response.Headers["Transfer-Encoding"] = new string[] { "chunked" }; + var responseBytes = Encoding.ASCII.GetBytes("10\r\nManually Chunked\r\n0\r\n\r\n"); + await context.Response.Body.WriteAsync(responseBytes, 0, responseBytes.Length); context.Dispose(); HttpResponseMessage response = await responseTask; response.EnsureSuccessStatusCode(); Assert.Equal(new Version(1, 1), response.Version); + Assert.True(response.Headers.TransferEncodingChunked.HasValue, "Chunked"); Assert.True(response.Headers.ConnectionClose.Value); } } @@ -289,8 +353,9 @@ public async Task AddingControlCharactersToHeadersThrows(string key, string valu } } - private async Task SendRequestAsync(string uri, bool usehttp11 = true, bool sendKeepAlive = false) + private async Task SendRequestAsync(string uri, bool usehttp11 = true, bool sendKeepAlive = false, HttpClient httpClient = null) { + httpClient ??= _client; var request = new HttpRequestMessage(HttpMethod.Get, uri); if (!usehttp11) { @@ -300,7 +365,7 @@ private async Task SendRequestAsync(string uri, bool usehtt { request.Headers.Add("Connection", "Keep-Alive"); } - return await _client.SendAsync(request); + return await httpClient.SendAsync(request); } private async Task SendHeadRequestAsync(string uri, bool usehttp11 = true) @@ -312,4 +377,19 @@ private async Task SendHeadRequestAsync(string uri, bool us } return await _client.SendAsync(request); } + + private static async ValueTask ConnectCallback(SocketsHttpConnectionContext connectContext, CancellationToken ct) + { + var s = new Socket(SocketType.Stream, ProtocolType.Tcp) { NoDelay = true }; + try + { + await s.ConnectAsync(connectContext.DnsEndPoint, ct); + return new NetworkStream(s, ownsSocket: true); + } + catch + { + s.Dispose(); + throw; + } + } } diff --git a/src/Servers/HttpSys/test/FunctionalTests/Listener/Utilities.cs b/src/Servers/HttpSys/test/FunctionalTests/Listener/Utilities.cs index b7ca7e33df85..d8131af17223 100644 --- a/src/Servers/HttpSys/test/FunctionalTests/Listener/Utilities.cs +++ b/src/Servers/HttpSys/test/FunctionalTests/Listener/Utilities.cs @@ -22,10 +22,10 @@ internal static class Utilities internal static readonly TimeSpan DefaultTimeout = TimeSpan.FromSeconds(15); - internal static HttpSysListener CreateHttpServer(out string baseAddress) + internal static HttpSysListener CreateHttpServer(out string baseAddress, bool respectHttp10KeepAlive = false) { string root; - return CreateDynamicHttpServer(string.Empty, out root, out baseAddress); + return CreateDynamicHttpServer(string.Empty, out root, out baseAddress, respectHttp10KeepAlive); } internal static HttpSysListener CreateHttpServerReturnRoot(string path, out string root) @@ -34,7 +34,7 @@ internal static HttpSysListener CreateHttpServerReturnRoot(string path, out stri return CreateDynamicHttpServer(path, out root, out baseAddress); } - internal static HttpSysListener CreateDynamicHttpServer(string basePath, out string root, out string baseAddress) + internal static HttpSysListener CreateDynamicHttpServer(string basePath, out string root, out string baseAddress, bool respectHttp10KeepAlive = false) { lock (PortLock) { @@ -47,6 +47,7 @@ internal static HttpSysListener CreateDynamicHttpServer(string basePath, out str var options = new HttpSysOptions(); options.UrlPrefixes.Add(prefix); options.RequestQueueName = prefix.Port; // Convention for use with CreateServerOnExistingQueue + options.RespectHttp10KeepAlive = respectHttp10KeepAlive; var listener = new HttpSysListener(options, new LoggerFactory()); try { diff --git a/src/Shared/HttpSys/Constants.cs b/src/Shared/HttpSys/Constants.cs index 2d5695ef4155..c3c85e26e1f9 100644 --- a/src/Shared/HttpSys/Constants.cs +++ b/src/Shared/HttpSys/Constants.cs @@ -11,6 +11,7 @@ internal static class Constants internal const string HttpsScheme = "https"; internal const string Chunked = "chunked"; internal const string Close = "close"; + internal const string KeepAlive = "keep-alive"; internal const string Zero = "0"; internal const string SchemeDelimiter = "://"; internal const string DefaultServerAddress = "http://localhost:5000/"; From a4e58142b804e66d250b7b23b62feed06420db20 Mon Sep 17 00:00:00 2001 From: wtgodbe Date: Tue, 13 Aug 2024 12:03:34 -0700 Subject: [PATCH 257/391] Update baseline, SDK --- eng/Baseline.Designer.props | 426 ++++++++++++++++++------------------ eng/Baseline.xml | 212 +++++++++--------- eng/Versions.props | 2 +- global.json | 4 +- 4 files changed, 322 insertions(+), 322 deletions(-) diff --git a/eng/Baseline.Designer.props b/eng/Baseline.Designer.props index b2617286135b..fdced6323d23 100644 --- a/eng/Baseline.Designer.props +++ b/eng/Baseline.Designer.props @@ -2,117 +2,117 @@ $(MSBuildAllProjects);$(MSBuildThisFileFullPath) - 8.0.7 + 8.0.8 - 8.0.7 + 8.0.8 - 8.0.7 + 8.0.8 - 8.0.7 + 8.0.8 - 8.0.7 + 8.0.8 - 8.0.7 + 8.0.8 - 8.0.7 + 8.0.8 - 8.0.7 + 8.0.8 - 8.0.7 + 8.0.8 - 8.0.7 + 8.0.8 - 8.0.7 + 8.0.8 - 8.0.7 + 8.0.8 - 8.0.7 + 8.0.8 - 8.0.7 + 8.0.8 - 8.0.7 + 8.0.8 - 8.0.7 + 8.0.8 - 8.0.7 + 8.0.8 - 8.0.7 + 8.0.8 - 8.0.7 + 8.0.8 - 8.0.7 + 8.0.8 - 8.0.7 + 8.0.8 - 8.0.7 + 8.0.8 - + - 8.0.7 + 8.0.8 - 8.0.7 + 8.0.8 - 8.0.7 + 8.0.8 @@ -120,138 +120,138 @@ - 8.0.7 + 8.0.8 - + - + - + - 8.0.7 + 8.0.8 - + - 8.0.7 + 8.0.8 - 8.0.7 + 8.0.8 - + - 8.0.7 + 8.0.8 - - + + - 8.0.7 + 8.0.8 - 8.0.7 + 8.0.8 - - + + - 8.0.7 + 8.0.8 - + - 8.0.7 + 8.0.8 - + - 8.0.7 + 8.0.8 - + - 8.0.7 + 8.0.8 - - + + - 8.0.7 + 8.0.8 - - - + + + - 8.0.7 + 8.0.8 - - + + - 8.0.7 + 8.0.8 - - + + - 8.0.7 + 8.0.8 - 8.0.7 + 8.0.8 - 8.0.7 + 8.0.8 - - + + @@ -259,7 +259,7 @@ - 8.0.7 + 8.0.8 @@ -268,51 +268,51 @@ - 8.0.7 + 8.0.8 - + - + - + - + - 8.0.7 + 8.0.8 - 8.0.7 + 8.0.8 - + - + - + - 8.0.7 + 8.0.8 - - + + @@ -322,8 +322,8 @@ - - + + @@ -331,8 +331,8 @@ - - + + @@ -343,58 +343,58 @@ - 8.0.7 + 8.0.8 - 8.0.7 + 8.0.8 - - + + - 8.0.7 + 8.0.8 - + - + - + - 8.0.7 + 8.0.8 - + - + - + - 8.0.7 + 8.0.8 - + - 8.0.7 + 8.0.8 @@ -403,7 +403,7 @@ - 8.0.7 + 8.0.8 @@ -411,71 +411,71 @@ - 8.0.7 + 8.0.8 - 8.0.7 + 8.0.8 - + - + - + - + - 8.0.7 + 8.0.8 - + - + - + - 8.0.7 + 8.0.8 - - + + - 8.0.7 + 8.0.8 - - + + - 8.0.7 + 8.0.8 @@ -491,27 +491,27 @@ - 8.0.7 + 8.0.8 - 8.0.7 + 8.0.8 - 8.0.7 + 8.0.8 - + - 8.0.7 + 8.0.8 @@ -520,23 +520,23 @@ - 8.0.7 + 8.0.8 - + - 8.0.7 + 8.0.8 - 8.0.7 + 8.0.8 @@ -545,54 +545,54 @@ - 8.0.7 + 8.0.8 - 8.0.7 + 8.0.8 - - + + - - + + - - + + - 8.0.7 + 8.0.8 - - + + - - + + - - + + - - + + @@ -600,83 +600,83 @@ - 8.0.7 + 8.0.8 - + - + - + - 8.0.7 + 8.0.8 - + - + - + - 8.0.7 + 8.0.8 - + - + - + - 8.0.7 + 8.0.8 - + - + - + - 8.0.7 + 8.0.8 - - - - + + + + - 8.0.7 + 8.0.8 @@ -685,64 +685,64 @@ - 8.0.7 + 8.0.8 - 8.0.7 + 8.0.8 - 8.0.7 + 8.0.8 - 8.0.7 + 8.0.8 - + - 8.0.7 + 8.0.8 - + - 8.0.7 + 8.0.8 - 8.0.7 + 8.0.8 - 8.0.7 + 8.0.8 - 8.0.7 + 8.0.8 - 8.0.7 + 8.0.8 - 8.0.7 + 8.0.8 - 8.0.7 + 8.0.8 @@ -764,7 +764,7 @@ - 8.0.7 + 8.0.8 @@ -786,7 +786,7 @@ - 8.0.7 + 8.0.8 @@ -802,23 +802,23 @@ - 8.0.7 + 8.0.8 - + - + - + @@ -826,24 +826,24 @@ - 8.0.7 + 8.0.8 - 8.0.7 + 8.0.8 - - - + + + - 8.0.7 + 8.0.8 - 8.0.7 + 8.0.8 @@ -853,7 +853,7 @@ - 8.0.7 + 8.0.8 @@ -862,73 +862,73 @@ - 8.0.7 + 8.0.8 - + - + - + - 8.0.7 + 8.0.8 - + - + - + - 8.0.7 + 8.0.8 - + - + - + - 8.0.7 + 8.0.8 - 8.0.7 + 8.0.8 @@ -957,11 +957,11 @@ - 8.0.7 + 8.0.8 - 8.0.7 + 8.0.8 @@ -979,18 +979,18 @@ - 8.0.7 + 8.0.8 - 8.0.7 + 8.0.8 - + - 8.0.7 + 8.0.8 diff --git a/eng/Baseline.xml b/eng/Baseline.xml index 389370e6e631..199a62d5c74a 100644 --- a/eng/Baseline.xml +++ b/eng/Baseline.xml @@ -4,110 +4,110 @@ This file contains a list of all the packages and their versions which were rele Update this list when preparing for a new patch. --> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/eng/Versions.props b/eng/Versions.props index 0cbb1126ae59..0bad19477ad8 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -11,7 +11,7 @@ 9 - false + true 7.1.2 *-* - + + - + @@ -35,15 +36,16 @@ - + - + + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 92d64fac4478..4482bad0e1b1 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -9,37 +9,37 @@ --> - + https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 90d079985f33ae91c05b98ecf65e0ce38270ba55 + b3b11c6372e4738488d477cf532260bd49652c2a - + https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 90d079985f33ae91c05b98ecf65e0ce38270ba55 + b3b11c6372e4738488d477cf532260bd49652c2a - + https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 90d079985f33ae91c05b98ecf65e0ce38270ba55 + b3b11c6372e4738488d477cf532260bd49652c2a - + https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 90d079985f33ae91c05b98ecf65e0ce38270ba55 + b3b11c6372e4738488d477cf532260bd49652c2a - + https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 90d079985f33ae91c05b98ecf65e0ce38270ba55 + b3b11c6372e4738488d477cf532260bd49652c2a - + https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 90d079985f33ae91c05b98ecf65e0ce38270ba55 + b3b11c6372e4738488d477cf532260bd49652c2a - + https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 90d079985f33ae91c05b98ecf65e0ce38270ba55 + b3b11c6372e4738488d477cf532260bd49652c2a - + https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 90d079985f33ae91c05b98ecf65e0ce38270ba55 + b3b11c6372e4738488d477cf532260bd49652c2a https://dev.azure.com/dnceng/internal/_git/dotnet-runtime @@ -121,9 +121,9 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime 5535e31a712343a63f5d7d796cd874e563e5ac14 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 08338fcaa5c9b9a8190abb99222fed12aaba956c + 778f78e8d112bd476109a4e3613eeb8edbfd380d https://dev.azure.com/dnceng/internal/_git/dotnet-runtime @@ -185,9 +185,9 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime 5535e31a712343a63f5d7d796cd874e563e5ac14 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 08338fcaa5c9b9a8190abb99222fed12aaba956c + 778f78e8d112bd476109a4e3613eeb8edbfd380d https://github.com/dotnet/source-build-externals @@ -207,9 +207,9 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime 2d7eea252964e69be94cb9c847b371b23e4dd470 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 5535e31a712343a63f5d7d796cd874e563e5ac14 + 778f78e8d112bd476109a4e3613eeb8edbfd380d https://dev.azure.com/dnceng/internal/_git/dotnet-runtime @@ -225,7 +225,7 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 08338fcaa5c9b9a8190abb99222fed12aaba956c + 05e0f2d2c881def48961d3b83fa11ae84df8e534 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime @@ -275,17 +275,17 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime 2aade6beb02ea367fd97c4070a4198802fe61c03 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 08338fcaa5c9b9a8190abb99222fed12aaba956c + 778f78e8d112bd476109a4e3613eeb8edbfd380d - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 08338fcaa5c9b9a8190abb99222fed12aaba956c + 778f78e8d112bd476109a4e3613eeb8edbfd380d - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 08338fcaa5c9b9a8190abb99222fed12aaba956c + 778f78e8d112bd476109a4e3613eeb8edbfd380d https://dev.azure.com/dnceng/internal/_git/dotnet-runtime @@ -316,22 +316,22 @@ Win-x64 is used here because we have picked an arbitrary runtime identifier to flow the version of the latest NETCore.App runtime. All Runtime.$rid packages should have the same version. --> - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 08338fcaa5c9b9a8190abb99222fed12aaba956c + 778f78e8d112bd476109a4e3613eeb8edbfd380d - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 08338fcaa5c9b9a8190abb99222fed12aaba956c + 778f78e8d112bd476109a4e3613eeb8edbfd380d - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 08338fcaa5c9b9a8190abb99222fed12aaba956c + 778f78e8d112bd476109a4e3613eeb8edbfd380d - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 08338fcaa5c9b9a8190abb99222fed12aaba956c + 778f78e8d112bd476109a4e3613eeb8edbfd380d https://github.com/dotnet/xdt @@ -368,9 +368,9 @@ - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 08338fcaa5c9b9a8190abb99222fed12aaba956c + 778f78e8d112bd476109a4e3613eeb8edbfd380d https://github.com/dotnet/winforms diff --git a/eng/Versions.props b/eng/Versions.props index 0bad19477ad8..02eda9b286be 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -67,12 +67,12 @@ 8.0.1 - 8.0.8 - 8.0.8 - 8.0.8 - 8.0.8 - 8.0.8 - 8.0.8-servicing.24366.12 + 8.0.9 + 8.0.9 + 8.0.9 + 8.0.9 + 8.0.9 + 8.0.9-servicing.24413.10 8.0.0 8.0.0 8.0.0 @@ -93,7 +93,7 @@ 8.0.0 8.0.0 8.0.0 - 8.0.8-servicing.24366.12 + 8.0.9-servicing.24413.10 8.0.0 8.0.0 8.0.0 @@ -109,10 +109,10 @@ 8.0.0 8.0.2 8.0.0 - 8.0.8-servicing.24366.12 + 8.0.9-servicing.24413.10 8.0.0 8.0.1 - 8.0.0 + 8.0.1 8.0.0 8.0.0-rtm.23520.14 8.0.0 @@ -129,9 +129,9 @@ 8.0.0 8.0.0 8.0.0 - 8.0.8-servicing.24366.12 + 8.0.9-servicing.24413.10 - 8.0.8-servicing.24366.12 + 8.0.9-servicing.24413.10 8.0.0 8.0.1 @@ -143,14 +143,14 @@ 8.1.0-preview.23604.1 8.1.0-preview.23604.1 - 8.0.8 - 8.0.8 - 8.0.8 - 8.0.8 - 8.0.8 - 8.0.8 - 8.0.8 - 8.0.8 + 8.0.9 + 8.0.9 + 8.0.9 + 8.0.9 + 8.0.9 + 8.0.9 + 8.0.9 + 8.0.9 4.8.0-3.23518.7 4.8.0-3.23518.7 From 23b93b402cc7df84a0a21b24d0f542a1dd3d96f2 Mon Sep 17 00:00:00 2001 From: maestro-prod-Primary Date: Fri, 16 Aug 2024 17:07:43 +0000 Subject: [PATCH 259/391] Merged PR 41781: [internal/release/8.0] Update dependencies from dnceng/internal/dotnet-efcore, dnceng/internal/dotnet-runtime This pull request updates the following dependencies [marker]: <> (Begin:83131e87-e80d-4d5b-f426-08dbd53b3319) ## From https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - **Subscription**: 83131e87-e80d-4d5b-f426-08dbd53b3319 - **Build**: 20240815.9 - **Date Produced**: August 16, 2024 2:25:38 AM UTC - **Commit**: 3c8202d88deea14a87c7665190286d2a67e464c0 - **Branch**: refs/heads/internal/release/8.0 [DependencyUpdate]: <> (Begin) - **Updates**: - **Microsoft.Extensions.HostFactoryResolver.Sources**: [from 8.0.9-servicing.24413.10 to 8.0.9-servicing.24415.9][1] - **Microsoft.Internal.Runtime.AspNetCore.Transport**: [from 8.0.9-servicing.24413.10 to 8.0.9-servicing.24415.9][1] - **Microsoft.NET.Runtime.MonoAOTCompiler.Task**: [from 8.0.9 to 8.0.9][1] - **Microsoft.NET.Runtime.WebAssembly.Sdk**: [from 8.0.9 to 8.0.9][1] - **Microsoft.NETCore.App.Ref**: [from 8.0.9 to 8.0.9][1] - **Microsoft.NETCore.App.Runtime.AOT.win-x64.Cross.browser-wasm**: [from 8.0.9 to 8.0.9][1] - **Microsoft.NETCore.App.Runtime.win-x64**: [from 8.0.9 to 8.0.9][1] - **Microsoft.NETCore.BrowserDebugHost.Transport**: [from 8.0.9-servicing.24413.10 to 8.0.9-servicing.24415.9][1] - **Microsoft.NETCore.Platforms**: [from 8.0.9-servicing.24413.10 to 8.0.9-servicing.24415.9][1] - **System.Diagnostics.EventLog**: [from 8.0.1 to 8.0.1][1] - **Microsoft.SourceBuild.Intermediate.runtime.linux-x64**: [from 8.0.9-servicing.24413.10 to 8.0.9-servicing.24415.9][1] [1]: https://dev.azure.com/dnceng/internal/_git/dotnet-runtime/branches?baseVersion=GC778f78e8d112bd476109a4e3613eeb8edbfd380d&targetVersion=GC3c8202d88deea14a87c7665190286d2a67e464c0&_a=files [DependencyUpdate]: <> (End) [marker]: <> (End:83131e87-e80d-4d5b-f426-08dbd53b3319) [marker]: <> (Begin:e179a2a7-bc5d-4498-2467-08dbd53ba9ce) ## From https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - **Subscription**: e179a2a7-bc5d-4498-2467-08dbd53ba9ce - **Build**: 20240816.1 - **Date Produced**: August 16, 2024 4:37:19 PM UTC - **Commit**: c740d3529b04a61639ea47307ad9924d739c73dd - **Branch**: refs/heads/internal/release/8.0 [DependencyUpdate]: <> (Begin) - **Updates**: - **dotnet-ef**: [from 8.0.9 to 8.0.9][2] - **Microsoft.EntityFrameworkCore**: [from 8.0.9 to 8.0.9][2] - **Microsoft.EntityFrameworkCore.Design**: [from 8.0.9 to 8.0.9][2] - **Microsoft.EntityFrameworkCore.InMemory**: [from 8.0.9 to 8.0.9][2] - **Microsoft.EntityFrameworkCore.Relational**: [from 8.0.9 to 8.0.9][2] - **Microsoft.EntityFrameworkCore.Sqlite**: [from 8.0.9 to 8.0.9][2] - **Microsoft.EntityFrameworkCore.SqlServer**: [from 8.0.9 to 8.0.9][2] - **Microsoft.EntityFrameworkCore.Tools**: [from 8.0.9 to 8.0.9][2] [2]: https://dev.azure.com/dnceng/internal/_git/dotnet-efcore/branches?baseVersion=GCb3b11c6372e4738488d477cf532260bd49652c2a&targetVersion=GCc740d3529b04a61639ea47307ad9924d739c73dd&_a=files [DependencyUpdate]: <> (End) [marker]... --- NuGet.config | 8 +++---- eng/Version.Details.xml | 48 ++++++++++++++++++++--------------------- eng/Versions.props | 10 ++++----- 3 files changed, 33 insertions(+), 33 deletions(-) diff --git a/NuGet.config b/NuGet.config index e626dc2a10b6..7bf7ffd67c8e 100644 --- a/NuGet.config +++ b/NuGet.config @@ -6,10 +6,10 @@ - + - + @@ -36,7 +36,7 @@ - + @@ -45,7 +45,7 @@ - + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 4482bad0e1b1..cbf3c0963b02 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -11,35 +11,35 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - b3b11c6372e4738488d477cf532260bd49652c2a + c740d3529b04a61639ea47307ad9924d739c73dd https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - b3b11c6372e4738488d477cf532260bd49652c2a + c740d3529b04a61639ea47307ad9924d739c73dd https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - b3b11c6372e4738488d477cf532260bd49652c2a + c740d3529b04a61639ea47307ad9924d739c73dd https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - b3b11c6372e4738488d477cf532260bd49652c2a + c740d3529b04a61639ea47307ad9924d739c73dd https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - b3b11c6372e4738488d477cf532260bd49652c2a + c740d3529b04a61639ea47307ad9924d739c73dd https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - b3b11c6372e4738488d477cf532260bd49652c2a + c740d3529b04a61639ea47307ad9924d739c73dd https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - b3b11c6372e4738488d477cf532260bd49652c2a + c740d3529b04a61639ea47307ad9924d739c73dd https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - b3b11c6372e4738488d477cf532260bd49652c2a + c740d3529b04a61639ea47307ad9924d739c73dd https://dev.azure.com/dnceng/internal/_git/dotnet-runtime @@ -121,9 +121,9 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime 5535e31a712343a63f5d7d796cd874e563e5ac14 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 778f78e8d112bd476109a4e3613eeb8edbfd380d + 3c8202d88deea14a87c7665190286d2a67e464c0 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime @@ -185,9 +185,9 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime 5535e31a712343a63f5d7d796cd874e563e5ac14 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 778f78e8d112bd476109a4e3613eeb8edbfd380d + 3c8202d88deea14a87c7665190286d2a67e464c0 https://github.com/dotnet/source-build-externals @@ -209,7 +209,7 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 778f78e8d112bd476109a4e3613eeb8edbfd380d + 3c8202d88deea14a87c7665190286d2a67e464c0 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime @@ -277,15 +277,15 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 778f78e8d112bd476109a4e3613eeb8edbfd380d + 3c8202d88deea14a87c7665190286d2a67e464c0 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 778f78e8d112bd476109a4e3613eeb8edbfd380d + 3c8202d88deea14a87c7665190286d2a67e464c0 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 778f78e8d112bd476109a4e3613eeb8edbfd380d + 3c8202d88deea14a87c7665190286d2a67e464c0 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime @@ -318,20 +318,20 @@ --> https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 778f78e8d112bd476109a4e3613eeb8edbfd380d + 3c8202d88deea14a87c7665190286d2a67e464c0 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 778f78e8d112bd476109a4e3613eeb8edbfd380d + 3c8202d88deea14a87c7665190286d2a67e464c0 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 778f78e8d112bd476109a4e3613eeb8edbfd380d + 3c8202d88deea14a87c7665190286d2a67e464c0 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 778f78e8d112bd476109a4e3613eeb8edbfd380d + 3c8202d88deea14a87c7665190286d2a67e464c0 https://github.com/dotnet/xdt @@ -368,9 +368,9 @@ - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 778f78e8d112bd476109a4e3613eeb8edbfd380d + 3c8202d88deea14a87c7665190286d2a67e464c0 https://github.com/dotnet/winforms diff --git a/eng/Versions.props b/eng/Versions.props index 02eda9b286be..1ff173a1a502 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -72,7 +72,7 @@ 8.0.9 8.0.9 8.0.9 - 8.0.9-servicing.24413.10 + 8.0.9-servicing.24415.9 8.0.0 8.0.0 8.0.0 @@ -93,7 +93,7 @@ 8.0.0 8.0.0 8.0.0 - 8.0.9-servicing.24413.10 + 8.0.9-servicing.24415.9 8.0.0 8.0.0 8.0.0 @@ -109,7 +109,7 @@ 8.0.0 8.0.2 8.0.0 - 8.0.9-servicing.24413.10 + 8.0.9-servicing.24415.9 8.0.0 8.0.1 8.0.1 @@ -129,9 +129,9 @@ 8.0.0 8.0.0 8.0.0 - 8.0.9-servicing.24413.10 + 8.0.9-servicing.24415.9 - 8.0.9-servicing.24413.10 + 8.0.9-servicing.24415.9 8.0.0 8.0.1 From e2272f2ec477de65dd14245e8aaf24ea687e4aba Mon Sep 17 00:00:00 2001 From: vseanreesermsft <78103370+vseanreesermsft@users.noreply.github.com> Date: Fri, 30 Aug 2024 11:51:53 -0700 Subject: [PATCH 260/391] Update branding to 8.0.10 (#57601) --- eng/Versions.props | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/eng/Versions.props b/eng/Versions.props index 0bad19477ad8..1c7487987fa9 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -8,10 +8,10 @@ 8 0 - 9 + 10 - true + false 7.1.2 *-* From baf82a19604e265a78ccbb6689be813cc9a0f3fc Mon Sep 17 00:00:00 2001 From: Andrew Casey Date: Fri, 30 Aug 2024 12:01:18 -0700 Subject: [PATCH 262/391] Upgrade ws 7 to 7.5.10 (#57411) --- src/Components/Web.JS/yarn.lock | 8 ++++---- src/SignalR/clients/ts/signalr/package.json | 2 +- src/SignalR/clients/ts/signalr/yarn.lock | 2 +- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/Components/Web.JS/yarn.lock b/src/Components/Web.JS/yarn.lock index 562138d40ea5..ce9623f9fce9 100644 --- a/src/Components/Web.JS/yarn.lock +++ b/src/Components/Web.JS/yarn.lock @@ -4536,10 +4536,10 @@ write-file-atomic@^4.0.2: imurmurhash "^0.1.4" signal-exit "^3.0.7" -ws@^7.4.5: - version "7.5.9" - resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/ws/-/ws-7.5.9.tgz#54fa7db29f4c7cec68b1ddd3a89de099942bb591" - integrity "sha1-VPp9sp9MfOxosd3TqJ3gmZQrtZE= sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==" +ws@^7.5.10: + version "7.5.10" + resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/ws/-/ws-7.5.10.tgz#58b5c20dc281633f6c19113f39b349bd8bd558d9" + integrity sha1-WLXCDcKBYz9sGRE/ObNJvYvVWNk= ws@^8.11.0: version "8.13.0" diff --git a/src/SignalR/clients/ts/signalr/package.json b/src/SignalR/clients/ts/signalr/package.json index 3a4f43382c3a..08c010e8937e 100644 --- a/src/SignalR/clients/ts/signalr/package.json +++ b/src/SignalR/clients/ts/signalr/package.json @@ -55,7 +55,7 @@ "eventsource": "^2.0.2", "fetch-cookie": "^2.0.3", "node-fetch": "^2.6.7", - "ws": "^7.4.5" + "ws": "^7.5.10" }, "resolutions": { "ansi-regex": "5.0.1" diff --git a/src/SignalR/clients/ts/signalr/yarn.lock b/src/SignalR/clients/ts/signalr/yarn.lock index 0bf87e376fc3..8f38487e607a 100644 --- a/src/SignalR/clients/ts/signalr/yarn.lock +++ b/src/SignalR/clients/ts/signalr/yarn.lock @@ -254,7 +254,7 @@ whatwg-url@^5.0.0: tr46 "~0.0.3" webidl-conversions "^3.0.0" -ws@^7.4.5: +ws@^7.5.10: version "7.5.10" resolved "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/ws/-/ws-7.5.10.tgz#58b5c20dc281633f6c19113f39b349bd8bd558d9" integrity sha1-WLXCDcKBYz9sGRE/ObNJvYvVWNk= From c4f6f2e496933e2e7e10aaf1d5eb63d7eb308dc3 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 30 Aug 2024 12:01:32 -0700 Subject: [PATCH 263/391] [release/8.0] (deps): Bump src/submodules/googletest (#57474) Bumps [src/submodules/googletest](https://github.com/google/googletest) from `3e3b44c` to `ff233bd`. - [Release notes](https://github.com/google/googletest/releases) - [Commits](https://github.com/google/googletest/compare/3e3b44c300b21eb996a2957782421bc0f157af18...ff233bdd4cac0a0bf6e5cd45bda3406814cb2796) --- updated-dependencies: - dependency-name: src/submodules/googletest dependency-type: direct:production ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- src/submodules/googletest | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/submodules/googletest b/src/submodules/googletest index 3e3b44c300b2..ff233bdd4cac 160000 --- a/src/submodules/googletest +++ b/src/submodules/googletest @@ -1 +1 @@ -Subproject commit 3e3b44c300b21eb996a2957782421bc0f157af18 +Subproject commit ff233bdd4cac0a0bf6e5cd45bda3406814cb2796 From 202a88b8bae4f58654e644e5034b49f8a75b0b8f Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 30 Aug 2024 15:21:12 -0700 Subject: [PATCH 264/391] [release/8.0] Quarantine `CanBlockExternalNavigation` and friends (#57624) * Quarantine `CanBlockExternalNavigation` * Qurantine `NavigationIsLockedAfterPrerendering` * Update NavigationLockPrerenderingTest.cs --------- Co-authored-by: Mackinnon Buck Co-authored-by: William Godbe --- .../ServerExecutionTests/NavigationLockPrerenderingTest.cs | 2 ++ src/Components/test/E2ETest/Tests/RoutingTest.cs | 1 + 2 files changed, 3 insertions(+) diff --git a/src/Components/test/E2ETest/ServerExecutionTests/NavigationLockPrerenderingTest.cs b/src/Components/test/E2ETest/ServerExecutionTests/NavigationLockPrerenderingTest.cs index e59585d80533..f5e494990238 100644 --- a/src/Components/test/E2ETest/ServerExecutionTests/NavigationLockPrerenderingTest.cs +++ b/src/Components/test/E2ETest/ServerExecutionTests/NavigationLockPrerenderingTest.cs @@ -4,6 +4,7 @@ using Microsoft.AspNetCore.Components.E2ETest.Infrastructure; using Microsoft.AspNetCore.Components.E2ETest.Infrastructure.ServerFixtures; using Microsoft.AspNetCore.E2ETesting; +using Microsoft.AspNetCore.Testing; using OpenQA.Selenium; using TestServer; using Xunit.Abstractions; @@ -21,6 +22,7 @@ public NavigationLockPrerenderingTest( } [Fact] + [QuarantinedTest("https://github.com/dotnet/aspnetcore/issues/57153")] public void NavigationIsLockedAfterPrerendering() { Navigate("/locked-navigation"); diff --git a/src/Components/test/E2ETest/Tests/RoutingTest.cs b/src/Components/test/E2ETest/Tests/RoutingTest.cs index b2c4a5ff6a33..f02912b43d4d 100644 --- a/src/Components/test/E2ETest/Tests/RoutingTest.cs +++ b/src/Components/test/E2ETest/Tests/RoutingTest.cs @@ -1082,6 +1082,7 @@ public void NavigationLock_HistoryNavigationWorks_AfterRefresh() } [Fact] + [QuarantinedTest("https://github.com/dotnet/aspnetcore/issues/57153")] public void NavigationLock_CanBlockExternalNavigation() { SetUrlViaPushState("/"); From e1ea77375e2d4faf4c397233905e29a74738cfed Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" <42748379+dotnet-maestro[bot]@users.noreply.github.com> Date: Sat, 31 Aug 2024 03:10:17 +0000 Subject: [PATCH 265/391] Update dependencies from https://github.com/dotnet/arcade build 20240826.2 (#57628) [release/8.0] Update dependencies from dotnet/arcade --- NuGet.config | 18 +++++++++++++++++ eng/Version.Details.xml | 20 +++++++++---------- eng/Versions.props | 6 +++--- .../job/publish-build-assets.yml | 2 +- .../post-build/post-build.yml | 2 +- .../templates/job/publish-build-assets.yml | 2 +- .../templates/post-build/post-build.yml | 2 +- .../templates/steps/telemetry-start.yml | 2 +- global.json | 4 ++-- 9 files changed, 38 insertions(+), 20 deletions(-) diff --git a/NuGet.config b/NuGet.config index 1a455317c69c..cb901c7182ff 100644 --- a/NuGet.config +++ b/NuGet.config @@ -7,6 +7,15 @@ + + + + + + + + + @@ -35,6 +44,15 @@ + + + + + + + + + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 92d64fac4478..5c2f70914891 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -376,26 +376,26 @@ https://github.com/dotnet/winforms abda8e3bfa78319363526b5a5f86863ec979940e - + https://github.com/dotnet/arcade - fa3d544b066661522f1ec5d5e8cfd461a29b0f8a + 80264e60280e2815e7d65871081ccac04a32445c - + https://github.com/dotnet/arcade - fa3d544b066661522f1ec5d5e8cfd461a29b0f8a + 80264e60280e2815e7d65871081ccac04a32445c - + https://github.com/dotnet/arcade - fa3d544b066661522f1ec5d5e8cfd461a29b0f8a + 80264e60280e2815e7d65871081ccac04a32445c - + https://github.com/dotnet/arcade - fa3d544b066661522f1ec5d5e8cfd461a29b0f8a + 80264e60280e2815e7d65871081ccac04a32445c - + https://github.com/dotnet/arcade - fa3d544b066661522f1ec5d5e8cfd461a29b0f8a + 80264e60280e2815e7d65871081ccac04a32445c https://github.com/dotnet/extensions diff --git a/eng/Versions.props b/eng/Versions.props index e3366afbfd65..c57b921c0ee6 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -162,9 +162,9 @@ 6.2.4 6.2.4 - 8.0.0-beta.24367.1 - 8.0.0-beta.24367.1 - 8.0.0-beta.24367.1 + 8.0.0-beta.24426.2 + 8.0.0-beta.24426.2 + 8.0.0-beta.24426.2 8.0.0-alpha.1.24379.1 diff --git a/eng/common/templates-official/job/publish-build-assets.yml b/eng/common/templates-official/job/publish-build-assets.yml index ba3e7df81587..0117328800c8 100644 --- a/eng/common/templates-official/job/publish-build-assets.yml +++ b/eng/common/templates-official/job/publish-build-assets.yml @@ -149,7 +149,7 @@ jobs: scriptPath: $(Build.SourcesDirectory)/eng/common/post-build/publish-using-darc.ps1 arguments: -BuildId $(BARBuildId) -PublishingInfraVersion 3 - -AzdoToken '$(publishing-dnceng-devdiv-code-r-build-re)' + -AzdoToken '$(System.AccessToken)' -WaitPublishingFinish true -ArtifactsPublishingAdditionalParameters '${{ parameters.artifactsPublishingAdditionalParameters }}' -SymbolPublishingAdditionalParameters '${{ parameters.symbolPublishingAdditionalParameters }}' diff --git a/eng/common/templates-official/post-build/post-build.yml b/eng/common/templates-official/post-build/post-build.yml index 0dfa387e7b78..b81b8770b346 100644 --- a/eng/common/templates-official/post-build/post-build.yml +++ b/eng/common/templates-official/post-build/post-build.yml @@ -281,7 +281,7 @@ stages: scriptPath: $(Build.SourcesDirectory)/eng/common/post-build/publish-using-darc.ps1 arguments: -BuildId $(BARBuildId) -PublishingInfraVersion ${{ parameters.publishingInfraVersion }} - -AzdoToken '$(publishing-dnceng-devdiv-code-r-build-re)' + -AzdoToken '$(System.AccessToken)' -WaitPublishingFinish true -ArtifactsPublishingAdditionalParameters '${{ parameters.artifactsPublishingAdditionalParameters }}' -SymbolPublishingAdditionalParameters '${{ parameters.symbolPublishingAdditionalParameters }}' diff --git a/eng/common/templates/job/publish-build-assets.yml b/eng/common/templates/job/publish-build-assets.yml index 57a41f0a3e13..cc2b346ba8ba 100644 --- a/eng/common/templates/job/publish-build-assets.yml +++ b/eng/common/templates/job/publish-build-assets.yml @@ -145,7 +145,7 @@ jobs: scriptPath: $(Build.SourcesDirectory)/eng/common/post-build/publish-using-darc.ps1 arguments: -BuildId $(BARBuildId) -PublishingInfraVersion 3 - -AzdoToken '$(publishing-dnceng-devdiv-code-r-build-re)' + -AzdoToken '$(System.AccessToken)' -WaitPublishingFinish true -ArtifactsPublishingAdditionalParameters '${{ parameters.artifactsPublishingAdditionalParameters }}' -SymbolPublishingAdditionalParameters '${{ parameters.symbolPublishingAdditionalParameters }}' diff --git a/eng/common/templates/post-build/post-build.yml b/eng/common/templates/post-build/post-build.yml index 2db4933468fd..c3b6a3012fee 100644 --- a/eng/common/templates/post-build/post-build.yml +++ b/eng/common/templates/post-build/post-build.yml @@ -277,7 +277,7 @@ stages: scriptPath: $(Build.SourcesDirectory)/eng/common/post-build/publish-using-darc.ps1 arguments: -BuildId $(BARBuildId) -PublishingInfraVersion ${{ parameters.publishingInfraVersion }} - -AzdoToken '$(publishing-dnceng-devdiv-code-r-build-re)' + -AzdoToken '$(System.AccessToken)' -WaitPublishingFinish true -ArtifactsPublishingAdditionalParameters '${{ parameters.artifactsPublishingAdditionalParameters }}' -SymbolPublishingAdditionalParameters '${{ parameters.symbolPublishingAdditionalParameters }}' diff --git a/eng/common/templates/steps/telemetry-start.yml b/eng/common/templates/steps/telemetry-start.yml index 32c01ef0b553..6abbcb33a671 100644 --- a/eng/common/templates/steps/telemetry-start.yml +++ b/eng/common/templates/steps/telemetry-start.yml @@ -8,7 +8,7 @@ parameters: steps: - ${{ if and(eq(parameters.runAsPublic, 'false'), not(eq(variables['System.TeamProject'], 'public'))) }}: - - task: AzureKeyVault@1 + - task: AzureKeyVault@2 inputs: azureSubscription: 'HelixProd_KeyVault' KeyVaultName: HelixProdKV diff --git a/global.json b/global.json index fe353e18929f..a9a6de59b508 100644 --- a/global.json +++ b/global.json @@ -27,7 +27,7 @@ }, "msbuild-sdks": { "Yarn.MSBuild": "1.22.19", - "Microsoft.DotNet.Arcade.Sdk": "8.0.0-beta.24367.1", - "Microsoft.DotNet.Helix.Sdk": "8.0.0-beta.24367.1" + "Microsoft.DotNet.Arcade.Sdk": "8.0.0-beta.24426.2", + "Microsoft.DotNet.Helix.Sdk": "8.0.0-beta.24426.2" } } From 23cb5019cfd3945f4de38e179b00242cf32a9f9e Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" <42748379+dotnet-maestro[bot]@users.noreply.github.com> Date: Tue, 3 Sep 2024 13:56:20 -0700 Subject: [PATCH 266/391] [release/8.0] Update dependencies from dotnet/source-build-reference-packages (#57347) * Update dependencies from https://github.com/dotnet/source-build-reference-packages build 20240814.3 Microsoft.SourceBuild.Intermediate.source-build-reference-packages From Version 8.0.0-alpha.1.24372.3 -> To Version 8.0.0-alpha.1.24414.3 * Update dependencies from https://github.com/dotnet/source-build-reference-packages build 20240815.1 Microsoft.SourceBuild.Intermediate.source-build-reference-packages From Version 8.0.0-alpha.1.24414.3 -> To Version 8.0.0-alpha.1.24415.1 * Update SourceBuildPrebuiltBaseline.xml --------- Co-authored-by: dotnet-maestro[bot] Co-authored-by: William Godbe --- eng/SourceBuildPrebuiltBaseline.xml | 3 +++ eng/Version.Details.xml | 4 ++-- eng/Versions.props | 2 +- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/eng/SourceBuildPrebuiltBaseline.xml b/eng/SourceBuildPrebuiltBaseline.xml index d3b5eb60ec3f..dda41055550d 100644 --- a/eng/SourceBuildPrebuiltBaseline.xml +++ b/eng/SourceBuildPrebuiltBaseline.xml @@ -39,5 +39,8 @@ + + + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 5c2f70914891..ca81403bb448 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -338,9 +338,9 @@ 9a1c3e1b7f0c8763d4c96e593961a61a72679a7b - + https://github.com/dotnet/source-build-reference-packages - 30ed464acd37779c64e9dc652d4460543ebf9966 + fe3794a68bd668d36d4d5014a9e6c9d22c0e6d86 diff --git a/eng/Versions.props b/eng/Versions.props index c57b921c0ee6..a1bdac24c087 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -168,7 +168,7 @@ 8.0.0-alpha.1.24379.1 - 8.0.0-alpha.1.24372.3 + 8.0.0-alpha.1.24415.1 2.0.0-beta-23228-03 From 928afb3520eef89dcbc52093691933e065408709 Mon Sep 17 00:00:00 2001 From: DotNet-Bot Date: Wed, 11 Sep 2024 20:13:56 +0000 Subject: [PATCH 267/391] Update dependencies from https://dev.azure.com/dnceng/internal/_git/dotnet-efcore build 20240903.2 dotnet-ef , Microsoft.EntityFrameworkCore , Microsoft.EntityFrameworkCore.Design , Microsoft.EntityFrameworkCore.InMemory , Microsoft.EntityFrameworkCore.Relational , Microsoft.EntityFrameworkCore.Sqlite , Microsoft.EntityFrameworkCore.SqlServer , Microsoft.EntityFrameworkCore.Tools From Version 8.0.9 -> To Version 8.0.10 --- NuGet.config | 24 ++---------------------- eng/Version.Details.xml | 32 ++++++++++++++++---------------- eng/Versions.props | 16 ++++++++-------- 3 files changed, 26 insertions(+), 46 deletions(-) diff --git a/NuGet.config b/NuGet.config index 0af842312855..c4d8cae5a352 100644 --- a/NuGet.config +++ b/NuGet.config @@ -6,17 +6,7 @@ - - - - - - - - - - - + @@ -46,17 +36,7 @@ - - - - - - - - - - - + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 96a0f2a06a84..9e6417dc928f 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -9,37 +9,37 @@ --> - + https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - c740d3529b04a61639ea47307ad9924d739c73dd + 0ec1568e0aafd156ec04fd21f2d0f519b81f1be5 - + https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - c740d3529b04a61639ea47307ad9924d739c73dd + 0ec1568e0aafd156ec04fd21f2d0f519b81f1be5 - + https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - c740d3529b04a61639ea47307ad9924d739c73dd + 0ec1568e0aafd156ec04fd21f2d0f519b81f1be5 - + https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - c740d3529b04a61639ea47307ad9924d739c73dd + 0ec1568e0aafd156ec04fd21f2d0f519b81f1be5 - + https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - c740d3529b04a61639ea47307ad9924d739c73dd + 0ec1568e0aafd156ec04fd21f2d0f519b81f1be5 - + https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - c740d3529b04a61639ea47307ad9924d739c73dd + 0ec1568e0aafd156ec04fd21f2d0f519b81f1be5 - + https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - c740d3529b04a61639ea47307ad9924d739c73dd + 0ec1568e0aafd156ec04fd21f2d0f519b81f1be5 - + https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - c740d3529b04a61639ea47307ad9924d739c73dd + 0ec1568e0aafd156ec04fd21f2d0f519b81f1be5 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime diff --git a/eng/Versions.props b/eng/Versions.props index 00d51d2c3e50..86bca82d2b3b 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -143,14 +143,14 @@ 8.1.0-preview.23604.1 8.1.0-preview.23604.1 - 8.0.9 - 8.0.9 - 8.0.9 - 8.0.9 - 8.0.9 - 8.0.9 - 8.0.9 - 8.0.9 + 8.0.10 + 8.0.10 + 8.0.10 + 8.0.10 + 8.0.10 + 8.0.10 + 8.0.10 + 8.0.10 4.8.0-3.23518.7 4.8.0-3.23518.7 From ee0cfa4e89a132b31905f8bfba59e852536b17c8 Mon Sep 17 00:00:00 2001 From: DotNet-Bot Date: Wed, 11 Sep 2024 20:19:56 +0000 Subject: [PATCH 268/391] Update dependencies from https://dev.azure.com/dnceng/internal/_git/dotnet-runtime build 20240909.10 Microsoft.Extensions.DependencyModel , Microsoft.Extensions.HostFactoryResolver.Sources , Microsoft.Internal.Runtime.AspNetCore.Transport , Microsoft.NET.Runtime.MonoAOTCompiler.Task , Microsoft.NET.Runtime.WebAssembly.Sdk , Microsoft.NETCore.App.Ref , Microsoft.NETCore.App.Runtime.AOT.win-x64.Cross.browser-wasm , Microsoft.NETCore.App.Runtime.win-x64 , Microsoft.NETCore.BrowserDebugHost.Transport , Microsoft.NETCore.Platforms , System.Diagnostics.EventLog , System.Text.Json , Microsoft.SourceBuild.Intermediate.runtime.linux-x64 From Version 8.0.1 -> To Version 8.0.2 --- NuGet.config | 4 ++-- eng/Version.Details.xml | 50 ++++++++++++++++++++--------------------- eng/Versions.props | 24 ++++++++++---------- 3 files changed, 39 insertions(+), 39 deletions(-) diff --git a/NuGet.config b/NuGet.config index c4d8cae5a352..f6702eda3288 100644 --- a/NuGet.config +++ b/NuGet.config @@ -9,7 +9,7 @@ - + @@ -45,7 +45,7 @@ - + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 9e6417dc928f..8f61b34b53f7 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -121,9 +121,9 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime 5535e31a712343a63f5d7d796cd874e563e5ac14 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 3c8202d88deea14a87c7665190286d2a67e464c0 + 7dc1560dfb4ff946388512ef439fcb44f294b32a https://dev.azure.com/dnceng/internal/_git/dotnet-runtime @@ -185,9 +185,9 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime 5535e31a712343a63f5d7d796cd874e563e5ac14 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 3c8202d88deea14a87c7665190286d2a67e464c0 + 7dc1560dfb4ff946388512ef439fcb44f294b32a https://github.com/dotnet/source-build-externals @@ -209,7 +209,7 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 3c8202d88deea14a87c7665190286d2a67e464c0 + 7dc1560dfb4ff946388512ef439fcb44f294b32a https://dev.azure.com/dnceng/internal/_git/dotnet-runtime @@ -255,9 +255,9 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime 5535e31a712343a63f5d7d796cd874e563e5ac14 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 2aade6beb02ea367fd97c4070a4198802fe61c03 + 7dc1560dfb4ff946388512ef439fcb44f294b32a https://dev.azure.com/dnceng/internal/_git/dotnet-runtime @@ -271,21 +271,21 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime 5535e31a712343a63f5d7d796cd874e563e5ac14 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 2aade6beb02ea367fd97c4070a4198802fe61c03 + 7dc1560dfb4ff946388512ef439fcb44f294b32a - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 3c8202d88deea14a87c7665190286d2a67e464c0 + 7dc1560dfb4ff946388512ef439fcb44f294b32a - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 3c8202d88deea14a87c7665190286d2a67e464c0 + 7dc1560dfb4ff946388512ef439fcb44f294b32a - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 3c8202d88deea14a87c7665190286d2a67e464c0 + 7dc1560dfb4ff946388512ef439fcb44f294b32a https://dev.azure.com/dnceng/internal/_git/dotnet-runtime @@ -316,22 +316,22 @@ Win-x64 is used here because we have picked an arbitrary runtime identifier to flow the version of the latest NETCore.App runtime. All Runtime.$rid packages should have the same version. --> - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 3c8202d88deea14a87c7665190286d2a67e464c0 + 7dc1560dfb4ff946388512ef439fcb44f294b32a - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 3c8202d88deea14a87c7665190286d2a67e464c0 + 7dc1560dfb4ff946388512ef439fcb44f294b32a - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 3c8202d88deea14a87c7665190286d2a67e464c0 + 7dc1560dfb4ff946388512ef439fcb44f294b32a - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 3c8202d88deea14a87c7665190286d2a67e464c0 + 7dc1560dfb4ff946388512ef439fcb44f294b32a https://github.com/dotnet/xdt @@ -368,9 +368,9 @@ - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 3c8202d88deea14a87c7665190286d2a67e464c0 + 7dc1560dfb4ff946388512ef439fcb44f294b32a https://github.com/dotnet/winforms diff --git a/eng/Versions.props b/eng/Versions.props index 86bca82d2b3b..3040716f21ad 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -66,13 +66,13 @@ --> - 8.0.1 - 8.0.9 - 8.0.9 - 8.0.9 - 8.0.9 - 8.0.9 - 8.0.9-servicing.24415.9 + 8.0.2 + 8.0.10 + 8.0.10 + 8.0.10 + 8.0.10 + 8.0.10 + 8.0.10-servicing.24459.10 8.0.0 8.0.0 8.0.0 @@ -93,7 +93,7 @@ 8.0.0 8.0.0 8.0.0 - 8.0.9-servicing.24415.9 + 8.0.10-servicing.24459.10 8.0.0 8.0.0 8.0.0 @@ -109,7 +109,7 @@ 8.0.0 8.0.2 8.0.0 - 8.0.9-servicing.24415.9 + 8.0.10-servicing.24459.10 8.0.0 8.0.1 8.0.1 @@ -125,13 +125,13 @@ 8.0.0 8.0.0 8.0.0 - 8.0.4 + 8.0.5 8.0.0 8.0.0 8.0.0 - 8.0.9-servicing.24415.9 + 8.0.10-servicing.24459.10 - 8.0.9-servicing.24415.9 + 8.0.10-servicing.24459.10 8.0.0 8.0.1 From 6cd9f8d1cf78e8432afe1dd7e4b89b8a1f9b4179 Mon Sep 17 00:00:00 2001 From: DotNet-Bot Date: Wed, 11 Sep 2024 23:24:44 +0000 Subject: [PATCH 269/391] Update dependencies from https://dev.azure.com/dnceng/internal/_git/dotnet-efcore build 20240911.2 dotnet-ef , Microsoft.EntityFrameworkCore , Microsoft.EntityFrameworkCore.Design , Microsoft.EntityFrameworkCore.InMemory , Microsoft.EntityFrameworkCore.Relational , Microsoft.EntityFrameworkCore.Sqlite , Microsoft.EntityFrameworkCore.SqlServer , Microsoft.EntityFrameworkCore.Tools From Version 8.0.10 -> To Version 8.0.10 --- NuGet.config | 4 ++-- eng/Version.Details.xml | 16 ++++++++-------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/NuGet.config b/NuGet.config index f6702eda3288..9352f6eb1be6 100644 --- a/NuGet.config +++ b/NuGet.config @@ -6,7 +6,7 @@ - + @@ -36,7 +36,7 @@ - + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 8f61b34b53f7..2ef27d668384 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -11,35 +11,35 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 0ec1568e0aafd156ec04fd21f2d0f519b81f1be5 + cd3befe3d90b91bade678755eae670138a7e9745 https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 0ec1568e0aafd156ec04fd21f2d0f519b81f1be5 + cd3befe3d90b91bade678755eae670138a7e9745 https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 0ec1568e0aafd156ec04fd21f2d0f519b81f1be5 + cd3befe3d90b91bade678755eae670138a7e9745 https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 0ec1568e0aafd156ec04fd21f2d0f519b81f1be5 + cd3befe3d90b91bade678755eae670138a7e9745 https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 0ec1568e0aafd156ec04fd21f2d0f519b81f1be5 + cd3befe3d90b91bade678755eae670138a7e9745 https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 0ec1568e0aafd156ec04fd21f2d0f519b81f1be5 + cd3befe3d90b91bade678755eae670138a7e9745 https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 0ec1568e0aafd156ec04fd21f2d0f519b81f1be5 + cd3befe3d90b91bade678755eae670138a7e9745 https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - 0ec1568e0aafd156ec04fd21f2d0f519b81f1be5 + cd3befe3d90b91bade678755eae670138a7e9745 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime From 1774a054e71cba09daa783a025b600e5590846a2 Mon Sep 17 00:00:00 2001 From: DotNet-Bot Date: Thu, 12 Sep 2024 17:43:14 +0000 Subject: [PATCH 270/391] Update dependencies from https://dev.azure.com/dnceng/internal/_git/dotnet-runtime build 20240911.12 Microsoft.Extensions.Caching.Memory , Microsoft.Extensions.Configuration.Json , Microsoft.Extensions.Configuration.UserSecrets , Microsoft.Extensions.Configuration.Xml , Microsoft.Extensions.DependencyInjection , Microsoft.Extensions.DependencyInjection.Abstractions , Microsoft.Extensions.DependencyModel , Microsoft.Extensions.Diagnostics , Microsoft.Extensions.Diagnostics.Abstractions , Microsoft.Extensions.HostFactoryResolver.Sources , Microsoft.Extensions.Hosting , Microsoft.Extensions.Hosting.Abstractions , Microsoft.Extensions.Http , Microsoft.Extensions.Logging , Microsoft.Extensions.Logging.Abstractions , Microsoft.Extensions.Logging.Configuration , Microsoft.Extensions.Logging.Console , Microsoft.Extensions.Logging.Debug , Microsoft.Extensions.Logging.EventLog , Microsoft.Extensions.Logging.EventSource , Microsoft.Extensions.Logging.TraceSource , Microsoft.Internal.Runtime.AspNetCore.Transport , Microsoft.NET.Runtime.MonoAOTCompiler.Task , Microsoft.NET.Runtime.WebAssembly.Sdk , Microsoft.NETCore.App.Ref , Microsoft.NETCore.App.Runtime.AOT.win-x64.Cross.browser-wasm , Microsoft.NETCore.App.Runtime.win-x64 , Microsoft.NETCore.BrowserDebugHost.Transport , Microsoft.NETCore.Platforms , System.Configuration.ConfigurationManager , System.Diagnostics.PerformanceCounter , System.Net.Http.Json , System.Reflection.Metadata , System.Runtime.Caching , System.Security.Cryptography.Pkcs , System.Security.Cryptography.Xml , System.ServiceProcess.ServiceController , System.Text.Json , Microsoft.SourceBuild.Intermediate.runtime.linux-x64 From Version 8.0.0 -> To Version 8.0.1 --- NuGet.config | 2 + eng/Version.Details.xml | 142 ++++++++++++++++++++-------------------- eng/Versions.props | 64 +++++++++--------- 3 files changed, 105 insertions(+), 103 deletions(-) diff --git a/NuGet.config b/NuGet.config index 9352f6eb1be6..ae27b12ccb87 100644 --- a/NuGet.config +++ b/NuGet.config @@ -9,6 +9,7 @@ + @@ -46,6 +47,7 @@ + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 2ef27d668384..87a1a0cd2778 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -45,9 +45,9 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime 5535e31a712343a63f5d7d796cd874e563e5ac14 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 5535e31a712343a63f5d7d796cd874e563e5ac14 + a8108c906081c3c0198f250fb210c1dd275b2f01 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime @@ -73,37 +73,37 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime 5535e31a712343a63f5d7d796cd874e563e5ac14 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 5535e31a712343a63f5d7d796cd874e563e5ac14 + a8108c906081c3c0198f250fb210c1dd275b2f01 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 5535e31a712343a63f5d7d796cd874e563e5ac14 + a8108c906081c3c0198f250fb210c1dd275b2f01 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 5535e31a712343a63f5d7d796cd874e563e5ac14 + a8108c906081c3c0198f250fb210c1dd275b2f01 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime 5535e31a712343a63f5d7d796cd874e563e5ac14 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 9f4b1f5d664afdfc80e1508ab7ed099dff210fbd + a8108c906081c3c0198f250fb210c1dd275b2f01 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 5535e31a712343a63f5d7d796cd874e563e5ac14 + a8108c906081c3c0198f250fb210c1dd275b2f01 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 5535e31a712343a63f5d7d796cd874e563e5ac14 + a8108c906081c3c0198f250fb210c1dd275b2f01 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 5535e31a712343a63f5d7d796cd874e563e5ac14 + a8108c906081c3c0198f250fb210c1dd275b2f01 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime @@ -121,53 +121,53 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime 5535e31a712343a63f5d7d796cd874e563e5ac14 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 7dc1560dfb4ff946388512ef439fcb44f294b32a + a8108c906081c3c0198f250fb210c1dd275b2f01 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 5535e31a712343a63f5d7d796cd874e563e5ac14 + a8108c906081c3c0198f250fb210c1dd275b2f01 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 5535e31a712343a63f5d7d796cd874e563e5ac14 + a8108c906081c3c0198f250fb210c1dd275b2f01 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 5535e31a712343a63f5d7d796cd874e563e5ac14 + a8108c906081c3c0198f250fb210c1dd275b2f01 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 9f4b1f5d664afdfc80e1508ab7ed099dff210fbd + a8108c906081c3c0198f250fb210c1dd275b2f01 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 5535e31a712343a63f5d7d796cd874e563e5ac14 + a8108c906081c3c0198f250fb210c1dd275b2f01 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 5535e31a712343a63f5d7d796cd874e563e5ac14 + a8108c906081c3c0198f250fb210c1dd275b2f01 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 5535e31a712343a63f5d7d796cd874e563e5ac14 + a8108c906081c3c0198f250fb210c1dd275b2f01 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 5535e31a712343a63f5d7d796cd874e563e5ac14 + a8108c906081c3c0198f250fb210c1dd275b2f01 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 5535e31a712343a63f5d7d796cd874e563e5ac14 + a8108c906081c3c0198f250fb210c1dd275b2f01 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 5535e31a712343a63f5d7d796cd874e563e5ac14 + a8108c906081c3c0198f250fb210c1dd275b2f01 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 5535e31a712343a63f5d7d796cd874e563e5ac14 + a8108c906081c3c0198f250fb210c1dd275b2f01 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime @@ -185,9 +185,9 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime 5535e31a712343a63f5d7d796cd874e563e5ac14 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 7dc1560dfb4ff946388512ef439fcb44f294b32a + a8108c906081c3c0198f250fb210c1dd275b2f01 https://github.com/dotnet/source-build-externals @@ -199,9 +199,9 @@ 27e584661980ee6d82c419a2a471ae505b7d122e - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 5535e31a712343a63f5d7d796cd874e563e5ac14 + a8108c906081c3c0198f250fb210c1dd275b2f01 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime @@ -219,37 +219,37 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime 5535e31a712343a63f5d7d796cd874e563e5ac14 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 5535e31a712343a63f5d7d796cd874e563e5ac14 + a8108c906081c3c0198f250fb210c1dd275b2f01 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime 05e0f2d2c881def48961d3b83fa11ae84df8e534 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 5535e31a712343a63f5d7d796cd874e563e5ac14 + a8108c906081c3c0198f250fb210c1dd275b2f01 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime 5535e31a712343a63f5d7d796cd874e563e5ac14 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 5535e31a712343a63f5d7d796cd874e563e5ac14 + a8108c906081c3c0198f250fb210c1dd275b2f01 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 2aade6beb02ea367fd97c4070a4198802fe61c03 + a8108c906081c3c0198f250fb210c1dd275b2f01 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime 5535e31a712343a63f5d7d796cd874e563e5ac14 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 5535e31a712343a63f5d7d796cd874e563e5ac14 + a8108c906081c3c0198f250fb210c1dd275b2f01 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime @@ -257,7 +257,7 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 7dc1560dfb4ff946388512ef439fcb44f294b32a + a8108c906081c3c0198f250fb210c1dd275b2f01 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime @@ -273,19 +273,19 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 7dc1560dfb4ff946388512ef439fcb44f294b32a + a8108c906081c3c0198f250fb210c1dd275b2f01 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 7dc1560dfb4ff946388512ef439fcb44f294b32a + a8108c906081c3c0198f250fb210c1dd275b2f01 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 7dc1560dfb4ff946388512ef439fcb44f294b32a + a8108c906081c3c0198f250fb210c1dd275b2f01 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 7dc1560dfb4ff946388512ef439fcb44f294b32a + a8108c906081c3c0198f250fb210c1dd275b2f01 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime @@ -300,17 +300,17 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-runtime 5535e31a712343a63f5d7d796cd874e563e5ac14 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 5535e31a712343a63f5d7d796cd874e563e5ac14 + a8108c906081c3c0198f250fb210c1dd275b2f01 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime 5535e31a712343a63f5d7d796cd874e563e5ac14 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 5535e31a712343a63f5d7d796cd874e563e5ac14 + a8108c906081c3c0198f250fb210c1dd275b2f01 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 7dc1560dfb4ff946388512ef439fcb44f294b32a + a8108c906081c3c0198f250fb210c1dd275b2f01 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 7dc1560dfb4ff946388512ef439fcb44f294b32a + a8108c906081c3c0198f250fb210c1dd275b2f01 https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 7dc1560dfb4ff946388512ef439fcb44f294b32a + a8108c906081c3c0198f250fb210c1dd275b2f01 - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 7dc1560dfb4ff946388512ef439fcb44f294b32a + a8108c906081c3c0198f250fb210c1dd275b2f01 https://github.com/dotnet/xdt @@ -368,9 +368,9 @@ - + https://dev.azure.com/dnceng/internal/_git/dotnet-runtime - 7dc1560dfb4ff946388512ef439fcb44f294b32a + a8108c906081c3c0198f250fb210c1dd275b2f01 https://github.com/dotnet/winforms diff --git a/eng/Versions.props b/eng/Versions.props index 3040716f21ad..39260a61309d 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -72,73 +72,73 @@ 8.0.10 8.0.10 8.0.10 - 8.0.10-servicing.24459.10 + 8.0.10-servicing.24461.12 8.0.0 - 8.0.0 + 8.0.1 8.0.0 8.0.2 8.0.0 8.0.0 8.0.1 8.0.0 - 8.0.0 + 8.0.1 8.0.0 - 8.0.0 - 8.0.0 - 8.0.1 - 8.0.0 - 8.0.0 - 8.0.0 + 8.0.1 + 8.0.1 + 8.0.2 + 8.0.1 + 8.0.1 + 8.0.1 8.0.0 8.0.0 8.0.0 8.0.0 - 8.0.10-servicing.24459.10 - 8.0.0 - 8.0.0 - 8.0.0 - 8.0.1 - 8.0.0 - 8.0.0 - 8.0.0 - 8.0.0 - 8.0.0 - 8.0.0 - 8.0.0 + 8.0.10-servicing.24461.12 + 8.0.1 + 8.0.1 + 8.0.1 + 8.0.2 + 8.0.1 + 8.0.1 + 8.0.1 + 8.0.1 + 8.0.1 + 8.0.1 + 8.0.1 8.0.0 8.0.0 8.0.2 8.0.0 - 8.0.10-servicing.24459.10 - 8.0.0 + 8.0.10-servicing.24461.12 + 8.0.1 8.0.1 8.0.1 8.0.0 8.0.0-rtm.23520.14 8.0.0 - 8.0.0 + 8.0.1 8.0.2 - 8.0.0 + 8.0.1 8.0.0 - 8.0.0 - 8.0.1 + 8.0.1 + 8.0.2 8.0.0 - 8.0.0 + 8.0.1 8.0.0 8.0.5 8.0.0 8.0.0 8.0.0 - 8.0.10-servicing.24459.10 + 8.0.10-servicing.24461.12 - 8.0.10-servicing.24459.10 + 8.0.10-servicing.24461.12 8.0.0 8.0.1 8.0.0 - 8.0.0 + 8.0.1 8.0.0 - 8.0.0 + 8.0.1 8.1.0-preview.23604.1 8.1.0-preview.23604.1 From 704e1a15f2dd488d7b80dffc20eae8f76a0061f9 Mon Sep 17 00:00:00 2001 From: DotNet-Bot Date: Thu, 12 Sep 2024 21:56:09 +0000 Subject: [PATCH 271/391] Update dependencies from https://dev.azure.com/dnceng/internal/_git/dotnet-efcore build 20240912.5 dotnet-ef , Microsoft.EntityFrameworkCore , Microsoft.EntityFrameworkCore.Design , Microsoft.EntityFrameworkCore.InMemory , Microsoft.EntityFrameworkCore.Relational , Microsoft.EntityFrameworkCore.Sqlite , Microsoft.EntityFrameworkCore.SqlServer , Microsoft.EntityFrameworkCore.Tools From Version 8.0.10 -> To Version 8.0.10 --- NuGet.config | 4 ++-- eng/Version.Details.xml | 16 ++++++++-------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/NuGet.config b/NuGet.config index ae27b12ccb87..67ad9f2c161b 100644 --- a/NuGet.config +++ b/NuGet.config @@ -6,7 +6,7 @@ - + @@ -37,7 +37,7 @@ - + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 87a1a0cd2778..e10c3632082c 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -11,35 +11,35 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - cd3befe3d90b91bade678755eae670138a7e9745 + f17955cf503646f41852d32ffab1e41b0d273adc https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - cd3befe3d90b91bade678755eae670138a7e9745 + f17955cf503646f41852d32ffab1e41b0d273adc https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - cd3befe3d90b91bade678755eae670138a7e9745 + f17955cf503646f41852d32ffab1e41b0d273adc https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - cd3befe3d90b91bade678755eae670138a7e9745 + f17955cf503646f41852d32ffab1e41b0d273adc https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - cd3befe3d90b91bade678755eae670138a7e9745 + f17955cf503646f41852d32ffab1e41b0d273adc https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - cd3befe3d90b91bade678755eae670138a7e9745 + f17955cf503646f41852d32ffab1e41b0d273adc https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - cd3befe3d90b91bade678755eae670138a7e9745 + f17955cf503646f41852d32ffab1e41b0d273adc https://dev.azure.com/dnceng/internal/_git/dotnet-efcore - cd3befe3d90b91bade678755eae670138a7e9745 + f17955cf503646f41852d32ffab1e41b0d273adc https://dev.azure.com/dnceng/internal/_git/dotnet-runtime From 30ef19c7d9651d0fa113dd8ed08809e545141d74 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 13 Sep 2024 21:00:37 +0000 Subject: [PATCH 272/391] [release/8.0] [Blazor] Invoke inbound activity handlers on circuit initialization (#57715) Backport of #57557 to release/8.0 # [Blazor] Invoke inbound activity handlers on circuit initialization Fixes an issue where inbound activity handlers don't get invoked on circuit initialization. > [!NOTE] > This bug only affects Blazor Server apps, _not_ Blazor Web apps utilizing server interactivity ## Description Inbound activity handlers were added in .NET 8 to enable: * Monitoring inbound circuit activity * Enabling server-side Blazor services to be [accessed from a different DI scope](https://learn.microsoft.com/aspnet/core/blazor/fundamentals/dependency-injection?view=aspnetcore-8.0#access-server-side-blazor-services-from-a-different-di-scope) However, prior to the fix in this PR, this feature didn't apply to the first interactive render after the initial page load. This means that when utilizing this feature to access Blazor services from a different DI scope, the service might only become accessible after subsequent renders, not the initial render. This PR makes the following changes: * Updated `CircuitHost` to invoke inbound activity handlers on circuit initialization * Added an extra test to verify that inbound activity handlers work on the initial page load * Updated existing Blazor Web tests to reuse test logic from the non-web tests * This helps to ensure that the feature works the same way on Blazor Server and Blazor Web Fixes #57481 ## Customer Impact The [initial issue report](https://github.com/dotnet/aspnetcore/issues/57481) was from a customer who was impacted experiencing this problem in their app. The problem does not inherently cause an app to stop working, but if the application code has made the (rightful) assumption that the service accessor is initialized, then session may crash. The workaround is to upgrade the app to use the "Blazor Web App" pattern, although this can be a fairly large change. ## Regression? - [ ] Yes - [X] No The problem has existed since the introduction of the feature in .NET 8. ## Risk - [ ] High - [ ] Medium - [X] Low The change is straightforward, and new tests have been added to ensure that it addresses the issue. Existing tests verify that a new regression is not introduced. ## Verification - [X] Manual (required) - [X] Automated ## Packaging changes reviewed? - [ ] Yes - [ ] No - [x] N/A --- .../Server/src/Circuits/CircuitHost.cs | 4 +-- .../CircuitContextTest.cs | 33 ++++++++++++------- .../ServerRenderingTests/InteractivityTest.cs | 4 +-- .../test/testassets/BasicTestApp/Index.razor | 11 +++++++ .../RazorComponents/App.razor | 1 + .../Interactivity/CircuitContextPage.razor | 24 +------------- 6 files changed, 39 insertions(+), 38 deletions(-) diff --git a/src/Components/Server/src/Circuits/CircuitHost.cs b/src/Components/Server/src/Circuits/CircuitHost.cs index cd2f861846f0..e21db1a06c9e 100644 --- a/src/Components/Server/src/Circuits/CircuitHost.cs +++ b/src/Components/Server/src/Circuits/CircuitHost.cs @@ -103,7 +103,7 @@ public Task InitializeAsync(ProtectedPrerenderComponentApplicationStore store, C { Log.InitializationStarted(_logger); - return Renderer.Dispatcher.InvokeAsync(async () => + return HandleInboundActivityAsync(() => Renderer.Dispatcher.InvokeAsync(async () => { if (_initialized) { @@ -164,7 +164,7 @@ public Task InitializeAsync(ProtectedPrerenderComponentApplicationStore store, C UnhandledException?.Invoke(this, new UnhandledExceptionEventArgs(ex, isTerminating: false)); await TryNotifyClientErrorAsync(Client, GetClientErrorMessage(ex), ex); } - }); + })); } // We handle errors in DisposeAsync because there's no real value in letting it propagate. diff --git a/src/Components/test/E2ETest/ServerExecutionTests/CircuitContextTest.cs b/src/Components/test/E2ETest/ServerExecutionTests/CircuitContextTest.cs index d14759152303..20d4d63500a8 100644 --- a/src/Components/test/E2ETest/ServerExecutionTests/CircuitContextTest.cs +++ b/src/Components/test/E2ETest/ServerExecutionTests/CircuitContextTest.cs @@ -22,28 +22,39 @@ public CircuitContextTest( { } - protected override void InitializeAsyncCore() + [Fact] + public void ComponentMethods_HaveCircuitContext() { Navigate(ServerPathBase, noReload: false); Browser.MountTestComponent(); - Browser.Equal("Circuit Context", () => Browser.Exists(By.TagName("h1")).Text); + TestCircuitContextCore(Browser); } [Fact] - public void ComponentMethods_HaveCircuitContext() + public void ComponentMethods_HaveCircuitContext_OnInitialPageLoad() { - Browser.Click(By.Id("trigger-click-event-button")); + // https://github.com/dotnet/aspnetcore/issues/57481 + Navigate($"{ServerPathBase}?initial-component-type={typeof(CircuitContextComponent).AssemblyQualifiedName}"); + TestCircuitContextCore(Browser); + } + + // Internal for reuse in Blazor Web tests + internal static void TestCircuitContextCore(IWebDriver browser) + { + browser.Equal("Circuit Context", () => browser.Exists(By.TagName("h1")).Text); + + browser.Click(By.Id("trigger-click-event-button")); - Browser.True(() => HasCircuitContext("SetParametersAsync")); - Browser.True(() => HasCircuitContext("OnInitializedAsync")); - Browser.True(() => HasCircuitContext("OnParametersSetAsync")); - Browser.True(() => HasCircuitContext("OnAfterRenderAsync")); - Browser.True(() => HasCircuitContext("InvokeDotNet")); - Browser.True(() => HasCircuitContext("OnClickEvent")); + browser.True(() => HasCircuitContext("SetParametersAsync")); + browser.True(() => HasCircuitContext("OnInitializedAsync")); + browser.True(() => HasCircuitContext("OnParametersSetAsync")); + browser.True(() => HasCircuitContext("OnAfterRenderAsync")); + browser.True(() => HasCircuitContext("InvokeDotNet")); + browser.True(() => HasCircuitContext("OnClickEvent")); bool HasCircuitContext(string eventName) { - var resultText = Browser.FindElement(By.Id($"circuit-context-result-{eventName}")).Text; + var resultText = browser.FindElement(By.Id($"circuit-context-result-{eventName}")).Text; var result = bool.Parse(resultText); return result; } diff --git a/src/Components/test/E2ETest/ServerRenderingTests/InteractivityTest.cs b/src/Components/test/E2ETest/ServerRenderingTests/InteractivityTest.cs index 240876cf53fa..59d6dcd420be 100644 --- a/src/Components/test/E2ETest/ServerRenderingTests/InteractivityTest.cs +++ b/src/Components/test/E2ETest/ServerRenderingTests/InteractivityTest.cs @@ -4,6 +4,7 @@ using Components.TestServer.RazorComponents; using Microsoft.AspNetCore.Components.E2ETest.Infrastructure; using Microsoft.AspNetCore.Components.E2ETest.Infrastructure.ServerFixtures; +using Microsoft.AspNetCore.Components.E2ETests.ServerExecutionTests; using Microsoft.AspNetCore.E2ETesting; using Microsoft.AspNetCore.Testing; using OpenQA.Selenium; @@ -1168,8 +1169,7 @@ public void NavigationManagerCanRefreshSSRPageWhenServerInteractivityEnabled() public void InteractiveServerRootComponent_CanAccessCircuitContext() { Navigate($"{ServerPathBase}/interactivity/circuit-context"); - - Browser.Equal("True", () => Browser.FindElement(By.Id("has-circuit-context")).Text); + CircuitContextTest.TestCircuitContextCore(Browser); } [Fact] diff --git a/src/Components/test/testassets/BasicTestApp/Index.razor b/src/Components/test/testassets/BasicTestApp/Index.razor index fabbf037e349..3377745b8aab 100644 --- a/src/Components/test/testassets/BasicTestApp/Index.razor +++ b/src/Components/test/testassets/BasicTestApp/Index.razor @@ -1,4 +1,6 @@ @using Microsoft.AspNetCore.Components.Rendering +@using System.Web +@inject NavigationManager NavigationManager
    Select test: